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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

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

2 Contenuti Tipi di dato Tipi primitivi per numeri interi: il tipo int Tipi primitivi per numeri reali: il tipo double Espressioni Il tipo primitivo char Algebra di Boole e tipo primitivo boolean Altri tipi primitivi Conversione tra tipi conversione implicita conversione esplicita Tipi ed espressioni 2

3 Prerequisiti Questo capitolo presuppone la conoscenza degli argomenti già trattati nelle precedenti lezioni di questo corso e del corso di Laboratorio di Informatica e di Combinatoria e Matematica Discreta, con particolare riferimento a nozioni algebriche relative a N, Z, Q, R rappresentazione dei numeri in base b aritmetica modulare in complemento a 2 aritmetica floating-point algebra di Boole, operatori booleani e loro proprietà Tipi ed espressioni 3

4 Introduzione... In algebra, un tipo di dato (o tipo) è costituito da un insieme di valori (detto dominio del tipo) un insieme di operazioni sul dominio del tipo Z R,-2,,0,,-3,-2,-1,0,1,2,3, 0.25,,0.85,,1,, ,,2, { +, -, *, div, mod } { +, -, *, / } La nozione di tipo di dato nei linguaggi di programmazione è simile a quella delle strutture algebriche dell algebra Tipi ed espressioni 4

5 ... introduzione Nei linguaggi di programmazione un tipo di dato è costiuito da due componenti Una componente statica Tutti gli elementi che costituiscono il dominio opportunamente rappresentati Una componente dinamica Operazioni del dominio Tutti e soli gli operatori ammissibili Tipi ed espressioni 5

6 Tipi, classi e oggetti Una classe è caratterizzata da: Un insieme di elementi della classe (oggetti) Un insieme di operazioni (metodi) che possono essere eseguite sugli elementi Nomi di metodi Un tipo è caratterizzato da: Un insieme di valori che definiscono il dominio Un insieme di operazioni su elementi del dominio Operatori infissi Per comodità di programmazione, in Java, alcuni tipi di base non sono definiti come oggetti, ma come tipi detti primitivi Tipi ed espressioni 6

7 Rappresentazione e interpretazione 0011 = R(3), 0100 = R(4), 0111 = R(7) 3 = I (0011), 4 = I (0100), 7 = I (0111) 3, R I I R , Tipi ed espressioni 7

8 Tipizzazione Gli elementi sintattici di un linguaggio di programmazione sono caratterizzati da un tipo letterali (valori costanti) come 10 e variabili al momento della dichiarazione parametri e valori restituiti dai metodi espressioni con letterali, variabili, operatori, invocazione di metodi e creazione di oggetti I tipi sono anche importanti per stabilire la modalità di memorizzazione dei valori delle variabili stabilire il significato degli operatori rivelare eventuali errori nell uso di variabili, operatori e invocazioni di metodi Tipi ed espressioni 8

9 Tipi primitivi e tipi riferimento In Java ci sono due categorie di tipi tipi primitivi predefiniti nel linguaggio int, byte, short, long, char, float, double, boolean tipi riferimento ogni classe definisce un tipo riferimento String Tipi ed espressioni 9

10 Il tipo int Rappresentazione In complemento a 2, con 32 bit Dominio Interi relativi compresi tra e Operatori +, -, *, / (quoziente), % (resto) è possibile scrivere dei valori costanti che rappresentano numeri interi come 0, 1, 4126, 4543 un letterale è la denotazione di un valore costante è possibile dichiarare variabili di tipo int: int numero; è possibile assegnare a una variabiledi tipo int il valore di una espressione di tipo int: numero = ( ) * 3; è possibile scrivere delle espressioni di tipo int usando gli operatori aritmetici +,, *, / e % e le parentesi ( e ) ad esempio, ( ) * 3 Tipi ed espressioni 10

11 Il tipo int: Rappresentazione e Dominio Il tipo int di Java ha una rappresentazione a 32 bit in complemento a 2: Rappresentazione modulare Il tipo int di Java ha come domino un sottoinsieme degli interi relativi: [ ,, ] Una variabile di tipo int può assumere un valore tra e Tipi ed espressioni 11

12 Il tipo int: gli operatori aritmetici Gli operatori aritmetici rappresentano operazioni aritmetiche se applicati a operandi interi restituiscono un valore intero l operatore + rappresenta l operazione somma: vale 16 l operatore - rappresenta l operazione differenza: 11-5 vale 6 l operatore * rappresenta l operazione prodotto: 11 * 5 vale 55 l operatore / rappresenta la divisione intera quoziente 10 / 2 vale 5 11 / 2 vale 5 e non vale / 2 vale -5 l operatore % rappresenta il resto della divisione intera 10 % 2 vale 0 13 % 5 vale 3 Tipi ed espressioni 12

13 Operatori aritmetici, espressioni e parentesi Gli operatori aritmetici sono binari due operandi in generale sono delle espressioni forma infissa Nella formazione delle espressioni è possibile usare anche le parentesi tonde ( e ) ad esempio 3 è una espressione che vale 3 ( 2 * 3 ) + 4 vale / vale 8 2 (3 + 4) non è una espressione perché? quanto vale (1 / 2) + (1 / 2)? Tipi ed espressioni 13

14 Divisione per zero Nell aritmetica intera non è consentita la divisione per zero Ci sono pre-condizioni anche per gli operatori, ad esempio int a, b, c; a = 2; b = 0; c = a/b; // NO, divisione per zero! La compilazione non segnala alcun errore, MA durante l esecuzione si verifica un errore di semantica dinamica errore al tempo di esecuzione il programma termina con la segnalazione di un errore di tipo ArithmeticException in Java, gli errori al tempo di esecuzione si manifestano sotto forma di eccezioni Tipi ed espressioni 14

15 Altri tipi primitivi numerici interi Java fornisce altri tipi primitivi per la rappresentazione di numeri interi relativi con un intervallo di definizione diverso il tipo long 64 bit, tra e ossia [-2 63,, ] i letterali long terminano con il carattere L ad esempio, 1000L il carattere L terminale permette di distinguere i letterali di tipo long dai letterali di tipo int il tipo short 16 bit, tra e , ossia [-2 15,, ] il tipo byte 8 bit, tra -128 e +127, ossia [-2 7,,+2 7-1] non esistono letterali short né byte (di fatto inutili!!) Gli operatori definiti su questi tipi interi relativi sono gli stessi definiti per il tipo int ovviamente con effetti diversi Tipi ed espressioni 15

16 Il tipo double: rappresentazione e dominio Rappresentazione un numero reale in virgola mobile secondo lo standard IEEE a 64 bit (mantissa con 18 cifre significative ed esponente tra -324 e +308) Dominio Insieme di 2 64 razionali positivi e negativi Valore minimo assoluto: Valore massimo assoluto: Precisione ~15 cifre decimali Tipi ed espressioni 16

