Esercizio in Laboratorio: Calcolo del Massimo e del Minimo
Argomenti: funzioni di confronto, calcolo di Massimo e Minimo, passaggio parametri, Se...Allora interno alle funzioni
In questo laboratorio realizzeremo due funzioni fondamentali nella logica di programmazione: la funzione CalcolaMax e la funzione CalcolaMin. L'obiettivo è isolare la logica di confronto in sottoprogrammi dedicati per determinare i valori estremi tra due o più numeri dati in ingresso.
Traccia dell'Esercizio:
Progetta un algoritmo che legga due numeri reali inseriti dall'utente e ne determini sia il valore Massimo sia il valore Minimo tramite l'invocazione di due funzioni distinte.
L'algoritmo deve:
- Definire la funzione
CalcolaMax(a, b)che confrontaaebe restituisce il numero maggiore. - Definire la funzione
CalcolaMin(a, b)che confrontaaebe restituisce il numero minore. - Nel programma principale (Main), chiedere all'utente due numeri reali.
- Invocare entrambe le funzioni e stampare a schermo i valori di Massimo e Minimo ottenuti.
1. Tabella delle Variabili e Dominio dei Dati
Memoria: Dichiarazione e Ruolo delle Variabili e dei Parametri
| Ambito (Scope) | Nome Variabile | Tipo di Dato | Ruolo / Descrizione |
|---|---|---|---|
| Funzione CalcolaMax |
a, b |
Reale | Parametri Formali: I due valori da confrontare. |
maxVal |
Reale | Ritorna: Il valore maggiore tra a e b. |
|
| Funzione CalcolaMin |
a, b |
Reale | Parametri Formali: I due valori da confrontare. |
minVal |
Reale | Ritorna: Il valore minore tra a e b. |
|
| Main Programma Principale |
num1, num2 |
Reale | Input / Parametri Attuali: I due valori inseriti dall'utente. |
massimo |
Reale | Elaborazione: Salva il risultato restituito da CalcolaMax. |
|
minimo |
Reale | Elaborazione: Salva il risultato restituito da CalcolaMin. |
2. Algoritmo Risolutivo e Diagramma di Flusso
Rappresentazione: Flowchart e Pseudocodice affiancati
Funzione CalcolaMin: Restituisce il valore più piccolo tra a e b
Main: Chiamate
CalcolaMax(num1, num2) e CalcolaMin(num1, num2)
| 1 | // DEFINIZIONE FUNZIONE MASSIMO |
| 2 | Funzione CalcolaMax(Reale a, Reale b) : Reale |
| 3 | Se (a > b) Allora |
| 4 | Ritorna a |
| 5 | Altrimenti |
| 6 | Ritorna b |
| 7 | Fine Se |
| 8 | Fine Funzione |
| 9 | |
| 10 | // DEFINIZIONE FUNZIONE MINIMO |
| 11 | Funzione CalcolaMin(Reale a, Reale b) : Reale |
| 12 | Se (a < b) Allora |
| 13 | Ritorna a |
| 14 | Altrimenti |
| 15 | Ritorna b |
| 16 | Fine Se |
| 17 | Fine Funzione |
| 18 | |
| 19 | // PROGRAMMA PRINCIPALE (MAIN) |
| 20 | Inizio |
| 21 | Reale num1, num2, massimo, minimo |
| 22 | Scrivi "Inserisci il primo numero:" |
| 23 | Leggi num1 |
| 24 | Scrivi "Inserisci il secondo numero:" |
| 25 | Leggi num2 |
| 26 | |
| 27 | // Invocazione delle funzioni di confronto |
| 28 | massimo = CalcolaMax(num1, num2) |
| 29 | minimo = CalcolaMin(num1, num2) |
| 30 | |
| 31 | Scrivi "Il valore massimo e': ", massimo |
| 32 | Scrivi "Il valore minimo e': ", minimo |
| 33 | Fine |
3. Tabella di Traccia dell'Esecuzione (Trace Table)
Simulazione: Prova di esecuzione con input num1 = 12.5 e num2 = 45.0
| Passo / Riga | Azione / Istruzione | Parametri Attuali ➔ Formali | Valore Restituito | Stato Variabili (Main) |
|---|---|---|---|---|
| Righe 21-25 | Input valori da tastiera | - | - | num1 = 12.5, num2 = 45.0 |
| Riga 28 | Invocazione CalcolaMax(12.5, 45.0) |
num1, num2 ➔ a = 12.5, b = 45.0 | 45.0 (45.0 > 12.5) | massimo = 45.0 |
| Riga 29 | Invocazione CalcolaMin(12.5, 45.0) |
num1, num2 ➔ a = 12.5, b = 45.0 | 12.5 (12.5 < 45.0) | minimo = 12.5 |
| Righe 31-32 | Stampa a schermo dei due risultati | - | - | massimo = 45.0, minimo = 12.5 |
Osservazione
Nota come l'uso dell'istruzione Ritorna all'interno delle clausole Se fa interrompere immediatamente l'esecuzione della funzione non appena la condizione viene valutata, restituendo subito il valore corretto al Main!
La Sfida: Massimo tra Tre Numeri Sfruttando la Funzione a Due
Ora che hai capito come funziona la funzione CalcolaMax con 2 numeri, accetti la sfida?
Modifica il programma per trovare il Massimo tra TRE numeri inseriti dall'utente (n1, n2, n3) senza riscrivere una nuova funzione, ma annidando le chiamate a CalcolaMax:
- Leggi tre numeri distinti dal programma principale.
- Trova il massimo dei primi due:
m12 = CalcolaMax(n1, n2). - Trova il massimo definitivo confrontando il primo risultato con il terzo numero:
maxFinale = CalcolaMax(m12, n3). - In alternativa, prova a scriverlo in una riga sola:
maxFinale = CalcolaMax(CalcolaMax(n1, n2), n3)!
Suggerimento: La funzione CalcolaMax originale a 2 parametri **non deve subire alcuna modifica**! Sfrutta il principio della composizione per risolvere un problema più complesso.
In sintesi
Argomenti: concetti principali, riepilogo, competenze
- Modularità del confronto: isolare la logica di confronto dentro funzioni riutilizzabili rende il Main estremamente sintetico.
- Composizione di funzioni: le funzioni CalcolaMax e CalcolaMin accettano due valori e restituiscono il valore estremale.
- Definire funzioni di confronto con istruzioni condizionali Se...Allora interne.
- Restituire un valore numerico risultante da un confronto logico.
- Invocare più funzioni distinte all'interno dello stesso programma principale.