Corso di Problemi ed algoritmi Ing Pasquale Rota
Argomenti Problemi ed algoritmi Proprietà degli algoritmi Pseucodice Diagrammi di flusso 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 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 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. 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 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. 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. Problemi ed algoritmi - Ing. Pasquale Rota 8
Inizio/fine 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 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 x 2 z 5x+1 Le operazioni da svolgere sui dati sono racchiuse in rettangoli Problemi ed algoritmi - Ing. Pasquale Rota 11
Condizione Vero o falso? 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. 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 Problemi ed algoritmi - Ing. Pasquale Rota 14
Diagramma di flusso Inizio Leggi P,Q falso P>Q vero falso P<Q vero Stampa P St. Uguali Stampa Q Fine 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 POSTCONDIZIONE falso condizione vero Ciclo istruzioni falso condizione vero Ciclo istruzioni Fine Fine 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. Problemi ed algoritmi - Ing. Pasquale Rota 17
Diagramma di flusso Inizio Leggi P,Q X=Q Y=P falso X=Q Y=P P1:=1 a lettera Y Q1:=1 a lettera X P1<Q1 vero falso P1>Q1 vero Stampa P Togli 1 a lettera X Togli 1 a lettera Y Stampa Q Fine Fine Problemi ed algoritmi - Ing. Pasquale Rota 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. 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). 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). Problemi ed algoritmi - Ing. Pasquale Rota 21