GLI ALGORITMI Appunti preparati dalla prof.ssa Maria D’Angelo L’ALGORITMO L’ algoritmo è un insieme finito di operazioni, che devono essere eseguite per portare a termine un dato compito e risolvere un problema. Esempi di algoritmo: Le istruzioni per usare un elettrodomestico Le istruzioni per fare il caffè Le regole per eseguire la divisione tra due numeri Dati iniziali Input Soluzione adottata Risultati attesi Algoritmo Output L’ESECUTORE Gli algoritmi sono espressi mediante un linguaggio e sono realizzati da un esecutore. Deve esistere un esecutore (uomo o macchina) in grado di eseguire ogni operazione. L’esecutore deve terminare il suo lavoro in un numero finito di passi. Nell’elaboratore gli algoritmi per la soluzioni di particolari problemi sono espressi mediante un linguaggio di programmazione. Linguaggio di programmazione = linguaggio formale che l’elaboratore e’ in grado di comprendere. Un programma e’ la descrizione di un algoritmo ed e’ costituito da una sequenza di istruzioni che il calcolatore e’ in grado di comprendere ed eseguire. METODOLOGIA DI LAVORO Risoluzione di un problema Prima Prima fase: fase: 1) 1) Definizione Definizione del del problema problema 2) 2) Descrizione Descrizione dei dei dati dati che che sono sono coinvolti, coinvolti, distinguendo distinguendo quelli quelli che che abbiamo abbiamo aa disposizione disposizione cioè cioè in in ingresso ingresso 3) 3) Descrizione Descrizione dei dei risultati risultati da da ottenere ottenere cioè cioè in in uscita uscita Seconda fase: 1) Definizione delle azioni da intraprendere 2) Definizione dell’esatta sequenza delle azioni da compiere (fasi) per ottenere la soluzione del problema IL DIAGRAMMA A BLOCCHI Il diagramma a blocchi è uno schema grafico; esso permette un visione immediata dell’intero procedimento e dell’ordine di esecuzione delle varie istruzioni. I diagrammi a blocchi sono formati da simboli di forma diversa, ciascuno con un proprio significato; all’interno di ogni simbolo è presente un breve testo sintetico. Per unire fra loro i vari simboli si usano delle frecce. Ingresso e uscita Inizio Leggi base altezza Scrivi area sì condizione no Area =base * altezza condizione Fine Esempio di algoritmo sequenziale Si vuole calcolare il prodotto dei due numeri: num1 e num2. ALGORITMO Prodotto() Leggi(num1) Leggi(num2) prod=Prodotto(num1,num2) Scrivi(prod); UD 1: concetti e ruoli dell'informazione Esempio di algoritmo sequenziale Esempio: Date le misure dei due cateti di un triangolo rettangolo, si vuole calcolare la misura del perimetro del triangolo Dati iniziali sono: Cateto 1 Cateto 2 Risultato finale: perimetro Per il calcolo del perimetro abbiamo bisogno dell’ipotenusa che possiamo calcolare a partire dai cateti (teorema di Pitagora). L’ipotenusa è una variabile di lavoro Per fare in modo che l’esecutore acquisisca i dati possiamo usare le istruzioni del tipo: leggi, acquisisci, accetta. Per fare in modo che l’esecutore comunichi i dati possiamo usare le istruzioni del tipo: scrivi, comunica, mostra. lE sei caratteristiche dELL’ALGORITMO Non Ambiguo Deterministico Finito Generale Riproducibile Esaustivo Collega la caratteristica alla definizione CARATTERISTICA 1. Non Ambiguo 2. Deterministico 3. Finito DEFINIZIONE a) L’algoritmo deve essere utilizzabile per ogni problema della stessa classe. b) L’algoritmo deve coprire tutti i casi possibili. c) Avendo in ingresso gli stessi dati l’algoritmo deve produrre gli stessi risultati. DEFINIZIONE a) L’algoritmo deve essere utilizzabile per ogni problema della stessa classe. d) Ogni istruzione dell’algoritmo a) L’algoritmo deve coprire tutti i casi possibili. 4. Generale deve produrre un risultato a) Avendo in ingresso gli stessi dati l’algoritmo deve produrre gli stessi risultati. osservabile. a) Ogni istruzione dell’algoritmo deve produrre un risultato osservabile. e) Iinterpretabili passi costituenti l’algoritmo a) I passi costituenti l’algoritmo devono essere in modo diretto e univoco dall'esecutore, sia esso umano odevono artificiale. essere interpretabili in a) L'algoritmo deve essere composto da un numero finito e richiedere una 5. Riproducibile modo direttodiepassi univoco quantità finita di dati in ingresso. 6. Esaustivo dall'esecutore, sia esso umano o artificiale. f) L'algoritmo deve essere composto da un numero finito di passi e richiedere una quantità finita di dati in ingresso. soluzioni CARATTERISTICA 1. Non Ambiguo 2. Deterministico 3. Finito 4. Generale 5. Riproducibile 6. Esaustivo DEFINIZIONE 1e a) L’algoritmo deve essere utilizzabile per ogni problema della stessa classe. 2c b) L’algoritmo deve coprire tutti i casi possibili. 3f 4a 5d 6b c) Avendo in ingresso gli stessi dati l’algoritmo deve produrre gli stessi risultati. d) Ogni istruzione dell’algoritmo deve produrre un risultato osservabile. e) I passi costituenti l’algoritmo devono essere interpretabili in modo diretto e univoco dall'esecutore, sia esso umano o artificiale. f) L'algoritmo deve essere composto da un numero finito di passi e richiedere una quantità finita di dati in ingresso. 12 Il ciclo for Nella struttura del ciclo for: azione di inizializzazione condizione di ripetizione corpo del ciclo azione di continuazione Sintassi: for (Inizializzazione; Condizione; Continuazione) Blocco istruzioni fine del for 13 Esempio di uso del ciclo for Sommare separatamente i numeri pari e quelli dispari compresi tra 1 e 100 (codifica in Javascript) var sompari= 0, somdispari = 0; var num; for (num=1; num<=99; num=num+2) { somdispari = somdispari + num; sompari = sompari + num+1; } SITOGRAFIA www.ba.infn.it/~pierro/Didattica/ssis/42A/ferilli/pierro-algoritmo03.ppt www.unisa.it/secure/get/file/prima_parte_introduzione...ppt/id/2241 www.mat.unisi.it/personalpages/simi/computer%20casa/.../informatica.pp