G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++...

67
G. Mecca – M. Samela – Università della Basilicata G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione 2.6 Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons (vedi ultima pagina)

Transcript of G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++...

Page 1: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

G. Mecca – M. Samela – Università della Basilicata G. Mecca – M. Samela – Università della Basilicata

Programmazione Procedurale in Linguaggio C++

Elementi di Base

Parte 7

Dettagli e Approfondimenti

versione 2.6Questo lavoro è concesso in uso secondo i termini di una licenza Creative Commons

(vedi ultima pagina)

Page 2: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

2G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Sommario

Ricapitolazione ANSI C++

Compilatori in Ambiente Linux Approfondimenti sui Tipi di Dato

Altri Tipi di Dato Operatore di Cast Espressioni Differenze con il C

Elementi di Base: Dettagli e Approfondimenti >> Sommario

Page 3: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

3G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Ricapitolazione

Elementi di Basenozioni sintattiche di basenozioni sulla dichiarazione dei datinozioni sulle operazioni di base sui dati di

un programma In sintesi

quello che serve per scrivere programmi che si comportano come una calcolatrice

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 4: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

4G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Nozioni Sintattiche di Base

Direttiveper librerie di sistema e librerie dell’utente#include <iostream.h>#include <iostream.h> (librerie di sistema)#include <fstream.h>#include <fstream.h> (librerie di sistema)#include “equazioniLib.h”#include “equazioniLib.h” (librerie utente)

Commentilinea singola // questo è un commento// questo è un commento

multilinea /* commento *//* commento */

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 5: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

5G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Nozioni Sintattiche di Base

Identificatorinomi degli oggetti di un programma

(variabili, costanti, parametri, moduli) Regole sintattiche

sequenza di lettere/cifre/_primo carattere: lettera o _codice ASCII a 7 bitsensibile alle maiuscoleescluse le parole chiave riservate (es: main)

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 6: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

6G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Dichiarazione dei Dati

Tipi di dato di baseint: 32 bit in complemento a 2, da -2 miliardi

a +2 miliardi circafloat: 32 bit in v.m., da -1038 a +1038 circadouble: 64 bit in v.m., da -10308 a +10308 ca.char: 8 bit, codice ASCII a 7 bitbool: 1 bit

Tipo string: classe di oggetti del C++

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 7: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

7G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Dichiarazione dei Dati

Dichiarazioni di costante simbolicaconst <tipo> <identificatore> = <valore>;es: const float PIGRECO = 3.1415;const float PIGRECO = 3.1415;

Semanticaspazio nella memoria del tipo specificato,

non modificabile, contenente il valore Vantaggi

poter cambiare il valore intervenendo solo sulla dichiarazione

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 8: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

8G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Dichiarazione dei Dati

Dichiarazioni di variabili<tipo> <identificatore>;<tipo> <identif1>, <identif2>, ... <identifn>;es: int raggio;int raggio;es: float cerchio, circonf;float cerchio, circonf;

Semanticaspazio nella memoria del tipo specificatomodificabile liberamente nel corso del

programma (lettura o assegnazione)

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 9: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

9G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Dichiarazione dei Dati

Attenzionesubito dopo la dichiarazione il valore della

variabile è casuale (indefinibile)è necessario inizializzare la variabile

leggendone il valore da un flusso o con un’istruzione di assegnazione

Esempioint raggio; cin >> raggio;int raggio; cin >> raggio;int raggio; raggio = 3;int raggio; raggio = 3;

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 10: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

10G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Dichiarazione dei Dati

In alternativainizializzazione contestuale alla

dichiarazionees: int raggio = 0;int raggio = 0;

Equivalente a due istruzioniint raggio;int raggio;raggio = 0;raggio = 0;

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 11: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

11G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Dichiarazione dei Dati

Attenzione (2)possibili errori di rappresentazione

Varie causelimitatezza dello spazio in memoria

(trabocco)natura della rappresentazione in virgola

mobile (arrotondamenti)

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 12: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

12G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzioni di Base sui Dati

