Se ti sei perso la guida precedente clicca qui: Le variabili
In questa lezione analizzeremo la quinta riga del codice sottostante che assegna un valore letto da tastiera a due variabili dichiarate nel programma, stampando la loro somma a video.
1 /*Somma di due numeri*/ 2 #include <stdio.h> 3 main(){ 4 int a, b, s; 5 scanf("%d %d", &a, &b); 6 s = a + b; 7 printf("%d", s); 8 }
La funzione che ci consente di leggere un valore da tastiera prende il nome di scanf. Come abbiamo visto nella lezione “Le librerie” esistono alcune funzioni predefinite che possono essere richiamate facilmente tramite il loro nome, queste funzioni sono contenute nelle librerie del linguaggio C. La funzione scanf è contenuta nella libreria stdio.h (standard input-output) e permette di leggere un valore da tastiera e assegnarlo ad una variabile del programma. La struttura dell’istruzione scanf è la seguente:
scanf(“specificatori di formato”, variabili);
L’istruzione scanf è composta da una prima parte racchiusa tra virgolette che contiene gli specificatori di formato che non sono nient’altro che dei caratteri che identificano il tipo di variabile da leggere (intero, char, float…), e da una seconda parte che contiene le variabili a cui gli specificatori di formato fanno riferimento. Quindi come si può ben intuire dobbiamo avere uno specificatore di formato per ogni variabile da leggere. Gli specificatori di formato standard del linguaggio c sono i seguenti:
- %d: dati numerici interi (int);
- %f: dati numerici in virgola mobile (float e double);
- %c: dati formati da un solo carattere (char);
- %s: dati stringa (concatenazioni di più caratteri);
Nella funzione scanf, l’ordine degli specificatori e delle variabili è molto importante, proprio perché il primo specificatore fa riferimento alla prima variabile, il secondo specificatore fa riferimento alla seconda variabile e così via… proprio come mostrato nell’immagine sottostante:
Questa istruzione, tratta dal nostro esempio “Somma di due numeri”, legge prima il valore intero “id” e successivamente il valore decimale “prezzo”.
Come possiamo ben notare i nomi delle variabili sono preceduta dal carattere &. Il motivo è molto semplice, la funzione scanf non lavora sulle variabili ma sugli indirizzi a cui puntano queste variabili. Sembra difficile ma fidatevi che è molto più semplice di come sembra. Provate ad aiutarvi con l’immagine sottostante.
Il valore di ogni variabile è contenuto nella memoria del nostro computer, e quindi ogni variabile punterà ad una cella di memoria contenente il suo valore. La funzione scanf lavora sulla cella di memoria puntata dalla variabile e il carattere & restituisce esattamente l’indirizzo della cella di memoria della variabile che lo segue. Quindi in parola povere scanf riceve il valore intero da tastiera (%d) e lo inserisce all’indirizzo restituito dall’operatore & della variabile “id”. Il carattere & va messo per quasi tutti i tipi di dato letti da tastiera, con l’eccezione delle stringhe di caratteri che non ne hanno bisogno per un semplice motivo che analizzeremo nelle guide successivo.
Perciò dopo questo breve discorso teorico, abbiamo compreso che per leggere dei valori da tastiera (carattere o numero che sia) abbiamo bisogno di tot variabili e tot specificatori di formato a seconda di quanti valori vorremmo leggere e prima dei nomi delle variabili va messo il carattere &, fatta eccezione per le stringhe di caratteri che non ne hanno bisogno.
Vediamo degli esempi:
Leggere un numero decimale:
float totale; // dichiaro una variabile di tipo float scanf("%f", &totale); // leggo un valore decimale da tastiera e lo inserisco nella variabile totale
Quando eseguiamo il programma dobbiamo digitare il nostro numero decimale e successivamente premere INVIO. La variabile “totale” avrà ora come valore il numero da noi inserito.
Leggere due valori, un carattere e un numero intero:
int eta; //dichiaro una variabile di tipo intero char n; // dichiaro una variabile di tipo carattere
scanf("%c %d", n, eta); //leggo un carattere e lo metto nella variabile "n" e successivamente leggo un numero e lo metto nella variabile "eta"
Quando eseguiamo il programma dobbiamo digitare un carattere e premere INVIO e successivamente digitare un numero intero e premere INVIO. Nella variabile nome e nella variabile eta saranno comparsi i valori da noi inseriti.
Leggere una stringa di caratteri
char nome[20]; scanf("%s", nome);
Fate attenzione che durante l’inserimento della variabile non è ammesso il carattere spazio, il quale viene visto come carattere terminatore. Nel caso in cui inseriste la seguente stringa:
stefano marco
all’interno della variabile nome troverete solo la parola stefano.
Con questa lezione abbiamo imparato un tassello molto importante che va a formare le basi della programmazione in C. Ora possiamo passare alle operazioni sulle variabili analizzando quindi la sesta riga del nostro codice: Operazioni sulle variabili
Lascia un like alla nostra pagina Facebook per rimanere sempre aggiornato. 😉
Staff Melabu