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

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

Prima lezione di laboratorio. I mattoni di base di un programma Java. Riassunto. Comandi Unix. Oggi. Blog & Group.

Le basi del linguaggio Java

Prima lezione di laboratorio. I mattoni di base di un programma Java. Comandi Unix. Riassunto. Oggi. Un programma complicato.

Indice. Prefazione. 3 Oggetti e Java 53

Riassunto. I mattoni di base di un programma Java. Oggi. Un programma complicato. Oggi. Perché è complicato? Stefano Mizzaro 1.

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

INTRODUZIONE ALLA PROGRAMMAZIONE AD ALTO LIVELLO IL LINGUAGGIO JAVA. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

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

Laboratorio di Programmazione Lezione 1. Cristian Del Fabbro

Fondamenti di Informatica 1. Prof. B.Buttarazzi A.A. 2010/2011. Benvenuti al Corso!

Corso di Laurea Ingegneria Civile Fondamenti di Informatica. Dispensa 07. Oggetti e Java. Marzo Programmazione Java 1

Fondamenti di informatica T-1 (A K) Esercitazione 2: Linguaggio Java, basi e controllo del flusso

Introduzione a Java. Prof. Francesco Accarino IIS Altiero Spinelli Via Leopardi132 Sesto San Giovanni

FONDAMENTI DI INFORMATICA II

Corso di Laurea Ingegneria Civile

Introduzione a Java. Riferimenti

Introduzione al corso

Programmazione C Massimo Callisto De Donato

FONDAMENTI DI INFORMATICA

Corso di. Fondamenti di Informatica T

IL LINGUAGGIO JAVA Input, Tipi Elementari e Istruzione Condizionale

Introduzione al corso

OBIETTIVI. Conoscere i concetti di base dell Informatica. Conoscere i principi e gli strumenti di base della programmazione

Cosa è cambiato - la parte facile

19 - Eccezioni. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Elementi di Informatica

Esonero di Informatica I. Ingegneria Medica

FONDAMENTI DI INFORMATICA

Fondamenti di Informatica (lettere A-I) A

la traduzione dei programmi ed introduzione a Java

Corso di Fondamenti di Informatica e Laboratorio ato o T-AB

Modulo 2: Strutture fondamentali della programmazione Java

Corso sul linguaggio Java

Programmazione Procedurale in Linguaggio C++

Strumenti per la programmazione

Corso di Laurea Ingegneria Informatica Laboratorio di Informatica

Fondamenti di Informatica MultiDAMS

Corso di Fondamenti di Informatica e Laboratorio T-AB

Fondamenti di Informatica

Le basi del linguaggio Java

Corso sul linguaggio Java

Introduzione al corso di Programmazione e Laboratorio

Concetti introduttivi

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

Il linguaggio di programmazione Python

Programma del corso. Elementi di Programmazione. Introduzione agli algoritmi. Rappresentazione delle Informazioni. Architettura del calcolatore

Capitolo 1. Introduzione. Cay S. Horstmann Concetti di informatica e fondamenti di Java

Java il Corso Fondamentale

Il paradigma di programmazione a oggetti

Laboratorio di Informatica 4 Novembre 2005

Esercizi riassuntivi (Fondamenti di Informatica 2 Walter Didimo) Soluzioni

TEORIE E TECNICHE PER LA COMUNICAZIONE DIGITALE

CORSO DI PROGRAMMAZIONE. Cosimo Laneve/Ivan Lanese/Elena Giachino

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Corso di Fondamenti di Informatica Linguaggi di Programmazione

Informatica 3. Informatica 3. Lezione 1- Modulo 1. LEZIONE 1: Introduzione. Concetti di linguaggi di programmazione. Introduzione

Organizzazione del corso

Scrivere un programma in Java

Introduzione alla programmazione. Walter Didimo

Laboratorio di Programmazione Lezione 2. Cristian Del Fabbro

Informatica 3. LEZIONE 1: Introduzione. Modulo 1: Introduzione al corso Modulo 2: Introduzione ai linguaggi di programmazione

AMBIENTI DI PROGRAMMAZIONE

Esercitazione n 1. Obiettivi

Riassunto. La programmazione OO. Oggi. Esempio

Fondamenti di Informatica

6 - Blocchi e cicli. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Linguaggi di Programmazione

Concetti introduttivi

Fondamenti di Informatica e Laboratorio T-AB

24 - Possibili approfondimenti

Fondamenti di Informatica modulo B

Fortran in pillole : prima parte

Parte prima: le basi della programmazione Java

Modelli e complessità di calcolo

Primi passi col linguaggio C

5 - Istruzioni condizionali

Obiettivi del corso. Programmazione Corso di laurea in Informatica

Ingegneria del Software II

Università di Udine Dip. di Scienze Matematiche, Informatiche e Fisiche

Fondamenti di programmazione e Laboratorio di introduzione alla programmazione (modulo 1)

Programmazione (imperativa)

Elementi di Informatica e Programmazione

Programmazione in C. Requisiti didattici

