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