• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
94
0
0

Testo completo

(1)

Fondamenti di Informatica

AlgoBuild: Strutture Selettive e Iterative

(2)

AlgoBuild: Strutture Iterative e Selettive

OUTLINE

Blocco condizionale (Struttura selettiva IF - IF/ELSE)

Esempi

Cicli a condizione iniziale (Strutture iterative WHILE

e FOR)

Esempi

Ciclo a condizione finale (Struttura iterativa

DO/WHILE)

(3)

Diagrammi di Flusso: Blocco di

Decisione (o Condizionale)

Istruzioni condizionali: l’esecuzione dipende da scelte effettuate in

base ai dati

In base ad una condizione viene deciso se eseguire un’operazione

oppure un’altra

(4)

IF

Strutture di Controllo:

Selezione Semplice

(5)

Strutture di Controllo:

Selezione a Due Vie

(6)
(7)

Definiamo un diagramma di flusso che

prende in input la variabile VOTO da parte

dell’utente;

mostra in output «Superato!»

se

VOTO è

maggiore o uguale di 18;

mostra «NON Superato»,

altrimenti

(8)

Definiamo un diagramma di flusso che

prende in input la variabile VOTO da parte

dell’utente;

mostra in output «Superato!»

se

VOTO è

maggiore o uguale di 18;

mostra «NON Superato»,

altrimenti

Struttura Selettiva IF: Esempio 1 – 1/11

if

(9)

Iniziamo prendendo in input la variabile VOTO

(10)
(11)
(12)

Ci verrà richiesto di inserire l’espressione (condizione booleana)

che la struttura selettiva IF deve soddisfare. Tale espressione può

(13)
(14)

Flusso di esecuzione se la condizione è falsa

(15)

Flusso di esecuzione se la condizione è vera

(16)

PSEUDO-CODICE PROGRAM main INPUT VOTO IF VOTO >= 18 OUTLN "Superato!" ELSE

OUTLN "NON Superato" END IF

END

(17)

PSEUDO-CODICE PROGRAM main INPUT VOTO IF VOTO >= 18 OUTLN "Superato!" ELSE

OUTLN "NON Superato" END IF

END

(18)

PSEUDO-CODICE PROGRAM main INPUT VOTO IF VOTO >= 18 OUTLN "Superato!" ELSE

OUTLN "NON Superato"

END IF END

Istruzione/i da eseguire in caso la

(19)
(20)
(21)
(22)

Variabile VOTO presa in input dall’istruzione precedente

Struttura Selettiva IF: DEMO 4/8

(23)

Condizione vera

(24)

Output

(25)
(26)

Cosa sarebbe accaduto se avessi usato VOTO = 16?

(27)

Struttura Selettiva IF (Annidata)

Nelle istruzioni del blocco “

Vero

o del blocco “

Falso

”, è possibile

inserire altre strutture selettive

In tal caso si dice che la seconda

struttura

risulta

annidata

all’interno della prima

C1 A1 B C2 A2 A3 A4 V V F F

(28)

Struttura Selettiva IF (Annidata)

Nelle istruzioni del blocco “Vero”

o del blocco “Falso”, è possibile

inserire altre strutture selettive

In tal caso si dice che la seconda

struttura

risulta

annidata

all’interno della prima

C1 A1 B C2 A2 A3 A4 V V F F

Analizziamo quali saranno le possibili sequenze di istruzioni che verranno eseguite, in base alla

(29)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

C1 A1 B C2 A2 A3 A4 V V F F

(30)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Vera

• Viene eseguita l’istruzione:

• A1 C1 A1 B C2 A2 A3 A4 V V F F

(31)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Vera

• Viene eseguita l’istruzione:

• A1

• Viene valutata la condizione C2

C1 A1 B C2 A2 A3 A4 V V F F

(32)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Vera

• Viene eseguita l’istruzione:

• A1

• Viene valutata la condizione C2

• Se la condizione C2 è Vera • Viene eseguita l’istruzione:

