Corso di Informatica Problemi ed algoritmi Ing Pasquale Rota Argomenti Problemi ed algoritmi Proprietà degli algoritmi Pseucodice Diagrammi di flusso Informatica Problemi ed algoritmi - Ing. Pasquale Rota 2 Proprietà degli algoritmi • Eseguibilità: ogni azione deve essere eseguibile in un tempo finito • Non-ambiguità: ogni azione deve essere univocamente interpretabile • Limitatezza: il numero totale di azioni da eseguire, per ogni insieme di dati in ingresso, deve essere finito Informatica Problemi ed algoritmi - Ing. Pasquale Rota 3 Algoritmo • Un algoritmo è una sequenza ordinata e finita di operazioni elementari che descrive la soluzione del problema. procedura = algoritmo Informatica Problemi ed algoritmi - Ing. Pasquale Rota 4 Algoritmi e programmi • Ogni elaboratore è una macchina in grado di eseguire azioni elementari su oggetti detti dati. • L’esecuzione delle azioni è richiesta all’elaboratore tramite comandi elementari chiamati ISTRUZIONI espresse attraverso un opportuno formalismo: il linguaggio di programmazione. • La formulazione testuale di un algoritmo in un linguaggio comprensibile a un elaboratore è detta programma. Informatica Problemi ed algoritmi - Ing. Pasquale Rota 5 La progettazione del programma • Durante la fase di descrizione del progetto si possono utilizzare diversi metodi: – Pseudo codici (affini alla lingua parlata) – Diagramma di flusso Informatica Problemi ed algoritmi - Ing. Pasquale Rota 6 Pseudocodice • Per pseudocodice, o pseudolinguaggio si intende un linguaggio di programmazione fittizio che permette di rappresentare l’algoritmo risolutivo. • Lo pseudolinguaggio può essere utilizzato alternativamente al diagramma di flusso, non è soggetto a molte limitazioni intrinseche di quest'ultimo tipo di rappresentazione. • Non esiste uno pseudolinguaggio standard e convenzionalmente usato. Ogni pseudolinguaggio ha un proprio lessico, una propria sintassi e una propria semantica • La progettazione di questo tipo di formalismo è volta alla comprensibilità e alla leggibilità del codice; la sintassi sarà quindi meno rigorosa rispetto ad un vero linguaggio e le parole chiave saranno evocative, in modo da rendere più intuitiva la sua interpretazione. Informatica Problemi ed algoritmi - Ing. Pasquale Rota 7 Diagramma di flusso o diagrammi a blocchi • Un diagramma di flusso, o diagramma a blocchi, è una rappresentazione grafica usata per descrivere dei concetti. • È uno metodi più comuni utilizzati per la rappresentazione di algoritmi, permette di descrivere il flusso di controllo mediante una descrizione schematica delle operazioni da compiere e la sequenza con le quali tali operazioni devono essere eseguite. • Si presenta come un insieme di figure geometriche collegate da frecce. Informatica Problemi ed algoritmi - Ing. Pasquale Rota 8 Inizio/fine Informatica inizio • Tutti i diagrammi di flusso cominciano con un ovale che contiene la parola inizio. fine • Ogni diagramma di flusso si conclude con un ovale che contiene la parola fine. Problemi ed algoritmi - Ing. Pasquale Rota 9 Dati di input/output Dati in Ingresso/uscita Informatica • I dati in uscita sono quelli che si vuole conoscere e costituiscono il risultato dell’elaborazione. • I dati in ingresso sono i dati noti del problema, quelli che devono essere elaborati per arrivare alla soluzione Problemi ed algoritmi - Ing. Pasquale Rota 10 Blocco Operazioni Operazioni x2 z 5x+1 Informatica • Le operazioni da svolgere sui dati sono racchiuse in rettangoli Problemi ed algoritmi - Ing. Pasquale Rota 11 Condizione Vero o falso? Informatica • Quando si deve fare una scelta tra due possibilità si usa il simbolo del rombo. • Blocco condizionale o di controllo Problemi ed algoritmi - Ing. Pasquale Rota 12 Diagramma a blocchi Strutturati Una diagramma descrive un algoritmo se: • viene usato un numero finito di blocchi. • lo schema inizia con un blocco iniziale e termina con un blocco finale • ogni blocco soddisfa le condizioni di validità. - Blocco azione e blocco lettura/scrittura: ogni blocco di questi due tipi ha una sola freccia entrante e una sola freccia uscente. - Blocco di controllo: ogni blocco di questo genere ha una sola freccia entrante e due frecce uscenti. - Dal blocco iniziale deve essere possibile raggiungere ogni blocco, e da ciascun blocco e possibile raggiungere il blocco finale. Informatica Problemi ed algoritmi - Ing. Pasquale Rota 13 Algoritmo: esempio 1 • Stabilire se un numero P è maggiore di Q – leggi P,Q • se P > Q • allora scrivi P • altrimenti se P < Q • allora scrivi Q • altrimenti • scrivi “Uguali” Informatica Problemi ed algoritmi - Ing. Pasquale Rota 14 Diagramma di flusso Inizio Leggi P,Q vero falso P>Q falso vero Stampa P P<Q St. Uguali Stampa Q Fine Informatica Problemi ed algoritmi - Ing. Pasquale Rota 15 Cicli/iterazioni • Un ciclo è una sequenza di istruzioni ripetute finché non viene a verificarsi una determinata condizione o il processo si ritiene completato. • Ogni ripetizione del ciclo viene chiamata iterazione. PRECONDIZIONE falso condizione POSTCONDIZIONE vero Ciclo istruzioni falso Ciclo istruzioni condizione vero Fine Fine Informatica Problemi ed algoritmi - Ing. Pasquale Rota 16 Algoritmi: esempio 2 Stabilire se una parola P viene alfabeticamente prima di una parola Q – leggi P,Q – ripeti quanto segue: • se prima lettera di P < prima lettera di Q • allora scrivi P • altrimenti se prima lettera P > Q • allora scrivi Q • altrimenti (le lettere sono uguali) • togli da P e Q la prima lettera – fino a quando non trovi le prime lettere diverse o sono terminate. Informatica Problemi ed algoritmi - Ing. Pasquale Rota 17 Diagramma di flusso Inizio Leggi P,Q X=Q Y=P X=Q Y=P P1:=1a lettera Y Q1:=1a lettera X falso falso Togli 1a lettera X Togli 1a lettera Y P1>Q1 P1<Q1 vero Stampa P Stampa Q Fine Informatica vero Problemi ed algoritmi - Ing. Pasquale Rota Fine 18 Le funzioni • Un programma che esegue una procedura matematica si dice che svolge una funzione. • Le funzioni possono essere scritte una sola volta e richiamate in più punti del programma senza doverle ripetere. Informatica Problemi ed algoritmi - Ing. Pasquale Rota 19 Sottoprogrammi • I sottoprogrammi raggruppano in una unica procedura gruppi di istruzioni ripetute più volte all’interno dello stesso programma. • Sono identificati da un nome, dai dati di ingresso (variabili/parametri input) e da quelli di uscita (variabili di output). Informatica Problemi ed algoritmi - Ing. Pasquale Rota 20 Procedimento Top-down Problemi complessi Scomposizione del problema Soluzione per approssimazioni successive Il procedimento prevede l’esecuzioni di più fasi. Per ciascuna fase si prenderanno in esame soluzioni che riguardano parti sempre più limitate del problema iniziale. In tal modo la risoluzione di un problema complesso è stata ricondotta alla risoluzione di più problemi semplici (tanti quante sono le funzioni previste dalla elaborazione originaria). Informatica Problemi ed algoritmi - Ing. Pasquale Rota 21