FASI DI SVILUPPO DEL SOFTWARE Problema Idea (soluzione) Algoritmo (soluzione formale) Programma (traduzione dell algoritmo in una forma comprensibile da un elaboratore elettronico) Test (criteri di verifica) Documentazione ALGORITMI Risolvere un problema significa individuare un procedimento (algoritmo) che, eseguito, fornisce informazioni finali (risultati) dipendenti da informazioni iniziali (dati). Il procedimento risolutivo è costituito da un insieme di passi (istruzioni), ognuno dei quali specifica una operazione elementare. Definizioni Per algoritmo si intende il meccanismo di soluzione di un problema. Stabilisce la sequenza di operazioni da eseguire sui dati assegnati, per produrre risultati. Ogni operazione definisce una azione compiuta sui dati d ingresso per produrre dati in uscita. I dati in ingresso possono essere oggetti di varia natura e cioè numeri, caratteri alfabetici, date, ecc L esperienza quotidiana suggerisce numerosi esempi di algoritmi: le istruzioni per una ricetta culinaria, le istruzioni d uso di particolari apparecchi, le regole di un giuoco di carte e così via.. Affinché un procedimento possa definirsi algoritmo occorre che sia non ambiguo (ogni istruzione deve essere definita in modo rigoroso senza ambiguità), eseguibile, generale (deve essere valido non solo per un particolare problema ma per tutti i problemi della stessa classe) e finito cioè progettato in modo tale che la sua esecuzione richieda un tempo finito. Esecuzione L esecuzione di un algoritmo si traduce in una successione di operazioni che vengono effettuate nel tempo. L esecuzione di un algoritmo evoca un processo sequenziale cioè una serie di eventi che occorrono uno dopo l altro, ognuno con un inizio ed una fine ben identificabile In genere comprende 3 fasi: caricamento dei dati (input) elaborazione visualizzazione dei dati (output). PROGRAMMA Sequenza di operazioni svolte da un elaboratore per risolvere un problema. Il programma corrisponde alla realizzazione software di un algoritmo in un certo linguaggio di programmazione. Programma = Dati + Istruzioni Dati: la descrizione dei dati e effettuata attraverso dichiarazioni e definizioni. Istruzioni: le operazioni effettuate in un programma elaborano sostanzialmente dei dati. I dati vengono gestiti attraverso: Costanti sono valori che non possono essere modificati, ma solo utilizzati; ad esempio nel calcolo del perimetro p= (b+h)x2 due è una costante; Le costanti possono essere alfanumeriche o numeriche. Le costanti alfanumeriche, dette anche stringhe, sono costituite da dei caratteri (cifre, lettere dell alfabeto, segni di punteggiatura, caratteri speciali) racchiuse da doppio apice. Esempi: casa 2 (stringa vuota) b (Spazio) 1
Le costanti numeriche: sono dei numeri positivi o negativi che possono essere interi o reali. Esempio:1 2,3-100 Variabili Le Variabili sono dei contenitori in cui è possibile memorizzare dei dati che variano nel tempo. Si posso suddividere in due categorie: 1. Variabili semplici 2. Variabili Strutturate (Vettori,Matrici) La variabile è caratterizzata da: 1. un nome che la identifica in modo univoco (il nome assegnato deve cominciare con una lettera,non può contenere caratteri speciali, può essere al massimo lunga 255 caratteri) 2. un tipo che identifica l insieme di valori che può assumere (short,integer,long,single, double, byte, string,boolean,date) 3. un valore memorizzato al suo interno Ad ogni istante una variabile individua un valore che è l ultimo valore assegnatole e resta inalterato finchè una successiva assegnazione non ne modificherà il valore stesso. Istruzione di Assegnazione: Questo tipo di istruzione permette di assegnare ad una variabile il valore di una espressione generica. Il valore assegnato può essere: Letto da terminale Una costante numerica (ad es. NUM = 1) Il contenuto di un altra variabile: (ad es.num2 = NUM1) Il risultato di un espressione aritmetica o logica tra costanti e/o variabili (ad es. A = B * 2-5). La variabile che compare nella parte sinistra di un assegnazione puo comparire anche nella parte destra es. NUM = NUM+1; questa istruzione permetterà di assegnare alla variabile NUM il valore precedente all assegnazione incrementato di uno. Se prima di questa istruzione la variabile NUM conteneva 2, dopo l esecuzione conterrà 3. TEST (CRITERI DI VERIFICA) I criteri di verifica sono un controllo sui risultati per verificare che questi siano corrispondenti agli obiettivi iniziali. DOCUMENTAZIONE Per descrivere in modo preciso e sintetico un algoritmo occorre far uso di un linguaggio generalizzato che permetta a chiunque di eseguire l algoritmo stesso senza dover ridefinire il problema. Il linguaggio generalizzato potrebbe essere il linguaggio naturale (ad esempio l italiano o l inglese), ma al fine di eliminare le inevitabili ambiguità del linguaggio naturale, occorre definire determinate strutture linguistiche che descrivano in modo preciso gli algoritmi. I più comuni linguaggi di descrizione degli algoritmi sono: diagrammi di flusso (Tipo Grafico Più utilizzato) pseudo-linguaggio ( Tipo testuale) Il linguaggio con cui descrivere gli algoritmi non è un linguaggio di programmazione. IL LINGUAGGIO DEI DIAGRAMMI DI FLUSSO (flow-chart) Quello dei diagrammi di flusso (in inglese detti anche flow chart) è un linguaggio di modellazione grafico per rappresentare il flusso di controllo di algoritmi, procedure, istruzioni operative (in senso lato). Con questo linguaggio si rappresenta graficamente la sequenza delle istruzioni mediante linee di connessione munite di frecce (archi orientati); ad ogni istruzione è associato un particolare simbolo grafico la cui forma è funzione del tipo di istruzione considerata. I diagrammi di flusso interconnettono elementi di un insieme di blocchi ognuno dei quali specifica un azione elementare. I blocchi elementare possono essere così schematizzati: 2
REGOLE DI COMPOSIZIONE ciascun blocco di azione ha una freccia entrante ed una uscente; ciascun blocco di decisione ha una freccia entrante e due uscenti; ciascuna freccia entra in un blocco oppure si inserisce in un altra freccia; ciascun blocco è raggiungibile dal blocco iniziale; il blocco finale è raggiungibile da qualsiasi blocco; uno ed un solo blocco START, uno ed un solo blocco STOP; qualunque sequenza di blocchi di azione e di controllo che parta dal blocco iniziale termina nel blocco finale SCHEMI DI COMPOSIZIONE FONDAMENTALI Fra i possibili modi di connettere blocchi elementari e frecce, ci sono i cosiddetti schemi di composizione fondamentali, chiamati schema di sequenza; schema di selezione; schema di iterazione. Sono strutturati quei grafi di flusso che possono essere ricondotti ai tre schemi di composizione fondamentali. SEQUENZA: evidenzia la composizione di due o più azioni elementari di un processo; graficamente è così rappresentato: SELEZIONE 3
Oltre ai rettangoli che rappresentano le azioni elementari compaiono i rombi che contengono i controlli; il verificarsi o meno di una condizione determina due diversi comportamenti, uno per il caso vero (True) e l altro per il falso (False). La condizione è una combinazione di costanti, variabili ed espressioni con gli operatori di confronto: < (minore) > (maggiore) =(uguale) <= (minore uguale) >=(maggiore uguale) <> (diverso). ITERAZIONE Se il risultato del controllo lo impone, l azione deve essere ripetuta; esistono due modelli e cioè uno detto WHILE in cui l azione (o le azioni) da ripetere può non essere mai eseguita, l altro detto REPEAT in cui l azione (o le azioni) da iterare è comunque eseguita almeno una volta. Il modello WHILE è quindi una iterazione per Vero (true) della condizione Cond, mentre il REPEAT è una iterazione per Falso (false) della condizione. TEOREMA DI BÖHM E JACOPINI (1966) Tutti i programmi possono essere realizzati con solo l uso degli schemi di composizione elementari (Sequenza, Selezione, Iterazione). Operatori Aritmetici (utilizzabili non blocchi di azione per le espressioni) Operatori Relazionali (utilizzabili nei blocchi di controllo) Operatori di Assegnazione = Operatori Booleani NOT Nega la condizione AND Restituisce vero se tutte le condizioni sono vere OR Restituisce vero se almeno un condizione è vera 4
ESEMPIO DI DIAGRAMMA DI FLUSSO Rappresentare con un diagramma di flusso l algoritmo che ricerca il massimo tra quattro numeri inseriti in input dall utente. Si utilizzano le seguenti variabili: MAX per meorizzare il numero massimo N1,N2,N3,N4 per memorizzare i 4 numeri inseriti in input 5