Sistemi e Tecnologie
Informatiche
Funzioni di Input/Output nel
linguaggio C/C++
Pompeo Faruolo
Funzioni di Input/Output
Le funzioni di Input ed Output consentono ad un
programma di comunicare con il mondo esterno
Le funzioni di Input consentono l’acquisizione di dati
ed informazioni da una fonte esterna:
Inserimento dati da tastiera
Lettura di un file su disco
Accesso ad una pagina web
Le funzioni di Output consentono di emettere delle
informazioni:
Visualizzazione di messaggi di testo sullo schermo
Stampa di documenti
Funzioni di Input/Output
I linguaggi C e C++ adoperano due differenti sistemi
per l’input e l’output dei dati (I/O)
Le funzioni disponibili nei rispettivi sistemi sono
sostanzialmente identiche
Esse si differenziano nel nome e nella sintassi d’uso
E.g.:
printf(“Salve mondo!\n”); (linguaggio C)
cout << “Salve mondo!” << endl; (linguaggio C++)
Funzioni di I/O (linguaggio C)
Richiedono l’inclusione dei file header:
#include<stdio.h>
#include<stdlib.h>
La funzione scanf(…) acquisisce dati da
tastiera
La funzione printf(…) visualizza dei dati sul
monitor
Funzione scanf
Acquisisce dei dati da tastiera e li ripone nelle variabili di
destinazione indicate
Sintassi: scanf(<stringa di conversione dei dati>, <elenco variabili>);
int valore;
scanf( “%d” , &valore);
Legge da Input
un dato numerico
e lo assegna a valore
Le variabili di destinazione devono essere dichiarate prima della
scanf
L’esecuzione della scanf interrompe il programma sino a che
l’utente non fornisce i dati richiesti seguiti dalla pressione del tasto
Invio
Funzione scanf
La stringa di conversione indica al programma di quale tipo
sono i dati forniti dall’utente
%d
Legge da input una dato numerico (int)
%l
Legge da input un dato numerico (long)
%f
Legge da input un dato numerico (float)
%c
Legge da input un carattere (char)
int valore1;
float valore2;
scanf(“%d”, &valore1);
scanf(“%f”, &valore2);
Funzione printf
Stampa un messaggio di testo sullo schermo
Il messaggio può far riferimento a delle variabili contenute nel
programma
Sintassi: printf(<messaggio>, <elenco variabili> (opzionale));
int valore = 5;
printf( “Il contenuto di valore e’: %d” , valore);
Stampa
il messaggio
printf( “Esecuzione terminata”);
Stampa
il messaggio
adoperando valore
Funzione printf
E’ possibile adoperare le sequenze di caratteri già viste per la scanf
per stampare sullo schermo il valore di variabili di tipo diverso
In tal caso, indicheremo le variabili da stampare dopo la stringa di
conversione separandole tra loro tramite una virgola
int Intero = 5;
float Float = 0.3;
char Carattere = ‘a’;
printf( “Intero: %d Float: %f Carattere: %c”, Intero, Float, Carattere);
Output:
Intero: 5 Float: 0.3 Carattere: a
Visualizzazione di una sequenza di interi
1 #include <stdlib.h>
2 #include <stdio.h>
3
4 void stampa_vettore(int vet[4]){
5 int i;
6 for(i=0; i<4; i++)
// mostra gli elementi della sequenza uno alla volta
7
printf(“posizione %d: %d\n”, i , vet[i] );
Inserisci il valore alla posizione 0 e premi Invio
85 }
9 Inserisci il valore alla posizione 1 e premi Invio
10 7 int main(void){
11 Inserisci
int vettore[4];
vettore degli
elementi
il valore alla// posizione
2 e premi
Invio
12 3
vettore[0]=54;
vettore[1]=21;
vettore[3]=7;
13 Inserisci
il valore alla posizione
3 e premivettore[2]=63;
Invio
14 12 printf(“Ecco il vettore:\n”);
15 stampa_vettore(vettore):
16 }
Ecco il vettore:
posizione 0: 54
posizione 1: 21
posizione 2: 63
posizione 3: 7
Acquisizione di una sequenza di interi e calcolo della media
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <stdlib.h>
#include <stdio.h>
void stampa_vettore(int v[4]){
int i;
for(i=0; i<4; i++) // mostra gli elementi della sequenza uno alla volta
printf(“ %d”,v[i]);
}
float media(int vet[4]){
int i , somma=0;
for(i=0; i<4; i++)
somma += vet[i]; // somma tutti gli elementi della sequenza uno alla volta
return (somma/4);
}
int main(void){
int vettore[4]; // vettore degli elementi da acquisire
int i;
…
Acquisizione di una sequenza di interi e calcolo della media
for(i=0; i<4; i++) {
printf(“Inserisci il valore alla posizione %d e premi Invio\n“,i);
scanf(“%d”,&vettore[i]); // legge gli elementi uno alla volta
}
…
22
23
24
25
Inserisci il valore alla posizione 0 e premi Invio
5
Inserisci il valore alla posizione 1 e premi Invio
7
Inserisci il valore alla posizione 2 e premi Invio
3
Inserisci il valore alla posizione 3 e premi Invio
12
26
27
28
29
i=0
i=2
i=3
i=1
i=4
printf(“La media di: “);
stampa_vettore(vettore); // mostra gli elementi del vettore
printf(“ e’: %f\n“, media(vettore)); // mostra la media degli elementi
}
La media di: 5 7 3 12 e’: 6.75
Funzioni di I/O (linguaggio C++)
Richiedono l’inclusione dei file header:
#include<iostream.h>
La funzione cin acquisisce dati da input
La funzione cout stampa dei dati in output
Funzione cin
Acquisisce dei dati da tastiera e li ripone nelle variabili di
destinazione indicate determinando automaticamente il tipo delle
stesse
Sintassi: cin >> variabile;
int valore;
cin >> valore;
Legge da Input un dato
e lo assegna a valore
Le variabili di destinazione devono essere dichiarate prima della cin
Funzione cin
L’esecuzione della cin interrompe il programma sino a che l’utente
non fornisce i dati richiesti seguiti dalla pressione del tasto Invio
Es
int valore1;
float valore2;
int valore1;
float valore2;
cin>>valore1;
cin>>valore2;
scanf(“%d”, &valore1);
scanf(“%f”, &valore2);
Funzione cout
Stampa un messaggio di testo sullo schermo
E’ possibile stampare insieme al messaggio il valore delle variabili
contenute nel programma
Sintassi: cout << <messaggio> << <variabile> (opzionale);
int valore = 5;
cout << “Il contenuto di valore e’: ” << valore;
Stampa
il messaggio
cout << “Esecuzione terminata”;
Stampa
il messaggio
seguito da valore
Funzione cout
E’ possibile stampare con una sola cout più variabili di tipo diverso
In tal caso, indicheremo le variabili da stampare intervallandole con il
messaggio attraverso la la sequenza di caratteri “<<“
Il simbolo endl viene utilizzato per ritornare a capo
int Intero = 5;
float Float = 0.3;
char Carattere = ‘a’;
cout << “Intero: “ << Intero << “ Float: “ << Float <<
endl << “ Carattere: “ << Carattere;
Output:
Intero: 5 Float: 0.3
Carattere: a
Acquisizione di una sequenza di interi e calcolo della media
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream.h>
void stampa_vettore(int vet[4]){
int i;
for(i=0; i<4; i++) // mostra gli elementi della sequenza uno alla volta
cout<<“ “<<vet[i];
}
int media(int vet[4]){
int i,somma=0;
for(i=0; i<4; i++)
somma += vet[i]; // somma tutti gli elementi della sequenza uno alla volta
return (somma/4);
}
int main(void){
int vettore[4]; // vettore degli elementi da acquisire
int i;
…
Acquisizione di una sequenza di interi e calcolo della media
21
22
23
24
for(i=0; i<4; i++) {
cout<<“Inserisci il valore alla posizione”<<i<<“ e premi Invio“<<endl;
cin>>vettore[i]; // legge gli elementi uno alla volta
}
…
Inserisci il valore alla posizione 0 e premi Invio
5
Inserisci il valore alla posizione 1 e premi Invio
7
Inserisci il valore alla posizione 2 e premi Invio
3
Inserisci il valore alla posizione 3 e premi Invio
12
25
26
27
28
cout<<“La media di: ";
stampa_vettore(vettore); // mostra gli elementi del vettore
cout<<“ e’: “<< media(vettore)<<endl; // mostra la media degli elementi
}
La media di: 5 7 3 12 e’: 6.75
Linguaggio C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include<stdlib.h>
#include<stdio.h>
int main(void){
int vettore[4];
int i;
for(i=0; i<4; i++)
scanf("%d", &vettore[i]);
for(i=0; i<4; i++)
printf("%d\n", vettore[i]);
}
Linguaggio C++
1 #include<iostream.h>
2
3
4 int main(void){
5 int vettore[4];
6 int i;
7
8 for(i=0; i<4; i++)
9
cin >> vettore[i];
10
11 for(i=0; i<4; i++)
12
cout << vettore[i] <<endl ;
13 }
14
15
Email:
[email protected]