• A2 C1 A1 B C2 A2 A3 A4 V F F V

(33)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Vera

• Viene eseguita l’istruzione:

• A1

• Viene valutata la condizione C2

• Se la condizione C2 è Vera • Viene eseguita l’istruzione:

• A2

Viene eseguita l’istruzione:

• A4 C1 A1 B C2 A2 A3 A4 V F F V

(34)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Vera

• Viene eseguita l’istruzione:

• A1

• Viene valutata la condizione C2

• Se la condizione C2 è Vera • Viene eseguita l’istruzione:

• A2

Viene eseguita l’istruzione:

• A4

Il flusso prosegue in accordo al

diagramma di flusso

C1 A1 B C2 A2 A3 A4 V F F V

(35)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Vera

• Viene eseguita l’istruzione:

• A1

• Viene valutata la condizione C2

C1 A1 B C2 A2 A3 A4 V V F F

(36)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Vera

• Viene eseguita l’istruzione:

• A1

• Viene valutata la condizione C2

• Se la condizione C2 è Falsa

• Viene eseguita l’istruzione:

• A3 C1 A1 B C2 A2 A3 A4 V V F F

(37)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Vera

• Viene eseguita l’istruzione:

• A1

• Viene valutata la condizione C2

• Se la condizione C2 è Falsa

• Viene eseguita l’istruzione:

• A3

Viene eseguita l’istruzione:

• A4 C1 A1 B C2 A2 A3 A4 V V F F

(38)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Vera

• Viene eseguita l’istruzione:

• A1

• Viene valutata la condizione C2

• Se la condizione C2 è Falsa

• Viene eseguita l’istruzione:

• A3

Viene eseguita l’istruzione:

• A4

Il flusso prosegue in accordo al

diagramma di flusso

C1 A1 B C2 A2 A3 A4 V V F F

(39)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

C1 A1 B C2 A2 A3 A4 V V F F

(40)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Falsa

• Viene eseguita l’istruzione:

• B C1 A1 B C2 A2 A3 A4 V V F F

(41)

Struttura Selettiva IF (Annidata)

Viene valutata la condizione C1

Se la condizione C1 è

Falsa

• Viene eseguita l’istruzione:

• B

Il flusso prosegue in accordo al

diagramma di flusso

C1 A1 B C2 A2 A3 A4 V V F F

(42)

Struttura Selettiva IF (Annidata): Esempio 2 –

1/11

Raffiniamo l’esempio precedente…

Definiamo un diagramma di flusso che

prende in input la variabile VOTO da parte dell’utente;

mostra in output «Superato!»

se

VOTO è maggiore o uguale di

18;

«NON Superato», altrimenti

Il valore della variabile VOTO è valido se e solo se è compreso

tra 0 e 30!

Se si immette, in input, un valore non valido, l’algoritmo deve:

mostrare in output “Valore VOTO non valido” e

(43)

PSEUDO-CODICE

PROGRAM main INPUT VOTO END

Struttura Selettiva IF (Annidata): Esempio 2 –

2/11

(44)

Il passo successivo sarà quello di

verificare se il valore di VOTO è valido

(ovvero compreso tra 0 e 30)

Struttura Selettiva IF (Annidata): Esempio 2 –

3/11

PSEUDO-CODICE

PROGRAM main INPUT VOTO END

(45)

???

VOTO deve essere compreso tra 0 e 30

Struttura Selettiva IF (Annidata): Esempio 2 –

4/11

(46)

???

VOTO deve essere compreso tra 0 e 30

0 ≤ VOTO ≤ 30

Struttura Selettiva IF (Annidata): Esempio 2 –

5/11

(47)

???

VOTO deve essere compreso tra 0 e 30

0 ≤ VOTO ≤ 30

VOTO ≥ 0 AND VOTO ≤ 30

Struttura Selettiva IF (Annidata): Esempio 2 –

6/11

(48)

???

VOTO deve essere compreso tra 0 e 30

