elementi di informatica di base1 parte 3 elementi di informatica di base dott.ssa elisa tiezzi

33
Elementi di Informatica d i base 1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Upload: annunziata-pandolfi

Post on 02-May-2015

225 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 1

Parte 3

Elementi di Informatica di baseDott.ssa Elisa Tiezzi

Page 2: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 2

Cosa è Java

• Linguaggio di programmazione familiare– Simile a C e C++

• Linguaggio di programmazione orientato a oggetti– Facile da modificare e altamente riutilizzabile

• Linguaggio robusto– Restrizioni per evitare che le applicazioni generino errori

• Linguaggio ad alte prestazioni– Strumenti per la gestione di più processi

• Linguaggio portabile – Applicazioni eseguibili su Windows, Linux o MacOS

• Linguaggio semplice– Pochi strumenti base e molte librerie

Page 3: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 3

Compilatori tradizionali

codice sorgente

compilatore Windows

compilatore Linux

compilatore MacOS

codice eseguibile Windows

codice eseguibile Linux

codice eseguibile MacOS

Page 4: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 4

Compilatore Java

codice sorgente

compilatore Windows

compilatore Linux

compilatore MacOS

interprete bytecode Windows

interprete bytecode Linux

interprete bytecode MacOS

Java bytecode

Page 5: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 5

Programmazione

• Concetti base:– dati– istruzioni

• Dati:– variabili– tipi

• Istruzioni: – istruzioni base– strutture di controllo– sotto-programmi

Page 6: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 6

Variabili e tipi

• Variabile:– locazione di memoria a cui è dato un nome con cui chiamarla ed utilizzarla

• programmatore usa il nome senza necessariamente sapere che esso faccia riferimento ad una locazione di memoria

• Tipo:– ogni variabile ha un tipo che indica che genere di dati la variabile può

contenere• una variabile può contenere dati di tipo intero (ad es., 15 o 2038), oppure dati

di tipo carattere (ad es., ‘a’ o ‘£’) oppure dati di tipo stringa (ad es., “java” o “pascal”)

Page 7: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 7

Istruzioni base

• Assegnazioni ed espressioni:– comandi per leggere e scrivere dati in una variabile e

per fare calcoli• esempio: interest = amount * 0.07;

• Input/Output:– comandi per ricevere dati dall’utente o da un file su

disco e comandi per inviare dati nell’altra direzione

Page 8: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 8

Strutture di controllo

• Un programma è una sequenza di istruzioni

• Il calcolatore esegue le istruzioni nell’ordine in cui esse appaiono, una dopo l’altra– molto limitato

• Le strutture di controllo sono istruzioni speciali che consentono di modificare il normale flusso di istruzioni

• Due tipi base di strutture di controllo– cicli

• permettono di ripetere una sequenza di istruzioni

– diramazioni• permettono di decidere tra due o più diverse alternative di proseguimento

Page 9: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 9

Sotto-programmi

• I programmi sono spesso abbastanza complessi da dover essere scomposti in “pezzi” più maneggevoli

• Un sotto-programma consiste di istruzioni per svolgere un certo compito raggruppate insieme in un’unità a cui è dato un nome

• il nome può essere usato come sostituto dell’intero insieme di istruzioni

• Esempio– uno dei compiti del programma consiste nel disegnare un rettangolo sullo schermo

• scrivere le necessarie istruzioni e raggrupparle in un sotto-programma di nome drawRect • ogni volta che il programma deve disegnare un rettangolo, lo può fare con una semplice

istruzione: drawRect();

• Vantaggi:• risparmio di scrittura, organizzazione, riutilizzo

Page 10: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 10

Che cosa è una variabile?

• Una locazione in cui memorizzare dati ed a cui è assegnato un nome

– un contenitore di dati

• Può contenere un solo tipo di dati

– per esempio, solo numeri interi, solo numeri reali oppure solo caratteri

Page 11: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 11

Creazione di variabili• Tutte le variabili devono essere dichiarate prima di poterle utilizzare

