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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 13 Tipi ed espressioni Carla Limongelli Aprile 2010 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.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 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 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 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 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, 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 17

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

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

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

26 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 secondo operatore a essere valutato 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 ( ) * 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 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 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 / 2.0 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 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 32

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

36 Il tipo boolean Rappresentazione Concettualmente 1 bit Dominio Due elementi: true (vero), false (falso) Operatori And: &, && Or: I, II Not:! 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 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 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 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 42

40 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

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

42 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

43 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

44 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

45 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; boolean npositivo; boolean npariepositivo; // n è pari // n è positivo // 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

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

47 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

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

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

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

51 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

52 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

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

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

55 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

56 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

57 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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

La programmazione nel linguaggio C

La programmazione nel linguaggio C 3 La programmazione nel linguaggio C 3.0 La programmazione nel linguaggio C c Diego Calvanese Fondamenti di Informatica Corso di Laurea in Ingegneria Elettronica A.A. 2001/2002 3.0 0 Introduzione ai programmi

Dettagli

La codifica. dell informazione

La codifica. dell informazione 00010010101001110101010100010110101000011100010111 00010010101001110101010100010110101000011100010111 La codifica 00010010101001110101010100010110101000011100010111 dell informazione 00010010101001110101010100010110101000011100010111

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

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

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

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

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

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

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

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

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

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

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

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

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

Linguaggio C Espressioni e operatori

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 2001 Pier Luca Montessoro - Davide

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

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

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

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

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati

Il Linguaggio C. Caratteristiche. Caratteristiche. Esempio di programma in C. Tipi di dato primitivi in C. Dati Caratteristiche Il Linguaggio C Linguaggio sequenziale (lineare), imperativo, strutturato a blocchi usabile anche come linguaggio di sistema software di base sistemi operativi compilatori... FI - Algoritmi

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

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

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso Obiettivi Di seguito vengono riportate una serie di domande che possono essere poste durante la prova formale del corso. Le seguenti domande non sono da ritenersi esaustive ma esemplificative. 1. Architettura

Dettagli

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria

Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria Anno Accademico 2001/2002 Calcolatori Elettronici Parte III: Sistemi di Numerazione Binaria Prof. Riccardo Torlone Università di Roma Tre Numeri e numerali! Numero: entità astratta! Numerale: stringa di

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

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario

Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario Informatica Generale 1 - Esercitazioni Flowgraph, algebra di Boole e calcolo binario Daniele Pighin pighin@fbk.eu FBK Via Sommarive, 18 I-38050 Trento, Italy February 27, 2008 Outline 1 Algebra di Boole

Dettagli

Corso di Laurea Ingegneria Civile Fondamenti di Informatica

Corso di Laurea Ingegneria Civile Fondamenti di Informatica Corso di Laurea Ingegneria Civile Fondamenti di Informatica Dispensa 03 La rappresentazione dell informazione Marzo 2010 La rappresentazione dell informazione 1 Prerequisiti Architettura calcolatore Sistema

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

Abilità Informatiche e Telematiche

Abilità Informatiche e Telematiche Abilità Informatiche e Telematiche (Laurea Triennale + Laurea Magistrale) Marco Pedicini mailto:marco.pedicini@uniroma3.it Corso di Laurea Magistrale in Informazione, Editoria e Giornalismo, Università

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

La "macchina" da calcolo

La macchina da calcolo La "macchina" da calcolo Abbiamo detto che gli algoritmi devono essere scritti in un linguaggio "comprensibile all'esecutore" Se il nostro esecutore è il "calcolatore", questo che linguaggio capisce? che