Istruzioni di baseistruzioni di assegnazioneistruzioni di lettura e stampa

Istruzioni di assegnazioneservono ad assegnare il risultato di un

calcolo ad una variabile Istruzioni di lettura e stampa

servono ad acquisire e stampare i valori delle variabili

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 13: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

13G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzioni di Assegnazione

Sintassi<nomeVariabile><nomeVariabile> = < = <espressione>espressione>;;

Semanticaviene calcolato il valore dell’espressione se il valore risultante è compatibile con il

tipo della variabile, viene assegnato alla variabile (ovvero: il valore viene scritto nello spazio di memoria associato alla variabile)

altrimenti si genera un errore

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 14: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

14G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Espressioni

Formule per il calcolo di un valorecomposte di operandi e operatori

Operandicostantivariabili

Operatorioperatori predefinitifunzioni predefinite

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 15: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

15G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzioni di Lettura e Stampa

Basate sul concetto di “flusso”canale di comunicazione tra il processore

ed un dispositivo di ingresso o di uscita Standard input

flusso standard di ingresso, proveniente dalla tastiera

Standard outputflusso standard di uscita, diretto verso lo

schermo

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 16: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

16G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Concetto di Flusso

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

SchermoSchermo

Flusso di uscita

File su discoFile su disco

StampanteStampante

File su discoFile su disco

TastieraTastiera

Pro

cess

ore

Ese

gu

e le

istr

uzi

oni

del

Pro

gra

mm

a

Flusso di uscita

Flusso di uscita

Flusso di ingresso

Flusso di ingresso

StandardInput

StandardOutput

Page 17: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

17G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzioni di Stampa

Sintassicout << cout << <espressione><espressione>;;cout << cout << <espressione1><espressione1> << << <espressione2><espressione2> ... ; ... ;

espressione: costante, variabile, espr. complessa

Semanticaviene calcolato il valore di ciascuna

espressioneil valore viene inserito nel flusso diretto allo

schermo sotto forma di sequenza di caratteri

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 18: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

18G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzioni di Lettura

Sintassicin >> cin >> <variabile><variabile>;;

Semantica: input formattatoappena nel flusso è presente almeno una

riga, il processore analizza il flusso nell’analisi del flusso ignora eventuali spazi

bianchi inizialigli spazi bianchi vengono utilizzati anche

come separatori tra i valori

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 19: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

19G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Lettura e Stampa da e verso File

ofstreamflusso associato ad un file in cui si stampano dati

es: ofstream flussoSuFile (“fileDati.txt”);ofstream flussoSuFile (“fileDati.txt”);

ifstreamflusso associato ad un file da cui si leggono dei dati

es: ifstream flussoDaFile (“fileDati.txt”);ifstream flussoDaFile (“fileDati.txt”);

Per utilizzarli è necessario specificare#include <fstream.h>#include <fstream.h>

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 20: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

20G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Domande ed Esercizidi Riepilogo

Elementi di Base: Dettagli e Approfondimenti >> Ricapitolazione

Page 21: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

21G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

ANSI C++

Versione standard del C++successiva alla prima introduzione

Prevede alcune varianti nella sintassi Alcuni esempi

cambiamenti nelle direttive di inclusioneintroduzione dei “namespace”cambiamenti nella struttura del programma

principale

Elementi di Base: Dettagli e Approfondimenti >> ANSI C++

Page 22: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

22G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Elementi di Base: Dettagli e Approfondimenti >> ANSI C++

// Calcolo della superficie del cerchio// Calcolo della superficie del cerchio#include <iostream>#include <iostream>using namespace std;using namespace std;intint main() { main() { const float pigreco=3.14;const float pigreco=3.14; int raggio;int raggio; float cerchio, circonf;float cerchio, circonf; cout << “Immetti la lungh. del raggio” << endl;cout << “Immetti la lungh. del raggio” << endl; cout << “(deve essere un numero intero)” << endl;cout << “(deve essere un numero intero)” << endl; cin >> raggio;cin >> raggio; cerchio = raggio*raggio*pigreco;cerchio = raggio*raggio*pigreco; circonf = 2*pigreco*raggio;circonf = 2*pigreco*raggio; cout << “La circonferenza misura: “ << circonf << endl;cout << “La circonferenza misura: “ << circonf << endl; cout << “Il cerchio ha superficie: “ << cerchio << endl;cout << “Il cerchio ha superficie: “ << cerchio << endl; return 0;return 0;}}

