Algoritmi e diagrammi di flusso versione biennio Pablo Genova [email protected] I. I. S. “Angelo Omodeo” Indirizzo Tecnico-Economico Mortara 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 e delle numeri o caratteri che variano nel corso dell'algoritmo 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 programmazione, 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 FINE INIZIO I …. …. connettori input …... O 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 La media e la somma di tre numeri QUALSIASI Dati tre numeri, calcolarne la somma e la media, visualizzare il risultato INIZIO ATTENZIONE! A, B, C COMMENTI I IL SIMBOLO = IN INFORMATICA significa ASSEGNO È sbagliato scrivere !!!! A+B+C = S !!!! Blocco di Input: inserisco i tre numeri utilizzando le variabili A, B e C Calcolo la somma assegnando alla variabile S il valore della somma A+B+C S = A+ B +C Calcolo la media si poteva anche scrivere M = (A+B+C)/3 M=S/3 ATTENZIONE! BISOGNA ESSERE COERENTI SE HO CHIAMATO S LA SOMMA COSI' DEVE ESSERE IN TUTTO LO SCHEMA S, M FINE O Blocco di Output: visualizzo S e M (somma e media) come richiesto Esempio di selezione Confrontare le aree di un quadrato e di un cerchio e dire qual è la figura con area maggiore I COMMENTI SARANNO RICHIESTI NELLA VERIFICA pi_greco =3.14159 L, R ATTENZIONE! DATO CHE LE DUE AREE SONO GENERICHE E DIVERSE FRA DI LORO BISOGNA CHIAMARLE CON NOMI DIVERSI Il cerchio ha area maggiore O Definisco la costante pi_greco come 3.14159 (approssimazione) INIZIO ATTENZIONE! A_q = L*L A_c =pi_greco * R * R V A_c > A_q FINE I Inserisco lato del quadrato e raggio del cerchio Calcolo area quadrato A_q Calcolo area cerchio A_c F O Il quadrato ha area maggiore Esempio di iterazione Somma da 1 a 10 INIZIO S = I I S 0 0 Definisco la variabile I e la metto a 0 I è un contatore I+1 Incremento di 1 il contatore metto I+1 in I Questo serve a fare il CICLO S+I Incremento la somma di I, questo serve a fare la somma = = = Definisco la variabile S e la metto a 0 V I < 10 BLOCCO IL CICLO QUANDO HO RAGGIUNTO IL NUMERO RICHIESTO (10) attenzione è minore stretto è < NON ≤ F CONTINUA IN SLIDE SUCCESSIVA INIZIA IN SLIDE PRECEDENTE O S 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 in poco tempo calcoli complessi o lunghi per l'umano. Nella verifica occorre sempre RICORDARE LE UNITA' DELL'INFORMATICA (dal bit al Terabyte) CONVERSIONI BINARIO DECIMALE L'ARCHITETTURA DI VON NEUMANN LA STRUTTURA A LIVELLI DI UN SISTEMA OPERATIVO COS'E' L'ESTENSIONE DI UN FILE E LE PRINCIPALI ESTENSIONI DI USO COMUNE ATTENZIONE: questi argomenti possono SEMPRE essere richiesti! RICORDARE LE ELEMENTARI FORMULE GEOMETRICHE che permettono di calcolare aree e perimetri di quadrati, cerchi rettangoli, noti i lati, i raggi, i diametri, ovvero con ovvie notazioni: p quadrato = L *4 A quadrato = L2 prettangolo = 2 * (a+b) A rettangolo = b*h p triangolo = a+b+c pcerchio= π d = 2 π r A triangolo = b*h/2 A cerchio = π r2