Tipi di dati semplici in C (1/3)

Slides:



Advertisements
Presentazioni simili
Il linguaggio C++.
Advertisements

Introduzione al linguaggio C++
Corso di Fondamenti di Programmazione canale E-O
LINGUAGGIO DI PROGRAMMAZIONE C
INFORMATICA Il linguaggio C
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Stringhe di caratteri In linguaggio C.
SQL applicato a SQL Server
Selezione - approfondimento
I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE
Fondamenti di Informatica CDL in Ingegneria Meccanica - A.A CDL in Ingegneria Meccanica - A.A Tipi di dati Ing. Simona Colucci.
Fondamenti di Informatica CDL in Ingegneria Gestionale - A.A Tipi di dati Ing. Simona Colucci.
Introduzione al linguaggio C
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
Programmazione Procedurale in Linguaggio C++
Programmazione Procedurale in Linguaggio C++
Programmazione in Java (3)
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
FUNZIONI DI BIBLIOTECA
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Laboratorio di Linguaggi lezione III: tipi base, espressioni, type-cast Marco Tarini Università dellInsubria Facoltà di Scienze Matematiche, Fisiche e.
1 Corso di Informatica (Programmazione) Lezione 7 (5 novembre 2008) Programmazione in Java: lessico, variabili, tipi primitivi, assegnamento a variabile.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Assegnamento di valore a una variabile Anno Accademico 2009/2010.
Corso di Laurea in Biotecnologie Informatica (Programmazione)
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Prof. Raffaele Montella
Programmazione Corso di laurea in Informatica
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
8) Classi numeriche e operatori Lab. Calc. I AA2002/03 - cap.82 Classi numeriche Esempi di classi numeriche: int, numeri interi che occupano una parola.
A.A. 2010/2011Ambienti di Programmazione per il Software di Base1 (Es. – 6) Ambienti di Programmazione per il Software di Base Le Stringhe in C Input.
Dichiarazioni e tipi predefiniti nel linguaggio C
Fondamenti di Informatica A - Massimo Bertozzi TIPI DI DATO IN C++ What's in a name? That which we call a rose By any other name would smell as sweet.
I File.
Il Linguaggio C.
Analisi di Immagini e Dati Biologici
Java base I: Sintassi e tipi di dati
LA DOCUMENTAZIONE È noto che un buon programma dovrebbe essere ben documentato.. ma lesperienza insegna che quasi mai ciò viene fatto! –non cè tempo, ci.
Programmazione in Java Claudia Raibulet
4 Tipi di dati & variabili
JAVA Franco Bombi 8 ottobre FB Introduzione Java è un linguaggio di impiego generale, basato su classi e orientato agli oggetti Java.
CODIFICA Da flow-chart a C++.
Tipi di dati elementari
Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
1 Numeri interi e numeri in virgola mobile F. Bombi 2 6 novembre 2003.
1 Parte 3 Fondamenti di programmzione. 2 Cosa è Java Linguaggio di programmazione familiare Simile a C e C++ Linguaggio di programmazione orientato a.
Tipi primitivi in java tipodefaultmem.daa booleanfalse1 bittrue false char'\u0000'16 bit byte08 bit short016 bit int032 bit-2^312^31-1.
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Variabili Numeriche –Interi (byte, short, int, long): complemento a 2 –A virgola mobile (float, double): IEEE 745 Alfanumeriche –Carattere (char): Unicode.
Parte 3 Lo stato: variabili, espressioni ed assegnazioni
DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE Puntatori Marco D. Santambrogio – Ver. aggiornata al 11 Ottobre 2014.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Informatica 6 Tipi di dato. Nelle celle di memoria di un calcolatore ci sono solo “0” e “1”, fisicamente realizzati tramite due diversi livelli di tensione.
STRUTTURA DI UN PROGRAMMA C In prima battuta, la struttura di un programma C è definita dalla seguente produzione: ::= { }
Informatica B Allievi Elettrici - AA Fondamenti della programmazione in linguaggio C (III)
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
Rappresentazione dei numeri
Cicli. Ci sono almeno tre modi diversi per costruire un ciclo in C e occorre utilizzare quello che meglio si adatta alle esigenze del problema che si.
13/08/02Tipi base 1 Tipi interi Operatori numerici Tipi float Caratteri Tipo booleano.
Il linguaggio C Variabili, costanti, tipi scalari
Basi di Java Strutture base di Java. Basi di java ▪Variabili ▪Operatori ▪Condizioni e Cicli ▪Array.
Appunti su formati numerici. Tipi numerici Il C dispone di due tipi numerici: tipi interi e tipi reali; I tipi reali sono anche detti floating, ovvero.
Introduzione al linguaggio C
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Tipi di dati semplici in C (1/3) Il C ha quattro tipi di dato semplice principali: Caratteri, char Numeri interi, int Numeri reali in virgola mobile, float Numeri reali in virgola mobile a doppia precisione, double Tutti gli altri si ottengono da quelli citati con i modificatori Ogni modificatore anticipa la dichiarazione di tipo Altera il significato del “tipo base” per adattarlo meglio ad altri contesti Modificatori: signed, unsigned, long, short sono applicabili a int signed, unsigned possono essere applicati a char long può essere applicato anche a double In C esistono anche i tipi di dato strutturati: Non sono altro che aggregazioni molteplici dati semplici