17 Letterali in virgola mobile I letterali di tipo double contengono un punto, e/o contengono una E che separa la mantissa dall esponente, e/o terminano per D 3.2E 6 denota il valore ma anche 32E 7 o Attenzione il letterale 3 denota un valore intero i letterali E0 3D denotano valori reali Tipi ed espressioni 17

18 Il tipo double: operatori Gli stessi operatori degli int: + - * / % ma operazioni diverse Gli operatori aritmetici applicati ad operandi reali indicano un operazione tra reali il risultato è un numero reale ad esempio, 7.0/2.0 restituisce 3.5 in questo caso, l operatore / è interpretato come l operatore di divisione tra numeri reali calcolano un risultato approssimato (invece l aritmetica intera è una aritmetica esatta, anche se modulare) I risultati sono soggetti ad arrotondamenti, e quindi a perdita di precisione ad esempio, 1E100+1E-100 vale 1E100 Gli operatori aritmetici sono sovraccarichi Lo stesso simbolo indica operazioni diverse Tipi ed espressioni 18

19 La classe Math La classe Math del package java.lang contiene la definizione di molti metodi di utilità per la matematica ad esempio double Math.sqrt(double x): calcola la radice quadrata di x double Math.pow(double x, double y):calcola x elevato alla y double Math.log(double x): calcola il logaritmo naturale di x double Math.sin(double x): x e espresso in radianti double Math.random(): restituisce un numero casuale nell intervallo semi-aperto [0.0, 1.0) La classe Math contiene anche la definizione di due costanti con la migliore approssimazione possibile (per un valore di tipo double) Math.E: Math.PI: Tipi ed espressioni 19

20 Espressioni Molti elementi sintattici di Java sono classificati come espressioni ad esempio, il lato destro di una assegnazione, gli argomenti nell invocazione di un metodo Le espressioni vengono formate mediante la composizione di operandi e operatori gli operatori sono simboli usati per denotare operazioni (come ad esempio gli operatori aritmetici) da valutare sui rispettivi argomenti, chiamati operandi attenzione: un operatore può rappresentare più operazioni A ciascuna espressione è associato un tipo determinato sulla base degli operandi e degli operatori che vi occorrono Tipi ed espressioni 20

21 Espressioni semplici Sono formate da un singolo operando un letterale è una espressione denota un valore costante, il tipo viene stabilito sulla base della sua forma lessicale una variabile è una espressione denota il valore della variabile, il tipo viene stabilito sulla base della sua dichiarazione una costante è una espressione denota il valore della costante, il tipo viene stabilito sulla base della sua dichiarazione la creazione di un oggetto è una espressione denota il riferimento all oggetto creato, il tipo è la classe da cui l oggetto viene creato l invocazione di un metodo è una espressione denota il valore restituito dal metodo, il tipo è il tipo di ritorno l accesso a una variabile di un oggetto è una espressione denota il valore della variabile, il tipo è il tipo della variabile Tipi ed espressioni 21

22 Espressioni composte Sono formate da più operatori e operandi Esempio: se espr 1 e espr 2 sono espressioni, allora anche espr 1 + espr 2 e espr 1 * espr 2 sono espressioni Il tipo di una espressione viene determinato sulla base del tipo dei suoi operandi e delle caratteristiche degli operatori che vi occorrono Esempio 1:se espr 1 e espr 2 sono espressioni di tipo int, allora anche espr 1 + espr 2 è una espressione di tipo int Esempio 2:se espr 1 e espr 2 sono espressioni di tipo double, allora anche espr 1 + espr 2 è una espressione di tipo double L operatore + è lo stesso nei due esempi? Tipi ed espressioni 22

23 Espressioni composte Esempio 2 * è una espressione, in cui compaiono due operatori gli operandi dell operatore * sono i letterali 2 e 3 gli operandi dell operatore + sono l espressione 2*3 e il letterale 4 nell espressione 3.14 * r * r ci sono due operatori gli operandi dell operatore * più a sinistra sono i letterali 3.14 e la variabile r gli operandi dell operatore * più a destra sono l espressione 3.14*r e la variabile r anche Math.sqrt(a) + Math.sqrt(b) è una espressione in cui l operatore somma va applicato ai risultati delle invocazioni di metodi Math.sqrt(a) e Math.sqrt(b) anche Math.sqrt(a + b) è una espressione in cui il metodo Math.sqrt va invocato usando come argomento il risultato della valutazione dell espressione a+b Tipi ed espressioni 23

24 Valutazione delle espressioni Le espressioni vengono valutate calcolando il valore di ciascun operando, e applicando gli operatori uno alla volta, in un ordine che dipende: dalla precedenza degli operatori che vi occorrono normalmente gli operatori moltiplicativi vanno applicati prima di quelli additivi a parità di precedenza, dall associatività degli operatori normalmente operatori con uguale precedenza vanno valutati da sinistra verso destra dalle parentesi che sono un operatore Tipi ed espressioni 24

25 Valutazione delle espressioni Qual è il risultato delle seguenti espressioni? vale 9 2 * vale 10 oppure 14? * 3 vale 10 oppure 18? vale 3 oppure 5? In questi semplici esempi, il valore delle espressioni è quello che uno si aspetta in generale, il valore di una espressione viene calcolato valutando un operatore alla volta se una espressione è composta da più operatori, in che ordine vengono applicati i diversi operatori e quali sono i loro operandi? le regole che stabiliscono l ordine di valutazione delle espressioni sono basate sui concetti di precedenza e associatività tra operatori Tipi ed espressioni 25

26 Precedenza degli operatori La precedenza degli operatori permette di stabilire, nell ambito di una espressione, qual è l operatore che deve essere applicato per primo ad esempio, una regola di precedenza è la seguente nelle espressioni aritmetiche, gli operatori moltiplicativi *, / e % hanno precedenza (ovvero, devono essere valutati prima degli) sugli operatori additivi + e - quindi 2 * vale 10 e non * 3 vale 10 e non 18 secondo operatore a essere valutato 4 + * primo operatore a essere valutato Tipi ed espressioni 26

27 Associatività degli operatori L associatività degli operatori permette di stabilire l ordine di applicazione tra operatori che hanno la stessa precedenza tutti gli operatori binari sono associativi a sinistra (ad eccezione degli operatori di assegnazione, che sono associativi a destra) quindi viene interpretato come (6 + 2) + 1 e vale viene interpretato come (6-2) - 1 e vale 3 (non 5) primo operatore a essere valutato Tipi ed espressioni 27 1 secondo operatore a essere valutato

28 Parentesi Le parentesi sono un operatore che ha precedenza massima tra gli operatori, che permette quindi di imporre l ordine di valutazione desiderato ( ) * 3 vale ( 2-1 ) vale 5 solo parentesi tonde, eventualmente annidate ( 10 * (10+1) ) / 2 vale 55 le parentesi quadre e graffe hanno un altro significato Stilisticamente, le parentesi andrebbero utilizzate solo per modificare la precedenza e/o l associatività degli operatori Tipi ed espressioni 28

