Fondamenti di Informatica Progetto e codifica di algoritmi IL TEOREMA DI BOEHM-JACOPINI Un qualunque algoritmo può essere descritto unicamente attraverso le tre strutture: ) Sequenza ) Diramazione ) Ciclo o iterazione Le tre strutture sono complete. Un qualunque linguaggio (Assembler, Pascal, C, flow chart, ecc.) è sufficiente che metta a disposizione le sole tre strutture anzidette. Una Sequenza può contenere: 9 istruzioni di lettura e scrittura 9 istruzioni di assegnazione Se si suppone di avere una sola unità di ingresso (standard input) ed una sola unità di uscita (standard output), una istruzione di lettura/scrittura consente di leggere/scrivere il valore di una variabile da/su l’unità di ingresso/uscita, provocandone il trasferimento nella/dalla parte di memoria contenente i dati del programma. Una istruzione di assegnazione consente di assegnare ad una variabile il valore assunto da un’espressione. Diramazione e Ciclo costituiscono le strutture o istruzioni di controllo. G. Piscitelli Politecnico di Bari pag. 1/9 Fondamenti di Informatica Progetto e codifica di algoritmi LE STRUTTURE DEL FLOW CHART Sequenza S C vera falsa S2 S1 C vera S (corpo) Diramazione falsa Ciclo (a condizione iniziale) fine G. Piscitelli Politecnico di Bari pag. 2/9 Fondamenti di Informatica Progetto e codifica di algoritmi ALTRE STRUTTURE DI CONTROLLO S (corpo) C vera Ciclo (a condizione finale) falsa fine I I1 I > I3 vera falsa S (corpo) I Ciclo (enumerativo) I +I2 fine G. Piscitelli Politecnico di Bari pag. 3/9 Fondamenti di Informatica Progetto e codifica di algoritmi PROGETTAZIONE STRUTTURATA I vantaggi del progettare facendo uso delle sole strutture fondamentali: ¾ leggibilità; ¾ modificabilità; ¾ facilità di codifica. G. Piscitelli Politecnico di Bari pag. 4/9 Fondamenti di Informatica Progetto e codifica di algoritmi PROGETTAZIONE STRUTTURATA Algoritmo: lettura di numeri e inversione della sequenza start N 1 NUM A(N) NUM N N+1 NUM != 0 si no N N-2 NUM A(N) N N-1 NUM N != 0 si no stop G. Piscitelli Politecnico di Bari pag. 5/9 Fondamenti di Informatica Progetto e codifica di algoritmi PROGETTAZIONE STRUTTURATA Esempi: Algoritmo di ordinamento SELECTION SORT Algoritmo di ordinamento BUBBLE SORT Algoritmo di CUT AND PASTE Algoritmo di STRING FIND Algoritmo di STRING FIND AND SUBSTITUTE ……… ……… G. Piscitelli Politecnico di Bari pag. 6/9 Fondamenti di Informatica Progetto e codifica di algoritmi LE ISTRUZIONI DI UN GENERICO LINGUAGGIO Istruzione di lettura read (alfa, beta); Istruzione di scrittura write (alfa, beta); write ((alfa * beta)/5); write (“ciao”); Istruzione di assegnazione delta = alfa + beta Diramazione if (condizione) then {sequenza1}; else {sequenza2}; Ciclo (condizione iniziale) while (condizione) do {sequenza}; Ciclo (condizione finale) do {sequenza} while (condizione); Ciclo (enumerativo) for (I = I1; I <= I3; I = I + I2) {sequenza} G. Piscitelli Politecnico di Bari pag. 7/9 Fondamenti di Informatica Progetto e codifica di algoritmi GLI OPERATORI ARITMETICI = + * / assegnazione somma sottrazione moltiplicazione divisione GLI OPERATORI DI RELAZIONE == != < > <= >= relazione di uguaglianza relazione di disuguaglianza o diversità relazione ‘minore di’ relazione ‘maggiore di’ relazione ‘minore o uguale di’ relazione ‘maggiore o uguale di’ GLI OPERATORI LOGICI && || ! G. Piscitelli AND o prodotto logico OR o somma logica NOT o negazione Politecnico di Bari pag. 8/9 Fondamenti di Informatica Progetto e codifica di algoritmi GLI ARRAY Sono sequenze di celle di memoria consecutive e omogenee. Ad ogni array viene dato un unico nome, mentre il singolo elemento è identificato da un indice, cioè da un intero (maggiore o uguale a zero), che specifica il numero d’ordine nella sequenza. Array monodimensionale (vettore) di nome CODE e costituito da 5 elementi. CODE[0] CODE[1] CODE[2] CODE[3] CODE[4] Array bidimensionale di nome DIF e costituito da 2 vettori ciascuno di 3 elementi. DIF[0][0] DIF[0][1] DIF[0][2] DIF[1][0] DIF[1][1] DIF[1][2] G. Piscitelli Politecnico di Bari pag. 9/9