• Non ci sono risultati.

Strutture di controllo Le istruzioni semplici (ingresso, uscita, calcolo ed assegnazione) permettono di specificare in un programma delle azioni elaborative semplici, costituenti

N/A
N/A
Protected

Academic year: 2021

Condividi "Strutture di controllo Le istruzioni semplici (ingresso, uscita, calcolo ed assegnazione) permettono di specificare in un programma delle azioni elaborative semplici, costituenti"

Copied!
11
0
0

Testo completo

(1)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 33

Strutture di controllo

Le istruzioni semplici (ingresso, uscita, calcolo ed assegnazione) permettono di specificare in un programma delle azioni elaborative semplici, costituenti un’unica sequenza di esecuzione possibile

Nella maggior parte dei casi, un algoritmo si compone di più e diverse possibili sequenze di elaborazioni,

ciascuna possibile sequenza elaborativa dipende dal verificarsi o meno di specifiche condizioni od eventi

Un algoritmo deve poter descrivere più sequenze possibili di azioni elaborative, ma in ogni esecuzione una sola (o una combinazione) di esse verrà realizzata.

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 34

Algoritmo per effettuare una telefonata

Inizia telefonata;

Solleva la cornetta;

Se c’è il tono di della linea allora inizia

componi il numero;

se il numero chiamato è libero allora inizia

aspetta che qualcuno risponda;

se qualcuno risponde allora

continua a conversare finché non hai finito;

fine fine

riponi la cornetta sull’apparecchio;

Fine della telefonata.

Un esempio

(2)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 35

Inizia telefonata Solleva la cornetta;

NON c’è il tono di della linea riponi la cornetta sull’apparecchio.

Fine della telefonata

Inizia telefonata Solleva la cornetta;

C’è il tono di della linea inizia

componi il numero;

il numero chiamato NON è libero fine

riponi la cornetta sull’apparecchio.

Fine della telefonata

Inizia telefonata Solleva la cornetta;

c’è il tono di della linea inizia

componi il numero;

il numero chiamato è libero inizia

qualcuno risponde;

continua a conversare finché non hai finito;

fine fine

riponi la cornetta sull’apparecchio.

Fine della telefonata

… più sequenze dinamiche (esecuzioni) associate alla stessa sequenza statica di istruzioni ...

Inizia telefonata Solleva la cornetta;

c’è il tono di della linea inizia

componi il numero;

il numero chiamato è libero inizia

nessuno risponde;

fine fine

riponi la cornetta sull’apparecchio.

Fine della telefonata

La sequenza effettivamente eseguita dipende da eventi (condizioni) che si verificano durante l’esecuzione stessa:

... Presenza della linea …

… linea libera o occupata ...

Un algoritmo (ovvero un programma) è descritto con una sequenza di frasi (ovvero istruzioni ), che è detta sequenza statica o lessicografica.

La sequenza lessicografica può contenere più differenti sequenze dinamiche (esecuzioni)

Sequenze Statiche e Dinamiche

(3)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 37

“costrutti sintattici” quali, nel linguaggio naturale:

se...allora...altrimenti....

qualora...ma ...nel caso in cui...

ripeti ... fino a quando…

continua …. finché mentre... se ..però...

verificandosi...altrimenti....

nel primo caso...., nel secondo caso..., ... nell’ennesimo caso...

...…

indicano possibili condizioni (eventi) che danno origine alle diverse sequenze dinamiche

nei linguaggi di programmazione questi “costrutti sintattici” sono chiamati “strutture di controllo”

Sequenze Statiche e Dinamiche

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 38

Sequenza

struttura di controllo che racchiude istruzioni semplici o altre strutture di controllo che vanno eseguite nell’ordine in cui sono scritte

una sequenza può anche racchiudere una sola istruzione o una sola struttura di controllo

Selezione

una struttura di controllo per selezionare una fra due o più possibili “sequenze” di istruzioni

Ciclo

struttura di controllo per ripetere l’esecuzione di una “sequenza” di istruzioni

… una struttura di controllo può contenerne altre, che sono ‘innestate’ in essa …

Strutture di Controllo

(4)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 39

Sequenza

Sequenza begin S end;

tra begin e end sono inserite le istruzioni che devono essere eseguite

