• Non ci sono risultati.

Fondamenti di Informatica

N/A
N/A
Protected

Academic year: 2021

Condividi "Fondamenti di Informatica"

Copied!
85
0
0

Testo completo

(1)

Fondamenti di Informatica

AlgoBuild: Strutture iterative e selettive

Prof. Christian Esposito

Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2017/18

(2)

AlgoBuild : Strutture iterative e selettive

OUTLINE

• Struttura selettiva

Esempi

• Struttura iterativa FOR (ciclo a condizione iniziale)

Esempi

• Struttura iterativa DO/WHILE (ciclo a condizione finale)

Esempi

• Array

AlgoBuild: Strutture iterative e selettive 02/85

(3)

Diagrammi di Flusso: Blocco di

Decisione Binaria (o Condizionale)

Possono essere presenti istruzioni condizionali, la cui esecuzione dipende cioè da scelte effettuate in base ai dati

• Concettualmente, possiamo immaginare che il flusso di esecuzione si ramifichi

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

?

Diramazione (condizionale)

(4)

Strutture di Controllo:

Selezione Semplice

AlgoBuild: Strutture iterative e selettive 04/85

(5)

Strutture di Controllo:

Selezione a Due Vie

(6)

Struttura Selettiva IF – Esempio

• 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

AlgoBuild: Strutture iterative e selettive 06/85

(7)

Struttura Selettiva IF

Iniziamo dal prendere in input la variabile VOTO

(8)

Struttura Selettiva IF

AlgoBuild: Strutture iterative e selettive 08/85

(9)

Struttura Selettiva IF

(10)

Struttura Selettiva IF

Ci verrà richiesto di inserire l’espressione (condizione booleana) che la struttura selettiva

IF deve soddisfare. Tale espressione può assumere un valore booleano: vero (T) o falso (F)

AlgoBuild: Strutture iterative e selettive 10/85

(11)

Struttura Selettiva IF

(12)

Struttura Selettiva IF

Flusso di esecuzione se la condizione è falsa

AlgoBuild: Strutture iterative e selettive 12/85

(13)

Struttura Selettiva IF

Flusso di esecuzione se la condizione è vera

(14)

Struttura Selettiva IF

PSEUDO-CODICE PROG main

IN VOTO

IF VOTO >= 18

OUT "Superato!"

ELSE //if VOTO >= 18 OUT "NON Superato"

END IF //VOTO >= 18 END PROG //main

AlgoBuild: Strutture iterative e selettive 14/85

(15)

Struttura Selettiva IF – DEMO

(16)

AlgoBuild: Strutture iterative e selettive

Struttura Selettiva IF – DEMO

16/85

(17)

Struttura Selettiva IF – DEMO

(18)

AlgoBuild: Strutture iterative e selettive

Struttura Selettiva IF – DEMO

Variabile VOTO presa in input dall’istruzione precedente

18/85

(19)

Struttura Selettiva IF – DEMO

Condizione vera

(20)

AlgoBuild: Strutture iterative e selettive

Struttura Selettiva IF – DEMO

20/85

(21)

Struttura Selettiva IF – DEMO

Cosa sarebbe accaduto se avessi usato VOTO = 16?

(22)

Struttura Selettiva IF (Annidata)

• Nelle istruzioni del blocco “Vero”

o del blocco “Falso” (else), è possibile inserire altri blocchi di scelta

• In tal caso si dice che la seconda scelta risulta annidata all’interno della prima

C1

A1 B

C2

A2 A3

A4 V

V

F

F

AlgoBuild: Strutture iterative e selettive 22/85

(23)

Struttura Selettiva IF (Annidata)

• C1 Vero, C2 Vero

• Istruzioni eseguite: A1, A2, A4

C1

A1 B

C2

A2 A3

A4 V

V

F

F

(24)

Struttura Selettiva IF (Annidata)

• C1 Vero, C2 Falso

• Istruzioni eseguite: A1, A3, A4

C1

A1 B

C2

A2 A3

A4 V

V

F

F

AlgoBuild: Strutture iterative e selettive 24/85

(25)

Struttura Selettiva IF (Annidata)

• C1 Falso

• Istruzioni eseguite: B

C1

A1 B

