B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda...
Transcript of B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda...
![Page 1: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/1.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 1
FONDAMENTI DI INFORMATICA
Prof. PIER LUCA MONTESSOROProf. ELIO TOPPANO
Facoltà di IngegneriaUniversità degli Studi di Udine
Introduzione allaprogrammazione strutturata
![Page 2: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/2.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 2
Questo insieme di trasparenze (detto nel seguito slide) è protetto dalle leggi sul copyright e dalle disposizioni dei trattati internazionali. Il titolo ed i copyright relativi alle slides (iviinclusi, ma non limitatamente, ogni immagine, fotografia, animazione, video, audio, musica e testo) sono di proprietà degli autori prof. Pier Luca Montessoro e ing. ElioToppano, Università degli Studi di Udine.Le slide possono essere riprodotte ed utilizzate liberamente dagli istituti di ricerca, scolastici ed universitari afferenti al Ministero della Pubblica Istruzione e al Ministerodell’Università e Ricerca Scientifica e Tecnologica, per scopi istituzionali, non a fine di lucro. In tal caso non è richiesta alcuna autorizzazione.Ogni altro utilizzo o riproduzione (ivi incluse, ma non limitatamente, le riproduzioni susupporti magnetici, su reti di calcolatori e stampe) in toto o in parte è vietata, se non esplicitamente autorizzata per iscritto, a priori, da parte degli autori. L’informazione contenuta in queste slide è ritenuta essere accurata alla data dellapubblicazione. Essa è fornita per scopi meramente didattici e non per essere utilizzata in progetti di impianti, prodotti, reti, ecc. In ogni caso essa è soggetta a cambiamenti senzapreavviso. L’autore non assume alcuna responsabilità per il contenuto di queste slide (iviincluse, ma non limitatamente, la correttezza, completezza, applicabilità, aggiornamento dell’informazione). In ogni caso non può essere dichiarata conformità all’informazione contenuta in questeslide.In ogni caso questa nota di copyright e il suo richiamo in calce ad ogni slide non devonomai essere rimossi e devono essere riportati anche in utilizzi parziali.
Nota di Copyright
![Page 3: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/3.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 3
Lo scenario di riferimento
problemaspecifico
conoscenzadel dominio
utente
programmatore
espertoALGORITMO
PROGRAMMA
SISTEMADI CALCOLO
RISULTATO
DATI
![Page 4: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/4.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 4
Metodi risolutivi e algoritmi• Metodo risolutivo:
– Insieme di (oper)azioni (algebriche, logiche, materiali, ecc.) che, eseguite ordinatamente, permettono di ottenere il risultato voluto a partire dalle informazioni a nostra disposizione (dati di ingresso)
• Algoritmo:– metodo risolutivo che soddisfa le proprietà di:
ESEGUIBILITÀ, NON-AMBIGUITÀ, FINITEZZA
![Page 5: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/5.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 5
Problemi, algoritmi e dati
problema P [X,Y] algoritmo A [X,Y]
istanza P [X,Y] risultato Y:soluzione di P [X,Y]
![Page 6: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/6.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 6
Problemi
risolubili
non risolubili
Es.: calcolare il massimocomun divisore di 132 e 24
Es.: calcolare la funzione:
g(n)=
1 se nell’espansionedecimale di π ci sonon 7 consecutivi
0 altrimenti
![Page 7: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/7.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 7
Esecutori ed eseguibilità
• L’algoritmo deve essere espresso in termini di (oper)azioni che l’esecutore èin grado di compiere!!!
![Page 8: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/8.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 8
Linguaggio di programmazione
• Insieme di regole per la descrizioneformale di un algoritmo eseguibile da un calcolatore– lessico: insieme dei termini disponibili– sintassi: forma delle frasi– semantica: significato delle frasi
![Page 9: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/9.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 9
Programma
• Descrizione di un algoritmo in un linguaggio di programmazione
• È composto da un numero finito di istruzioni
• Ogni istruzione descrive una(oper)azione
![Page 10: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/10.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 10
Esempioproblema specifico MCD (132, 24)
identificazione (esperto)
problema tipo MCD (X, Y); X, Y ∈ N+
analisi e risoluzione (esperto)
algoritmo algoritmo di Euclideimplementazione (programmatore)
programmaint mcd (int n1, int n2){
while (n1 != n2)if (n1 < n2) n2 = n2 - n1;else n1 = n1 - n2;
return n1;}
esecuzione(calcolatore)
risultato
dati
12132, 24
![Page 11: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/11.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 11
Progetto di un programma
• Specifica dell’algoritmo– specifica dei DATI (Tipi di Dati Astratti)– specifica della STRUTTURA DI
CONTROLLO (diagrammi di flussomediante schemi a blocchi)
• Implementazione– traduzione dei DATI (Tipi di Dati Concreti)– traduzione della STRUTTURA DI
CONTROLLO (assegnamento, meccanismidi controllo)
![Page 12: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/12.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 12
Schemi a blocchi
• Blocco funzionale
• Blocco di decisione
• Archi
condizioneY N
NO !
![Page 13: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/13.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 13
Schemi a blocchi strutturati
• Impongono severe restrizioni nellacostruzione dei diagrammi di flusso
• Si basano su poche strutture di base con un solo ingresso e una sola uscita
• Tali strutture sono sufficienti per descrivere qualsiasi algoritmo risolutoredi un problema risolubile (teorema di Böhm-Jacopini)
![Page 14: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/14.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 14
Sequenza
![Page 15: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/15.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 15
If
Y N
![Page 16: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/16.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 16
If - else
Y N
![Page 17: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/17.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 17
Ciclo while
Y
N
![Page 18: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/18.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 18
Ciclo do - while (o repeat)
Y N
![Page 19: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/19.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 19
Sviluppo “top-down” dei programmi
• Scomposizioni successive in sottoproblemi
• Sostituzione nel diagramma di flussodei blocchi con costrutti via via di maggior dettaglio
Y N
Y N
![Page 20: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/20.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 20
Esempio
• Calcolo diy = xn leggi x, n
ripeti n volte y ← y * x
stampa y
start
inizializza y a 1
end
![Page 21: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/21.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 21
Esempio
leggi x, n
ripeti n volte y ← y * x
stampa y
start
inizializza y a 1
end
input x
input n
![Page 22: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/22.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 22
Esempio
leggi x, n
ripeti n volte y ← y * x
stampa y
start
inizializza y a 1
end
y ← 1
![Page 23: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/23.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 23
Esempio
leggi x, n
ripeti n volte y ← y * x
stampa y
start
inizializza y a 1
end
n ≠ 0?
Y
N
y ← y * x
n ← n - 1
![Page 24: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/24.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 24
Esempio
leggi x, n
ripeti n volte y ← y * x
stampa y
start
inizializza y a 1
end
output y
![Page 25: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/25.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 25
Funziona?
• Verifica mediante traccia dellacomputazione
• Es. x = 3, n = 2
![Page 26: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/26.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 26
Funziona?
n ≠ 0?
Y
N
y ← y * x
n ← n - 1
A
B
C
blocco condizione n x y
A V 2 3 1B - 2 3 3C - 1 3 3
A V 1 3 3B - 1 3 9C - 0 3 9
A F 0 3 9
![Page 27: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/27.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 27
Dai diagrammi di flusso al C
{istruzioni;
}
istruzioni
![Page 28: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/28.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 28
Dai diagrammi di flusso al C
if (condizione){
istruzioni;}
istruzioni
condizione?Y N
![Page 29: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/29.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 29
Dai diagrammi di flusso al C
if (condizione){
istruzioni1;}else{
istruzioni2;}
Y N
istruzioni1 istruzioni2
condizione?
![Page 30: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/30.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 30
Dai diagrammi di flusso al C
while (condizione){
istruzioni;}
condizione?
Y
N
istruzioni
![Page 31: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/31.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 31
Dai diagrammi di flusso al C
do{
istruzioni;} while (condizione);
condizione?Y N
istruzioni
![Page 32: B00 introduzione alla programmazione strutturata · Introduzione alla programmazione ... (si veda la nota di copyright alla slide n. 2) 13 Schemi a blocchi ... di copyright alla slide](https://reader031.fdocuments.net/reader031/viewer/2022011808/5c68477c09d3f2ff5a8d46a3/html5/thumbnails/32.jpg)
Fondamenti di Informatica - La programmazione strutturata
© 2001 Pier Luca Montessoro, Elio Toppano (si veda la nota di copyright alla slide n. 2) 32
Esempio
• Calcolo diy = xn
input x;input n;
y <- 1;while (n ≠ 0){
y <- y * x;n <- n - 1;
}
output y;