Un Semplice Programma in ANSI C++

Page 23: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

23G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

ANSI C++

Le modifiche sono orientate prevalentemente alla programmazione a oggetti

Complicano la descrizione del linguaggioes: concetto di namespace

Nel seguito NON faremo riferimento al C++ ANSI

Elementi di Base: Dettagli e Approfondimenti >> ANSI C++

Page 24: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

24G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Compilatori in Ambiente Linux

Attenzionealcuni compilatori, però, richiedono

necessariamente codice ANSI C++ Esempio

GCC (GNU C Compiler) compilatore storico per Linux – digerisce solo ANSI C++

Utilizzocompilazione: g++ <sorgente>.cppesecuzione: ./a.out

Elementi di Base: Dettagli e Approfondimenti >> ANSI C++

>>

Page 25: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

25G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Compilatori in Ambiente Linux

La particolarità di gccè una collezione di compilatori

Compilatore FORTRANg77stesse modalità di funzionamento di gcc

Utilizzo compilazione: g77 <sorgente>.foresecuzione: ./a.out

Elementi di Base: Dettagli e Approfondimenti >> ANSI C++

>>

Page 26: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

26G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Approfondimenti sui Tipi di Dato

Finoraci siamo concentrati solo sui tipi di dato

fondamentali del C++ Ma

esistono altri tipi di datole regole di compatibilità sono più

complesse di quelle che abbiamo descritto

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Page 27: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

27G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Altri Tipi di Dato

Esistono altri tipi Intero corto: short int

esempio: short int raggio;short int raggio;16 bit di memoria, valori (-32768, +32767)

Intero lungo: long intesempio: long int risultato;long int risultato;tipicamente: bit int ≤ bit long int

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Page 28: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

28G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Altri Tipi di Dato

Intero con segno/senza segnosigned int risultato;signed int risultato;signed short int risultato; signed short int risultato; unsigned int risultato;unsigned int risultato;unsigned long int risultato;unsigned long int risultato;

Reali lunghi: long doubleesempio: long double circonferenza;long double circonferenza;

tipicamente: #bit double ≤ #bit long double

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Page 29: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

29G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Altri Tipi di Dato

Caratteri con segno/senza segnochar car1;char car1;unsigned char car2;unsigned char car2;

Inoltreesiste un tipo per rappresentare caratteri al

di fuori del set di caratteri ASCII standardtipo wchar_t wchar_t (“wide char type”)normalmente 16 bit per la rappresentazionedipende dal compilatore

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Page 30: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

30G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Altri Tipi di Dato

Attenzionea differenza di quanto affermato per

semplicità in precedenza, lo spazio assegnato a ciascun tipo di dato non è fisso

dipende dal compilatore e dal processore Esempio

in alcune macchine int può essere di 32 bitin altre macchine di 16 bit

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Page 31: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

31G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Altri Tipi di Dato

Operatore sizeofoperatore fornito dal linguaggio per scoprire

la dimensione esatta attribuita dal processore ad una variabile o un tipo di dato

Sintassisizeof(<tipo>)sizeof(<tipo>)sizeof(<variabile>)sizeof(<variabile>)

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Page 32: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

32G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Altri Tipi di Dato

Esempi

int i;int i;cout << "i : " << sizeof(i); //4 cout << "i : " << sizeof(i); //4 cout << "short int: " << sizeof(short int); //2cout << "short int: " << sizeof(short int); //2cout << "int : " << sizeof(int); //4 cout << "int : " << sizeof(int); //4 cout << "long int: " << sizeof(long int); //4cout << "long int: " << sizeof(long int); //4cout << "char : " << sizeof(char); //1cout << "char : " << sizeof(char); //1cout << "float: " << sizeof(float); //4cout << "float: " << sizeof(float); //4cout << "double: " << sizeof(double); //8cout << "double: " << sizeof(double); //8cout << "long double:“<< sizeof(long double);//10cout << "long double:“<< sizeof(long double);//10

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Page 33: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

