[C]Creare una calcolatrice con le funzioni

Andare in basso

[C]Creare una calcolatrice con le funzioni

Messaggio  Admin il Ven Ago 12, 2011 9:14 pm

Il codice della vecchia calcolatrice era il seguente:

#include<stdio.h> /*libreria standard*/
#define ADDIZIONE 1
#define SOTTRAZIONE 2
#define MOLTIPLICAZIONE 3
#define DIVISIONE 4

/*main*/
int main (void) {
int command = 0; /*variabile per fargli impartire un comando*/

while (command != -1) { /*crea un ciclo while per non far terminare il programma alla fine
di una operazione*/
if (command == 1) {
int addendo1;
int addendo2;

scanf ("%d", &addendo1);
scanf ("%d", &addendo2);

printf ("\n");

printf ("Risultato: %d", addendo1 + addendo 2);
}
else if (command == 2) {
int addendo3;
int addendo4;

scanf ("%d", &addendo3);
scanf ("%d", &addendo4);

printf ("\n");

printf ("Risultato: %d", addendo3 - addendo 4);
}
else if (command == 3) {
int addendo5;
int addendo 6;

scanf ("%d", &addendo5);
scanf ("%d", &addendo6);

printf ("\n");

printf ("Risultato: %d", addendo5 * addendo 6);
}
else if (command == 4) {
int addendo7;
int addendo 8;

scanf ("%d", &addendo7);
scanf ("%d", &addendo8);

printf ("\n");

printf ("Risultato: %d", addendo7 + addendo ;
}
else if (command == 5) {
printf (I comandi disponibili: \n");
printf (1. Addizione \n");
printf (2. sottrazione \n");
printf (3. moltiplicazione \n");
printf (4. divisione \n");
}
else {
if (command == -1) {
break;
}
command = 0;
printf ("Comando non valido\n");
}

} /*fine while*/

return 0;
} /*fine main*/

Ora immaginiamo se la funzione di ogni if è in una funzione, per un totale di quattro funzioni e quattro prototipi:

int addizione (int primo, int secondo);
int sottrazione (int primo, int secondo);
int moltiplicazione (int primo, int secondo);
int divisione (int primo, int secondo);

E quattro funzioni, ricordo che il nome e gli argomenti (...e il tipo) dovranno essere uguali al prototipo:

int addizione (int primo, int secondo) {

return primo + secondo;
}

Ci sarà solo in valore di ritorno che cambierà per lo scopo di ogni funzione.

Un'altra modifica da fare sarà alla catena di if, che dovranno si sempre chiedere in input due numeri, ma solo che non sarà la funzione main ha eseguirne il risultato, ben si, la funzione chiamata da essa:


if (command == 1) {
int addendo1;
int addendo2;

scanf ("%d", &addendo1);
scanf ("%d", &addendo2);

printf ("\n");

printf ("RISULTATO: %d", addizione (addendo1, addendo2) );
}
else if (command == 2) {
int addendo3;
int addendo4;

scanf ("%d", &addendo3);
scanf ("%d", &addendo4);

printf ("\n");

printf ("RISULTATO: %d", sottrazione (addendo3, addendo4) );
}
else if (command == 3) {
int addendo5;
int addendo 6;

scanf ("%d", &addendo5);
scanf ("%d", &addendo6);

printf ("\n");

printf ("RISULTATO: %d", moltiplicazione (addendo5, addendo6) );
}
else if (command == 4) {
int addendo7;
int addendo 8;

scanf ("%d", &addendo7);
scanf ("%d", &addendo8);

printf ("\n");

printf ("RISULTATO: %d", divisione (addendo7, addendo8) );
}
else if (command == 5) {
printf (I comandi disponibili: \n");
printf (1. Addizione \n");
printf (2. sottrazione \n");
printf (3. moltiplicazione \n");
printf (4. divisione \n");
}
else {
if (command == -1) {
break;
}
command = 0;
printf ("Comando non valido\n");
}

Si avrà il seguente codice:

#include<stdio.h> /*libreria standard*/
#define ADDIZIONE 1
#define SOTTRAZIONE 2
#define MOLTIPLICAZIONE 3
#define DIVISIONE 4

/*main*/
int main (void) {
int command = 0; /*variabile per fargli impartire un comando*/

while (command != -1) { /*crea un ciclo while per non far terminare il programma alla fine
di una operazione*/
if (command == 1) {
int addendo1;
int addendo2;

scanf ("%d", &addendo1);
scanf ("%d", &addendo2);

printf ("\n");

printf ("RISULTATO: %d", addizione (addendo1, addendo2) );
}
else if (command == 2) {
int addendo3;
int addendo4;

scanf ("%d", &addendo3);
scanf ("%d", &addendo4);

printf ("\n");

printf ("RISULTATO: %d", sottrazione (addendo3, addendo4) );
}
else if (command == 3) {
int addendo5;
int addendo 6;

scanf ("%d", &addendo5);
scanf ("%d", &addendo6);

printf ("\n");

printf ("RISULTATO: %d", moltiplicazione (addendo5, addendo6) );
}
else if (command == 4) {
int addendo7;
int addendo 8;

scanf ("%d", &addendo7);
scanf ("%d", &addendo8);

printf ("\n");

printf ("RISULTATO: %d", divisione (addendo7, addendo8) );
}
else if (command == 5) {
printf (I comandi disponibili: \n");
printf (1. Addizione \n");
printf (2. sottrazione \n");
printf (3. moltiplicazione \n");
printf (4. divisione \n");
}
else {
if (command == -1) {
break;
}
command = 0;
printf ("Comando non valido\n");
}

} /*fine while*/

return 0;
} /*fine main*/

Con questo metodo il codice della calcolatrice sarò più scalabile e riutilizzabile.


Ciao!
avatar
Admin
Admin
Admin

Messaggi : 148
Punti : 14977
Reputazione : 0
Data d'iscrizione : 24.04.11
Età : 38
Località : Emiglia Romagna

Visualizza il profilo dell'utente http://c88software.blogspot.com

Torna in alto Andare in basso

Torna in alto

- Argomenti simili

 
Permessi di questa sezione del forum:
Non puoi rispondere agli argomenti in questo forum