problema: dato un insieme di numeri, compresi tra 1 e 100

problema: dato un insieme di numeri, compresi tra 1 e 100,
stampare tutti i numeri compresi tra max e min dell’insieme
e non presenti nell’insieme stesso
formalizzazione
dato I C {1, 2, 3, …, 99, 100}
costruire J={n|n∈N, min(I)<n<max(I), n∉I}
esempio:
I={5, 7, 2} → J={3, 4, 6}
decomposizione
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
1
decomposizione
• leggere I e memorizzarlo
• determinare minimo e massimo di I
• costruire J
• stampare J
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
2
Progettazione strutturata
#include …
…
int main ()
{ _______
_______
_______
_______
_______
_______
_______
_______
_______
_______
_______
_______
_______
_______
_______
_______
_______
_______
_______
leggi I
min-max I
costruisci J
stampa J
}
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
3
Progettazione strutturata
dichiarazione leggi_I
________
________
________
________
dichiarazione
costruisci_J
________
________
________
________
dichiarazione
min-max_I
________
________
________
________
dichiarazione
stampa_J
________
________
________
________
int main ()
{ "attiva" leggi_I
"attiva" min-max_I
"attiva" costruisci_J
"attiva" stampa_J
}
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
4
Progettazione strutturata
VANTAGGI
• realizzazione modulare dei programmi
• riuso
• leggibilità
manutenibilità
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
5
Programmazione strutturata
Un programma si dice strutturato se il flusso del controllo
risulta evidente dalla struttura sintattica del testo del programma
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
6
Progettazione strutturata
Definizione di funzione
SINTASSI:
tipo nome ()
{comando;
…
comando;}
INTESTAZIONE
CORPO
int, double, char, …
void
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
7
Progettazione strutturata
REGOLE SEMANTICHE:
• (dalla sintassi)
una funzione ha un tipo
oppure è void
• una funzione con tipo deve restituire un
valore di quel tipo mediante una istruzione
return espressione;
• una funzione deve essere
dichiarata prima di essere "usata"
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
void nome ()
{comando;
…
comando;}
tipo nome ()
{comando;
…
return espressione;
…
comando;}
8
Progettazione strutturata
A = { …, (nome, oggetto), ….}
• cella di memoria
• valore costante
...
• riferimento a funzione
...
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
9
Progettazione strutturata
Chiamata di
funzione
SINTASSI
nome_fun ()
{comando;
…
comando;}
CORPO
SEMANTICA
la sua chiamata corrisponde all’esecuzione del blocco
che costituisce il corpo della funzione;
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
10
Progettazione strutturata
MA
1. se la funzione è "void":
la sua chiamata è un comando;
2. se la funzione ha un tipo:
la sua chiamata restituisce un valore (del tipo specificato)
mediante l’istruzione "return";
quindi la sua chiamata è una espressione oppure è
un termine di una espressione;
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
11
1. se la funzione è "void":
if (espressione) comando;
nome_fun
{comando;();
…
comando;};
2. se la funzione ha un tipo:
int a, b, c;
…
expr () ;
c = a + b;
CORPO
int expr ()
{comando;
…
return espressione;
…
comando;}
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
12
Abbiamo visto:
• Concetto di ambiente:
ambiente attivo, stato
annidamento e mascheramento
• Unità funzionali:
sintassi e semantica
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
13
A = { …, (nome, oggetto), ….}
• cella di memoria
• valore costante
...
• riferimento a funzione
...
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
14
int y;
void P()
{ int x;
.
x=3;
.
}
int main ()
{
.
P();
.
.
P();
{ int x;
.
x=3;
.
}
.
.
}
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
{ int
x;
.
x=3;
.
}
15
Ambiente globale: {(a, 8), (x, l1), (P,→)}
const int a=8;
int x;
x/ int
l
1
void P()
{ const int a=3; AP: {(a, 3), (x, l1), (P,→)}
.
x=a-1;
.
}
int main ()
{
.
P();
x=x-a;
.
}
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
16
const int a=8;
int x;
l1 -6
2 x/ int
void P()
{ const int a=3;
.
x=a-1;
.
}
int main ()ambiente attivo:Ag={(a, 8), (x, l1), (P,→)}
{
{ const int a=3; AP: {(a, 3), (x, l1)}
.
.
P();
x=a-1;
x=x-a; ambiente attivo:A
. g={(a, 8), (x, l1), (P,→)}
.
}
}
Fondamenti di Informatica
Prof. Vittoria de Nitto Personè
17