C2

A2 A3

A4 V

V

F

F

(26)

Struttura Selettiva IF (Annidata)

• L’intero blocco di scelta più

interno (dalla condizione fino al ricongiungimento) deve essere completamente contenuto

all’interno di uno dei rami del blocco più esterno

C1

A1 B

C2

A2 A3

A4 V

V

F

F

AlgoBuild: Strutture iterative e selettive 26/85

(27)

Struttura Selettiva IF (Annidata): Esempio 1

• L’esito dell’esame di uno studente può assumere una delle seguenti quattro valutazioni

• Sufficiente: se il voto è compreso tra 18 e 21

• Buono: se il voto è compreso tra 22 e 25

• Ottimo: se il voto è compreso tra 26 e 28

• Eccellente: se il voto è 29 o 30

• Un voto è valido se è compreso tra 0 e 30

(28)

Struttura Selettiva IF (Annidata): Esempio 1

Controllo che il voto sia valido

AlgoBuild: Strutture iterative e selettive 28/85

(29)

Struttura Selettiva IF (Annidata): Esempio 1

Se il voto è minore di 18, l’esame non è superato

(30)

Struttura Selettiva IF (Annidata): Esempio 1

AlgoBuild: Strutture iterative e selettive 30/85

(31)

Struttura Selettiva IF (Annidata): Esempio 1

IF annidato

(32)

AlgoBuild: Strutture iterative e selettive

IF annidato

32/85

(33)

IF annidato

(34)

AlgoBuild: Strutture iterative e selettive

IF annidato

(35)

Esempio: Risoluzione di equazioni di primo grado

• 𝑎 𝑥 + 𝑏 = 0

• La soluzione è:

• 𝑥 = – 𝑏 / 𝑎

• Solo se 𝑎 ≠ 0

• 𝑥 = 𝑖𝑛𝑑𝑒𝑡𝑒𝑟𝑚𝑖𝑛𝑎𝑡𝑜 (𝑖𝑛𝑓𝑖𝑛𝑖𝑡𝑒 𝑠𝑜𝑙𝑢𝑧𝑖𝑜𝑛𝑖)

• Se 𝑎 = 0 𝑒 𝑏 = 0

• 𝑥 = 𝑖𝑚𝑝𝑜𝑠𝑠𝑖𝑏𝑖𝑙𝑒 (𝑛𝑒𝑠𝑠𝑢𝑛𝑎 𝑠𝑜𝑙𝑢𝑧𝑖𝑜𝑛𝑒)

• Se 𝑎 = 0 𝑒 b ≠ 0

(36)

AlgoBuild: Strutture iterative e selettive 36/85

(37)
(38)

AlgoBuild: Strutture iterative e selettive 38/85

(39)

IF annidato

IF annidato

(40)

AlgoBuild: Strutture iterative e selettive 40/85

(41)

Strutture di Controllo: Ciclo a

Condizione Iniziale

(42)

AlgoBuild: Strutture iterative e selettive

Struttura Iterativa FOR – Esempio 1

• 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

X × X × …× X

Y volte

42/85

(43)

Struttura Iterativa FOR – Esempio 1

(44)

AlgoBuild: Strutture iterative e selettive

Struttura Iterativa FOR – Esempio 1

44/85

(45)

Struttura Iterativa FOR – Esempio 1

(46)

Struttura Iterativa FOR – Esempio 1

• I = 1; I <= Y; I = I + 1

• I = 1

Inizializzazione del ciclo FOR (alla prima iterazione I = 1)

• I <= Y

Condizione di uscita dal ciclo FOR (appena I sarà maggiore di Y, il ciclo FOR si concluderà)

• I = I + 1

Incremento: ad ogni iterazione la variabile I verrà incrementata automaticamente di 1

In totale il ciclo verrà eseguito Y volte

AlgoBuild: Strutture iterative e selettive 46/85

(47)

Struttura Iterativa FOR – Esempio 1

(48)

Struttura Iterativa FOR – Esempio 1

R denota la variabile in cui verrà memorizzato di volta in volta l’output. Tale variabile è

inizializzata ad 1

AlgoBuild: Strutture iterative e selettive 48/85

(49)

