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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 13 Tipi ed espressioni Carla Limongelli Marzo 2009 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,-3,-2,-1,0,1,2,3, R,-2,,0, ,,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, p, 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 tipii detti primitivi iti i Tipi ed espressioni 6

7 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 7

8 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 8

9 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, 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 9

10 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 10

11 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 11

12 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 12

13 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 L compilazione i 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, a, gli errori al tempo di esecuzione e si manifestano a sotto o forma di eccezioni Tipi ed espressioni 13

14 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 14

15 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 15

16 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 l 3 denota un valore intero i letterali E0 3D denotano valori reali Tipi ed espressioni 16

17 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, 70/20restituisce 7.0/ in questo caso, l operatore / è interpretato come l operatore di divisione tra numeri reali calcolano un risultato approssimato (invece l aritmetica laritmetica intera è una aritmetica esatta, anche se modulare) I risultati sono soggetti ad arrotondamenti, e quindi a perdita di precisione ad esempio, 1E100+1E vale 1E100 Gli operatori aritmetici sono sovraccarichi Lo stesso simbolo indica operazioni diverse Tipi ed espressioni 17

18 La classe Math La classe Math del package java.lang contiene la definizione i i di molti metodi di utilità per la matematica ti 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 18

19 Espressioni Molti elementi sintattici di Java sono classificati come espressioni ad esempio, il lato destro di una assegnazione, gli argomenti nell invocazione i di un metodo Le espressioni vengono formate mediante la composizione i 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 19

20 Espressioni semplici Sono formate da un singolo operando un letterale l è 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 20

21 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 21

22 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 22

23 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 i 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 23

24 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 24

25 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 * 2 3 primo operatore a essere valutato Tipi ed espressioni 25

26 Associatività degli operatori L associatività degli operatori permette di stabilire l ordine di applicazione i 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 6+2+1viene + interpretato come (6 + 2) + 1 evale viene interpretato come (6-2) - 1 e vale 3 (non 5) secondo operatore a essere valutato primo operatore a 1 essere valutato 6 2 Tipi ed espressioni 26

27 Parentesi Le parentesi sono un operatore che ha precedenza massima tra gli operatori, che permette quindi di imporre l ordine di valutazione desiderato (4+2)*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 27

28 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 28

29 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 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 29

30 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 30

31 Interpretazione degli operatori sovraccarichi Per gli operatori aritmetici se entrambi gli operandi sono interi i 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 è reale 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 3 70/ vale / 2.0 e 7.0 / 2 valgono 3.5 Tipi ed espressioni 31