33G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Una Classificazione Complessiva

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Tipi di base del C++

tipi “enumerabili”

tipo booleano boolbooltipi carattere charchar

unsigned charunsigned char

tipi interi shortshortintintlonglongunsigned shortunsigned shortunsigned intunsigned intunsigned longunsigned long

tipi in virgola mobile

floatfloatdoubledoublelong doublelong double

wchar_twchar_t

Page 34: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

34G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Compatibilità tra Tipi

Le regole di compatibilità tra tipi sono più complesse di quanto visto finoratutti i tipi di base sono compatibili tra loro

In particolareil tipo char è considerato un tipo numerico

(valore di un carattere pari al codice ASCII)il tipo bool è considerato un tipo numerico

(valore pari a 0 oppure 1); qualsiasi valore diverso da 0 è considerato true

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Page 35: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

35G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Compatibilità tra Tipi

Esempio:int i;int i;

bool b;bool b;

char c;char c;

c = ‘a’;c = ‘a’;

i = c; // assegno un char ad un inti = c; // assegno un char ad un int

b = i; // assegno un int ad un boolb = i; // assegno un int ad un bool

cout << c << “ “ << i << “ “ b;cout << c << “ “ << i << “ “ b;

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

a 97 1

Page 36: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

36G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Compatibilità tra Tipi

Gerarchia di Tipi Numericitipo booleano: bool (tipo meno generale)tipi carattere: char, unsigned chartipi interi: short int, int, long int (tutti signed e

unsigned)tipi reali: float, double, long double

(tipi più generali) Nelle espressioni sono compatibili

troncamento e ampliamento

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Page 37: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

37G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Compatibilità tra Tipi

Attenzionequeste sono da considerarsi idiosincrasie

del C/C++ (non presenti in FORTRAN)è opportuno evitare di utilizzare queste

funzionalità (i caratteri sono diversi dagli interi)

è importante conoscerle perché a volte nascondono errori (es: assegnazioni errate)

Elementi di Base: Dettagli e Approfondimenti >> Approfondimenti sui Tipi

Page 38: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

38G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Operatore di Cast

Riassumendoogni dato trattato dal processore ha un tipoalcuni valori possono essere considerati di

tipi diversi Esempio: il numero 1

valore di tipo boolvalore di tipo intvalore di tipo floatvalore di tipo double

Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast

Importante

Page 39: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

39G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Operatore di Cast

In questi casiil valore può essere soggetto a conversioni

di tipo Conversioni di tipo

consistono nella trasformare la rappresentazione in memoria del valore

che da quel momento è considerato di tipo diverso rispetto al suo tipo originale

Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast

Page 40: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

40G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Operatore di Cast

Normalmentele conversioni di tipo vengono effettuate

automaticamente dal processorema possono essere richieste esplicitamente

dal programmatore Operazioni di “Cast”

operazione attraverso cui il programmatore chiede esplicitamente di trasformare la rappresentazione e il tipo di un valore

Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast

Page 41: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

41G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Operatore di Cast

Operatori di Castl’operazione viene realizzata attraverso

opportuni operatori unariun operatore per ciascun tipo

Esempioes: float x; bool b; float x; bool b; x = (float) 3; x = (float) 3; b = (bool) x; b = (bool) x;

Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast

dato di tipo int, valore 3

dato di tipo float, valore 3.0

dato di tipo bool, valore 1

Page 42: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

42G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Operatore di Cast

Sintassi(<tipo>)<valore>(<tipo>)<valore>

Semanticasupponiamo che <valore> sia di tipo <tipo’>il processore trasforma la rappresentazione

in memoria del <valore> nella corrispond. rappresentazione del <tipo> specificato

da quel momento <valore> è considerato di tipo <tipo>

Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast

