Istituto Statale “E. TORRICELLI” Liceo Scientifico - Tecnico Industriale Informatica Problema Algoritmo Programma Dispensa per il corso di Informatica ABACUS 3 Informatica e Informazione Informazione è qualunque “cosa” che: possiede un significato per qualcuno ha, ha avuto o potrà avere un valore oppure un’utilità può assumere forme diverse (simboli, numeri, grafici, disegni, colori…) può essere comunicata (scambiata) tra due soggetti in diverse modalità (scritta, orale..) può essere archiviata, catalogata e memorizzata può essere elaborata e trasformata nella forma più utile a seconda della necessità Informatica significa… informazione + automatica la scienza che studia teoria, analisi, progetto, efficienza, realizzazione e applicazione degli algoritmi che descrivono e trasformano l’informazione a.s. 2006-2007 Problema - Algoritmo - Programma 2 Problema Cosa è questione da risolvere necessità da affrontare Come si risolve attraverso una metodologia di lavoro DEFINIRE il problema a.s. 2006-2007 Quali dati sono coinvolti Quali dati sono disponibili Quale soluzione ci si aspetta Come si possono trovare i dati utili INDIVIDUARE il percorso risolutivo ESEGUIRE le azioni Problema - Algoritmo - Programma 3 Problema Necessita Fornisce esecutore soluzione Utilizza dati organizzati mediante l’ideazione di un percorso risolutivo adeguato che comprende le azioni da intraprendere e la loro sequenza esatta Algoritmo a.s. 2006-2007 Problema - Algoritmo - Programma 4 Algoritmo Definizione formale sequenza di azioni, valida per un insieme di dati iniziali ben definito, che, compiuta da un esecutore, trasformi i dati nel risultato finale, attraverso un numero finito di passi elementari e non ambigui. Un algoritmo deve presentare un punto di INIZIO (dove comincia il procedimento risolutivo) e un punto di FINE (raggiunto il quale si interrompe l’esecuzione delle azioni) Caratteristiche completo ed esaustivo per tutti i casi che si possono verificare durante l’esecuzione, deve essere indicata la soluzione da seguire riproducibile ogni successiva esecuzione dello stesso algoritmo con i medesimi dati iniziali deve produrre sempre i medesimi risultati finali deve risolvere medesime categorie di problemi deterministico le azioni di cui è composto devono fornire la medesima, certa soluzione, indipendentemente dalla natura dell’esecutore Le azioni che formano l’algoritmo devono essere: in numero finito non ambigue realizzabili Esempi intuitivi di algoritmi i passi necessari per l’utilizzo di un elettrodomestico le regole da seguire per la divisione di 2 numeri le indicazioni per la consultazione di un orario ferroviario a.s. 2006-2007 Problema - Algoritmo - Programma 5 Algoritmo: gli elementi coinvolti Nella definizione si individuano tre elementi fondamentali: Dati Iniziali (o in ingresso) sono gli elementi che vengono elaborati dall’algoritmo Finali (o in uscita) sono i risultati prodotti dall’algoritmo Sequenza di azioni (istruzioni, passi elementari) un’azione è un’operazione elementare (istruzione) che compone un passo della serie di operazioni che deve essere eseguita sui dati di ingresso per ottenere il risultato, cioè i dati in uscita Esecutore (o processore) è il soggetto che compie le azioni, cioè legge le istruzioni che devono essere eseguite sui dati in ingresso, le interpreta e le esegue in modo da elaborare tali dati per trasformarli in risultati, cioè dati in uscita. l’insieme delle istruzioni deve essere scelto a seconda dell’esecutore, in termini di qualità, di tipologia e di livello di dettaglio a.s. 2006-2007 Problema - Algoritmo - Programma 6 Azioni e Istruzioni Per descrivere le azioni è necessario disporre di un linguaggio o di una notazione formale ISTRUZIONI descrizioni delle azioni azioni svolte da un esecutore automatico Un algoritmo è dunque composto da un certo numero di istruzioni, ad esso corrisponde un processo composto da un certo numero di azioni a.s. 2006-2007 Problema - Algoritmo - Programma 7 Caratteristiche delle Istruzioni Ogni istruzione deve essere concretamente realizzabile dall’esecutore, a cui è affidato l’algoritmo Le istruzioni che compongono un algoritmo devono essere precise e non ambigue, in modo che non lascino dubbi nell’interpretazione da parte dell’esecutore Ogni istruzione deve avere una durata limitata nel tempo Ogni istruzione deve produrre, se eseguita, un risultato osservabile Ogni istruzione deve avere carattere deterministico: se eseguita, a partire dalle stesse condizioni iniziali, deve cioè produrre sempre il medesimo effetto Le istruzioni devono essere elementari, cioè non ulteriormente scomponibili rispetto alle capacità dell’esecutore a.s. 2006-2007 Problema - Algoritmo - Programma 8 Algoritmo ed esecutore Per una descrizione generale dell’ambiente in cui si opera con l’informatica, vanno definite due figure fondamentali: Il programmatore, ovvero colui che organizza e scrive l’algoritmo L’utente, ovvero la persona che attiva l’esecuzione dell’algoritmo e che interagisce con l’esecutore per fornirgli i dati iniziali del problema e per utilizzare i risultati finali Se per esecutore si intende un elaboratore elettronico, l’algoritmo dovrà essere scritto secondo un linguaggio definito, in modo da essere comprensibile da parte del calcolatore. Programma a.s. 2006-2007 Problema - Algoritmo - Programma 9 Linguaggio È un sistema codificato di segni che Consente comunicazione (=scambio di informazioni) Usa regole di una grammatica generativotrasformazionale a.s. 2006-2007 per generare e trasformare le frasi (che possono essere attive, passive, affermative, negative o interrogative) Problema - Algoritmo - Programma 10 Linguaggio di programmazione permette di codificare gli algoritmi in modo che risultino “comprensibili” a un calcolatore è un vero e proprio linguaggio con un lessico, una sintassi e una semantica specifica. a.s. 2006-2007 Problema - Algoritmo - Programma 11 Linguaggi per la stesura di un algoritmo Si distinguono Metalinguaggio si usano simboli grafici (diagrammi di flusso = flow chart) Pseudocodifica in linguaggio naturale si usano parole chiave In entrambi i casi, come in tutti i linguaggi, occorre definire l’alfabeto (i simboli ammessi dal linguaggio) le parole (le combinazioni dei simboli) sintassi (le regole che permettono di associare tra loro le parole in modo coerente) a.s. 2006-2007 Problema - Algoritmo - Programma 12 Diagrammi di flusso Comprendono elementi di forma diversa segmenti orientati che uniscono tra loro i vari simboli Indicano il flusso delle operazioni Consentono una descrizione grafica dell’algoritmo Forniscono una visione immediata dell’intero procedimento e dell’ordine di esecuzione delle varie istruzioni a.s. 2006-2007 Problema - Algoritmo - Programma 13 Simboli per Diagrammi di flusso START indicano il punto di partenza e quello di terminazione dell’algoritmo END detto di elaborazione e contiene al suo interno l’istruzione da eseguire (deve avere una sola freccia in uscita) Detto di input/output, utilizzato per rappresentare operazioni di acquisizione o di restituzione di dati condizione a.s. 2006-2007 detto di decisione e serve per: - rappresentare un’operazione di confronto tra due dati (in corrispondenza delle frecce in uscita si trovano indicazioni del tipo si/no, VERO/FALSO, V/F, T/F) - stabilire se una proposizione (condizione) è vera o falsa (Viene così definito il valore di un’espressione di tipo logico, cioè di una variabile a due valori, a uno dei quali corrisponde il significato di condizione verificata -vero, e all’altro quella di condizione non verificata -falso) Problema - Algoritmo - Programma 14 Pseudocodifica È un linguaggio sintetico composto da un vocabolario e da una sintassi molto ristretti È la descrizione di un algoritmo ottenuta utilizzando termini e parole del linguaggio comune applicando regole che permettono di organizzare un tipo di testo formalmente rigoroso e strettamente orientato alla stesura degli algoritmi Richiede il rispetto delle regole per la redazione del testo dell’algoritmo Consente al programmatore di esprimere le proprie idee in una forma naturale permettendo di concentrarsi sulla logica della soluzione del problema senza essere distratti dai vincoli formali richiesti nel lavoro di stesura del programma. a.s. 2006-2007 Problema - Algoritmo - Programma 15 La programmazione strutturata La teoria della programmazione strutturata consente di realizzare algoritmi costituiti da parti che dipendono l’una dall’altra, secondo un ben definito modello organizzativo. I modelli organizzativi si chiamano strutture di controllo, perché servono a controllare il percorso all’interno del procedimento risolutivo, per ottenere i risultati desiderati. Si ritiene valido il teorema di JACOPINI-BÖHM: Qualsiasi algoritmo può essere scritto utilizzando soltanto tre strutture di base: •Sequenza •Alternativa (o di Selezione) •Ripetizione (o Iterativa) a.s. 2006-2007 Problema - Algoritmo - Programma 16 Pseudocodifica: simboli e parole chiave È consentito l’uso di alcune parole chiave, o simboli, che specificano: •le azioni che devono essere compiute da un esecutore •come strutturare la logica della soluzione adottata INIZIO, FINE ({ , }) parole (simboli) che aprono e chiudono algoritmo operazioni per descrivere l’acquisizione (leggi) e la restituzione (scrivi) dei dati leggi (lista di variabili) scrivi (variabili e costanti) SE ALLORA ALTRIMENTI FINESE ESEGUI RIPETI FINCHE’ ESEGUI MENTRE RIPETI a.s. 2006-2007 Problema - Algoritmo - Programma 17 Flow Chart delle strutture di controllo Istruzione 1 … Le istruzioni organizzate in sequenza devono essere eseguite una dopo l’altra secondo l’ordine con cui sono state scritte Istruzione N Nelle istruzioni che vengono eseguite in alternativa, l’esecutore deve operare una scelta tra un certo gruppo di istruzioni e un altro gruppo, a seconda di ciò che succede in quel momento durante l’elaborazione, cioè a seconda della validità o meno di una condizione: Istruzione di Selezione ad una via SE (condizione vera) T allora ESEGUI istruzione FINESE istruzione a.s. 2006-2007 condizione F Istruzione di Selezione a due vie T SE (condizione vera) allora ESEGUI istruzione 1 istruzione1 ALTRIMENTI ESEGUI istruzione 2 FINESE Problema - Algoritmo - Programma F condizione istruzione2 18 Istruzioni che devono essere eseguite in ripetizione, cioè, a seconda delle circostanze. Vengono detti anche cicli e, a seconda di quando avvenga il controllo della condizione, si distinguono in: Cicli con controllo in testa (ripetizioni precondizionali) F condizione MENTRE (condizione vera) ESEGUI istruzioni RIPETI T istruzioni istruzioni Cicli con controllo in coda (ripetizioni postcondizionali) ESEGUI istruzioni Controlla condizione RIPETI FINCHÉ’ (condizione vera) T condizione F a.s. 2006-2007 Problema - Algoritmo - Programma 19 Traduzioni nei linguaggi C e Java Istruzione di Selezione ad una via SE (condizione vera) T allora ESEGUI istruzione FINESE istruzione if (condizione vera){ ESEGUI istruzione } a.s. 2006-2007 condizione F Istruzione di Selezione a due vie T SE (condizione vera) allora ESEGUI istruzione 1 istruzione1 ALTRIMENTI ESEGUI istruzione 2 FINESE F condizione istruzione2 if (condizione vera){ ESEGUI istruzione 1 }else{ ESEGUI istruzione 2 } Problema - Algoritmo - Programma 20 Traduzioni nei linguaggi C e Java Cicli con controllo in testa (ripetizioni precondizionali) F condizione T MENTRE (condizione vera) istruzioni RIPETI while (condizione vera) { istruzioni } istruzioni Cicli con controllo in coda (ripetizioni postcondizionali) ESEGUI istruzioni RIPETI FINCHÉ’ (condizione vera) istruzioni do{ istruzioni }while (condizione vera); T condizione F a.s. 2006-2007 Problema - Algoritmo - Programma 21 Esempi di algoritmi: calcolo dell’e-esima potenza INIZIO Leggi base Leggi esp val=1 F Esp <> 0 V Scrivi val val=val*base esp=esp - 1 a.s. 2006-2007 Problema - Algoritmo - Programma FINE 22 INIZIO LEGGI base LEGGI esp val = 1 ESEGUI MENTRE esp <> 0 val = val * base esp = esp - 1 RIPETI SCRIVI val FINE a.s. 2006-2007 Problema - Algoritmo - Programma 23