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!