Page 43: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

43G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Operatore di Cast

Utilizzoconsentono di controllare le trasformazioni

di tipo nelle espressioni Esempio:

Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast

float media; int sommaVoti, numEsami;float media; int sommaVoti, numEsami;sommaVoti = 64;sommaVoti = 64;numEsami = 3;numEsami = 3;

media = media = (float)(float)sommaVoti/numEsami;sommaVoti/numEsami;cout << media;cout << media;

media = sommaVoti/numEsami;media = sommaVoti/numEsami;cout << media;cout << media; 21

21.3334

Page 44: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

44G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Operatore di Cast

Attenzionel’operatore ha priorità molto altaattenzione all’ordine di applicazione

Elementi di Base: Dettagli e Approfondimenti >> Operatore di Cast

media = (float)sommaVoti/numEsami;media = (float)sommaVoti/numEsami;cout << media;cout << media;

media = ((float)sommaVoti)/numEsami;media = ((float)sommaVoti)/numEsami;cout << media;cout << media;

21.3334

21.3334

media = (float)(sommaVoti/numEsami);media = (float)(sommaVoti/numEsami);cout << media;cout << media;

21

Page 45: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

45G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Espressioni

Un altro esempio di stranezza del C/C++in C++ tutte le istruzioni sono in effetti

considerate espressioniovvero regole per calcolare un valore

In particolarele istruzioni di assegnazione sono

complessivamente anche espressionile istruzioni di lettura e stampa sono

complessivamente anche espressioni

Elementi di Base: Dettagli e Approfondimenti >> Espressioni

Page 46: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

46G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Assegnazioni

Operatore di assegnazione (=)ha una duplice funzioneassegna il valore a destra alla variabile a sinistrarestituisce il valore assegnato

Esempioint a;int a;

a = 1; // assegna 1 ad a e restituisce 1a = 1; // assegna 1 ad a e restituisce 1

E’ possibile includere le assegnazioni in espressioni più complesse

Elementi di Base: Dettagli e Approfondimenti >> Espressioni

Page 47: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

47G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Assegnazioni

Esempio n.1int a, b, c;int a, b, c;a = (a = 5) + (b = 7);a = (a = 5) + (b = 7);

equivalente a; a = 5; b = 7; c = a + b;a = 5; b = 7; c = a + b;

Esempio n.2int a, b, c;int a, b, c;a = (b = (c = 0)); // equivalente a a=b=c=0;a = (b = (c = 0)); // equivalente a a=b=c=0;

equivalente a; c = 0; b = 0; a = 0;c = 0; b = 0; a = 0;

Elementi di Base: Dettagli e Approfondimenti >> Espressioni

Page 48: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

48G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzioni di Lettura e Stampa

Operatore di Lettura (>>)ha una duplice funzioneacquisisce il valore da assegnare alla varrestituisce 1 se la lettura si è svolta correttamente, 0

se c’è stato un errore Anche in questo caso

è possibile combinare le istruzioni di lettura e stampa in espressioni più complesse

Esempioint a, b, c;int a, b, c;cout << (cin >> a); // stampa 0 se c’è errorecout << (cin >> a); // stampa 0 se c’è errore

Elementi di Base: Dettagli e Approfondimenti >> Espressioni

Page 49: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

49G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Espressioni

Possono essere complesseIl C++ fornisce numerosi altri operatorile regole di precedenza sono intricate

Esempioperatori “bit a bit”: &, |, ~ operatori di scorrimento: >>, <<operatore condizionale: ?operatore “virgola”: ,

Elementi di Base: Dettagli e Approfondimenti >> Espressioni

Page 50: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

50G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Espressioni

Operatori unari con effetti collateralipossono essere postfissi o prefissi

Operatore postfissoeffetto collaterale dopo la valutazionees: a++a++ (valuta a e poi la incrementa)

Operatore prefissoeffetto collaterale prima della valutazionees: ++a ++a (incrementa a e poi valuta)

Elementi di Base: Dettagli e Approfondimenti >> Espressioni

Page 51: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

51G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Espressioni

