Tipi di dato primitivi

Documenti analoghi
Espressioni ed operatori in C

Introduzione al Linguaggio C

IL LINGUAGGIO C TIPI DI DATO

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO

LINGUAGGI DI PROGRAMMAZIONE!

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi:

La codifica dei caratteri di un testo

Per approfondire: La rappresentazione delle informazioni all interno dei computer

Rappresentazione dei numeri naturali. La codifica associa alle informazioni dell alfabeto sorgente uno o più simboli dell alfabeto codice:

IL PROBLEMA DEL PROGETTO

La rappresentazione delle informazioni

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I

La rappresentazione delle Informazioni

Costanti e Variabili

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin

Programmazione Procedurale in Linguaggio C++

Floating-point: mantissa La mantissa e codicata in modulo e segno su 24 bit, la mantissa e sempre normalizzata nella forma 1:XXXXX si rappresenta solo

Fondamenti di Programmazione. Sistemi di rappresentazione

Fondamenti di Programmazione. Sistemi di rappresentazione

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi

Tabella dei codici ASCII standard

INFORMAZIONI NUMERICHE RAPPRESENTAZIONE DELL INFORMAZIONE

Lab 02 Tipi semplici in C

Programmazione Procedurale in Linguaggio C++

Lezione 6 Introduzione al C++ Mauro Piccolo

Elementi di informatica

Sistemi di Numerazione

FONDAMENTI DI INFORMATICA I Prof. Negri

Aspetti dell informazione

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 13. Tipi ed espressioni. Carla Limongelli Aprile Tipi ed espressioni 1

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Tipi ed espressioni. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 5. Carla Limongelli Settembre 2007

Struttura dei programmi C

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Il linguaggio C. Caratteristiche generali

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Corso di Fondamenti di Informatica Il sistema dei tipi in C++

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2

Tipi di dato semplici

Programmazione Caratteri, stringhe, tipo unit ed ennuple

CODIFICA DELL INFORMAZIONE E CODICI BINARI

IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin

Corso di Informatica A (A-L) Corso di Laurea in Scienze e Tecniche Psicologiche a.a 2005/06. Obiettivi del corso. Prof. ssa Maria Luisa Sapino

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi

Laboratorio di programmazione

Corso di Laurea Ingegneria Civile. Dispensa 13. Tipi ed espressioni. Carla Limongelli. Tipi ed espressioni 1

Aritmetica dei Calcolatori

Rappresentazione binaria

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni

Tipi interi lo standard (1)

Linguaggio C: Espressioni

Codifica di informazioni numeriche

Linguaggio C - sezione dichiarativa: costanti e variabili

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Lezione 7. Tipi di dato primitivi Conversioni di tipo

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Dalla precedente lezione: LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 3 LA RAPPRESENTAZIONE DEI DATI (1) 28/02/2016

Codifica dell Informazione

Somma di numeri binari

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1

Indice. Ordine di valutazione. Espressioni in C++ Le espressioni in C++ (CAP 4) Alberto Garfagnini e Marco Mazzocco A.A. 2014/ * 20 / 2

Rappresentazione numeri reali

5. Tipi di dato ed espressioni. Andrea Marongiu Paolo Valente

La "macchina" da calcolo

Cenni alla rappresentazione dei tipi dato primitivi

Valutazione di espressioni

Caratteristiche di un linguaggio ad alto livello

Conversioni fra Tipi di Dati. Luca Abeni

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli

Linguaggio C Espressioni e operatori

Il linguaggio C. Notate che...

La codifica binaria. Informatica B. Daniele Loiacono

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

Tipo carattere. Campo di variabilità. Intervallo finito. Tipo. Dimensione (byte) char

Enrica Reggiani 31/10/2010 NUMERI E CODICI

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

MATLAB I/O. Informatica B - A.A. 2012/2013 ACQUISIZIONE DI INPUT DA TASTIERA

Introduzione alla programmazione in C++

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010

Sistemi di Numerazione Binaria

Rappresentazione di dati: numerazione binaria. Appunti per la cl. 3 Di A cura del prof. Ing. Mario Catalano

La codifica binaria. Informatica B. Daniele Loiacono

4 - Tipi di dato primitivi

Corso di JavaScript. Prerequisiti. B1 Tipi di dato e operatori. Concetto di variabile, espressione e tipo di dato