0 ≤ VOTO ≤ 30

VOTO ≥ 0 AND VOTO ≤ 30 VOTO >= 0 && VOTO <= 30

(sintassi AlgoBuild)

Struttura Selettiva IF (Annidata): Esempio 2 –

7/11

(49)

PSEUDO-CODICE

PROGRAM main INPUT VOTO

IF VOTO >= 0 && VOTO <= 30 END IF

END

Struttura Selettiva IF (Annidata): Esempio 2 –

8/11

(50)

PSEUDO-CODICE

Struttura Selettiva IF (Annidata): Esempio 2 –

9/11

(51)

Struttura Selettiva IF (Annidata): Esempio 2 –

10/11

Il passo successivo sarà quello di mostrare in

output la stringa "Valore VOTO non valido",

nel caso in cui il valore del VOTO NON sia

valido

(52)

PSE UDO -C ODIC E DIAGRAMMA DI FLUSSO

Struttura Selettiva IF (Annidata): Esempio 2 –

11/11

(53)

Struttura Selettiva IF (Annidata): Esempio 2

Indentazione

Di cosa si tratta?

Consiste nel far precedere le righe contenenti istruzioni di un

programma/pseudo-codice, da spazi vuoti

A cosa serve?

Fondamentale per migliorare la leggibilità e la comprensibilità di

un programma/pseudo-codice

Permette di evidenziare i blocchi del codice

• A colpo d’occhio è possibile identificare i diversi rami di un IF, le istruzioni che fanno parte di un ciclo, ecc.

(54)

Struttura Selettiva IF (Annidata): Esempio 2

Indentazione

SENZA Indentazione

CON Indentazione

PROGRAM main INPUT VOTO

IF VOTO >= 0 && VOTO <= 30 IF VOTO >= 18

OUTLN "Superato!" ELSE

OUTLN "NON Superato" END IF

ELSE

OUTLN "Valore VOTO non valido" END IF

END PROGRAM main

INPUT VOTO

IF VOTO >= 0 && VOTO <= 30 IF VOTO >= 18

OUTLN "Superato!" ELSE

OUTLN "NON Superato" END IF

ELSE

OUTLN "Valore VOTO non valido" END IF

(55)

Struttura Selettiva IF (Annidata): Esempio 2

(Indentazione) – 1/3

PROGRAM main INPUT VOTO

IF VOTO >= 0 && VOTO <= 30 IF VOTO >= 18

OUTLN "Superato!" ELSE

OUTLN "NON Superato" END IF

ELSE

OUTLN "Valore VOTO non valido" END IF

(56)

Struttura Selettiva IF (Annidata): Esempio 2

(Indentazione) – 2/3

PROGRAM main INPUT VOTO

IF VOTO >= 0 && VOTO <= 30

IF VOTO >= 18

OUTLN "Superato!" ELSE

OUTLN "NON Superato" END IF

ELSE

OUTLN "Valore VOTO non valido"

END IF

(57)

Struttura Selettiva IF (Annidata): Esempio 2

(Indentazione) – 1/3

PROGRAM main INPUT VOTO

IF VOTO >= 0 && VOTO <= 30

IF VOTO >= 18

OUTLN "Superato!"

ELSE

OUTLN "NON Superato"

END IF

ELSE

OUTLN "Valore VOTO non valido" END IF

(58)

Struttura Selettiva IF (Annidata): Esempio 2

Annidamento

È possibile annidare qualsiasi struttura di controllo

in un’altra struttura di controllo del flusso

Ad esempio:

Un IF può essere annidato in un altro IF

Visto in questo esempio

Un ciclo può essere annidato in un IF

Un IF può essere annidato in un ciclo

È

possibile anche un annidamento su più livelli

Esempio: Un IF può essere annidato all’interno di un

(59)
(60)

Ciclo a Condizione Iniziale

In AlgoBuild sono presenti

due strutture iterative per

la rappresentazione di cicli

a condizione iniziale:

Struttura Iterativa WHILE

