Lezione 11 - Dipartimento di Informatica

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