29 Operatore di assegnazione Anche = è un operatore, l operatore di assegnazione a = 5 l operatore di assegnazione è binario il primo operando è il nome di una variabile il secondo operando è una espressione semantica dell assegnazione essendo un operatore, la sua valutazione ha anche l effetto di restituire un valore il valore dell espressione, ovvero il valore assegnato alla variabile a = b = 5; System.out.println(a=8); questo uso è sconsigliato!!! Tipi ed espressioni 29

30 Operatori di assegnazione composti Gli operatori di assegnazione composti sono ottenuti componendo un operatore aritmetico binario con l operatore di assegnazione a += 5 equivale all assegnazione a = a + 5 a -= 5 equivale all assegnazione a = a - 5 a *= 5 equivale all assegnazione a = a * 5 a /= 5 equivale all assegnazione a = a / 5 a %= 5 equivale all assegnazione a = a % 5 Tipi ed espressioni 30

31 Operatori di incremento e decremento Due operazioni molto comuni sono l incremento e il decremento di uno di una variabile intera a = a+1; // equivalente a: a +=1 b = b-1; // equivalente a: b -=1 Queste operazioni sono molto comuni, e per questo motivo Java fornisce gli operatori di incremento ++ e decremento a++; // equivalente a: a +=1 b--; // equivalente a: b -=1 Tipi ed espressioni 31

32 Interpretazione degli operatori sovraccarichi Per gli operatori aritmetici se entrambi gli operandi sono interi l operando indica una operazione tra interi e il risultato è intero se entrambi gli operandi sono reali l operando indica una operazione tra reali e il risultato è reali se un operando è reale e l altro è intero viene convertito il valore intero a un valore reale e viene eseguita l operazione tra reali 7 / 2 vale / 2.0 vale / 2.0 e 7.0 / 2 valgono Tipi ed espressioni 32

33 Esercizio Determinare tipo e valore per ciascuna delle seguenti espressioni 1/2 + 1/2 1.0/2 + 1/ /2 + 1/2 Il significato di un operatore dipende solo dal tipo dei suoi operandi, e non dal contesto in cui il suo risultato viene utilizzato ad esempio, l ultima espressione vale 0.5 (e non 1.0). Infatti (almeno) un operando è di tipo double, pertanto vengono interpretati come operatori razionali / / 1 2 entrambi gli operandi sono di tipo int, pertanto viene interpretato come operatore intero Tipi ed espressioni 33

34 Divisione per zero A differenza di quanto avviene nell aritmetica intera, la divisione per zero è una operazione consentita nell aritmetica razionale il dominio dei tipi numerici reali comprende una rappresentazione dell infinito Ad esempio double a, b, c; a = 2; b = 0; c = a/b; System.out.println(c); // stampa Infinity I valori infiniti possono essere acceduti come costanti notevoli delle classi Double e Float (del package java.lang) Double.POSITIVE_INFINITY e Double.NEGATIVE_INFINITY denotano rispettivamente + e inoltre, Double.NaN (Not a Number) denota un valore che non è un numero (ad esempio, il risultato di 0.0/0.0) Tipi ed espressioni 34

