Sei sulla pagina 1di 14

Università di Torino – Facoltà di Scienze MFN

Corso di Studi in Informatica

Programmazione I - corso B
a.a. 2007-08

prof. Viviana Bono

Blocco 1 – Introduzione al corso

public class Benvenuti {


public static void main(String[] args) {
System.out.println("Benvenuti a Prog I!");
}
}

Programmazione I B - a.a. 2007-08 1

1
Info pratiche
• CFU: 5 in aula (45 ore, 22 lez.) + 3 lab. (36 ore, 18 lez.)
• Orario:
come da bacheche (elettroniche e non)
• Esame:
laboratorio (0-4/5 punti) + scritto
• Docente:
Viviana Bono (ufficio 6/nuovo; bono@di.unito.it;
011 670 6733)
• Ricevimento:
su appuntamento (telefonico/email)
• Pagina del corso:
http://www.di.unito.it/~bono/Didattica/aa0708/
ProgIeLabB/
• Siti I-learn: http://i-learn.educ.di.unito.it/

Programmazione I B - a.a. 2007-08 2

Come si calcola il turno di laboratorio

Modulo (= resto) della divisione intera per 3 del numero di


login (cifre che seguono st):

• 1 = Turno 1 (T1)

• 2 = Turno 2 (T2)

• 0 = Turno 3 (T3)

Programmazione I B - a.a. 2007-08 3

2
Quando inizia il laboratorio

• Turno 1 (Viviana Bono): martedì 2, ore 9-11

• Turno 2 (Valentina Gliozzi): martedì 2, ore 16-18

• Turno 3 (Valentina Gliozzi): mercoledì 3, ore 9-11

Programmazione I B - a.a. 2007-08 4

Cancellazione lezioni

NON ci sarà lezione in aula il 2, 3 e 4 ottobre


(MA ci sarà il laboratorio nell’orario stabilito)

NB. Gli annunci, come slide e materiale vario,


si troveranno sempre su I-learn

Programmazione I B - a.a. 2007-08 5

3
Questionario

Programmazione I B - a.a. 2007-08 6

Testo di riferimento

• Per tutti (libro di testo ufficiale, anche per Prog II):

Giovanni Pighizzini, Mauro Ferrari, Dai fondamenti


agli oggetti – Corso di programmazione Java –
seconda edizione, Pearson - Education Italia, 2005.
Capitoli 1-5 (per Prog I).

Programmazione I B - a.a. 2007-08 7

4
Altro materiale
• Tutorial della Sun

o http://java.sun.com/docs/books/tutorial/
o http://developer.java.sun.com/
developer/onlineTraining/new2java/ :

§ Platform Overview
§ Getting started
§ Step-by-step programming
§ Review what you’ve learned

• Per consultazione
B. Eckel, Thinking in Java - seconda edizione, Apogeo, 2003

Programmazione I B - a.a. 2007-08 8

Software: J2SE 5.0 (Standard Edition)

Java Software Development KIT


(J2SE SDK)

– Versione utilizzata nel corso: 1.5.x


– Disponibile gratuitamente:
http://java.sun.com/
– compilatore, librerie standard, macchina virtuale , …

Programmazione I B - a.a. 2007-08 9

5
Come installare Java

• Necessario modificare la variabile d’ambiente


– PATH= ... ;<JAVA_HOME>/bin
aggiungere in fondo (NON sostituire!):
(NB: senza spazi prima del punto e virgola!)

Indispensabile per invocare i comandi java (compilatore


javac, macchina virtuale java, debugger jdb, ...)

• In Windows 2000/XP
– Pannello di controllo - >
Sistema -> Avanzate ->Variabili d’ambiente

Programmazione I B - a.a. 2007-08 10

Editor (programma per scrivere testi)

Un editor generico di testo (per es. il Blocco Note di


Windows), oppure un editor dedicato (per esempio,
TextPad, è quello disponibile in laboratorio)

