Fondamenti Di Programmazione

LAB Calcolatrice

Esercizio di Laboratorio Avanzato sui Sottoprogrammi: realizzazione di una Calcolatrice Modulare che integra più Funzioni di calcolo e una Procedura di Menu.

Durata

25 minuti

Software

Flowgorithm / Pseudocodice

Linguaggio

Diagrammi di Flusso

Calcolatrice Modulare a Più Funzioni

Argomenti: funzioni multiple, combinazione di procedure e funzioni, selezione del flusso, architettura modulare

In questo laboratorio faremo un salto di qualità: costruiremo un'applicazione completa articolata su più funzioni indipendenti. Realizzeremo una Calcolatrice Modulare dove ciascun calcolo matematico (Somma, Moltiplicazione, Potenza) è affidato a una funzione specifica, coordinate da una procedura per la stampa del menu.

Traccia dell'Esercizio:

Progetta un algoritmo per una calcolatrice che consenta all'utente di scegliere quale operazione eseguire su due numeri reali inseriti.

L'algoritmo deve includere:

  • La procedura MostraMenu() per stampare le opzioni (1. Somma, 2. Moltiplicazione, 3. Potenza).
  • La funzione CalcolaSomma(a, b) che restituisce la somma dei due numeri.
  • La funzione CalcolaProdotto(a, b) che restituisce il prodotto dei due numeri.
  • La funzione CalcolaPotenza(base, esponente) che calcola e restituisce $ ext{base}^{ ext{esponente}}$.
  • Nel programma principale (Main): mostrare il menu, leggere la scelta e i due numeri, e chiamare la funzione corrispondente mostrando il risultato finale.

1. Tabella delle Variabili e Dominio dei Dati

Memoria: Identificazione delle componenti e delle variabili nei vari ambiti

Ambito (Scope) Nome Variabile / Parametro Tipo di Dato Ruolo / Descrizione
Procedura
MostraMenu
Nessuno Void Stampa a schermo il menu con le 3 opzioni disponibili.
Funzione
CalcolaSomma
a, b Reale Parametri Formali: I due addendi da sommare.
s Reale Ritorna: Il risultato dell'operazione a + b.
Funzione
CalcolaProdotto
a, b Reale Parametri Formali: I due fattori da moltiplicare.
p Reale Ritorna: Il risultato dell'operazione a * b.
Funzione
CalcolaPotenza
base, esp Reale Parametri Formali: La base e l'esponente.
pot Reale Ritorna: Il risultato dell'elevamento a potenza.
Main
Programma Principale
opzione Intero Input: Scelta dell'operazione dal menu (1, 2 o 3).
n1, n2 Reale Input: I due valori numerici inseriti dall'utente.
risultato Reale Elaborazione: Memorizza il valore restituito dalla funzione chiamata.

2. Algoritmo Risolutivo e Diagramma di Flusso

Rappresentazione: Flowchart e Pseudocodice affiancati

Diagramma di Flusso (Flowchart):
Diagramma di Flusso Calcolatrice Modulare
Menu: MostraMenu()
Selezione: In base all'opzione chiama la funzione specifica
Output: Stampa il risultato calcolato
Pseudocodice con Numeri di Riga:
1 // PROCEDURA MENU
2 Procedura MostraMenu()
3     Scrivi "1. Somma | 2. Prodotto | 3. Potenza"
4 Fine Procedura
5
6 // FUNZIONI DI CALCOLO
7 Funzione CalcolaSomma(Reale a, Reale b) : Reale
8     Ritorna (a + b)
9 Fine Funzione
10
11 Funzione CalcolaProdotto(Reale a, Reale b) : Reale
12     Ritorna (a * b)
13 Fine Funzione
14
15 Funzione CalcolaPotenza(Reale base, Reale esp) : Reale
16     Ritorna (base ^ esp)
17 Fine Funzione
18
19 // PROGRAMMA PRINCIPALE (MAIN)
20 Inizio
21     Intero opzione
22     Reale n1, n2, risultato
23     MostraMenu()
24     Leggi opzione
25     Scrivi "Inserisci due numeri:"
26     Leggi n1, n2
27     Se (opzione == 1) Allora
28         risultato = CalcolaSomma(n1, n2)
29     Altrimenti Se (opzione == 2) Allora
30         risultato = CalcolaProdotto(n1, n2)
31     Altrimenti
32         risultato = CalcolaPotenza(n1, n2)
33     Fine Se
34     Scrivi "Risultato: ", risultato
35 Fine

3. Tabella di Traccia dell'Esecuzione (Trace Table)

Simulazione: Scelta opzione = 2 (Prodotto) con n1 = 4 e n2 = 3

Passo / Riga Ambito (Scope) Istruzione Eseguita Parametri Attuali ➔ Formali Valore Restituito Stato Variabili (Main)
Righe 23-26 Main Mostra menu e leggi opzione, n1, n2 - - opzione = 2, n1 = 4, n2 = 3
Riga 30 Funzione CalcolaProdotto Invocazione e calcolo prodotto n1, n2 ➔ a = 4, b = 3 12.0 (4 * 3) opzione = 2, n1 = 4, n2 = 3
Righe 30-34 Main Assegnazione a risultato e Stampa - - risultato = 12.0

Osservazione

Nota come le variabili a e b definite dentro CalcolaSomma siano del tutto distinte e indipendenti dalle variabili a e b di CalcolaProdotto. Ogni sottoprogramma gestisce le proprie variabili in un'area riservata della memoria (ambito locale)!

La Sfida: Aggiunta della Divisione con Controllo dello Zero

Ora che hai capito come affiancare più funzioni nello stesso progetto, accetti la sfida?

Estendi la calcolatrice aggiungendo la **quarta operazione**: la Divisione.

  • Aggiungi al menu l'opzione 4. Divisione.
  • Crea la nuova funzione CalcolaDivisione(dividendo, divisore).
  • Gestisci il caso limite: Se il divisore è uguale a zero, la funzione deve mostrare un messaggio di errore ed evitare la divisione per zero restituendo 0.
  • Aggiorna il Main per gestire la nuova opzione del menu.

Suggerimento: All'interno della funzione CalcolaDivisione inserisci un'istruzione Se (divisore == 0) prima di eseguire l'operazione di divisione!


In sintesi

Argomenti: concetti principali, riepilogo, competenze

  1. Scomposizione avanzata: un singolo programma principale coordina l'uso di più funzioni e procedure.
  2. Specializzazione delle funzioni: ciascuna funzione svolge un'unica operazione aritmetica sui parametri ricevuti.

Cosa hai imparato
  1. Creare e gestire un progetto contenente più di una funzione nello stesso file.
  2. Utilizzare una procedura per mostrare il menu ed invocare la funzione di calcolo corretta in base alla scelta dell'utente.
  3. Comprendere l'isolamento delle variabili tra funzioni distinte.


Esercizio Svolto, Algoritmi, Funzioni Multiple, Procedure, Modularita, Calcolatrice, Pseudocodice,