APPUNTI DI INFORMATICA

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Programmazione in Java (I modulo)

5 Stringhe. Esiste una libreria di C che gestisce le stringhe string.h essa ci permette di:

Introduzione alla programmazione in C(++)

CALCOLO NUMERICO. Rappresentazione virgola mobile (Floating Point)

Tipi di dato. Le variabili in C. Problema: dato in input un carattere, se esso è una lettera minuscola, trasformarla in maiuscola.


Foglio Elettronico Lezione 1

Transcript:

Tipi di dato primitivi (oltre int) Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 2 1

Valori logici (il caso particolare del C) In molti altri linguaggi di programmazione i valori logici hanno un loro tipo predefinito (spesso bool o boolean). Nel linguaggio gg C, al contrario, non esiste un tipo logico come tipo a sé stante! Pertanto, si sfrutta il tipo int : - il valore 0 (zero) indica FALSO - ogni valore diverso da 0 indica VERO (per convenzione, talvolta, si usa 1 per denotare vero, ma bisogna ricordare che non è così per tutti i compilatori) Vengono considerati falsi anche: 0 '\0 (fine stringa) 0.0 5-5 EOF (end of file) Vengono invece considerati veri : 5 A 2.35 3*2 Informatica - A.A. 2009/2010 - Tipi di dato 3 Operatori logici operatore logico operatore C not (negazione) unario! and binario && or binario In C, non esistendo il tipo boolean, gli operatori logici operano su interi e restituiscono i un intero: il valore 0 viene considerato falso ogni valore diverso da 0 viene considerato vero il risultato è 0 o 1 Esempi 5 && 7 0 33!5 Informatica - A.A. 2009/2010 - Tipi di dato 4 2

Tabella di verità degli operatori AND Ris. OR Ris. NOT Ris. 1 && 1 1 1 && 0 0 0 && 1 0 0 && 0 0 1 1 1 1 0 1 0 1 1 0 0 0!1 0!0 1 Informatica - A.A. 2009/2010 - Tipi di dato 5 Valutazione in corto-circuito Gli operatori logici && e sono valutati in cortocircuito: la valutazione dell espressione logica termina appena si è in grado di determinare il risultato I termini successivi sono valutati solo se necessario Esempi 22 x L espressione è già vera in partenza (22 è vero) 0 && x L espressione è già falsa in partenza (0 è falso) Espressioni i condizionali i composte: a && b && c a b c Se a && b è falso, il secondo && non viene valutato Se a b è vero, il secondo non viene valutato Informatica - A.A. 2009/2010 - Tipi di dato 6 3

Espressioni condizionali (operatore?) condizione? espr1 : espr2 Il valore risultante è o quello di espr1, o quello di espr2: dipende dal valore dell espressione condizione: se condizione denota vero (un valore zero), si usa espr1 se condizione denota falso (il valore zero), si usa espr2 Esempi 3? 10 : 20 x? 10 : 20 (x>y)? x : y denota sempre 10 denota 10 se x è diversa da 0, se no 20 denota il maggiore fra x e y Informatica - A.A. 2009/2010 - Tipi di dato 7 Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 8 4

Numeri Reali Esistono due modi per rappresentare un numero reale: 1. Virgola fissa Pes P.es., 0.00150015 314 3.14 123.2727 52. 2. Virgola mobile Mantissa Esponente base 10 Separate dal simbolo e P.es., il numero 1853.0000059 può essere rappresentato come: 185300.00059e-2 185300.00059*10-2 18530000059e-7 0.0018530000059e+6 0.118530000059e+4 (notazione standard) Informatica - A.A. 2009/2010 - Tipi di dato 9 Numeri Reali (cont.) Il numero di cifre disponibili per rappresentare un numero all interno del computer è limitato, per cui si potrebbero verificare approssimazioni (troncamenti o arrotondamenti) nella rappresentazione di numeri reali con molte cifre. Esempio Il numero 277290.0010044 se si avessero massimo 10 cifre a disposizione potrebbe essere rappresentato come 0.277290001e+6 Tuttavia, questa rappresentazione trasformerebbe il numero originario 277290.0010044 277290.001 In molte applicazioni questa approssimazione non costituisce un problema, ma in altre applicazioni, come ad esempio quelle di calcolo scientifico, costituisce una seria fonte di errori. Informatica - A.A. 2009/2010 - Tipi di dato 10 5