35 Il tipo char Rappresentazione 16 bit Dominio Tutti i caratteri dell alfabeto Unicode 2.0 ( Operatori +, ++, -, --, il tipo char è un tipo numerico Ad ogni carattere corrisponde un numero d ordine i letterali char sono normalmente scritti tra apici semplici; 'a', 'B', '5' alcune eccezioni: le sequenze di escape '\'' indica il carattere ' '\"' indica il carattere " '\\' indica il carattere Tipi ed espressioni 35

36 Codifica e aritmetica dei caratteri Alcune informazioni utili sulla codifica dei caratteri i codici dei caratteri alfabetici minuscoli sono tra loro consecutivi dalla a alla z i codici dei caratteri alfabetici maiuscoli sono tra loro consecutivi dalla A alla Z i codici dei caratteri per le cifre sono tra loro consecutivi dallo 0 al 9 i codici delle cifre sono tutti minori di quelli dei caratteri alfabetici maiuscoli i codici dei caratteri alfabetici maiuscoli sono tutti minori di quelli dei caratteri alfabetici minuscoli Aritmetica dei caratteri se car vale 'a', allora car++ cambia il valore di car in b' se car vale 'f', allora (char) (car 'a' + 'A') vale 'F' Tipi ed espressioni 36

37 Il tipo boolean Rappresentazione Concettualmente 1 bit Dominio Due elementi: true (vero), false (falso) Operatori And: &, && Or: I, II Not:! Tipi ed espressioni 37

38 Algebra di Boole e tipo primitivo boolean Un tipo di dato molto importante ed utile nella programmazione è il tipo delle espressioni usate nella scrittura di condizioni per le istruzioni di controllo questo tipo di dato è rappresentato in Java dal tipo primitivo boolean (in onore del matematico britannico George Boole ( )) il significato del tipo boolean può essere descritto con riferimento alla sua formulazione matematica, ovvero all algebra di Boole Tipi ed espressioni 38

39 Algebra di Boole L algebra di Boole è formata dai seguenti elementi un dominio composto da due soli elementi, corrispondenti ai valori di verità vero e falso, che denoteremo rispettivamente mediante i simboli TRUE e FALSE tre operatori (chiamati operatori booleani) l operatore unario ( not ) di complementazione o negazione l operatore binario ( and ) di congiunzione l operatore binario ( or ) di disgiunzione Tipi ed espressioni 39

40 Operatori logici A valori di tipo boolean è possibile applicare i seguenti operatori logici l operatore! di negazione! true vale false! false vale true l operatore && di congiunzione condizionale a && b vale true se sia a che b valgono true l operando b viene valutato solo se a vale true false &&... e true && false valgono false true && true vale true l operatore di disgiunzione condizionale a b vale true se almeno uno tra a e b vale true l operando b viene valutato solo se a vale false true... e false true valgono true false false vale false Tipi ed espressioni 40

41 Operatori logici (non condizionali) Java fornisce altri due operatori logici non condizionali, varianti degli operatori && e l operatore & di congiunzione (non condizionale) a & b vale true se sia a che b valgono true entrambi gli operandi a e b vengono valutati l operatore di disgiunzione (non condizionale) a b vale true se almeno uno tra a e b vale true entrambi gli operandi a e b vengono valutati Tipi ed espressioni 41

42 Espressioni di tipo boolean Nella valutazione di espressioni di tipo boolean (che coinvolgono operatori logici) l operatore di negazione! ha la precedenza maggiore tra tutti gli operatori logici (condizionali e non) l operatore di congiunzione && ha precedenza maggiore dell operatore di disgiunzione gli operatori logici non condizionali e & hanno precedenza maggiore di quelli condizionali e && Esercizio valutare le seguenti espressioni! true && false! (true && false) (true && false)! (true && false) Tipi ed espressioni 42

43 Operatori relazionali L avere a disposizione il tipo boolean permette di confrontare una coppia di valori per verificare se tra questi valori sussiste o meno una certa relazione mediante gli operatori relazionali» si applicano a coppie di operandi» restituiscono un valore boolean l operatore maggiore di, > l operatore maggiore o uguale di, >= l operatore minore di, < l operatore minore o uguale di, <= l operatore uguale a, ==» da non confondere con l operatore di assegnazione = l operatore non uguale a,!= Gli operatori relazionali hanno precedenza minore dell operatore di negazione, ma maggiore degli operatori logici Tipi ed espressioni 43

44 Operatori relazionali Ad esempio 10 > 5 vale true 10.0 < 5.0 vale false 10 > 10 vale false 10 >= 10 vale true 10.0 >= 5.0 vale true 10 == 5 vale false 10 == 10 vale true 10!= 5 vale true 10!= 10 vale false 'a' > 'z' vale false 'a' > 'Z' vale true 'A' > '5' vale true Tipi ed espressioni 44

45 Predicati Le espressioni di tipo boolean sono chiamate anche predicati (o condizioni) i predicati sono espressioni in cui possono apparire sia operatori relazionali che operatori logici ad esempio, il predicato (n>=0) && (n<=10) vale true se (e solo se) il valore di n è compreso tra 0 e 10 Tipi ed espressioni 45

46 Variabili boolean È possibile dichiarare variabili di tipo boolean le variabili di tipo boolean vanno normalmente documentate con un commento che descrive la proprietà che è verificata se la variabile assume il valore true boolean npari; // n è pari boolean npositivo; // n è positivo boolean npariepositivo; // n è pari e positivo È possibile assegnare a una variabile boolean il valore (della valutazione) di un predicato /*n è pari se il resto della divisione per 2 e zero */ npari = (n%2) == 0; npositivo = n>0; Nei predicati è possibile usare anche variabili boolean npariepositivo = npari && npositivo; Tipi ed espressioni 46

47 Esercizio Qual è il valore stampato dal seguente frammento di codice? Perché? boolean a, b, c; a = true; b = true; c = a &&!b; b = (b && c) (!b &&!c); a = (b && c) (!b &&!c); c =!(a && b); if ((a && b &&!c) (a &&!b)) System.out.println("Ho capito!"); else System.out.println("Non ho capito!"); Tipi ed espressioni 47

48 Espressioni booleane e operatori relazionali In teoria, è possibile usare gli operatori di uguaglianza (== e!=) per verificare se una certa espressione booleana è vera o falsa boolean npari; // n è pari... if (npari==true) System.out.println(n + " è pari"); else System.out.println(n + " è dispari"); Questa modalità di scrittura è assolutamente Sconsigliata!!! è inutile npari==true è equivalente a npari npari==false è equivalente a!npari è soggetta a errori (logici, non rilevati dal compilatore) ad esempio, se si scrive in una condizione npari=true anziché npari==true Tipi ed espressioni 48

49 Leggi di De Morgan Le leggi di De Morgan sono delle leggi di dualità tra espressioni che coinvolgono operatori logici sono leggi definite per gli operatori logici non condizionali, che valgono anche per gli operatori logici condizionali Siano b 1, b 2,..., b n espressioni di tipo boolean, allora! ( b 1 & b 2 &... & b n ) è equivalente a! b 1! b 2...! b n la negazione di una congiunzione di termini è uguale alla disgiunzione dei termini negati! ( b 1 b 2... b n ) è equivalente a! b 1 &! b 2 &... &! b n la negazione di una disgiunzione di termini è uguale alla congiunzione dei termini negati Ad esempio! ( (a>=0) && (a<b) ) è equivalente a!(a>=0)!(a<b) che è poi anche equivalente a (a<0) (a>=b) Tipi ed espressioni 49

50 Esercizio Sia anno una variabile intera che rappresenta un anno scrivere una espressione booleana, in cui compare la variabile anno, che è vera se e solo se anno è bisestile normalmente, anno è bisestile se anno è divisibile per 4 tuttavia, normalmente se anno è divisibile per 100 allora non è bisestile, come nel caso dell anno 1900 tuttavia, se anno è divisibile per 400 allora è bisestile, come nel caso dell anno Tipi ed espressioni 50

51 Gli altri tipi primitivi di Java byte un intero relativo tra -128 e +127 (8 bit) short un intero relativo tra e (16 bit) long un intero relativo tra e (64 bit) float un numero reale in virgola mobile secondo lo standard IEEE a 32 bit (mantissa con 9 cifre significative, ed esponente tra -45 e +38) Tipi ed espressioni 51

52 Conversione tra tipi Talvolta è possibile / necessario effettuare conversioni da un tipo a un altro per trasformare la rappresentazione di un valore in un altra rappresentazione Ad esempio: si vuole calcolare il cubo di un numero intero. Nelle librerie di java c è il metodo Math.pow: static double pow(double a, double b) Returns the value of the first argument raised to the power of the second argument Tipi ed espressioni 52

53 Conversione implicita Si consideri il seguente frammento di codice int intero; // un valore intero double reale; // un valore reale... assegna un valore a intero... reale = intero; questa assegnazione è corretta? sì, è possibile assegnare un valore intero a una variabile di tipo double che cosa vuole dire questa assegnazione? il valore di intero (come sequenza di bit) non può semplicemente essere trascritto nella variabile reale bisogna prima convertire il valore di intero a un valore equivalente di tipo double si tratta di una conversione implicita o promozione Tipi ed espressioni 53

54 Assegnazioni e conversioni implicite Una assegnazione variabile = espressione è valida se variabile ed espressione hanno lo stesso tipo, oppure se il tipo di variabile è più ampio di quello di espressione in quest ultimo caso la semantica dell assegnazione consiste nella valutazione di espressione, nella conversione implicita del valore calcolato al tipo di variabile e in una assegnazione a variabile intero = 10; reale = intero; /* ora reale vale 10.0 */ Le conversioni implicite vengono effettuate anche in altri casi Math.sqrt(144) 7.0/2 Tipi ed espressioni 54

55 Conversione esplicita Si consideri il seguente frammento di codice int intero; // un valore intero double reale; // un valore reale... assegna un valore a reale... intero = reale; questa assegnazione è corretta? no, il tipo di intero non è più ampio di quello di reale posso voler effettuare una assegnazione di questo tipo? in alcuni casi con quale significato? arrotondando il valore di reale a un intero nel modo migliore possibile è necessaria una conversione esplicita perché è possibile la perdita di precisione Tipi ed espressioni 55

56 Conversione esplicita e cast Se T è un tipo, allora la forma sintattica (T ) è un operatore unario operatore di cast - che indica una conversione di un valore al tipo T reale = 10.8; intero = (int) reale; /* ora intero vale 10 */ la conversione viene effettuata perdendo di precisione in questo caso, arrotondando per difetto Tipi ed espressioni 56

57 Esercizi Si vuole calcolare il cubo di un numero intero int num; int cubo; cubo = (int) Math.pow(num,3.0); Siano: double a=3.0; int b=2; int c=10; Quale valore calcola l espressione c/b+b*a? Trasformare un carattere minuscolo nel relativo carattere maiuscolo Trasformare un carattere maiuscolo nel relativo minuscolo Tipi ed espressioni 57

58 Cosa abbiamo imparato Analogia tra il tipo di dato e la classe Tipi primitivi di Java Differenza nella rappresentazione dei diversi tipi primitivi Alcuni operatori hanno un significato diverso in corrispondenza dei tipi degli operandi su cui operano Espressioni e loro valutazione Cast impliciti ed espliciti tra tipi diversi Tipi ed espressioni 58

59 Riferimenti al libro di testo Per lo studio di questi argomenti si fa riferimento al libro di testo, e in particolare al capitolo 11 Tipi ed espressioni Tipi ed espressioni 59

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

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 13. Tipi ed espressioni. Carla Limongelli Aprile Tipi ed espressioni 1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 13 Tipi ed espressioni Carla Limongelli Aprile 2010 Tipi ed espressioni 1 Contenuti Tipi di dato Tipi primitivi per numeri interi: il

Dettagli

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

Corso di Laurea Ingegneria Civile. Dispensa 13. Tipi ed espressioni. Carla Limongelli. Tipi ed espressioni 1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 13 Tipi ed espressioni Carla Limongelli Marzo 2009 Tipi ed espressioni 1 Contenuti Tipi di dato Tipi primitivi per numeri interi: il

Dettagli

Corso di Laurea Ingegneria Informatica

Corso di Laurea Ingegneria Informatica Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 09 Tipi ed espressioni Carla Limongelli Ottobre 2011 http://www.dia.uniroma3.it/~java/fondinf/ Tipi ed espressioni 1 Prerequisiti

Dettagli

Tipi di dato e variabili. Walter Didimo

Tipi di dato e variabili. Walter Didimo Tipi di dato e variabili Walter Didimo Tipi di dato I dati che possono essere manipolati in un programma si classificano in tipologie differenti, chiamate tipi di dato Esistono due macro tipi di dato in

Dettagli

Tipi di dato primitivi

Tipi di dato primitivi 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

Dettagli

Informatica AA 2005/06. Programmazione M.A. Alberti. Operatori in Java 1. Operatori in Java. Espressioni aritmetiche. Espressioni booleane

Informatica AA 2005/06. Programmazione M.A. Alberti. Operatori in Java 1. Operatori in Java. Espressioni aritmetiche. Espressioni booleane Operatori in Java Operatori in Java Corso di laurea in Informatica Operatori aritmetici Operatori di uguaglianza e relazionali Operatori logici in espressioni booleane La precedenza degli operatori L associatività

Dettagli

IL LINGUAGGIO C TIPI DI DATO

IL LINGUAGGIO C TIPI DI DATO IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati, detti tipi primitivi dominio dei

Dettagli

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

Tipi di dato. Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: Tipi di dato Il concetto di tipo di dato viene introdotto per raggiungere due obiettivi: esprimere in modo sintetico la loro rappresentazione in memoria, e un insieme di operazioni ammissibili permettere

Dettagli

Variabili e assegnazione

Variabili e assegnazione Corso di Laurea Ingegneria Civile Fondamenti di Informatica Variabili e assegnazione Carla Limongelli Marzo 2009 Variabili e assegnazione 1 Contenuti Variabili a ab e assegnazionea e Variabili e aree di

Dettagli

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double

Cast implicito. Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto. byte short int long float double Il cast Cast implicito Il cast è fatto automaticamente quando un tipo più basso viene assegnato ad un tipo più alto Per esempio: byte short int long float double int x = 10; float f; f = x; Il valore di

Dettagli

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

Il potere espressivo di un linguaggio è caratterizzato da: PROGRAMMA = DATI + CONTROLLO LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

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

Linguaggio C. Tipi predefiniti e operatori. Università degli Studi di Brescia. Docente: Massimiliano Giacomin Linguaggio C Tipi predefiniti e operatori Università degli Studi di Brescia Docente: Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 RICHIAMI char 8 bit Valori interi

Dettagli

LINGUAGGI DI PROGRAMMAZIONE!

LINGUAGGI DI PROGRAMMAZIONE! LINGUAGGI DI PROGRAMMAZIONE! Il potere espressivo di un linguaggio è! caratterizzato da:! quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente)! quali istruzioni

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Struttura di un programma Java Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA 1 Struttura di un programma Java Un programma Java consiste in un insieme di definizioni di classi. In genere

