×

Esercizi sui flow charts (DAB)

Questa sezione contiene i principali esercizi svolti a lezione, o assegnati per lo svolgimento a casa, o in laboratorio.
L'elenco sarà aggiornato sulla base delle esigenze didattiche e/o delle osservazioni/considerazioni che emergeranno durante l'interazione con gli allievi.

Nota:
Attenzione, la numerazione degli esercizi non è definitiva e può cambiare nel tempo, man mano che vengono inseriti nuovi esercizi, o riorganizzati quelli esistenti.
Fare riferimento al titolo per individuare, nel tempo, esercizi specifici.

1) Ciao mondo da ...

Realizzare un algoritmo (DAB) che chieda all'utente di inserire il suo nome e stampi un messaggio con la frase "Ciao mondo da <nome>", dove al posto di <nome> ci sia il nome inserito dall'utente.

Esempio:
nome inserito = Mario
Output: Ciao mondo da Mario.

Soluzione

2) Somma di due numeri

Realizzare un algoritmo (DAB) che chieda all'utente di inserire due numeri interi, calcoli e restituisca la somma dei due numeri inseriti.

Esempio:
primo numero inserito = 5
secondo numero inserito = 3
Calcolo 5 + 3 = 8
Output: La somma dei due numeri inseriti è 8.

Soluzione

3) Maggiore tra due numeri

Realizzare un algoritmo (DAB) che chieda all'utente di inserire due numeri interi, calcoli e stampi il valore del maggiore tra i due inseriti. Se i due numeri sono uguali stamparne uno a scelta.

Esempio:
primo numero inserito = 5
secondo numero inserito = 3
Calcolo 5 > 3 = Vero
Output: Il maggiore dei due numeri inseriti è 5.

Soluzione

4) Maggiore tra due numeri o numeri uguali

Realizzare un algoritmo (DAB) che chieda all'utente di inserire due numeri interi, calcoli e stampi il valore del maggiore tra i due, se i due valori inseriti sono diversi tra loro, oppure comunichi che i due numeri sono uguali, in caso contrario.

Esempio:
primo numero inserito = 5
secondo numero inserito = 3
Calcolo 5 > 3 = Vero
Output: Il maggiore dei due numeri inseriti è 5.

Soluzione

5) Maggiore tra tre numeri

Realizzare un algoritmo (DAB) che chieda all'utente di inserire tre numeri interi, calcoli e stampi il valore del maggiore tra essi. Se i tre numeri sono uguali stamparne uno a scelta.

Esempio:
primo numero inserito = 5
secondo numero inserito = 3
terzo numero inserito = 13
Calcolo 13 > 5 = Vero e 13 > 3 = Vero
Output: Il maggiore dei tre numeri inseriti è 13.

Soluzione

6) Numero pari o dispari

Realizzare un algoritmo (DAB) che chieda all'utente di inserire un numero intero e restituisca un messaggio che indichi se il numero inserito è pari o dispari.

Indicazioni: Per verificare se un numero è pari o dispari occorre calcolare il resto della divisione per 2.
Se tale resto è zero allora il numero è pari, altrimenti il numero è dispari.
Esempio 1: numero inserito = 5
Calcolo 5 / 2 = 2 con resto di 1
Output: Il numero inserito è dispari
Esempio 2: numero inserito = 8
Calcolo 8 / 2 = 4 con resto di 0
Output: Il numero inserito è pari

Nota: per calcolrare il resto della divisione tra due numeri, occorre utilizzare l'operatore modulo, che, nella maggior parte dei software di programmazione, è rappresentato con il simbolo %.

Soluzione

7) Tipo triangolo

Realizzare un algoritmo (DAB) che chieda all'utente di inserire tre numeri interi positivi, che rappresentano le misure dei lati di un triangolo e stampi il tipo di tale triangolo (equilatero, isoscele, scaleno).

Esempio 1:
lato 1 = 5; lato 2 = 5; lato 3 = 5
Tutti i lati sono uguali
Output: Il triangolo è di tipo equilatero.
Esempio 2:
lato 1 = 5; lato 2 = 3; lato 3 = 5
Due lati sono uguali
Output: Il triangolo è di tipo isoscele.
Esempio 3:
lato 1 = 5; lato 2 = 3; lato 3 = 6
I lati sono tutti diversi
Output: Il triangolo è di tipo scaleno.

Soluzione

8) Area e perimetro di un triangolo equilatero