• Una dichiarazione di variabile associa un nome alle locazioni di memoria ad essa corrispondenti e specifica il tipo di dati che la variabile conterrà:

Tipo Variabile_1, Variabile_2, …;

• Per esempio, per creare tre variabili che memorizzino il numero di cesti, il numero di uova per cesto ed il numero totale di uova:

int numberOfBaskets, eggsPerBasket, totalEggs;

Page 12: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 12

Nomi di variabili: identificatoriRegole

- devono essere rispettate• tutti gli identificatori Java devono

obbedire alle stesse regole

• non devono cominciare con una cifra

• devono contenere solo numeri, lettere, simboli ‘_’ e ‘$’ (ma è meglio evitare ‘$’, in quanto è riservato per scopi particolari)

• sono sensibili alle maiuscole (ThisName e thisName sono due diversi nomi di variabili)

Regole di programmazione - dovrebbero essere rispettate

• usare sempre nomi che abbiano un significato (ad esempio, eggsPerBasket invece di n o di count)

• iniziare i nomi di variabile con una lettera minuscola

• iniziare le parole interne al nome con una lettera maiuscola (meglio eggsPerBasket di eggsperbasket)

• evitare di usare ‘$’ in quanto è riservato a scopi particolari

Page 13: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 13

Due tipi di tipi di dati in Java

primitivi• I tipi più semplici

• Non possono essere decomposti in altri tipi

• Contengono solo valori

• Esempi:int - interodouble - realechar - carattere

classi• Più complessi

• Composti di altri tipi (primitivi o classi)

• Contengono sia dati che metodi

• Esempio:IntegerString

Page 14: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 14

Tipi di Dati Primitivi

Nome

Tipo di valore

Memoria usata

Insieme di valori

byte intero 1 byte da -128 a 127

short intero 2 byte da -32768 a 32767

int intero 4 byte da -2,147,483,648 a 2,147,483,647

long intero 8 byte da -9,223,372,036,854,775,808 a 9,223,374,036,854,775,808

float reale 4 byte da +/- 3.4028… x 10+38 a +/- 1.4023… x 0-45

double reale 8 byte da +/- 1.767… x 10+308 a +/- 4.940… x 0-324

char carattere (Unicode) 2 byte tutti i caratteri Unicode

boolean true oppure false 1 bit

Page 15: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 15

Quali sapere per ora

• int– semplicemente numeri interi

– possono essere positivi e negativi

– nessun punto decimale• char

– semplicemente un singolo carattere

– utilizza le virgolette singole• per esempio, `A`;

• double– numeri reali, sia positivi che negativi

– ha un punto decimale (parte frazionaria)

– due formati

• numero con punto decimale, a.e. 514.061

• notazione e o scientifica, a.e. 5.14061 e2, che significa 5.14061 x 102

Page 16: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 16

Assegnare valori alle variabili

• Istruzione di assegnazione– variabile = espressione;

• esempio: answer = 42;

• Operatore di assegnazione: “=“– non lo stesso dell’algebra– significa: “assegna il valore dell’espressione alla destra del segno di

uguale alla variabile alla sinistra.”– se numberOfCards ha il valore 7 e handicap ha il valore 2, allora la

seguente istruzione imposta il valore di score a 9:score = numberOfCards + handicap;

• La variabile può apparire in entrambi i lati:int count = 10;count = count - 1;– nuovo valore di count = 10 - 1 = 9

Page 17: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 17

Assegnare valori iniziali alle variabili

• I valori iniziali possono o meno essere assegnati quando le variabili sono dichiarate:

int totalEggs, numberOfBaskets, eggsPerBasket;

oppure

int totalEggs = 0;int numberOfBaskets = 0;int eggsPerBasket = 0;

• Suggerimento: è una buona regola di programmazione inizializzare sempre le variabili.

Page 18: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 18

Cambiare il valore di una variabile

• Generalmente il valore viene cambiato (è assegnato un valore diverso) in qualche parte del programma

• Può essere calcolato a partire da altri valori:

