Sei sulla pagina 1di 132

SETTIMANA 1

Fondamenti di Informatica
Presentazione

Informazioni importanti
Sono ammessi a seguire questo corso
Gli studenti iscritti a uno dei corsi di laurea triennale del Settore dell'Informazione
il cui numero di matricola ha le ultime due cifre comprese tra 00 e 24 indipendentemente da
anno di immatricolazione denominazione del corso di laurea eventuale appartenenza a un diverso canale in un anno accademico precedente

Gli studenti iscritti a uno dei suddetti corsi di laurea, privi di numero di matricola

NON sono ammessi a seguire questo corso


Tutti gli studenti che non soddisfano i requisiti precedenti
2

Informazioni importanti
Siti da consultare per informazioni amministrative, tecniche, manifesti degli studi, piani di studio, orari, ecc.
Bacheche DEI: http://moodle.dei.unipd.it
Menu in alto a sinistra: informazioni generali

Sito della facolt di Ingegneria: http://www.ing.unipd.it Sito dell'Aula Didattica Taliercio : http://www.adt.unipd.it
Aula informatica dove si svolgono esercitazioni settimanali

Sito del corso con materiali (slide, esercizi, laboratori...)


Sito del corso su Bacheche DEI
Fondamenti di informatica (TUTTI I CANALI) 11/12 Attenzione: sono ancora presenti i siti del corso degli anni precedenti

Iscrizione a Bacheche DEI


L'accesso a http://moodle.dei.unipd.it necessita di credenziali (login e password personale)
Gli studenti immatricolati nel 2011-2012 devono ottenere le proprie credenziali

Iscrizione di massa a Bacheche DEI


Dipartimento di Ingegneria dell'Informazione (DEI), Via Gradenigo 6/A. Aula Da (edificio "avancorpo DEI" DEI/D) Marted 11 ottobre ore 14.00-17.00 Mercoled 12 ottobre ore 14.00-17.00 Portare il libretto universitario o, in mancanza, un documento di identit valido
eventuali studenti iscritti in modalit "corso singolo" devono portare anche l'attestazione di iscrizione
4

Iscrizione al corso
Per partecipare alle attivit didattiche del corso (lezioni, laboratorio, esame finale) necessario
iscriversi al corso dal sito del corso su Bacheche DEI seguendo le istruzioni riportate nella pagina principale
In particolare: occorre usare la chiave d'accesso canale1 L'iscrizione valida fino al termine delle attivit didattiche dell'anno accademico (22 settembre 2012) e va ripetuta l'anno successivo se l'esame non stato superato.

Solo per le prime 2 settimane


possibile visitare il sito del corso come guest (ospite)
Pulsante Login -> Pulsante Login as guest
5

Docente
Federico Avanzini
Ricercatore Universitario e Prof. Aggregato presso il Dip. Di Ingegneria dell'Informazione Attivit di ricerca nel settore dell'Informatica Musicale (Sound and Music Computing). Per i curiosi:
http://www.dei.unipd.it/~avanzini http://smc.dei.unipd.it

Recapiti
DEI, edificio DEI/G, terzo piano, ufficio 310 Telefono: 049 827 7582 Posta elettronica (meglio!): avanzini@dei.unipd.it

Ricevimento studenti
Solo su appuntamento Da sfruttare!

Frequenza alle lezioni


Regolamento didattico
La frequenza alle lezioni non obbligatoria

Frequenza alle lezioni in aula


Fondamentale

Frequenza alle esercitazioni in laboratorio


Altrettanto fondamentale e vivamente consigliata

Analisi stastica su corsi di anni precedenti


Chi non frequenta i laboratori fa molta pi fatica a superare l'esame
7

Presentazione del corso

Obiettivi del Corso


Il Corso ha lobiettivo di

presentare le basi teoriche dellinformatica proporre un approccio ingegneristico e progettuale alla programmazione fornire una visione professionale alla risoluzione dei problemi utilizzare concretamente le caratteristiche di programmazione del linguaggio Java

Obiettivi formativi
Quanto bisogna studiare
Risposta ovvia: molto Risposta sincera: moltissimo Risposta tecnica: dipende da crediti formativi universitari

Questo un corso da 9 CFU (1 CFU=25 ore di studio)


Ore complessive: 9 x 25=225 di cui
lezione ed esercitazione in aula: 72 laboratorio (spesso assistito da un tutore): 48 studio individuale: 105 (circa 9 ore settimanali)

Lo studio individuale comprende anche pratica al calcolatore (in aggiunta al laboratorio)


10

Programma (1)
Organizzazione di un elaboratore. Unit centrale di elaborazione, memoria centrale, dispositivi di memoria di massa, dispositivi di ingresso e uscita. Il sistema operativo, sommario delle funzioni, processi, multiprogrammazione. Rappresentazione dell'informazione, sistemi di numerazione e conversioni. Linguaggi di programmazione. Esecuzione di un programma tramite compilazione/interpretazione. Macchina virtuale Java. Concetto di algoritmo, introduzione all'analisi degli algoritmi, esemplari di un problema e loro taglie. Misura della complessit: nel caso peggiore e nel caso medio. Notazione asintotica O-grande. Ricorsione, eliminazione della ricorsione.
11

Programma (2)
Strutture di dati e algoritmi, il concetto di tipo di dato astratto, un'interfaccia Java come definizione di un tipo di dato astratto, realizzazione di un tipo di dato astratto mediante una classe. Array, liste, pile e code, realizzazione mediante un array o una catena di celle. Ricerca di un elemento in un array e in una lista. Ricerca per bisezione in un array ordinato. Tabelle, dizionari, semplice realizzazione di un dizionario mediante un array parzialmente riempito o una lista. Algoritmi di ordinamento, ordinamento per selezione, inserzione, mergesort.
12

Programma (3)
Il linguaggio di programmazione Java. Tipi di dati elementari e oggetti, riferimenti, operatori ed espressioni, istruzioni di controllo, classi e interfacce. Campi e metodi di un classe. Introduzione alla programmazione ad oggetti. Polimorfismo ed ereditariet. Operazioni di ingresso e uscita da ingresso e da uscita standard, operazioni di ingresso e uscita da file di testo. Gestione elementare degli errori. Realizzazione di semplici progetti di programmazione nei laboratori didattici
13

Libro di testo e libri consigliati


Libro di testo:
Cay Horstmann, Concetti di informatica e fondamenti di Java, Quinta Edizione, Ed. Apogeo

Per la parte del corso dedicata allo studio delle strutture di dati, i primi 6 capitoli del volume:
M.T.Goodrich, R.Tamassia, "Strutture dati e algoritmi in Java", Ed. Zanichelli, 2007