una prima struttura:

if (condizione) then

<sequenza>

endif

 condizione è una espressione booleana (predicato)

 <sequenza> è una sequenza di istruzioni semplici o strutturate

se condizione è vera esegui istruzioni in <sequenza>; in ogni caso continua eseguendo la prima istruzione successiva alla struttura di controllo

Selezione

(5)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 41

la struttura introduce due possibili sequenze dinamiche (esecuzioni):

C = VERO, sequenza eseguita:

S0 - S1 - S2

C = FALSO, sequenza eseguita:

S0 - S2 S0

if (C) then S1 endif S2

…. struttura 1-in /1-out ….

S0

S1

S2 C

vero falso

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 42

Program area_rettangolo;

// questo programma calcola l’area di un rettangolo

FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

if ((base > 0) and (altezza > 0)) then area = base * altezza;

write (“Area”‘, “%f” area);

endif end.

… il programma per calcolare l’area del rettangolo …

… considerando le precondizioni sugli input ...

… (base >0 ) and (altezza > 0) …

(6)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 43

Program area_rettangolo;

FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

if ((base > 0) and (altezza > 0)) then

area = base * altezza;

write (“Area=“, “%f” area);

endif end.

Cosa accadrà quando sarà eseguito … dal punto di vista dell’utente

immetti base immetti altezza

Schermo del video

7

l’utente digita 7 base = 7

12

l’utente digita 12 altezza = 12

area = 7 * 12 = 84

(base > 0 and altezza > 0)=VERO

Area= 84

Cosa accadrà quando uno dei due valori non è maggiore di zero ? … dal punto di vista dell’utente

Program area_rettangolo;

FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

if ((base > 0) and (altezza > 0)) then area = base * altezza;

write (“Area=“, “%f” area);

endif end.

immetti base 7

immetti altezza 0

Schermo del video

l’utente digita 7 base = 7

l’utente digita 0 altezza = 0

(base > 0 and altezza > 0)=FALSO

(7)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 45

Program area_rettangolo;

// questo programma calcola l’area di un rettangolo

FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

if ((base > 0) and (altezza > 0)) then area = base * altezza;

write (“Area=“, “%f” area);

endif

if ((base <= 0) or (altezza <= 0)) then

write (“ERRORE! Base e/o altezza non maggiore di zero”);

endif end.

… aggiungiamo una struttura “if … then …” per visualizzare un messaggio di errore …

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 46

Program area_rettangolo;

FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

if ((base > 0) and (altezza > 0)) then area = base * altezza;

write (“Area=“, “%f” area);

endif

if ((base <= 0) or (altezza <= 0)) then

write (“ERRORE! Base e/o altezza non maggiore di zero”);

endif end.

Cosa vedrà l’utente quando sarà eseguito …

immetti base 7

immetti altezza 0

Schermo del video

l’utente digita 7 base = 7

l’utente digita 0 altezza = 0

(base > 0 and altezza > 0)=FALSO ERRORE! Base e/o altezza non maggiore di zero

(base <= 0 or altezza <= 0)=VERO

(8)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 47

Il programma di esempio calcolo volume parallelepipedo

Program volume_parallelepipedo;

FLOAT LBase, ABase, H, Volume, Area_Base;

begin

write (“immetti valore della lunghezza di base”);

read (“%f” LBase);

write (“immetti valore della altezza di base”);

read (“%f” ABase);

write (“immetti valore della altezza del parallelepipedo”);

read (“%f” H);

Area_Base = LBase* ABase;

Volume=Area_Base*H;

write (“Volume= “, “%f” Volume);

end.

... Modificare il programma del calcolo del volume del parallelepipedo per verificare il rispetto delle precondizioni ...

Il programma di esempio calcolo volume parallelepipedo

Program volume_parallelepipedo;

FLOAT LBase, ABase, H, Volume, Area_Base;

begin

write (“immetti valore della lunghezza di base”);

read (“%f” LBase);

write (“immetti valore della altezza di base”);

read (“%f” ABase);

write (“immetti valore della altezza del parallelepipedo”);

read (“%f” H);

if ((Lbase>0) and (Abase>0) and (H>0)) then

Area_Base = LBase* ABase;

