IL CONCETTO DI ALGORITMO
Un algoritmo è un elenco finito di istruzioni univocamente interpretabili ,ciascuna delle quali deve essere precisamente definita e la cui esecuzione si arresta per fornire i risultati di una classe di problemi per ogni valore dei dati di ingresso.
Proprietà di un algoritmo Non ambiguità: le istruzioni devono essere univocamente interpretabili dall’esecutore dell’algoritmo Eseguibilità: l’esecutore deve essere in grado di eseguire ogni istruzione in un tempo finito. Finitezza: l’esecuzione di un algoritmo deve terminare in un tempo finito per ogni insieme di valori in ingresso.
Oggi con il termine algoritmo si indica la sequenza finita di passi effettuabili per risolvere una classe di problemi in un tempo finito.
Definizione di problema Un problema è un quesito nel cui enunciato si forniscono i dati necessari per giungere ,mediante calcoli o elaborazioni ,alla soluzione richiesta nell’enunciato stesso.
Che cosa significa risolvere un problema ? Dal punto di vista informatico ,risolvere un problema significa ricercare ed esprimere un elenco di istruzioni (algoritmo) che ,interpretate da un esecutore,conducano da determinate informazioni iniziali (dati) a informazioni finali (risultati).
Entità coinvolte Nel processo di risoluzione di un problema, sono generalmente coinvolte le seguenti entità: Committente :colui che pone il quesito. Risolutore: colui che mette a punto l’algoritmo stabilendo quali calcoli e/o elaborazioni sono necessarie per ottenere i risultati richiesti. Esecutore: chi, uomo o macchina, esegue l’algoritmo Utente:chi fornisce i dati iniziali all’ esecutore e attende i risultati.
Differenza fra risultato e soluzione Risultato :è costituito dall’insieme dei dati finali. Soluzione:è l’algoritmo che permette di ottenere i risultati. Definizione di istruzione L’istruzione è un comando elementare che dice all’esecutore qual è l’operazione da eseguire in quel momento.
Differenza fra classe di problemi e istanza di problema Una classe di problemi è un problema nel cui enunciato almeno un dato è fornito in forma generica (parametro) Un’ istanza di problema è un problema nel cui enunciato tutti i dati sono forniti tramite valori specifici(costanti)
Per esempio l’enunciato “Calcolare l’area di un rettangolo di base B e altezza H “rappresenta una classe di problemi ,mentre “Calcolare l’area di un rettangolo di base 4 e altezza 6 “ è una delle infinite istanze della stessa classe di problemi.
Definizione di programma Il programma è un algoritmo espresso con un linguaggio di programmazione (Pascal,C,C++.Java,..)
I dati su cui opera un algoritmo sono costanti e variabili Un dato è costante quando il suo valore non può essere aggiornato durante l’esecuzione dell’algoritmo Una variabile è una coppia <nome , valore> :può essere immaginata come una scatola sulla quale è scritto un nome e che può contenere un valore NOME
Un formalismo che permette di rappresentare gli algoritmi è il diagramma di flusso E’ composto da una serie di blocchi contenenti le istruzioni e connessi mediante frecce. Ogni blocco ha un ramo di ingresso e uno o più rami di uscita.
Le forme dei blocchi sono: Rettangolo :indica una operazione(ad esempio un assegnamento) A B
Rombo:indica una diramazione ,cioè la verifica di una condizione Rombo:indica una diramazione ,cioè la verifica di una condizione .Se la condizione è vera si seguirà il ramo vero(true) altrimenti si seguirà il ramo falso (false) Condizione True False
Parallelogramma: indica una operazione di ingresso o uscita Leggi Num
Ciclo While Do Condizione Falso Vero Istruzione
Ellissi: indica l’inizio o la fine dell’algoritmo.
Esempio di algoritmo con i diagrammi di flusso:” dati in input due numeri interi stabilire il più grande tra i due “ Inizio A,B Vero Falso A>B A B Fine
Traduzione in Pascal dell’algoritmo precedente Program calcola_max; Var A,B: integer; Begin Writeln (‘Inserisci il 1° numero’); Readln (A); Writeln (‘Inserisci il 2° numero’); Readln (B); IF A > B Then Writeln (A) Else Writeln (B); End.