Estratto del documento

PROGRAMMAZIONE CON JAVA

CAPITOLO 1.

INTRODUZIONE AI COMPUTER E JAVA

1.1 Concetti base computer

computer hardware

Il è un insieme di componenti hardware e software. Il termine indica la

macchina fisica. Un insieme di istruzioni che un computer deve seguire è detto programma. Il

software

termine indica invece, tutti i tipi di programmi utilizzati per fornire istruzioni a un

computer.

CPU processore,

La (Central Processing Unit, unità centrale di elaborazione), chiamata anche e

dispositivo interna che esegue le istruzioni di un programma. È in grado di eseguire solo istruzioni

semplici, come spostare i numeri o altri dati presenti una memoria e compiere alcune operazioni

aritmetiche di base.

memoria dati

La di un computer conservo i che computer deve elaborare i risultati dei calcoli

intermedi effettuati. Ci sono due tipi di memoria:

memoria principale

1. La conserva il programma che in esecuzione gran parte dei dati che il

programma stesso sta utilizzando. Le informazioni in questa memoria sono volatili, cioè sono

RAM

cancellate quando il computer viene spento. È il caso della (Random Access Memory,

memoria ad accesso casuale). È costituita da un lungo elenco di byte, ognuno con un proprio

indirizzo. Un byte contiene otto cifre, ciascuna delle quali può avere valore 0 oppure 1.

Queste cifre sono dette binarie e sono chiamate bit. Quando è compiuta la necessità di

memorizzare un dato che non può essere contenuto in singolo byte, utilizza baita adiacenti

che vengono considerati come un'unica area di memoria, dove l'indirizzo del primo byte e

viene utilizzato come indirizzo dell'intera aria.

memoria ausiliaria,

2. La o secondaria, è caratterizzato da dati che persistono anche a

computer spento. (es. hard disk, cd, flash drive, ecc..). Anche questa è suddivisa in byte, ma

sono raggruppati in unità più grandi dette file. Ciascun file ha un nome e gruppi di file possono

essere organizzati in directory (cartelle.

es. Quando si scriva un programma Java, lo si salva in un file, che tipicamente risiede nell’hard

disk del computer. Quando il programma verrà lanciato, il contenuto del file verrà copiato dalla

memoria secondaria quella principale. di un programma.

Ci sono due modi per pensare all'esecuzione (figura sotto).

Nel primo bisogna ignorare il riquadro tratteggiato. Ma

computer a due input: il programma stesso che

contiene le istruzioni che dovrai eseguire e i dati per il

programma, cioè le informazioni che programma dovrai

lavorare. L’output sono i risultati prodotti dal computer

e in seguito all'esecuzione delle istruzioni del

programma sui dati forniti in input.

Il secondo modo considera i dati come unico input del programma. Il computer il programma

sono considerati come un'unica unità. Ogni volta che si accende un computer, si sta già

eseguendo un programma, ovvero il sistema operativo (una specie di programma supervisore che

controlla il funzionamento del computer è nella sua interezza). Se si vuole eseguire un programma,

il sistema operativo recupera il programma(software) e lo avvia.

La maggior parte dei linguaggi di programmazione moderna è stata progettata per essere facile

linguaggi ad alto livello.

da utilizzare comprendere: (es. Java)

Il problema è che l'hardware del computer e non grado di comprendere direttamente linguaggio

ad alto livello, questo deve essere tradotto in un altro linguaggio comprensibile per il computer

linguaggio di basso livello).

