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
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.
-
Appunti di Parallel Computing
-
Riassunto esame Parallel computing, Prof. Marco Bertini, libro consigliato Parallel Programming for Multicore and C…
-
Appunti di Secure Cloud Computing (Cybersecurity and Cloud)
-
Appunti di Advanced algorithms and graph mining