Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: laboratorio. Docenti: teoria. Il corso. Orario.



Documenti analoghi
Oggi. Programmazione e laboratorio: introduzione al corso. Docenti: teoria. Docenti: laboratorio. Il corso. Orario.

Oggi. Programmazione e laboratorio: introduzione al corso. Docenti. Docenti. Il corso. Orario. Stefano Mizzaro 1

! Presentazione del corso. ! I docenti. ! L'esame. ! Raccomandazioni. ! Testi e materiale didattico. ! Programma preliminare del corso. !

Prossime lezioni. Dai TDA agli oggetti. Riassunto. Riassunto TDA. Oggi. Stefano Mizzaro 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Strumenti per la programmazione

Università degli studi di Roma Tor Vergata Ingegneria Medica Informatica I Programma del Corso

Programmare in Java. Olga Scotti

Struttura di un programma Java

Scrivere un programma in Java

Le command line di Java

Eclipse. Avviare un progetto e compilare un semplice programma

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Appunti di Informatica 1

2 - Introduzione al linguaggio Java

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Esercizi Java. class somma2 { static int somma(int a,int b) {return a+b; }

Funzioni in C. Violetta Lonati

Prova Finale a.a. 2011/2012. Laboratorio 1: Introduzione a Java e Eclipse

Laboratorio di Programmazione 2

Programmazione in Java Parte I: Fondamenti

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Algoritmi di Ricerca. Esempi di programmi Java

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011

Java: Compilatore e Interprete

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Traduzione ed esecuzione di programmi. Dispensa 08

Primi programmi in Java. Lezione IV

Corso sul linguaggio Java

Java? Sì, grazie. Scopo del corso

LICEO DELLE SCIENZE APPLICATE

Fondamenti di Informatica T1 Guida all uso di JDK e Eclipse

Introduzione. Informatica B. Daniele Loiacono

10 - Programmare con gli Array

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2015

La gestione dell input/output da tastiera La gestione dell input/output da file La gestione delle eccezioni

Classi Oggetti public private this static static

Linguaggio Java. Robusto. Orientato agli oggetti. Protegge e gestisce dagli errori. Non permette costrutti pericolosi

Fondamenti di programmazione in Java. Lezione III

Corso di INFORMATICA 2 (Matematica e Applicazioni)

Esercitazione n 4. Obiettivi

Tale attività non è descritta in questa dispensa

Linguaggi. Corso di Laurea in Ingegneria delle Telecomunicazioni A.A

Scaletta. Cenni di computabilità. Cosa fa un programma? Definizioni (1/2) Definizioni (2/2) Problemi e domande. Stefano Mizzaro 1

! Problemi, domande, risposte. ! Algoritmi che calcolano funzioni. ! Funzioni computabili e non. ! Problema = insieme di domande omogenee. !

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Codifica: dal diagramma a blocchi al linguaggio C++

Introduzione alla programmazione Java. Dott. Ing. M. Banci, PhD

La selezione binaria

Informatica 3. Informatica 3. LEZIONE 10: Introduzione agli algoritmi e alle strutture dati. Lezione 10 - Modulo 1. Importanza delle strutture dati

Scopo della lezione. Informatica. Informatica - def. 1. Informatica

Informatica B. Breve introduzione all ambiente di programmazione. Politecnico di Milano IV Facoltà di Ingegneria 2003

Le variabili. Olga Scotti

Fondamenti di Informatica Ingegneria Clinica Lezione 19/10/2009. Prof. Raffaele Nicolussi

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Tutorial per l installazione del J2SE 6 e configurazione del sistema operativo

Fondamenti di Informatica Ingegneria Clinica Lezione 15/10/2009. Prof. Raffaele Nicolussi

Corso di Informatica

INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI INTRODUZIONE AGLI ALGORITMI

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Ambienti di Sviluppo

4. Un ambiente di sviluppo per Java

Telematica II 17. Esercitazione/Laboratorio 6

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Installazione del JDK 6

Organizzazione della lezione. Lezione 18 Remote Method Invocation - 6. (con callback) L accesso al registry per il rebind()

Programmazione ad oggetti

LABORATORIO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO V Indice

Corso sul linguaggio Java

3. Programmazione strutturata (testo di riferimento: Bellini-Guidi)

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Secondo Compitino 21 Dicembre 2006

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

13 - Gestione della Memoria nella Programmazione Orientata agli Oggetti

Fondamenti di Informatica. Allievi Automatici A.A Informazioni Generali

Riassunto. Introduzione alla. 4. Intro programmazione strutturata. Oggi. programmazione strutturata. Le strutture di controllo della.

Introduzione alla programmazione in Java

14 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Fondamenti di Informatica T1

Panoramica: che cosa è necessario

Esperimento. Introduzione alla. 4. Intro programmazione strutturata. Oggi. Riassunto. Le strutture di controllo della

Programmazione Java. Corso di Laurea Ingegneria Informatica Fondamenti di Informatica 1. Dispensa 3. Alfonso Miola Settembre 2007

INTRODUZIONE INTRODUZIONE JAVA JAVA

15 - Packages. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso Analista Programmatore Web PHP Corso Online Analista Programmatore Web PHP

Arduino: Programmazione

Parola chiave extends

Fondamenti di Informatica - 9Cfu Corso di Laurea in Ingegneria Informatica (ord. 270)

Gli algoritmi: definizioni e proprietà

Guida all uso dell ambiente di sviluppo 1 integrato o IDE. JCreator LE 4.50

FONDAMENTI di INFORMATICA L. Mezzalira

Oggetto: MASTER DI ALTA FORMAZIONE PROFESSIONALE IN PROGRAMMATORE JAVA PARTECIPAZIONE GRATUITA

MANUALE MOODLE STUDENTI. Accesso al Materiale Didattico

Sistema operativo: Gestione della memoria

Esercizi su. Funzioni

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Introduzione al MATLAB c Parte 2

Programmazione. Programmare ad oggetti. Programmi e calcolatori. Focalizzazione del corso. Alcuni linguaggi famosi. Programmi e linguaggi

Analisi e progettazione del software

Transcript:

Programmazione e laboratorio: introduzione al corso Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Programmazione per TWM, Lezione 1 26 settembre 2005 http://www.dimi.uniud.it/mizzaro/dida/prog0506/ Oggi Presentazione del corso I docenti L esame Raccomandazioni Programma preliminare del corso e testi Inizio I primi esempi di programmi Java Come si scrive un programma Stefano Mizzaro - Introduzione 2 Docenti: teoria Stefano Mizzaro: (24 ore) http://www.dimi.uniud.it/mizzaro mizzaro@dimi.uniud.it Paolo Coppola: (24) http://www.dimi.uniud.it/coppola coppola@dimi.uniud.it Docenti: laboratorio Stefano Burigat: lab. (12, le prime lezioni) http://www.dimi.uniud.it/burigat/ burigat@dimi.uniud.it Lucio Ieronutti: lab. (12 + 24?) http://www.dimi.uniud.it/ieronutt/ ieronutt@dimi.uniud.it Marco Frailis: lab. (24?) http://www.dimi.uniud.it/frailis/ frailis@dimi.uniud.it Stefano Mizzaro - Introduzione 3 Stefano Mizzaro - Introduzione 4 Il corso Orario 48 ore di teoria, 6 CFU: Mizzaro (24), Coppola (24) 48 ore di laboratorio, 4 CFU: Burigat (12), Ieronutti (12+24?), Frailis (24?) Orario lezioni Divisione in due per il laboratorio A ~M e ~M Z Fiscali (almeno all inizio) Niente lab. questa settimana! Inizio: 4/10 I 9:00-10:45 II 11:00-12:45 II e ½ III 15:00-16:45 IV Lun Prog (E) Mar A ~M ~M Z Mer Prog (H) A ~M ~M Z Gio Ven Stefano Mizzaro - Introduzione 5 Stefano Mizzaro - Introduzione 6 Stefano Mizzaro 1

Mappa Account oratorio Fatelo subito! (entro qs. settimana) Modulo da compilare In lab Su Web: http://www.uniud.it/didattica/facolta/scienze/info_dida /laboratorio Foto tessera Modalità d esame preliminari (1/3) Scritto + (progetto +) orale Scritto [2 Provette: dic. e mar. (fine I e II per. did.)] Niente appunti, libri, allo scritto/provetta 2a provetta in contemporanea/alternativa al primo appello Se voto scritto 10-5 all appello succ.!! Stefano Mizzaro - Introduzione 7 Stefano Mizzaro - Introduzione 8 Modalità d esame preliminari (2/3) Progetto (opzionale) Gruppi di 3 persone (eccezioni da concordare preventivamente, ad es.: lavoro) Il progetto va consegnato allo scritto e spedito per email (dettagli insieme al progetto) Pubblicato sul web ca. 2 settimane prima dell appello Voto max. senza progetto: 27 Progetto dà incremento di 0-3 punti Solo se voto scritto 21!! Se voto <21, non consegnato, non presentato progetto annullato (come non fatto) Stefano Mizzaro - Introduzione 9 Modalità d esame preliminari (3/3) Orale Su tutto il programma (e sul progetto) Consiglio : capite gli errori dello scritto Va sostenuto nello stesso appello del progetto, altrimenti bisogna rifare il progetto Tutti i componenti del gruppo devono sapere TUTTO sul progetto come se l avessero fatto da soli Chi dimostra di non sapere abbastanza deve rifare scritto e progetto (chi non ha passato lo scritto ) Stefano Mizzaro - Introduzione 10 Cose importanti (1/3) Studiare: Leggere, Capire, Memorizzare Organizzatevi: motivazioni, tempi, Studiate! 198 55, 142 86, 130 63, 130 75 Tot.: 600 280 Guardatevi Continuate a studiare (140 114 80; 47) Cose importanti (2/3) Non basta studiare: usate il calcolatore! Seguite le lezioni di laboratorio Andate in laboratorio per conto vostro Se avete un calcolatore Fate domande! (anche per email) Firmate i messaggi Usate il vostro account universitario Venite a ricevimento! Orario: Sindy (Mar. 10:00 12:00?) Mappa Stefano Mizzaro - Introduzione 11 Stefano Mizzaro - Introduzione 12 Stefano Mizzaro 2

Cose importanti (3/3) Bast-Che-Funz: chi se ne frega di come è scritto un programma, basta che funzioni SE LA PENSATE COSI, NON PASSATE L ESAME! DOVETE imparare a scrivere programmi di buona qualità Anche chi pensa di saper già programmare Programma preliminare del corso: obiettivi Introdurre gli aspetti fondamentali della programmazione strutturata, dell occultamento delle informazioni, della programmazione orientata agli oggetti Imparare a programmare Usiamo il linguaggio Java Java è il mezzo, non il fine! Imparare a ragionare Accennare a computabilità e complessità Stefano Mizzaro - Introduzione 13 Stefano Mizzaro - Introduzione 14 Analisi sistematica: dai mattoni più piccoli alle componenti più grandi Programma preliminare 1. La programmazione strutturata (22h) 2. Tipi di dati astratti e occultamento delle informazioni (4h) 3. I fondamenti della programmazione orientata agli oggetti (10h) 4. Le API del Java (10h) 5. Cenni alle teorie della computabilità e complessità (2h) Stefano Mizzaro - Introduzione 15 Stefano Mizzaro - Introduzione 16 1. La programmazione strutturata (22h) L ABC della programmazione: Espressioni Strutture di controllo Sviluppo incrementale Array Metodi Ricorsione Presenti in ogni linguaggio di programmazione Stefano Mizzaro - Introduzione 17 2. Tipi di dati astratti, occultamento delle informazioni (4h) Come fare programmi più grandi e complicati e comunque modificabili, estendibili, comprensibili, Tipi di dati astratti, occultamento delle informazioni Concetti e realizzazione in Java Verso l OO ( Object Oriented ) Stefano Mizzaro - Introduzione 18 Stefano Mizzaro 3

3. I fondamenti della programmazione OO (10h) Evoluzione dai TDA: oggetti, classi, istanze, scambio messaggi Eredità Polimorfismo La programmazione OO in Java Classi astratte Interfacce Package 4. Le API del Java (10h) Application Programming Interface Librerie Il programmatore di oggi deve conoscere anche le API Introduzione, cenni: File, stringhe, utilità, Interfacce utente grafiche Applet Stefano Mizzaro - Introduzione 19 Stefano Mizzaro - Introduzione 20 5. Teorie della computabilità e della complessità (cenni, 2h) Teoria matematiche (teoremi!) Computabilità Cos è un programma? Cosa può fare un programma? È possibile scrivere un programma che? Ci sono linguaggi di programmazione più potenti di altri? Cosa vuol dire più potente? Complessità Dato un problema, ci sono programmi più efficienti di altri per risolverlo? (più veloci, che usano meno risorse, ) Testi e materiale S. Mizzaro, Introduzione alla programmazione con il linguaggio Java, Franco Angeli, Milano, 3a ed., 2001, ISBN 88-464-1696-1, http://www.dimi.uniud.it/mizzaro/librojava P. Coppola, S. Mizzaro, oratorio di programmazione in Java, Apogeo, Milano, 2004, ISBN: 88-503-2145-7 Materiale su Web. Sito Web del corso: http://www.dimi.uniud.it/mizzaro/dida/prog0506/ Dispensa: V. Della Mea, S. Mizzaro. L algoritmo, altro Stefano Mizzaro - Introduzione 21 Stefano Mizzaro - Introduzione 22 Collegamenti con altri corsi Riassunto 1o anno Architetture Tecnologie Web 2o anno Programmazione OO Algoritmi e strutture dati Sistemi operativi Sistemi multimediali 3o anno Ingegneria del software. Tecnologie Lato Server Interazione uomo macchina Progetto siti Web L.S.. Il corso Docenti Lezioni Esame Raccomandazioni Programma preliminare del corso e testi Domande? Osservazioni? I primi esempi di programmi Java Come si scrive un programma Stefano Mizzaro - Introduzione 23 Stefano Mizzaro - Introduzione 24 Stefano Mizzaro 4

Il nostro primo programma in Java /* Il nostro primo programma in Java */ class CiaoATutti { public static void main (String[] args) { System.out.println("Ciao a tutti!"); Prima riga: commento Due righe successive: intestazione (saremo più precisi), deve esserci sempre Nome del programma (saremo più precisi) 4a riga: istruzione di stampa Poi le graffe chiuse, una per ogni graffa aperta Stefano Mizzaro - Introduzione 25 L attività del programmatore Ciclo editing-compilazione-esecuzione Editing Usando un editor di testo, scrivere il programma e salvarlo su file Compilazione Usando un compilatore, tradurre il programma da Java a un linguaggio più vicino all HW Esecuzione Eseguire il programma Stefano Mizzaro - Introduzione 26 Editing-compilazione-esecuzione Il JDK Editing XEmacs, Blocco Note, (formato solo testo!!) Compilazione Compilatore Java Non produce codice direttamente eseguibile dall HW (non produce linguaggio macchina) Produce un codice a byte (bytecode) >javac NomeFile.java Esecuzione Interprete Java Sa eseguire il bytecode >java NomeProgramma Stefano Mizzaro - Introduzione 27 JDK/SDK (Java/Standard Development Kit) La cassetta degli attrezzi del programmatore Java Compilatore: javac Interprete: java JVM (Java Virtual Machine, Macchina virtuale Java) JRE (Java Runtime Environment) = JVM + Stefano Mizzaro - Introduzione 28 Schema Editing class { public { CiaoATutti.java Compilazione: >javac CiaoATutti.java CiaoATutti.class 0101001 0101110 Esecuzione: >java CiaoATutti Risultati Editing-compilazioneesecuzione in pratica Scrivo il programma CiaoATutti (uso l editor XEmacs) Lo compilo Lo eseguo >javac CiaoATutti.java >java CiaoATutti Ciao a tutti! > Stefano Mizzaro - Introduzione esecuzione 29 Stefano Mizzaro - Introduzione 30 Stefano Mizzaro 5

Un programma più serio Notare /* Programma per calcolare l'area di un triangolo */ class AreaTriangolo { public static void main (String[] args) { int base; int altezza; int area; base = 5; altezza = 12; area = base * altezza / 2; System.out.println(area); Parte dichiarativa e parte eseguibile Sequenza di istruzioni (;) Assegnamento (=) Variabili: dichiarazione e uso Espressioni System.out.println Eseguiamo in pratica anche questo E poi proviamolo su altri dati Stefano Mizzaro - Introduzione 31 Stefano Mizzaro - Introduzione 32 La leggibilità (comprensibilità) /* Programma per calcolare l'area di un triangolo */ class AreaTriangoloDisordinata { public static void main ( String[] args) { int base; int altezza; int area; base = 5; altezza = 12; area = base * altezza / 2; System.out.println(area); È lo stesso programma? Fa le stesse cose? Morale: la leggibilità è importante! Errori Si fano sempre erori quado si scrife un programa! Bisogna imparare a gestirli: Capire i messaggi di errore del compilatore Capire i messaggi di errore al tempo di esecuzione Capire perché il programma non fa quello che vogliamo Ciclo editing-compilazione-esecuzione Stefano Mizzaro - Introduzione 33 Stefano Mizzaro - Introduzione 34 Schema Stefano Mizzaro - Introduzione 35 Un altro programma Editing /* Qual e' il massimo fra 2 cifre? */ import java.io.*; class Max2 { class { CiaoATutti.java public static void main(string[] args) public { throws IOException { Compilazione: int a, b; >javac CiaoATutti.java a = System.in.read(); b = System.in.read(); if (a>b) { CiaoATutti.class Errori compilazione 0101001 System.out.println( "Il massimo e' il primo"); 0101110 Esecuzione: >java CiaoATutti else { System.out.println( "Il massimo e' il secondo"); Errori esecuzione Risultati Errori semantici esecuzione Stefano Mizzaro - Introduzione 36 Stefano Mizzaro 6

Osserviamo System.in.read() throws IOException import java.io.* System.in.read() Legge un carattere (!) ACHTUNG!!! if else Alternative Dopo l if ci va un espressione logica (condizione) else significa altrimenti Stefano Mizzaro - Introduzione 37 Stampare i numeri da 1 a 10 (brutto!!) class Stampa1_10 { public static void main(string[] args) { System.out.println(1); System.out.println(2); System.out.println(3); System.out.println(4); System.out.println(5); System.out.println(6); System.out.println(7); System.out.println(8); System.out.println(9); System.out.println(10); Stefano Mizzaro - Introduzione 38 Stampare i numeri da 1 a 10 (meglio) class Stampa1_10 { public static void main(string[] args) { int contatore; contatore = 1; while (contatore <= 10) { System.out.println(contatore); contatore = contatore + 1; Questo è molto meglio. Perché: Altrimenti non passate l esame stampare i numeri da 1 a 1000 Stefano Mizzaro - Introduzione 39 Fine! Riassunto Prima parte Il corso, i docenti, l esame, raccomandazioni, Programma preliminare del corso e testi Seconda parte I primi esempi di programmi Java Editing-compilazione-esecuzione Prossima lezione Altri esempi di programmi Analisi più sistematica Dai mattoni più piccoli alle componenti più grandi Stefano Mizzaro - Introduzione 40 Stefano Mizzaro 7