Unico prerequisito: dimestichezza con l'uso di un PC e concetti di base del suo funzionamento. Testo di consultazione
Maria Rita Lagan, Marco Righi, Francesco Romani: Informatica Concetti e sperimentazioni, 2a edizione, Apogeo, 2007.

14

Esami
Calendario: http://esami.dei.unipd.it
1o appello: 31/01/2012 (pi 2 giorni) 2o appello: 21/02/2012 (pi 2 giorni) 3o appello: 20/06/2012 4o appello: 13/09/2012

Modalit
tre prove da sostenere nello stesso appello prova scritta, prova pratica, prova orale
Ciascuna va superata per accedere alla successiva

Statistiche
Promossi/iscritti al corso: circa 50% Di cui la grande maggioranza nei primi 2 appelli
15

Qualche consiglio (1)


A chi non ha mai avuto a che fare con computer, programmazione, ecc.
Questo corso non ha prerequisiti, chiunque lo pu seguire con profitto fondamentale prendere immediatamente confidenza con i ferri del mestiere
Installare ed usare da subito l'ambiente di programmazione per il linguaggio Java Svolgere con regolarit gli esercizi proposti nei laboratori

16

Qualche consiglio (2)


A chi ha gi una solida esperienza di programmazione
Questo corso non ha lo scopo di formare dei programmatori professionisti
Studieremo anche: ricorsione, algoritmi di ricerca ed ordinamento, analisi della complessit di un algoritmo, tipi di dati astratti

Attenzione quindi a non considerarvi promossi in partenza!

17

Qualche consiglio (3)


A chi non iscritto al corso di laurea in Ingegneria Informatica
Non considerate questo corso come estraneo al vostro indirizzo di studio
I contenuti del corso vi serviranno (si spera)
Nel prosieguo del vostro corso di studi Per la vostra tesi di laurea Nel mondo del lavoro

... Inoltre chi non supera questo corso non si laurea!

18

Presentazione del Laboratorio Didattico

Laboratorio: dove e quando


Aula didattica Taliercio: http://www.adt.unipd.it
Via Venezia, 13

Turni di 4 ore, parte delle quali assistite da Tutor Iscrizione