Realizzare un algoritmo (DAB) che chieda all'utente di inserire la lunghezza del lato di un triangolo equilatero, verifichi che essa sia valida (>0) ed in tal caso calcoli e stampi il perimetro e l'area del triangolo.
Nel caso in cui il valore inserito non sia valido, ossia negativo o nullo, stampi un messaggio di errore e termini.

Esempio 1:
lato = 10
Output: Il perimetro e l'area del triangolo equilatero di lato 10 sono 30 e 43.30.
Esempio 2:
lato = -5
Output: Errore: la misura del lato del triangolo non può essere negativa o nulla.

9) Area e perimetro di un triangolo isoscele

Realizzare un algoritmo (DAB) che chieda all'utente di inserire le misure della lunghezza del lato obliquo e dell'altezza di un triangolo isoscele, verifichi che esse siano valide (>0 e geometricamente valide) ed in tal caso calcoli e stampi il perimetro e l'area del triangolo.
Nel caso in cui i valori inseriti non siano validi, ossia negativi o nulli, oppure geometricamente non compatibili con un triangolo isoscele, stampi un messaggio di errore e termini.

Esempio 1:
lato obliquo = 10
altezza = 8
Output: Il perimetro e l'area del triangolo isoscele di lato obliquo 10 ed altezza 8 sono 32 e 48.
Esempio 2:
lato obliquo = -10
altezza = 8
Output: Errore: le misure inserite non possono essere negative o nulle.
Esempio 3:
lato obliquo = 10
altezza = 20
Output: Errore: le misure inserite non sono geometricamente compatibili con il lato obliquo e l'altezza di un triangolo isoscele.

10) Proporzione

Realizzare un DAB che chieda all'utente di inserire quattro numeri interi positivi, rappresentanti i termini di una proporzione (a : b = c : d). Verificare che essi rappresentino una proporzione valida e stampare un messaggio indicante la validità o meno della proporzione.
(Assumere che l'utente inserisca valori validi, ossia numeri interi positivi)

Esempio 1:
Inserire i termini di una proporzione a : b = c : d
a: 10
b: 20
c: 50
d: 100
Output: 10 : 20 = 50 : 100 è una proporzione valida
Esempio 2:
Inserire i termini di una proporzione a : b = c : d
a: 10
b: 20
c: 100
d: 50
Output: 10 : 20 = 100 : 50 non è una proporzione valida

11) Controllo validità di una data

Realizzare un DAB che chieda all'utente di inserire tre numeri interi, indicanti, rispettivamente, il giorno, il mese e l'anno di una ipotetica data. Verificare che i valori siano corretti e che possano quindi rappresentare una data valida e stampare un messaggio del tipo indicato nell'esempio.
(Considerare, per semplicità febbraio costituito da 28 giorni)

Esempio 1:
Input: giorno = 25, mese = 5, anno = 2020
Output: La data 25/5/2020 è una data valida

Esempio 2:
Input: giorno = 35, mese = 5, anno = 2020
Output: La data 35/5/2020 non è una data valida

12) Scambio valori di due variabili

Realizzare un DAB che chieda all'utente di inserire due numeri interi, memorizzandoli rispettivamente in due variabili chianate var1 e var2 e stampi il contenuto delle due variabili nell'ordine var1 e var2.
Successivamente scambi i valori delle due variabili e verifichi l'avvenuto scambio stampandone nuovamente il contenuto, attraverso la stessa istruzione di stampa utilizzata in precedenza.
Se lo scambio è stato effettuato correttamente, la seconda visualizzazione deve mostrare i valori invertiti rispetto alla prima.

Esempio:
var1 = 5; var2 = 33
Output prima dello scambio: La due variabili contengono: var1 = 5 e var2 = 33
Output dopo dello scambio: La due variabili contengono: var1 = 33 e var2 = 5

Soluzione

13) Costo gita scolastica

Realizzare un DAB che chieda all'utente di inserire il numero di studenti di una classe e stampi un messaggio di errore e termini, nel caso in cui il valore inserito sia negativo.
In caso contrario, invece, chieda all'utente i km di un viaggio di una gita di istruzione.
Se il valore inserito dall'utente è negativo, l'algoritmo deve stampare un altro messaggio di errore e terminare, altrimenti deve calcolare il costo totale del viaggio, sapendo che esso è composto da una componente fissa di 50 euro più una componente variabile di 50 centesimi per ogni km, più 25 euro a persona e che, oltre agli studenti, ci saranno anche 2 docenti accompagnatori.

