Sommario • Problema computazionale • Sviluppo software • Algoritmi – Diagrammi di Flusso; – Pseudo Codice • Istruzioni Sequenziali, Condizionali, Cicliche; • Javascript Informatica di Base -- R.Gaeta 1 Il Problema computazionale • È computazionale un problema che da alcuni dati iniziali porta ad un risultato in uscita tramite almeno una sequenza preordinata di passi; • Esempi nella vita pratica si trovano facilmente nell’arte culinaria o nella musica. Informatica di Base -- R.Gaeta 2 Esempi Il Risotto alla Zucca: - Abbiamo gli ingredienti (riso, zucca, olio, prezzemolo, cipolla, sale, etc.) con le giuste quantità; - Seguiamo la ricetta; - Serviamo il piatto a tavola. Informatica di Base -- R.Gaeta 3 Altro esempio L’esecuzione della nona di Beethoven: - Abbiamo l’orchestra, il direttore ed i musicisti; - Seguiamo lo spartito; - La musica riempie la sala. Informatica di Base -- R.Gaeta 4 Ma… • Non è così facile come sembra! • Per scrivere la “sequenza di passi” bisogna essere un bravo cuoco o un bravo compositore (o entrambi, come Rossini); • Anche per sapere “eseguire” bisogna imparare l’arte (bisogna avere un ottimo esecutore). Informatica di Base -- R.Gaeta 5 Il “cuore” dell’informatica • definizione di un particolare problema computazionale • scrittura di un algoritmo che lo risolve • scrittura del programma che traduce i passi dell’algoritmo in termini comprensibili dal computer Informatica di Base -- R.Gaeta 6 Il “cuore” dell’informatica • Ovvero, dato un problema bisogna definire un procedimento (l’algoritmo) che possa essere eseguito automaticamente da un esecutore a partire dai dati in ingresso per risolvere il problema (fornire i risultati in uscita) algoritmo input esecutore output Informatica di Base -- R.Gaeta 7 Quindi… problema risolutore esecutore essere umano algoritmo calcolatore esecuzione Informatica di Base -- R.Gaeta 8 Cosa è un Algoritmo • Un algoritmo (procedimento) è una sequenza finita di passi (azioni) che un esecutore è in grado di eseguire affinché venga risolto (in un tempo finito) un dato problema computazionale. • Ogni passo deve essere eseguibile dall’esecutore e in un tempo finito. • Un algoritmo determina un procedimento sequenziale (un passo dopo l’altro secondo un ordine specificato chiamato flusso di esecuzione) • La cosa difficile è scrivere una sequenza di passi che risolvano il problema computazionale e NON scrivere un programma per il calcolatore Informatica di Base -- R.Gaeta 9 Esecutore di algoritmi • Un esecutore è caratterizzato da – il linguaggio che è in grado di interpretare – l’insieme di azioni che è in grado di compiere – l’insieme delle regole che ad ogni frase corretta del linguaggio (costrutto linguistico) associano le relative azioni da compiere Informatica di Base -- R.Gaeta 10 Caratteristiche di un algoritmo • Tutte le azioni specificate dall’algoritmo devono essere eseguibili dall’esecutore – sono azioni elementari • In caso contrario, si deve scomporre un problema complesso in più sotto-problemi più semplici • Per ogni problema più semplice deve esistere un’istruzione nel linguaggio adottato per la scrittura degli algoritmi la cui esecuzione lo risolve. Informatica di Base -- R.Gaeta 11 Esempio di algoritmo L’esecutore è un essere umano che è solo in grado di premere tasti ed usare il mouse • Accendere il calcolatore • Accendere il monitor • Scrivere il nome utente • Scrivere la password • Premere il tasto invio • Se compare il messaggio di “password scaduta” allora cambiare la password altrimenti accedere al desktop di windows Informatica di Base -- R.Gaeta 12 Esempio: scomposizione in sotto-problemi • Ma l’esecutore sa direttamente eseguire il comando “cambiare la password”? • NO! Abbiamo definito in maniera precisa ed univoca che cosa l’esecutore è in grado di fare per cui dobbiamo scrivere un algoritmo per la risoluzione del problema “cambiare la password” – scrivere una sequenza di almeno sei caratteri – ri-scrivere, per conferma, la stessa sequenza – premere il tasto invio • Per esercizio, avendo ormai esperienza di come si accede all’aula 15, completate l’algoritmo!! Informatica di Base -- R.Gaeta 13 Caratteristiche di un algoritmo • Formulazione generale – • Passi eseguibili univoci e non ambigui – • la soluzione individuata non deve dipendere solo da valori predefiniti dei dati, cosi che l’algoritmo sia utilizzabile nel maggior numero possibile di casi “abbastanza”, “a volontà”, “un pochetto”, non sono adatti ad esecutori come i calcolatori. Determinismo – una volta fatto un passo, in maniera univoca quello successivo può essere determinato dall’esecutore anche se ci sono alternative • Finitezza del numero di passi • Terminazione – • prima o poi l’esecuzione dell’algoritmo deve terminare La finitezza del numero dei passi implica la terminazione? Informatica di Base -- R.Gaeta 14 Caratteristiche di un algoritmo Ogni passo (azione) deve • terminare entro un intervallo finito di tempo • produrre un effetto osservabile • produrre lo stesso effetto ogni volta che viene eseguito a partire dalle stesse condizioni iniziali Informatica di Base -- R.Gaeta 15 Elementi degli algoritmi • Oggetti: le entità su cui opera l’algoritmo – Dati iniziali del problema, informazioni ausiliarie, risultati parziali e finali – Le informazioni sono dette dati (anche i risultati parziali e finali) e possono essere variabili o costanti • Operazioni: Interventi da effettuare sui dati – Calcoli, confronti, ricopiature,acquisizioni, emissioni, ecc. • Flusso di controllo: l’indicazione delle possibili successioni dei passi dell’algoritmo – La correttezza dei risultati dipende non solo dalla corretta esecuzione delle singole operazioni, ma anche dalla corretta sequenza con cui sono eseguite Informatica di Base -- R.Gaeta 16 Flusso di controllo e di esecuzione • Flusso di controllo: la descrizione a priori di tutte le possibili sequenze nell’esecuzione dei passi dell’algoritmo, in particolare di operazioni in alternativa e di operazioni da ripetere più volte ciclicamente • Flusso di esecuzione: la sequenza di operazioni effettivamente seguita durante una particolare esecuzione dell’algoritmo e che dipende dai particolari valori che i dati assumono in quell’esecuzione Informatica di Base -- R.Gaeta 17