Dettagli

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

Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: 1 Tipi di dati 1 Tipi di dati Utilizza i tipi di dati comuni a tutto il framework.net Accesso nativo ai tipi.net (C# è nato con.net) Concetti fondamentali: Tutto è un oggetto Tutto eredita implicitamente

Dettagli

Il linguaggio C. Notate che...

Il linguaggio C. Notate che... Il linguaggio C Notate che... 1 Il C è un linguaggio a blocchi int main (void) { blocco } 2 Il C è un linguaggio a blocchi (2) Non è possibile mischiare dichiarazioni e comandi! int main (void) { } Dichiarazione

Dettagli

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo

Programmazione Orientata agli Oggetti. Emilio Di Giacomo e Walter Didimo Programmazione Orientata agli Oggetti Emilio Di Giacomo e Walter Didimo Una metafora dal mondo reale la fabbrica di giocattoli progettisti Un semplice giocattolo Impara i suoni Dall idea al progetto Toy

Dettagli

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi

Corso di Informatica Generale (C. L. Economia e Commercio) Ing. Valerio Lacagnina Rappresentazione dei numeri relativi Codice BCD Prima di passare alla rappresentazione dei numeri relativi in binario vediamo un tipo di codifica che ha una certa rilevanza in alcune applicazioni: il codice BCD (Binary Coded Decimal). È un

Dettagli

Codifica dell informazione

Codifica dell informazione Codifica dell informazione Gli algoritmi sono costituiti da istruzioni (blocchi sequenziali, condizionali, iterativi) che operano su dati. Per trasformare un programma in una descrizione eseguibile da

Dettagli

FUNZIONI BOOLEANE. Vero Falso

FUNZIONI BOOLEANE. Vero Falso FUNZIONI BOOLEANE Le funzioni booleane prendono il nome da Boole, un matematico che introdusse un formalismo che opera su variabili (dette variabili booleane o variabili logiche o asserzioni) che possono

Dettagli

Parte Seconda. Prova di selezione culturale

Parte Seconda. Prova di selezione culturale Parte Seconda Prova di selezione culturale TEORIA DEGLI INSIEMI MATEMATICA ARITMETICA Insieme = gruppo di elementi di cui si può stabilire inequivocabilmente almeno una caratteristica in comune. Esempi:

Dettagli

Fondamenti di Programmazione. Strutture di controllo

Fondamenti di Programmazione. Strutture di controllo Fondamenti di Programmazione Strutture di controllo 1! Controllo del flusso! n Flusso di esecuzione: ordine in cui le istruzioni di un programma sono eseguite! n Salvo contrordini, è in sequenza! n Due

Dettagli

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

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

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C

ESECUZIONE DI PROGRAMMI C SU MACCHINE REALI. Docente: Giorgio Giacinto AA 2008/2009. formalizzazione degli algoritmi in linguaggio C Università degli Studi di Cagliari Corso di Laurea Specialistica in Ingegneria per l Ambiente ed il Territorio Corso di Laurea Specialistica in Ingegneria Civile - Strutture FONDAMENTI DI INFORMATICA 2

Dettagli

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A

Compitino di Laboratorio di Informatica CdL in Matematica 13/11/2007 Teoria Compito A Matematica 13/11/2007 Teoria Compito A Domanda 1 Descrivere, eventualmente utilizzando uno schema, gli elementi funzionali di una CPU. Domanda 2 Java è un linguaggio compilato o interpretato? Motivare

Dettagli

Conversione binario-decimale. Interi unsigned in base 2. Esercitazioni su rappresentazione. dei numeri e aritmetica

Conversione binario-decimale. Interi unsigned in base 2. Esercitazioni su rappresentazione. dei numeri e aritmetica Esercitazioni su rappresentazione dei numeri e aritmetica Salvatore Orlando & Marta Simeoni Interi unsigned in base 2 I seguenti numeri naturali sono rappresentabili usando il numero di bit specificato?

Dettagli

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche

Algebra di Boole: Concetti di base. E un algebra basata su tre operazioni logiche Fondamenti di Informatica Algebra di Boole: Concetti di base Fondamenti di Informatica - D. Talia - UNICAL Algebra di Boole E un algebra basata su tre operazioni logiche OR AND NOT Ed operandi che possono

Dettagli

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

Puntatori in C. Puntatori. Variabili tradizionali Esempio: int a = 5; Proprietà della variabile a: nome: a Puntatori in C Puntatori Variabili tradizionali indirizzo int a = 5; A00E... Proprietà della variabile a: nome: a A010 A012 5 tipo: int A014 valore: 5 indirizzo: A010 Finora abbiamo usato solo le prime

Dettagli

Introduzione al Linguaggio C

Introduzione al Linguaggio C INFORMATICA 1 Lezione 3 (Introduzione al Linguaggio C, Introduzione ai Tipi di dato, Cenni alla codifica binaria) Introduzione al Linguaggio C 1 Passi fondamentali del C Definito nel 1972 (AT&T Bell Labs)

Dettagli

Codifica binaria. Rappresentazioni medianti basi diverse

Codifica binaria. Rappresentazioni medianti basi diverse Codifica binaria Rappresentazione di numeri Notazione di tipo posizionale (come la notazione decimale). Ogni numero è rappresentato da una sequenza di simboli Il valore del numero dipende non solo dalla

Dettagli