Stampa del Menu Grafico con una Procedura
Argomenti: introduzione alle Procedure, sottoprogrammi senza valore di ritorno (Void), formattazione output, interfaccia utente
In questo laboratorio introduciamo il secondo tipo di sottoprogramma: la Procedura. A differenza delle Funzioni viste finora, una procedura non calcola un risultato da restituire al Main (non usa l'istruzione Ritorna), ma esegue un'azione pratica, come la stampa di una cornice grafica o di un menu opzioni.
Traccia dell'Esercizio:
Progetta un algoritmo per la gestione di un semplice registratore di cassa che mostri a schermo un Menu Grafico di Opzioni prima di leggere la scelta dell'utente.
L'algoritmo deve:
- Definire la procedura
StampaMenu()che stampa una cornice decorativa e le tre opzioni disponibili (1. Nuova Vendita, 2. Ristampa Scontrino, 3. Uscita). - Nel programma principale (Main), invocare la procedura
StampaMenu(). - Leggere la scelta effettuata dall'utente (un numero intero da 1 a 3) e confermare l'operazione selezionata con un messaggio di testo.
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 |
|---|---|---|---|
| Procedura StampaMenu |
Nessuna | Void (Nessuno) | Nessun parametro e nessun valore di ritorno: Esegue soltanto le istruzioni di output a schermo. |
| Main Programma Principale |
scelta |
Intero | Input: Memorizza l'opzione selezionata dall'utente (1, 2 o 3). |
2. Algoritmo Risolutivo e Diagramma di Flusso
Rappresentazione: Flowchart e Pseudocodice affiancati
Main: Chiamata
StampaMenu() ➔ Leggi scelta
| 1 | // DEFINIZIONE DELLA PROCEDURA (Senza Ritorna) |
| 2 | Procedura StampaMenu() |
| 3 | Scrivi "================================" |
| 4 | Scrivi " MENU REGISTRATORE DI CASSA " |
| 5 | Scrivi "================================" |
| 6 | Scrivi " 1. Nuova Vendita" |
| 7 | Scrivi " 2. Ristampa Scontrino" |
| 8 | Scrivi " 3. Uscita" |
| 9 | Scrivi "================================" |
| 10 | Fine Procedura |
| 11 | |
| 12 | // PROGRAMMA PRINCIPALE (MAIN) |
| 13 | Inizio |
| 14 | Intero scelta |
| 15 | |
| 16 | // Chiamata diretta della procedura |
| 17 | StampaMenu() |
| 18 | |
| 19 | Scrivi "Seleziona un'opzione (1-3):" |
| 20 | Leggi scelta |
| 21 | |
| 22 | Scrivi "Hai selezionato l'opzione numero: ", scelta |
| 23 | Fine |
3. Tabella di Traccia dell'Esecuzione (Trace Table)
Simulazione: Traccia dell'invocazione della procedura e lettura dell'input (scelta = 1)
| Passo / Riga | Ambito (Scope) | Azione / Istruzione | Valore Restituito | Stato Variabile (scelta) |
|---|---|---|---|---|
| Riga 14 | Main | Dichiarazione variabile | - | scelta = ? |
| Riga 17 | Procedura StampaMenu() |
Stampa a schermo della cornice e delle 3 opzioni | Nessuno (Void) | scelta = ? |
| Righe 19-20 | Main | Prompt e lettura input utente (es. inserisce 1) | - | scelta = 1 |
| Riga 22 | Main | Stampa del messaggio di conferma finale | - | scelta = 1 |
Osservazione
Nota come alla riga 17 la procedura StampaMenu() venga invocata come una semplice istruzione singola, senza la necessità di essere assegnata a una variabile (es. non si scrive x = StampaMenu()). Questo perché le procedure non restituiscono alcun dato al programma principale!
La Sfida: Menu Interattivo Ripetuto con Ciclo
Ora che hai capito come creare e chiamare una procedura per la stampa del menu, accetti la sfida?
Modifica il programma principale (Main) per fare in modo che il menu continui a comparire finché l'utente non decide di uscire:
- Inserisci la chiamata a
StampaMenu()e la lettura della scelta all'interno di un ciclo Mentre (scelta != 3). - Utilizza una struttura Se...Altrimenti (o uno Scegli/Switch) per mostrare messaggi personalizzati per le opzioni 1 e 2.
- Quando l'utente inserisce l'opzione
3, il ciclo termina e l'algoritmo mostra il messaggio "Arrivederci!".
Suggerimento: La procedura StampaMenu() non deve essere modificata! Sfrutta il suo riutilizzo chiamandola all'inizio di ciascuna iterazione del ciclo.
In sintesi
Argomenti: concetti principali, riepilogo, competenze
- Differenza chiave: a differenza della Funzione, la Procedura esegue una serie di azioni e NON utilizza l'istruzione Ritorna.
- Utilità pratica: isolare la logica dell'interfaccia utente (stampa menu e cornici) rende il codice del Main pulito e leggibile.
- Comprendere il concetto di Procedura (sottoprogramma di tipo Void).
- Invocare una procedura all'interno del programma principale come un'istruzione a sé stante.
- Riconoscere quando conviene usare una Procedura rispetto a una Funzione.