Iscriversi su apposita lista disponibile sul sito del corso Se gli iscritti sono di pi di 150, si creeranno due turni Gli studenti immatricolati prima del 2011-2012 devono usare il "turno di recupero" (sul sito dell'aula stessa)

Primo laboratorio: mercoled 19 ottobre


Lezione del dott. Roberto Valli su concetti introduttivi: http://www.adt.unipd.it/usoaula/Introduzione/index.php3 Primi semplici esercizi da svolgere. Il contenuto dell'esercitazione sar disponibile sul sito del corso

20

Prendere confidenza con il computer


Per molti di voi il laboratorio didattico di questo corso costituisce il primo approccio al computer I primi passi da compiere per acquisire confidenza con il nuovo strumento di lavoro sono:
accedere al computer (fare log-in) capire i concetti di file e di cartella (directory) scrivere un programma Java individuare il compilatore e linterprete Java compilare un programma Java eseguire programmi

21

Accedere al computer
In un computer di uso personale spesso non necessaria nessuna procedura di accesso Nei computer del laboratorio didattico laccesso invece sempre controllato ed necessario eseguire la procedura di accesso (login) La procedura di accesso dipende dal sistema operativo, ma in generale richiede linserimento di un nome utente (account) e di una password (parola daccesso), che i tecnici di laboratorio consegneranno a ciascuno studente

22

File e directory
Tutte le informazioni presenti in un computer sono memorizzate in file (archivi) nella memoria secondaria Un file ha un nome e un contenuto
Il nome deve rispondere a regole che dipendono dal sistema operativo di solito termina con una estensione, separata da un punto Esempio: Un programma Java deve essere memorizzato in un file con estensione .java (ad esempio: Test.java)

I file sono conservati allinterno di cartelle o directory


Una cartella pu contenere zero o pi file, e zero o pi altre cartelle quindi possibile creare cartelle allinterno di altre cartelle, dando origine ad una struttura gerarchica

23

Concetti introduttivi (Capitolo 1)

Legenda di alcuni simboli grafici


Errori frequenti Accenni ad argomenti che verranno approfonditi in seguito

Consigli per la produttivit Regole di sintassi Java

Suggerimenti per la qualit Argomenti avanzati Note di cronaca

25

Le prime domande
Cos' l'informatica? Cos un computer? Cos un programma? Cos la programmazione? Cos un algoritmo?
26

Un po' di storia: lo sviluppo tecnologico


'600: dispositivi meccanici per effettuare in modo automatico computazioni (Pascal, Leibniz) '800: primi dispositivi meccanici a programma: telai Jacquard, pianole, le macchine di Babbage 1896: Hollerith fonda la Tabulating Machine Company (poi IBM) che produce sistemi meccanografici a schede 1930: prime macchine elettromeccaniche di grandi dimensioni (Zuse in Germania, Mark 1 ad Harvard) 1946: ENIAC, elaboratore a valvole termoioniche e a programma filato 1950: prime macchine a programma memorizzato (von Neumann: ENIAC, IAS Princeton)
27

Un po' di storia: le macchine di Babbage


Babbage (1791-1871) crea i primi computer meccanici
Erano dei mostri meccanici Erano concettualmente molto simili ai computer moderni

La macchina analitica (analytical engine)


programmabile tramite schede perforate Usa un linguaggio di programmazione equivalente a quelli attuali ... non mai stata realizzata
28

Un po' di storia: l'ENIAC


LENIAC (Electronic Numerical Integrator And Computer) fu il primo computer elettronico, realizzato alluniversit di Pennsylvania nel 1946 Occupava una grande stanza ed era costituito da molti armadi con circa 18000 valvole (analoghe ai transistor), parecchie delle quali si bruciavano ogni giorno e dovevano essere sostituite Veniva programmato collegando cavi su appositi pannelli, simili a quelli dei centralini telefonici, ed andava nuovamente programmato in tal modo per ogni specifico problema
29

Un po' di storia: l'ENIAC

30

Un po' di storia: l'ENIAC


Il progetto fu finanziato dalla Marina statunitense per il calcolo di tavole balistiche da usare per la stima della traiettoria di un proiettile in funzione della resistenza del vento, della velocit iniziale e delle condizioni atmosferiche Questo problema richiedeva la soluzione numerica di equazioni differenziali (numerical integrator) Questi calcoli venivano precedentemente svolti da esseri umani, detti computer, letteralmente calcolatori (manuali...) Pi tardi lENIAC venne usato per catalogare i dati del servizio demografico statunitense

31

Un po' di storia: lo sviluppo tecnologico

32

Informatica e Matematica

Hilbert e il formalismo
Alla fine dell'800 la matematica si interroga sui propri fondamenti David Hilbert propone 23 problemi matematici fondamentali, da risolvere nel corso del XX secolo
Il problema della decisione: esiste un procedimento per decidere se una proposizione o meno conseguenza logica di altre? Hilbert fiducioso: in matematica non esiste l'Ignorabimus!

David Hilbert (1862-1943)

34

Turing, Church, e la teoria degli algoritmi


Alan Turing e Alonzo Church dimostrano (~1936) che tale procedura non esiste!
Esistono proposizioni indecidibili

Viene introdotto il concetto di algoritmo


Una sequenza di operazioni elementari che compongono una procedura di calcolo
Alan Turing (1912-1954)

Viene inventata la macchina di Turing


Un computer immaginario Una macchina universale, in grado di calcolare ogni funzione calcolabile

35

Turing, Church e la teoria della complessit


Tra le proposizioni decidibili o funzioni calcolabili o problemi risolubili alcune sono pi facili di altre
Esistono diverse classi di complessit, corrispondenti al tempo necessario per risolvere i problemi Alcuni problemi non sono risolubili in pratica, perch possono essere risolti solo in tempi immensi (miliardi di anni)
36

Alonzo Church (1903-1995)

Chomsky e i linguaggi formali


Nel '900 linguisti e matematici cercano di formulare un approccio strutturale allo studio del linguaggio
Linguaggi formali: definiti da insiemi di produzioni grammaticali che li generano
Noam Chomsky (1928)

Chomsky identifica quattro tipi di linguaggi formali, caratterizzati da diverse grammatiche


Universali, sensibili al contesto, liberi da contesto, regolari Servono a classificare linguaggi informatici e automi
37

Shannon e la teoria dell'informazione


Pone basi teoriche per la progettazione di circuiti digitali (reti logiche)
Costituiti da bit (binary digit), variabili che assumono solamente i valori 0 e 1
Claude Shannon (1916-2001)

Fonda la teoria dell'informazione


Problema di ricostruire in maniera affidabile informazioni trasmesse da un mittente e affette da rumore Teoria alla base della costruzione di reti di calcolatori

38

Cos un computer? Cos' un programma? Cos la programmazione?

Cos un computer
Un computer una macchina che
memorizza dati (numeri, parole, immagini, suoni...) interagisce con dispositivi (schermo, tastiera, mouse...) esegue programmi

Ogni programma svolge una diversa funzione, anche complessa


impaginare testi o giocare a scacchi I programmi sono sequenze di istruzioni che il computer esegue e di decisioni che il computer prende per svolgere una certa attivit

40

Cos' un programma?
Nonostante i programmi siano molto sofisticati e svolgano funzioni molto complesse, le istruzioni di cui sono composti sono molto elementari, ad esempio
estrarre un numero da una posizione della memoria sommare due numeri inviare la lettera A alla stampante accendere un punto rosso in una data posizione dello schermo se un dato negativo, proseguire il programma da una certa istruzione anzich dalla successiva (decisione) Lelevatissimo numero di tali istruzioni presenti in un programma e la loro esecuzione ad altissima velocit garantisce lillusione di una interazione fluida che viene percepita dallutente
41

Cos' la programmazione?
Un programma descrive al computer, in estremo dettaglio, la sequenza di passi necessari per svolgere un particolare compito Lattivit di progettare e realizzare un programma detta programmazione Scopo di questo corso fornire la competenza per scrivere semplici programmi usando il linguaggio di programmazione Java

42

Cos la programmazione?
Usare un computer non richiede alcuna attivit di programmazione
cos come per guidare un automobile non necessario essere un meccanico

Al contrario, un informatico professionista solitamente svolge una intensa attivit di programmazione, anche se la programmazione non lunica competenza che deve avere La programmazione una parte importante dellinformatica, ed unattivit che in genere affascina gli studenti e li motiva allo studio
43

Cos un algoritmo?

Cos un algoritmo?
Quale tipo di problemi possibile risolvere con un computer?
Dato un insieme di fotografie di paesaggi, qual il paesaggio pi rilassante? Avendo depositato ventimila euro in un conto bancario che produce il 5% di interessi allanno, capitalizzati annualmente, quanti anni occorrono affinch il saldo del conto arrivi al doppio della cifra iniziale?

Il primo problema non pu essere risolto dal computer. Perch?

45

Cos un algoritmo?
Il primo problema non pu essere risolto dal computer perch non esiste una definizione di paesaggio rilassante che possa essere usata per confrontare in modo univoco due paesaggi diversi Un computer pu risolvere soltanto problemi che potrebbero essere risolti anche manualmente
solo molto pi veloce, non si annoia, non fa errori

Il secondo problema certamente risolvibile manualmente, facendo un po di calcoli...

46

Cos' un algoritmo?
Si dice algoritmo la descrizione di un metodo di soluzione di un problema che
sia eseguibile (sequenza di passi eseguibili) sia priva di ambiguit arrivi a una conclusione con un numero finito di passi

Un computer pu risolvere soltanto i problemi per i quali sia noto un algoritmo Etimologia
Muammad ibn Ms al-Khwrizm (c. 780 c. 850) Matematico, astronomo, geografo persiano
47

Un esempio di algoritmo
Problema: Avendo depositato 20000 in un conto bancario che
produce il 5% di interessi allanno, capitalizzati annualmente, quanti anni occorrono affinch il saldo arrivi al doppio della cifra iniziale?
Algoritmo:
1.Anno attuale 0 e saldo attuale 20000 2.Ripetere i successivi passi 3 e 4 finch il saldo minore di 40000, poi passare al punto 5 3.Aggiungere 1 al valore dellanno attuale 4.Il nuovo saldo attuale il valore del saldo attuale moltiplicato per 1.05 (aggiungiamo il 5%) 5.Il risultato il valore dellanno attuale

anni
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

saldo
20.000,00 21.000,00 22.050,00 23.152,50 24.310,13 25.525,63 26.801,91 28.142,01 29.549,11 31.026,56 32.577,89 34.206,79 35.917,13 37.712,98 39.598,63 41.578,56
48

Un esempio di algoritmo
Il metodo di soluzione proposto
non ambiguo, perch fornisce precise istruzioni su cosa bisogna fare ad ogni passaggio e su quale deve essere il passaggio successivo eseguibile, perch ciascun passaggio pu essere eseguito concretamente (se, ad esempio, il metodo di soluzione dicesse che il tasso di interesse da usare al punto 4 variabile in dipendenza da fattori economici futuri, il metodo non sarebbe eseguibile) arriva a conclusione in un tempo finito, perch ad ogni passo il saldo aumenta di almeno mille euro, quindi al massimo in 20 passi arriva al termine

49

Diagrammi di flusso
Semplici algoritmi sono spesso rappresentati graficamente per mezzo di diagrammi di flusso. Simboli usati:
Inizio/fine dell'algoritmo Passo

vero

falso

Decisione Arco di flusso del controllo


50

Esempio di diagramma di flusso


inizio anno = 0 saldo = 20000 falso saldo < 40000? Il risultato il valore dellanno

vero

incrementa anno

incrementa saldo

fine

51

A cosa servono gli algoritmi


Lidentificazione di un algoritmo un requisito indispensabile per risolvere un problema (con il computer o senza) La scrittura di un programma per risolvere un problema consiste, in genere, nella traduzione di un algoritmo in un qualche linguaggio di programmazione
Prima di scrivere un programma, necessario individuare e descrivere un algoritmo

La definizione di algoritmi e la misura della loro efficienza una parte importante dellinformatica (e anche di questo corso).

52

Architettura di un computer: il modello di von Neumann

L'architettura di un computer
Per capire i meccanismi di base della programmazione necessario conoscere gli elementi hardware (fisici) che costituiscono un computer La grande maggioranza degli elaboratori odierni ha unarchitettura che pu essere ricondotta (pi o meno facilmente) ad uno stesso modello
Server, personal computer, laptop, tablet, smartphone,... le eccezioni pi importanti sono alcune macchine ad elaborazione parallela

54

Diagramma schematico di un PC

55

Il modello di John von Neumann


Primo documento che descrive una macchina elettronica nella cui memoria vengono registrati dati e programma:

Larchitettura dei moderni processori molto simile a quella descritta nel documento, sono quindi dette Macchine di von Neumann

John von Neumann, First draft of a report on the EDVAC, Moore School of Electrical Engineering, University of Pennsylvania, June John von Neumann 30, 1945 (1903-1957)

56

Il modello di John von Neumann


Larchitettura di von Neumann composta da quattro blocchi comunicanti tra loro per mezzo di un bus, un canale di scambio di informazioni

CPU

Memoria principale

Memoria secondaria

Dispositivi di Input e di Output

Bus
57

Il bus nel modello di von Neumann


Il bus in realt costituito da tre bus distinti
bus dei dati bus degli indirizzi bus dei segnali di controllo

Sul bus dei dati viaggiano dati da e verso la CPU Sugli altri bus viaggiano indirizzi e segnali di controllo che provengono soltanto dalla CPU
CPU
Memoria principale Memoria secondaria Dispositivi di Input e di Output

Bus
58

Lunit centrale di elaborazione


Lunit centrale di elaborazione (CPU, Central Processing Unit) il cuore del computer
individua ed esegue le istruzioni del programma effettua elaborazioni aritmetiche e logiche con la sua unit logico-aritmetica (ALU, Arithmetic-Logic Unit) reperisce i dati dalla memoria esterna e da altri dispositivi periferici e ve li rispedisce dopo averli elaborati costituita da uno o pi chip (microprocessori)

59

Il chip della CPU


Un chip, o circuito integrato, un componente elettronico con connettori metallici esterni (pin) e collegamenti interni (wire), costituito principalmente di silicio e alloggiato in un contenitore plastico o ceramico (package) I collegamenti interni di un chip sono molto complicati; ad esempio, il chip Power 7 di IBM (2010) composto 8 processori, ciascuno capace di 4 thread, ed costituito da 1,2 miliardi di transistor tra loro interconnessi

60

Lunit centrale di elaborazione


Dal punto di vista logico, la CPU costituita da tre parti principali
lunit logico-aritmetica (ALU), che esegue operazioni aritmetiche (addizioni, sottrazioni, moltiplicazioni, divisioni) e logiche. lunit di controllo, che ne governa il funzionamento un insieme di registri, che sono spazi ad accesso molto veloce per la memorizzazione temporanea di dati e istruzioni da eseguire

Il funzionamento della CPU ciclico ed il periodo di tale ciclo viene scandito dallorologio di sistema (clock), che produce un segnale periodico
61

Il segnale di clock nella CPU


La frequenza del clock, costituisce una delle caratteristiche tecniche pi importanti della CPU si misura in cicli al secondo o Hz (Hertz)
Ad esempio f = 3 GHz (gigaHz), 3x109 = 3 miliardi di cicli al secondo

f = 1/ si dice periodo segnale periodico: f(t) = f(t + )


t

62

Ciclo di funzionamento della CPU


Ogni ciclo di funzionamento composto da tre fasi
accesso (fetch): lettura dellistruzione da eseguire e sua memorizzazione nel registro istruzione decodifica (decode): decodifica dellistruzione da eseguire esecuzione (execute): esecuzione dellistruzione

Si parla di ciclo fetch-decode-execute La posizione dellistruzione a cui si accede durante la fase di fetch contenuta in un registro speciale detto contatore di programma (program counter, PC)
viene incrementato di ununit ad ogni ciclo, in modo da eseguire istruzioni in sequenza
63

La memoria del computer


Ci sono due tipi di memoria: primaria e secondaria Entrambe servono ad immagazzinare dati e programmi allinterno del computer, con ruoli diversi La memoria suddivisa in celle o locazioni di memoria, ognuna delle quali ha un indirizzo Ogni cella contiene un numero predefinito di bit
un bit un dato elementare che pu assumere due valori, convenzionalmente chiamati zero e uno un insieme di otto bit si chiama byte ed di norma lunit di misura della memoria (ad es. 2 Gbyte), nonch l'unit minima di memoria accessibile singolarmente.
64

Bit, Unit di Misura e Byte


La parola bit pu avere diversi significati:
Il bit lunit di misura dellinformazione bit = binary digit, una cifra in un sistema di numerazione in base 2 ad esempio: un numero binario di 32 bit bit = dispositivo bistabile che memorizza un simbolo di un alfabeto binario ad esempio: un registro di 12 bit

Unit di misura della memoria


Nel Sistema Internazionale (SI) e nel senso comune
k=103=1000, M=106=1000000, G=109=1000000000

Per IEC/ISO (International Electrotechnical Committee)


ki (kibi) =210=1024, Mi (Mebi)=220 =1 048 576 Gi (Gibi) = 230=1 073 741 824

Quindi: 1 Gbyte = 109 byte, Gibyte = 230 byte

65

La memoria primaria (o centrale)


La memoria primaria veloce ma costosa costituita da chip di memoria realizzati con la stessa tecnologia (al silicio) utilizzata per la CPU
memoria di sola lettura (ROM, Read-Only Memory) memoria ad accesso casuale (RAM, Random Access Memory)
dovrebbe chiamarsi memoria di lettura e scrittura, perch in realt anche la ROM ad accesso casuale, mentre ci che le distingue la possibilit di scrivervi accesso casuale significa che il tempo per accedere ad un dato non dipende dalla sua posizione nella memoria

66

La memoria ROM
La memoria di sola lettura, ROM
conserva i dati ed i programmi in essa memorizzati anche quando il computer viene spento
una memoria non volatile

Viene scritta una volta sola direttamente alla fabbricazione (distribuzione di firmware) contiene i programmi necessari allavvio del computer, programmi che devono essere sempre disponibili
nei PC, tali programmi prendono il nome di BIOS (Basic Input/Output System)

Alla categoria delle ROM appartengono anche


PROM (Programmable ROM) con dispositivo speciale EPROM (Erasable PROM) con raggi ultravioletti EEPROM (Electrical EPROM) multiple scritture

67

La memoria RAM
La memoria ad accesso casuale, RAM
una memoria che consente la lettura e la scrittura dei dati e dei programmi in essa contenuti contiene dati in fase di modifica e programmi che non devono essere sempre disponibili perde i dati quando si spegne il computer
una memoria volatile

Esistono vari tipi di RAM, che differiscono per tecnologie costruttive, costi, prestazioni, ...
SRAM Static RAM DRAM Dynamic RAM SDRAM Syncronous DRAM ...

68

La memoria secondaria (o di massa)


La memoria secondaria
un supporto di memoria non volatile circa 100 volte meno costosa della memoria primaria (circa 0.2 *10-9 /byte contro 25*10-9 /byte) molto pi lenta (tempi di accesso in lettura/scrittura) della memoria primaria

Programmi e dati risiedono nella memoria secondaria e vengono caricati nella RAM quando necessario, per poi tornarvi aggiornati se e quando necessario di solito un disco rigido (o disco fisso, hard disk)
Formato da piatti rotanti rivestiti di materiale magnetico, con testine di lettura/scrittura Attuali dimensioni: Terabyte (tebybite, ovvero 1040 byte)
69

La memoria secondaria
Altri tipi di memoria secondaria molto diffusi
a tecnologia ottica
CD-ROM (Compact Disc Read-Only Memory), letto da un dispositivo laser, come un CD audio; capacit ~700 Mb; supporto di sola lettura CD-R (Compact Disc Recordable), utilizza tecnologia simile al CD-ROM ma pu essere scritto dallutente (una volta; pi volte se CD-RW) DVD, (Digital Versatile Disk) e Blue-Ray, elevata capacit.

Tape (nastri per dati), elevata capacit, economici ma molto lenti


laccesso ai dati sequenziale anzich casuale (bisogna avvolgere o svolgere un nastro invece che spostare la testina di lettura sulla superficie di un disco)
70

La memoria secondaria
Memoria flash in rapidissima diffusione
Permanente e riscrivibile (EEPROM), organizzata a blocchi Priva di parti mobili, resistente a sollecitazioni ed urti, Leggera e piccola, indicata per la trasportabilit (fotocamere digitali, lettori di musica, cellulari, ecc.) Possibile sostituto per hard disk di computer portatili

Controindicazioni
Costi alti, anche se in costante diminuzione con il progredire della tecnologia Numero di scritture possibile alto ma limitato (ad es. 100000)
71

Dispositivi di ingresso/uscita
Linterazione fra lutente umano ed il computer avviene mediante i cosiddetti dispositivi periferici di Input/Output (dispositivi di I/O)
Tradizionali dispositivi di input sono la tastiera, il mouse (dispositivo di puntamento), il microfono (per impartire comandi vocali), il joystick (per i giochi), lo scanner (per la scansione digitale di documenti e immagini) Tradizionali dispositivi di output sono lo schermo (monitor), le stampanti, gli altoparlanti

72

Dispositivi di ingresso/uscita
Importante dispositivo di I/O: connessione ad una rete per scambiare dati con sistemi remoti
pu essere diretta (ad alta velocit), tramite una rete locale, o remota (a velocit pi bassa), tramite una linea telefonica e un modem, via radio (senza fili o wireless)

Nuovi dispositivi di input/output multimodale


Touchscreen, accelerometri, sensori di luce, giroscopi, output tattile (buzz), ...
73

La scheda madre di un PC
La scheda madre (mother-board) contiene la CPU, la memoria primaria, il bus e gli alloggiamenti (slot) di espansione per il controllo delle periferiche

CPU

slot RAM

74

tutto chiaro? 1. Dove viene memorizzato un programma che non


sia attualmente in esecuzione? 2. Quale parte del computer esegue le operazioni aritmetiche, come addizioni e moltiplicazioni?

Programmazione in codice macchina

Le istruzioni macchina
Le istruzioni elementari eseguite da un computer (cio dalla sua CPU) si chiamano istruzioni macchina Linsieme di istruzioni macchina (instruction set) specifico di una particolare CPU: quello di un Pentium diverso da quello di uno SPARC
La CPU un interprete dell'instruction set della CPU stessa

Una particolare CPU la cosiddetta macchina virtuale Java (JVM, Java Virtual Machine)

la JVM non una vera CPU ma per il momento possiamo considerarla tale
77

Le istruzioni macchina
Esempio di alcune istruzioni macchina:

carica in un registro il valore contenuto nella posizione di memoria 40 carica in un altro registro il valore 100 se il primo valore maggiore del secondo, prosegui con listruzione contenuta nella posizione di memoria 240, altrimenti con listruzione che segue quella attuale
La codifica delle istruzioni macchina avviene sotto forma di configurazioni di bit conservate in memoria (che possono essere interpretate come numeri interi) Le precedenti istruzioni per la JVM diventano

21 40 16 100 163 240


78

Le istruzioni macchina
In tutte le CPU, le istruzioni macchina si possono suddividere nelle seguenti categorie (i nomi delle istruzioni sono solo degli esempi)
trasferimento dati, tra registri e memoria principale
LOAD (verso un registro), STORE (verso la memoria)

operazioni aritmetiche e logiche, eseguite dalla ALU


aritmetiche: ADD, SUB, MUL, DIV logiche: AND, OR, NOT

salti, per alterare il flusso di esecuzione sequenziale (viene modificato il Program Counter)
incondizionato (JUMP): salta in ogni caso condizionato: salta solo se un certo valore zero (JZ) o se maggiore di zero (JGZ)
79

Le istruzioni macchina
Per eseguire un programma in un computer necessario scrivere allinterno della memoria primaria le configurazioni di bit corrispondenti alle istruzioni macchina del programma Per fare ci necessario conoscere tutti i codici numerici delle istruzioni macchina
21 40 16 100 163 240 ...

Questa operazione lunga e noiosa (che veniva eseguita agli albori dellinformatica) stata presto automatizzata da un programma in esecuzione sul computer stesso, detto assemblatore (assembler)

80

Programmazione con assembler

Lassemblatore
Utilizzando lassemblatore, il programmatore scrive il programma mediante dei nomi abbreviati (codici mnemonici ) per le istruzioni macchina, molto pi facili da ricordare
esempio precedente per la JVM
iload 40 bipush 100 if_icmpgt 240

Luso di nomi abbreviati assai pi agevole, ed il programma assemblatore si occupa poi di tradurre il programma in configurazioni di bit Tali linguaggi con codici mnemonici si dicono linguaggi assembly (uno diverso per ogni CPU)
82

Lassemblatore
Unaltra caratteristica molto utile dellassemblatore quella di poter assegnare dei nomi agli indirizzi di memoria e ai valori numerici e di usarli nelle istruzioni
iload rate bipush maxRate if_icmpgt tooMuch

In questo modo il programma molto pi leggibile, perch viene evidenziato il significato degli indirizzi di memoria e dei valori numerici C' corrispondenza biunivoca fra insieme di istruzioni assembly e instruction set del processore
83

L'assemblatore
codice assembly (file)
... iload rate bipush maxRate if_icmpgt tooMuch ...

programma assemblatore

codice eseguibile (file)


... 21 40 16 100 163 240 ...

programma assemblatore

Il programma assemblatore traduce istruzioni assembly in istruzioni macchina (corrispondenza biunivoca) Il programma assemblatore riceve in ingresso un file contenente codice in linguaggio assembly e produce in uscita un file contenente istruzioni macchina.
84

I linguaggi assembly
Vantaggio: rappresentarono un grosso passo avanti rispetto alla programmazione in linguaggio macchina Problema: occorrono molte istruzioni per eseguire anche le operazioni pi semplici Problema: la sequenza di istruzioni di uno stesso programma cambia al cambiare della CPU

molto costoso scrivere programmi che possano funzionare su diverse CPU, perch praticamente bisogna riscriverli completamente
85

Linguaggi di programmazione ad alto livello

Linguaggi ad alto livello


Negli anni 50 furono inventati i primi linguaggi di programmazione ad alto livello FORTRAN: primo vero linguaggio
BASIC, COBOL

Anni 60 e 70: programmazione strutturata


Pascal (Niklaus Wirth, 1968) C ( Brian Kernigham e Dennis Ritchie, 1970-75)

Anni 80 e 90, programmazione orientata agli oggetti


C++ ( Bjarne Stroustrup, 1979) Java (James Gosling e Patrick Naughton, 1991)

Il programmatore esprime la sequenza di operazioni da compiere, senza scendere al livello di dettaglio delle istruzioni macchina if (rate > 100)
System.out.print("Troppo");
87

Linguaggi ad alto livello


Un programma, detto compilatore, legge il programma in linguaggio ad alto livello e genera il corrispondente programma nel linguaggio macchina di una certa CPU I linguaggi ad alto livello sono indipendenti dalla CPU
ma il prodotto della compilazione (codice eseguibile), non indipendente dalla CPU occorre compilare il programma con un diverso compilatore per ogni CPU sulla quale lo si vuole eseguire

Si dice codice sorgente il codice scritto in un linguaggio ad alto livello Si dice codice eseguibile il codice scritto nel linguaggio macchina
88

Compilatore
programma compilatore per CPU di tipo A codice sorgente (file) programma compilatore per CPU di tipo B codice eseguibile per la CPU di tipo B (file) codice eseguibile per la CPU di tipo A (file)

Il compilatore traduce codice in linguaggio ad alto livello in codice eseguibile di uno specifico processore
riceve in ingresso un file contenente codice in linguaggio ad alto livello e produce in uscita un file contenente codice eseguibile di uno specifico compilatore

Lo stesso codice sorgente pu essere tradotto in codice eseguibile di processori diversi, con compilatori diversi 89

Linguaggi ad alto livello


Esistono molti linguaggi di programmazione ad alto livello, cos come esistono molte lingue Lesempio seguente in linguaggio Java
if (rate > 100) System.out.print("Troppo");

e questo lequivalente in linguaggio Pascal


if rate > 100 then write ('Troppo');

La sintassi di un linguaggio viene scelta dai progettisti del linguaggio stesso, come compromesso fra leggibilit, facilit di compilazione e coerenza con altri linguaggi

90

Linguaggi ad alto livello


I linguaggi di programmazione, creati dalluomo, hanno una sintassi molto pi rigida di quella dei linguaggi naturali, per agevolare il compilatore Il compilatore segnala gli errori di sintassi
if (rate > 100)) System.out.print("Troppo"); C' una parentesi chiusa di troppo