Soluzione

14) Controllo input inserito dall'utente

Scrivere un DAB che chieda all'utente di inserire un numero naturale N (>0) e prosegua solo se l'utente inserisce il dato corretto, altrimenti stampi un messaggio di input non corretto e chieda nuovamente il numero.

Soluzione con pre-condizione

Soluzione con post-condizione

15) Numeri pari fino a 100

Scrivere un DAB che stampi tutti i numeri pari fino a 100.

Esempio:
Output: 2 - 4 - 6 - 8 - 10 - ... - 100

Soluzione

16) Numeri dispari fino a 100

Scrivere un DAB che stampi tutti i numeri dispari fino a 100.

Esempio:
Output: 1 - 3 - 5 - 7 - 9 - 11 - ... - 99

Soluzione

17) Tabellina

Scrivere un DAB che chieda all'utente di inserire un numero e stampi la sua tabellina.

Esempio: numero inserito = 9
Output: 9 - 18 - 27 - 36 - 45 - 54 - 63 - 72 - 81 - 90

Soluzione

18) Tavola pitagorica

Scrivere un DAB che costruisca la tavola pitagorica dei numeri da 1 a 10.

Esempio:
Output:
1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10
2 - 4 - 6 - 8 - 10 - 12 - 14 - 16 - 18 - 20
3 - 6 - 9 - 12 - 15 - 18 - 21 - 24 - 27 - 30
4 - 8 - 12 - 16 - 20 - 24 - 28 - 32 - 36 - 40
5 - 10 - 15 - 20 - 25 - 30 - 35 - 40 - 45 - 50
6 - 12 - 18 - 24 - 30 - 36 - 42 - 48 - 54 - 60
7 - 14 - 21 - 28 - 35 - 42 - 49 - 56 - 63 - 70
8 - 16 - 24 - 32 - 40 - 48 - 56 - 64 - 72 - 80
9 - 18 - 27 - 36 - 45 - 54 - 63 - 72 - 81 - 90
10 - 20 - 30 - 40 - 50 - 60 - 70 - 80 - 90 - 100

19) Conteggio di una sequenza di numeri interi

Realizzare un algoritmo che chieda all'utente di inserire una sequenza di numeri interi terminata dal numero zero, calcoli e stampi la quantità di valori inseriti (escludere dal conteggio lo zero, in quanto indica la volontà dell'utente di terminare l'esecuzione).

Esempio:
numeri inseriti: 9   5   50   -10   0
Output: La quantità di numeri inseriti è 4

Una variante di questo esercizio potrebbe contare solo i numeri positivi o negativi, oppure solo i numeri pari o dispari, oppure entrambi.

20) Somma di una sequenza di numeri interi positivi

Realizzare un algoritmo che chieda all'utente di inserire una sequenza di numeri interi positivi terminata dal numero zero, calcoli e stampi la somma dei numeri positivi inseriti. Nel caso l'utente inserica un valore negativo, l'agoritmo deve avvisare attraverso un messaggio di errore e chiedere nuovamente il numero.

Esempio:
numeri inseriti: 9   5   50   10   0
Output: La somma dei numeri positivi inseriti è 74

Soluzione

Una variante di questo esercizio potrebbe restituire all'utente sia la somma dei numeri inseriti che la quantità di numeri sommati (escludere dal conteggio lo zero, in quanto non costituisce un valore da sommare, ma indica la volontà di terminare l'esecuzione).

Soluzione

21) Prodotto di una sequenza di numeri interi positivi

Realizzare un algoritmo che chieda all'utente di inserire una sequenza di numeri interi positivi terminata dal numero zero, calcoli e stampi il prodotto dei numeri positivi inseriti. Nel caso l'utente inserica un valore negativo, l'agoritmo deve avvisare attraverso un messaggio di errore e chiedere nuovamente il numero.

Esempio:
numeri inseriti: 9   5   50   10   0
Output: Il prodotto dei numeri positivi inseriti è 22500

Soluzione

Una variante di questo esercizio potrebbe restituire all'utente sia il prodotto dei numeri positivi inseriti che la quantità di numeri moltiplicati (escludere dal conteggio lo zero, in quanto non costituisce un valore da moltiplicare, ma indica la volontà di terminare l'esecuzione).

22) Media aritmetica di una sequenza di numeri interi positivi

