Upload
sherri
View
29
Download
0
Embed Size (px)
DESCRIPTION
Introduzione. Programmazione in Perl. Guido Boella Dipartimento di Informatica Universita` degli Studi di Torino C.so Svizzera, 185 I-10149 Torino [email protected] http://www.di.unito.it/~guido. Accendo il computer …. Metafora linguistica : parlo al computer - PowerPoint PPT Presentation
Citation preview
IntroduzioneProgrammazione in Perl
Guido BoellaDipartimento di InformaticaUniversita` degli Studi di TorinoC.so Svizzera, 185 I-10149 Torino
[email protected]://www.di.unito.it/~guido
2
Accendo il computer …
Metafora linguistica: parlo al computer dicendogli cosa deve fare ed esso mi parla scrivendomi il risultato della elaborazione
(precedente l’introduzione del mouse)
Metafora linguistica: parlo al computer dicendogli cosa deve fare ed esso mi parla scrivendomi il risultato della elaborazione
(precedente l’introduzione del mouse)
3
Accendo il computer
Metafora visiva: ho a disposizione degli oggetti che posso manipolare (scelgo, prendo, sposto, copio, taglio, incollo, aggiungo, …)
(successiva all’introduzione del mouse)
Metafora visiva: ho a disposizione degli oggetti che posso manipolare (scelgo, prendo, sposto, copio, taglio, incollo, aggiungo, …)
(successiva all’introduzione del mouse)
4
Programmare un computer
Un computer è una macchina programmabile, tuttavia esso non è direttamente utilizzabile da parte degli utenti poiché richiederebbe la conoscenza sull’organizzazione fisica della specifica macchina e del suo linguaggio macchina
Ogni machina avrebbe le sue differenti caratteristiche
Il linguaggio macchina è estremamente complicato e non di facile gestione
Linguaggio Macchina
Utente?
??
5
Programmare un computer: astrazione
In altre parole desideriamo astrarci dai dettagli fisici della macchina in oggetto e dal suo specifico linguaggio macchina
L’idea è quella di realizzare al di sopra della macchina reale una macchina virtuale astratta che abbia le funzionalità desiderate e che sia facile da utilizzare per l’utente
L’utente interagisce con la macchina virtuale, ogni comando viene poi tradotto nei corrispondenti comandi sulla macchina fisica
La macchina virtuale è realizzata mediante software (programmi)
Linguaggio Macchina
Utente
traduzione in LM
Software
Macchina Virtuale
6
Programmare un computer: astrazione
La macchina virtuale viene realizzata in genere mediante il software di base: Sistema Operativo: file system,
memoria, cpu, risorse ausiliarie, comunicazione
Linguaggi e ambienti di programmazione ad alto livello: interpreti e compilatori
Non vi sono limiti al numero e al tipo di macchine virtuali che possono essere realizzate
In genere nelle macchine moderne sono strutturate su più livelli (struttura a cipolla)
Linguaggio Macchina
traduzione
Software
Macchina Virtuale
traduzione
Macchina Virtuale
UtenteSoftware
7
Programmare un computer: astrazione Astrarre dall’organizzazione fisica della macchina Usare nello stesso modo, o comunque in modo molto
simile, macchine leggermente diverse dal punto di vista hardware o, al limite, macchine con hardware profondamente diverso
Avere un semplice linguaggio di interazione con la macchina
Avere un linguaggio semplice ed ad alto livello per programmare la macchina
Avere un insiemi di programmi applicativi per svolgere compiti diversi
MACCHINE VIRTUALI
8Informatica Generale
Architettura dei computer In un computer possiamo distinguere cinque unità
funzionali: l’unità di controllo l’unità aritmetico-logica la memoria centrale (RAM) la memoria periferica i dispositivi di ingresso/uscita
9
Struttura di un computer
Unità dicontrollo
Unità diuscita
Unità diingresso
Unità logicoaritmetica
Memoriaperiferica
Memoriacentrale (RAM)
PROCESSORE
10
Figura 6Diagramma schematico di un personal computer
11
Figura 1Unità centrale di elaborazione
12
Figura 3Un disco rigido
13
Figura 4Una scheda principale(motherboard)
14Informatica Generale
Il Processore Il processore è il componente che fornisce la
capacità di elaborazione delle informazioni contenute nella memoria centrale
L’elaborazione avviene in accordo a sequenze di istruzioni (istruzioni macchina)
15Informatica Generale
La memoria centrale Fornisce la capacità di “memorizzare” le informazioni Può essere vista come una lunga sequenza di
componenti elementari, ognuna delle quali può contenere un’unità di informazione (un bit)
Le componenti elementari sono aggregate tra di loro e formano delle strutture complesse dette celle (otto bit formano un byte)
La memoria può essere vista come una sequenza di celle
16Informatica Generale
La memoria centrale
Ciascuna cella è caratterizzata da un
indirizzo
Gli indirizzi corrispondono
all’ordinamento delle celle nella
sequenza
Gli indirizzi sono numeri interi
(partono da 0)
01234
N
17Informatica Generale
La memoria centrale Un altro nome con cui viene indicata la memoria
centrale è memoria RAM (Random Access Memory) Questa definizione indica che il tempo di accesso ad
una cella è lo stesso indipendente dalla posizione della cella
Le operazioni che si possono effettuare sulla memoria sono le operazioni di lettura e scrittura di informazioni nelle celle
18Informatica Generale
La memoria centrale Le dimensioni della memoria centrale variano a
seconda del tipo di computer e vengono espresse mediante le seguenti unità di misura:
1 Kilobyte (KByte) corrisponde a 1024 byte 1 Megabyte (MByte) corrisponde a 1024
Kbyte 1 Gigabyte (GByte) corrisponde a 1024 MByte 1 Terabyte (TByte) corrisponde a 1024 GByte
Nei computer attuali le dimensioni tipiche della memoria centrale vanno dagli 8 ai 512 Mbyte
19Informatica Generale
La memoria centrale Un altro aspetto che caratterizza la memoria è il
tempo di accesso (tempo necessario per leggero o scrivere un’informazione in una cella)
Le memorie centrali dei computer attuali sono molto veloci e i loro tempi di accesso sono di pochi nanosecondi (un miliardesimo di secondo)
20Informatica Generale
La memoria centrale La memoria centrale perde ogni suo contenuto quando si
interrompe l’alimentazione elettrica. Questa caratteristica viene chiamata volatilità
È quindi necessario per conservare le informazioni (programmi e dati) avere altri tipi di memoria che preservano il contenuto anche senza alimentazione elettrica
21Informatica Generale
La memoria periferica La memoria centrale non può essere troppo grande a causa
del suo costo elevato Non consente la memorizzazione permanente dei dati
(volatilità) Per questi motivi nell’architettura di un calcolatore sono stati
introdotti due tipi di memoria: Memoria centrale veloce, volatile, di dimensioni
relativamente piccole; Memoria periferica, più lenta e meno costosa, con
capacità di memorizzazione maggiore ed in grado di memorizzare i dati in forma permanente
22Informatica Generale
La memoria periferica La memoria periferica viene utilizzata per mantenere
tutti i programmi e tutti i dati che possono essere utilizzati dal computer
La memoria periferica viene anche detta memoria di massa
Quando si vuole eseguire un certo programma, questo dovrà essere copiato dalla memoria di massa a quella centrale (caricamento)
23
La memoria periferica Il processore non può utilizzare direttamente la memoria di
massa per l'elaborazione dei dati Il programma in esecuzione deve essere in memoria
centrale e quindi le informazioni devono essere trasferite dalla memoria periferica a quella centrale ogni volta che servono
24Informatica Generale
La memoria periferica:I dischi magnetici
I dischi magnetici sono i dispositivi di memoria periferica più diffusi
Sono dei supporti di plastica o vinile, su cui è depositato del materiale magnetizzabile
Nel corso delle operazioni i dischi vengono mantenuti in rotazione a velocità costante e le informazioni vengono lette e scritte da testine del tutto simili a quelle utilizzate nelle cassette audio/video
Entrambi i lati di un disco possono essere sfruttati per memorizzare le informazioni
25Informatica Generale
Le unità di ingresso/uscita Le unità di ingresso/uscita (anche dette periferiche),
permettono di realizzare l'interazione tra l'uomo e la macchina
La loro funzione primaria è quella di consentire l'immissione dei dati all'interno dell'elaboratore (ingresso), o l'uscita dei dati dall'elaboratore (uscita)
Solitamente hanno limitata autonomia rispetto al processore centrale (sono completamente gestiti, controllati e coordinati dal processore)
26Informatica Generale
Le unità di ingresso/uscita: il video Dal punto di vista fisico, un video può essere visto
come una matrice di punti illuminati con diversa intensità
Ogni punto sullo schermo prende il nome di pixel e un'immagine viene quindi composta accendendo o spegnendo i pixel sullo schermo
Ci sono video in bianco e nero o a colori e inoltre si deve distinguere tra video a carattere, e video grafici
27Informatica Generale
Le unità di ingresso/uscita: il video
Oggi sono comuni video con un numero di colori che va da 256 fino a 16 milioni
Esistono video a diversi livelli di risoluzione, cioè con diverse densità di pixel; nei personal sono oggi comuni video con risoluzioni che vanno da 640X480 fino a 4096X3300 pixel (altissima risoluzione)
La dimensione di un video viene misurata in pollici e fa riferimento alla lunghezza della diagonale
Ad esempio, quando si parla di un video a 14 pollici, indicati come 14", si intende un video con una diagonale lunga 14 pollici
28
Accendo il computer …
1. Avvio del sistema operativo2. Identificazione utente3. Attivazione dell’ambiente di lavoro
Sistema operativo: software speciale che determina il comportamento del computer, fa funzionare i programmi applicativi, gestisce la memoria, il file system, gli utenti, ...
Esempi: Windows98, Linux, Unix, BeOS, MacOS
Sistema operativo: software speciale che determina il comportamento del computer, fa funzionare i programmi applicativi, gestisce la memoria, il file system, gli utenti, ...
Esempi: Windows98, Linux, Unix, BeOS, MacOS
29
Il Sistema Operativo
Avviamento dell’elaboratore e creazione dell’ambiente virtuale
Gestione del processore e dei processi (un programma in esecuzione)
Gestione della memoria principale (allocazione) Gestione della memoria virtuale (visione astratta della
memoria, swapping) Gestione della memoria secondaria (file system,
organizzazione logica e gestione fisica dei file) Gestione delle risorse di input/output (periferiche) Linguaggio di comandi per l’interazione con l’utente
30
Gestione della memoria secondaria
Il file system è costituito da un insieme di programmi che devono svolgere due compiti importanti: fornire all’utente una visione logica dei file e utilizzare lo
spazio sui dischi in modo ottimale nome logico operazioni per lavorare sui file accesso alle informazioni contenute nei file strutturazione protezione
gestire i file nella memoria di massa allocazione fisica dei file (contigua vs sparsa, indexata vs
linkata)
31
file
1. Unità di memoria, agli occhi dell’utente
2. Può contenere:1. Documenti2. Programmi3. Dati
3. Le ultime tre lettere (o l’icona) indicano il tipo del file
Perché un file Word deve essere apertocon Word e non può essere letto utilizzando unaltro applicativo? Non contiene semplicementedei dati?
Perché un file Word deve essere apertocon Word e non può essere letto utilizzando unaltro applicativo? Non contiene semplicementedei dati?
32
File e cartelle
File: corrispondono ai documenti, possono contenere testi, presentazioni, immagini di vari formati, programmi
Cartelle: sono contenitori, servono a organizzare il materiale contenuto in memoria
File: corrispondono ai documenti, possono contenere testi, presentazioni, immagini di vari formati, programmi
Cartelle: sono contenitori, servono a organizzare il materiale contenuto in memoria
ALBEROALBERO
cartelle
file
33
Il sistema operativo:il file system
La struttura gerarchica che i S.O realizzano per organizzare i file è detta ad albero
L’albero ha un’unica directory radice che viene detta root directory (o direttorio radice); viene simbolicamente indicata con il simbolo “\” (slash)
Inoltre, bisogna specificare a quale unità di memoria secondaria si riferisce la struttura ad albero a: e b: per i floppy disk c: per l’hard disk d: oppure e: per il CD-ROM o dischi aggiuntivi
34
Il sistema operativo:il file system
Floppy a:
Applicazioni
Biblioteca
Indice
Utenti
Elab_imm
Elab_suoni
Elab_testi
Narrativa-Fra
Narrativa-Ing
Narrativa-Ita
Bianchi
Photoshop.exe
Premiere.exe
Winword.exe
Pautasso
Rossi
libro1libro2libro1libro2libro3libro1libro2libro3
ROOT
35
Il sistema operativo:il file system
Se non esiste la strutturazione in directory, tutti i file possono essere identificati mediante il loro nome
Nel caso di un’organizzazione gerarchica a più livelli il nome non è più sufficiente ad identificare il file (nell’esempio precedente esistono diversi file con lo stesso nome)
Per individuare un file o una directory in modo univoco si deve allora specificare l'intera sequenza di directory che lo contengono, a partire dalla radice dell'albero
36
Il sistema operativo:il file system
Ad esempio il file libro1 di narrativa italiana è univocamente identificato dalla sequenza:
A:\Biblioteca\Narrativa-Ita\libro1 La directory Pautasso di Utenti è identificata dalla sequenza:
A:\Utenti\Pautasso
il carattere “\”viene usato come separatore. Una sequenza di questo tipo può essere vista come il
cammino che si deve compiere per raggiungere un determinato file a partire dalla radice dell'albero, ed è chiamata path
37
Il sistema operativo:il file system
Si dice path corrente l’indirizzo della cartella (directory) su cui si sta lavorando
Un altro modo di individuare un file (o una directory) è basato sul concetto di posizione
In questo caso per individuare un file o una directory in modo univoco si deve specificare l'intera sequenza di directory che lo contengono, a partire dalla posizione (path) corrente
38
Il sistema operativo:il file system
Floppy a:
Applicazioni
Biblioteca
Indice
Utenti
Elab_imm
Elab_suoni
Elab_testi
Narrativa-Fra
Narrativa-Ing
Narrativa-Ita
Bianchi
Photoshop.exe
Premiere.exe
Winword.exe
Pautasso
Rossi
libro1libro2libro1libro2libro3libro1libro2libro3
Posizione corrente
39
Il sistema operativo:il file system
Se la posizione corrente è A:\Biblioteca, il file libro1 di narrativa italiana è univocamente identificato dalla sequenza:
Narrativa-Ita\libro1
Se la posizione corrente è A:\Utenti, la directory Pautasso è identificata dalla sequenza:
Pautasso Per raggiungere un determinato file a partire dalla posizione
corrente si utilizza il path relativo
40
Path/directory
pathpath
C
Documenti
Pagine Web …
crash course
desktop.bmp
crashCourse…
vt100.bmp
41
Area di lavoro
DESKTOP
cartellecartelleapplicativi
42
Il sistema operativo:i file I file sono memorizzati su dispositivi di memoria secondaria
(hard disk, floppy, CD) L’utente deve solo preoccuparsi di dare un nome ad un file
(al momento della creazione) ed usarlo per le operazioni da eseguire su di esso
Come dare nomi ai file che si creano?
43
Il sistema operativo:i file Il nome è generalmente composto da due parti:
il nome vero e proprio (si possono usare caratteri alfanumerici in numero dipendente dal S.O.)
l’estensione (una sequenza di caratteri che aiuta ad identificare il tipo di contenuto del file)
nome ed estensione sono separati dal carattere punto (.)
Il nome è obbligatorio mentre l’estensione è opzionale (ma fortemente consigliata)
44
Il sistema operativo:il file system
Per organizzare gerarchicamente i file, il sistema operativo deve fornire all'utente un insieme di operazioni sulle directory, per esempio: creare una nuova directory rimuovere una directory ridenominare una directory elencare il contenuto (l'insieme di file e sotto-directory) di una
directory copiare o spostare i file da una directory ad un'altra
45
PROGRAMMA = RICETTA
George Lakoff: “Metaphors we live by” Per comprendere cio’ che non conosciamo ci si basa su
analogie con cio’ che conosciamo meglio.
46
La prova del cuoco
Programma = elenco di cose da fare per raggiungere il risultato voluto
Come una ricetta di cucina
La prima differenza è il linguaggio:linguaggio naturale, come l’italiano richiede una sorta di senso il senso comune è molto piu' complicato da realizzare in un computer di quanto uno comunemente possa aspettarsi
Per non parlare delle incomprensioni
47
Istruzione (“buttare la pasta”) = comando
Ogni istruzione viene data in una frase e termina con un punto.(i comandi vanno separati uno dall’altro)
punto di partenza: ingredienti = dati in input
dove metto gli ingredienti? contenitori per gli ingredienti (pentole, piatti) = variabili
le variabili sono dei pezzi di memoria centrale (ram)(per i matematici: “x=y”)
tipi di contenitori per diverse categorie di ingredienti = tipi di dati
48
Dati, variabili e tipi di dati
problemi quantitativi e qualitativi
un bicchiere non mi basta per contenere un litro d'acqua(tipi di dati omogenei ma di dimensioni diverse)
la pasta la metto in uno scolapasta ma non posso usare uno scolapasta per metterci dell'acqua
(tipi di dati eterogenei richiedono variabili fatte diversamente)
49
Riempire le variabili
se ho un contenitore l'ingrediente contenuto viene buttato via quando ci metto un altro ingrediente
posso usare un contenitore per contenere solo un ingrediente alla volta: o latte o acqua
se ho un bicchiere di latte e voglio metterci dell'acqua il latte deve essere buttato via.
Quindi se in una variabile metto dentro 1 e poi 2, l’1 viene buttato via se non lo metto prima in un’altra variabile
50
Le variabili hanno un nome
Se ho una pentola con dentro un tacchino posso dire:“mettere la pentola sul fuoco”
Allo stesso modo posso parlare di una variabile per compiere delle operazioni (“chiamare una procedura”) sul dato che è contenuto nella variabile anziche’ ripetere il dato ogni volta
(quindi una variabile dà un nome ad un pezzo di memoria)
51
Operazioni sui dati
Sui dati eseguo operazioni cosi’ come eseguo delle operazioni sugli ingredienti
Due categorie di operazioni: quelle che producono qualcosa di nuovo e quelle che invece non producono niente di nuovo ma modificano comunque il mondo:
Se sbatto uova e olio ottengo la maionese(se sommo 1 e 2 ottengo 3)
Se affetto il roastbeef non produco un ingrediente nuovo(se stampo 1 sul video non ottengo un dato nuovo)
Quando produco un nuovo ingrediente (la maionese o 3) devo metterlo in un contenitore per non perderlo: il nuovo dato prodotto devo metterlo in una variabile (se uso quella vecchia perdo quello che c’era prima)
52
Operazioni su dati diversi
Su ingredienti diversi posso eseguire operazioni diverse cosi’ come servono contenitori diversi
Cosi’ dati di tipo diverso (in qualità e quantità) richiedono tipi di operazioni diverse
Posso affettare il roastbeef ma non un uovo, posso sbattere l’uovo ma non il roastbeef
Alcune operazioni cambiano gli ingredienti: un uovo sodo infatti posso affettarlo (e quindi devo usare un nuovo tipo di contenitore)
Altre operazioni posso farle con tutti gli ingredienti: ad es. scaldare
53
Ricetta = elenco di azioni da compiere
programma sequenza di comandi da eseguire
ma non sempre si procede passo passo in una ricetta: è possibile che si saltino dei passi.
se il burro è freddo riscaldarlo (altrimenti…)
riscaldare il burro non è una istruzione che viene subito eseguita dopo quella che la precede: e' una istruzione condizionale: cioe' viene eseguita solo in certe condizioni
54
condizione: nuova parola da imparare.
fin'ora avevamo solo ingredienti, pentole e operazioni su ingredienti.
una condizione parla degli ingredienti: il burro è freddo.
è freddo è una proprietà degli ingredienti: il burro è freddo o non è freddo
non è una operazione, non produce un nuovo ingrediente.
una proprietà riferita ad un ingrediente è semplicemente vera o falsa (booleani)
ovviamente ingredienti di tipo differente hanno proprietà differenti: il burro è sciolto o no, la farina non è sciolta, le uova possono essere 2 o 3,
lo zucchero è in kg
55
Ripetizioni
è possibile che si debba ripetere la stessa operazione piu' volte
“tagliare a metà i pomodori”: implicitamente vuol dire prendi il primo pomodoro e taglialo, prendi il secondo e taglialo ... prendi il penultimp, prendi l'ultimp...
cicli: una sola istruzione, ma una istruzione che va ripetuta su diversi ingredienti
ma anche: sbattere il bianco d'uovo finche' non è montato a neve non si sa in partenza quante volte lo devo sbattere
mentre nel primo esempio, tagliare i pomodori so quanti pomodori ho e quindi anche quante volte devo ripetere l'operazione.
56
Cicli vs condizioni
“sbattere il bianco d'uovo finche' non è montato a neve” “se il burro è freddo scaldarlo”
in tutti e due i casi abbiamo delle condizioni: nelle istruzioni condizionali abbiamo che l'istruzione viene eseguita se la condizione è vera,
qui invece che l'istruzione viene ripetuta ogni volta che la condizione è vera:
se il bianco d'uovo non è ancora montato a neve sbattilo ancora e da capo
quando la condizione è falsa (è montato a neve) posso andare avanti
anche nel caso dei cicli che si ripetono un numero predeterminato di volte la situazione non cambia: sbuccia le (tre) cipolle:
se c'e' una cipolla non sbucciata sbucciala e da capo
57
Sotto-ricette
prendiamo un libro di ricette di dolci: ci sono 20 torte che utilizzano la crema pasticcera: la ricetta per la crema è ripetuta 20 volte? No, è scritta a parte.
stiamo scrivendo il libro e scopro un errore: ho scritto uovi invece che uova, oppure invento un nuovo modo per fare la crema: devo modificare tutte le 20 differenti ricette di fare la crema
Invece: faccio riferimento ad un’altra ricetta: vi fermate, mettete un segnalibro, mettete sul tavolo solo gli ingredienti che vi servono per quella sottoricetta e andate alla pagina giusta:
prendende 2 uova delle 4 necessarie e fate la crema
Ricetta per la crema: con 2 uova… (quelle di prima, non altre)
58
Gli ingredienti
Numeri interi: …, -2, -1, 0, 1, 2, 3 …. 2.000.000.000 (circa) Numeri interi lunghi: …, -2, -1, 0, 1 … un po’ di piu’… Numeri decimali: -1.23, 0.0, 1.0, 2.3433 ecc Numeri decimali piu’ lunghi (lunghi il doppio)… Pezzi di testo (citazioni “sempre caro mi fu….”) Booleani: vero o falso (valori di verità)
Ma anche ingredienti piu’ complessi che sono il risultato di operazioni: la rollata di tacchino, il tacchino ripieno, ecc.
59
Figura 11Esecuzione del programma Hello in una finestra di console
60
Fondamenti
La sintassi dei costrutti di base (dichiarazioni di variabili, istruzioni di base, ecc.) e` molto simile al linguaggio C
Variabili e loro dichiarazione Controllo del flusso
61
Commenti
Commenti su piu` linee possono essere fatti racchiudendoli tra i simboli /* e */
Commenti su di una sola linea possono essere fatti facendoli precedere dal simbolo //
I commenti non compaiono nel codice eseguibile Esiste anche il commento racchiuso tra /** e */
/* Commento su piu` linee */public class BenvenutoInJava { public static void main(String[] args) { System.out.println("Benvenuto in Java!"); // Commento su una sola linea }}
62
Tipi primitivi
Java e` un linguaggio fortemente tipato, ogni variabile deve avere un tipo dichiarato
Esistono otto tipi primitivi, sei per i tipi di numeri, uno per i caratteri (codifica Unicode) e uno per boolean int (4 byte) - float (4 byte) short (2 byte) - double (8 bytte) long (8 byte) - char byte (1 byte) - boolean
I tipi primitivi non sono oggetti (puntatori) Non dipendono dalla macchina di destinazione
63
Dichiarazione di variabile
identificatore = lettera (lettera | cifra)* lettera e cifra nel senso “Unicode” Lunghezza illimitata Per convenzione si usano nomi che iniziano con una lettera
minuscola L’inizializzazione e` come in C
int variabileIntera;long variabileInteraDi8byte;
double piGrecoApprossimato = 3.1415;boolean flag = false; // o false o true !
Assegnamento
64
Operatori
Operatori aritmetici: + - * / % Assegnamento e operatori aritmetici: += -= *= /= %= (es. a
+= i;) Operatori di incremento (in posizione di prefisso o di
suffisso di una variabile numerica): ++ e -- (es. i++; a=--i;) Operatori relazionali e booleani: == != < > <= >= && || ! Operatori sui bit: & | ^ ~ >> << Parentesi: ( )
65
Controllo del flusso
Le stesse del C/C++ if then if then else while (loop indeterminato) do while (loop indeterminato) for (loop determinato) switch break
66
If Then e If Then Else
if (condizione) istruzione; if (condizione) istruzione; else istruzione; Al posto di un “istruzione;” puo` comparire un blocco di
istruzioni: { sequenza istruzioni }
[…]if (etaPersona > 18) { System.out.println(“Maggiorenne”); System.out.println(“Eta`: “ + etaPersona);}else System.out.println(“Minorenne”);[…]
67
While
while (condizione) { blocco di istruzioni } Si puo` avere anche un’istruzione anziche` un blocco
(quindi conclusa come sempre da ;)
[…] int temp; while (z != w) { if (z < w) { temp = z; z = w; w = temp; } z -= w; } System.out.println(“Massimo Comune Divisore: “ + z);[…]
Calcola il MCDtra I numeri interi z e w
68
Do While
do { blocco istruzioni } while (condizione); esegue il blocco di istruzioni almeno una volta simile al repeat until del Pascal ma “cicla” per vero anziche`
per falso e` usato piu` raramente rispetto al while
[…] int i=0; int x=0; do { x = x * i; //oppure x = * i++; i++; } while (i<10);[…]
69
For
for (iniz.; condizione; step) { istruzioni } Tipicamente utilizzato per la scansione di vettori (array)
[…]for (int i=0; i<n; i++) System.out.println(“Elemento” + i + “ : “ + elemento[i]);[…]
70
Break
Permette di uscire da un loop break; break etichetta;
[…]int i=0;for (i=0; i<n; i++) if (elemento[i] == elementoCercato) break;if (i != n) System.out.println(“Elemento trovato in pos.: “ + i);else System.out.println(“Elemento non trovato”);[…]
71
Break
Il codice precedente senza uso del break il codice e` piu` complicato, ma … … NON ABUSARNE
int i=0;boolean trovato = false;while (i<n && !trovato) { if (elemento[i] == elementoCercato) // oppure i++ trovato = true; i++;}if (trovato) System.out.println(“Elemento trovato in posizione: “ + i);else System.out.println(“Elemento non trovato”);
72
Break Serve per uscire da piu` loop annidati Simile al famigerato “goto”, ma … … NON ABUSARNE
[…]int i; int j;for_esterno:for (i=0; i<n; i++) for (j=0; j<m; j++) if (elemento[i][j] == elementoCercato) break for_esterno;if ((i != n) && (j != m)) System.out.println(“Elemento trovato in: “+i+“ “+j);else System.out.println(“Elemento non trovato”);[…]
73
Swicth
Permette di gestire condizioni di scelta con molte alternative (cascata di if then else)
In Java applicabile solo su valori di tipo char e numerici (ma non long)
swicth (scelta){ case 1: … break; case 2: … break; case 3: … break; … default: … break;}
Senza break si eseguirebberole istruzioni dei casi successivia quello selezionato in cascata
sequenza di istruzioni
74
Array
Gli array sono oggetti veri e propri (e quindi vanno prima creati esplicitamente dal programmatore per essere utilizzati)
Hanno una dimensione fissa (dopo la creazione) Esistono solo unidimensionali (ma e` possibile definire
array di array) Il primo elemento ha indice “0” La creazione avviene mediante l’operatore new Gli elementi di un array possono essere oggetti qualsiasi Libreria Java Collection (Vector, List, Map, ecc.)
75
Array Es.: la dichiarazione di un array che puo` contenere
100 numeri interi Gli elementi saranno indicizzati da 0 a 99 Controllo a run time sul valore dell’indice
int[] arrayOfInt = new int[100];
operatore che permette di creare un oggetto
numero dielementi dell’arraynome dell’array
tipo di un elementodell’array
tipo array
arrayOfInt[5]
indice
76
Array
Il nome dell’array e` un puntatore ad una struttura contenente i vari elementi
ma differenza del C/C++ il nome dell’array non indica anche il primo elemento dell’array stesso (non esiste un’aritmetica dei puntatori)
In Java non esistono analoghi di & e * del C/C++
int array_interi[];int *array_interi;
array_interi[2]*(array_interi + 2)
in C/C++ sono equivalenti
in C/C++ sono equivalenti
77
Array Se assegno un array ad un altro non copio gli elementi che esso
contiene ma semplicemente il valore del puntatore, i due array condivideranno la stessa struttura (esiste pero` arraycopy nella classe System)
length restituisce la lunghezza di un array
int[] arrayOfInt = new int[6];[…]int[] altroArrayOfInt;[…]altroArrayOfInt = arrayOfInt;[…]System.out.println(arrayOfInt.length);
stampa 6
arrayOfInt
altroArrayOfInt
78
Inizializzazione di array
Mediante un loop (tipicamente un ciclo for) oppure durante la definizione stessa array anonimi come parametri attuali
int[] arrayOfInt = new int[100];for (int i=0; i<100; i++) arrayOfInt[i] = i;int[] arrayOfInt = {1, 2, 4, 10}; utile per array con
pochi elementi
new int[] {1, 2, 4, 10} utile per essere passatocome parametro attualedi un metodo senza dovercreare solo per questo unavariabile
[…]a.metodo(new int[] {1, 2, 4, 10});[…]
79
Array multidimensionali
Ossia array di array (ma non matrici!) Ossia un elemento di un array puo` essere a sua volta un
array
int[][] arrayOfArrayOfInt = new int[10][5];
int[][] arrayOfArrayOfInt = new int[10][];for (int i=0; i<10; i++) arrayOfArrayOfInt[i] = new int[5];
int[][] arrayOfArrayOfInt = new int[10][];for (int i=0; i<10; i++) arrayOfArrayOfInt[i] = new int[i];
quadrato dielementi 10 x 5
triangolo di elementi
80
Il metodo toString()
E` il metodo che viene automaticamente richiamato per la conversione di un oggetto in una stringa da stampare
Puo` essere ridefinito per adattarlo alle proprie esigenze
81
Il metodo toString()
public class Counter {public Counter() {
nomeContatore = "Contatore anonimo";}public Counter(int val){
c = val;nomeContatore = "Contatore anonimo";
}public Counter(int val, String nome){
c = val;nomeContatore = nome;
}[…]
public void setName(String nome) {nomeContatore = nome;
}public String toString(){
return ("Valore contatore " + nomeContatore + ": " + c);}private int c;private String nomeContatore;
}
overriding dell’omonimometodo nella classe Object
Un nome al contatore
82
Metodi e Parametri
Il passaggio dei parametri in un metodo avviene solo e sempre per valore
Ad un metodo possono essere passati oggetti come parametri
Attenzione! Gli oggetti sono in pratica puntatori quindi e` il puntatore che viene passato per valore non l’oggetto che rappresenta
Array come parametri (gli array sono oggetti!)
83
PERL
Beginning Perl for Bioinformatics, James Tisdall. Publisher: O'Reilly. First Edition October 2001 ISBN: 0-596-00080-4, 384 pages
Learning Perl. Randal Schwartz, Tom Christiansen & Larry Wall; Publisher: O'Reilly Second Edition, July 1997. ISBN 1-56592-284-0, 302 pages.
Perl in a Nutshell, Ellen Siever, Stephen Spainhour & Nathan Patwardhan; Publisher: O'Reilly First Edition, December 1998.ISBN 1-56592-286-7, 674 pages.
Perl Cookbook. Tom Christiansen & Nathan Torkington; Publisher: O'Reilly First Edition, August 1998. ISBN 1-56592-243-3, 794 pages.
84