e non tenta di capire, come farebbe un utente umano, perch sarebbe molto difficile verificare le intuizioni del compilatore
meglio la segnalazione di errori!
91

Il linguaggio di programmazione Java

Il linguaggio Java
Nato nel 1991 in Sun Microsystems, da un gruppo di progettisti guidato da Gosling e Naughton
... che consumarono molto caff durante la progettazione del linguaggio

Progettato per essere semplice e indipendente dalla CPU (o, come anche si dice, dallhardware, dalla piattaforma o dallarchitettura) Il primo prodotto del progetto Java fu un browser, HotJava, presentato nel 1994, che poteva scaricare programmi (detti applet) da un server ed eseguirli sul computer dellutente, indipendentemente dalla sua piattaforma
93

Il linguaggio Java
Il linguaggio Java stato adottato da moltissimi programmatori perch
pi semplice del suo diretto concorrente, C++ consente di scrivere e compilare una volta ed eseguire dovunque (cio su tutte le piattaforme) compile once, execute everywhere ha una ricchissima libreria standard che mette a disposizione dei programmatori un insieme vastissimo di funzionalit standard, indipendenti anche dal sistema operativo

94

Il linguaggio Java per gli studenti


Dato che Java non stato progettato per la didattica

non molto semplice scrivere programmi Java molto semplici!