Prof. Massimo Esposito INGEGNERIA MECCANICA (DI-M) UNIVERSITÀ DEGLI STUDI DI NAPOLI FEDERICO II FACOLTÀ DI INGEGNERIA

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

Corso di Informatica

LINGUAGGI DI ALTO LIVELLO

OO puro. Primi concetti di Java. Tipi primitivi. Ogni cosa è un oggetto. Java è object-oriented puro Non come il C+ + (OO ibrido) Lorenzo Bettini

Corso Programmazione Java Standard

Struttura di un programma Java

Primi programmi in Java. Lezione IV

Istruzioni Condizionali

Cosa è un programma. Informatica di Base -- R.Gaeta 18

Prefazione. Capitolo 1 Sistemi di elaborazione 1

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Indice. Introduzione a tool per lo sviluppo e l'esecuzione di programmi in linguaggio Java. Compilazione ed esecuzione di un programma

Strumenti per la programmazione

Basi della programmazione in Java. Anteprima. Uso delle variabili. Il concetto di variabile Uso delle variabili. Input da tastiera I tipi Esercizi

Transcript:

Programmazione e laboratorio: introduzione al corso Stefano Mizzaro Dipartimento di matematica e informatica Università di Udine http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Lezione 1, 4 ottobre 2013 Oggi Presentazione del corso I docenti L esame Raccomandazioni Testi e materiale didattico Programma preliminare del corso Inizio I primi esempi di programmi Java Come si scrive un programma Stefano Mizzaro - Introduzione 2 Docenti Teoria Stefano Mizzaro 48 ore teoria http://www.dimi.uniud.it/mizzaro/ mizzaro@uniud.it Docenti Laboratorio Marco Pavan 40h marco.pavan@uniud.it Dario De Nart 20h dario.denart@uniud.it Stefano Mizzaro - Introduzione 3 Stefano Mizzaro - Introduzione 4 Il corso 120 ore, 12 CFU 48 ore di teoria, 6 CFU: Mizzaro (48) 72 ore di laboratorio, 6 CFU: 60h con assistenza/presenza del docente di lab. 12h senza Orario lezioni Laboratorio Niente lab. questa settimana, inizia la prossima! Inizio: martedì 8/10 Stefano Mizzaro - Introduzione 5 Orario Lun Mar Mer Gio Ven I 8:30-9:30 Prog 9:30-10:30 (11) II 10:30-11:30 11:30-12:30 III 12:30-13:30 13:30-14:30 Lab. IV 14:30-15:30 Lab. (Lab_1) Prog 15:30-16:30 (Lab_1) (11) Lab. V 16:30-17:30 Prog (Lab_1) 17:30-18:30 (Beta 2) Stefano Mizzaro - Introduzione 6 Stefano Mizzaro 1

Mappa Account Laboratorio Fatelo *subito*! Modulo da compilare?? In lab Su Web: http://www.uniud.it/didattica/facolta/scienze/ info_dida/laboratorio/ Password Foto tessera Regolamento! (responsabilità anche penali ) Modalità d esame preliminari (1/4) Scritto + (autovalutazione +) (progetto +) orale Scritto O provette (?) Niente appunti, libri, allo scritto/provetta Se voto scritto 10-5 all appello succ.!! Scritto valido fino all appello successivo (su richiesta!!) Stefano Mizzaro - Introduzione 7 Stefano Mizzaro - Introduzione 8 Modalità d esame preliminari (2/4) 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 24!! Se voto <24, non consegnato, non presentato progetto annullato (come non fatto) Stefano Mizzaro - Introduzione 9 Modalità d esame preliminari (3/4) 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 Modalità d esame preliminari (4/4) Autovalutazione (peer assessment) In laboratorio: Esercitazioni e peer assessment Il voto finale dipende dal voto di laboratorio (Da -4 a +4) Risolvere esercizi Valutare le soluzioni degli altri + esercizi risolvete e valutate, meglio è (per voi) e meglio lo fate, meglio è Punteggio per risolutore e punteggio per valutatore Un dettaglio Da gennaio a dicembre 2014 io sono in anno sabbatico Le lezioni devono finire entro dicembre 2013 Esami: 2 appelli: dicembre 2013 e gennaio 2014 Forse provette (ne riparliamo) Stefano Mizzaro - Introduzione 11 Stefano Mizzaro - Introduzione 12 Stefano Mizzaro 2

