4 - Tipi di dato primitivi

Documenti analoghi
7 - Programmazione procedurale: Dichiarazione e chiamata di metodi ausiliari

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Linguaggio C - sezione dichiarativa: costanti e variabili

9 - Array. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali:

5 - Istruzioni condizionali

Programmazione in Java (I modulo)

Lezione 6 Introduzione al C++ Mauro Piccolo

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Introduzione a C# Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

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

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

14 - Metodi e Costruttori

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Tipi di dato primitivi

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

Esonero di Informatica I. Ingegneria Medica

18 - Classi parzialmente definite: Classi Astratte e Interfacce

16 - Ereditarietà, tipi e gerarchie

16 - Ereditarietà, tipi e gerarchie

18 - Vettori. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

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

3) Descrivere l architettura di un elaboratore tramite astrazione a livelli

Tipi di dato semplici

Cenni alla rappresentazione dei tipi dato primitivi

Tipi interi lo standard (1)

Conversioni fra Tipi di Dati. Luca Abeni

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

Primi passi col linguaggio C

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

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

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011

Informatica Generale Andrea Corradini I linguaggi di programmazione

Introduzione alla programmazione in linguaggio C

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1.

Uso di classi e oggetti. Prof. Francesco Acarino IIS Altiero Spinelli Via Leopardi 132 Sesto San Giovanni

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

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

Indirizzi e puntatori

IL LINGUAGGIO C TIPI DI DATO

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

Verso i puntatori: Cosa è una variabile?

Il linguaggio C. Prof. E. Occhiuto INFORMATICA 242AA a.a. 2010/11 pag. 1

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

Struttura dei programmi C

Programmazione I - Laboratorio

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

LINGUAGGI DI PROGRAMMAZIONE!

Tipi e Valori. Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna

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

Prima lezione di laboratorio. I mattoni di base di un programma Java. Comandi Unix. Riassunto. Oggi. Un programma complicato.

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. Notate che...

I.4 Rappresentazione dell informazione

Input/Output di numeri

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento

Lab 02 Tipi semplici in C

Fondamenti di Informatica T-1

Programmazione ad Oggetti. Java Parte II

Fondamenti di Informatica T-1. Introduzione al linguaggio Java Input/output, variabili, tipi

Concetto di Funzione e Procedura METODI in Java

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

Introduzione alla programmazione in C++

Un quadro della situazione. Lezione 6 Aritmetica in virgola mobile (2) e Codifica dei caratteri. Dove siamo nel corso. Organizzazione della lezione

Operazioni numeriche - Input

Corso di Laurea Ingegneria Civile Fondamenti di Informatica

ELEMENTI DI INFORMATICA L-B. Ing. Claudia Chiusoli

Prima lezione di laboratorio. I mattoni di base di un programma Java. Riassunto. Comandi Unix. Oggi. Blog & Group.

Corso di Fondamenti di Programmazione canale E-O. Tipi di dato. Un esempio

Codifica. Rappresentazione di numeri in memoria

Unità Didattica 1 Linguaggio C. Fondamenti. Struttura di un programma.

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

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

Algoritmi e Strutture Dati

Programmazione Procedurale in Linguaggio C++

Rapida Nota sulla Rappresentazione dei Caratteri

Variabili. Tipi di dati di base. Variabili. Variabili

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

Introduzione al Linguaggio C

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

Caratteristiche di un linguaggio ad alto livello

Tipi di dati. Tipi interi. Capitolo 1 ANDREA GINI

Gestione dei compiti

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

24 - Possibili approfondimenti

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a

Concetti base programmazione. Antonio Gallo

Laboratorio di Informatica Ingegneria Clinica Lezione 14-16/11/2011

Espressioni ed operatori in C

INTRODUZIONE ALLA PROGRAMMAZIONE

Costanti e Variabili

Il linguaggio JavaScript

Programmazione Caratteri, stringhe, tipo unit ed ennuple

Excel & VBA. Excel e Visual Basic for Application