Dettagli

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

Elementi lessicali. Lezione 4. La parole chiave. Elementi lessicali. Elementi lessicali e espressioni logiche. Linguaggi di Programmazione I Lezione 4 Elementi lessicali e espressioni logiche Matricole 2-3 Elementi lessicali il linguaggio C ha un suo vocabolario di base i cui elementi sono detti token esistono 6 tipi di token: parole chiave

Dettagli

Corso sul linguaggio Java

Corso sul linguaggio Java Corso sul linguaggio Java Modulo JAVA.2.2 Operare con i dati Prerequisiti Concetti matematici di: Espressione Operatore 2 Introduzione Le variabili utilizzate da un programma vengono usate con operatori

Dettagli

Espressioni ed operatori in C

Espressioni ed operatori in C Espressioni ed operatori in C Espressioni Il C è un linguaggio basato su espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione Una espressione può essere

Dettagli

Espressioni ed operatori in C

Espressioni ed operatori in C Espressioni ed operatori in C Espressioni Il C è un linguaggio basato su espressioni Una espressione è una notazione che denota un valore mediante un processo di valutazione Una espressione può essere

Dettagli

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Simulazione del Questionario a Risposte Multiple.

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Simulazione del Questionario a Risposte Multiple. Domanda n. 1 Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Simulazione del Questionario a Risposte Multiple 8-Nov-2004 Argomento: Rappresentazione dell'informazione

Dettagli

Programmazione in Java (I modulo)

Programmazione in Java (I modulo) Programmazione in Java (I modulo) Lezione 4 Variabili di tipo primitivo. Dichiarazione di costanti Conversioni di tipo: operatore cast Altri operatori di assegnamento Operazioni aritmetiche e di confronto

Dettagli

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

Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011. Prof. Raffaele Nicolussi Laboratorio di Informatica Ingegneria Clinica Lezione 9/11/2011 Prof. Raffaele Nicolussi FUB - Fondazione Ugo Bordoni Via del Policlinico, 147-00161 Roma Università degli Studi La Sapienza Fondamenti di

