TERZA ESERCITAZIONE AUTOGUIDATA
L'obiettivo di questa esercitazione è prendere
dimestichezza con le funzioni, scrivendo un
programma formato da più moduli che concorrano a risolvere un
problema.
ESERCIZIO
L'esercizio da svolgere consiste nel progettare un programma per il calcolo della somma di due frazioni.
Il programma deve:
- ricevere in input quattro interi corrispondenti ai numeratori e ai
denominatori delle frazioni da sommare
- fornire in output numeratore e denominatore della frazione (eventualmente
semplificata) risultante dalla somma dei due numeri.
Risolveremo il problema in due passi.:
- nella prima parte scriveremo un programma, parziale.c, con due moduli
(massimoComunDivisore e minimoComuneMultiplo)
- nella seconda parte verranno riutilizzati questi due moduli per
implementare il programma finale.c
A. PRIMA PARTE
(la soluzione è contenuta nel file
mcmmcd.c)
Scrivere un programma che calcoli massimo comun
divisore e minimo comune multiplo tra due numeri interi.
Il programma dovrà essere costituito da tre moduli:
- la funzione minimoComuneMultiplo, che calcola il minimo comune
multiplo di due interi
- la funzione massimoComunDivisore, che calcola il massimo comun
divisore di due interi
- la funzione main, che
- legge due interi
- chiama le due funzioni passando come parametri gli interi
letti
- stampa i risultati delle due funzioni
La funzione massimoComunDivisore calcola il risultato col metodo di
Euclide.
La funzione minimoComuneMultiplo chiama la funzione
massimoComunDivisore per calcolare il risultato
(il minimo comune multiplo è uguale al prodotto dei due numeri diviso il loro
massimo comun divisore,
mcm(a,b) = a*b / MCD(a,b) ).
N.B.: minimoComuneMultiplo chiama massimoComunDivisore.
Dopo aver scritto e compilato il programma, effettuare
l'esecuzione passo-passo
(premere ripetutamente fino alla fine dell'esecuzione F7 oppure
F8).
Quando il programma è costituito da più moduli i comandi Step over (F8) e Trace Into (F7)
hanno un effetto diverso.
- Step over
(F8) esegue le istruzioni corrispondenti ad una chiamata di
funzione come se fossero un'unica istruzione (non entra cioè all'interno
dei moduli).
- Trace Into
(F7) consente di seguire passo passo anche le istruzioni interne
alle funzioni chiamate.
Provare ad effettuare l'esecuzione passo passo prima
con F8 e successivamente con F7.
Per seguire l'andamento del programma ispezionare le variabili che compaiono
nella funzione massimoComunDivisore.
B. SECONDA PARTE
(la soluzione è contenuta nel file
sommaraz.c)
In questa seconda parte si deve sviluppare il programma
per il calcolo della somma di due frazioni, utilizzando le due funzioni
implementate nella prima parte.
Ai due moduli della prima parte si deve aggiungere un terzo modulo che effettui
la stampa del risultato.
Il programma finale.c dovrà essere
costituito da quattro moduli:
- la funzione minimoComuneMultiplo
- la funzione massimoComunDivisore
- la funzione risultato
- la funzione main, che
- legge l'input
- calcola il risultato usando gli altri moduli
- verifica se il risultato deve essere semplificato
- chiama la funzione che stampa il risultato
Per effettuare la somma di due frazioni si dovrà
- calcolare il mcm dei due denominatori che costituisce il denominatore
della frazione_somma
- calcolare i numeratori delle frazioni equivalenti a quelle date con il
nuovo denominatore
- sommare i nuovi numeratori per avere il numeratore della
frazione_somma
Per semplificare una frazione si dovrà calcolare il MCD tra numeratore e
denominatore
Per riutilizzare i moduli che avete già
digitato nel file che risolve la parte A:
- senza chiudere il file corrente, aprite un nuovo file
- salvatelo con un nome diverso (ad es. finale.c)
- copiate le due funzioni nel nuovo file usando i comandi Copy e Paste del menù
Edit,
attivabili con il mouse oppure da tastiera
Utilizzando la tastiera:
- posizionarsi all'inizio del blocco da copiare all'interno del file
parziale.c
- tenendo premuto il tasto SHIFT usare i tasti freccia per
evidenziare tutto il blocco di interesse
- tenendo premuto il tasto CTRL digitare il tasto INS
(attenzione che non sia attivato Num Lock)
- utilizzando il tasto F6 spostarsi sul file finale.c
- tenendo premuto il tasto SHIFT digitare il tasto INS
(attenzione che non sia attivato Num Lock)
- utilizzando F2 salvate il file finale.c
Utilizzando la tastiera e i comandi dei menu a
tendina:
- posizionarsi all'inizio del blocco da copiare all'interno del file
parziale.c
- tenendo premuto il tasto SHIFT usare i tasti freccia per
evidenziare tutto il blocco di interesse
- ALT + E + C equivale a Edit Copy
- ALT + W + N equivale a Window Next
- ALT + E + P equivale a Edit Paste
- ALT + F + S equivale a File Save
Utilizzando il mouse
- doppio_clik sui vari comandi dei menu a tendina per attivarli
- selezione tenendo premuto il pulsante sinistro e rilasciandolo alla fine
del blocco di interesse.
Dopo aver scritto e compilato il programma, effettuare
l'esecuzione passo-passo con F7.
ESERCIZIO PROPOSTO
(la soluzione è contenuta nel file duecifun.c)
Modificare il programma duecifre.c
(sviluppato nella seconda esercitazione) definendo i seguenti moduli:
- la funzione leggi_cifre: permette l'immissione del numero di due
cifre (e relativi controlli)
- la funzione scrivi_pari: scrive in lettere le cifre pari
- la funzione scrivi_dispari: scrive in lettere le cifre
dispari
- la funzione main opportunamente modificata