Anche per scrivere programmi molto semplici necessario conoscere parecchi dettagli tecnici, un potenziale problema nelle prime lezioni Adotteremo lo stile didattico di usare alcuni costrutti sintattici senza spiegarli o approfondirli, rimandando tali fasi al seguito

95

Java Development Kit (JDK)


Da scaricare ed installare sul vostro PC!
Seguire le istruzioni sul sito del corso

96

Le fasi della programmazione

Le fasi della programmazione


Lattivit di programmazione si esegue in tre fasi
scrittura del programma (codice sorgente) compilazione del codice sorgente
creazione del codice eseguibile (codice macchina)

esecuzione del programma

Per scrivere il codice sorgente si usa un editor di testo, salvando (memorizzando) il codice in un file

HelloTester.java
98

Individuare il compilatore Java


Il modo di utilizzo del compilatore Java dipende dal sistema operativo
si seleziona con il mouse unicona sullo schermo si seleziona una voce in un menu di comandi si compone il nome di un comando sulla tastiera si utilizza un ambiente integrato per lo sviluppo software (IDE, Integrated Development Environment)

Nel nostro corso useremo i comandi da tastiera del JDK (Java Development Kit) di Sun Microsystems

99

La compilazione del sorgente


Compilando il codice sorgente di un programma (gli enunciati in linguaggio Java) si ottiene un particolare formato di codice eseguibile, detto bytecode, che codice macchina per la Java Virtual Machine (JVM)
L'istruzione javac HelloTester.java genera il file HelloTester.class

