Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoNatalia Romagnoli Modificato 6 anni fa
1
Lezione 2 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
3
Compilatori tradizionali
compilatore Windows compilatore Linux compilatore MacOS codice eseguibile Windows codice eseguibile Linux codice eseguibile MacOS codice sorgente Fondamenti di Informatica-Modulo Fondamenti di Programmazione
4
Compilatore Java compilatore Windows compilatore Linux
compilatore MacOS interprete bytecode Windows interprete bytecode Linux interprete bytecode MacOS Java bytecode codice sorgente Fondamenti di Informatica-Modulo Fondamenti di Programmazione
5
Programmazione Concetti base: Dati: Istruzioni: dati istruzioni
variabili tipi Istruzioni: istruzioni base strutture di controllo sotto-programmi Fondamenti di Informatica-Modulo Fondamenti di Programmazione
6
Variabili e tipi Variabile: Tipo:
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”) Fondamenti di Informatica-Modulo Fondamenti di Programmazione
7
Istruzioni base Assegnazioni ed espressioni: Input/Output:
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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; Fondamenti di Informatica-Modulo Fondamenti di Programmazione
12
Nomi di variabili: identificatori
Regole - 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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 - intero double - reale char - carattere classi Più complessi Composti di altri tipi (primitivi o classi) Contengono sia dati che metodi Esempio: Integer String Fondamenti di Informatica-Modulo Fondamenti di Programmazione
14
Tipi di Dati Primitivi Fondamenti di Informatica-Modulo Fondamenti di Programmazione
15
Quali sapere per ora double int
numeri reali, sia positivi che negativi ha un punto decimale (parte frazionaria) due formati numero con punto decimale, a.e notazione e o scientifica, a.e e2, che significa x 102 int semplicemente numeri interi possono essere positivi e negativi nessun punto decimale char semplicemente un singolo carattere utilizza le virgolette singole per esempio, `A`; Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 = = 9 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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. Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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) Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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. Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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) Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 è mentre quello di c è 1 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
29
Conversione di carattere in intero
La conversione di un valore di tipo char produce il suo codice Unicode Ad esempio, eseguendo le seguenti istruzioni char answer = `7`; int intAnswer = answer; il valore di intAnswer sarebbe 55 (non 7) in quanto 55 è il codice Unicode del carattere ‘7’ Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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= sarebbe memorizzato come (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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
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, dopo int count=5; int n = 2*(++count); int m = 2*(count++); sia n che m hanno il valore 12, mentre count ha il valore 7 Fondamenti di Informatica-Modulo Fondamenti di Programmazione
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.