Realizzare un algoritmo che chieda all'utente di inserire una sequenza di numeri interi positivi terminata dal numero zero, calcoli e stampi la media aritmetica dei numeri positivi inseriti. Nel caso l'utente inserica un valore negativo, l'agoritmo deve avvisare attraverso un messaggio di errore e chiedere nuovamente il numero.

Esempio:
numeri inseriti: 15   9   11   30   10   0
Output: La media dei numeri inseriti è 15

Indicazioni: Per calcolare la media occorre sommare e contare i numeri inseriti; il valore della media alla fine sarà dato dalla loro somma diviso la quantità di numeri inseriti
Escludere dal conteggio lo zero finale, in quanto non costituisce un valore da includere nel calcolo della media, ma indica la volontà di terminare l'esecuzione.

Soluzione

23) Prodotto tra due numeri interi positivi

Realizzare un algoritmo che chieda all'utente di inserire due numeri interi positivi (controllare ciascun valore inserito, stampare un messaggio di errore e richiedere nuovamente il numero in caso di valore negativo), calcoli e stampi il prodotto tra i due numeri inseriti, senza utilizzare l'operatore di moltiplicazione.

Esempio:
Primo numero (>=0): 5
Secondo numero (>=0): 10
Output: Il prodotto dei due numeri è 50

24) Divisori di un numero intero positivo

Scrivere un DAB che chieda all'utente di inserire un numero intero maggiore di zero, calcoli e stampi l'elenco dei suoi divisori.

Esempio:
numero inserito = 18 9   25   81   49   0
Output: I divisori di 18 sono: 1, 2, 3, 6, 9, 18

Nota: per controllare se un numero è un divisore di un altro numero, occorre verificare che il resto della divisione tra i due numeri sia nullo.
Per calcolare il resto della divisione tra due numeri, utilizzare l'operatore modulo, che, nella maggior parte dei software di programmazione, è rappresentato con il simbolo %.

Soluzione

25) Numero primo

Scrivere un DAB che chieda all'utente di inserire un numero intero maggiore di uno e stampi un messaggio indicante se il numero inserito è un numero primo o meno.

Esempio 1:
numero inserito = 18
Output: Il numero inserito non è primo
Esempio 2:
numero inserito = 7
Output: Il numero inserito è primo

Nota: per controllare se un numero maggiore di uno è primo, occorre verificare che gli unici suoi divisori siano 1 e se stesso (1 non è primo per definizione).
Si ricorda che, per verificare se un numero è un divisore di un altro numero, occorre verificare che il resto della divisione tra i due numeri sia nullo.
Per calcolare il resto della divisione tra due numeri, utilizzare l'operatore modulo, che, nella maggior parte dei software di programmazione, è rappresentato con il simbolo %.

Soluzione

26) Orario della giornata in secondi

Scrivere un DAB che chieda all'utente di inserire tre valori interi rappresentanti l'ora esatta di una giornata, nello specifico l'ora, i minuti ed i secondi trascorsi dalla mezzanotte. Controllare che i valori inseriti siano corretti ed in caso negativo stampare un messaggio di errore e chiedere nuovamente i valori non corretti. Successivamente trasformare l'orario inserito dall'utente nel numero di secondi trascorsi dalla mezzanotte e stampare il risultato.

Esempio 1:
Ora: 10
Minuti: 20
Secondi: 30
Output: L'orario inserito equivale a 37230 secondi dalla mezzanotte

27) Differenza tra due orari della giornata in ore, minuti e secondi

Scrivere un DAB che chieda all'utente di inserire sei valori interi rappresentanti due orari di una stessa giornata, nello specifico l'ora, i minuti ed i secondi dei due orari. Controllare che i valori inseriti siano corretti ed in caso negativo stampare un messaggio di errore e chiedere nuovamente i valori non corretti. Successivamente calcolare la differenza tra i due orari in ore, minuti e secondi e stampare il risultato.

Esempio 1:
Primo orario ...
Ora: 10
Minuti: 20
Secondi: 30
Secondo orario ...
Ora: 18
Minuti: 10
Secondi: 00
Output: La differenza tra i due orari inseriti è 7 ore 49 minuti e 30 secondi

28) Quadrato di n come somma dei primi n numeri dispari

Si può dimostrare che il quadrato di un numero naturale n (>0) è pari alla somma dei primi n numeri dispari.

Esempi:
12=1
22=1+3
32=1+3+5
42=1+3+5+7
52=1+3+5+7+9
In generale n2 = 1 + 3 + .. + (2n-1)