Quindi il bytecode non codice direttamente eseguibile, dato che la JVM non esiste Il file con il codice bytecode contiene una traduzione delle istruzioni del programma
100

Lesecuzione del programma


Per eseguire un programma si usa linterprete Java, un programma eseguibile sul computer dellutente che
carica in memoria principale (RAM) il bytecode del programma (HelloTester) avvia il programma carica successivamente altri file di bytecode che sono eventualmente necessarie durante lesecuzione (ad esempio dalla libreria standard) traduce al volo le istruzioni del bytecode in istruzioni macchina della CPU reale (che esegue il codice)

L'istruzione
java HelloTester esegue il programma HelloTester
101

La Java Virtual Machine

bytecode

CPU virtuale (JVM) Interprete Java codice macchina CPU reale

102

La libreria di classi standard


Per scrivere sullo standard output necessario interagire con il sistema operativo, unoperazione di basso livello che richiede conoscenze specifiche Queste operazioni, per chi utilizza il linguaggio Java, sono state gi realizzate dagli autori del linguaggio (Sun Microsystems), che hanno scritto delle classi apposite (ad esempio, System) Il bytecode di queste classi si trova allinterno di librerie standard, che sono raccolte di classi Non necessario avere a disposizione il codice sorgente di queste classi, n capirlo! Comodo...
103

