84
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

Introduzione

  • 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

Page 1: Introduzione

IntroduzioneProgrammazione in Perl

Guido BoellaDipartimento di InformaticaUniversita` degli Studi di TorinoC.so Svizzera, 185 I-10149 Torino

[email protected]://www.di.unito.it/~guido

Page 2: Introduzione

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)

Page 3: Introduzione

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)

Page 4: Introduzione

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?

??

Page 5: Introduzione

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

Page 6: Introduzione

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

Page 7: Introduzione

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

Page 8: Introduzione

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

Page 9: Introduzione

9

Struttura di un computer

Unità dicontrollo

Unità diuscita

Unità diingresso

Unità logicoaritmetica

Memoriaperiferica

Memoriacentrale (RAM)

PROCESSORE

Page 10: Introduzione

10

Figura 6Diagramma schematico di un personal computer

Page 11: Introduzione

11

Figura 1Unità centrale di elaborazione

Page 12: Introduzione

12

Figura 3Un disco rigido

Page 13: Introduzione

13

Figura 4Una scheda principale(motherboard)

Page 14: Introduzione

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)

Page 15: Introduzione

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

Page 16: Introduzione

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

Page 17: Introduzione

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

Page 18: Introduzione

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

Page 19: Introduzione

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)

Page 20: Introduzione

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

Page 21: Introduzione

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

Page 22: Introduzione

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)

Page 23: Introduzione

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

Page 24: Introduzione

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

Page 25: Introduzione

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)

Page 26: Introduzione

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

Page 27: Introduzione

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

Page 28: Introduzione

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

Page 29: Introduzione

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

Page 30: Introduzione

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)

Page 31: Introduzione

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?

Page 32: Introduzione

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

Page 33: Introduzione

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

Page 34: Introduzione

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

Page 35: Introduzione

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

Page 36: Introduzione

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

Page 37: Introduzione

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

Page 38: Introduzione

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

Page 39: Introduzione

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

Page 40: Introduzione

40

Path/directory

pathpath

C

Documenti

Pagine Web …

crash course

desktop.bmp

crashCourse…

vt100.bmp

Page 41: Introduzione

41

Area di lavoro

DESKTOP

cartellecartelleapplicativi

Page 42: Introduzione

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?

Page 43: Introduzione

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)

Page 44: Introduzione

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

Page 45: Introduzione

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.

Page 46: Introduzione

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

Page 47: Introduzione

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

Page 48: Introduzione

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)

Page 49: Introduzione

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

Page 50: Introduzione

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)

Page 51: Introduzione

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)

Page 52: Introduzione

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

Page 53: Introduzione

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

Page 54: Introduzione

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

Page 55: Introduzione

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.

Page 56: Introduzione

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

Page 57: Introduzione

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)

Page 58: Introduzione

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.

Page 59: Introduzione

59

Figura 11Esecuzione del programma Hello in una finestra di console

Page 60: Introduzione

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

Page 61: Introduzione

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 }}

Page 62: Introduzione

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

Page 63: Introduzione

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

Page 64: Introduzione

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: ( )

Page 65: Introduzione

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

Page 66: Introduzione

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”);[…]

Page 67: Introduzione

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

Page 68: Introduzione

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);[…]

Page 69: Introduzione

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]);[…]

Page 70: Introduzione

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”);[…]

Page 71: Introduzione

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”);

Page 72: Introduzione

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”);[…]

Page 73: Introduzione

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

Page 74: Introduzione

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.)

Page 75: Introduzione

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

Page 76: Introduzione

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

Page 77: Introduzione

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

Page 78: Introduzione

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});[…]

Page 79: Introduzione

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

Page 80: Introduzione

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

Page 81: Introduzione

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

Page 82: Introduzione

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!)

Page 83: Introduzione

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.

Page 84: Introduzione

84