(61)

Ciclo a Condizione Iniziale

In AlgoBuild sono presenti

due strutture iterative per

la rappresentazione di cicli

a condizione iniziale:

Struttura Iterativa WHILE

Struttura Iterativa FOR

(62)

Passi per la creazione di una struttura iterativa While in AlgoBuild

Verrà richiesto l’inserimento della condizione iniziale del While

(63)

Ciclo a Condizione Iniziale:

Struttura Iterativa WHILE

blocco istruzioni

Queste istruzioni verranno eseguite

finchè (while) la

(64)

Ciclo a Condizione Iniziale

In AlgoBuild sono presenti

due strutture iterative per

la rappresentazione di cicli

a condizione iniziale:

Struttura Iterativa WHILE

Struttura Iterativa FOR

determina

l'esecuzione di una porzione di algoritmo ripetuta per un certo numero noto di volte

(65)

Ciclo a Condizione Iniziale:

Struttura Iterativa FOR: Esempio 3 – 1/2

Definiamo un diagramma di flusso che

Prende in input le seguenti due variabili

X

Y

Memorizza e mostra (in output) una variabile

R = X

Y

N.B. Il calcolo di X

Y

deve essere eseguito con il

metodo moltiplicativo

(66)

Ciclo a Condizione Iniziale:

Struttura Iterativa FOR: Esempio 3 – 2/2

Definiamo un diagramma di flusso che

Prende in input le seguenti due variabili

X

Y

Memorizza e mostra (in output) una variabile

R = X

Y

N.B. Il calcolo di X

Y

deve essere eseguito mediante

il metodo moltiplicativo

(67)

Struttura Iterativa FOR: Esempio 3 –

1/10

(68)

Struttura Iterativa FOR: Esempio 3 –

2/10

(69)

Struttura Iterativa FOR: Esempio 3 –

3/10

(70)

Struttura Iterativa FOR: Esempio 3 –

4/10 – Parametri

Inizializzazione: I = 1

Inizializzazione del ciclo FOR

Alla prima iterazione il valore di I sarà 1 (I = 1)

Condizione: I <= Y

Condizione di uscita dal ciclo FOR

Appena I sarà maggiore di Y, il ciclo FOR terminerà

Aggiornamento (o Incremento): I = I + 1

Ad ogni iterazione la variabile I verrà incrementata

automaticamente di 1

(71)

Struttura Iterativa FOR: Esempio 3 –

5/10

(72)

Rappresentazione FOR in AlgoBuild

Struttura Iterativa FOR: Esempio 3 –

5/10

(73)

Struttura Iterativa FOR: Esempio 3 –

6/10

equivale a

(74)

Struttura Iterativa FOR: Esempio 3 –

7/10

(75)

R denota la variabile in cui verrà memorizzato, di volta in volta, l’output dell'algoritmo. Tale variabile è inizializzata ad 1.

Struttura Iterativa FOR: Esempio 3 –

8/10

(76)

PSEUDO-CODICE

Struttura Iterativa FOR: Esempio 3 –

9/10

(77)

u

ra

It

er

at

iv

a

FO

R

:

p

io

3

10

/1

0

O

(V

id

eo

)

(78)

Definiamo

un

diagramma

di

flusso

per

caratterizzare il calcolo della media aritmetica di

N numeri presi in input, dove

N è una variabile presa in input

Struttura Iterativa FOR: Esempio 4 –

1/9

(79)

Struttura Iterativa FOR: Esempio 4 –

2/9

(80)

Struttura Iterativa FOR: Esempio 4 –

3/9

(81)

Struttura Iterativa FOR: Esempio 4 –

4/9

Inizializziamo SOMMA a 0

• Ciò servirà per tener traccia della somma degli N numeri

(82)

Struttura Iterativa FOR: Esempio 4 –

5/9

Ciclo for che va da 1 a N

• Ad ogni iterazione

• Viene richiesto in input un numero (in VALORE)

