G. Ascia Sistemi di Elaborazione delle Informazioni Algoritmi e Programmi 1 Risoluzione di un problema G. Ascia Il procedimento di soluzione di un problema dovrebbe essere caratterizzato da: Î analisi del problema e identificazione di una soluzione da parte nostra; Î descrizione della soluzione per l’esecutore; Î interpretazione della soluzione da parte dell’esecutore; Î attuazione del metodo risolutivo da parte dell’esecutore; 2 Fasi di risoluzione di un problema G. Ascia Problema Analisi Soggetto 1 Soluzione Stesura di una descrizione Descrizione Interpretazione Soggetto 2 Descrizione interpretata Esecuzione Soluzione 3 Esempi di soluzione di un problema Ricetta per cucinare gli spaghetti G. Ascia ÎMetti l’acqua nella pentola ÎFai bollire l’acqua ÎMetti la pasta nell’acqua ÎAggiungi un pò di sale ÎAttendi 6 minuti ÎScola la pasta 4 Esempi di soluzioni G. Ascia Ricerca utente in un elenco telefonico ÎDati 9 Un insieme ordinato di coppie <nome, numero> 9 Un nome X da ricercare Î1) Leggi la prima coppia <nome, numero> Î2) Se non hai oltrepassato l'ultima coppia Allora: 9 Se nome = X allora il numero di telefono di X è quello letto; 9 Altrimenti leggi la prossima coppia e vai al passo 2) ÎAltrimenti 9 Il nome X cercato non è nell'elenco 5 Proprità della soluzione G. Ascia La soluzione deve: Îessere descritta in una forma interpretabile dall’esecutore; Îspecificare l’esecuzione di azioni che egli è effettivamente in grado di ottenere. Ogni esecutore è caratterizzabile in base alle sue capacità di : Î interpretazione (linguaggio); Î esecuzione (istruzioni che è in grado di eseguire). 6 Algoritmo G. Ascia Un algoritmo è un metodo per la soluzione di un problema adatto ad essere implementato sotto forma di programma Un algoritmo si puo` definire come un procedimento che consente di ottenere un risultato atteso eseguendo, in un determinato ordine, un insieme di passi semplici corrispondenti ad azioni scelte solitamente da un insieme finito 7 Proprietà degli Algoritmi L'algoritmo è caratterizzato da G. Ascia ÎFinitezza: Composto da un numero finito di passi elementari. Le operazioni sono eseguite un numero finito di volte ÎNon ambiguità: I risultati non variano in funzione della macchina/persona che esegue l'algoritmo (deterministico) ÎRealizzabilità: Deve essere eseguibile con le risorse a disposizione 8 Esempi di Algoritmi Verifica se un numero è pari o dispari G. Ascia ÎPrendi il numero ÎCalcola il resto della divisione intera del numero per 2 ÎSe il resto è zero 9 Allora il numero è pari 9 Altrimenti il numero è dispari 9 Algoritmi e programmi G. Ascia Un linguaggio formale definito per un computer si chiama Linguaggio di Programmazione Un Algoritmo espresso attraverso un Linguaggio di Programmazione si chiama Programma 10 Processo di sviluppo di un programma G. Ascia Problema Analisi Soluzione informale Formalizzazione Sistema Informatico: Strumenti di supporto evoluti (CASE) Soluzione Formale Sistema Informatico: Ambiente di sviluppo tradizionale Algoritmo Programmazione Programma (alto livello) Traduzione Esecutore del Linguaggio Macchina (HW) Esecutore del Linguaggio ad alto livello Programma (macchina) Esecuzione 11 Rappresentare un Algoritmo Rappresentazione grafica G. Ascia ÎDiagramma di flusso (noto anche come diagramma a blocchi o flow-chart) Rappresentazione testuale ÎNotazione Lineare Strutturata (o pseudocode) 12 Operazioni di Base G. Ascia Le operazioni primarie sono ÎTrasferimento di informazioni (istruzioni di I/O) 9 Lettura dati, scrittura risultati, visualizzazione dati intermedi ÎEsecuzione di calcoli (valutazione espressioni) ÎIstruzioni di assegnamento ÎStrutture di controllo (che modificano il flusso sequenziale di esecuzione delle operazioni) 13 Simboli Convenzionali G. Ascia ingresso/uscita inizializzazione documento Elaborazione inizio/fine input manuale elab. predefinita connessioni disco decisione mem. sequenziale 14 Istruzioni di I/O G. Ascia Lettura di dati in ingresso (input) Scrittura dei risultati in uscita (output) Diagramma a blocchi Pseudocodice leggi A leggi A scrivi B scrivi B 15 Istruzione di Assegnamento G. Ascia Concetto di variabile ÎIdentificata da un’etichetta/identificatore simbolico ÎPuò essere comodo pensare alla variabile come ad un contenitore in cui possiamo memorizzare o reperire dei dati utilizzati durante il calcolo ÎL’istruzione di assegnamento permette di assegnare un valore ad una variabile A=5 Alla variabile A viene assegnato il valore 5 16 Istruzione di Assegnamento G. Ascia Inizializzazione Î All’inizio di un algoritmo una variabile non ha alcun valore Î Non ha quindi senso utilizzarla in una espressione (è un errore!) Î Essa deve essere inizializzata 9 O esplicitamente mediante un assegnamento 9 Oppure mediante una operazione di lettura START START B=0 leggi B A=B+3 A=B+3 CORRETTO CORRETTO START A=B+3 ERRORE B non è inizializzata 17 Istruzione di Assegnamento G. Ascia E’ stato usato il simbolo = per indicare l’istruzione di assegnamento Alcuni testi/autori indicano invece il simbolo ← (per evitare confusione con l’operatore di uguaglianza) Dato il seguente frammento di codice … A=5 A=A+1 Cosa fa quell’istruzione? L’esecutore esegue i seguenti passi Î Prima valuta l’espressione a destra, cioè calcola il valore di A+1 che vale 6 Î Dopo assegna tale valore alla variabile a sinistra, cioè ad A Î Alla fine dell’esecuzione di quella istruzione quindi, A vale 6 18 Valutazione delle Espressioni G. Ascia L’esecutore è in grado di valutare espressioni aritmetiche Diagramma a blocchi Pseudo-codice B = 5*(82-35)/7 B = 5*(82-35)/7 A = (B+34)/B*2 A = (B+34)/B*2 19