Struttura Iterativa FOR – Esempio 1

PSEUDO-CODICE PROG main

IN XIN Y

ASSIGN R = 1

FOR I = 1; I <= Y; I = I + 1 ASSIGN R = R * X

END FOR //I = 1; I <= Y; I = I + 1 OUT R

END PROG //main

(50)

50/85

AlgoBuild: Strutture iterative e selettive

Struttura Iterativa FOR – DEMO ( Video )

Introduzione ad AlgoBuild

(51)

Struttura Iterativa FOR – Esempio 2

• Definiamo un diagramma di flusso che rappresenta il calcolo della media aritmetica di N numeri presi in input, dove

N è una variabile presa in input

(52)

AlgoBuild: Strutture iterative e selettive

Struttura Iterativa FOR – Esempio 2

PSEUDO-CODICE PROG main

IN NASSIGN Somma = 0

FOR I = 1; I <= N; I = I + 1 IN Valore

ASSIGN Somma = Valore + Somma END FOR //I = 1; I <= N; I = I + 1

ASSIGN Media = Somma / N OUT Media

END PROG //main

52/85

(53)

Struttura Iterativa FOR – Esempio 2

Richiedo N all’utente (Input)

(54)

AlgoBuild: Strutture iterative e selettive

Struttura Iterativa FOR – Esempio 2

Imposto Somma a zero

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

54/85

(55)

Struttura Iterativa FOR – Esempio 2

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

Somma = Somma + Valore

(56)

AlgoBuild: Strutture iterative e selettive

Struttura Iterativa FOR – Esempio 2

• Calcolo la media

• Dividendo la somma (variabile Somma) per gli N numeri presi in input

56/85

(57)

Struttura Iterativa FOR – Esempio 2

Il contenuto della variabile Media viene mostrato in output

(58)

AlgoBuild: Strutture iterative e selettive

Struttura Iterativa FOR – Demo ( Video )

Introduzione ad AlgoBuild 58/85

(59)

Struttura Iterativa FOR – Esempio 2

OSSERVAZIONE

È necessario fornire preventivamente al nostro programma il numero di valori di cui si dovrà calcolare la media…

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

(60)

Strutture di Controllo: Ciclo a Condizione Finale

AlgoBuild: Strutture iterative e selettive 60/85

(61)

Struttura Iterativa DO/WHILE – Esempio

• Definiamo un diagramma di flusso che

rappresenta il calcolo della media aritmetica di

un certo numero (non noto a priori) di valori

presi in input

(62)

AlgoBuild: Strutture iterative e selettive

Struttura Iterativa DO/WHILE – Esempio

PSEUDO-CODICE PROG main

ASSIGN Somma = 0 ASSIGN N = 0

DO_WHILE //Continua == 1 IN Valore

ASSIGN Somma = Somma + Valore ASSIGN N = N + 1

IN Continua

END DO_WHILE Continua == 1 ASSIGN Media = Somma / N OUT Media

END PROG //main

62/85

(63)

Struttura Iterativa DO/WHILE – Esempio

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 Somma = 0)

(64)

AlgoBuild: Strutture iterative e selettive

