Sommario Problema computazionale Sviluppo software Algoritmi Diagrammi di Flusso; Pseudo Codice Istruzioni Sequenziali, Condizionali, Cicliche; Javascript
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.
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.
Altro esempio L esecuzione della nona di Beethoven: - Abbiamo l orchestra, il direttore ed i musicisti; - Seguiamo lo spartito; - La musica riempie la sala.
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).
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
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
Quindi problema risolutore algoritmo essere umano esecutore calcolatore esecuzione
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
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
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.
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
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!!
Caratteristiche di un algoritmo Formulazione generale la soluzione individuata non deve dipendere solo da valori predefiniti dei dati, cosi che l algoritmo sia utilizzabile nel maggior numero possibile di casi Passi eseguibili univoci e non ambigui 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?
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
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
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