Il processo di programmazione in Java


codice sorgente compilatore file di bytecode librerie

interprete

JDK - Java Development Kit


programma in esecuzione

104

Compilatore e/o interprete


Per passare dalla scrittura del file sorgente in linguaggio Java allesecuzione del programma su una particolare CPU, si usano il compilatore e linterprete Con la maggior parte degli altri linguaggi di programmazione ad alto livello, invece, si usa soltanto il compilatore oppure soltanto linterprete
con linguaggi compilati come Pascal, C e C++, si usa il compilatore per creare un file eseguibile, contenente codice macchina, a partire da file sorgenti (con leventuale ausilio di un caricatore, loader, che interagisce con una libreria) con linguaggi interpretati come BASIC e PERL, linterprete traduce al volo il file sorgente in codice eseguibile e lo esegue, senza creare un file eseguibile
105

Il processo di programmazione
codice sorgente

librerie

codice sorgente

compilatore

file di bytecode

librerie

compilatore (caricatore)

codice sorgente

librerie

interprete

file eseguibile

interprete

programma in esecuzione

programma in esecuzione

linguaggi compilati

programma in esecuzione

linguaggio Java

linguaggi interpretati

106

Compilatore e/o interprete


Il fatto che un linguaggio sia compilato o interpretato influisce fortemente su quanto
facile eseguire lo stesso programma su computer aventi diverse CPU (portabilit) veloce lesecuzione di un programma (efficienza)

Entrambi questi aspetti sono molto importanti nella fase di scelta di un linguaggio di programmazione da utilizzare in un progetto Il linguaggio Java, da questo punto di vista, un linguaggio misto, essendo sia compilato sia interpretato, in fasi diverse
107

Portabilit
I programmi scritti in un linguaggio interpretato sono portabili I programmi scritti in un linguaggio compilato
sono portabili a livello di file sorgente, ma necessario compilare il programma su ogni diversa CPU non sono portabili a livello di file eseguibile, perch esso contiene codice macchina per una particolare CPU

I programmi scritti in linguaggio Java sono portabili, oltre che a livello di file sorgente, anche ad un livello intermedio, il livello del bytecode
possono essere compilati una sola volta ed eseguiti da interpreti diversi su diverse CPU
108

Efficienza
I programmi scritti in un linguaggio interpretato sono poco efficienti
lintero processo di traduzione in linguaggio macchina deve essere svolto ad ogni esecuzione

I programmi scritti in un linguaggio compilato sono molto efficienti


lintero processo di traduzione in linguaggio macchina viene svolto prima dellesecuzione, una volta per tutte

I programmi scritti in linguaggio Java hanno unefficienza intermedia


parte del processo di traduzione viene svolto una volta per tutte (dal compilatore) e parte viene svolto ad ogni esecuzione (dallinterprete)
109

Portabilit ed efficienza
Se si vuole soltanto la portabilit, i linguaggi interpretati sono la scelta migliore Se si vuole soltanto lefficienza, i linguaggi compilati sono la scelta migliore Se si vogliono perseguire entrambi gli obiettivi, come quasi sempre succede, il linguaggio Java pu essere la scelta vincente

110

tutto chiaro? 1. Quali sono i due principali vantaggi del

linguaggio Java? 2. Quanto tempo occorre per imparare ad utilizzare lintera libreria di Java?

Compilare un semplice programma

Il nostro primo programma Java


Tradizionalmente, il primo programma che si scrive quando si impara un linguaggio di programmazione ha il compito di visualizzare sullo schermo un semplice saluto

Hello, World!
Scriviamo il programma nel file

HelloTester.java
usando un editor di testi

113

Il nostro primo programma Java


