I Diagrammi di Flusso Corso di Informatica Laurea in Fisica prof. ing. Corrado Santoro A.A. 2010-11 Algoritmi e formalismo • Una caratteristica degli algoritmi è la non ambiguità • Per soddisfarla dobbiamo scrivere l'algoritmo in modo non ambiguo • Cioè dobbiamo usare un linguaggio o un simbolismo non soggetto ad interpretazioni • Non possiamo cioè andare avanti a calcola, se, allora, vai a, etc. Corrado Santoro, Informatica, Lezione 1 -Il concetto di algoritmo 2 Inventiamoci un simbolismo • Di quali costrutti abbiamo bisogno? – Input – Output – Calcolo – Costrutti Condizionali (se) – Indicazione di inizio e di fine algoritmo – Salto incondizionato Corrado Santoro, Informatica, Lezione 1 -Il concetto di algoritmo 3 I diagrammi di flusso (flow chart) • I diagrammi di flusso sono un simbolismo grafico che permette di rappresentare i costrutti di un algoritmo in modo non ambiguo • Ogni costrutto (input, output, calcolo, condizione, etc) è indicato da un simbolo differente • Attraverso questi simboli uniti da frecce, si rappresenta la “strada” (i passi) che occorre fare durante l'esecuzione dell'algoritmo • Cioè si indica il “flusso di esecuzione” Corrado Santoro, Informatica, Lezione 1 -Il concetto di algoritmo 4 Simboli dei diagrammi di flusso • INPUT • OUTPUT • CALCOLO • INIZIO • FINE START END • CONDIZIONE Corrado Santoro, Informatica, Lezione 1 -Il concetto di algoritmo 5 Esempio:eq di secondo grado 1. calcola Delta = b2 – 4ac 2. se Delta < 0, allora non ci sono soluzioni in ℜ 3. altrimenti, ... 4. calcola x1 = (-b + √Delta) / (2a) 5. calcola x2 = (-b – √Delta) / (2a) Corrado Santoro, Informatica, Lezione 1 -Il concetto di algoritmo 6 Eq di secondo grado: flow chart START X1 = (- B – SQRT(Delta)) / (2*A) X2 = (- B + SQRT(Delta)) / (2*A) A, B, C No Delta = B*B - 4*A*C Delta < 0 X1, X2 Yes “nessuna soluzione” Corrado Santoro, Informatica, Lezione 1 -Il concetto di algoritmo END 7 L'algoritmo di Euclide per il MCD 1. Dati A, B 2. Se A = B, allora MCD = A (oppure MCD = B) 3. Altrimenti, ... 4. Se A > B, allora calcola A = A – B 5. Altrimenti, calcola B = B – A (significa che A < B) 6. Vai al passo 2 Corrado Santoro, Informatica, Lezione 1 -Il concetto di algoritmo 8 ... e il suo flow chart START A, B B=B-A No No A=B A>B Yes “MCD = “, A Corrado Santoro, Informatica, Lezione 1 -Il concetto di algoritmo A=A-B Yes END 9 Il fattoriale 1. Fattoriale (N) 2. Se N = 0, allora Risultato = 1, fine algoritmo 3. Altrimenti, ... 4. Parziale = N 5. Se N = 1, allora Risultato = Parziale, fine algoritmo 6. Altrimenti, ... 7. N = N – 1 8. Parziale = Parziale * N 9. Vai al passo 5 Corrado Santoro, Informatica, Lezione 1 -Il concetto di algoritmo 10 ... e il suo flow chart START Parziale = Parziale * N N N=N-1 No No N=0 Parziale = N N=1 Yes Yes “0! = 1“ Corrado Santoro, Informatica, Lezione 1 -Il concetto di algoritmo N “! = “ Parziale END 11