totalEggs = numberOfBaskets * eggsPerBasket;

• Oppure può essere letto in input

– vedremo più avanti

Page 19: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 19

Operatori di assegnazione specializzati• Un’abbreviazione per eseguire un’operazione ed assegnare un nuovo

valore ad una variabile

• Forma generale: var <op>= expression;– equivalente a: var = var <op> (expression);– <op> è +, -, *, /, or %

• Esempi:amount += 5;

//amount = amount + 5;

amount *= 1 + interestRate;

//amount = amount * (1 + interestRate);

• La parte destra è trattata come una singola unità (come se vi fossero delle parentesi)

Page 20: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 20

Costanti• Le costanti sono simili alle variabili, ma possono contenere un solo valore per tutta la durata della loro esistenza.• In Java si dichiarano le costanti premettendo la parola chiave final.• E’ convenzione usare lettere maiuscole.

Es.: final int NUMERO_MASSIMO_POSTI = 427

• E’ buona pratica usare costanti invece di valori numerici (letterali) perche’ si evita di modificarli inavvertitamente.

Page 21: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 21

Valore di ritorno

• Le espressioni ritornano valori: il numero prodotto da un’espressione è il “valore di ritorno”int numberOfBaskets, eggsPerBasket, totalEggs;

numberOfBaskets = 5;

eggsPerBasket = 8;

totalEggs = numberOfBaskets * eggsPerBasket;– nell’ultima linea numberOfBaskets ritorna il valore 5 e eggsPerBasket ritorna il valore 8

– numberOfBaskets * eggsPerBasket è un’espressione che ritorna il valore intero 40

Page 22: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 22

Conversione di tipo

• La conversione di tipo cambia il tipo di dato di un valore – Non è possibile assegnare un valore di un tipo ad una variabile di un tipo diverso,

a meno che non lo si converta in modo da coincidere con il tipo della variabile

• La conversione di tipo modifica solo il tipo del valore di ritorno, non il tipo della variabile– ad esempio:

double x;

int n = 5;

x = n;• poiché n è un int ed x è un double, il valore ritornato da n (non n) deve essere

convertito in un double prima di essere assegnato ad x

Page 23: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 23

Conversione implicita

• La conversione di tipo è eseguita implicitamente (in modo automatico) quando un tipo “più basso” viene assegnato ad un tipo “più alto” secondo la seguente gerarchia:

byte --> short --> int --> long --> float --> double• Ad esempio:

double x;

int n = 5;

x = n;

– il valore di ritorno di n è convertito (in modo implicito) in un double, e quindi assegnato ad x

– x contiene 5.0

– il tipo di dato della variabile n è invariato (ovvero ancora int)

Page 24: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 24

Ancora conversione implicita

• Alcune espressioni includono valori di tipo diverso• Tutti i valori sono automaticamente (in modo implicito) fatti avanzare al livello

più alto prima di eseguire il calcolo del valore di ritorno• Ad esempio:

double a;

int n = 2;

float x = 5.1;

double y = 1.33;

a = (n * x)/y;

– i valori di n ed x sono automaticamente convertiti al tipo double prima di eseguire la moltiplicazione e la divisione

Page 25: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 25

Conversione esplicita

• La conversione esplicita è necessaria in tutti i casi non coperti da quella implicta

• Ad esempio:int points;double distance = 9.0;points = distance;– l’ultima istruzione è illegale (anche se la parte frazionaria è 0)

• Porre di fronte al valore il cui tipo deve essere convertito il nuovo tipo tra parentesi:points = (int)distance;– quest’istruzione è legale

Page 26: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 26

Troncamento

• Conversione da reale ad intero non arrotonda, ma tronca– la parte frazionaria viene semplicemente ignorata

• Ad esempio:

int numberOfDollars;

double dinnerBill = 26.99;

numberOfDollars = (int) dinnerBill;– il valore di numberOfDollars è ora 26

Page 27: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 27

Divisione reale e divisione intera

