Sie sind auf Seite 1von 9

2

Lo scopo
Si vuole scrivere un programma in linguaggio
C che chieda allutente di introdurre da
Il primo esperimento tastiera due numeri interi e visualizzi il valore
della loro somma sul video

Ver. 2.4

2010 - Claudio Fornaro - Corso di programmazione in C

3 4

Soluzione informale Le variabili


Le operazioni da svolgere saranno le I numeri richiesti vengono immagazzinati
seguenti, nellordine indicato (quindi nella memoria centrale del calcolatore (RAM)
costituiscono lalgoritmo di soluzione di questo Ciascun numero sar immagazzinato in una
problema): piccola porzione di memoria detta variabile
1. Chiedere il primo numero costituita da un certo numero di byte
2. Chiedere il secondo numero A ogni variabile il programmatore d un nome
3. Calcolare la somma del primo numero e del per potersi riferire ad essa
secondo numero
4. Visualizzare il risultato
5 6

Le variabili Le variabili
Allora la sequenza delle operazioni da Anche il risultato della somma dovr essere
svolgere pu essere descritta pi immagazzinato nella memoria del calcolatore
dettagliatamente come segue: in una variabile, quindi avremo:
1. Chiedere il primo numero e metterlo in una 1. Chiedere il primo numero e metterlo in una
variabile di nome A variabile di nome A
2. Chiedere il secondo numero e metterlo in una 2. Chiedere il secondo numero e metterlo in una
variabile di nome B variabile di nome B
3. Calcolare la somma di A e B 3. Calcolare la somma di A e B e mettere il risultato in
4. Visualizzare il risultato una variabile di nome S
4. Visualizzare il contenuto della variabile S

7 8

Riduzione allessenziale Input da tastiera


Riducendo al minimo indispensabile quanto Input significa mettere dentro
scritto senza perdere alcuna informazione, si Le operazioni di input sono quelle tramite le
ha la seguente sequenza di operazioni: quali il calcolatore riceve dei dati dallesterno
Input
Per leggere un numero dalla tastiera e
Chiedere A memorizzarlo in una variabile si pu ad
Input
Chiedere B esempio utilizzare la funzione scanf:
A+BS Elaborazione scanf("%d", &A)
Visualizzare S Output Notare che la variabile A preceduta dal
carattere &
La funzione precedente assegna ad A il valore
intero (i dettagli in seguito) letto dalla tastiera
9 10

Output su video Assegnazioni di variabili


Output significa mettere fuori Assegnare un valore ad una variabile significa
Le operazioni di output sono quelle tramite le memorizzare in essa un valore
quali il calcolatore mostra i risultati Per assegnare un valore si usa il simbolo =:
X = 12
Per visualizzare il valore di una variabile si pu
utilizzare ad esempio la funzione printf: Il valore pu essere il risultato di un calcolo:
printf("%d", S) S = A+B
questo indica che in S viene memorizzato il
Notare che la variabile S non preceduta dal
valore risultante dal calcolo A+B
carattere &
Il segno = significa prende il valore di:
La funzione precedente visualizza un numero S prende il valore del risultato di A+B
intero: quello contenuto nella variabile A
Ogni volta che si assegna un valore ad una
(i dettagli in seguito)
variabile, il contenuto precedente viene perso

11 12

Bozza di soluzione Punto e virgola


Con quanto visto, la sequenza di operazioni Le istruzioni devono terminare sempre con un
viste precedentemente diventa: punto e virgola:
scanf("%d", &A) scanf("%d", &A);
scanf("%d", &B) scanf("%d", &B);
S = A + B S = A + B;
printf("%d", S) printf("%d", S);

Ma mancano ancora alcune parti per essere


un programma C completo
13 14

Definizione delle variabili Il programma principale


Tutte le variabili utilizzate nel programma Le istruzioni che costituiscono il programma
devono essere definite devono essere racchiuse tra parentesi graffe
Le definizioni vanno collocate tutte insieme per formare un blocco. Se questo lunico
prima delle istruzioni eseguibili: presente, deve essere chiamato main:
int A, B, S; main()
scanf("%d", &A); {
scanf("%d", &B); int A, B, S;
S = A + B; scanf("%d", &A);
printf("%d", S); scanf("%d", &B);
S = A + B;
int indica che A, B ed S sono variabili printf("%d", S);
adeguate a contenere valori interi }

15 16

Il programma principale I file di intestazione


Per far terminare il programma, si usa Per utilizzare le funzioni di input/output (I/O)
listruzione return (seguita da un numero, in necessario che allinizio del file C sia indicato
genere 0) collocata alla fine del blocco main: il nome del file di intestazione che le descrive
(stdio.h) con la direttiva #include:
main()
{ #include <stdio.h>
int A, B, S; main()
scanf("%d", &A); {
scanf("%d", &B); int A, B, S;
scanf("%d", &A);
S = A + B; scanf("%d", &B);
printf("%d", S); S = A + B;
return 0; printf("%d", S);
} return 0;
}
17 18

int main() Compilazione


Sebbene non obbligatorio secondo lo Ora il programma pu essere compilato
standard, molti compilatori segnalano un ottenendo il corrispondente file eseguibile
errore se main non preceduto da int Mandando in esecuzione leseguibile il
#include <stdio.h> programma chieder due numeri e dar come
int main() risultato il valore della somma
{
int A, B, S;
scanf("%d", &A); x
scanf("%d", &B); C:\>primo.exe
S = A + B; 12
printf("%d", S); 23 Attende linput (di A)
return 0; 35 Attende linput (di B)
} Visualizza S

