Algoritmi e diagrammi di flusso Pablo Genova gallini.genova@gmail.com I. I. S. Angelo Omodeo Mortara Indirizzo Tecnico-Economico A. S. 2015 2016
Cos'è un algoritmo? Algoritmo: procedimento che risolve un dato problema in un numero finito di passi La proprietà di finitezza è molto importante (l'algoritmo deve finire!) inoltre tipicamente un algoritmo è non ambiguo, porta ad un risultato univoco, viene eseguito in un tempo finito i passi costituenti sono elementari (non ulteriormente scomponibili) il passo dell'algoritmo si dice STEP in inglese Curiosità: la parola algoritmo deriva da Muhammad ibn Mūsā al-khwārizmī, matematico persiano della Corasmia attualmente Xiva (Хива) Uzbekistan
Dal problema all'algoritmo Quando costruiamo un algoritmo, creiamo una procedura generale, astratta, che ci permette di risolvere un problema Definiremo delle VARIABILI numeri o caratteri che variano nel corso dell'algoritmo e delle COSTANTI numeri o caratteri che rimangono costanti NON variano nel corso dell'algoritmo Esempio di costanti: π (pi greco) c (velocità della luce), ma anche qualunque valore numerico che non cambia più in tutto il procedimento, Esempio economico: aliquota IVA fissata ad es. al 23% IVA=23%
Diagrammi di flusso Per rappresentare un algoritmo usiamo la tecnica dei diagrammi di flusso. Se usata correttamente, è già un modo rudimentale di programmare, ovvero di elaborazione di un programma, che è un insieme di istruzioni comprensibile al calcolatore. Nel diagramma di flusso è già presente la logica della programmazione, ciò che manca è la codifica, ovvero il linguaggio concreto che esprime i vari passaggi in forma comprensibile al calcolatore (questo non lo vedremo) Curiosità flowchart originali IBM: http://www.eah-jena.de/~kleine/history/software/ibm-flowchartingtechniques-gc20-8152-1.pdf
Blocchi elementari INIZIO FINE. I. O input connettori output... V Elaborazione (calcolo) F Selezione binaria
Quanti tipi di blocchi servono? I due informatici italiani Corrado Böhm e Giuseppe Jacopini hanno dimostrato che OGNI ALGORITMO PUO' ESSERE IMPLEMENTATO UTILIZZANDO LE SOLE TRE STRUTTURE: SEQUENZA, SELEZIONE ED ITERAZIONE Teorema di Böhm-Jacopini SEQUENZA E SELEZIONE le abbiamo già viste (le sequenze sono i blocchi di elaborazione) L'ITERAZIONE E' UNA STRUTTURA CHE PERMETTE DI RIPETERE un dato numero di volte una o più operazioni L'ITERAZIONE è anche nota come CICLO O LOOP
Esempio di iterazione Somma da 1 a 10 inizio S = 0 Definisco variabile S e la metto a 0 I = 0 Definisco variabile I e la metto a 0 I è un contatore I = I + 1 Incremento di 1 il contatore metto I+1 in I Questo serve a fare il CICLO S = S + I Incremento la somma di I, questo serve a fare la somma V I < 10 F BLOCCO IL CICLO QUANDO HO RAGGIUNTO IL NUMERO RICHIESTO (10) attenzione è minore stretto è < NON CONTINUA
S O VISUALIZZO S FINE I cicli sono in qualche modo l'essenza della programmazione perché vi permettono di dire al calcolatore di ripetere tante volte una data operazione e quindi di fare calcoli complessi o lunghi per l'umano
Esempio di selezione Confrontare le aree di un quadrato e di un cerchio e dire qual è la figura con area maggiore inizio pi_greco =3.14159 Definisco la costante pi_greco come 3.14159 (approssimazione) L, R I Inserisco lato del quadrato e raggio del cerchio A_q = L*L Calcolo area quadrato A_c =pi_greco * R * R Calcolo area cerchio Il cerchio ha area maggiore O V A_c > A_q F O Il quadrato ha area maggiore fine
Nella verifica vi chiedo anche semplici esercizi su TABELLE DI VERITA' UNITA' DELL'INFORMATICA (dal bit al Terabyte) CONVERSIONI BINARIO DECIMALE Es. se p è VERO e q è FALSO, com'è l'espressione logica p and (q or not p) 1 TB (Terabyte) quanti bit sono? E quanti MB (Megabytes) sono Il numero binario 10001 quanto vale in decimale e il numero decimale 123 quanto vale in binario? Scrivere il procedimento per giustificare i calcoli!!! (sono malfidente, se non vedo non credo ;-))