Tipi di dati elementari

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

Corso di Fondamenti di Programmazione canale E-O
LINGUAGGIO DI PROGRAMMAZIONE C
Introduzione al linguaggio C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Selezione - approfondimento
PHP.
I DATI I PRINCIPALI TIPI DI DATO UTILIZZATI IN PROGRAMMAZIONE
Algoritmi e 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 Dr. Francesco Fabozzi Corso di Informatica.
Programmazione Procedurale in Linguaggio C++
Indirizzi delle variabili A ogni variabile sono associati tre concetti fondamentali: il valore memorizzato; il tipo dati di appartenenza; lindirizzo. Il.
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Caratteri e stringhe di caratteri
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
Allocazione dinamica della memoria
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
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.
Fondamenti di Informatica I a.a Il linguaggio C Il controllo di flusso La selezione condizionale Listruzione switch I cicli Le istruzioni break,
Oggetti e dati primitivi
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Esercizi Puntatori, struct con campi puntatore, puntatori a struct, rapporto tra array e puntatori. FUNZIONI Passaggio di parametri per indirizzo, passaggio.
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.
Le funzioni.
Espressioni condizionali
Java base I: Sintassi e tipi di dati
Programmazione in Java
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++.
In molti casi è utile assegnare a degli identificatori dei valori che restino costanti durante tutto il programma e che non possano essere cambiati nemmeno.
Prof.ssa Chiara Petrioli -- Fondamenti di programmazione, a.a. 2009/2010 Corso di Fondamenti di programmazione a.a. 2009/2010 Prof.ssa Chiara Petrioli.
BIOINFO3 - Lezione 201 Come in ogni corso di introduzione ad un linguaggio di programmazione, proviamo a scrivere lormai celebre primo programma di prova.
Fopndamenti di programmazione. 2 La classe String Una stringa è una sequenza di caratteri La classe String è utilizzata per memorizzare caratteri La classe.
Tipi di dati semplici in C (1/3)
ISTITUTO STATALE DI ISTRUZIONE SUPERIORE F. ENRIQUES CORSO JAVA – PROVA INTERMEDIA DEL 12 MARZO 2007 NOME: COGNOME: ________________________________________________________________________________.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
JAVA Per iniziare. Verificare installazione javac –version java –version Cercare i files e sistemare eventualmente il path.
CORSO DI PROGRAMMAZIONE II Lezione 22
Lezione 3 Struttura lessicale del linguaggio
Prof.ssa Chiara Petrioli -- corso di programmazione 1, a.a. 2006/2007 Corso di Programmazione 1 a.a.2006/2007 Prof.ssa Chiara Petrioli Corso di Laurea.
1 Corso di Informatica (Programmazione) Lezione 8 (7 novembre 2008) Programmazione in Java: operatori aritmetici, operatori di assegnamento e cast.
Introduzione a Javascript
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
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Università di Torino – Facoltà di Scienze MFN Corso di Studi in Informatica Programmazione I - corso B a.a prof. Viviana Bono Blocco 7 – Array.
Fondamenti di Informatica 2 Ingegneria Informatica Docente: Giovanni Macchia a.a
Fondamenti di Informatica II Ingegneria Informatica (A-I) Prof. M.T. PAZIENZA a.a – 3° ciclo.
Programmazione in Java
1 Il linguaggio C Precisazioni sull’esperienza in laboratorio.
Operatori di incremento e decremento
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.
FI - Algoritmi e Programmazione 1 Variabili Consentono di aumentare notevolmente la potenza espressiva. Una variabile è caratterizzata da:  Un nome 
Copyright © Istituto Italiano Edizioni Atlas
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.
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.
“ Pseudocodice ” Un programma per computer lavorerà su in insieme di “ variabili ” contenenti i dati del problema, soluzioni intermedie, soluzioni finali.
Lezione 2 : Basi del linguaggio Variabili. Come visto nella lezione 1 le classi registrano il proprio stato nelle variabili  int cadenza = 0;  int velocita.
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.
Transcript della presentazione:

