13/08/02Tipi base 1 Tipi interi Operatori numerici Tipi float Caratteri Tipo booleano.

Slides:



Advertisements
Presentazioni simili
Introduzione al linguaggio C++
Advertisements

LINGUAGGIO DI PROGRAMMAZIONE C
© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
UNITÀ A2 JAVA: LE BASI DEL LINGUAGGIO Approfondimenti.
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.
Anno accademico Gli operatori e le espressioni in C.
Il linguaggio C Gli operatori e le espressioni C Language
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.
FUNZIONI DI BIBLIOTECA
Fondamenti di Informatica II Ingegneria Informatica / Automatica (A-I) Meccanica Prof. M.T. PAZIENZA a.a – 3° ciclo.
Tipi di dato e controllo del flusso Dott. Ing. Leonardo Rigutini Dipartimento Ingegneria dellInformazione Università di Siena Via Roma 56 – – SIENA.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Introduzione a JAVA Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Variabili e tipi primitivi Anno Accademico 2009/2010.
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Array 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)
1 Corso di Informatica (Programmazione) Lezione 10 (12 novembre 2008) Programmazione in Java: espressioni booleane e controllo del flusso (selezione)
Corso di Laurea in Biotecnologie Informatica (Programmazione)
1 Corso di Laurea in Biotecnologie Informatica (Programmazione) Le stringhe di caratteri in Java Anno Accademico 2009/2010.
Lezione 4: Costrutti Condizionali Prof. Raffaele Montella.
Istruzioni di selezione in Java Programmazione Corso di laurea in Informatica.
CAPITOLO 4 LINGUAGGIO JAVA: COSTRUTTI DI BASE. ALFABETO Java adotta la codifica standard Unicode della società Unicode, Inc. (ftp://ftp.unicode.org) definito.
Organizzazione del corso
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.
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.
Codifica binaria Rappresentazione di numeri
Il Linguaggio C.
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
Programmazione in Java Claudia Raibulet
4 Tipi di dati & variabili
CODIFICA Da flow-chart a C++.
Parte 4 Elementi di Informatica di base
Tipi di dati elementari
Operatori e Gestione del flusso di esecuzione
Esecuzione dei programmi Prolog Liste ed operatori aritmetici
Laboratorio di Informatica1 Parte 4 Laboratorio di Informatica Dott.ssa Elisa Tiezzi Dott.ssa Elisa Mori.
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)
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
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.
Informatica Lezione 3 Scienze e tecniche psicologiche dello sviluppo e dell'educazione (laurea triennale) Anno accademico:
Programmazione in Java
1 Fabio Scotti – Università degli Studi di Milano Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( )
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.
Corso di Laurea in Scienze e Tecnologie Chimiche corso di Informatica Generale Paolo Mereghetti DISCo – Dipartimento di Informatica, Sistemistica e Comunicazione.
Rappresentazione in virgola mobile (floating-point) Permette di rappresentare numeri con ordini di grandezza molto differenti utilizzando per la rappresentazione.
Rappresentazione dell'informazione
La codifica dei numeri.
Conversione binario-ottale/esadecimale
INTRODUZIONE A MATLAB Sara Poltronieri. Avvio del programma Avvio di Matlab (Windows) Start  Programmi  Matlab (o icona) Avvio di Matlab (Linux) terminale.
Informatica Lezione 3 Psicologia dello sviluppo e dell'educazione (laurea magistrale) Anno accademico:
Cloud informatica V anno. Introduzione a PHP Lo scripting PHP PHP è un linguaggio di scripting lato server. Le caratteristiche di un linguaggio di scripting.
13/08/02Input 1 Interagire con il computer Da tastiera Da riga di comando Funzioni di conversione.
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.
Unità A2 Java: le basi del linguaggio
Unità A2 Java: le basi del linguaggio
Transcript della presentazione:

13/08/02Tipi base 1 Tipi interi Operatori numerici Tipi float Caratteri Tipo booleano

13/08/02 Tipi base2 Tipo intero La parola chiave int definisce una variabile di tipo intero Un int permette di memorizzare un intero di 4 byte (32 bit) con la tecnica del complemento a 2 Costanti di tipo intero sono sequenze di caratteri numerici senza il punto decimale Se la prima cifra è 0 il numero è interpretato come scritto secondo la notazione ottale Se la prima cifra è 0 seguito da x (X) il numero è considerato esadecimale 127 può perciò anche essere scritto sia come 0177 che 0x7f