Dettagli

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Lettura di dati da input In Java la lettura di dati da input

Dettagli

Java e i Tipi di dati primitivi. Parte 3

Java e i Tipi di dati primitivi. Parte 3 Java e i Tipi di dati primitivi Parte 3 La nozione di tipo di dato Il tipo del dato consente di esprimere la natura del dato Indica il modo con cui verrà interpretata la sequenza di bit che rappresenta

Dettagli

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione G. Mecca M. Samela Università della Basilicata Elementi di Base >> Sommario Sommario Introduzione Istruzioni

Dettagli

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java

IL LINGUAGGIO JAVA. Input, Tipi Elementari e Istruzione Condizionale. Primo esempio di un programma Java Fondamenti di Informatica IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale Fondamenti di Informatica - D. Talia - UNICAL 1 Primo esempio di un programma Java Semplicissimo programma

Dettagli

Istruzioni Condizionali

Istruzioni Condizionali Corso di Laurea Ingegneria Informatica Fondamenti di Informatica Dispensa 10 Istruzioni Condizionali Carla Limongelli Novembre 2011 http://www.dia.uniroma3.it/~java/fondinf/ Istruzioni condizionali 1 Contenuti

Dettagli

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

Array. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 11. A. Miola Dicembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 11 Array A. Miola Dicembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Array 1 Contenuti Il problema degli studenti da promuovere

Dettagli

LINGUAGGI DI PROGRAMMAZIONE

LINGUAGGI DI PROGRAMMAZIONE LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell utente) quali istruzioni di

Dettagli

La codifica binaria. Informatica B. Daniele Loiacono

La codifica binaria. Informatica B. Daniele Loiacono La codifica binaria Informatica B Introduzione Il calcolatore usa internamente una codifica binaria ( e ) per rappresentare: i dati da elaborare le istruzioni dei programmi eseguibili Fondamenti di codifica

Dettagli

Esercizi Programmazione I

Esercizi Programmazione I Esercizi Programmazione I 0 Ottobre 016 Esercizio 1 Funzione valore assoluto Il file.c di questo esercizio deve contenere nell ordine, il prototipo (dichiarazione) di una una funzione abs, che prende in

Dettagli

Caratteristiche di un linguaggio ad alto livello

Caratteristiche di un linguaggio ad alto livello Caratteristiche di un linguaggio ad alto livello Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono

Dettagli

Valutazione di espressioni

Valutazione di espressioni Valutazione di espressioni Stefano Ferrari Università degli Studi di Milano stefano.ferrari@unimi.it Programmazione anno accademico 2016 2017 Blocco Blocco è un insieme di istruzioni consecutive, con un

Dettagli

Notazione e convenzioni in questi lucidi

Notazione e convenzioni in questi lucidi Notazione e convenzioni in questi lucidi Il programma, ovvero la descrizione della funzione da calcolare, è scritto dall utente come una sequenza di caratteri. le sequenze di caratteri sono anche dette,

Dettagli

2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2)

2001 Pier Luca Montessoro, Davide Pierattoni (si veda la nota di copyright alla slide n. 2) - Linguaggio C - Espressioni e operatori FONDAMENTI DI INFORMATICA Prof. PIER LUCA MONTESSORO Ing.DAVIDE PIERATTONI Facoltà di Ingegneria Università degli Studi di Udine Linguaggio C Espressioni e operatori

Dettagli

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

Tipi di dati scalari (casting e puntatori) Alessandra Giordani Lunedì 10 maggio 2010 Tipi di dati scalari (casting e puntatori) Alessandra Giordani agiordani@disi.unitn.it Lunedì 10 maggio 2010 http://disi.unitn.it/~agiordani/ I tipi di dati scalari I tipi aritmetici, i tipi enumerativi

Dettagli

Espressioni in Linguaggio C

Espressioni in Linguaggio C Concetti chiave Espressioni in Linguaggio C Espressioni Conversioni Implicite Operatori aritmetici Operatore di assegnamento Operatori relazionali Operatori logici Gerarchia e associatività degli operatori

Dettagli

Char. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi

Char. Unità 2. Corso di Laboratorio di Informatica Ingegneria Clinica BCLR. Domenico Daniele Bloisi Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio Ruberti Via Ariosto

Dettagli

Fondamenti di programmazione parte 2. Elementi di informatica IGLP

Fondamenti di programmazione parte 2. Elementi di informatica IGLP Fondamenti di programmazione parte 2 Elementi di informatica IGLP Questo insieme di trasparenze è stato ideato e realizzato dai ricercatori e professori del Dipartimento di Informatica e Sistemistica dell

Dettagli

Char e bool. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER

Char e bool. Unità 2. Domenico Daniele Bloisi. Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Corso di Programmazione e Metodi Numerici Ingegneria Aerospaziale BAER Domenico Daniele Bloisi Docenti Metodi Numerici prof. Vittoria Bruni vittoria.bruni@sbai.uniroma1.it Programmazione prof. Domenico

Dettagli

IL LINGUAGGIO C TIPI DI DATO

IL LINGUAGGIO C TIPI DI DATO IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati, detti tipi primitivi dominio dei

Dettagli

Lezione 6 Introduzione al C++ Mauro Piccolo

Lezione 6 Introduzione al C++ Mauro Piccolo Lezione 6 Introduzione al C++ Mauro Piccolo piccolo@di.unito.it Linguaggi di programmazione Un linguaggio formale disegnato per descrivere la computazione Linguaggi ad alto livello C, C++, Pascal, Java,

Dettagli

La codifica dell informazione

La codifica dell informazione La codifica dell informazione Codifica dati e istruzioni Algoritmi = istruzioni che operano su dati. Per scrivere un programma è necessario rappresentare istruzioni e dati in un formato tale che l esecutore

Dettagli

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

Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Corso di Fondamenti di Informatica Il sistema dei tipi in C++ Anno Accademico Francesco Tortorella Struttura di un programma C++ // Programma semplice in C++ #include int main() { cout

Dettagli

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

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011 Fondamenti di Informatica 1 Prof. B.Buttarazzi.. 2010/2011 Sommario Conversione di tipo:casting Tipo enumerativo lgebra Booleana Esercizi Conversione di tipo:casting Il casting o conversione di tipo avviene

Dettagli

Char. Parte 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR

Char. Parte 2. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm

Dettagli

Linguaggio C: Espressioni

Linguaggio C: Espressioni Linguaggio C: Espressioni Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Ringraziamenti prof. Mirko Viroli, Università

Dettagli

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main()

#include <stdio.h> /* l esecuzione comincia dalla funzione main */ int main() Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine

Dettagli

Introduzione alla programmazione in linguaggio C