Tipi di dati elementari Il C (e il C++) è un linguaggio cosiddetto “tipato”, ovvero: + di ogni variabile deve essere dichiarato il tipo di appartenenza; + il tipo di una variabile stabilisce il modo con cui essa viene codificata dal calcolatore e determina le operazioni che possono essere effettuate su e con quella variabile; + il controllo sui tipi è molto forte: l'interazione fra variabili di tipo diverso e la conversione da un tipo all'altro (casting) è esplicitamente regolato e limitato 

Tipi di dati elementari int numero intero 4 byte char codice ascii di un carattere 1 byte (interpretabile anche come numero intero non negativo) float numero in virgola mobile (6-7 cifre significative) 4 byte double numero in virgola mobile (15-16 cifre significative) 8 byte bool valore “logico”: vero (true) o falso (false) 1 byte I tipi possibili sono in realtà molti di più: + ogni tipo nativo può essere specializzato mediante i qualificatori di tipo + il programma stesso può creare propri tipi personalizzati (detti "tipi astratti") 

Dichiarazione e definizione degli identificatori Un identificatore è un nome simbolico che il programmatore assegna a un'entità del linguaggio (variabili, funzioni...): una volta effettuata l’assegnazione, il compilatore sarà in grado di identificare quell'entità (individuarla e riconoscerne il tipo) ogni volta che incontra il nome che le è stato assegnato. Il programmatore può eleggere a identificatore una qualsiasi sequenza di lettere (maiuscole o minuscole) e di cifre numeriche che inizi con una lettera e senza caratteri di altro tipo o spazi bianchi. E… ...e che non sia una parola-chiave (keyword) già usata dal C/C++ auto bool break case catch char class const const_class continue default delete do double dynamic_cast else enum explicit extern false float for friend goto if inline int long main mutable namespace new operator private protected public register reinterpret_class return short signed sizeof static static_cast struct switch template this throw true try typedef typeid typename union unsigned using virtual void volatile wmain while 

