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]