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.
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
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
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
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.
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
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
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
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
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.