Struttura Iterativa DO/WHILE – Esempio

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 (dato che è 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

64/85

(65)

Struttura Iterativa DO/WHILE – Esempio

• Calcola la media aritmetica dividendo Somma per N

• La media aritmetica è memorizzata nella variabile Media

• Che viene poi mostrata in output

(66)

AlgoBuild: Strutture iterative e selettive

Struttura Iterativa DO/WHILE – DEMO – ( Video )

AlgoBuild: Strutture iterative e selettive 66/85

(67)

Array (o vettore)

È una variabile strutturata dove è possibile memorizzare più valori tutti dello stesso tipo

Un array monodimensionale o vettore può essere immaginato come un contenitore suddiviso in tanti scomparti quanti sono i dati che vi si vogliono memorizzare

Un array bidimensionale è noto come matrice

Ognuno di questi scomparti, detti elementi del vettore, contiene un unico dato ed è individuato da un numero progressivo, detto indice, che specifica la posizione

dell’elemento all’interno del vettore stesso

L’indice può assumere valori interi da zero al numero totale di elementi meno 1

L’indice di base dell’array è sempre zero

Il numero complessivo degli elementi del vettore viene detto lunghezza

Indice i 0 1 2 3 4 5 6 7 8 9

a 32 15 8 5 12 9 63 3 102 1

Nome array

(68)

Array (o vettore)

• Per accedere a un singolo elemento di un array si deve specificare il nome dell’array seguito dall’indice dell’elemento posto tra parentesi quadre: a[i]

• Es: a[1] restituisce l’elemento 15, a[3] restituisce l’elemento 5

Indice i 0 1 2 3 4 5 6 7 8 9

a 32 15 8 5 12 9 63 3 102 1

Nome array

AlgoBuild: Strutture iterative e selettive 68/85

(69)

Esempio: Inserire gli elementi in un Array e stamparli

• Vediamo come inserire gli elementi (valori) in un vettore di lunghezza 10

• Al termine dell’inserimento, gli elementi verranno poi stampati

Indice i 0 1 2 3 4 5 6 7 8 9

a Nome array

(70)

Indice i 0 1 2 3 4 5 6 7 8 9 Nome array a

AlgoBuild: Strutture iterative e selettive 70/85

(71)

Indice i 0 1 2 3 4 5 6 7 8 9 Nome array a

(72)

Indice i 0 1 2 3 4 5 6 7 8 9 Nome array a

AlgoBuild: Strutture iterative e selettive 72/85

(73)

Indice i 0 1 2 3 4 5 6 7 8 9 Nome array a 32

(74)

Indice i 0 1 2 3 4 5 6 7 8 9 Nome array a 32 15

AlgoBuild: Strutture iterative e selettive 74/85

(75)

Indice i 0 1 2 3 4 5 6 7 8 9

Nome array a 32 15 8

(76)

Indice i 0 1 2 3 4 5 6 7 8 9

Nome array a 32 15 8 5

AlgoBuild: Strutture iterative e selettive 76/85

(77)

Indice i 0 1 2 3 4 5 6 7 8 9

Nome array a 32 15 8 5 12

(78)

Indice i 0 1 2 3 4 5 6 7 8 9

Nome array a 32 15 8 5 12 9

AlgoBuild: Strutture iterative e selettive 78/85

(79)

Indice i 0 1 2 3 4 5 6 7 8 9

Nome array a 32 15 8 5 12 9 63

(80)

Indice i 0 1 2 3 4 5 6 7 8 9

Nome array a 32 15 8 5 12 9 63 3

AlgoBuild: Strutture iterative e selettive 80/85

(81)

Indice i 0 1 2 3 4 5 6 7 8 9

Nome array a 32 15 8 5 12 9 63 3 102

(82)

Indice i 0 1 2 3 4 5 6 7 8 9

Nome array a 32 15 8 5 12 9 63 3 102 1

AlgoBuild: Strutture iterative e selettive 82/85

(83)

Prendo valori in input

Restituisco valori in output

(84)

Esempio: Determinare il massimo

elemento di un array e stamparne la posizione

AlgoBuild: Strutture iterative e selettive

INIZIO ALGORITMO trovaMax posizione = 0

Per i che va da 0 a 9

Se a[i] > a[posizione]

posizione = i //Istruzione eseguita se A(i) > max

Incrementa i

restituisci a[posizione], posizione FINE ALGORITMO trovaMax

Indice i 0 1 2 3 4 5 6 7 8 9

a 32 15 8 5 12 9 63 3 102 1

Nome array

84/85

(85)

Riferimenti

Documenti correlati

/* visto che px e py sono variabili formali di tipo puntatore deputate a contenere indirizzi possono contenere &amp;a &amp;b e quindi si può effettuare lo scambio lavorando sui

caratteri ordinari, in questo caso la scanf si aspetta l’introduzione proprio di quei caratteri in quella esatta sequenza. I caratteri letti sono scartati ad uno ad uno

smaller ions 兲 so that the solvation molecules follow the ion motion in time, with occasional exchanges between solvation shells: one molecule from the first solvation shell escapes

(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

● Fare riferimento alla pagina del corso per sapere di volta in volta quale è il proprio turno.. Per evitare i disagi che si sono verificati negli anni precedenti non saranno