Volume=Area_Base*H;

write (“Volume= “, “%f” Volume);

endif

if ((Lbase<=0) or (Abase<=0) or (H<=0)) then

write (“ERRORE !!! Almeno una delle dimensioni è non maggiore di zero”);

... programma del calcolo del volume del parallelepipedo con istruzioni per la verifica del rispetto delle precondizioni ...

(9)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 49

una seconda struttura:

if (condizione) then

<sequenza1>

else

<sequenza2>

endif

 condizione è una espressione booleana (predicato)

 <sequenza1> <sequenza2> sono sequenze di istruzioni semplici o strutturate

se condizione è vera esegui istruzioni in <sequenza1>; altrimenti (cioè condizione è falsa) esegui <sequenza2>; in ogni caso continua

eseguendo la prima istruzione successiva alla struttura di controllo

Selezione

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 50

la struttura introduce due possibili sequenze dinamiche (esecuzioni):

C = VERO, sequenza eseguita:

S0 - S1 - S3

C = FALSO, sequenza eseguita:

S0 - S2 - S3 S0

if (C) then S1 else S2 endif S3

…. struttura 1-in /1-out ….

S0

S2

S3

vero

C

falso

S1

(10)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 51

Program area_rettangolo;

// questo programma calcola l’area di un rettangolo

FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

if ((base > 0) and (altezza > 0)) then begin

area = base * altezza;

write (“Area=“, “%f” area);

end else

write (“Errore: base o altezza = <0”);

endif end.

… una versione del programma per il calcolo dell’area di un rettangolo facendo uso della struttura di selezione :

if ( ) ... then … else …

Program area_rettangolo;

FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

if ((base > 0) and (altezza > 0)) then begin

area = base * altezza;

write (“Area=“, “%f”, area);

end else

write (“Errore: base o altezza = <0”);

Cosa accadrà quando sarà eseguito … dal punto di vista dell’utente

immetti base 7

immetti altezza 0

Schermo del video

l’utente digita 7 base = 7

l’utente digita 0

altezza = 0 Errore: base o altezza = <0

(base > 0 and altezza > 0) = FALSO

(11)

Elementi di Informatica

Prof. G. A. Di Lucca - Univ. del Sannio 53

Program area_rettangolo;

// questo programma calcola l’area di un rettangolo

FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

if ((base > 0) and (altezza > 0)) then area = base * altezza;

write (“Area=“, “%f”, area);

endif

if ((base <= 0) or (altezza <= 0)) then write (“ERRORE! Base e/o altezza =<0 “);

endif end.

… confronto tra le due versioni …

Program area_rettangolo;

// questo programma calcola l’area di un rettangolo FLOAT base, altezza, area;

begin

write (“immetti base”);

read (“%f” base);

write (“immetti altezza “);

read (“%f” altezza);

if ((base > 0) and (altezza > 0)) then begin

area = base * altezza;

write (“Area= “, “%f” area);

end else

write (“Errore: base o altezza = <0”);

endif end.

… if ( ) then … … if ( ) then … else …

Riferimenti

Documenti correlati

– Se Body è composto da una sola istruzione si possono omettere le parentesi

il programma C del calcolo del volume del parallelepipedo modificato per verificare il rispetto delle precondizioni .... 53 Elementi

Scrivere un programma che letto un carattere in ingresso stampa un messaggio indicante se il carattere immesso è una lettera minuscola o maiuscola. …

Definizione del problema: data in input una sequenza di caratteri, terminante con il carattere ‘F’, dire quante volte nella sequenza è presente un certo carattere fornito in

il programma C del calcolo del volume del parallelepipedo modificato per verificare il rispetto delle precondizioni e visualizzazione di un messaggio di errore .... Modificare

Alcune operazioni di cast di tipo sono fatte automaticamente, principalmente in relazione alle capacità dei numeri interi, ad esempio assegnando un valore float ad una variabile

Usando una struttura switch viene assegnato, in base alla tabella precedente, alla variabile al_sconto il valore della percentuale di sconto da usare per calcolare l’importo

Alcune operazioni di cast di tipo sono fatte automaticamente, principalmente in relazione alle capacità dei numeri interi, ad esempio assegnando un valore float ad una variabile