Programmazione in Java e gestione della grafica (I modulo)

Programmazione in Java
e gestione della grafica
(I modulo)
Lezione 1: Presentazione corso
Presentazioni
• Dora Giammarresi
• Info: http://www.mat.uniroma2.it/~giammarr
• Orario ricevimento:
• Martedì
13:00 – 14:00
• Potete anche scrivermi email a
[email protected] , ma non
dimenticate nome, cognome e corso cui vi
riferite
• Il mio studio è al piano terra del dente 2.
Informazioni generali
• Numero crediti: 10 crediti
(5 per ogni modulo = 40 - 50 ore lezioni e laboratorio)
• Durata dell’intero corso: 2 semestri
– I modulo da ottobre a gennaio
– Pausa a febbraio (verifica intermedia)
– II modulo da marzo a inizio giugno
Orario lezioni e laboratorio
– QUANDO: Martedì e Venerdì 9:15 -11:00
– DOVE: aula 25 (laboratorio)
(eventualmente portare un proprio computer)
Ogni lezione si compone di (circa) un'ora di
spiegazioni e un'ora (circa) di pratica sui
computer.
AVVISO:
• La lezione di venerdì prossimo (30 settembre) è
cancellata.
• Prossima lezione: martedì 4 ottobre.
Pagina web del corso
http://www.mat.uniroma2.it/~giammarr/Teaching
/Java/index.html
Troverete: orario lezioni, ricevimento, programma, avvisi
generali, syllabus, diario delle lezioni, esercizi assegnati a
lezione, avvisi vari
Consultatela spesso!
Libro di testo
W.Savitch
Programmazione con Java
Pearson Education
Libro di testo
W.Savitch
Programmazione di base e
avanzata con Java
Pearson Education
Nota: Ha qualche capitolo in più rispetto al precedente sulla parte
grafica.
Finalità del I modulo del corso
• Principi fondamentali della programmazione ad
oggetti
• Soluzione di problemi con metodologie objectoriented
• Implementazione di semplici (ma non troppo! )
programmi Java
Finalità del II modulo del corso
(docente dott. Zuliani)
• Tecniche avanzate di programmazione (classi
astratte e interfacce, gestione delle eccezioni ,
gestione dei file)
• Librerie grafiche in Java
Esami (di già???)
• Quando?
– PREAPPELLO I modulo (febbraio)
– ESONERO II modulo (maggio)
– Sessione estiva (giugno/luglio)
– Sessione autunnale (settembre)
– Sessione invernale (febbraio)
Esami (di già???)
Prova unica per i due moduli
• Prova pratica (sui computer del laboratorio):
– esercizi di programmazione in Java
NO computer personale
NO accesso a internet
SI consultazione libro di testo/appunti
SI consultazione si file personali su pennetta USB
• Orale:
– discussione dei progetti
– domande sul programma svolto
Esami (di già???)
• Cosa fare per passare l’esame?
• (studiare)
• programmare,programmare,programmare,
programmare,programmare,programmare,
programmare,programmare,programmare,
programmare,programmare,programmare,
programmare,programmare,programmare,
programmare,programmare,programmare,
programmare,programmare,programmare,
programmare,programmare,programmare,
Il corso di laurea in STM
• Esami di settori disciplinari diversi:
– Matematica
– Fisica
– Informatica
– Disegno
– Linguistica
– Musica
Cos’è veramente l’informatica
Evitare compiti noiosi e ripetitivi…
Minor fatica?
• L’informatica è una Scienza, in inglese Computer
Science. I pionieri degli anni 30 erano matematici e fisici
(Turing, Goedel, ….)
• L’ informatica non consiste nello scrivere programmi
per un computer!
• I computer sono uno strumento: l’informatico può
lavorare anche solo con carta e penna!
• Ci vuole rigore, metodologia, tecnica, matematica etc.
• Bisogna studiare e si sa: lo studio è fatica! (anche
giocare a calcio, però….)
Perché studiare?
• «Vivere è imparare» [K. Lorenz]
• «Nessun pericolo è paragonabile a quello dell’ignoranza»
[R. Bacone]
• ………
• Esiste correlazione fra livello di istruzione e reddito
• L’intelligenza non basta, occorre acquisire nuove
informazioni, metodologia, forma mentis (cioè studiare…)
• Voi avete grandi potenzialità ADESSO
Come studiare
• Prerequisiti: Solo tanta voglia di conoscere e imparare!
(o quasi…). Allo studente non è richiesta nessuna
particolare conoscenza informatica. Una buona
conoscenza da utente di personal computer può aiutare
nell'inquadramento di alcune parti del corso.
• Lo svolgimento delle esercitazioni e la frequenza del
corso sono fortemente consigliate.
• Gli studenti devono essere preparati a trascorrere una
congrua quantità di tempo nello studio al di fuori delle
lezioni.
1CFU = 25 ore di lavoro = 8 ore di lezione frontale + 17ore di studio
individuale.
• Seguire e studiare tutti i corsi
• Studiare in maniera attiva
Studiare attivamente
• Lezioni: non accettate niente per buono
(nemmeno/soprattutto se lo dico io…;); domande
«stupide» non esistono, ma sono quelle che fanno
crescere
• Slides, appunti, ma… libri!
• Esercizi (da soli, a gruppi,…)
• Ricevimento
• Organizzare gli esami dei vari corsi (e prenotarsi in
tempo)
Non siamo più a scuola
Libertà nella organizzazione e nel metodo di studio
Attenzione: arma a doppio taglio!
Maggiore responsabilità da parte vostra
Studiare per voi, per la vostra preparazione, per il vostro
avvenire
Cominciare a studiare: subito!
All’inizio vi prenderemo per mano: test, prove intercorso,
….
Studiare con Costanza, .. ma anche con Letizia e Gioia!
vediamo qualche esempio di cosa
dovreste essere in grado di
programmare alla fine del corso…
Una breve introduzione
Computer
• Computer
– Eseguono calcoli e prendono decisioni basate sulla
logica milioni o miliardi di volte più velocemente degli
uomini.
• Programmi
– Insiemi di istruzioni tramite le quali i computer
elaborano i dati
• Hardware
– Struttura “fisica” del computer
• Software
– Programmi che vengono eseguiti sui computer
26
Componenti di un computer
(Unità logiche)
• Unità di Input
– Mouse, tastiera
• Unità di Output
– Stampante, monitor, speakers audio
• Unità di Memoria
– “Conserva” input and elabora le informazioni
• Unità Aritmetico-Logica (ALU)
– Esegue i calcoli
• Unità centrale di calcolo (Central processing unit ) (CPU)
– Organizza e controlla tutte le operazioni
• Unità di Memoria secondaria
– Hard disks, floppy drives
Computer e programmazione
• Un computer è una macchina per eseguire programmi
– qualcuno ha già fatto per noi alcuni programmi che possiamo
eseguire così come facciamo con ogni applicazione
• Un computer è anche una macchina programmabile,
ossia una macchina le cui potenzialità possono
essere aumentate da noi con la scrittura di nuovi
programmi
– per far questo dobbiamo far uso di opportuni linguaggi di
programmazione che ci permettono di esprimere nel modo più
naturale le nostre esigenze di calcolo
Esecuzione di un programma
Computer e programmazione
• Ogni computer ha un proprio linguaggio macchina
– ogni istruzione coincide con un’istruzione di macchina e pertanto
è un linguaggio binario o anche linguaggio di basso livello
Computer e programmazione
• Esistono linguaggi di programmazione che
consentono di scrivere i programmi in termini di istruzioni
“vicine”alla logica delle tecniche di risoluzione di
problemi
– le istruzioni sono espresse mediante simboli e pertanto tali
linguaggi sono anche detti linguaggi simbolici o linguaggi ad
alto livello
– sono linguaggi simbolici anche i linguaggi assemblativi, in cui
ad ogni istruzione del linguaggio corrispondono una o più(poche)
istruzioni di macchina
Esecuzione dei programmi
• Il Computer , in particolare il suo hardware, esegue solo
programmi in linguaggio macchina
• Se un programma è in linguaggio macchina può essere
quindi direttamente eseguibile
– tutte le applicazioni sono immediatamente eseguibili proprio per
questo motivo
Esecuzione dei programmi
• Se un programma è in linguaggio simbolico non può
essere eseguito immediatamente
– c’è bisogno di un processo di traduzione che viene realizzato
tramite opportune applicazioni già disponibili, e che sono quindi
evidentemente in linguaggio macchina
Compilazione e interpretazione
• Esistono due approcci alla traduzione ed esecuzione dei
programmi
– Compilazione
• un programma scritto in un linguaggio di programmazione di
alto livello viene trasformato in un programma in linguaggio
macchina e poi eseguito
– interpretazione
• ciascuna istruzione del programma scritto in un linguaggio di
programmazione di alto livello viene trasformata in istruzioni
del linguaggio macchina ed eseguita
Compilazione e interpretazione
• I traduttori del primo tipo sono chiamati effettivamente
compilatori, quelli del secondo tipo sono chiamati
interpreti
• Una analogia con la traduzione tra linguaggi diversi
– la compilazione è analoga alla traduzione di un libro
– l’interpretazione è analoga alla traduzione simultanea
Compilazione
• Il computer con un programma compilatore, ricevendo
un programma sorgente in linguaggio simbolico
esegue la traduzione producendo in uscita il
corrispondente programma eseguibile in linguaggio
macchina
Programma
sorgente
Compilatore
Programma
eseguibile
Interpretazione
• Il calcolatore con un programma interprete, ricevendo
un programma sorgente in linguaggio simbolico e i
relativi dati in ingresso lo interpreta e lo esegue,
istruzione dopo istruzione, producendo direttamente i
dati in uscita
Dati in ingresso
(input)
Programma
sorgente
Interprete
Dati in uscita
(output)
Confronto tra
compilazione e interpretazione
• I linguaggi compilati
– prevedono la distribuzione di un file eseguibile (in
linguaggio macchina) specifico per ogni piattaforma
– il file sorgente, che consentirebbe di modificare il
programma, rimane di esclusiva pertinenza del
programmatore
Confronto tra
compilazione e interpretazione
• I linguaggi interpretati
– prevedono la distribuzione diretta del file sorgente
(che è il medesimo per tutte le piattaforme)
– su ogni piattaforma deve essere disponibile il
programma interprete
Il linguaggio Java
Java adotta una strategia mista
• il file sorgente contenente un programma Java
viene prima compilato, generando un file in
ByteCode
• il file in ByteCode è un file in linguaggio
macchina per una macchina non esistente, detta
macchina virtuale o Java Virtual Machine
Il linguaggio Java
• per essere eseguito il ByteCode viene
interpretato su ogni piattaforma
• esistono programmi interpreti, che realizzano
una Java VirtualMachine, per ogni piattaforma
• in questo modo il file sorgente non viene
distribuito, mentre il file ByteCode distribuito è il
medesimo per tutte le piattaforme
Compilazione di programmi Java
• Il calcolatore con un programma compilatore Java,
ricevendo un programma sorgente in linguaggio lo
traduce producendo in uscita il corrispondente
programma in un linguaggio intermedio ByteCode
Programma
sorgente in Java
Compilatore
Java
Programma
ByteCode
Interpretazione
di programmi in ByteCode
• Il calcolatore con un programma interprete Java
VirtualMachine(JVM), ricevendo un programma in
ByteCode e i relativi dati in ingresso lo interpreta e lo
esegue, istruzione dopo istruzione, producendo
direttamente i dati in uscita
Dati in ingresso
(input)
Programma
ByteCode
Java Virtual
Machine
Dati in uscita
(output)
Compilare ed eseguire un programma