(linguaggio macchina, Questa traduzione viene effettuata da un altro

programma, che in alcuni casi come Java, è chiamato compilatore e la traduzione viene chiamata

compilazione. Una volta compilato, è possibile eseguire il programma quante volte si vuole senza

doverlo ricompilare.

compilatore

Il quindi un software che traduce un programma scritto in linguaggio di alto livello e

linguaggio di basso livello.

In altri casi la traduzione viene fatta da interpreti: programmi che a differenza del compilatore

eseguono ogni singola porzione di codice subito dopo averla tradotta, invece di tradurre l'intero

programmata sola volta. L'esecuzione si alterna, quindi, alla traduzione e viene ripetuta ogni volta

che lo si esegue.

Il compilatore Java non traduce il programma nel linguaggio macchina specifico del del computer

bytecode.

utilizzato, ma lo traduce in un linguaggio ho detto È un linguaggio macchina di una

macchina virtuale (Java Vitual Machine).

Per eseguire un programma Java su un computer si utilizza il compilatore per tradurre programma

sorgente Java nel bytecode corrispondente e poi si utilizza la macchina virtuale Java del

computer specifico per tradurre ciascuna istruzione bytecode in linguaggio macchina.

Perché fare questo ulteriore passaggio e non scrivere compilatori che traducono direttamente il

portabilità,

codice da Java linguaggio macchina e il sistema specifico? Perché Donna Java la

cioè possibile eseguire quel programma su qualsiasi computer dotato di una macchina virtuale,

senza bisogno di ricompilarlo.

1.2 Concetti di programmazione

programmazione a oggetti (OOP),

Java è un linguaggio di una metodologia di programmazione

che considera il programma come costruito da oggetti, o istanze, che possono agire da soli o

anche interagire fra loro.

oggetto

Un è un'entità dinamica definito mediante una classe, generate distrutte nel corso

attributi.

dell'esecuzione del programma e ha diverse caratteristiche dette I valori degli attributi di

un oggetto costituiscono lo stato dell'oggetto stesso e le azioni che un oggetto può effettuare

sono dette comportamenti. Ciascun comportamento è definita da una porzione di codice detta

metodo e lo stato è determinato dal valore che assume l’attributo di quell’oggetto.

classe

Una definisce il tipo di dato di un oggetto, che è dato dal nome della sua classe e

rappresenta una sorta di stampo per definire gli oggetti di quella classe. Tutti gli oggetti di una

classe hanno gli stessi attributi e gli stessi metodi. Questo non vuol dire che tutti gli oggetti della

classe siano uguali, possono infatti trovarsi in uno stato differente cioè ogni attributo può

assumere valori diversi per ognuno degli attributi.

Un programma Java consiste di componenti quali: classi , interfacce, tipo enumerati …

package.

raggruppati in L'esecuzione del programma è basata sulla chiamata di funzioni dette e

stack

metodi. I blocchi di attivazioni dei metodi sono contenuti nello mentre gli oggetti si trova

heap.

nella struttura detta

I tre principi fondamentali della progettazione ad oggetti sono:

Incapsulamento:

1. viene spesso chiamato information hiding (“nascondere le informazioni)

perchè quando si produce un frammento di software occorre descriverlo in modo che gli altri

programmatori possano utilizzarlo e sorvolare su tutti i dettagli del suo funzionamento.

Polimorfismo:

2. cioè il nome di un metodo, usato come istruzione, può causare azioni differenti

a seconda degli oggetti che svolgono l’azione.

Ereditarietà:

3. È il modo di organizzare le classi. È possibile cioè definire una sola volta gli

attributi e comportamenti comuni applicare poi all'intera insieme di classe. Se si definisce una

classe generica si può utilizzare l'ereditarietà a posteriori per definire classi specializzate che

aggiungono e perfezionano alcuni dettagli della classe generica. Questo permette al

programmatore di evitare di ripetere le stesse istruzioni per ogni singola classe.

I oggetti possiedono comportamenti che sono definiti da metodi. I programmatori li definisce

specificando le istruzioni necessarie per compiere le azioni che devono essere eseguite.

algoritmo

Questo viene chiamato cioè un insieme di direttive atte a risolvere un problema che

devono essere espresso in un modo completo e preciso.

Una volta terminata la scrittura di un programma è necessario testarlo. Un errore in un programma

bug

viene comunemente chiamato (“baco”) e il processo di rimozione degli errori è chiamato the

debugging. Ci sono tre tipi di errori possibili:

- errore di sintassi: un errore grammaticale nel programma

- errore a run-time: che producono un messaggio di errore per esempio quando si divide in

avvertitamente un numero per zero.

- errore logico: alcune volte causa un messaggio d'errore, altre no. Un esempio è usare

l'operatore + al posto del - .

CAPITOLO 2.

CONCETTI DI BASE

2.1 Variabili

Le variabili sono utilizzati per memorizzare dati, una sorta di contenitore. Un qualsiasi dato

contenuti una variabile è chiamato valore. Questo può essere modificato durante l'esecuzione del

programma.

dichiarazione

La di una variabile costituita da: visibilità, tipo, nome variabile e volendo valore di

inizializzazione.

visibilità tipo nomeVariabilie = valoreInizializzazione;

Es. private int ore=0;

Se ho più variabili dello stesso tipo posso separarli tramite virgole.

private int ore=24, giorni=30, mesi, anni;

Dichiarazione di un oggetto:

tipoOggetto nomeOggetto = new nomeClasse(parametro1, par 2);

Scuola s= new Scuola(29845, “blu e verde”);

Dove Scuola rappresenta la classe e quindi il tipo dell’oggetto s che voglio creare.

Per crearlo chiamo un metodo speciale, il costruttore, che crea l’oggetto (vedremo piu avanti).

2.2 Tipi

Java possiede due tipi di dati principali: i tipi di classe e i tipi primitivi.

tipo di classe

Un è un tipo per i oggetti di una classe, specifica il modo in cui sono memorizzati i

valori del suo tipo e definisce le possibili operazioni che possono essere compiuti su di essi. Un

tipo classe ha lo stesso nome della classe.

tipo primitivo

Le variabili di sono più semplice degli oggetti, perché questi in crudo non sia

mezzo tizia valori. Un valore di tipo primitivo è un valore non dei componibili, come singolo

numero una singola lettera. Tutti i nomi dei tipi primitivi hanno iniziale minuscola.

tipi primitivi

I sono:

Tipi interi con segno:

- byte : 1 byte di memoria occupata. ( -128 a 127)

- short : 2 byte di memoria occupata. ( -32768 a 32767)

- int : 3 byte di memoria occupata. ( da -2 miliardi a + 2 miliardi)

- long : 4 byte di memoria occupata.

Se si lavora con valori che non possono mai diventare negativi e serve assolutamente un byte

aggiuntivo, si possono utilizzare metodi che interpretano come se fossero senza segno. Quindi

invece di avere un valore b byte pari all'intervallo -128 + 127, posso avere da 0 a 255.

Un esempio è il metodo .

toUnsignedInt (b)

Tipi virgola mobile:

- float : 4 byte di memoria occupata. (6 cifre decimali significative)

- double : 8 byte di memoria occupata. (15 cifre decimali significative)

N.B. Il separatore decimale nella notazione americana è il punto. NaN

Per verificare, ad esempio risultato di una divisione, si può utilizzare (not a number).

Tutti i valori in NaN, ovvero non numeri, sono considerati distinti uno dall'altro. Non è possibile

effettuare il test per verificare se x è NaN, ma occorre chiamare il metodo

if (x==Double.NaN)

specifico if (Double.isNaN(x)).

- char : carattere racchiuso fa apici! Es. ‘J’ oppure \n =nuova riga, \r =ritorno a capo,

\t= tabulazione, \b = backspace ;

- boolean: ha due valori false oppure true.

Il nome può essere composto da lettere, cifre e il carattere underscore . Con la regola che il primo

carattere non può essere però una cifra.

Nessun nome può contenere spazi o altri caratteri come il punto l’asterisco.

Java è case sensitive, ovvero maiuscole minuscole sono considerate differenti.

Oltre alla dichiarazione di una variabile, c'è poi l’assegnamento. Esso può essere fatto in

concomitanza alla dichiarazione oppure successivamente.

nomeVariabile = espressione;

Ci sono delle regole di assegnamento, cioè un valore può essere assegnato da qualsiasi variabile

il cui tipo compare alla destra del tipo del valore nell'elenco seguente:

byte —> short—> int—> long—> float—> double

Per assegnare un tipo di valore di tipo double a un variabile int occorre cambiare il tipo di variabile

utilizzando una conversione (cast): (tipo)espressione;

cast esplicito: int i=44; float f=i;

cast implicito: f=(float) 44;

Se si passa da un tipo double a uno int il valore non viene arrotondato ma la, viene scartata.

Quest'operazione viene detta troncamento.

2.3 Costanti

Non devono essere necessariamente numeriche, possono essere anche di tipo char o boolean.

Il loro valore non può cambiare, ma possono essere utilizzati un'istruzione di assegnamento per

cambiare il valore di una variabile.

public static final tipo NOMEVARIABILE = valore;

2.4 Operatori aritmetici e aritmetica di base x += 10;

È uguale a :

x = x + 10;

n*(++m) = n*(m+1)=3*(4+1)=15

n*(m++) = n*m=12 e poi m=m+1

+/- = addizione/sottrazione. * / = moltiplicazione e divisione.

%= resto di una divisione. ++/ - - =incremento/decremento di una unità

2.5 Stringhe String

Valore di tipo è una stringa, sequenza di caratteri, racchiusa tra le virgolette, non

modificabile. Es. “Hello world!”

private String nomeVariabile = “testo”;

La lunghezza è variabile e può contenere anche zero caratteri. Le stringhe però una volta create

non possono essere modificate. di concatenamento.

Due stringhe, ma non solo, possono essere unite tramite l'operazione

Può essere effettuata tramite l'operatore concatenamento + : si possono concatenare stringhe

diverse, stringhe e variabili. Si viene a creare ogni volta una nuova stringa.

int age=42;

String frase = “Maria ha : “ + 42 + “ anni.”;

Se si vogliono usare dei caratteri speciali come “ , si deve mettere il backlash \ davanti.

“Il termine \”Java\” indica un nome”

Per combinare insieme diverse stringhe separandole con un delimitatore, uso il metodo join:

String names = String.join(“, ”, “Peter”, “Paul”, “mary”);

// “Peter, Paul, Mary” StringBuilder,

Volendo si può anche creare una stringa tramite un oggetto che a differenza di

String crea una stringa modificabile ed è consigliata quando uno deve concatenare un gran

numero di stringhe.

public StringBuffer (); es.StringBuilder builder = new StringBuilder();

crea un oggetto vuoto StringBuffer di lunghezza iniziale 16

public StringBuffer (int lenght); es. StringBuilder builder = new

StringBuilder(32);

crea un oggetto vuoto StringBuffer di lunghezza iniziale 32

public StringBuffer (String str)

crea un oggetto StringBuffer di contenuto iniziale str

public StringBuffer append (int/double/object i);

Concatena la rappresentazione testuale dell’argomento al proprio contenuto

x= new StringBuffer().append(“a”).append(4).append(‘c’).toString();

Crea un oggetto di classe StringBuffer vuoto e ci concatena a, 4, c. Infine restituisce la stringa

corrispondente.

Sarebbe come scrivere: x= “a” + 4 + ‘c’;

Confronto tra stringhe

Per verificare se due valori di tipo primitivo, di esempio numeri, sono uguali, ti utilizza l'operatore

di uguaglianza == .

Questo non è possibile applicarlo agli oggetti, occorre utilizzare il metodo equals.

è uguale a

stringa1.equals(stringa2) stringa2.equals(stringa1)

public boolean equals (Object nomeoggetto);

Restituisce true se le due stringhe sono uguali.

Se invece mi serve confrontare due stringhe per verificare quale preceda l'altra in ordine

alfabetico, utilizzo compareTo. s1.compareTo(s2)

public int compareTo(String anotherString)

Restituisce 0 se sono uguali, (-1) se s1 precede s2, (+1) se s1 segue s2.

Posso quindi anche porre la condizione s1.compareTo(s2) == 0 (condizione verifica uguaglianza).

Occorre assicurarsi però prima che tutte le lettere siano dello stesso tipo (minuscole o maiuscole)

prima di utilizzare il metodo per confrontarle.

2.6 Input/Output

Output

Per utilizzare l’output, basta scrivere:

System.out.println(“testo da visualizzare” + eventualeconcatenazione);

Per avere più istruzioni di output su una stessa linee, devo utilizzare e non

System.out.print

println. In questo modo finché no riuso println, rimane sulla stessa linea.

Es System.out.print(“Inserisci”); Inserisci un intero compreso tra

System.out.print(“un intero”); 1 e 99

System.out.println(“compreso tra”);

System.out.println(“1 e 99”);

L’unica differenza tra i due è quindi che println dopo l’utilizzo crea una nuova riga di testo.

output formattato

Per avere un uso printf

System.out.printf(“%8.2f” , 1000.0 / 3.0); 333.33

indica un numero in virgola mobile (f) con una larghezza di 8 cifre e una precisione di 2

%8.2f

cifre dopo la virgola. (la virgola conta come carattere).

System.out.printf(“Ciao, %s. Il prox anno avrai %d anni.\n”, name, age);

Ogni specifica attore di formato che inizia con un carattere percentuale, viene sostituito con

l'argomento corrispondente.

System.out.printf(“testo da visualizzare e %parametri” , arg1, arg2);

1 char di lunghezza 2

Es. %2c = 1 int a 5 cifre

%5d = 1 float con due cifre dopo la virgola

%1.2f = 1 stringa lunga 10

%10s =

Input da tastiera.

Per leggere l'input inserito da tastiera occorre utilizzare un oggetto della classe scanner.

Scanner nomeOggettoScanner = new Scanner (System.in);

Dopo aver definito un oggetto Scanner, per leggere i valori alla tastiera si possono utilizzare i

metodi di classe. Per ogni tipo di dato c'è un metodo preciso.

nomeOggettoScanner.nextInt();

Legge restituisce un valore digi

Anteprima
Vedrai una selezione di 20 pagine su 109
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 1 Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 2
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 6
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 11
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 16
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 21
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 26
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 31
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 36
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 41
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 46
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 51
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 56
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 61
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 66
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 71
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 76
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 81
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 86
Anteprima di 20 pagg. su 109.
Scarica il documento per vederlo tutto.
Programmazione a Oggetti [Java], Base e Avanzata - Ing. Informatica, Appunti di Programmazione Java Pag. 91
1 su 109
D/illustrazione/soddisfatti o rimborsati
Acquista con carta o PayPal
Scarica i documenti tutte le volte che vuoi
Dettagli
SSD
Ingegneria industriale e dell'informazione ING-INF/05 Sistemi di elaborazione delle informazioni

I contenuti di questa pagina costituiscono rielaborazioni personali del Publisher Auxiele18 di informazioni apprese con la frequenza delle lezioni di Programmazione ad oggetti - Java e studio autonomo di eventuali libri di riferimento in preparazione dell'esame finale o della tesi. Non devono intendersi come materiale ufficiale dell'università Politecnico di Torino o del prof Bruno Giorgio.
Appunti correlati Invia appunti e guadagna

Domande e risposte

Hai bisogno di aiuto?
Chiedi alla community