1) La PROGRAMMAZIONE di un calcolatore elettronico
Definizione di “Programma”: insieme di istruzioni eseguite in sequenza, che
elaborano dei dati in ingresso per ottenere dei risultati in uscita, in modo da
risolvere una certa CLASSE di problemi.
Problema risolto con un elaboratore elettronico
un problema può essere risolto con un elaboratore elettronico opportunamente
programmato. Occorre cioè un programma che dica all’elaboratore come
manipolare i dati forniti in ingresso per calcolare la soluzione del problema.
Vengono quindi prodotti dei risultati che devono essere visualizzati o stampati in
uscita, per essere visibili all’utente.
1
2) Come passare da un PROBLEMA ad un PROGRAMMA
Data la traccia di un problema, per realizzare il relativo programma occorre
manipolare il problema in 3 fasi:
1. ANALISI DEL PROBLEMA
1. Individuare i dati in ingresso (in questo caso i 3 voti S,O,P);
2. Definire i valori ammessi per i dati in ingresso (in questo caso, essendo dei
voti, S,O,P sono valori compresi tra 0 e 10. Per esempio S=13 è errato!
3. Individuare i dati in uscita (in questo caso M)
4. Stabilire le relazioni tra ingressi e uscite (in questo caso M=(S+O+P)/3
2. SVILUPPO DELL’ALGORITMO (vedi definizione alla pagina successiva)
1. Inizio
2. Lettura dati in ingresso
3. Controllo dati inseriti (se rispettano i valori ammessi);
4. Calcolo dei risultati;
5. Stampa dei risultati in uscita (a video o su carta);
6. Fine;
3. CREAZIONE DEL DIAGRAMMA DI FLUSSO;
1. Rappresentazione grafica dell’algoritmo, vedi pagina successiva
2
3) Algoritmo e diagramma di flusso
Definizione di “ALGORITMO”: è una serie di passi che, eseguiti in sequenza, elaborano
dei dati in ingresso per ottenere dei risultati in uscita, in modo da risolvere una certa
CLASSE di problemi.
Tale definizione è molto simile a quella di “PROGRAMMA”, la differenza consiste nel fatto
che un PROGRAMMA viene scritto in un determinato linguaggio di programmazione
(es. Pascal, Basic, C++, ecc. ecc.), mentre un algoritmo è una serie di passi scritti in italiano;
Definizione di “DIAGRAMMA DI FLUSSO”:è una rappresentazione grafica di un algoritmo,
Formato da simboli la cui forma dipende dal tipo di azione descritta. I simboli sono uniti
tra loro da frecce che rappresentano l’ordine di esecuzione delle istruzioni dell’allgoritmo.
SIMBOLI USATI NEI DIAGRAMMI DI FLUSSO:
INIZIO/FINE DEL DIAGRAMMA
INGRESSO DATI / USCITA DATI
AZIONE (OPERAZIONE MATEMATICA O ALTRO)
V
F
CONDIZIONE (CONTROLLA SE UNA CONDIZIONE è VERA o
FALSA, il programma prosegue lungo la relativa direzione )
3
4) Esempio di passaggio da PROBLEMA a PROGRAMMA
Es.1 )
Problema: calcolare la media M di tre voti S, O, P (scritto, orale e pratico)
Realizzare un programma che consenta di risolvere il problema usando un
elaboratore elettronico.
1. ANALISI DEL PROBLEMA
1. Dati in ingresso : S,O,P
2. Valori ammessi per i dati in ingresso: essendo dei voti, S,O,P devono essere
compresi tra 0 e 10. Per esempio S=13 è errato ed il programma deve
accorgersene;
3. Dati in uscita : M (avendo già controllato i dati in ingresso, non occorre il
controllo anche su quelli di uscita);
4. Relazioni tra ingressi e uscite : M=(S+O+P)/3;
Una volta analizzato il problema, possiamo passare alla seconda fase, la creazione
dell’algoritmo risolutore, formato da una serie di passi scritti linguaggio comune (es.
in italiano); se il problema è molto complesso il numero di passi di un algoritmo
diventa molto grande ed è difficoltoso da comprendere. Il diagramma di flusso è una
descrizione grafica che risulta più facile da comprendere anche in caso di algoritmi
molto complessi;
4
5) Seconda fase: ALGORITMO RISOLUTORE
2. ALGORITMO RISOLUTORE
1. Inizio;
2. Inserire voto scritto S;
3. Se S<0 oppure S>10 ritorna al punto 2;
4. Inserire voto orale O;
5. Se O<0 oppure O>10 ritorna al punto 4;
6. Inserire voto pratico P;
7. Se P<0 oppure P>10 ritorna al punto 6;
8. SOMMA=S+O+P;
9. M=SOMMA/3;
10. Stampa sullo schermo il risultato M;
11. Fine;
Gli algoritmi cominciano sempre con la istruzione
di INIZIO e terminano con FINE. È un modo per
indicare al computer che sta cominciando e
finendo un programma. Ogni volta che si avvia
un programma, il calcolatore prepara la memoria
RAM riservando alle variabili S O e P degli spazi
dove memorizzare i valori numerici inseriti dall’utente
5
6) terza fase: Diagramma di flusso
3. Diagramma di flusso
Viene ricavato dall’algoritmo, ed offre una visione
grafica delle operazioni svolte dal calcolatore per
risolvere il problema. Si nota, ad esempio, che le
istruzioni 2 e 3 leggono il voto S, lo
controllano e se i valore è minore di 0 o maggiore
di 10, si ha un errore che riporta il programma al punto
2. Cioè si chiede all’utente di reinserire il valore di S in
quanto quello appena inserito non è ammesso.
Finché l’utente non inserisce un valore ammesso, il
programma non prosegue, ma richiede continuamente
un valore di S corretto. Se il valore è giusto
si va al blocco successivo, fino a calcolare e stampare
il risultato cioè la media dei tre voti. Questo programma
può essere usato per calcolare la media di ogni alunno,
quindi uno stesso programma è utilizzato per calcolare
le medie di più alunni, basta eseguirlo nuovamente
inserendo i voti del nuovo alunno.
inizio
Inserire S
V
S<0 o
S>10
F
Inserire O
V
O<0
o
O>10
F
Inserire P
V
P<0 o
P>10
F
SOMMA=S+O+P
M=SOMMA/3
Inserire S
fine
6
7) Problema: somma di due numeri positivi;
Problema: calcolare la somma S di due numeri A
e B controllando che siano entrambi positivi.
1. ANALISI DEL PROBLEMA:
1. dati in ingresso (A e B);
2. Valori ammessi (A>0, B>0);
3. Dati in uscita ( S );
4. Relazione ingresso/uscita: S=A+B;
2. ALGORITMO:
1. Inizio
2. Inserire A;
3. Se A<0 torna al punto 2;
4. Inserire B;
5. Se B<0 torna al punto 4;
6. S=A+B;
7. Stampa a video S;
8. Fine;
3. DIAGRAMMA DI
FLUSSO
inizio
Inserire A
V
A<0
F
Inserire B
V
B<0
F
S=A+B
Stampa S
fine
7
8) Problema: Rettangolo;
3. DIAGRAMMA DI
FLUSSO
Problema: calcolare l’area A e il perimetro 2P conoscendo
La base B e l’altezza H, controllando che siano positivi.
inizio
1. ANALISI DEL PROBLEMA:
1. dati in ingresso (B e H);
2. Valori ammessi (B>0, H>0);
3. Dati in uscita ( A, 2P );
4. Relazione ingresso/uscita: A=B+H, 2P=2*(B+H)
2. ALGORITMO:
1. Inizio
2. Inserire B;
3. Se B<0 torna al punto 2;
4. Inserire H;
5. Se H<0 torna al punto 4;
6. A=B*H;
7. P=2*(B+H);
8. Stampa a video A;
9. Stampa a video P;
10. Fine;
Inserire B
V
B<0
F
Inserire H
V
H<0
F
A=B*H
2P=2*(B+H)
Stampa A
Stampa 2P
fine
8
8) Problema: Pari o dispari;
Problema: dato un numero N in ingresso, dire in uscita
Se esso è pari o dispari valutando il resto R di N/2
Se R=0 N è PARI, R=1 N è DISPARI;
3. DIAGRAMMA DI
FLUSSO
1. ANALISI DEL PROBLEMA:
1. dati in ingresso: N
2. Valori ammessi: tutti i numeri interi
3. Dati in uscita ( PARI, DISPARI)
4. Relazione ingresso/uscita:
se R=RESTO (N/2)=0 allora N è PARI,
se R=RESTO (N/2)=1 allora N è DISPARI;
2. ALGORITMO:
1. Inizio
2. Inserire N;
3. R=RESTO(N/2);
4. Se R=0 stampa “N è PARI”;
5. Se R≠0 stampa “N è DISPARI”;
6. Fine;
Notiamo che il blocco di selezione (il rombo), permette di far proseguire il
programma in due differenti strade, che portano a stampare PARI o DISPARI
9
alternativamente
9) Le VARIABILI;
Caratteristiche delle variabili:
- Sono oggetti utilizzati dalle istruzioni dei programmi;
- Hanno un nome detto IDENTIFICATORE che può essere una lettera, una parola
ma non un numero, i numeri si possono usare solo insieme ad almeno una lettera
(es. variabile PERIMETRO, oppure 2P, sono degli identificatori)
- Contengono i valori immessi in ingresso dall’utente, i valori dei risultati calcolati
dal computer, calcoli temporanei non visualizzati all’uscita (es π=3.14);
- Una variabile contiene un valore che potrebbe cambiare durante l’esecuzione del
programma;
- Le variabili risiedono nella memoria RAM memorizzando i valori contenuti al loro
interno. In fase di avvio del programma, l’elaboratore assegna uno spazio di
memoria RAM a ciascuna variabile del programma;
10
11) ASSEGNAZIONE di un VALORE alle VARIABILI;
Vediamo i valori assunti dalle variabili durante l’esecuzione di un programma:
Es. somma di 2 numeri S=A+B:
V
inizio
A
0
B
0
S
0
Inserire A
A
3
B=0
S=0
A<0
A=3
B=0
S=0
Inserire B
A=3
B
2
S=0
B<0
A=3
B=2
S=0
A=3
B=2
S
5
A=3
B=2
S=5
A=3
B=2
S=5
F
V
F
S=A+B
Stampa S
fine
Inizialmente il programma crea le
variabili A, B, S nella ram e assegna
il valore 0 iniziale.
Durante la fase di input l’utente
decide di assegnare il valore 3
alla variabile A. Si nota che il
Valore 0 precedentemente
assunto da A è SOVRASCRITTO
dal valore 3 e quindi lo 0 viene
perso per sempre. Proseguendo, il
valore di A non viene modificato, e
si passa alla variabile B, se l’utente
assegna un valore 2, lo 0 contenuto
in B viene SOVRASCRITTO dal 2. Si
prosegue con il calcolo di S in cui,
al posto dello 0 finora contenuto,
viene messo il valore calcolato
dall’elaboratore, pari a A+B cioè 5.
Alla fine il programma stampa sul
video il contenuto della variabile S
cioè il 5 mostrando all’utente il
risultato.
S
A+B significa:”metti in S la somma di ciò che c’è in A e ciò che c’è in B”
11
12) ASSEGNAZIONE di un VALORE alle VARIABILI;
Problema: dati due numeri A e B,scambiarne i valori e stamparli in uscita
Proponiamo una soluzione errata per mostrare come operano le variabili
A
0
B
0
A
3
B=0
A=3
B
2
A
2
B=2
A=2
B
2
A=2
B=2
A=2
B=2
A=2
B=2
Inzialmente i valori A e B vengono inizializzati a
0, poi l’utente assegna ad A il valore 3 ed a B il
valore 2. Volendo scambiare il valore di A con
quello di B e viceversa, al quarto passo dello
schema, decidiamo di assegnare ad A il valore
contenuto in B, ma così facendo perdiamo per
sempre il valore 3 contenuto finora in A. E’ stato
quindi appena commesso l’errore di
sovrascrivere il valore di A (il 3) che ci sarebbe
servito nell’istruzione successiva per
completare lo scambio di A con B. Se si
continua nonostante l’errore, vediamo che al
passo 5 viene assegnato a B il valore contenuto
in A che ormai non è più il 3 ma è diventato 2 nel
passo 4. La stampa quindi ci mostrerà che
entrambe le variabili contengono il valore 2 e
quindi non siamo riusciti a scambiare i valori
delle due variabili, poiché abbiamo perso il
valore di A. per risolvere questo problema, basta
usare una variabile C di APPOGGIO, per
conservare il valore di A durante lo scambio.
12
13) ASSEGNAZIONE di un VALORE alle VARIABILI;
Problema: dati due numeri A e B,scambiarne i valori e stamparli in uscita
Soluzione esatta:
Usiamo la variabile C per “salvare” il
contenuto di A al passo 4, poi
cominciamo le operazioni di scambio,
al passo 5 metto B in A perdendo il 3
da A ma che ho precedentemente
salvato in C. Al passo 6 quindi metto in
B il vecchio contenuto di A
prendendolo dalla variabile C.
Stampando i risultati vedo come ora
ho realizzato correttamente lo scambio
dei valori tra A e B.
A
0
B
0
C
0
A
3
B=0
C=0
A=3
B
2
C=0
A=3
B=2
C
3
A
A
2
B=2
C=3
A=2
B
3
C=3
A=2
B=3
C=3
Modi di indicare un assegnazione:
A=2
B=3
C=3
A
B (metto in A il valore di B) oppure
A = B (metto in A il valore di B);
A=2
B=3
C=3
In questo modo evito di perdere dei
valori a causa delle operazioni di
assegnazione, che distruggono i valori
finora contenuti nelle variabili.
= è equivalente alla D’ora in avanti si userà solo =
13
14) ALGORITMI SU CONDIZIONE;
Problema:Dati in ingresso i valori di 3 lati A,B,C, dire se il triangolo è
EQUILATERO, ISOSCELE o SCALENO
1.
2.
ANALISI DEL PROBLEMA:
1. dati in ingresso: A,B,C
2. Valori ammessi: A>0, B>0, C>0;
3. Dati in uscita: EQUILATERO,
ISOSCELE,SCALENO;
4. Relazioni ingressi/uscite:
se A=B=C allora EQUILATERO,
se A=B o A=C o B=C allora ISOSCELE,
se A ≠ B≠C allora SCALENO,
ALGORITMO:
1. Inizio
2. Inserire A;
3. SE A<0 torna al punto 2
4. Inserire B;
5. SE B<0 torna al punto 4
6. Inserire C;
7. SE C<0 torna al punto 6
8. Se (A=B=C) allora stampa “Equilatero”
9. Se (A=B o A=C o B=C) allora stampa “Isoscele”
10. Se (A ≠ B ≠ C) allora stampa “Scaleno”
11. Fine;
NOTARE CHE CONTROLLANDO SE I LATI SONO TUTTI UGUALI O SOLO ALCUNI O NESSUNO,
IL PROGRAMMA SEGUE TRE STRADE DIVERSE CHE SI INCONTRANO PRIMA DELLA FINE.
14
15) ALGORITMI SU CONDIZIONE;
Problema: Dati in ingresso i valori di altezza H e base B positivi, ed il tipo di figura
Geometrica tra TRIANGOLO e RETTANGOLO, calcoli la relativa area A.
1.
2.
ANALISI DEL PROBLEMA:
1. dati in ingresso: H,B, TIPO
2. Valori ammessi: H>0, B>0, TIPO=TRIANGOLO o RETTANGOLO;
3. Dati in uscita: A;
NOTA: i passi da 9 a 11 vengano eseguiti
4. Relazioni ingressi/uscite:
solo se il passo 8 è vero, se è falso si va
se TIPO=TRIANGOLO allora A=(B*H)/2;
direttamente al passo 12.
se TIPO=RETTANGOLO allora A=B*H;
Siccome abbiamo controllato il TIPO
immesso, in modo che venga accettato
ALGORITMO:
solo se le parole sono o TRIANGOLO o
1. Inizio
RETTANGOLO, se non è vero il passo 8
2. Inserire H;
allora è per forza vero il 12. Viceversa se
3. SE H<0 torna al punto 2
è vera la 8, vengono eseguiti i passi da 9 a
4. Inserire B;
11 e risulta falsa la 12, quindi non si
5. SE B<0 torna al punto 4
eseguono i passi 13 e 14.
6. Inserire TIPO;
7. SE TIPO≠(TRIANGOLO o RETTANGOLO) torna al punto 6;
8. Se (TIPO=TRIANGOLO) allora
9. A=(B*H)/2;
10. Stampa “area triangolo=“A;
11. Vai al punto 15 (la fine);
12. Se (TIPO=RETTANGOLO) allora
13. A=B*H;
14. Stampa “area rettangolo=“A;
15. Fine;
15
16) ALGORITMI SU CONDIZIONE;
3. Diagramma di flusso:
Dal diagramma di flusso si vede che questo programma è in grado di
calcolare le aree di due figure geometriche, basta che l’utente indichi il
tipo di figura desiderato ed il programma sceglierà la giusta formula per il
calcolo dell’area, visualizzando poi il risultato corretto.
16
17) ALGORITMI BASATI SU CICLI;
Problema: INDOVINELLO, dato un numero segreto S tra 0 e 100,
l’utente deve indovinarlo con dei tentativi T.
Una volta indovinato, il computer visualizza quanti tentativi (N) sono stati fatti
1.
2.
ANALISI DEL PROBLEMA:
1. dati in ingresso: S, T
2. Valori ammessi: 0<S<100, 0<T<100;
3. Dati in uscita: N (numero tentativi);
4. Relazioni ingressi/uscite:
N= numero di tentativi prima di avere T=S;
ALGORITMO:
1. Inizio
2. N=0 (azzeramento contatore dei tentativi)
3. Inserire S (numero da indovinare inserito da un amico);
4. SE S<0 o S>100 torna al punto 2;
5. Inserire T (tentativo inserito dal giocatore);
6. SE T<0 o T>100 torna al punto 4
7. N=N+1 (il contatore comincia a contare i tentativi)
8. SE T≠S torna al punto 5 (fai un nuovo tentativo);
9. Stampa “hai indovinato! Il numero era” S;
10. Stampa “n°tentativi=“ N;
15. Fine;
NOTA: il passo 8, in caso di tentativo
fallito, riporta il programma al punto 5
creando un ciclo tra 8 e 5 che
permette di ritentare finchè non si
indovina. Ogni volta che si tenta, il
numero CONTATORE N viene
incrementato tramite l’operazione 7 di
assegnazione N=N+1 che significa
che il nuovo valore di N è dato dal
vecchio N a cui si somma 1. Quando
si indovina, il passo 8 lascia
proseguire il programma uscendo dal
ciclo e andando al passo 9 che
stampa quindi il messaggio e il
numero N di tentativi utilizzati.
17
18) ALGORITMI BASATI SU CICLI;
Problema: INDOVINELLO, dato un numero segreto S tra 0 e 100,
l’utente deve indovinarlo con dei tentativi T.
Una volta indovinato, il computer visualizza quanti tentativi (N) sono stati fatti
3.
Diagramma di FLUSSO:
NOTA: il diagramma di flusso mostra come
il programma contenga un ciclo
(evidenziato con le linee nere più spesse).
Si eseguono sempre le stesse operazioni
finchè la condizione T=S non è verificata.
Appena lo è, si esce dal ciclo e si
prosegue verso la fine del programma.
Siccome la condizione T=S è controllata
alla fine del ciclo, il ciclo prende il nome
di CICLO POSTCONDIZIONALE e viene
eseguito ALMENO una volta. Nei cicli
PRECONDIZIONALI, con la condizione
posta all’inizio del ciclo, può succedere
che la condizione sia subito verificata e
quindi il ciclo non viene eseguito
nemmeno una volta.
18
19) Esercizi di programmazione;
Di ogni esercizio, realizzare l’analisi, l’algoritmo ed il diagramma di flusso:
1.
Realizzare un programma che dato il prezzo P di un prodotto (sempre positivo) e lo sconto S
(compreso tra 0 e 100, in percentuale), calcoli e stampi il prezzo scontato PS=P-(P*S)/100 ;
2.
dato un numero N in ingresso, dire in uscita se esso è positivo o negativo;
3.
Dati in ingresso due lati L1 e L2 (positivi), dire se la figura è un quadrato (se L1=L2) o un rettangolo
(se L1≠L2) e calcolare l’area A. Stampare infine un messaggio con il tipo di figura (quadrato o
rettangolo) e la relativa area A;
4.
Dati due numeri X e Y tra di loro diversi verificare quale dei due sia maggiore. Moltiplicare quindi il
maggiore per 2 e assegnarlo ad una variabile A. Mostra quindi il risultato A;
5.
Considerare il problema “INDOVINELLO” e modificarlo nel seguente modo: in caso di tentativo
FALLITO (T≠S), controllare se T>S, se si stampare “ALTO”, se no stampare “BASSO”. Dopo questo
controllo ritornare al punto 5;
6.
Realizzare un ciclo POSTCONDIZIONATO per calcolare la somma S di 4 numeri a partire da un
numero X dato dall’utente. Es. ( con X=3, calcolare S=3+4+5+6, oppure con X=14, calcolare
S=14+15+16+17); il ciclo deve terminare quando il contatore N=4 ;
19
Scarica

Dispensa sui diagrammi di flusso ed esercizi