13/08/02 Tipi base3 Tipo intero: operatori Espressioni di tipo intero utilizzano: operatori unari +, - operatori di tipo aritmetico +, -, *, /, % (resto della divisione) 28 / 5 --> 5 28 % 5 --> 3

13/08/02 Tipi base4 Programma PortaMonete.java 1.public class PortaMonete { 2. public static void main(String[] args) { // il portamonete contiene 3. int unCent = 8; // 8 monete da 1 cent, int dieciCent = 4; // quattro da 10 cent, 4. int ventiCent = 3; // e tre da // calcola il valore totale della moneta 7. int totale = unCent*1 + dieciCent*10 + ventiCent*20; // stampa il risultato 10. System.out.print(“Valore totale = ”); 11. System.out.print(totale); 12. System.out.println(“ centesimi”); 13. } 14.} Valore totale = 108 centesimi Ho definito 4 variabili di tipo int

13/08/02 Tipi base5 Programma PortaMonete.java E:\Java\esempi> java PortaMonete Valore totale = 108 centesimi E:\Java\esempi>

13/08/02 Tipi base6 Programma Monete2.java 1.public class Monete2 { 2. public static void main(String[] args) { 3. int unCent = 8; // 8 monete da 1 cent, 4. int dieciCent = 4; // 4 da 10 cent, int totale = unCent * 1 + dieciCent * 10; int ventiCent = 3; // e 3 da 20 cent // somma il valore dei venti cent 11. totale = totale + ventiCent * 20; // stampa il risultato 14. System.out.print(“Valore totale = ”); 15. System.out.print(totale); 16. System.out.println(“ centesimi”); 17. } 18.} Valore totale = 108 centesimi

13/08/02 Tipi base7 Assegnazione 3 48 ventiCent totale totale + ventiCent * ventiCent totale 108 Il nuovo valore ha sostituito irreversibilmente quello vecchio 11. totale = totale + ventiCent * 20;

13/08/02 Tipi base8 Il concetto di memoria Variabili Ogni variabile ha un nome, un tipo, una dimensione e un valore Il nome corrisponde a un indirizzo di memoria Quando un nuovo valore è posto in una variabile, sostituisce (e quindi distrugge) il contenuto precedente Leggere variabili dalla memoria non altera il loro valore 3 ventiCent 108 totale Nome: “ totale ” Tipo: int Dimensione: 4 byte 108 è il valore memorizzato nella cella

13/08/02 Tipi base9 Tipo intero: operatori operatori bit a bit & (and) 0xe & 0x3  0x2 | (or) 0xe | 0x3  0xf ^ (exor) 0xe ^ 0x3  0xd ~ (not) (scambia gli 1 con gli 0) >>, >> (shift) 0xe << 4  0xe0 0xe >> 2  0x3 (implementano in modo efficiente moltiplicazioni e divisioni per potenze di 2) >> conserva il bit di segno >>> inserisce sempre uno zero come bit più significativo

13/08/02 Tipi base10 Test Operatori public class TestOperatori { public static void main(String[] args) { 4. System.out.println(0xe & 0x3); 5. System.out.println(0xe | 0x3); 6. System.out.println(0xe ^ 0x3); 7. System.out.println(~ -2 ); 8. System.out.println(-1 << 2); 9. System.out.println(-4 >> 2); 10. System.out.println(-4 >>> 2); 11. System.out.println(-1 >> 1); 12. System.out.println(-1 >>> 1); 13. } }

13/08/02 Tipi base11 Operatori di incremento ++, -- incrementano o decrementano di 1 l'operando se l'operatore precede l'operando il risultato dell'espressione è quello ottenuto dopo l'applicazione dell'operatore stesso esempio: a = 4; b = ++a; // sia ad a che a b è assegnato il valore 5 a = 4; b = a++; // ad a è assegnato ancora 5, mentre a b il valore 4 a = 4; b = --a; // (a memorizza 3, b 3) a = 4; b = a--; // (a memorizza 3, b 4) ++ e -- sono applicabili solo a variabili non espressioni es. ++4 non è corretto

13/08/02 Tipi base12 Operatori: priorità Esiste una priorità fra gli operatori che corrisponde in genere alle normali regole dell’algebra: prima moltiplicazioni e divisioni (e modulo), poi somme e sottrazioni A parità di priorità le operazioni vengono solitamente eseguite da sinistra a destra, esiste comunque la possibilità di utilizzare le parentesi tonde per forzare un ordine particolare nell’ordine di esecuzione In caso di dubbi usate sempre le parentesi, in genere i programmi diventano anche più leggibili In generale la leggibilità aumenta spezzando espressioni complesse in più istruzioni semplici

13/08/02 Tipi base13 Altri tipi interi byte intero di 8 bit short intero di 16 bit long intero di 64 bit costanti di tipo long hanno come ultimo carattere L (l) TipoMemoriaValore minimoValore Massimo byte 8 bit short 16 bit int 32 bit long 64 bitminore di maggiore di 10 18

13/08/02 Tipi base14 Programma Monete3.java 1.public class Monete3 { 2. public static void main(String[] args) { 3. final int VAL_CENT = 1; 4. final int VAL_10CENT = 10; 5. final int VAL_20CENT = 20; 6. final int VAL_EURO = 100; int unCent = 8; 9. int dieciCent = 4; 10. int ventiCent = 7; // calcola il valore totale della moneta 13. int totale = 14. unCent * VAL_CENT dieciCent * VAL_ 10CENT ventiCent * VAL_20CENT; 17.

13/08/02 Tipi base15 Programma Monete3.java 18. // usa la divisione fra integer per convertire 19. // i centesimi in dollari int euro = totale / VAL_EURO; 22. int cent = totale % VAL_EURO; 23. System.out.print("Valore totale = "); 24. System.out.print(euro); 25. System.out.print(" euro e "); 26. System.out.print(cent); 27. System.out.println(" centesimi"); 28. } 29.} Valore totale = 1 euro e 88 centesimi

13/08/02 Tipi base16 Tipi floating point float precisione semplice (4 byte), double precisione doppia (8 byte) Costanti double e-5 sono caratterizzate o dal punto decimale o dall'esponente float 133.3f 78e-5F sono caratterizzate dal suffisso f(F) TipoMemoriaEsponenteValore Massimo double 64 bit10 bitmaggiore di float 32 bit8 bitmaggiore di 10 38

13/08/02 Tipi base17 Tipi floating point : operatori Sono gli stessi operatori visti per i tipi interi Non sono definiti gli operatori relativi alla gestione dei bit La divisione ovviamente produce decimali 28.0 / > 5.6 Esiste l’operatore % definito come a%b = a – ( (int)(a/b) ) * b 28.0 / > 2.5

13/08/02 Tipi base18 Funzioni matematiche La classe Math mette a disposizione una serie di metodi statici che implementano le più note funzioni matematiche Attenzione ogni volta che si utilizza uno di questi metodi occorre sempre specificare anche il nome della classe Esempio: Math.sin(Math.toRadians(45))

13/08/02 Tipi base19 Funzioni matematiche Il tipo restituito dipende dagli argomenti abs(x) Restituisce il valore assoluto max(a, b) Restituisce il maggiore dei due valori min(a, b) Restituisce il minore dei due valori Il tipo restituito è un double (escluso round che restituisce un long ) ceil(x) Restituisce l’intero più piccolo maggiore o uguale all'argomento floor(x) Restituisce l’intero più grande minore o uguale all'argomento rint(x) Restituisce l’intero più vicino a x round(x) Restituisce l’intero più vicino a x sqrt(x) Restituisce la radice quadrata pow(a, b) Operazione di elevamento a potenza a b exp(x) Funzione esponenziale ((Math.E) x ) log(x) Restituisce il logaritmo naturale (in base e) random() Restituisce un numero "a caso" compreso fra 0.0 e 1.0 escluso

13/08/02 Tipi base20 Funzioni trigonometriche sin(x) Restituisce il seno dell'angolo cos(x) Restituisce il coseno dell'angolo tan(x) Restituisce la tangente dell'angolo acos(x) Funzione inversa di cos asin(x) Funzione inversa di sin atan(x) Funzione inversa di tan atan2(y, x) Restituisce la componente  del punto (r,  ) in coordinate polari che corrisponde a (x, y) in coordinate Cartesiane per x positivo atan2(y,x)==atan(y/x) Per riferirsi a  si può utilizzare la costante Math.PI

13/08/02 Tipi base21 Funzioni trigonometriche Versioni recenti di Java hanno implementati anche i metodi: toDegrees(angrad) Converte da radianti a gradi toRadians(angdeg) Converte da gradi a radianti In alternativa si può ottenere lo stesso risultato con il codice: degrees = angrad / Math.PI * angrad = degrees / * Math.PI

13/08/02 Tipi base22 FunzioniTrigonometriche.java 1.public class FunzioniTrigonometriche { 2. public static void main(String[] args) { 3. int ang=45; 4. double seno=Math.sin(Math.toRadians(ang)); 5. double pi = Math.asin(seno)*4; 6. System.out.print("sen(45°)="); 7. System.out.println(seno); 8. System.out.print("pi greco="); 9. System.out.println(pi); 10. System.out.print("Math.PI= "); 11. System.out.println(Math.PI); 12. } 13.} E:\Java\esempi\Math> java FunzioniTrigonometriche sen(45°)= pi greco= Math.PI= E:\Java\esempi\Math>

13/08/02 Tipi base23 Tipo boolean Espressioni boolean possono assumere solo due valori corrispondenti alle costanti predefinite true (vero) e false (falso), variabili booleane assumono per default il valore false Operatori booleani &, |, ^, !, &&, || And &falsetrue false truefalsetrue Xor ^falsetrue false true false Or |falsetrue false true Not ! falsetrue false && e || si comportano come i corrispondenti & e |, terminando la valutazione dell’espressione non appena questa è definita

13/08/02 Tipi base24 Tipo boolean Operatori relazionali (permettono di confrontare fra di loro due valori): == uguale != diverso > maggiore < minore >= maggiore o uguale <= minore o uguale 1.public class Confronti { 2. public static void main(String[] args) { 3. int a=0, c=5; 4. boolean b=(c>3) || (a++>0); 5. System.out.println("(c>3) || (a++>0): "+b+" a="+a); 6. b=(c>3) | (a++>0); 7. System.out.println("(c>3) | (a++>0): "+b+" a="+a); 8. } 9.} (c>3) || (a++>0): true a=0 (c>3) | (a++>0): true a=1 + è l’operatore di concatenazione fra stringhe, se un operando non è una stringa, viene automaticamente convertito in maniera opportuna

13/08/02 Tipi base25 Concatenazione di stringhe (cenni) 1.public class Concatenazione { public static void main(String[] args) { 4. int a=1, b=2; 5. System.out.println("a+b="+a+b); 6. } 7.} a+b=12 6. System.out.println("a+b="+a+b); L’operatore + viene valutato da sinistra verso destra perciò “a+b”+a concatena la stringa “a+b=” con la stringa “1”, il risultato di questa operazione viene quindi concatenato alla stringa “2” Probabilmente si voleva scrivere: 6. System.out.println("a+b="+(a+b));a+b=3

13/08/02 Tipi base26 Operatore ? L’operatore ? È l’unico operatore che coinvolge 3 valori Sintassi: “?” “:” Viene valutata l’espressione booleana, se risulta vera il valore finale è il risultato della prima espressione, altrimenti della seconda min = a<b ? a : b; // assegna a min il valore più piccolo fra a e b 1.public class OperatoreTernario { public static void main(String[] args) { 4. int età = 23; 5. System.out.println( 6. "Mario è "+(età>=18 ? "maggiorenne" : "minorenne")); 7. } 8.} Mario è maggiorenne Java accetta anche lettere accentate negli identificatori, non è comunque una pratica consigliabile

13/08/02 Tipi base27 Tipo char Il tipo char permette di memorizzare e stampare lettere, cifre, caratteri di punteggiatura, operatori, caratteri speciali Una costante di tipo char viene rappresentata dal carattere (o dalla corrispondente sequenza di escape) tra apici singoli char c = ‘a’; // ho memorizzato in c il codice del carattere a char d = ‘\n’; // ho memorizzato in d il codice del “ new line ” Un char viene memorizzato con 16 bit (2 byte) in questo modo è possibile trattare cifre e caratteri di alfabeti diversi (cirillico, ebraico, arabo, … ) Viene garantito il normale ordinamento alfabetico: ‘a’<‘b’, ma ‘B’<‘a’ (le lettere maiuscole precedono le minuscole), sono quindi lecite anche le operazioni di incremento e decremento

13/08/02 Tipi base28 Caratteri unicode I caratteri estesi (unicode) sono rappresentati dalla sequenza \uXXXX (X cifra esadecimale) char digit = ‘\u0f23’; // è la cifra 3 secondo l’alfabeto tibetano 1.public class CaratteriUnicode { public static void main(String[] args) { 4. char digit = '\u0f23'; 5. int val = Integer.parseInt(""+digit); 6. System.out.println(digit+"="+val); 7. } 8.} ?=3 Il sistema non sa come trattare il carattere digit è riconosciuto come una cifra, quindi la stringa risultante è trattata come una stringa numerica

13/08/02 Tipi base29 L’alfabeto Thai Caratteri unicode Menù con caratteri cinesi

13/08/02 Tipi base30 Caratteri unicode I codici minori di 0x7F corrispondono ai codici ASCII ‘\u0033’ il codice della cifra ‘3’ 1.public class CaratteriUnicode { public static void main(String[] args) { 4. char digit = '\u0033'; 5. int val = Integer.parseInt(""+digit); 6. System.out.println(digit+"="+val); 7. } 8.} 3=3 In linea di principio qualunque carattere unicode riconosciuto come lettera o cifra potrebbe essere utilizzato in un identificatore (ammesso di avere un editor adatto)

13/08/02 Tipi base31 a=? b=? Operatore di assegnazione Anche l'operatore = è un operatore lecito all'interno di una espressione restituisce come valore il risultato dell'espressione alla sua destra, gli operatori di assegnazione sono eseguiti da destra a sinistra (la maggior parte degli operatori viene associata da sinistra a destra) a=b=0 ; // assegna 0 sia a b che ad a 1.public class Assign { public static void main(String[] args) { 4. int a, b; 5. a = b = 4 * 5 / 3; 6. System.out.println("a="+a+" b="+b); 7. } 8.} a=6 b=6 1.public class Assign { public static void main(String[] args) { 4. int a, b; 5. a = (b = 4 * 5) / 3; 6. System.out.println("a="+a+" b="+b); 7. } 8.} a=6 b=20

13/08/02 Tipi base32 Operatore di assegnazione Esistono altri operatori di assegnazione: +=, -=, *=, /=, %=, >=, >>>=, &=, |=, ^= il risultato dell'espressione (var op= espr) sarà in generale equivalente all'espressione (var = var op espr) Esempio x += 3 (x = x + 3) NB: Si ricorda che l'assegnazione non è una equazione x = 2 * x - 3 non dà come risultato x = 3, ma il risultato dipenderà dal valore che x assumeva prima del calcolo dell'espressione alla destra di = (esempio se x valeva 2 il nuovo valore di x è 1)

13/08/02 Tipi base33 Regole di conversione Risultato di un’espressioneTipo di dato degli operandi double Almeno un operando e’ double. float Almeno un operando e’ float; nessun operando e’ double. long Non ci sono operandi float o double; almeno un operando e’ long. int Non ci sono operandi float o double; nessun operando e’ long.

13/08/02 Tipi base34 Operatori: precedenza e associatività OperatoreAssociatività ( ) ++ (postfisso) -- (postfisso) da sinistra a destra + (unario) – (unario) ++ (prefisso) -- (prefisso) da destra a sinistra new (tipo) espressione da destra a sinistra * / %da sinistra a destra + -da sinistra a destra = += -= *= /=da destra a sinistra

13/08/02 Tipi base35 Operatori: priorità postfix operators []. ( params ) expr ++ expr -- unary operators ++ expr -- expr + expr - expr ~ ! creation or cast new ( type ) expr multiplicative * / % additive + - shift > >>> Relational = instanceof equality == != bitwise AND & bitwise inclusive OR ^ bitwise exclusive OR | logical AND && logical OR || Conditional ? : Assignment = += -= *= /= %= &= ^= |= >= >>= Quando operatori con la medesima priorita’ sono presenti in un’espressione si deve seguire una regola che stabilisca l’ordine di valutazione. Tutti gli operatori, ad esclusione degli operatori di assegnazione, vengono valutati da sinistra verso destra. Gli operatori di assegnamento vengono valutati da destra a sinistra.