Percorso: ilMac.net > Scuola di Mac > Corsi > Il linguaggio C


Il linguaggio C

Progettare un programma

Ed eccoci al nostro appuntamento settimanale con il C. Questa volta però la lezione sarà prettamente pratica. Infatti vi guiderò passo passo alla realizzazione di un programma passando per tutte le fasi: dall'abbozzo alla compilazione. Ciò è finalizzato a mettere a frutto ciò che avete appreso nelle precedenti lezioni. Infatti faremo uso esclusivamente delle istruzioni usate e spiegate fino ad ora e le riuniremo tutte (o quasi) in un unico programma osservandole in un contesto di programmazione più generalizzato.
Vi propongo quindi un obiettivo di programmazione che è quello di scrivere un applicativo a linea di comando che a scelta dell'utente:
a. funga da convertitore EURO-->LIRE e LIRE-->EURO
b. funga da calcolatrice con le 4 operazioni base aritmetiche

Iniziamo...

Il primo passo da compiere, quando si vuole scrivere un programma è quello di progettarlo avendo le idee chiare su quello che si vuole ottenere. Progettare su carta aiuta molto. E' vivamente consigliato uno schema a blocchi.
Il seguente schema mostra la struttura che dovrà assumere il nostro programma.

Da un menu principale l'utente potrà optare sia per il calcolo di conversione EURO==>LIRE che per l'utilizzo della calcolatrice. Se l'utente sceglierà il primo sub-applicativo, si ritroverà di fronte ad un'altra scelta: conversione EURO==>LIRE o viceversa? In base alla scelta effettuata poi il Mac effettuerà la relativa conversione.
Se l'utente opta per il secondo sub-applicativo, avrà la possibilità di eseguire 4 operazioni diverse. Il nostro programma sarà strutturato in modo tale che il Mac si accorga dell'operazione da svolgere in base all'operatore immesso e questo sub-applicativo seguirà il seguente schema:

Ad esempio se l'operatore è Œ+, allora il Mac eseguirà un'operazione di addizione tra i due numeri di input, oppure, se l'operatore è Œ-, allora il Mac eseguirà un'operazione di sottrazione tra i due numeri di input. Qualunque sia l'operatore porterà comunque ad un risultato che verrà infine stampato.

Ed ecco il listato completo con il codice commentato.


#include <stdio.h> /*includo la libreria di funzioni stanard*/

#define valeuro 1936.27 /*definiamo il valore dell'euro rispetto alla lira*/

/*dichiaro variabili del convertitore*/
int scelta, sub_scelta;
float risultato, lire, euro;


/*dichiaro le variabili della calcolatrice*/
char operatore;
int primo_num, secondo_num, risultato_due;

main() {

printf("n*****CONVERTITORE EURO E CALCOLATRICE******n"); /*il titolo*/
printf("nn©2000 palmynn"); /*riferimento all'autore/*/
printf("SCEGLI IL PROGRAMMA DA UTILIZZARE: ");
printf("n1) Convertitore euron");
printf("2) Calcolatricen");
scanf("%d",& scelta);

switch(scelta) { /*inizia lo switch con di due casi*/
case 1:

/* 1. CONVERTITORE EURO */
printf("SCEGLI IL TIPO DI CONVERSIONE: nn");
printf(" 1) Euro ==> Liren");
printf(" 2) Lire ==> Euron");
scanf("%d",&sub_scelta);


switch(sub_scelta) /*utilizziamo l'istruzione switch-case*/
{
case 1
printf("EURO: ");
scanf("%d" euro);

risultato=euro*valeuro;

printf("LIRE: %fn",risultato); /*stampiamo il risultato*/

printf(" n");
break;

case 2:
printf("LIRE: ");
scanf("%f" , & lire);

risultato=lire/valeuro;

printf("EURO: %fn",risultato);
printf(" n");
break;

}/*fine dello switch*/

break; /*interruzione tra un case e l'altro*/

case 1:

/*CALCOLATRICE*/

printf("nn***CALCOLATRICE***);

printf("Inserisci il primo numero: ");
scanf("%d",& primo_num);

printf("nInserisci l'operatore: ");
scanf("%c",& operatore);


printf("nInserisci il secondo numero: ");
scanf("%d",& secondo_num);

/*addizione tra i due termini*/
if(operatore == '+')
risultato_due = primo_num + secondo_num;
printf("Il risultato è : %d", risultato);

/*sottrazione tra i due termini*/
if(operator == '-')
risultato_due = primo_num - secondo_num
printf("Il risultato è : %d", risultato);

/*moltiplicazione tra i due termini*/
if(operatore == '*')
risultato_due < primo_num * secondo_num;
printf("Il risultato è : %d", risultato);

/*divisione tra i due termini*/
if(operatore == '/')
risultato_due = primo_num / secondo_num;
printf("Il risultato è : %d", risultato);

brek;

} /*fine dello switch esterno*/


}/*fine del main()*/


E ORA SOTTO CON IL DEBUGGING!

Direte voi, "ha parlato di lezione pratica ed invece ci è stato fornito io tutto il listato!" ATTENZIONE! Non fatevi ingannare dall'apparenza e mettetevi al lavoro poiché il programma é strutturato correttamente ma vi affido il compito di scovare e risolvere i bachi che é ho piazzato qua e là nel listato: e questo é il punto sul quale dovete lavorare. Vediamo chi di voi sarà il più bravo, magari ne pubblico una classifica...

ULTIMO PASSO

Bene, se siete giunti fino qui si presuppone che abbiate già compilato ed eseguito la vostra applicazione. Ora non vi resta che togliervi una soddisazione: salvate la vostra applicazione mediante il comande "Make Application", cambiate il nome dell'autore e mostrate a tutti la vostra creatura...;-)



Data di pubblicazione: 22-05-2000
L'intero contenuto di questo sito dal 1998 del Team di ilMac.net, vietata ogni riproduzione senza il consenso scritto da parte degli autori.