Esempio 1int i, j, k;int i, j, k;

i = 10; j = 20;i = 10; j = 20;

k = i++ + j; // k vale 30k = i++ + j; // k vale 30

Esempio 1int i, j, k;int i, j, k;

i = 10; j = 20;i = 10; j = 20;

k = ++i + j; // k vale 31k = ++i + j; // k vale 31

Elementi di Base: Dettagli e Approfondimenti >> Espressioni

prima viene valutatala sottoespressione a(valore 10) e poi la variabile viene incrementata

prima viene incrementata la variabile a (valore 11) e poi viene valutatala sottoespressione

Page 52: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

52G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Una Annotazione Importante

Attenzioneè possibile programmare benissimo anche

ignorando le stranezze descritte in questa lezione

anzi, per molti versi si programma meglio se queste cose non vengono usate

servono a rendere più compatto ma anche più incomprensibile il codice

Elementi di Base: Dettagli e Approfondimenti >> Espressioni

Page 53: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

53G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Differenze con il C

In generaleil C è molto simile al “clean C” che abbiamo

approfonditoper alcuni aspetti è più spartanoe questo lo rende in molti casi più complesso

come linguaggio di programmazione Nel seguito

l’elenco delle principali differenze

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

Page 54: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

54G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Differenze con il C

Attenzioneimparare a scrivere programmi complessi in

C NON è tra gli obiettivi del corsosi tratta di un livello secondariole differenze vengono illustrate a scopo di

completezza, e per preparare gli studenti che dovessero successivamente programmare in C ad ulteriori approfondimenti

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

Page 55: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

55G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Differenze con il C

Tipo di ritorno del mainnormalmente int (non void, come ANSI C++)

Libreria di input/output#include <stdio.h>#include <stdio.h>

Definizione di costantiesiste la parola chiave “const”, ma ha una

semantica leggermente diversanormalmente si utilizza la direttiva #define

es: #define PIGRECO 3.14#define PIGRECO 3.14

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

Page 56: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

56G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Differenze con il C

Istruzioni di lettura e di stampasono basate sui flussi standard di ingresso e

uscita come in tutti i linguaggima ci sono differenze sintattiche

Differenza principalenon esistono cout e cin (che sono oggetti)istruzione printf per scrivere datiistruzione scanf per leggere dati

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

Page 57: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

57G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzione printf

Sintassiprintf(<stringa>);printf(<stringa>);printf(<stringaFormato>, argomenti);printf(<stringaFormato>, argomenti);

Stringa formatostringa che descrive la natura degli

argomenti successivi Esempi

printf(“Immetti il valore \n”);printf(“Immetti il valore \n”);printf(“Il cerchio vale: printf(“Il cerchio vale: %d%d”, cerchio);”, cerchio);

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

Page 58: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

58G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzione printf

Descrittori di formato%d: numero intero%f: numero reale%c: carattere singolo%s: sequenza di caratteri (stringa)

Attenzionein C non esiste il tipo stringale stringhe si rappresentano come array di

caratteri

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

Page 59: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

59G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzione scanf

Sintassiscanf(<stringaFormato>, scanf(<stringaFormato>, &&variabile);variabile);

Stringa formatoanaloga a quella della printf

Esempiscanf(“scanf(“%d%d”, ”, &&raggio);raggio);

Notaè indispensabile la & prima della variabile

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

ATTENZIONE:la mancanza della &è una fonte di erroremolto frequente

Page 60: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

60G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzione scanf

Infattiscanf è una procedurail secondo argomento deve essere

modificato attraverso il corrispond. param. Ma

in C esistono solo parametri standardper simulare la semantica dei parametri per

riferimento si utilizzano i puntatori

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

Page 61: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

61G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