Tipi float e double Mirano a rappresentare (con diversa precisione) ) l insieme dei numeri REALI In realtà (così come per int per INTERI), sono solo un approssimazione dei numeri reali, sia come precisione sia come intervallo di valori rappresentabili Informatica - A.A. 2009/2010 - Tipi di dato 11 STANDARD Tipi float e double (cont.) float 4b byte double 8 byte long double 10 byte Tipo Precisione Valori float 6 cifre decimali 3.4^10-38... 3.4 ^ 10+38 double 15 cifre decimali 1.7 ^ 10-308... 1.7 ^ 10+308 Informatica - A.A. 2009/2010 - Tipi di dato 12 6

Operatori su float e double = Assegnamento + Addizione * Moltiplicazione / Divisione reale (è diversa dalla divisione tra interi) == Attenzione: se x e y sono float o double, invece di scrivere: if (x == y) è meglio scrivere if ((x<y + 0.000001) && (x>y - 0.000001))!= Diverso (not equal) < Minore > Maggiore <= Minore o uguale >= Maggiore o uguale Informatica - A.A. 2009/2010 - Tipi di dato 13 Attenzione! A causa della rappresentazione su di un numero finito di cifre, ci possono essere errori dovuti al troncamento o all arrotondamento di alcune cifre decimali Meglio evitare l uso dell operatore == in quanto i test di uguaglianza tra valori reali (in teoria uguali) potrebbero non essere verificati. Ovvero, non sempre vale: (x / y) *y == x Meglio utilizzare "un margine accettabile di errore": (x == y) (x < y+epsilon) && (x > y-epsilon) dove, ad esempio, const float epsilon=0.000001 Informatica - A.A. 2009/2010 - Tipi di dato 14 7

Operatori su float e double Operatori aritmetici Risultato + - * / float o double Operatori relazionali ==!= int < > <= >= int Esempi 5. / 2 = 2.5 2.1 / 2 = 1.05 7.1 > 4.55 = 1 o intero diverso da 0 RICORDARE CHE: 5. / 2 = 2.5 ; 5/ 2. = 2.5 ; mentre 5 / 2 = 2 Informatica - A.A. 2009/2010 - Tipi di dato 15 Tipi di dato primitivi int (già trattati) Valori logici (ricordati) Valori reali Valori carattere Informatica - A.A. 2009/2010 - Tipi di dato 16 8

Tipo Carattere: char Rappresenta l insieme dei caratteri disponibili sul sistema. a b A 2 @ L insieme dei caratteri è ordinato L ordine dipende dalla codifica adottata Generalmente, si utilizza il codice ASCII La codifica nella forma estesa utilizza 1 byte per cui vi sono 256 valori rappresentabili, da 0 a 255 Vi è anche la forma ristretta su 7 bit, per cui l insieme di valori rappresentabili si riduce a 128, da 0 a 127 Informatica - A.A. 2009/2010 - Tipi di dato 17 Tabella dei codici ASCII 000 001 010 011 100 101 110 111 0000 NUL DLE 0 @ P p 0001 SOH DC1! 1 A Q a q 0010 STX DC2 2 B R b r 0011 ETX DC3 # 3 C S c s 0100 EOT DC4 $ 4 D T d t 0101 ENQ NAK % 5 E U e u 0110 ACK SYN & 6 F V f v 0111 BEL ETB 7 G W g w 1000 BS CAN ( 8 H X h x 1001 HT EM ) 9 I Y i y 1010 LF SUB * : J Z j z 1011 VT ESC + ; K [ k { 1100 FF FS, < L \ l 1101 CR GS - = M ] m } 1110 SO RS. > N ^ n ~ 1111 SI US /? O _ o DEL Informatica - A.A. 2009/2010 - Funzioni 18 9

