Date post: | 02-May-2015 |
Category: |
Documents |
Upload: | luigina-bianchi |
View: | 228 times |
Download: | 0 times |
Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Corso JAVA
2
Le Basi della programmazione
I mattoni fondamentali della programmazione sono sostanzialmente: I dati Le istruzioni.
I dati sono costituiti dalle costanti e dalle variabili, che come vedremo in seguito possono essere utilizzate singolarmente o raggruppate in quelle che vengono comunemente chiamate strutture dati.
Le istruzioni sono l’insieme delle operazioni che si possono effettuare sui dati.
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
3
I tipi fondamentali di dati
Iniziamo a vedere quali tipi di dati, ovvero costanti e variabili, si possono utilizzare per risolvere un problema.
Ripetiamo che una variabile è una locazione di memoria, contenente dati che possono essere modificati nel corso del programma, a cui viene associato una lettera o un nome. Una costante invece mantiene sempre lo stesso valore assegnatole durante la sua fase di dichiarazione.
In Java esistono 8 tipi primitivi:
4 tipi per i dati numerici che rappresentano numeri interi.
2 tipi per i dati numerici che rappresentano numeri in virgola mobile
1 tipo per i dati booleani (vero/falso)
1 tipo per i dati letterali (caratteri, parole, simboli di punteggiatura, ecc…).
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
4
Tipi di dato – Numeri Interi
Abbiamo detto che per i tipi di dato che rappresentano numeri interi esistono 4 tipi : byte, short, int, long.
Ognuno di questi tipi indica quanti bit sono impiegati per memorizzare il numero che la variabile rappresenta:
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Tipo N° di bit Range di numeri interi rappresentabili
byte 8 bit Da –128 a 127
short 16 bit Da –32.768 a 32.767
int 32 bit Da –2.147.483.648 a 2.147.483.647
long 64 bit +/- 9 miliardi di miliardi
5
Tipi di dato – Numeri in virgola mobile
I tipi di dato che rappresentano numeri in virgola mobile possono essere dichiarati utilizzando due tipi:
Solitamente si utilizza il tipo float per dati che devono contenere numeri con la virgola, mentre il tipo double si utilizza soprattutto il quelle applicazioni per cui occorre una precisione maggiore, es. applicazioni in ambito accademico/scientifico.
Durante il nostro corso difficilmente utilizzeremo il tipo double, mentre vedremo spesso dati dichiarati come float.
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Tipo N° di bit Range di numeri rappresentabili
float 32 bit Numeri da 1,4e-45 e 3,45e38
double 64 bit Numeri da 4,9e-324 a 1,7e308
6
Tipi di dato – I Booleani e i Caratteri
Il tipo di dato bool serve per dichiarare dati che durante la loro esistenza possono assumere solo due valori: Es.: 1 o 0, Vero/Falso, Acceso/Spento
Il tipo di dato char serve per dichiarare caratteri quali lettere, numeri, segni di punteggiatura ed altri simboli.
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Tipo N° di bit Valori rappresentabili
boolean 1 bit 0 e 1
char 16 bit Lettere, segni di punteggiatura, ecc..
7
Il nostro 1° programma Java
Proveremo adesso a fare in nostro primo programma Java che effettua la somma tra due numeri e vedremo come funzionano le variabili.
Per scrivere i nostri programmi ed eseguirli utilizzeremo un ambiente integrato di sviluppo (IDE): la versione 4.1 di Netbeans.
Avviate Netbeans 4.1 e dal menù File scegliete New Project.
Dalla categoria General scegliete Java Application ed in seguito il pulsante Next.
Cambiate il nome del progetto in Somma, controllando che il percorso delle cartelle Project Location e Project Folder sia corretto, e cliccate su Finish.
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
8
Il nostro 1° programma Java (2)
Istituto Statale di Istruzione Superiore “F. Enriques”
1°
2°
3°
Corso di Programmazione in Java – Lezione n° 02
9
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Questa a fianco è la base di partenza che utilizzeremo ogni volta per iniziare un nuovo programma.Per adesso i ns. programmi li scriveremo all’interno delle parentesi graffe, introdotte dalla dicitura:
public static void main (String[] args){ Il nostro programma}
Il nostro 1° programma Java (3)
10
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Il nostro 1° programma Java (4)
Inizio
a
somma = 0
somma = a + b
b
somma
Fine
Questo è il semplicissimo diagramma a blocchi di un programma che effettua la somma di due numeri a e b e ne restituisce la somma.
I dati in input sono a e b.Il dato in output è somma.
Ci sono due variabili fornite dal problema a e b, e una variabile introdotta per risolvere il problema: somma.
Vediamo adesso come tradurre questo diagramma a blocchi in un programma.
11
Il nostro 1° programma Java (5)
Inizio
a
somma = 0
somma = a + b
b
somma
Fine
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Il simbolo si traduce, per adesso, public static void main (String[] args){
Mentre il simbolo si traduce semplicemente nella parentesi graffa chiusa.
Inizio
Fine
12
Inizio
a
somma = 0
somma = a + b
b
somma
Fine
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Il nostro 1° programma Java (6)
Si devono sempre dichiarare le variabili che siutilizzano: in questo caso le variabili sono trea, b e somma che vengono definite come int
13
Il nostro 1° programma Java (7)
Inizio
a
somma = 0
somma = a + b
b
somma
FineIstituto Statale di Istruzione Superiore “F. Enriques”
E’ sempre bene inizializzare le variabili, ovverodopo averle dichiarate, assegnargli un valore iniziale
Corso di Programmazione in Java – Lezione n° 02
14
Inizio
a
somma = 0
somma = a + b
b
somma
FineIstituto Statale di Istruzione Superiore “F. Enriques”
Corso di Programmazione in Java – Lezione n° 02
Il nostro 1° programma Java (8)
Si esegue l’operazione somma…
15
Inizio
a
somma = 0
somma = a + b
b
somma
FineIstituto Statale di Istruzione Superiore “F. Enriques”
Corso di Programmazione in Java – Lezione n° 02
Il nostro 1° programma Java (9)
L’istruzione System.out.println(“testo”); serve per stampare a video un messaggio.Quello scritto tra i doppi apici “ ” viene scritto così come lo digitate da tastiera, il simbolo + serve per indicare che in seguito deve aggiungere al messaggio il valore della variabile
16
Un volta scritto il nostro programma occorre compilarlo, ovvero Netbeans provvederà a controllare ciò che avete scritto e cercherà di trovare eventuali errori.
Ci sono alcuni errori che è in grado di riconoscere, ad esempio se manca il “;” al termine di ogni istruzione, mentre altri errori non è in grado di riconoscerli.
Compilare un programma significa tradurlo da un linguaggio naturale comprensibile dall’uomo ad un linguaggio macchina comprensibile dal computer (cioè une serie di 0 e 1).
Per compilare si clicca su Build MainProject (Cerchio Rosso) mentre per eseguirlosu Run Main Project (Cerchio Giallo).
Prima di passare all’esecuzione controllate che la compilazione sia andata a buon fine, cioè nella sezione in basso deve comparire la scritta BUILD SUCCESSFUL
Corso di Programmazione in Java – Lezione n° 02
Il nostro 1° programma Java (10)
Istituto Statale di Istruzione Superiore “F. Enriques”
17
Se tutto è stato fatto correttamente dopo aver cliccato su Build, dovreste ottenere un risultato simile:
Se avete ottenuto BUILD SUCCESSFUL potete cliccare su Run e dovreste ottenere un risultato simile:
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Il nostro 1° programma Java (10)
Come si vede la somma è stata eseguita correttamente!!!
18
Le costanti
Nel nostro primo programma Java abbiamo utilizzato tre variabili a,b, e somma; parlando però dei dati abbiamo parlato anche di costanti.
Come si capisce che un dato è una variabile o una costante, ovvero un valore che non cambia mai?
Prendiamo il caso di un programma che calcola l’area di un cerchio.
La geometria insegna che l’area di suddetto cerchio si calcola con Πr2.
Ma il valore di Π è sempre 3.1415926535……
Quando si dichiara una costante, a differenza di una variabile, faremo precedere la dichiarazione dalle seguenti parole chiave: Final.
Es. final double PI = 3.1415926335;
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
19
Esempio – L’area del cerchio
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Da adesso potete usare l’identificatore PI tutte le volte che avete bisogno del valore del Π.
Se provate ad assegnare un nuovo valore alla costante PI il compilatore vi restituirà un errore!!
20
I Vettori (gli Array)
I vettori (gli array) fanno parte delle strutture dati di base di un linguaggio di programmazione.
Abbiamo detto che le strutture dati non sono altro che un raggruppamento di variabili; in particolare gli array sono costituiti dall'aggregazione di un certo numero di variabili, individualmente accessibili tramite un indice.
Per capire l’utilità degli array riprendiamo l’esempio che abbiamo fatto nella lezione precedente: la ricerca dello stipendio più alto.
Lasciando perdere il nome ed il cognome dei dipendenti, nel ns. programma dovremmo avere la dichiarazione di 100 variabili per gli stipendi:
Int stipendio000;
Int stipendio001;
Int stipendio002; … ecc… fino a stipendio099
Istituto Statale di Istruzione Superiore “F. Enriques”
Corso di Programmazione in Java – Lezione n° 02
21
Un array (a una dimensione) può essere immaginato come un casellario costituito da un certo numero di celle. Le celle si comportano individualmente come variabili tradizionali (ovvero possono essere assegnate, lette, e così via). Tutte le celle di un array sono variabili dello stesso tipo, detto tipo base dell'array.
Es.: Variabili tradizionali: Stipendio000 Stipendio001 ecc…
Array:Stipendio
0 1 2 3 4 5 6 7 ……
Corso di Programmazione in Java – Lezione n° 02
I Vettori (gli Array) (2)
Istituto Statale di Istruzione Superiore “F. Enriques”
22
Per dichiarare un array scriveremo:
Es.: int stipendi[]; dichiaro che stipendi è un array di int.
stipendi = new int[100]; mi serve per indicare quante “celle” deve avere il ns. array.
Da adesso in poi ogni cella dell’array può essere utilizzata nello stesso modo in cui avreste utilizzato una variabile.
Es. Lo stipendio del dipendente n° 15 è di 1.200€, per assegnate quel valore alla cella n° 15 non farete altro che:
stipendi[15] = 1200;
oppure voglio stampare il valore dello stipendio del dipendente n° 37:
System.out.println(“Stipendio dipendente n° 37 = ” + stipendi[37]);
Corso di Programmazione in Java – Lezione n° 02
I Vettori (gli Array) (3)
Istituto Statale di Istruzione Superiore “F. Enriques”
23
Corso di Programmazione in Java – Lezione n° 02
I Vettori (gli Array) (4)
Istituto Statale di Istruzione Superiore “F. Enriques”
Per utilizzare un array occorre quindi:
1) Dichiararlo
2) Crearlo
3) Inizializzarlo
4) Utilizzarlo come una qualsiasi variabile
24
Fate molta, molta attenzione quando utilizzate gli array, agli indici.
Dovete stare attenti a non andare oltre il limite di capacità dell’array per non incorrere in errori (eccezioni).
Se nell’esempio precedente pongo i = 15 ottengo il seguente risultato:
In particolare ricordatevi che gli indici si iniziano a contare da zero.
Quindi un array creato con new stipendi[100] contiene le celle
da stipendi[0] a stipendi[99]!!!
Corso di Programmazione in Java – Lezione n° 02
I Vettori (gli Array) (5)
Istituto Statale di Istruzione Superiore “F. Enriques”
25
Le istruzioni
Le istruzioni sono le informazioni che devono essere fornite ad un computer per poter elaborare dei dati e risolvere problemi:
Abbiamo visto la più naturale delle istruzioni negli esempi precedenti, ovvero l’assegnamento di un valore ad una variabile:
Es. A = 32; Somma=0; stipendi[15]=1200; ecc…
Vedremo adesso le istruzioni condizionali ed iterative, e la loro relazione con i diagrammi a blocchi.
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
26
Traduzione della selezione:Il comando IF .. ELSE
si no
Gruppo di Istruzioni 1
Nell’esempio della somma tra due numeri abbiamo visto come si traducono i simboli inizio e fine e come si fanno gli assegnamenti dei dati di input e come si stampano i risultati di output.
E se troviamo il simbolo della selezione come si traduce? Con If .. else
Condizione
Gruppo di Istruzioni 2
Istituto Statale di Istruzione Superiore “F. Enriques”
…
If (Condizione)
{ Gruppo istruzioni 1; }
Else
{ Gruppo istruzioni 2; }
Corso di Programmazione in Java – Lezione n° 02
27
Riprendendo l’esempio del semaforo:
Traduzione della selezione:Il comando IF .. ELSE (2)
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
Di che coloreè il semaforo
Rosso Non rosso
Giallo Verde
Freno
PassoAccelero / Freno
Di che coloreè il semaforo
If (Colore semaforo = Rosso){
Freno;}Else{
If (Colore semaforo = Verde){
Passo;}Else{
Accelero/Freno;}
}
28
Il comando for serve in quei casi in cui si utilizzano i cicli, in particolare le ricorsioni che usano i contatori, ovvero per tradurre blocchi del tipo:
Traduzione della iterazione:Il comando FOR
Inizializzazione
Gruppo di Istruzioni
Condizione
Incremento
vero
falso
For ( inizializzazione; condizione; incremento)
{
Gruppo di Istruzioni;
}
Ricordatevi sempre che il gruppo di istruzioni dentro le parentesi viene eseguito se la condizione è vera!!!
Corso di Programmazione in Java – Lezione n° 02
Istituto Statale di Istruzione Superiore “F. Enriques”
29
Nella scorsa lezione abbiamo visto il più semplice esempio di ricorsione:
Traduzione della iterazione:Il comando FOR (2)
Corso di Programmazione in Java – Lezione n° 02
i = 0
i < 100
inizio
i = i + 1Stampa i
vero
falsofine
Istituto Statale di Istruzione Superiore “F. Enriques”
public static void main (String[] args)
{
int i;
for(i=0; i<100; i++)
{
System.out.printnl(i);
}
}
Inizializzazione
Incremento
Condizione N.B. Scrivere i = i +1; o i++; è la stessa cosa