INFORMATICA Algoritmi come formalizzazione della risoluzione di un problema di Roberta Molinari Algoritmi come formalizzazione della risoluzione di un problema Algoritmo Origine del termine Al-Khwarizmi: nato nel 780 circa a Baghdad . È un importante matematico Arabo. Autore dell' al-Kitāb al-mukhtaṣar fī ḥisāb al-ǧabr wa almuqābala, il primo libro che tratta soluzioni sistematiche di equazioni lineari e di secondo grado. Viene considerato pertanto il padre dell’algebra. Il libro Algoritmi de numero Indorum, traduzione latina di uno dei suoi più importanti studi sul sistema di numerazione indiano, introdusse la notazione posizionale e il numero zero nel mondo occidentale nel XII secolo. La parola algoritmo derivano da Algoritmi, la latinizzazione del suo nome da parte del matematico Leonardo Fibonacci 2 Algoritmi come formalizzazione della risoluzione di un problema Cos’è un algoritmo Sequenza finita di passi comprensibili da un esecutore (che può anche essere una macchina) che descrive come risolvere una data classe di problemi utilizzando dati iniziali e pervenendo a dei risultati finali Esempi: • Le istruzioni per registrare i programmi con il videoregistratore • Calcolare il denominatore comune di frazioni 3 Algoritmi come formalizzazione della risoluzione di un problema Esempi Il problema dei secchi Si hanno due secchi con capacità rispettivamente di 3 e 4 litri. Determinare le operazioni necessarie per far si che il primo secchio (da 3 litri) sia riempito con 2 litri. Possiamo agire sui due secchi attraverso le seguenti operazioni : - riempire completamente un secchio - svuotarlo completamente - travasare una certa quantità di liquido da un secchio all’altro 4L 3L 4 Algoritmi come formalizzazione della risoluzione di un problema Esempi Prestito libri in biblioteca La biblioteca contiene un certo numero di scaffali; Ogni scaffale contiene un certo numero di libri che non vengono spostati quando un libro è estratto; La biblioteca è dotata di schedario. Le schede sono poste in ordine alfabetico per autore: a parità di primo autore per secondo e così via. A parità di autori le schede sono in ordine per titolo 5 Algoritmi come formalizzazione della risoluzione di un problema Esempi Prestito libri in biblioteca: soluzione 1. Si cerca la scheda del libro nello schedario; 1. Trovata questa, si segnino su un foglietto numero di scaffale e posizione del libro; 1. Si ricerca lo scaffale indicato; 1. Individuato lo scaffale si accede alla posizione del libro, lo si preleva e, se richiesto, si scrive sulla scheda data del prestito e nome di chi prende in prestito 6 Algoritmi come formalizzazione della risoluzione di un problema Esempi Prestito libri in biblioteca: soluzione Il passo 1, a sua volta, può essere esploso nella seguente sottoprocedura: 1.1 Si esamini la prima scheda dello schedario; 1.2 Se nome dell’autore e titolo coincidono con quello ricercato, la ricerca è conclusa: altrimenti si passi alla scheda successiva; 1.3 Si proceda di scheda in scheda fino a trovare la scheda cercata; se vengono esaurite le schede, la ricerca è conclusa in modo infruttuoso (il libro cercato non è nella biblioteca). 7 Algoritmi come formalizzazione della risoluzione di un problema L’esecutore Un esecutore è caratterizzato da tre elementi: 1. L’insieme delle operazioni che può compiere 1. L’insieme delle istruzioni che capisce (sintassi del linguaggio) 1. Come sono associate le operazioni alle istruzioni che riconosce (semantica del linguaggio) es. come associare le istruzioni contenute nell’algoritmo alle operazioni che sa eseguire 8 Algoritmi come formalizzazione della risoluzione di un problema Rappresentazione degli algoritmi Se l’esecutore è un essere umano per rappresentare gli algoritmi si utilizza: • Linguaggio sintetico e intuitivo • Codifica in linguaggi informali o semi-formali Se l’esecutore è una macchina si utilizza: • Linguaggio preciso (non ambiguo) ed eseguibile • Codifica in linguaggi comprensibili dagli esecutori automatici • gli algoritmi diventano programmi 9 Algoritmi come formalizzazione della risoluzione di un problema L’algoritmo Definizione Un algoritmo è una sequenza di passi elementari per la risoluzione di un problema… Dati in ingresso Algoritmo Risultati in uscita … è una serie di azioni (istruzioni) da eseguire sui dati iniziali del problema per ottenere i dati finali. 10 Algoritmi come formalizzazione della risoluzione di un problema L’algoritmo Caratteristiche Un algoritmo deve essere: ✔ comprensibile (per l’esecutore) ✔ non ambiguo (interpretabile in modo univoco) ✔ finito (deve terminare in un tempo finito) ✔ generale (deve risolvere tutti i problemi della stessa categoria) ✔ dettagliato (ogni passo deve corrispondere un’istruzione elementare per l’esecutore) ✔ deterministico (a partire dagli stessi dati deve produrre gli stessi risultati) ✔ completo (considerare tutti i possibili casi) ✔ osservabile nei risultati 11 Algoritmi come formalizzazione della risoluzione di un problema L’algoritmo I dati I dati sono gli oggetti su cui opera l’algoritmo. Si definiscono in termini di: ✔ Nome: identificatore (a cui fare riferimento) ✔ Tipo: insieme dei possibili valori che possono essere assunti (caratteri, numero, data,…) ✔ Valore: valore attualmente assunto 12 Algoritmi come formalizzazione della risoluzione di un problema I dati classificazione Possiamo distinguere: • le costanti (il loro valore non si modifica) • le variabili (il loro valore si può modificare) In base all’utilizzo si distinguono le variabili di: • Input: si forniscono all’esecutore dell’algoritmo • Lavoro: servono all’esecutore per l’elaborazione, non sono né di input né di output • Output: sono usate dall’esecutore per fornire i risultati 13 Algoritmi come formalizzazione della risoluzione di un problema Metodo di risoluzione dei problemi Lettura del testo del problema (cosa si vuole risolvere) Analisi del problema Analisi dei dati (quali dati si vogliono usare, quali sono gli obiettivi da raggiungere) (input, output, di lavoro) Sviluppo dell'algoritmo (definire le istruzioni che operano sui dati in modo tale che a partire dai dati iniziali otteniamo i dati finali) Test (per verificare correttezza) Individuazione applicazioni (possibili estensioni, generalizzazioni) 14 Algoritmi come formalizzazione della risoluzione di un problema Metodo di risoluzione dei problemi L’algoritmo Analisi del problema (obiettivi) Stesura dell’algoritmo Test F Corretto? V Utilizzo 15 Algoritmi come formalizzazione della risoluzione di un problema Diagrammi di flusso Tipi di istruzioni Istruzione di assegnamento: assegnamento x= y+1 Alla variabile x viene assegnato il valore dell’espressione di destra (per es. se y vale 4 x varrà 5). 4 Y 4+1 X 5 È anche possibile scrivere x=x+1 5+1 X in cui a x è assegnato il suo successivo (è corretto sintatticamente, ma mi devo assicurare che x abbia un valore iniziale). 16 Algoritmi come formalizzazione della risoluzione di un problema Diagrammi di flusso Tipi di istruzioni Istruzione di Input permette di assegnare dei valori alle variabili di input. X Istruzione di Output permette di assegnare dei valori alle variabili di output e di presentarle come risultato. “Il risultato è” & Y 17 Algoritmi come formalizzazione della risoluzione di un problema Diagrammi di flusso Tipi di istruzioni Istruzione condizionale o di selezione permette di variare la sequenzialità dell’algoritmo al verificarsi di certe condizioni V Istruz THEN IF cond F V Istruz THEN F IF cond Istruz ELSE 18 Algoritmi come formalizzazione della risoluzione di un problema Esercizi Supponendo di dover risolvere il problema: dalla stazione di Cuneo devo recarmi all’Albergo Principe, individuare i dati di input, quelli di output ed eventuali variabili di lavoro. Realizzare l’algoritmo che letto il prezzo unitario di un prodotto e la quantità calcoli l’importo complessivo. Individuare quale problema risolve il seguente algoritmo: inizio leggi x a:=2*x b:=x*x c:=a+b scrivi c fine 19 Algoritmi come formalizzazione della risoluzione di un problema Esercizi ✔ Un ragazzo ha deciso che se alla televisione questa sera viene trasmessa una partita di calcio, resterà a casa a guardarla altrimenti andrà al cinema. Realizzarne l’algoritmo. ✔ Realizzare l’algoritmo che ricevute in input due variabili ne scambi il contenuto e ne mostra il valore finale (per es. se A=10 e B=2 dovrò poi avere in A 2 e in B 10) ✔ Realizzare l’algoritmo che letti due numeri diversi li visualizzi in ordine crescente. ✔ Realizzare l’algoritmo che letti 2 numeri restituisca il maggiore o mi dica che sono uguali. 20