Scrivere un DAB che chieda all’utente di inserire un numero naturale n, verifichi che esso sia maggiore di zero ed in caso contrario stampi un messaggio di numero non valido e chieda all’utente di reinserire il numero, calcoli il quadrato del numero inserito, utilizzando l’algoritmo descritto, ed infine stampi il risultato.

Soluzione 1
Soluzione 2

29) Radice quadrata di una sequenza di numeri

Realizzare un algoritmo che chieda all'utente di inserire una sequenza di numeri interi positivi, terminata dal numero zero e stampi di volta in volta, per ogni numero inserito, il valore della sua radice quadrata, oppure un messaggio di numero non valido, nel caso in cui il valore inserito negativo.

Esempio:
numeri inseriti: 9   25   81   49   0
Output: 3   5   9   7
Attenzione il valore della radice di ogni numero deve essere stampato di volta in volta, prima di chiedere il numero successivo.

Soluzione

30) Indovina il numero

Realizzare un algoritmo che generi un numero intero casuale compreso tra 1 e 100 e chieda all'utente di indovinarlo, contando i tentativi effettuati.
Ad ogni tentativo fallito, l'utente deve ricevere una indicazione, che gli dica se il numero inserito è maggiore o minore di quello da indovinare.
Al termine stampi un messaggio che indichi all'utente il numero dei tentativi effettuati.

Soluzione

Variante con numero massimo di tentativi possibili uguale a 10 e messaggio di tentativi esauriti.

Soluzione

31) Numeri casuali tra 50 e 100

Realizzare un DAB che stampi 10 numeri casuali compresi tra 50 e 100 (estremi inclusi).

Esempio:

65  50  55  78  90  82  77  61  100  94

32) Numeri casuali pari tra 20 e 100

Realizzare un DAB che stampi 10 numeri casuali pari compresi tra 20 e 100 (estremi inclusi).

Esempio:

24  36  68  44  20  98  100  80  66  52

33) Numeri casuali dispari tra 20 e 100

Realizzare un DAB che stampi 10 numeri casuali pari compresi tra 20 e 100.

Esempio:

25  37  69  45  21  99  77  81  67  53

34) Conversione di un numero naturale dal sistema decimale al sistema binario

Realizzare un algoritmo che chieda all'utente di inserire un numero naturale (>=0 verificandone la correttezza), calcoli e stampi la rappresentazione di tale numero nel sistema binario.

Esempio:
numero inserito: 25
Output: 1  1  0  0  1

Soluzione con l'uso di una stringa per contenere il numero binario risultante.
Soluzione

Soluzione con l'uso di un numero intero per contenere il numero binario risultante.
Soluzione

35) Conversione di un numero dal sistema binario al sistema decimale

Realizzare un algoritmo che chieda all'utente di inserire, una alla volta, dall'ultima alla prima, le cifre che compongono la rappresentazione binaria di un numero naturale (verificare la correttezza delle cifre inserite) e contestualmente calcoli la rappresentazione nel sistema decimale del numero binario inserito dall'utente, infine stampi sia il numero binario inserito che la sua rappresentazione nel sistema decimale, come mostrato nell'esempio che segue.

Esempio:
numero inserito: 1  1  0  0  1
Output: La rappresentazione del numero binario 1  1  0  0  1 nel sistema decimale è 25

36) Trasformazione nome in maiuscolo (UPPERCASE)

Realizzare un DAB che chieda all'utente di inserire il proprio nome, lo trasformi in maiuscolo e stampi un messaggio di saluto, come mostrato nell'esempio seguente.

Esempio:
Come ti chiami?: mario
Output: Ciao MARIO, piacere di conoscerti.

Soluzione

37) Trasformazione nome con la sola iniziale maiuscola (Capitalcase)

Realizzare un DAB che chieda all'utente di inserire il proprio nome, trasformi la sola iniziale in maiuscolo e stampi un messaggio di saluto, come mostrato nell'esempio seguente.

Esempio:
Come ti chiami? mario
Output: Ciao Mario, piacere di conoscerti.

Soluzione

38) Rovesciamento del nome (reverse)

Realizzare un DAB che chieda all'utente di inserire il proprio nome, lo rovesci e lo stampi al contrario, come mostrato nell'esempio seguente.

Esempio:
Come ti chiami?: Mario
Output: Ciao, il tuo nome rovesciato è oiraM.