Tipo char Nel linguaggio C (a differenza di altri linguaggi) il tipo char non denota un nuovo tipo, ma è equivalente al dominio dei valori interi rappresentati su di un byte (range 0-255) Codifica ASCII estesa Poiché i char sono codificati come interi su di un byte valgono gli stessi operatori degli int Nelle operazioni, bisogna inoltre considerare che le tabelle ASCII dei caratteri occidentali rispettano il seguente ordinamento (detto lessicografico): 0 < 1 < 2 < < 9 < < A < B < C < < Z < < a < b < c < < z < 9 < < A < B < C < < Z < < b < Vale la regola di prossimità all interno di ciascuna di queste tre classi ovvero, il carattere successivo di a è b, di B è C, di 4 è 5, ecc. Tuttavia, le tre classi (minuscole, maiuscole, numeri) non sono contigue! Informatica - A.A. 2009/2010 - Tipi di dato 19 Tipo char (cont.) Tipo Dimensione Valori char 1 byte -127.. 128 unsigned char 1 byte 0.. 255 Sono quindi applicabili tutti gli operatori visti per gli int. Pertanto, si può scrivere: x / A equivale a 120 / 65 uguale a: 1 R < A equivale a 82 < 65 uguale a: 0 x 4 equivale a 120 52 uguale a: 68 (= D ) x 4 equivale a 120 4 uguale a: 116 (= t ) Informatica - A.A. 2009/2010 - Tipi di dato 20 10

Dove si sbaglia frequentemente Operazioni matematiche e tipi di dato Divisione fra interi e divisione fra reali (stesso simbolo /, ma differente significato) Significato e uso dell operazione di modulo (%) Operatore di assegnamento (=) e operatore di uguaglianza (==) Notazione prefissa e postfissa di ++ e - -negli assegnamenti Informatica - A.A. 2009/2010 - Tipi di dato 21 Altre regole (più complesse) Priorità e associatività degli operatori Espressioni eterogenee Assegnamenti eterogenei Informatica - A.A. 2009/2010 - Tipi di dato 22 11

Regole di priorità e associatività Priorità e associatività degli operatori PRIORITA : specifica l ordine di valutazione degli operatori quando in una espressione compaiono operatori diversi P.es., 3+10*20 è letta come 3+(10 * 20) perché in C l operatore * è prioritario rispetto a + NB: operatori diversi possono comunque avere uguale priorità (per esempio, + e -, * e / e %) ASSOCIATIVITA : precisa l ordine di valutazione quando in un espressione compaiono operatori con la medesima priorità associatività a sinistra valutazione da sinistra a destra associatività a destra valutazione da destra a sinistra P.es., 30-10 + 8 è letta come (30 10) + 8, perché gli operatori + e sono equiprioritari, e sono entrambi associativi a sinistra Informatica - A.A. 2009/2010 - Tipi di dato 24 12

Priorità e associatività degli operatori (cont.) Le espressioni aritmetiche vengono valutate in base alle regole di priorità degli operatori. (Si utilizzano le regole tradizionali dell aritmetica) P.es., a=2, b=4, c=6, a+b*c a+(b*c) = 26 Associatività e priorità possono venire alterate mediante l uso di parentesi: a+b*c =26 (a+b)*c =36 a-b+c = 4 a-(b+c) = -8 2-3+4*7%2+3 = 2 2-3+4*(7%(2+3)) = 7 Informatica - A.A. 2009/2010 - Tipi di dato 25 Regole di priorità degli operatori (cont.) Gli operatori relazionali hanno priorità inferiore agli operatori aritmetici k<b+3 equivale a k<(b+3) e non a (k<b) +3 Esempio: Cosa contengono le variabili logico1 e logico2 al termine dell esecuzione del seguente programma? main() { float x, y; int a,b; int logico1, logico2 ; x=10.5; y=3.6; a=2; b=1; logico1=x<(y*0.5); /* logico1 = 10.5<1.8 == 0 == FALSE */ logico2=a!=b; /* logico2 = 2!=1 == 1 == TRUE */ } Informatica - A.A. 2009/2010 - Tipi di dato 26 13

Sintesi priorità degli operatori! - ++ -- * / % > >= < <= ==!= &&? : = (Gli operatori sulla stessa riga hanno stessa priorità, quindi la priorità è da sinistra a destra) Informatica - A.A. 2009/2010 - Tipi di dato 27 Associatività dell assegnamento L operatore di assegnamento può comparire più volte in un istruzione. L associatività dell operatore di assegnamento è a destra Es., k = j = 5; equivale a j = 5; k = j; k = j+2 = 5; NON SI PUO FARE! Informatica - A.A. 2009/2010 - Tipi di dato 28 14