• Se almeno uno dei valori che occorrono nella divisione è di tipo float o double, allora non si ha nessun troncamento (tutti i valori sono convertiti al tipo più alto)

• Il troncamento si verifica se tutti i valori sono interi• Ad esempio:

int a = 4, b =5, c;double x = 1.5, y;y = b/x;c = b/a;– il valore di y è 3.333... mentre quello di c è 1

Page 28: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 28

Caratteri come interi• Il tipo di dati char memorizza un singolo carattere stampabile

• Ad esempio:

char answer = `y`;• I caratteri sono in realtà memorizzati come interi secondo un codice speciale

– ogni carattere stampabile (lettera, cifra, segno di interpunzione, spazio e tabulazione) ha associato un codice intero distinto

– i codici sono distinti a seconda delle maiuscole o delle minuscole• ad esempio, 97 potrebbe essere il codice di ‘a’ e 65 quello di ‘A’

• ASCII e Unicode sono due codici molto frequenti

• Unicode include tutti i codici ASCII più altri codici per linguaggi con alfabeto diverso da quello italiano

• Java usa Unicode

Page 29: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 29

Conversione di carattere in intero

• La conversione di un valore di tipo char produce il suo codice Unicode

• Ad esempio, eseguendo le seguenti istruzionichar answer = `7`;

int intAnswer = answer;il valore di intAnswer sarebbe 55 (non 7) in quanto 55 è il codice Unicode del carattere ‘7’

Page 30: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 30

Imprecisione di numeri in virgola mobile

• I calcolatori memorizzano i numeri utilizzando un numero fissato di bit, per cui non tutti i numeri reali possono essere codificati in modo esatto– un numero infinito di bit sarebbe richiesto per rappresentare in modo esatto ogni

numero reale

– ad esempio, se il calcolatore può rappresentare solo 10 cifre dopo il punto decimale, allora il numero reale 1/3=0.33333... sarebbe memorizzato come 0.3333333333 (che non è esattamente 1/3)

• Gli interi, al contrario, sono memorizzati in modo esatto– se il valore 2 è assegnato ad una variabile di tipo int, il suo valore è esattamente

2

Page 31: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 31

L’operatore di modulo: %

• Usato con i tipi interi• a%b restituisce il resto della divisione di b per a• Ad esempio:

int a = 14; b = 4, c;

c = a%b;– c ora ha il valore 2, che è il reso della divisione di 14 per 4

• Ha molte applicazioni– consente di contare modulo 2, 3 o qualsiasi altro numero

• consente di distinguere numeri pari da numeri dispari

– consente di eseguire un’operazione solo in corrispondenza dei multipli di un dato numero

Page 32: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 32

Precedenze e parentesi

• Le espressioni Java soddisfano regole simili all’algebra dei numeri reali• Si usano le parentesi per forzare la precedenza

– Tranne i casi in cui la precedenza è corretta ed ovvia, conviene usare le parentesi per facilitare la lettura dell’espressione

Espressioni matematiche

Espressione Java (forma preferita)

Espressione Java con tutte le parentesi

rate2 + delta rate*rate + delta (rate*rate) + delta

2(salary + bonus) 2 * (salary + bonus) 2 * (salary + bonus)

3mass time

1

+ 1/(time + 3 * mass) 1/(time + (3 * mass))

9v t

7 - a

+ (a - 7) / (t + 9 * v) (a - 7) / (t +( 9 * v))

Page 33: Elementi di Informatica di base1 Parte 3 Elementi di Informatica di base Dott.ssa Elisa Tiezzi

Elementi di Informatica di base 33

Operatori di incremento e decremento

• Utilizzati per aumentare o diminuire il valore di una variabile di 1• Incremento

– ++• ad esempio, count++;

• Decremento– --

• ad esempio, count--;

• La variabile può essere incrementata (o decrementata) prima o dopo aver usato il suo valore attuale. Ad esempio, dopoint count=5;int n = 2*(++count);int m = 2*(count++); sia n che m hanno il valore 12, mentre count ha il valore 7