Introduzione alla programmazione in linguaggio C Introduzione alla programmazione in linguaggio C Il primo programma in C commento Header della libreria Funzione principale Ogni istruzione in C va terminata con un ; Corso di Informatica AA. 2007-2008

Dettagli

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

IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura fisica di ogni elaboratore è intrinsecamente capace di trattare vari domini di dati, detti tipi primitivi dominio dei

Dettagli

Il corpo di tutte le funzioni deve essere contenuto tra parentesi graffe

Il corpo di tutte le funzioni deve essere contenuto tra parentesi graffe Primi passi Il mio primo programma #include /* l esecuzione comincia dalla funzione main */ int main() { printf( Hello World!\n" ); return 0; /* il programma termina con successo */ } /* fine

Dettagli

Codifica dell informazione

Codifica dell informazione Codifica dell informazione Informatica B Come memorizzo l informazione nel calcolatore? 1 bit di informazione 1 bit di informazione La memoria del calcolatore L informazione nel calcolatore q Il calcolatore

Dettagli

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011

Tipi di dato, Alessandra Giordani Lunedì 7 maggio 2011 Tipi di dato, memoria e conversioni Alessandra Giordani agiordani@disi.unitn.it Lunedì 7 maggio 2011 http://disi.unitn.it/~agiordani/ Il linguaggio C è esplicitamente tipato: occorre esplicitamente associare

Dettagli

Rappresentazione in virgola fissa (fixed-point) Rappresentazione di Numeri Reali. Conversione decimale-binario di numeri non interi

Rappresentazione in virgola fissa (fixed-point) Rappresentazione di Numeri Reali. Conversione decimale-binario di numeri non interi Rappresentazione di Numeri Reali Un numero reale è una grandezza continua Può assumere infiniti valori In una rappresentazione di lunghezza limitata, deve di solito essere approssimato. Esistono due forme

Dettagli

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione

Lezione 5 e 6. Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza. Valentina Ciriani ( ) Laboratorio di programmazione Lezione 5 e 6 - Concetto di blocco - Controllo del flusso di un programma - Costrutti per la scelta if e switch - Costrutti while e for - Operatori in C Fabio Scotti (2004-2009) Laboratorio di programmazione

Dettagli

Nuovi tipi di dato e. Alessandra Giordani Lunedì 26 marzo

Nuovi tipi di dato e. Alessandra Giordani Lunedì 26 marzo Nuovi tipi di dato e costrutto condizionale Alessandra Giordani agiordani@disi.unitn.it Lunedì 26 marzo 2012 http://disi.unitn.it/~agiordani/ Tipi di dato fondamentali int e il tipo di dato che consente

Dettagli

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

Un elaboratore è un manipolatore di simboli (segni) intrinsecamente capace di trattare vari. caratteri char caratteri ASCII unsigned char IL LINGUAGGIO C Un elaboratore è un manipolatore di simboli (segni) L'architettura tt fisica i di ogni elaboratore è intrinsecamente capace di trattare vari domini i di dati, detti tipi i primitivi iti

Dettagli

Rappresentazione dei numeri. Rappresentazione di insiemi numerici mediante insiemi finiti di stringhe di bit Problemi:

Rappresentazione dei numeri. Rappresentazione di insiemi numerici mediante insiemi finiti di stringhe di bit Problemi: Argomenti trattati Rappresentazione dei numeri Calcoli in binario Rappresentazione di numeri naturali Rappresentazione di numeri relativi Rappresentazione di numeri reali (Virgola mobile) Rappresentazione

Dettagli

Capitolo 2 GOCCE DI JAVA. Domande a risposte multiple

Capitolo 2 GOCCE DI JAVA. Domande a risposte multiple GOCCE D AVA Capitolo 2 Domande a risposte multiple Selezionando una risposta, il bottone corrispondente diventa verde se la risposta è giusta, altrimenti diventa rosso. 2 1. Quale dei seguenti non è un

Dettagli

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi

Cominciamo ad analizzare la rappresentazione delle informazioni... di Cassino. C. De Stefano Corso di Fondamenti di Informatica Università degli Studi Un linguaggio ad alto livello deve offrire degli strumenti per: rappresentare le informazioni di interesse dell algoritmo definire le istruzioni che costituiscono l algoritmo Cominciamo ad analizzare la

Dettagli

Dati due punti sul piano calcolare la loro distanza

Dati due punti sul piano calcolare la loro distanza Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12

Dettagli

Dichiarazioni e tipi predefiniti nel linguaggio C

Dichiarazioni e tipi predefiniti nel linguaggio C Politecnico di Milano Dichiarazioni e tipi predefiniti nel linguaggio C Variabili, costanti, tipi semplici, conversioni di tipo. Premessa Programmi provati sul compilatore Borland C++ 1.0 Altri compilatori:

Dettagli

Precedenza degli operatori

Precedenza degli operatori Operatori Booleani Operatori che lavorano bit a bit Anche detti bitwise operator o operatori booleani : AND: prodotto logico dati due bit restituisce il valore 1 se e solo se i bit erano entrambi posti

Dettagli

Corso di Informatica

Corso di Informatica Corso di Informatica Modulo T2 2 I tipi di dato Prerequisiti Concetto di relazione e funzione Concetto di insieme numerico Operatori aritmetici Operatori relazionali 2 Introduzione Abbiamo visto che un

Dettagli

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

LA CODIFICA DELL INFORMAZIONE. Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 LA CODIFICA DELL INFORMAZIONE Introduzione ai sistemi informatici D. Sciuto, G. Buonanno, L. Mari, McGraw-Hill Cap.2 Codifica dati e istruzioni Per scrivere un programma è necessario rappresentare istruzioni

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

Le basi del linguaggio Java

Le basi del linguaggio Java Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 10 Le basi del linguaggio Java Aprile 2010 Le basi del linguaggio Java 1 Prerequisiti Nozioni generali sulla sintassi e semantica del

Dettagli

direttive del preprocessore simboli speciali parole chiave identificatori costanti

direttive del preprocessore simboli speciali parole chiave identificatori costanti 5) Elementi di C #include #define TF2TC main() { double tc, tf, offset, conv; offset = 32.; direttive del preprocessore simboli speciali parole chiave identificatori costanti #ifdef TF2TC conv

Dettagli

Istruzioni di selezione in Java 1

Istruzioni di selezione in Java 1 Ordine di esecuzione Istruzioni di selezione in Java Corso di laurea in Comunicazione digitale Nei metodi l ordine di esecuzione delle istruzioni è sequenziale se non specificato altrimenti Alcune istruzioni

Dettagli

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO

OCA JAVA 7 SE PROGRAMMER I DOCENTE: DOTT. FAUSTO DELL ANNO CENTRO STUDI ULISSE Via Buccino, n. 22 - C.a.p. 84018 - Scafati (SA) Tel. Fax. 081.19970299-339.2365416-349.4152010 E-mail: info@centrostudiulisse.it - www.centrostudiulisse.it OCA JAVA 7 SE PROGRAMMER