La Rappresentazione dell Informazione

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007

Variabili, tipi, espressioni in C. Emilio Di Giacomo

C: panoramica. Violetta Lonati

Lezione 2. Fondamenti di Informatica-Modulo Fondamenti di Programmazione

Transcript:

4 - Tipi di dato primitivi Programmazione e analisi di dati Modulo A: Programmazione in Java Paolo Milazzo Dipartimento di Informatica, Università di Pisa http://www.di.unipi.it/ milazzo milazzo di.unipi.it Corso di Laurea Magistrale in Informatica Umanistica A.A. 2013/2014 Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 1 / 14

Tipi (1) Negli esempi precedenti abbiamo definito variabili di tipo int e double int base =5; final double tasso =0.05; La specifica del tipo di una variabile consente al compilatore di effettuare controlli sull uso di tali variabili Ad esempio, il comando base =3.5; viene segnalato come un errore dal compilatore, il quale risponde con il seguente messaggio Prova. java :7: error : possible loss of precision base =3.5; ^ required : int found : double 1 error Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 2 / 14

Tipi (2) Il controllo dei tipi effettuato dal compilatore serve a prevenire errori di programmazione Se dichiariamo una variabile di un certo tipo e poi le assegnamo valori di un altro tipo, forse le stiamo assegnando il valore sbagliato! Inoltre, sapere che una variabile ha un certo tipo offre al programmatore delle garanzie. Ad esempio: int x,y, z;... System. out. print (" Risultato : "); System. out. println (x *2+( y /4-7)* z*z); Qualunque siano i valori assegnati a x, y e z il risultato sarà un numero intero. Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 3 / 14

Tipi primitivi (1) I tipi primitivi del linguaggio Java sono i seguenti Nome tipo Tipo di valore Memoria usata Valori consentiti byte Intero 1 byte da -128 a 127 short Intero 2 byte da -32.768 a 32.767 int Intero 4 byte da -2.147.483.648 a 2.147.483.647 long Intero 8 byte da -9.223.372.036.854.775.808 a 9.223.372.036.854.775.807 float Numero in virgola 4 byte da -3.40282347 x 10 38 mobile (precisione a 3.40282347 x 10 38 singola) double Numero in virgola 8 byte da -3.40282347 x 10 38 mobile (precisione a 3.40282347 x 10 38 doppia) char Carattere singolo 2 byte Tutti i caratteri della codifica Unicode (65.535 caratteri) boolean Valore di verità 1 bit true o false NOTA: I valori di tipo intero sono memorizzati in complemento a due... Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 4 / 14

Tipi primitivi (2) Tra i tipi numerici, int e double sono quelli usati più comunemente I tipi byte, short e float di solito si usano solo quando si hanno problemi di occupazione di memoria o di prestazioni di calcolo Il tipo long di solito si usa solo quando bisogna rappresentare numeri interi molto grandi (miliardi) Il tipo char serve per rappresentare singoli caratteri Il tipo boolean serve per effettuare scelte che condizionano l esecuzione del programma Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 5 / 14

Tipi primitivi (3) Per gli scopi di questo corso NON UTILIZZEREMO i tipi byte, short e float OCCASIONALMENTE potremmo usare il tipo long I tipi di dato primitivi che UTILIZZEREMO principalmente saranno invece: int, double, char e boolean I tipi char e boolean li vedremo più avanti! Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 6 / 14

Compatibilità di assegnamento Il compilatore deve controllare le operazioni di assegnamento Un operazione di assegnamento ha la forma variabile = espressione; Ad esempio: raggio = 12; area1 = 12*12*3.14; area2 = raggio * raggio *3.14 In ogni operazione di assegnamento il compilatore deve controllare che il tipo del valore che risulta dall espressione sia compatibile con il tipo della variabile Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 7 / 14