Cose importanti (1/4) 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) Stefano Mizzaro - Introduzione 13 Cose importanti (2/4) Non basta studiare: bisogna anche fare! Usate il calcolatore per provare i vs. programmi Seguite le esercitazioni di laboratorio Il laboratorio è *importante*! (6 CFU su 12) Andate in laboratorio per conto vostro Se avete un calcolatore Fate domande! (anche per email) Firmate i messaggi Usate il vostro account universitario ( spes ) Venite a ricevimento! Orario: Lun. 10:00 12:00 Mappa Stefano Mizzaro - Introduzione 14 Cose importanti (3/4) 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 (soprattutto!) chi pensa di saper già programmare Cose importanti (4/4) Fidatevi dei prof. Se noi diciamo che una cosa è importante, lo è. Se noi insistiamo su cose che vi sembrano inutili, turatevi il naso e studiatele Forse abbiamo ragione noi (ne riparliamo fra 5 anni) E comunque l esame lo fate con noi Se pensate che queste cose qui non servano a niente, cambiate idea (o corso di laurea ) Imparare passare lesame Stefano Mizzaro - Introduzione 15 Stefano Mizzaro - Introduzione 16 Cose importanti e ovvie Non siete più alla scuola dellobbligo Se siete qui, state pagando Non buttate via i soldi Non disturbate, e arrabbiatevi con chi vi disturba Un dettaglio / 2 Sabbatico => no appelli da gennaio a dicembre? => FATE SUBITO L ESAME! Vedetela come un opportunità: potete sostenere subito l esame Stefano Mizzaro - Introduzione 17 Stefano Mizzaro - Introduzione 18 Stefano Mizzaro 3

Testi e materiale (1/2) 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, Laboratorio di programmazione in Java, Apogeo, Milano, 2004, ISBN: 88-503-2145-7 Testi e materiale (2/2) Dispensa: V. Della Mea, S. Mizzaro. L algoritmo, http://www.dimi.uniud.it/mizzaro/research/papers/algoritmo.pdf Blog (lucidi + avvisi + link + ) http://programmazionetwmudine.blogspot.com/ Scorsi anni: http://programmazionetwmudine0910.blogspot.com/ http://programmazionetwmudine0809.blogspot.com/ Gruppo Google (iscrivetevi!!) http://groups.google.com/group/programmazionetwmudine/ Scorsi anni: http://groups.google.com/group/programmazionetwmudine0910/ Stefano Mizzaro - Introduzione 19 Stefano Mizzaro - Introduzione 20 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à Analisi sistematica: dai mattoni più piccoli alle componenti più grandi Stefano Mizzaro - Introduzione 21 Stefano Mizzaro - Introduzione 22 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) 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 23 Stefano Mizzaro - Introduzione 24 Stefano Mizzaro 4

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 ) 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 Stefano Mizzaro - Introduzione 25 Stefano Mizzaro - Introduzione 26 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 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, ) Stefano Mizzaro - Introduzione 27 Stefano Mizzaro - Introduzione 28 Collegamenti con altri corsi (Un po con tutti. È IMP.!!) 1o anno Architetture Tecnologie Web 2o anno Programmazione OO Algoritmi e strutture dati Sistemi operativi Sistemi multimediali 3o anno Ingegneria del software Tecnologie Web 2 Interazione uomo macchina Progetto siti Web Laurea magistrale. Importanza Ci sono collegamenti con un po tutti i corsi Programmerete per molto tempo. Forse per tutta la vostra vita lavorativa È un corso importante (ce ne saranno altri) Stefano Mizzaro - Introduzione 29 Stefano Mizzaro - Introduzione 30 Stefano Mizzaro 5

Riassunto 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 31 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!"); /* Il nostro primo programma in Java */ classe CiaoATutti { publico statico vuoto principale(stringa[] argomenti) { Sistema.uscita.stampalinea("Ciao a tutti!"); Stefano Mizzaro - Introduzione 32 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 33 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 34 Editing-compilazione-esecuzione 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 35 Il JDK JDK/SDK (Java/Standard Development Kit) http://www.java.com La cassetta degli attrezzi del programmatore Java Compilatore: javac Interprete: java JVM (Java Virtual Machine, Macchina virtuale Java) JRE (Java Runtime Environment) = JVM + Installatelo sul vostro calcolatore installare = scaricare + leggere le istruzioni + Stefano Mizzaro - Introduzione 36 Stefano Mizzaro 6

Schema Editing class { public { CiaoATutti.java Compilazione: >javac CiaoATutti.java CiaoATutti.class 0101001 0101110 Esecuzione: >java CiaoATutti Risultati Editing-compilazione-esecuzione 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 37 Stefano Mizzaro - Introduzione 38 Un programma più serio /* 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); Stefano Mizzaro - Introduzione 39 Notare Parte dichiarativa e parte eseguibile Sequenza di istruzioni (;) Assegnamento (=) Variabili: dichiarazione e uso area: variabile inutile Espressioni System.out.println Eseguiamo in pratica anche questo E poi proviamolo su altri dati Stefano Mizzaro - Introduzione 40 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 41 Stefano Mizzaro - Introduzione 42 Stefano Mizzaro 7

Schema Stefano Mizzaro - Introduzione 43 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 44 Osserviamo System.in.read() throws IOException import java.io.* System.in.read() Legge un carattere (!) ACHTUNG!!! verrete a dirmi: Prof., non funziona! if else Alternative Dopo l if ci va un espressione logica (condizione) else significa altrimenti Stefano Mizzaro - Introduzione 45 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 46 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 47 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 48 Stefano Mizzaro 8