19 20

Miglioramento input Miglioramento input


Quando il programma parte, non informa Dopo i miglioramenti indicati, allesecuzione si
lutente di essere in attesa che egli introduca ottiene la seguente schermata:
due valori da sommare
E utile far precedere ciascuna scanf da x
unistruzione printf che informi lutente su C:\>primo.exe
Introduci 1o valore: 12
che cosa egli debba fare: Introduci 2o valore: 23
printf("Introduci 1o valore: "); 35

scanf("%d", &A);
printf("Introduci 2o valore: ");
scanf("%d", &B);
21 22

Miglioramento output Risultato finale


Il risultato del calcolo viene mostrato a video Dopo i miglioramenti indicati, si ottiene la
come semplice numero, ma preferibile seguente schermata:
aggiungere una scritta che ne specifichi il
significato x
C:\>primo.exe
Si pu aggiungere tale scritta tra le virgolette Primo valore: 12
della stessa printf che visualizza S: Secondo valore: 23
La somma vale: 35
printf("La somma vale: %d", S);

23 24

Soluzione finale Esercizi


#include <stdio.h> 1. Scrivere un programma che chieda di
int main() introdurre 3 numeri A, B e C dalla tastiera e
{ successivamente visualizzi il risultato dei
int A, B, S; seguenti calcoli:
printf("Primo valore? "); 1) AB 2) AB+C 3) ABC
scanf("%d", &A); 2. Scrivere un programma che chieda due numeri
printf("Secondo valore? "); e li memorizzi nelle variabili A e B.
Il programma deve ora scambiare il contenuto
scanf("%d", &B); di A e di B (es. se inizialmente A contiene 12 e
S = A + B; B 27, dopo lo scambio A contiene 27 e B 12).
printf("La somma vale: %d", S); Suggerimento: si considerino 2 bicchieri, uno rosso
return 0; che contiene acqua e uno blu che contiene aranciata,
travasando opportunamente, si vuole che quello rosso
} contenga aranciata e quello blu acqua.
25 26

Soluzione esercizio 1 Soluzione esercizio 1


1. Prima soluzione: (Continuazione)
#include <stdio.h> X = A-B;
int main() printf("Risultato 1 = %d\n", X);
{ Y = AB+C;
int A, B, C, X, Y, Z; printf("Risultato 2 = %d\n", Y);
printf("Primo valore? "); Z = AB-C;
scanf("%d", &A); printf("Risultato 3 = %d\n", Z);
printf("Secondo valore? "); return 0;
scanf("%d", &B); }
printf("Terzo valore? "); Nota: \n fa s che la riga successiva venga
scanf("%d", &C); visualizzata a capo ( il ritorno a capo)
continua...

27 28

Soluzione esercizio 1 Variazioni esercizio 1


Schermata risultante dallesecuzione: Poich i risultati dei calcoli sono memorizzati
in variabili diverse, si possono eseguire prima
x i 3 calcoli e poi visualizzare i 3 risultati:
C:\>primo.exe
Primo valore? 44 X = AB;
Secondo valore? 23 Y = AB+C;
Terzo valore? 4
Risultato 1 = 21
Z = ABC;
Risultato 2 = 25 printf("Risultato 1 = %d\n", X);
Risultato 3 = 17 printf("Risultato 2 = %d\n", Y);
C:\>_
printf("Risultato 3 = %d\n", Z);
29 30

Variazioni esercizio 1 Variazioni esercizio 1


In questo esempio le variabili X, Y e Z dopo Si possono utilizzare i valori intermedi:
essere state visualizzate non vengono pi X = AB;
utilizzate, si pu allora risparmiare memoria printf("Risultato 1 = %d\n", X);
definendo e utilizzando solo la X (ma non si
possono fare prima i 3 calcoli e poi le 3 qui X vale AB
visualizzazioni): X = X+C;
X = AB; printf("Risultato 2 = %d\n", X);
printf("Risultato 1 = %d\n", X);
X = AB+C; qui X vale AB+C
printf("Risultato 2 = %d\n", X); X = XCC;
X = ABC; printf("Risultato 3 = %d\n", X);
printf("Risultato 3 = %d\n", X);

31 32

Variazioni esercizio 1 Soluzione esercizio 2


Si possono indicare i calcoli anche nella Non si pu scrivere:
funzione printf(): A = B;
printf("Ris 1 = %d\n", AB); B = A;
printf("Ris 2 = %d\n", AB+C); Eseguendo listruzione A=B:
printf("Ris 3 = %d\n", ABC); il (vecchio) valore di A viene perso
e A assume il (vecchio) valore di B
In questo esercizio una soluzione utile in
Nella successiva istruzione B=A:
quanto i valori calcolati non servono ad altro e
B assume il nuovo valore di A (appena
non serve memorizzarli
assegnato, cio il vecchio B);
Quindi alla fine entrambe le variabili
contengono il vecchio valore di B
33 34

Soluzione esercizio 2 Soluzione esercizio 2


Serve una variabile temporanea di scambio: La soluzione con 2 variabili temporanee
Temp = A; salva il vecchio A in Temp meno efficiente (usa una variabile in pi ed
A = B; copia in A il vecchio B esegue unoperazione di assegnamento in
B = Temp; copia in B il vecchio A salvato pi) e non quindi preferibile:
in Temp TempA = A;
TempB = B;
A = TempB;
Temp B = TempA;

A B


Il codice completo nel file con le soluzioni

Das könnte Ihnen auch gefallen