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]
Scarica

(Linguaggio C/C++) Lezione 1