public class HelloTester { public static void main(String[] args) { // visualizza un messaggio sullo schermo System.out.println("Hello, World!"); } }

Occorre fare molta attenzione


il testo va inserito esattamente come presentato (per ora...) maiuscole e minuscole sono considerate distinte il file deve chiamarsi HelloTester.java
114

Il nostro primo programma Java


A questo punto compiliamo il programma
javac HelloTester.java

ed il compilatore genera il file HelloTester.class Ora eseguiamo il programma


java HelloTester

ottenendo la visualizzazione del messaggio di saluto sullo schermo

Hello, World!
115

Analisi del nostro primo programma in Java

Analisi di HelloTester: classi


La prima riga
public class HelloTester

definisce una nuova classe Le classi sono fabbriche di oggetti e rappresentano un concetto fondamentale in Java, che un linguaggio di programmazione orientato agli oggetti (OOP, Object-Oriented Programming) Per il momento, consideriamo gli oggetti come elementi da manipolare in un programma Java

117

Analisi di HelloTester: classi


La parola chiave public indica che la classe HelloTester pu essere utilizzata da tutti (in seguito vedremo private)
public class HelloTester

Una parola chiave una parola riservata del linguaggio che va scritta esattamente cos com e che non pu essere usata per altri scopi La parola chiave class indica che inizia la definizione di una classe Ciascun file sorgente (parte di un programma Java) pu contenere una sola classe pubblica, il cui nome deve coincidere con il nome del file
118

Le parole chiave di Java


Cfr. Appendice C abstract assert boolean break byte case catch char class const continue default do double else enum extends final finally float for if goto implements import instanceof int interface long native new package private protected public return short static strictfp super switch synchronized this throw throws transient try void volatile while
119

Analisi di HelloTester: metodi


Per ora non usiamo le classi come fabbriche di oggetti, ma come contenitori di metodi

Un metodo serve a definire una sequenza di istruzioni o enunciati che descrive come svolgere un determinato compito (in altri linguaggi i metodi si chiamano funzioni o procedure) Un metodo deve essere inserito in una classe, quindi le classi rappresentano il meccanismo principale per lorganizzazione dei programmi
120

Analisi di HelloTester: metodi


La costruzione
public static void main(String[] args) { ... }

definisce il metodo main (principale) Unapplicazione Java deve avere un metodo main Anche qui, public significa utilizzabile da tutti Invece, static significa che il metodo main non esamina e non modifica gli oggetti della classe HelloTester a cui appartiene

121

Sintassi: programma semplice


Sintassi:
public class NomeClasse { public static void main(String[] args) { enunciati } }

Scopo: eseguire un programma semplice, descritto da enunciati e contenuto nel file NomeClasse.java Nota: la parte in blu viene per ora considerata una infrastruttura necessaria, approfondita in seguito
122

Analisi di HelloTester: commenti


Nel programma sono presenti anche dei commenti, che vengono ignorati dal compilatore, ma che rendono il programma molto pi comprensibile
// visualizza un...

Un commento inizia con una doppia barra // e termina alla fine della riga Nel commento si pu scrivere qualsiasi cosa Se il commento si deve estendere per pi righe, molto scomodo usare tante volte la sequenza // Si pu iniziare un commento con /* e terminarlo con */
// questo e un commento // lungo,inutile... // ... e anche scomodo /* questo e un commento lungo ma inutile... */

123

Analisi di HelloTester: enunciati


Gli enunciati del corpo di un metodo (gli enunciati contenuti tra le parentesi graffe) vengono eseguiti uno alla volta nella sequenza in cui sono scritti Ogni enunciato termina con il carattere ; Il metodo main del nostro esempio ha un solo enunciato, che visualizza una riga di testo
System.out.println("Hello, World!");

Ma dove la visualizza? Un programma pu inserire testo in una finestra, scriverlo in un file o anche inviarlo ad un altro computer attraverso Internet...
124

Analisi di HelloTester: oggetti


System.out.println("Hello, World!"); Nel nostro caso la destinazione loutput standard (o flusso di uscita standard) una propriet di ciascun programma che dipende dal sistema operativo del computer In Java, loutput standard rappresentato da un oggetto di nome out come ogni metodo, anche gli oggetti devono essere inseriti in classi: out inserito nella classe System della libreria standard, che contiene oggetti e metodi da utilizzare per accedere alle risorse di sistema per usare loggetto out della classe System si scrive System.out
125

Analisi di HelloTester: l'oggetto out


System.out.println("Hello, World!"); System una classe della java platform API che una collezione di classi pronte per essere usate, fornite dal progettista del linguaggio insieme al linguaggio Java Application Program Interface (API) significa Interfaccia per la programmazione di applicazioni System.out e un oggetto definito nella classe System di typo PrintStream PrintStream unaltra classe della java platform API
126

Analisi di HelloTester: oggetti


System.out.println("Hello, World!");

Quando si usa un oggetto, bisogna specificare cosa si vuol fare con loggetto stesso
in questo caso vogliamo usare un metodo delloggetto out, il metodo println, che stampa una riga di testo per usare il metodo println delloggetto System.out si scrive System.out.println(parametri) la coppia di parentesi tonde racchiude le informazioni necessarie per lesecuzione del metodo (parametri)

A volte il carattere punto significa usa un oggetto di una classe, altre volte usa un metodo di un oggetto: dipende dal contesto...
127

Sintassi: invocazione di metodo


Sintassi:
oggetto.nomeMetodo(parametri)

Scopo: invocare il metodo nomeMetodo delloggetto, fornendo parametri se sono richiesti Nota: se non sono richiesti parametri, le parentesi tonde devono essere indicate ugualmente Nota: se ci sono due o pi parametri, essi vanno separati luno dallaltro con una virgola, allinterno delle parentesi tonde

128

Analisi di HelloTester: stringhe


Una sequenza di caratteri racchiusa tra virgolette si chiama stringa (string) "Hello, World!" C un motivo per dover racchiudere le stringhe tra virgolette
come farebbe altrimenti il compilatore a capire che volete, ad esempio, stampare la parola class e non che volete iniziare la definizione di una nuova classe?

Il metodo println pu anche stampare numeri


System.out.println(7); System.out.println(3 + 4);

C anche il metodo print, che funziona come println ma non va a capo al termine della stampa
129

Una nota stilistica


Diversamente da altri linguaggi (es. FORTRAN) il linguaggio Java consente una disposizione del testo a formato libero: gli spazi e le interruzioni di riga (andare a capo) non sono importanti, tranne che per separare parole Sarebbe quindi possibile scrivere
public class HelloTester{public static void main (String[ ] args) { System.out. println("Hello, World!") ;}}

Bisogna per fare attenzione alla leggibilit!


130

tutto chiaro? 1. Come si pu modificare il programma HelloTester

in modo che visualizzi le parole Hello e World! su due righe consecutive? 2. Il programma continua a funzionare anche senza la riga che inizia con // ? 3. Cosa viene visualizzato dai seguenti enunciati?
System.out.print(My lucky number is); System.out.println(3 + 4 + 5);

132