====== Programmazione (Modulo di Teoria) ====== ---- ===== News ===== * 27/09/2019: Calendario prove orali appello 8 pubblicato. * 15/09/2019: Calendario prove orali appello 7 pubblicato. * 03/07/2019: Calendario prove orali appello 6 pubblicato. * 17/12/2018: date le avverse condizioni meteorologiche, nella giornata di lunedì 17 dicembre TUTTE le lezioni sono sospese nella sede Unicam di Camerino. * 11/12/2018: martedì 11/12 la lezione di Programmazione LABORATORIO è annullata. * 10/12/2018: lunedì 10/12 la lezione di Programmazione LABORATORIO è annullata. * 28/11/2018: mercoledì 28/11 la lezione di Programmazione Teoria è annullata. * 26/11/2018: lunedì 26/11 la lezione di Programmazione Teoria è annullata per concomitanza con l'inaugurazione dell'anno accademico. * 06/11/2018: martedì 6/11 la lezione di Programmazione Laboratorio è annullata. * 31/10/2018: mercoledì 31/10 la lezione di Programmazione Teoria è annullata, perché in aula AA1 si svolgeranno le presentazioni delle tesi di laurea. * 10/10/2018: mercoledì 10/10 al posto della lezione di Programmazione Teoria verrà svolta la lezione di Programmazione Laboratorio. * 09/10/2018: martedì 09/10 si svolgerà regolarmente la lezione di Programmazione Laboratorio. * 08/10/2018: lunedì 08/10 non si svolgerà la lezione di Programmazione Teoria (11:00-13:00), si svolgerà regolarmente la lezione di Programmazione Laboratorio (14:00-16:00). * 02/10/2018: Al posto della lezione di Programmazione Laboratorio verrà svolta la lezione di Programmazione Teoria. ---- ===== Informazioni Generali ===== **Docente**: * [[http://docenti.unicam.it/pdett.aspx?ids=N&tv=d&UteId=990&ru=PA|Francesco Tiezzi]] **Link ESSE3** * [[https://didattica.unicam.it/Guide/PaginaADErogata.do?ad_er_id=2018*N0*N0*S1*14584*8485&ANNO_ACCADEMICO=2018&mostra_percorsi=S|Programmazione - AA 2018/19]] **Orario delle Lezioni**: * Lunedì 11 - 13 (AA1) * Lunedì 14 - 16 (LA1) - Laboratorio * Martedì 9 - 11 (LA1) - Laboratorio * Mercoledì 14 - 16 (AA1) **Ricevimento studenti**: * su appuntamento (via email) ---- ===== Obiettivi del Corso ===== D1 - CONOSCENZA E CAPACITÀ DI COMPRENSIONE\\ Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: - Conoscere i concetti base della programmazione procedurale. - Conoscere i concetti base della programmazione orientata agli oggetti, con particolare riguardo al linguaggio Java. - Conoscere le principali funzionalità dell'ambiente di sviluppo Eclipse. D2 - CAPACITÀ DI APPLICARE CONOSCENZA E COMPRENSIONE\\ Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: - Programmare secondo il paradigma di programmazione procedurale. - Programmare secondo il paradigma di programmazione ad orientata agli oggetto, tramite il linguaggio Java. D3 - AUTONOMIA DI GIUDIZIO\\ Risultati attesi:\\ Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: - Identificare il modello a oggetti che descrive meglio un semplice problema. D4 - ABILITÀ COMUNICATIVE\\ Risultati attesi:\\ Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: - Documentare il codice in forma chiara e comprensibile usando lo standard del linguaggio usato. D5 - CAPACITÀ DI APPRENDIMENTO\\ Risultati attesi:\\ Al termine di questa attività formativa, lo studente dovrà dimostrare di essere in grado di: - Comprendere e imparare ad usare autonomamente sintassi e semantica di altri linguaggi di programmazione, imperativi o ad oggetti, nonché librerie aggiuntive e tecnologie analoghe. ---- ===== Contenuti del Corso ===== * Algoritmi, programmi e linguaggi di programmazione. * Compilatori, interpreti e approccio Java. * Tipi di dato primitivi in Java. * Sistema dei tipi, strutture dati di base e relativi algoritmi. * Concetti fondamentali di programmazione procedurale. * Iterazione e ricorsione. * Programmazione orientata agli oggetti in Java. * Ambiente di sviluppo Eclipse. ---- ===== Progetto ===== * Il progetto dovrà essere realizzato in gruppi di massimo 3 persone. La valutazione del progetto avverrà però singolarmente. * Eventuali dubbi sulla traccia possono essere discussi con il Prof. Culmone **durante le lezioni di laboratorio**. * Il progetto è disponibile su [[https://drive.google.com/drive/folders/0B82FyP8YKiFocjVrV2dOME9WdFk?usp=sharing]] nel file Progetto2018 ---- ===== Materiale ===== **Slide del Corso** * {{ :didattica:triennale:programmazione:ay_1819:intro_1819pdf.pdf |Informazioni generali}} * {{ :didattica:triennale:programmazione:ay_1819:calcolatori_e_programmi_1819.pdf |Calcolatori e programmi}} * {{ :didattica:triennale:programmazione:ay_1819:tipi_primitivi_1819.pdf |Tipi di dato primitivi}} * {{ :didattica:triennale:programmazione:ay_1819:selezione_e_ripetizione_1819.pdf |Selezione e ripetizione}} * {{ :didattica:triennale:programmazione:ay_1819:metodi_ricorsione_1819.pdf |Metodi e ricorsione}} * {{ :didattica:triennale:programmazione:ay_1819:programmazione_a_oggetti_1819.pdf |Programmazione ad oggetti}} **Riferimenti utili** * [[https://docs.oracle.com/javase/tutorial/java/javaOO/thiskey.html|Parola chiave "this"]] * [[https://docs.oracle.com/javase/tutorial/java/IandI/createinterface.html|Interfacce]] * [[https://docs.oracle.com/javase/tutorial/java/IandI/abstract.html|Classi e metodi astratti]] **Lezioni** * 02/10/2018: informazioni generali ([[https://unicam.webex.com/unicam/ldr.php?RCID=5ceffa522b266e086df9bd0e5049c8f0 |registrazione]]) * 03/10/2018: il metodo algoritmico; problemi indecidibili ([[https://unicam.webex.com/unicam/ldr.php?RCID=0f54ced97219dae388831accd4d9a30b|registrazione]]) * 15/10/2018: complessità; breve storia dei calcolatori; rappresentazione binaria ([[https://unicam.webex.com/unicam/ldr.php?RCID=d6a16a9fd1380c88cb90433fbea36a0f |registrazione]]) * 17/10/2018: algoritmi; diagrammi di flusso; compilatori e interpreti ([[https://unicam.webex.com/unicam/ldr.php?RCID=29e4ab93cc9e761ea320f9aa47764a75 |registrazione]]) * 22/10/2018: introduzione alle funzionalità base di Eclipse; variabili; input e output in Java--; tipi di dato primitivi; assegnazione ([[https://unicam.webex.com/unicam/ldr.php?RCID=b4c8d0110bdd9bde6f5d22ad66620a2a |registrazione]]) * 24/10/2018: perdita di precisione; commenti; conversioni di tipo; precedenze fra operatori; operatori di incremento e decremento ([[https://unicam.webex.com/unicam/ldr.php?RCID=876db5ca14cb58fbb1e6e131473aa4f5 |registrazione]]) * 29/10/2018: array; differenza fra array e tipi primitivi; espressioni booleane ([[https://unicam.webex.com/recordingservice/sites/unicam/recording/playback/373b167eb1fb4903a869233f404d17b6|registrazione]]) * 5/11/2018: metodi; istruzione return; call-by-value e call-by-reference; costrutto if; costrutto if-else, diramazioni multiple ([[https://unicam.webex.com/unicam/ldr.php?RCID=ce8bad09cc4b7b13baf2cfe4b9f23813|registrazione]]) * 7/11/2018: istruzione switch; cicli: while, do-while, for ([[https://unicam.webex.com/unicam/ldr.php?RCID=2eb914a1013ee473a34e211a126d8959 |registrazione]]) * 12/11/2018: Eclipse debugger; parametri formali e argomenti; variabili locali ([[https://unicam.webex.com/unicam/ldr.php?RCID=f9dbb604668050090870966fcc5e6f7d|registrazione]]) * 14/11/2018: array come parametri formali; ordinamento array; paradigma di programmazione procedurale ([[https://unicam.webex.com/unicam/ldr.php?RCID=144bf327676497baf12cc8ca4fe9eb70|registrazione]]) * 19/11/2018: ricorsione e iterazione; paradigma di programmazione orientata agli oggetti ([[https://unicam.webex.com/unicam/ldr.php?RCID=3d36e6d33b2e163f11ee2d32daa1a279|registrazione]]) * 21/11/2018: dichiarazione di classe; creazione e distruzione di oggetti; utilizzo di oggetti ([[https://unicam.webex.com/unicam/ldr.php?RCID=c177dfb48bc76c0cab0ef390c43447e2 |registrazione]]) * 3/12/2018: parametri formali di tipo classe; metodi costruttori; metodo main; accessori e mutatori ([[https://unicam.webex.com/unicam/ldr.php?RCID=710c7a32fca5ec260c5ff1de79b63aa1|registrazione]]) * 5/12/2018: classe String; Sovraccaricamento di metodi; Ereditarietà ([[https://unicam.webex.com/unicam/ldr.php?RCID=b08f11ab2da9a93e5ce1de6d36a70bd3 |registrazione]]) * 10/12/2018: polimorfismo; conversione di tipo classe ([[https://unicam.webex.com/unicam/ldr.php?RCID=acee2c92247a7bf0381b36673db28033|registration]]) * 12/12/2018: Modificatori public e private; Pacchetti: definizione e visibilità; Incapsulamento; Modificatore static ([[https://unicam.webex.com/unicam/ldr.php?RCID=de064eec06bbe04ed11d3f34a56a1e91|registration]]) * 19/12/2018: Modificatore final; Eccezioni: creazione, lancio, gestione; Accesso file di testo ([[https://unicam.webex.com/unicam/ldr.php?RCID=c102c19184cd2080e36d47e2f586dc5c|registration]]) * 7/1/2019: Esempi su modificatore static; esempi di uso di this ([[https://unicam.webex.com/unicam/ldr.php?RCID=7f729d5d3460199cde6a84d8276dde60|registrazione]]) * 9/1/2019: Interfacce e classi astratte ([[https://unicam.webex.com/unicam/ldr.php?RCID=c9176f4158828a60c9b34043bb760086|registrazione]]) * 14/1/2019: Panoramica su concetti di programmazione avanzata non trattati nel corso ([[https://unicam.webex.com/unicam/ldr.php?RCID=c612e81712e8f3bdf93ee8cfe8ab156c|registrazione]]) **Testi di Riferimento** * Pierluigi Crescenzi. Gocce di Java. Un'introduzione alla programmazione procedurale ed orientata agli oggetti (2a edizione, nuova edizione 2014). FrancoAngeli. **Strumenti** * [[https://github.com/LorenzoBettini/javamm | Java--]] * [[http://www.vogella.com/tutorials/Eclipse/article.html | Eclipse Tutorial]] ---- ===== Esami ===== **Fac-simile prova scritta** * {{ :didattica:triennale:programmazione:ay_1819:fac-simile.pdf |Fac-simile}} **Date Esami A.A. 2018/2019** * Appello I: 28/01/2019 ore 10:00 - Polo Lodovici - Aula LA1 * Appello II: 11/02/2019 ore 10:00 - Polo Lodovici - Aula LA1 * Appello III: 25/02/2019 ore 10:00 - Polo Lodovici - Aula LA1 * Appello IV: 20/05/2019 ore 10:00 - Polo Lodovici - Aula LA1 * Appello V: 03/06/2019 ore 10:00 - Polo Lodovici - Aula LA1 * Appello VI: 01/07/2019 ore 10:00 - Polo Lodovici - Aula LA1 * Appello VII: 13/09/2019 ore 10:00 - Polo Lodovici - Aula LA1 * Appello VIII: 27/09/2019 ore 10:00 - Polo Lodovici - Aula LA1 **Regole di esame**:\\ Il raggiungimento dei risultati di apprendimento è verificato attraverso le seguenti prove: * **Prova scritta** (questionario a risposta multipla). * **Progetto software** assegnato dai docenti. * **Prova orale** (discussione del progetto e domande di teoria). La prova orale può essere sostenuta solo se è stata superata la prova scritta. Il voto finale è la media dei voti delle prove scritta e orale. ** Calendario Prove Orali ** * {{ :didattica:triennale:programmazione:ay_1819:orali1819_appello8.pdf |Calendario orali Appello 8}}