Dettagli

Informazione binaria: - rappresentazione di valori logici -

Informazione binaria: - rappresentazione di valori logici - Informazione binaria: - rappresentazione di valori logici - Percorso di Preparazione agli Studi di Ingegneria Università degli Studi di Brescia Docente: Massimiliano Giacomin Tipologie di codici Nel seguito

Dettagli

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

Codice binario. Codice. Codifica - numeri naturali. Codifica - numeri naturali. Alfabeto binario: costituito da due simboli Codice La relazione che associa ad ogni successione ben formata di simboli di un alfabeto il dato corrispondente è detta codice. Un codice mette quindi in relazione le successioni di simboli con il significato

Dettagli

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

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi Basi della programmazione in Java Nicola Drago nicola.drago@univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione

Dettagli

Operatori di relazione

Operatori di relazione Condizioni Negli algoritmi compaiono passi decisionali che contengono una proposizione (o predicato) dal cui valore di verità dipende la sequenza dinamica Chiamiamo condizioni tali proposizioni Nei casi

Dettagli

La codifica binaria. Informatica B. Daniele Loiacono

La codifica binaria. Informatica B. Daniele Loiacono La codifica binaria Informatica B Introduzione Il calcolatore usa internamente una codifica binaria (0 e 1) per rappresentare: i dati da elaborare (numeri, testi, immagini, suoni, ) le istruzioni dei programmi

Dettagli

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale

Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma Laboratorio di Programmazione Laurea in Ingegneria Civile e Ambientale Algebra di Boole Stefano Cagnoni Algebra di Boole L algebra

Dettagli

Istruzioni Condizionali

Istruzioni Condizionali Istruzioni Condizionali Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it

Dettagli

Programmazione in Java (I modulo) Lezione 4

Programmazione in Java (I modulo) Lezione 4 Programmazione in Java (I modulo) Lezione 4 Costanti Chiamiamo costanti tutti i valori numerici (interi o con la virgola), i caratteri e le stringhe. Esempio: 2, 3.7, 'y, buongiorno Le costanti numeriche

Dettagli

Linguaggi di programmazione

Linguaggi di programmazione Linguaggi di programmazione C LINGUAGGI DI PROGRAMMAZIONE Il potere espressivo di un linguaggio è caratterizzato da: quali tipi di dati consente di rappresentare (direttamente o tramite definizione dell

Dettagli

Il linguaggio JavaScript

Il linguaggio JavaScript Il linguaggio JavaScript JavaScript è un linguaggio di programmazione ad alto livello compatto e comprensibile. sintassi e semantica sono formalmente definite, compatto e comprensibile. appartiene alla

Dettagli

Basi della programmazione in Java

Basi della programmazione in Java Basi della programmazione in Java Nicola Drago drago@sci.univr.it Dipartimento di Informatica Università di Verona Anteprima Il concetto di variabile Uso delle variabili Dichiarazione Assegnamento Visualizzazione

Dettagli

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona

Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Corso di Laurea in Bioinformatica Dipartimento di Informatica - Università di Verona Sommario tipi di dati condizioni cicli cicli annidati per alcuni tipi di dati Java mette a disposizione una rappresentazione

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli.

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 16 Tipi riferimento e stringhe. Carla Limongelli. Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 16 Tipi riferimento e stringhe Carla Limongelli Maggio 2010 Definizione di metodi 1 Contenuti Tipi riferimento Stringhe e oggetti String

Dettagli

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

Programmare in C. Maurizio Palesi Salvatore Serrano. Valori. Operazioni. Un insieme di valori del tipo. Per operare su tali valori Tipi MASTER Information Technology Excellence Road (I.T.E.R.) Programmare in C Maurizio Palesi Salvatore Serrano Master ITER Informatica di Base Maurizio Palesi, Salvatore Serrano 1 Tipi di Dati Valori Un insieme

Dettagli

Linguaggio C: Espressioni

Linguaggio C: Espressioni Linguaggio C: Espressioni Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ 2 Ringraziamenti prof. Mirko Viroli, Università

Dettagli

Conversioni fra Tipi di Dati. Luca Abeni

Conversioni fra Tipi di Dati. Luca Abeni Conversioni fra Tipi di Dati Luca Abeni Tipi di Dato e Conversioni In C, ogni variabile è caratterizzata da un tipo I valori che la variabile può assumere dipendono dal tipo È possibile mescolare variabili

Dettagli

Struttura di un programma C++

Struttura di un programma C++ Struttura di un programma C++ // Programma semplice in C++ #include using namespace std; int main() { cout

Dettagli

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione

Primi esempi di programmi. Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Primi esempi di programmi Il tipo int Le variabili Altri tipi interi Operatori di assegnazione Il tipo int Un int permette di trattare numeri interi 4 byte (32 bit) con la tecnica del complemento a 2 (ma

Dettagli

Istruzioni Condizionali

Istruzioni Condizionali Istruzioni Condizionali Corso di Ingegneria Clinica BCLR Domenico Daniele Bloisi Docente Ing. Domenico Daniele Bloisi, PhD Ricercatore Dipartimento di Ingegneria Informatica, Automatica e Gestionale Antonio

Dettagli

Parte seconda: espressioni, operandi e operatori.

Parte seconda: espressioni, operandi e operatori. Parte seconda: espressioni, operandi e operatori. 1. Le espressioni Le espressioni sono combinazioni di operatori e operandi. Gli operandi sono a loro volta combinazioni di costanti, variabili semplici

Dettagli

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time

L assegnamento. Andrea Marin. a.a. 2011/2012. Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Abbiamo visto È conveniente definire una macchina astratta C Lo stato della macchina ci

Dettagli

Conversioni fra Tipi di Dati. Informatica 1 / 15

Conversioni fra Tipi di Dati. Informatica 1 / 15 fra Tipi di Dati Informatica 1 / 15 Tipi di Dato e In C, ogni variabile è caratterizzata da un tipo Valori assegnabili: dipendono dal tipo È possibile mescolare variabili di tipo diverso nelle espressioni

Dettagli

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Laboratorio di Programmazione 1 1 Docente: dr. Damiano Macedonio Lezione 5 31/10/2013 Original work Copyright Sara Migliorini, University of Verona Modifications Copyright Damiano Macedonio, University

Dettagli

Lezione 9 : Algebra di Boole e Codifica Binaria (p. 1) Lunedì 29 Novembre 2010

Lezione 9 : Algebra di Boole e Codifica Binaria (p. 1) Lunedì 29 Novembre 2010 Università di Salerno Corso di FONDAMENTI DI INFORMATICA Corso di Laurea Ingegneria Corso B Docente : Ing. Anno Accademico 2-2 Lezione 9 : Algebra di Boole e Codifica Binaria (p. ) Lunedì 29 Novembre 2

Dettagli