Tipi di dati semplici in C (2/3) Un carattere tra apici rappresenta una costante intera Il carattere ‘a’ rappresenta l’intero 97, mentre ‘A’ è pari a 65 Il C non fa distinzione tra caratteri e interi: Esiste una corrispondenza biunivoca, data dalla tabella dei caratteri ASCII printf("%c",‘f') restituisce f, mentre printf("%d",‘f') restituisce 102 Anche i confronti tra caratteri (≤, ≥) si basano sull’ordine nella tabella ASCII Usare char o unsigned char cambia solo la corrispondenza interi-caratteri Con unsigned tutti caratteri corrispondono esattamente ai 255 numeri ASCII Senza, i caratteri oltre il 127 ASCII corrispondono a (NumASCII - 256) La rappresentazione interna (n°bit) dipende dal calcolatore L’aggiunta di modificatori non sempre cambia il range di valori ammissibili L’allocazione di memoria per ogni tipo rispetta sempre delle regole: Range(short int) ≤ Range(int) ≤ Range(long int) Range(signed int) = Range(int) = Range(unsigned int) Lo stesso vale per gli altri tipi La tabella seguente indica quella che è la rappresentazione più comune

Tipi di dati semplici in C (2/3) TIPO N. BIT VALORI RAPPRESENTABILI char 8 Da -128 a +127 (o caratteri ASCII corrispondenti) unsigned char Da 0 a 255 (o caratteri ASCII corrispondenti) signed char Gli stessi del tipo base “char” int 16 Da -32768 a +32767 unsigned int Da 0 a 65535 signed int Gli stessi del tipo base “int” short int unsigned short int Gli stessi del tipo “unsigned int” signed short int long int 32 Da -2147483648 a +2147483647 signed long int Gli stessi del tipo “long int” unsigned long int Da 0 a 4294967295 float Circa da -3,4x10 a +3,4x10 double 64 Circa da -1,8x10 a +1,8x10 long double 80 Circa da -1,2x10 a +1,2x10 38 38 308 308 4932 4932

Promozione e Cast (1/2) Nelle espressioni, il C ammette la combinazione di tipi Se i tipi coinvolti sono eterogenei, è necessaria una conversione La conversione rende omogenea l’espressione e permette di applicare l’operazione appropriata per il tipo omogeneo ottenuto In C esistono conversioni automatiche implicite oppure manuali esplicite Regole di conversione implicita (promozione) Se l’espressione rvalue è eterogenea, le variabili char o short (incluse le versioni signed e unsigned) sono convertite temporaneamente in int Se l’espressione è ancora eterogenea, si converte temporaneamente ogni variabile di tipo inferiore nel tipo superiore, secondo questa gerarchia int < long int < unsigned int < unsigned long int < float < double < long double Una volta resa omogenea, si applicano le operazioni sul tipo omogeneo Quindi il risultato dell’espressione rvalue avrà tipo uguale a quello più in alto, secondo la gerarchia, tra quelli presenti nell’espressione Se il tipo del risultato finale rvalue è inferiore al tipo di lvalue, il tipo finale di rvalue è promosso al tipo di lvalue per fare assegnamenti omogenei Viceversa, viene convertito nel tipo inferiore (perdita di precisione/informazione)

Promozione e Cast (2/2) Esempi: dati int n=5, m=2; float x=4.0; x = n+x  n è promosso a float (5.0) e alla fine x vale 9.0 n = n/m  la divisione è tra interi e quindi troncata, alla fine n vale 2 n = n/x  n è promosso a float (5.0) e la divisione tra float restituisce 1.25 però con l’assegnamento a int viene troncata, e alla fine n vale 1 x = n/m  la divisione tra interi è sempre troncata e restituisce 2 però con l’assegnamento a float il risultato è promosso a float e x vale 2.0 Si possono fare anche conversioni esplicite (cast) Si specifica il tipo in cui si desidera avere il risultato di una espressione mettendolo tra ( ) appena prima del rvalue Tutte le variabili in rvalue sono convertite a forza nel tipo indicato e le operazioni sono in seguito svolte su tale tipo Convertire in tipi inferiori comporta perdita di informazione (troncamento) x = (float) n/m  n e m sono convertiti in float e la divisione tra float non è troncata ma restituisce un float, per cui alla fine x vale 2.5 n = (int) n/x  x è convertito in int (4) e la divisione tra interi è troncata, per cui alla fine n vale 1 (perdita di precisione)