• Viene aggiornata la variabile

SOMMA che verrà utilizzata

successivamente per il calcolo della media aritmetica

(83)

Struttura Iterativa FOR: Esempio 4 –

6/9

• Calcolo la media

• Dividendo la somma (variabile

SOMMA) per gli N numeri presi in

(84)

Struttura Iterativa FOR: Esempio 4 –

7/9

Il contenuto della variabile MEDIA viene mostrato in output

(85)

u

ra

It

er

at

iv

a

FO

R

:

p

io

4

8/

9

O

(V

id

eo

)

(86)

Struttura Iterativa FOR: Esempio 4 –

9/9

OSSERVAZIONE

È necessario fornire a priori al nostro algoritmo il numero di valori di cui si intende calcolare la media…

…è possibile calcolare la media di un certo numero (non noto a priori) di valori presi in input?

(87)

Strutture di Controllo:

Ciclo a Condizione Finale

(88)

Definiamo

un

diagramma

di

flusso

che

caratterizza il calcolo della media aritmetica di un

certo numero (non noto a priori) di valori presi in

input

Struttura Iterativa DO/WHILE:

Esempio 5 – 1/7

(89)

Passi per la creazione di una struttura Do/While in AlgoBuild (ciclo a

condizione finale)

Struttura Iterativa DO/WHILE:

Esempio 5 – 2/7

(90)

Struttura Iterativa DO/WHILE:

Esempio 5 – 3/7

(91)

Struttura Iterativa DO/WHILE:

Esempio 5 – 4/7

• Inizializzazione a 0 delle variabili

SOMMA ed N

• Non è stato preso ancora in input alcun valore (quindi N = 0)

• Non è stata eseguita ancora la somma di alcun valore (quindi

(92)

Struttura Iterativa DO/WHILE:

Esempio 5 – 5/7

Ciclo DO/WHILE

Richiede in input un valore (in VALORE)

Aggiorna la variabile SOMMA, aggiungendogli la variabile VALORE

SOMMA = SOMMA + VALORE

Aggiorna il valore di N, poiché è stato preso in input un nuovo valore

N = N + 1

Chiede all’utente se vuole continuare (quindi un nuovo valore verrà preso in input)

Se il valore della variabile CONTINUA sarà diverso da 1, allora il ciclo while si interromperà

• Altrimenti si proseguirà con un’altra iterazione

(93)

Struttura Iterativa DO/WHILE:

Esempio 5 – 6/7

• Calcola la media aritmetica dividendo

(94)

ru

tt

u

ra

It

er

at

iv

a

O

/W

H

IL

E:

E

se

m

p

io

5

7

D

EM

O

Riferimenti

Documenti correlati

(descri- zione codicologica ibid., pp. - L'edizione critica è stata curata da Henri Quentin in collaborazione con Hippolyte Delehaye: Acta Sanctorum Novembris. Collecta,

Così ad esempio, alla metà degli anni '90 del secolo scorso, due antropologi di rilievo come Marc Augè e Clifford Geertz, con un background culturale differente,

This paper reviews the major (Calcium, Phosphorus, Potassium, Sodium, Chlorine, Sulphur, Magnesium) and the trace elements (Iron, Copper, Cobalt, Iodine, Manganese, Zync,

Available Open Access on Cadmus, European University Institute Research Repository.... European

Fig.. ste aree della Sardegna le cavità minerarie e le grotte di miniera sono di primaria importanza per molte specie di pipistrelli che trovano rifu- gio nel loro interno. La

In discussing Northanger Abbey it is essential to see that the problems Catherine, the heroine, has in understanding herself and her experience are not different from the problems

Jean Guiguet specifically identifies Virginia Woolf with her six protagonists: She is in love with words, like Bernard: in love with books, like Neville: a lover of action, like

Simona scarsa medio-bassa medio-tardiva rotonda blu scuro Sofia scarsa medio-elevata medio-precoce ovale blu scuro Speranza medio-scarsa media intermedia rotonda