Dichiarazione e definizione degli identificatori + In C++ tutti gli identificatori devono essere dichiarati prima di essere utilizzati (non necessariamente all'inizio del programma). + Per le variabili, la dichiarazione coincide con la specificazione del tipo; la sintassi è proprio l’elencazione degli identificativi preceduta dal tipo desiderato. Ad esempio: int Variabile_Intera; int ore, giorni, mesi; + Ogni dichiarazione viene interpretata come un’istruzione, e quindi pretende il “;” per separarla dalla successiva.

Qualificatori e specificatori di tipo Un qualificatore di tipo è una keyword che, in una istruzione di dichiarazione, si premette a un tipo elementare per “qualificare ulteriormente” il tipo che si sta dichiarando. Esistono 4 qualificatori: short, long, signed, unsigned. (Se il tipo è omesso, è sottointeso int) I qualificatori short e long si applicano al tipo int. Essi stabiliscono la dimensione della memoria occupata dalle rispettive variabili di appartenenza. I qualificatori signed e unsigned si applicano ai tipi “interi” int e char. Essi determinano se le rispettive variabili di appartenenza possono assumere o meno valori negativi. (Non è possibile dare delle regole generali perché il particolare risultato che si ha usando questi qualificatori dipende dalla piattaforma utilizzata.)

Qualificatori e specificatori di tipo Uno specificatore è una keyword che, in una istruzione di dichiarazione, si premette a un tipo (elementare o non) e all'eventuale qualificatore, per definire ulteriori caratteristiche sul trattamento dell'entità dichiarata. Esistono svariati tipi di specificatori, con funzioni diverse: li introdurremo via via durante il corso, quando sarà necessario, per ora ne vediamo subito solo due: const e, per ora solo a mo’ di esempio, extern.

Qualificatori e specificatori di tipo Lo specificatore const, indica al compilatore che il contenuto della variabile non può più essere modificato (e, ovviamente, una variabile definita const deve sempre essere inizializzata...). Esempio: const double pigreco = 3.14159265385; L'uso di const è fortemente consigliato rispetto all'alternativa di scrivere più volte la stessa costante nelle istruzioni del programma; infatti se il programmatore decide di cambiarne il valore, e ha usato const, è sufficiente che modifichi la sola istruzione di definizione. In linguaggio informatico, si usa il termine “costanti” tipicamente proprio per riferirsi a "variabili definite const“, distinguendole dalle costanti “esplicite" che sono chiamate “costanti letterali” (dall’inglese “literals”).

Qualificatori e specificatori di tipo Lo specificatore extern, indica al compilatore (più propriamente al linker) che la variabile che segue è definita in un altro file del programma (e quindi l'istruzione serve solo ad identificare il tipo della variabile e a permetterne l'utilizzo); Esempio: extern int error_number; In questo caso, la dichiarazione si limita ad informare il compilatore del C++ che un certo identificatore appartiene a un certo tipo, ma non viene considerata in fase di esecuzione del programma. Le dichiarazioni viste finora, invece, comportano anche un'operazione eseguibile: l’allocazione di un'apposita area di memoria; queste (tipiche) dichiarazioni sono dette definizioni. (vedremo in seguito il contesto tipico per l’uso di variabili extern…)

Literals Per le variabili (e le costanti), dunque, la specificazione esplicita del tipo stabilisce il modo con cui essa viene codificata e le operazioni che possono essere effettuate con e su di essa. Per le espressioni letterali, invece, il tipo corrispondente viene “dedotto” dal modo in cui l’espressione viene scritta nel codice.

Literals Costanti intere + Un numero senza prefissi o suffissi viene interpretato in base decimale e trattato come una costante di tipo int (o unsigned int se la costante specificata è maggiore del massimo numero positivo signed int); + Un numero con prefisso 0 (zero) è interpretato in base ottale e trattato come int (o unsigned int); + Un numero con prefisso 0x o 0X è interpretato in base esadecimale e trattato come int (o unsigned int). Le "cifre" a,b,c,d,e,f possono essere scritte sia in maiuscolo che in minuscolo; + In qualunque caso, la presenza del suffisso L indica che il numero deve essere di tipo long int, mentre la presenza del suffisso U indica che il numero deve essere di tipo unsigned int.

Costanti in virgola mobile Literals Costanti in virgola mobile Una costante in virgola mobile è sempre indicata in base 10 e può essere specificato in 2 modi: + parte_intera.parte_decimale (il punto è obbligatorio) + notazione esponenziale (il punto non è obbligatorio) Esempi: 15.75 -1.5e2 25E-4 10. In entrambe le notazioni, se il numero è scritto senza suffissi, è assunto di tipo double. Per forzare il tipo float bisogna apporre il suffisso f (o F). Esempi: 10.3 //tipo double 1.4e-5f //è di tipo float

Literals Costanti carattere Una costante carattere è rappresentata inserendo fra singoli apici un carattere stampabile oppure una sequenza di escape. Esempi: 'A' //carattere A '\n' //carattere newline '\003' //carattere cuoricino In memoria un carattere è rappresentato da un numero intero di 1 byte (il suo codice ascii). Il carattere NULL ha codice ascii 0 e si rappresenta con '\0' (da non confondere con il carattere 0 decimale che ha codice ascii 48).

Literals Costanti stringa Una costante stringa è rappresentata inserendo un insieme di caratteri (fra cui anche sequenze di escape) fra doppi apici (virgolette). Esempio: "Ciao a tutti!\n" In C++ (come in C) non esistono le stringhe come tipo intrinseco. Infatti esse sono definite come sequenze (array) di caratteri, con una differenza rispetto ai normali array: il compilatore, nel creare una costante stringa, aggiunge automaticamente un NULL dopo l'ultimo carattere (si dice che le stringhe sono "array di caratteri null terminated"). E quindi, per esempio, 'A' e "A" sono due costanti diverse : 'A‘ //carattere e occupa 1 byte (con il numero 65) "A" //è una stringa e occupa 2 byte (con i numeri 65 e 0)

Definizione con inizializzazione La struttura tipica di una dichiarazione, per riassumere, è la seguente: [specificatore] [qualificatore] tipo identificatore1; in cui le parti fra quadre sono opzionali. Di fatto esiste un’ulteriore parte opzionale che può essere usata nel caso di una definizione, e consiste nell’inizializzazione della variabile dichiarata: [specificatore] [qualificatore] tipo identificatore1 [= valore]; Esempio: unsigned int spese= 45; int ricavi = 23;      int guadagno = ricavi – spese;