Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
Scarica il documento per vederlo tutto.
vuoi
o PayPal
tutte le volte che vuoi
Linguaggio C++11
Il compilatore è un programma che traduce un codice scritto in un linguaggio di programmazione ad alto livello in linguaggio assemblare, generando i file oggetto e il linker è un programma che collega i file oggetto con sottoprogrammi ricorrenti (estratti dalle librerie o definiti dal programmatore), generando un file eseguibile, scritto in linguaggio macchina. Il loader è un programma che carica il file eseguibile nelle memorie di lavoro centrale del calcolatore.
L'interprete è un programma che traduce un'istruzione alla volta e la esegue direttamente.
Un programma interpretato, in esecuzione, richiede più memoria ed è meno veloce di un programma compilato; d'altra parte, un programma interpretato è più flessibile in fase di sviluppo o durante l'individuazione degli errori (debugging).
Tipi base, ordini e strutture
Il C++11 definisce alcuni tipi base ("primitive built-in types") di variabile, che includono le variabili numeriche ("arithmetic types") ed un tipo speciale, void. La dimensione di una variabile numerica di un dato tipo varie da macchina a macchina, ma viene generalmente una dimensione minima e un numero minimo di cifre significative:
- bool
- char/signed char/unsigned char
- (unsigned) short int
- (unsigned) int
- (unsigned) long int
- (unsigned) long long int
Il tipo bool rappresenta i valori true e false: se si converte un bool in un'altra variabile numerica si ottiene il valore 1 per true e 0 per false; se si converte una variabile numerica in bool si ottiene true per qualsiasi valore diverso da 0 e false per 0.
I tipi short int, int, long int e long long int sono con segno, così sono equivalenti a signed short int, signed int, signed long int e signed long long int.
Il tipo unsigned int può essere abbreviato in unsigned.
➁ I tipi in virgola mobile ("floating-point types") sono con segno.
Oss) Nel passare un valore di tipo in virgola mobile ad un soggetto di tipo intero ("integer type"), il valore è troncato alla sola parte intera.
Oss) Così come nelle operazioni tra int e float avviene la conversione implicita delle variabili int in float, nelle operazioni tra int e unsigned int (o due qualsiasi tipi signed e unsigned), avviene la conversione implicita nel tipo unsigned, che è considerato più potente.
➖ Rappresentazioni dei numeri sul calcolatore
➂ rappresentazioni di un numero decimale in virgola fissa, N il numero di posizioni di memoria, βN le basi {β ∈ ℕ, β ≥ 2} e K sono le cifre destinate alla parte decimale e:
x = (−1)ⁿ ⋅ Σai βi, dove ai∈{0,1,...,β−1}.
➃ Il fattore di scalatura è uguale per tutti i numeri rappresentabili in virgola fissa.
➄ rappresentazioni di un numero decimale in virgola mobile, N il numero di posizioni di memoria, βN le basi {β ∈ ℕ, β ≥ 2} e t sono le cifre destinate all'esponente e':
x = (−1)ⁿ ⋅ βⁱ ⋅ Σai βi, dove ai∈{0,1,...,β−1}.
m(x) = Σai βi e la mantissa è L ≤ e' ≤ U l’esponente.
La rappresentazione normalizzata prevede, per avere unicità, che aL ≠ 0, m = βt−1, quindi m(x) ∈ [βL−1, βt−1]. Se β=2, chiaramente aL è spesso non essere memorizzato sul calcolatore ("hidden bit").
➆ Il valore minimo in modulo che si può rappresentare nella rappresentazione normalizzata è: xmin = (1−β1−t) ⋅ βL βt−1 = βt−βL ÷ βt−1, mentre il valore massimo in modulo è: xmax = (β1−L) ⋅ βL−1 ÷ βt ÷ βt