Programmazione 1 - Università degli Studi di Catania

Download Report

Transcript Programmazione 1 - Università degli Studi di Catania

Programmazione 1 Mario Pavone Dipar/mento di Matema/ca ed Informa/ca Università degli Studi di Catania [email protected] hAp://www.dmi.unict.it/mpavone/ Caratteristiche di un algoritmo Sequenza di passi eseguiti in modo sequenziale Azioni eseguibili e non ambigue Determinismo • 
1. 
2. 
– 
Numero finito di passi Terminazione 3. 
4. 
• 
• 
Fatto un passo il successivo è uno ed uno solo ben determinato L’esecuzione deve finire e produrre il risultato in tempo finito Osservazione: la 3 non implica la 4 Esempio di “terminazione” 1. 
2. 
3. 
4. 
Leggi un valore in input a; Leggi un valore in input b; Calcola la somma c di a e b; Scrivi a video c; Esempio di “non terminazione” 1. 
2. 
3. 
4. 
Leggi un valore in input a; Scrivi a video a; Scrivere il numero successivo; Ripetere il passo precedente; Codifica dell’algoritmo
•  Linguaggio naturale
•  Diagramma a blocchi
•  Pseudo codice
•  Linguaggio di programmazione
Diagrammi di flusso
START END I/O PROCESS Inizio Fine Operazioni di ingresso/uscita Elaborazione Sì Predicato No Selezione a due vie SUB-­‐PROCESS So;oprogramma Diagrammi di flusso
Inizio
Leggi
xey
d← x–y
Sì
d>0?
Scrivi
“max è x”
No
Scrivi
“max è y”
Fine
d=0?
No
Sì
Scrivi
“x e y sono
uguali”
Pseudo-­‐codice • 
• 
• 
• 
leggi a e b; c <-­‐ a; count <-­‐ 1; While (b is not 0) do c <-­‐ c+b; count <-­‐ count +1; leggi b; •  c <-­‐ c / count; •  Stampa a video c; Linguaggio di Programmazione
#include <iostream>
using namespace std;
int main () {
cout << “Inserisci due elementi \n”;
int x, y;
cin >> x;
cin >> y;
int d=x-y;
}
if (d>0) cout << “Il max è ” << x << “\n”;
else if (d=0) cout << “Sono uguali” << “\n”;
else cout << “Il max è ” << y << “\n”;
return 1;
Esempio •  Scrivere un algoritmo in grado di calcolare la somma di due numeri interi •  Scrivere un algoritmo che scambi i valori di due variabili •  Scrivere un algoritmo che determini se un numero le;o in input è pari o dispari Variazioni nel flusso di esecuzione •  Ci sono momen/ in cui il flusso di esecuzione deve scegliere tra diverse direzioni •  Ques/ sal; sono subordina/ al verificarsi di una condizione –  che può risultare vera o falsa •  Si parla di istruzioni condizionali. Diagrammi di Flusso •  Istruzioni condizionali Sì No Condizione Sì No Resto=0 ? Istruzione Condizionale: Ripe;zione (o ciclo) •  Si consideri la preparazione del pranzo seguendo una riceAa •  Passo fondamentale: ripetere più volte una stessa operazione Vero FALSO Il pollo è coAo? Rosolare con vino Esempio (diagramma di flusso) •  Scrivere un algoritmo in grado di calcolare la somma di N numeri interi •  Scrivere un algoritmo che lec N numeri res/tuisca in output il max e il min •  Scrivere un algoritmo in grado di calcolare n
2
i
∑
i=0
Considerazioni •  Svantaggi diagrammi di flusso: –  poco pra/ci –  soggec a errori –  Illeggibili (sopraAuAo se di grandi dimensioni) •  Notazione Lineare StruBurata (o pseudocode) –  sequenza istruzioni –  selezione –  iterazione Selezione (o Condizione) Vero FALSO Condizione Blocco 1 if (condizione) then blocco 1 else blocco 2 end_if Blocco 2 NOTA: la clausola else può anche essere omessa! Iterazione (o Ciclo) Falso Vero Condizione Blocco while (condizione) do blocco end_while Teorema Böhm-­‐Jacopini •  I tre costruc fondamentali della NLS sono sufficien/ a descrivere qualunque algoritmo Esempio (pseudocode) •  Scrivere un algoritmo in grado di calcolare la somma di N numeri interi •  Scrivere un algoritmo che lec N numeri res/tuisca in output il max e il min •  Scrivere un algoritmo in grado di calcolare n
∑i
i=0
2
PAUSA!