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