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 Rimarcare come l’implementazione sia solo l’ultimo passo
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++) Rimarcare come l’implementazione sia solo l’ultimo passo
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 Rimarcare come l’implementazione sia solo l’ultimo passo
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); Rimarcare come l’implementazione sia solo l’ultimo passo 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) Rimarcare come l’implementazione sia solo l’ultimo passo 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)); Rimarcare come l’implementazione sia solo l’ultimo passo int valore = 5; printf( “Il contenuto di valore e’: %d” , valore); printf( “Esecuzione terminata”); Stampa il messaggio adoperando valore Stampa il messaggio
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 Rimarcare come l’implementazione sia solo l’ultimo passo 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 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 #include <stdlib.h> #include <stdio.h> void stampa_vettore(int vet[4]){ int i; for(i=0; i<4; i++) // mostra gli elementi della sequenza uno alla volta printf(“posizione %d: %d\n”, i , vet[i] ); } int main(void){ int vettore[4]; // vettore degli elementi vettore[0]=54; vettore[1]=21; vettore[2]=63; vettore[3]=7; printf(“Ecco il vettore:\n”); stampa_vettore(vettore): 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 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 …
i=4 Acquisizione di una sequenza di interi e calcolo della media i=2 22 23 24 25 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 } … Inserisci il valore alla posizione 0 e premi Invio 5 Inserisci il valore alla posizione 1 e premi Invio i=2 i=4 i=1 i=3 i=0 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 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 Rimarcare come l’implementazione sia solo l’ultimo passo
Funzione cin Acquisisce dei dati da tastiera e li ripone nelle variabili di destinazione indicate determinando automaticamente il tipo delle stesse Sintassi: cin >> variabile; Rimarcare come l’implementazione sia solo l’ultimo passo 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 Rimarcare come l’implementazione sia solo l’ultimo passo int valore1; float valore2; cin>>valore1; cin>>valore2; int valore1; float 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); Rimarcare come l’implementazione sia solo l’ultimo passo int valore = 5; cout << “Il contenuto di valore e’: ” << valore; cout << “Esecuzione terminata”; Stampa il messaggio seguito da valore Stampa il messaggio
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 Rimarcare come l’implementazione sia solo l’ultimo passo 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 …
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 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]); printf("%d\n", vettore[i]); } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 #include<iostream.h> int main(void){ int vettore[4]; int i; for(i=0; i<4; i++) cin >> vettore[i]; cout << vettore[i] <<endl ; } Rimarcare come l’implementazione sia solo l’ultimo passo
Email: pomfar@dia.unisa.it