Un’altra scelta possibile e` GVim, un editor simile a


TextPad ma free:
http://www.vim.org/download.php#pc

Scelte più avanzate (ambienti di sviluppo – IDE,


con debugger, ecc.):
– Netbeans: http://www.netbeans.org
– Eclipse: http://www.eclipse.org

Programmazione I B - a.a. 2007-08 11

6
Documentazione

• Strumento necessario alla sopravvivenza del programmatore Java!!

– Raccolta di informazioni relative alle classi appartenenti alle


librerie standard di Java:

http://java.sun.com/docs/ e
http://www.educ.di.unito.it/intranet/dol/

• Produrrete documentazione nello stesso formato per i vostri


programmi (indispensabile!)

Programmazione I B - a.a. 2007-08 12

Altre risorse on-line


• Il sito della Sun (http://java.sun.com/).
La piattaforma Java 2 comprende 3 diverse edizioni:
§ Enterprise Edition (J2EE), Standard Edition
(J2SE), Micro Edition (J2ME)
• J2SE: portale , downloads e documentazione
(http://java.sun.com/j2se/)
• API’s (Application Programming Interfaces)
(http://java.sun.com/apis.html ma anche
https://www.educ.di.unito.it/intranet/d
ol/ApiBook15/index.html)
• Convenzioni di scrittura:
(http://java.sun.com/docs/codeconv/html/
CodeConvTOC.doc.html)
Programmazione I B - a.a. 2007-08 13

7
Il corso

Prima parte
Programmazione imperativa tradizionale:
Java (quasi) senza oggetti.

Seconda parte
Programmazione a oggetti:
Java con oggetti

Programmazione I B - a.a. 2007-08 14

Il linguaggio Java:
qualche anticipazione

Programmazione I B - a.a. 2007-08 15

8
Avvertenza

Alcuni “termini” che compariranno da qui in avanti


nei programmi avranno valenza di “parole
magiche” per qualche tempo, perché dovremmo
scriverle per far funzionare le cose senza capire
bene il loro significato, ma piano piano tutto
assumerà un senso preciso…

Il solito primo programma, il file HelloWorld.java:


public class HelloWorld {
public static void main(String[] args) {
System.out.println(“Hello, World!");
}
}
Il contenuto del file è una definizione di classe,
contenente a sua volta una definizione di metodo

HelloWorld è il nome della classe che viene definita;


main è il nome del metodo definito nella classe
HelloWorld;
String è un tipo di dato: è l’insieme delle sequenze
di caratteri Programmazione I B - a.a. 2007-08 17

9
Il sistema Java
Il nucleo del sistema Java è costituito da:
• il programma compilatore javac
(in Windows propriamente javac.exe)
• il programma interprete java
(in Windows propriamente java.exe)
Il file sorgente, che deve avere l’estensione java, ad es.
HelloWorld.java, viene dato in input a javac, con il comando:
javac HelloWorld.java
javac lo trasforma in un programma in un formato intermedio
detto bytecode, contenuto in un file di estensione class, cioè
HelloWorld.class
Il file Ciao.class deve poi essere dato in input al programma
java, che lo interpreta, cioè lo esegue. Il comando è:
java HelloWorld
L’effetto è la “stampa” a video di: Hello , World!
Programmazione I B - a.a. 2007-08 18

Compilazione ed esecuzione
Un file HelloWorld.java è un file di testo (che sta sullo hard
disk).
Come visto nel lucido precedente, il compilatore legge tale
file e genera il file HelloWorld.class, che è una traduzione
del programma in una forma più conveniente per
l’esecuzione.
L’esecutore esegue (o interpreta ) il file HelloWorld.class

NB il compilatore e l’esecutore non sono macchine


fisiche, bensì dei programmi che vengono eseguiti dalla mac-
china fisica. Durante l’esecuzione del programma HelloWorld
la macchina esegue il programma java.exe che esegue il
programma HelloWorld.class.

Programmazione I B - a.a. 2007-08 19

10
Classi
Un programma Java può essere costituito di molti “pezzi”, che
si chiamano
classi o meglio dichiarazioni (o definizioni) di classi.
Nella programmazione “senza oggetti”, una definizione di
classe è un insieme di:
• definizioni (o dichiarazioni) di campi statici
• definizioni (o dichiarazioni) di metodi statici

campo statico: un contenitore di dato (numero, carattere,ecc.)


metodo statico: un sottoprogramma, dotato di un nome, che
può agire sui dati contenuti nei campi statici

Programmazione I B - a.a. 2007-08 20

Confrontando Java “senza oggetti”


con i linguaggi imperativi tradizionali:

• una classe è l'analogo di un programma o di un


modulo di un programma
• i campi statici sono simili alle variabili globali di un
programma (con alcune differenze)
• i metodi statici sono simili alle procedure e alle
funzioni di un programma, cioè ai sottoprogrammi di
un programma

Programmazione I B - a.a. 2007-08 21

11
Una delle classi deve contenere un metodo main, da cui
comincia l’esecuzione: il metodo main potrà poi invocare altri
metodi della stessa classe o di altre classi, che a loro volta
potranno invocare altri metodi, e così via.

Ogni definizione di classe può essere messa in un file


separato e compilata separatamente; un file non può
contenere più di una classe pubblica, cioè dichiarata public.

Il file che contiene la classe in cui è definito il main deve avere


lo stesso nome d i tale classe, con l'aggiunta dell'estensione
.java.

Programmazione I B - a.a. 2007-08 22

NB
In Java i campi statici, così come i campi non-statici che
vedremo in seguito , possono essere definiti soltanto all'interno
di una definizione di classe. La stessa cosa vale per i metodi
statici (così come per quelli non-statici, come vedremo).
Esempio:
class MyClass {
// campi statici:
static int a, b;
// definizione di metodo:
static int myFun(int x, int y) {
return 3*x - 4*y;
}
...

Programmazione I B - a.a. 2007-08 23

12
Definizione e chiamata di una procedura (metodo)
Consideriamo la seguente definizione di classe:
class MyClass {
// definizione di metodo:
static int myFun(int x, int y) {
int t = 3*x - 4*y;
return t*t*t;
}

public static void main(String[] args) {


int w = myFun(6,2); //chiamata della proc.
System.out.println(w); ...
}
}
myFun ha: parametri formali: x,y; variabili locali: t
Programmazione I B - a.a. 2007-08 24

IMPORTANTE: “Come” si scrive un


programma Java

Programmazione I B - a.a. 2007-08 25

13
Buone norme stilistiche
• adottare un font a spaziatura fissa (ad es. Courier)
• fissare il tab (cioè la tabulazione) a 2 o 3 spazi e usarlo per
l’indentazione
• indentare i costrutti sintattici annidati (vedi esempi a lezione)
e allineare ogni graffa chiusa con la corrispondente aperta o
meglio con l’inizio del corrispondente costrutto sintattico. Ad
es., stile di indentazione raccomandato per i metodi:
void deposita(double...) {
istruz;
...
}
• niente spazi fra nome del metodo e parentesi aperta:
void deposita(double...) NON
void deposita (double...)
• saltare una riga per separare un metodo dall'altro
Programmazione I B - a.a. 2007-08 26

Convenzioni universali di scrittura di programmi


• i nomi dei campi, delle variabili e dei metodi sono tutti
minuscoli, eventualmente con maiuscole in mezzo, per
distinguere paroleDiverse nelloStessoNome
• i nomi delle classi (e dei file .java che le contengono)
iniziano con una maiuscola, seguita da minuscole,
eventalmente con maiuscole in mezzo, per distinguere
ParoleDiverse NelloStessoNome (es. Hello e Hello.Java)
• le costanti sono tutte maiuscole, eventualmente con
carattere di sottolineatura per distinguere
PAROLE_DIVERSE NELLO_STESSO_NOME (NB Usare _
solo nelle costanti, non usare – da nessuna parte)
• ATTENZIONE: Java è case-sensitive: “ciao” è diverso da
“CIAO”, che è diverso da “Ciao”, che è diverso da “CIao”…
Questo vale anche per i nomi dei file: pippo.java è diverso
da Pippo.java

Programmazione I B - a.a. 2007-08 27

14

Potrebbero piacerti anche