32 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 ( (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 32

33 Divisione per zero A differenza di quanto avviene nell aritmetica intera, la divisione i i 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 INFINITY e Double.NEGATIVE_INFINITY 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 33

34 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 34

35 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') A)vale 'F' Tipi ed espressioni 35

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

37 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 algebra di Boole Tipi ed espressioni 37

38 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 t 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 38

39 Operatori booleani Semantica degli operatori booleani A vale TRUE se A vale FALSE, e vale FALSE altrimenti A B vale TRUE se sia A che B valgono contemporaneamente TRUE, evalefalse altrimenti A B vale TRUE se almeno una tra A e B vale TRUE, e vale FALSE altrimenti A A FALSE TRUE TRUE FALSE A B A B A B A B FALSE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE FALSE TRUE TRUE TRUE FALSE FALSE TRUE FALSE TRUE TRUE TRUE TRUE TRUE TRUE TRUE Tipi ed espressioni 39

40 Alcune proprietà p degli operatori booleani Idempotenza di e A A = A A A = A Commutatività ità di e A B = B A A B=B B A Associatività di e A (B C) = (A B) C A (B C) = (A B) C Distributività A (B C) = (A B) (A C) A (B C) = (A B) (A C) Tipi ed espressioni 40

41 Alcune proprietà p degli operatori booleani Elementi neutri di e TRUE A = A FALSE A = A Elementi assorbenti di e FALSE A = FALSE TRUE A = TRUE Eliminazione i i della doppia negazione ( A) = A Leggi di De Morgan (A B) = ( A) ( B) (A B) = ( A) ( B) Altre identità notevoli A ( A) = FALSE A ( A) = TRUE Tipi ed espressioni 41

42 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 bvale 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 42

43 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 43

44 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 i (condizionali i 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 44

45 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 45

46 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 46

47 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 47

48 Variabili boolean È possibile dichiarare variabili di tipo boolean le variabili di tipo boolean vanno normalmente documentate t 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 48

49 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 t tl capito!"); else System.out.println("Non ho capito!"); Tipi ed espressioni 49

50 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 50

51 Leggi di De Morgan Le leggi di De Morgan sono delle leggi di dualità tra espressioni i che coinvolgono operatori logici i 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 51

52 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 g un intero relativo tra e (64 bit) float t 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 52

53 Conversione tra tipi Talvolta è possibile / necessario effettuare conversioni i 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 53

54 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 54

55 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 55

56 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? ifi 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 56

57 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 t perdendo d di precisione i in questo caso, arrotondando per difetto Tipi ed espressioni 57

58 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 58

59 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 59

60 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 60

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

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

Tipi ed espressioni. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 5. Carla Limongelli Settembre 2007 Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 5 Tipi ed espressioni Carla Limongelli Settembre 2007 http://www.dia.uniroma3.it/~java/fondinf1/ Tipi ed espressioni 1 Contenuti

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Descrizione delle operazioni di calcolo. Espressioni costanti semplici

Descrizione delle operazioni di calcolo. Espressioni costanti semplici Descrizione delle operazioni di calcolo Come abbiamo detto l interprete è in grado di generare nuovi valori a partire da valori precedentemente acquisiti o generati. Il linguaggio di programmazione permette

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

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

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

Costanti e Variabili

Costanti e Variabili Parte 3 Costanti e Variabili Identificatori Un identificatore è un nome che viene associato a diverse entità (costanti, tipi, variabili, funzioni, ecc.) e serve ad identificare la particolare entità Gli

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

Somma di numeri binari

Somma di numeri binari Fondamenti di Informatica: Codifica Binaria dell Informazione 1 Somma di numeri binari 0 + 0 = 0 0 + 1 = 1 1 + 0 = 1 1 + 1 = 10 Esempio: 10011011 + 00101011 = 11000110 in base e una base Fondamenti di

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

Programmazione Procedurale in Linguaggio C++

Programmazione Procedurale in Linguaggio C++ Programmazione Procedurale in Linguaggio C++ Elementi di Base Parte 3 Istruzioni di Assegnazione versione 2.0 Questolavoroè concessoin uso secondoi termini di unalicenzacreative Commons (vedi ultima pagina)

Dettagli

Istruzioni Condizionali

Istruzioni Condizionali Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1 Dispensa 6 Istruzioni Condizionali Carla Limongelli Settembre 2006 http://www.dia.uniroma3.it/~java/fondinf1/ Istruzioni condizionali

Dettagli

Università degli Studi di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica ALGEBRA BOOLEANA

Università degli Studi di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica ALGEBRA BOOLEANA Università degli Studi di Cagliari Dipartimento di Ingegneria Elettrica ed Elettronica ALGEBRA BOOLEANA Introduzione George Boole (1815-1864) nel 1854 elaborò una algebra basata su predicati logici. Valori

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

Aritmetica dei Calcolatori

Aritmetica dei Calcolatori Aritmetica dei Calcolatori Nicu Sebe March 14, 2016 Informatica Nicu Sebe 1 / 34 Operazioni su Bit Bit Scienza della rappresentazione e dell elaborazione dell informazione Abbiamo visto come i computer

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

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense. Fondamenti di Informatica - A. Fantechi Raccolta di esercizi Per gli esercizi sulla algebra booleana, si consiglia di verificare tramite tabelle di verità le equivalenze logiche proposte sulle dispense.

Dettagli

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test

Espressioni logiche. Espressioni logiche. Operatori logici. Operatori logici. Operatori logici. Espressioni Logiche e Istruzione di Test Espressioni logiche Espressioni Logiche e Istruzione di Test Fondamenti di Informatica 1 Massimo Di Nanni Gennaio, 2001 Espressioni logiche nelle Istruzioni di Test e di Iterazione Calcolo del massimo

Dettagli

IL PROBLEMA DEL PROGETTO

IL PROBLEMA DEL PROGETTO IL PROBLEMA DEL PROGETTO La descrizione del problema, in genere, non indica direttamente il modo per ottenere il risultato voluto (il procedimento risolutivo) Occorrono metodologie per affrontare il problema

Dettagli

Lab 02 Tipi semplici in C

Lab 02 Tipi semplici in C Fondamenti di Informatica e Laboratorio T-AB Ingegneria Elettronica e Telecomunicazioni e Ingegneria dell Automazione a.a. 2009/2010 Lab 02 Tipi semplici in C Lab02 1 Obiettivo dell esercitazione Acquistare

Dettagli

Fondamenti di Programmazione. Sistemi di rappresentazione

Fondamenti di Programmazione. Sistemi di rappresentazione Fondamenti di Programmazione Sistemi di rappresentazione Numeri e numerali Il numero cinque 5 V _ Π 五 Arabo Romano Maya Greco Cinese Il sistema decimale Sistemi posizionali 1 10 3 + 4 10 2 + 9 10 1 + 2

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

Linguaggio C - sezione dichiarativa: costanti e variabili

Linguaggio C - sezione dichiarativa: costanti e variabili Dipartimento di Elettronica ed Informazione Politecnico di Milano Informatica e CAD (c.i.) - ICA Prof. Pierluigi Plebani A.A. 2008/2009 Linguaggio C - sezione dichiarativa: costanti e variabili La presente

Dettagli

Indice. Prefazione. 3 Oggetti e Java 53

Indice. Prefazione. 3 Oggetti e Java 53 Prefazione xv 1 Architettura dei calcolatori 1 1.1 Calcolatori e applicazioni 1 1.1.1 Alcuni esempi di applicazioni 3 1.1.2 Applicazioni e interfacce 4 1.2 Architettura dei calcolatori 7 1.2.1 Hardware

Dettagli

Tipi di dato semplici

Tipi di dato semplici Tipi di dato semplici Perché dichiarare una variabile? 2 Una variabile rappresenta uno spazio di memoria centrale Prima dell esecuzione del programma deve essere chiaro quanto spazio serve al programma

Dettagli

George BOOLE ( ) L algebra booleana. (logica proposizionale)

George BOOLE ( ) L algebra booleana. (logica proposizionale) George BOOLE (1815-64) L algebra booleana. (logica proposizionale) La logica e George BOOLE George BOOLE nel 1847 pubblicò il libro Mathematical Analysis of Logic, nel quale presentava ciò che oggi si

Dettagli

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base

modificato da andynaz Cambiamenti di base Tecniche Informatiche di Base Cambiamenti di base Tecniche Informatiche di Base TIB 1 Il sistema posizionale decimale L idea del sistema posizionale: ogni cifra ha un peso Esempio: 132 = 100 + 30 + 2 = 1 10 2 + 3 10 1 + 2 10 0 Un numero

Dettagli

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

Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Università di Roma Tre Dipartimento di Matematica e Fisica Corso di Laurea in Matematica Appunti del corso di Informatica 1 (IN110 Fondamenti) 5 Rappresentazione delle informazioni Marco Liverani (liverani@mat.uniroma3.it)

Dettagli

Codifica di informazioni numeriche

Codifica di informazioni numeriche Università di Roma La Sapienza Dipartimento di Informatica e Sistemistica Codifica di informazioni numeriche Fondamenti di Informatica - Ingegneria Elettronica Leonardo Querzoni querzoni@dis.uniroma1.it

Dettagli

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

Linguaggio C. Tipi predefiniti. Università degli Studi di Brescia. Prof. Massimiliano Giacomin. Prof. M. Giacomin Linguaggio C Tipi predefiniti Università degli Studi di Brescia Prof. Massimiliano Giacomin Elementi di Informatica e Programmazione Università di Brescia 1 Il concetto di tipo (reprise) Nome che indica

Dettagli

Le variabili logiche possono essere combinate per mezzo di operatori detti connettivi logici. I principali sono:

Le variabili logiche possono essere combinate per mezzo di operatori detti connettivi logici. I principali sono: Variabili logiche Una variabile logica (o booleana) è una variable che può assumere solo uno di due valori: Connettivi logici True (vero identificato con 1) False (falso identificato con 0) Le variabili

Dettagli

Sistemi di Numerazione

Sistemi di Numerazione Sistemi di Numerazione Corso Università Numeri e Numerali Il numero cinque 5 V _ Π Arabo Romano Maya Greco Cinese Il sistema decimale Sistemi Posizionali 1 10 3 + 4 10 2 + 9 10 1 + 2 10 0 Sistemi Posizionali

Dettagli

Introduzione alla programmazione in C++

Introduzione alla programmazione in C++ Introduzione alla programmazione in C++ Fondamenti di Informatica Roberto BASILI Marzo, 2007 La Programmazione Programmare significa: Determinare la natura del problema (analisi) Definire una decomposizione

Dettagli

Algebra di Boole. Andrea Passerini Informatica. Algebra di Boole

Algebra di Boole. Andrea Passerini Informatica. Algebra di Boole Andrea Passerini passerini@disi.unitn.it Informatica Variabili logiche Una variabile logica (o booleana) è una variable che può assumere solo uno di due valori: True (vero identificato con 1) False (falso

Dettagli

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso

Unità Didattica 2 Linguaggio C. Espressioni, Operatori e Strutture linguistiche per il controllo del flusso Unità Didattica 2 Linguaggio C Espressioni, Operatori e Strutture linguistiche per il controllo del flusso 1 Espressioni e assegnazioni Le espressioni sono definite dalla grammatica: espressione = variabile

Dettagli

Cenni alla rappresentazione dei tipi dato primitivi

Cenni alla rappresentazione dei tipi dato primitivi Cenni alla rappresentazione dei tipi dato primitivi Fondamenti di Informatica R. Basili a.a. 2006-7 Numeri Naturali Alfabeto, A Un insieme finito di B simboli, A={a, b,. } Sequenze o Stringhe in A, A *

Dettagli

Sistemi di Numerazione Binaria

Sistemi di Numerazione Binaria Sistemi di Numerazione Binaria BIN.1 Numeri e numerali Numero: entità astratta Numerale : stringa di caratteri che rappresenta un numero in un dato sistema di numerazione Lo stesso numero è rappresentato

Dettagli

Rappresentazione dell Informazione

Rappresentazione dell Informazione Rappresentazione dell Informazione Rappresentazione delle informazioni in codice binario Caratteri Naturali e Reali positivi Interi Razionali Rappresentazione del testo Una stringa di bit per ogni simbolo

Dettagli

APPUNTI DI INFORMATICA

APPUNTI DI INFORMATICA APPUNTI DI INFORMATICA Per il biennio di liceo scientifico scienze applicate Sommario Il calcolo binario... 2 Numerazione Decimale... 2 Numerazione Binaria... 2 Conversione Binario -> Decimale... 2 Conversione

Dettagli

Rappresentazione dei numeri interi in un calcolatore

Rappresentazione dei numeri interi in un calcolatore Corso di Calcolatori Elettronici I Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica e delle

Dettagli

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale

Analogico vs. Digitale. LEZIONE II La codifica binaria. Analogico vs digitale. Analogico. Digitale Analogico vs. Digitale LEZIONE II La codifica binaria Analogico Segnale che può assumere infiniti valori con continuità Digitale Segnale che può assumere solo valori discreti Analogico vs digitale Il computer

Dettagli

Rappresentazione dei numeri interi in un calcolatore

Rappresentazione dei numeri interi in un calcolatore Corso di Calcolatori Elettronici I A.A. 2012-2013 Rappresentazione dei numeri interi in un calcolatore Prof. Roberto Canonico Università degli Studi di Napoli Federico II Dipartimento di Ingegneria Elettrica

Dettagli

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere

Tipi elementari, costanti. Tipi di dati. VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori. Tipi. intero reale carattere Tipi elementari, costanti 1 Tipi di dati VALORI: un insieme dei valori del tipo OPERAZIONI: per operare su tali valori Tipi Semplici intero reale carattere Strutturati 2 1 Tipo intero Gli interi servono

Dettagli

Operazioni numeriche - Input

Operazioni numeriche - Input Operazioni numeriche - Input Espressioni, funzioni matematiche, classi involucro, Acquisizione di input 11/11/2004 Laboratorio di Programmazione - Luca Tesei 1 Operazioni fra interi e decimali In Java

Dettagli

Corso di JavaScript. Prerequisiti. B1 Tipi di dato e operatori. Concetto di variabile, espressione e tipo di dato

Corso di JavaScript. Prerequisiti. B1 Tipi di dato e operatori. Concetto di variabile, espressione e tipo di dato Corso di JavaScript B1 Tipi di dato e operatori 1 Prerequisiti Concetto di variabile, espressione e tipo di dato 2 1 Introduzione In questa Unità illustriamo alcuni strumenti operativi per la scrittura

Dettagli

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

I sistemi di numerazione. Informatica - Classe 3ª, Modulo 1 I sistemi di numerazione Informatica - Classe 3ª, Modulo 1 1 La rappresentazione interna delle informazioni ELABORATORE = macchina binaria Informazione esterna Sequenza di bit Spett. Ditta Rossi Via Roma

Dettagli

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

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica Fondamenti di Informatica INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA Fondamenti di Informatica - D. Talia - UNICAL 1 Fondamenti di Informatica - Programma Un programma è una formulazione

Dettagli

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica!

Espressioni. Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Espressioni Espressione = meccanismo fondamentale per esprimere computazioni in un LP importante comprenderne la semantica! Valutazione automatica di expr aritmetiche = obiettivo primario dei primi LP

Dettagli

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4

Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Corso: Fondamenti di Informatica 1 (gruppo 8-9) Corsi di laurea: Area dell'informazione Questionario di autovalutazione 4 Domanda n. 1 Argomento: Rappresentazione dell'informazione Domanda: Il numero binario

Dettagli

Algebra di Boole ed elementi di logica

Algebra di Boole ed elementi di logica Algebra di Boole ed elementi di logica Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 10 O0obre 2013 Obiettivi Algebra di Boole Algebra di boole a due valori: algebra di commutazione

Dettagli

Introduzione a Matlab

Introduzione a Matlab INFORMATICA B Ingegneria Elettrica Introduzione a Matlab Introduzione a Matlab Matlab (MATrix LABoratory) è uno strumento per il calcolo scientifico ed ingegneristico Matlab facilita lo sviluppo di programmi

Dettagli

4 - Tipi di dato primitivi

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

Dettagli

Tecnologie per il web e lo sviluppo multimediale. Rappresentazione delle informazioni

Tecnologie per il web e lo sviluppo multimediale. Rappresentazione delle informazioni Tecnologie per il web e lo sviluppo multimediale Rappresentazione delle informazioni Luca Pulina Corso di Laurea in Scienze della Comunicazione Università degli Studi di Sassari A.A. 2015/2016 Luca Pulina

Dettagli

LA CODIFICA DELL INFORMAZIONE

LA CODIFICA DELL INFORMAZIONE LA CODIFICA DELL INFORMAZIONE Prof. Enrico Terrone A. S: 20/2 Lo schema di Tanenbaum Il livello al quale ci interessiamo in questa lezione è il linguaggio macchina, l unico dove le informazioni e istruzioni

Dettagli

Unità aritmetica e logica

Unità aritmetica e logica Aritmetica del calcolatore Capitolo 9 Unità aritmetica e logica n Esegue le operazioni aritmetiche e logiche n Ogni altra componente nel calcolatore serve questa unità n Gestisce gli interi n Può gestire

Dettagli

Fondamenti di Programmazione. Sistemi di rappresentazione

Fondamenti di Programmazione. Sistemi di rappresentazione Fondamenti di Programmazione Sistemi di rappresentazione Numeri e numerali Il numero cinque 5 V _ Π 五 Arabo Romano Maya Greco Cinese Sistemi posizionali 1 10 3 + 4 10 2 + 9 10 1 + 2 10 0 Sistemi posizionali

Dettagli

Indice. Ordine di valutazione. Espressioni in C++ Le espressioni in C++ (CAP 4) Alberto Garfagnini e Marco Mazzocco A.A. 2014/ * 20 / 2

Indice. Ordine di valutazione. Espressioni in C++ Le espressioni in C++ (CAP 4) Alberto Garfagnini e Marco Mazzocco A.A. 2014/ * 20 / 2 Le espressioni in C++ (CAP 4) Indice Le espressioni in C++ : precedenze e associatività degli operatori Alberto Garfagnini e Marco Mazzocco Università degli studi di Padova A.A. 2014/2015 gli operatori

Dettagli

Rappresentazione dei numeri reali in un calcolatore

Rappresentazione dei numeri reali in un calcolatore Corso di Calcolatori Elettronici I A.A. 2010-2011 Rappresentazione dei numeri reali in un calcolatore Lezione 3 Università degli Studi di Napoli Federico II Facoltà di Ingegneria Rappresentazione di numeri

Dettagli

Capitolo 4. Tipi di dati fondamentali. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione

Capitolo 4. Tipi di dati fondamentali. Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Capitolo 4 Tipi di dati fondamentali Cay S. Horstmann Concetti di informatica e fondamenti di Java quarta edizione Convenzioni per i nomi ContoCorrente: nome di una classe contocorrente: può essere una

Dettagli

Fondamenti di Informatica 2

Fondamenti di Informatica 2 Fondamenti di Informatica 2 Linguaggi e Complessità : Lezione 1 Corso Fondamenti di Informatica 2 Marco Schaerf, 2009-2010 Linguaggi e Complessità : Lezione 1 1 Logica proposizionale Linguaggio matematico

Dettagli

Iterazione (introduzione)

Iterazione (introduzione) Fondamenti di informatica Oggetti e Java (introduzione) Capitolo 17 (estratto) ottobre 2015 1 Contenuti Accesso a sequenze Accumulazione Conteggio Altre aggregazioni Verifica esistenziale Verifica universale

Dettagli

Fondamenti di Informatica

Fondamenti di Informatica Fondamenti di Informatica Algebra di Boole e Circuiti Logici Prof. Christian Esposito Corso di Laurea in Ingegneria Meccanica e Gestionale (Classe I) A.A. 2016/17 Algebra di Boole e Circuiti Logici L Algebra

Dettagli

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

Gli Operatori. Linguaggio C. Gli Operatori. Esempi sull uso dell Operatore di Assegnamento. L Operatore di Assegnamento Linguaggio C Gli Operatori Gli Operatori Gli operatori sono simboli (sia singoli caratteri che loro combinazioni) specificano come devono essere manipolati gli operandi dell espressione Operatori aritmetici

Dettagli

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012

Fondamenti di Informatica - 1. Prof. B.Buttarazzi A.A. 2011/2012 Fondamenti di Informatica - 1 Prof. B.Buttarazzi A.A. 2011/2012 I numeri reali Sommario Conversione dei numeri reali da base 10 a base B Rappresentazione dei numeri reali Virgola fissa Virgola mobile (mantissa

Dettagli

Fondamenti di Informatica T-1

Fondamenti di Informatica T-1 Fondamenti di Informatica T-1 Introduzione al linguaggio Java - Input/Output, Variabili, Tipi Tutor: Allegra De Filippo allegra.defilippo@unibo.it a.a. 2015/2016 Fondamenti di Informatica T-1 Allegra De

Dettagli

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII.

Tipi di dati fondamentali. Tipi di dati fondamentali. Utilità dei tipi di dati nelle dichiarazioni. Il tipo di dati char. Codice ASCII. Tipi di dati fondamentali Tipi di dati fondamentali Linguaggi di Programmazione I Ferdinando Cicalese caratteri: char signed char unsigned char interi short int long interi unsigned short unsigned unsigned

Dettagli

La codifica binaria. Fondamenti di Informatica. Daniele Loiacono

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

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Numeri in virgola. Marco D. Santambrogio Ver. aggiornata al 10 Novembre 2015

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Numeri in virgola. Marco D. Santambrogio Ver. aggiornata al 10 Novembre 2015 Numeri in virgola Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 10 Novembre 2015 Numeri in virgola fissa Fino a questo punto abbiamo assunto che Un vettore di bit rappresentasse

Dettagli

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point)

Rappresentazione di Numeri Reali. Rappresentazione in virgola fissa (fixed-point) Rappresentazione in virgola fissa (fixed-point) 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

Struttura dei programmi C

Struttura dei programmi C Programmi C Struttura dei Programmi C Dichiarazione delle variabili Operazioni di Ingresso/Uscita Fondamenti di Informatica 1 Struttura dei programmi C Un programma C deve contenere, nell'ordine: una parte

Dettagli

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

Un quadro della situazione. Lezione 6 Aritmetica in virgola mobile (2) e Codifica dei caratteri. Dove siamo nel corso. Organizzazione della lezione Un quadro della situazione Lezione 6 Aritmetica in virgola mobile (2) e Codifica dei caratteri Vittorio Scarano Architettura Corso di Laurea in Informatica Università degli Studi di Salerno Input/Output

Dettagli

Sviluppo di programmi

Sviluppo di programmi Sviluppo di programmi Per la costruzione di un programma conviene: 1. condurre un analisi del problema da risolvere 2. elaborare un algoritmo della soluzione rappresentato in un linguaggio adatto alla

Dettagli

Codifica. Rappresentazione di numeri in memoria

Codifica. Rappresentazione di numeri in memoria Codifica Rappresentazione di numeri in memoria Rappresentazione polinomiale dei numeri Un numero decimale si rappresenta in notazione polinomiale moltiplicando ciascuna cifra a sinistra della virgola per

Dettagli

$QDOLVLGHOSURJUDPPDTXDGUDWR

$QDOLVLGHOSURJUDPPDTXDGUDWR $QDOLVLGHOSURJUDPPDTXDGUDWR /* */ calcolare l area del quadrato #include main(){ int lato, area; printf("lato "); scanf("%d", &lato); if(lato < 0) printf("errore nei dati \n"); else { area =

Dettagli

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Numeri in virgola. Marco D. Santambrogio Ver. aggiornata al 14 Novembre 2014

DIPARTIMENTO DI ELETTRONICA E INFORMAZIONE. Numeri in virgola. Marco D. Santambrogio Ver. aggiornata al 14 Novembre 2014 Numeri in virgola Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 14 Novembre 2014 Ogni promessa è debito 2 Ogni promessa è debito 3 Ogni promessa è debito Dove sei? 4 Ogni promessa

Dettagli