Tipo di una espressione (1) Qual è il tipo del valore che risulta da un espressione? Più brevemente, qual è il tipo di una espressione? Consideriamo i tipi numerici int, long e double Consideriamo le espressioni più semplici: i letterali Il letterale 35 fa parte dei valori consentiti per il tipo int, ma anche long e double Il letterale 5000000000l fa parte dei valori consentiti per il tipo long, ma anche double (nota 1 ) Il letterale 3.5 fa parte solo dei valori consentiti per il tipo double 1 nei letterali interi maggiori di 2147483647 e minori di -2147483648 bisogna apporre la l finale (come long) Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 8 / 14

Tipo di una espressione (2) L esempio dei letterali mostra che: un espressione può essere compatibile con diversi tipi esiste una relazione di ordinamento tra i tipi int, long e double tale che: int long double che esprime la possibilità di convertire il valore di un tipo nel valore di un altro tipo in maniera implicita (automatica) La freccia significa esiste una conversione implicita da.. a.. Può esistere una conversione implicita da un tipo a un altro quando tutti i valori accettabili del primo sono accettabili anche per il secondo Ovviamente, vale int double (la relazione è transitiva) Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 9 / 14

Tipo di una espressione (3) Ma allora... qual è il tipo di un espressione? Risposta (un po empirica): Il tipo di un espressione artimetica è il minimo tipo (rispetto la relazione ) che accetta tutti gli elementi che la costituiscono Esempi: 7+8+(23*324)/22-((21*53)/11) è di tipo int 5+(3.2*(4-3)) è di tipo double Assumendo int i; long l; double d; abbiamo 12+(l-i) è di tipo long l+i+d è di tipo double i+(i-1) è di tipo int Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 10 / 14

Compatibilità di assegnamento E in un assegnamento variabile = espressione; quando il tipo dell espressione è compatibile con il tipo della variabile? Risposta: Esempi: In un assegnamento il tipo dell espressione deve essere convertibile implicitamente nel tipo della variabile int somma =12+21; // corretto! long totale = somma ; // corretto! double supertot = totale ; // corretto! int megatot = supertot + totale ; // sbagliato! Cosa risponde il compilatore? Prova. java :7: error : possible loss of precision int megatot = supertot + totale ; // sbagliato! ^ required : int found : double 1 error Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 11 / 14

Esempi Quali di questi assegnamenti sono corretti? int i1,i2; long l1,l2; double d1, d2; i1 = 3.5*10; i2 = 340/10+(13*2); l1 = 188/10+ i; d1 = i1+l1; l2 = d1 +123*(7-1); d2 = 0.001*( d1+l2 )*1000; Osservazione: tutte queste espressioni danno un risultato intero, ma per stabilire se un assegnamento è corretto conta il tipo dell espressione, non il suo risultato. Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 12 / 14

Conversioni di tipo (type cast) (1) Le regole di compatibilità degli assegnamenti consentono di convertire automaticamente un int in un double. int i = 100; double d = i; E se avessi bisogno di convertire un double in un int? double prezzo = 25.99; int numeroeuro = prezzo ; // assegnamento ILLECITO! Si può forzare una conversione (type cast) in questo modo double prezzo = 25.99; int numeroeuro = ( int ) prezzo ; // assegnamento LECITO! La trasformazione da double a int è ottenuta troncando il numero si eliminano le cifre decimali: 25.99 diventa 25 Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 13 / 14

Conversioni di tipo (type cast) (2) Il type cast forza il cambiamento di tipo dell espressione che la segue Esempi: int I =1000; long L =5000; double D =7.0; I=( int )( d *0.5) // risultato : I=3 I=( int ) L // risultato : I =5000 I=( int )5000000000 l // ris : impredicibile ( troppo grande per int ) L=( long )( d *0.5) // risultato : L=3 D=( double )(5/2) // risultato : D =2.0 D=( double )5/( double )2 // risultato : D =2.5 D=( double )5/2 // risultato : D =2.5 -- come D =(( double )5)/2 Paolo Milazzo (Università di Pisa) Programmazione - Tipi A.A. 2013/2014 14 / 14