Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di...

32
© Il Team di “Programmazione Scientifica” Corso di Laboratorio di Calcolo Variabili e memoria

Transcript of Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di...

Page 1: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Corso di

Laboratorio di

Calcolo

Variabili e memoria

Page 2: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Variabili e costanti

a = 2;

b = 3.5;

c = 2.;

0xffffa000

0xffffa001

0xffffa002 00000010

0xffffa003

0xffffa004

0xffffa005

0xffffa006

0xffffa007

Page 3: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Variabili e costanti

a = 2;

b = 3.5;

c = 2.;

Nota: per brevità

le variabili intere

sono rappresentate

usando solo 8 bit

0xffffa000

0xffffa001

0xffffa002 00000010

0xffffa003

0xffffa004

0xffffa005

0xffffa006

0xffffa007

Page 4: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Variabili e costanti

a = 2;

b = 3.5;

c = 2.;

0xffffa000

0xffffa001

0xffffa002 00000010

0xffffa003 01000000

0xffffa004 11100000

0xffffa005 00000000

0xffffa006 00000000

0xffffa007

3.5 = (1 + 0.75)*21

NOTA: l‟esponente è

rappresentato in

eccesso (cap.1,p.19)

Page 5: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Variabili e costanti

a = 2;

b = 3.5;

c = 2.; 0xffffa002 00000010

0xffffa003 01000000

0xffffa004 11100000

0xffffa005 00000000

0xffffa006 00000000

0xffffa007 01000000

0xffffa008 10000000

0xffffa009 00000000

0xffffa00a 00000000

2. = (1 + 0)*21

Page 6: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Variabili e costanti

a = 2;

b = 3.5;

c = 2.;

d = „f‟; 0xffffa003 01000000

0xffffa004 11100000

0xffffa005 00000000

0xffffa006 00000000

0xffffa007 01000000

0xffffa008 10000000

0xffffa009 00000000

0xffffa00a 00000000

0xffffa00b 01100110

f ↔ 102 (6616)

Page 7: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Operatori matematici

c = a + b;

0xffffa002 00000010

0xffffa003 01000000

0xffffa004 11100000

0xffffa005 00000000

0xffffa006 00000000

0xffffa007 11000000

0xffffa008 00000000

0xffffa009 00000000

0xffffa00a 00000000

Page 8: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Operatori matematici

c = a + b;

0xffffa002 00000010

0xffffa003 01000000

0xffffa004 11100000

0xffffa005 00000000

0xffffa006 00000000

0xffffa007 01000000

0xffffa008 10000000

0xffffa009 00000000

0xffffa00a 00000000

Nota: nel registro

della CPU il numero 2 viene “promosso” a

float

Page 9: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Operatori matematici

c = a + b;

0xffffa002 00000010

0xffffa003 01000000

0xffffa004 11100000

0xffffa005 00000000

0xffffa006 00000000

0xffffa007 01000000

0xffffa008 10000000

0xffffa009 00000000

0xffffa00a 00000000

Page 10: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Operatori matematici

c = a + b;

0xffffa002 00000010

0xffffa003 01000000

0xffffa004 11100000

0xffffa005 00000000

0xffffa006 00000000

0xffffa007 01000001

0xffffa008 00110000

0xffffa009 00000000

0xffffa00a 00000000

5.5 = (1 + 0.375)*22

Page 11: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Operatori speciali

a = 2;

b = ++a;

0xffffa002 00000010

0xffffa003

Page 12: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Operatori speciali

a = 2;

b = ++a;

0xffffa002 00000011

0xffffa003 00000011

Page 13: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Operatori speciali

a = 2;

b = ++a;

a = 2;

b = a++;

0xffffa002 00000010

0xffffa003

Page 14: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Operatori speciali

a = 2;

b = ++a;

a = 2;

b = a++;

0xffffa002 00000011

0xffffa003 00000010

Page 15: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica” 15

Caratteristiche del C

(strong) typing tutte le variabili vanno dichiarate

ogni istruzione è terminata dal “;”

parole riservate: char, double, float,

int,long, short, unsigned, while, for,

do, if, then, else, void

Tokens: parole chiave, identificatori/variabili, costanti,

operatori, simboli di interpunzione Es: int main (void) { }

Gli identificatori devono cominciare con “_” o con una

lettera, NON con un numero

Page 16: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Programmi e variabili

main() {

float tc, tf = 90., conv;

float offset = 32.;

conv = 5./9.;

tc = (tf – offset) * conv;

}

? 90. ?

tc tf conv

Page 17: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Programmi e variabili

main() {

float tc, tf = 90., conv;

float offset = 32.;

conv = 5./9.;

tc = (tf – offset) * conv;

}

? 90. ? 32.

tc tf conv offset

Page 18: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Programmi e variabili

main() {

float tc, tf = 90., conv;

float offset = 32.;

conv = 5./9.;

tc = (tf – offset) * conv;

}

? 90. 0.555 32.

tc tf conv offset

Page 19: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Programmi e variabili

main() {

float tc, tf = 90., conv;

float offset = 32.;

conv = 5./9.;

tc = (tf – offset) * conv;

}

32.22 90. 0.555 32.

tc tf conv offset

Page 20: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Test

Cosa accade se eseguo il programma?

Nulla, perché non ci sono istruzioni di output!

Page 21: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Input/Output

scanf(“%f”, &tf);

Page 22: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Input/Output

scanf(“%f”, &tf);

90

Page 23: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Input/Output

scanf(“%f”, &tf);

90 = (1+0.40625)26

010000011011010000000000...

(1/4 + 1/8 + 1/32)

Page 24: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Input/Output

scanf(“%f”, &tf);

90.

90 = (1+0.40625)26

010000011011010000000000...

Page 25: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Input/Output

printf(“%f F = %f C\n”, tf, tc);

Page 26: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Input/Output

printf(“%f F = %f C\n”, tf, tc);

Page 27: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Input/Output

printf(“%f F = %f C\n”, tf, tc);

90.000000 F = ...

Page 28: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Input/Output

printf(“%f F = %f C\n”, tf, tc);

90.000000 F = 32.222222 C...

Page 29: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Input/Output

printf(“%f F = %f C\n”, tf, tc);

90.000000 F = 32.222222 C

>

Page 30: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Importanza della rappresentazione

tf =(tc – offset) * 5./ 9.;

(tc – offset) * 5./ 9;

(tc – offset) * 5 / 9;

tf = 5 / 9 * (tc – offset);

Page 31: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

Direttive

#include

Consente di includere il contenuto di un

altro file

#define

Definisce un simbolo (Attenzione!!!)

#ifdef, #ifndef, #else

Compilazione condizionale

Page 32: Variabili e memoria - Welcome to the INFN Roma Home Page · 2012-10-09 · © Il Team di “Programmazione Scientifica” Variabili e costanti a = 2; b = 3.5; c = 2.; 0xffffa000 0xffffa001

© Il Team di “Programmazione Scientifica”

#include

#include <stdio.h>

per input/output

#include <stdlib.h>

generazione numeri casuali, exit, time

#include <math.h>

libreria matematica (con opzione –lm )

– sin(x), cos(x), sqrt(x), exp(x), pow(x,y),

log(x), fabs(x), iabs(x)

#include ”/home/studenti/lclb01/myheader.h”