// Calcolo della superficie del cerchio// Calcolo della superficie del cerchio#include <#include <stdio.hstdio.h>>#define PIGRECO 3.14#define PIGRECO 3.14intint main() { main() { // Dichiarazioni// Dichiarazioni int raggio;int raggio; float cerchio, circonf;float cerchio, circonf; // Operazioni // Operazioni printfprintf("Immetti la lungh. del raggio\n");("Immetti la lungh. del raggio\n"); printfprintf("(deve essere un numero intero)\n");("(deve essere un numero intero)\n"); scanfscanf("%d", &raggio);("%d", &raggio); cerchio = raggio * raggio * PIGRECO;cerchio = raggio * raggio * PIGRECO; circonf = 2 * PIGRECO * raggio;circonf = 2 * PIGRECO * raggio; printfprintf("La circonferenza misura: %f \n", circonf);("La circonferenza misura: %f \n", circonf); printfprintf("Il cerchio ha superficie: %f \n", cerchio);("Il cerchio ha superficie: %f \n", cerchio); return 0return 0;;}}

Un Semplice Programma in C

>>

Page 62: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

62G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzione scanf

Attenzionela scanf esegue un input formattatoesistono ulteriori procedure per effettuare

l’input non formattato nel caso di stringhe Le stringhe in C

non esiste il tipo stringuna stringa è un array di caratteri terminato

in maniera particolare (con un carattere ‘\0’)

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

Page 63: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

63G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Esempio

#include <stdio.h>#include <stdio.h>

int main() {int main() { char targa[8];char targa[8]; char modello[20];char modello[20]; printf("Immetti la targa : ");printf("Immetti la targa : "); scanf("%s", &targa); // input formattatoscanf("%s", &targa); // input formattato getchar(); // equivalente della ignoregetchar(); // equivalente della ignore printf("Immetti il modello : ");printf("Immetti il modello : "); gets(modello); // input non formattatogets(modello); // input non formattato printf("Dati dell'automobile : \n");printf("Dati dell'automobile : \n"); printf("Targa : %s\n", targa);printf("Targa : %s\n", targa); printf("Modello : %s\n", modello);printf("Modello : %s\n", modello); return 0;return 0;}}

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

NOTA: scanf e getsaggiungono automaticamenteil carattere ‘\0’ al terminedella stringa letta

Page 64: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

64G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Istruzione scanf

Inoltrenon è possibile effettuare il confronto tra

stringhe utilizzando == è necessario utilizzare la funzione strcmpstrcmp(s1, s2) ritorna 0 se le due stringhe

sono uguali, altrimenti un valore diverso da 0fa parte (come tutte le principali funzioni

sulle stringhe) della libreria string.h

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

Page 65: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

65G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Esempio

#include <stdio.h>#include <stdio.h>#include <string.h>#include <string.h>

int main() {int main() { char targa[8];char targa[8]; printf("Immetti la targa : ");printf("Immetti la targa : "); scanf("%s", &targa); // input formattatoscanf("%s", &targa); // input formattato if (strcmp(targa, "ab762de") == 0)if (strcmp(targa, "ab762de") == 0) { { printf("Auto corretta\n");printf("Auto corretta\n"); }} return 0;return 0;}}

Elementi di Base: Dettagli e Approfondimenti >> Differenze con il C

Page 66: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

66G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Riassumendo

Ricapitolazione ANSI C++

Compilatori in Ambiente Linux Approfondimenti sui Tipi di Dato

Altri Tipi di Dato Operatore di Cast Espressioni Differenze con il C

Elementi di Base: Dettagli e Approfondimenti >> Sommario

Page 67: G. Mecca – M. Samela – Università della Basilicata Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 7 Dettagli e Approfondimenti versione.

67G. Mecca - Programmazione Procedurale in Linguaggio C++G. Mecca - Programmazione Procedurale in Linguaggio C++

Termini della Licenza

This work is licensed under the Creative Commons Attribution-ShareAlike License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/1.0/ or send a letter to Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.

Termini della Licenza

Questo lavoro viene concesso in uso secondo i termini della licenza “Attribution-ShareAlike” di Creative Commons. Per ottenere una copia della licenza, è possibile visitare http://creativecommons.org/licenses/by-sa/1.0/ oppure inviare una lettera all’indirizzo Creative Commons, 559 Nathan Abbott Way, Stanford, California 94305, USA.