PROGRAMMAZIONE I A - L

Documenti analoghi
PROGRAMMAZIONE II A - L

FONDAMENTI DI INFORMATICA - canale 1

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura

FONDAMENTI DI INFORMATICA - canale 2

FONDAMENTI DI INFORMATICA - canale 4

Sommario. Introduzione... xv. Giorno 1 Elementi base del linguaggio C

Corso di Programmazione I Introduzione

Università degli Studi di Enna Kore

Informatica triennale (L31) sede di Bari Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

Indice PARTE A. Prefazione Gli Autori Ringraziamenti dell Editore La storia del C. Capitolo 1 Computer 1. Capitolo 2 Sistemi operativi 21 XVII XXIX

Informatica e Comunicazione Digitale Crediti formativi 9. No, ma la frequenza è fortemente consigliata Lingua di erogazione

ALGORITMI E LABORATORIO

Architettura. Nome Modulo Tipologia lezioni Ore Docente SSD Ruolo Interno Affidamento. Vincenzo Conti

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

ISTITUTO STATALE D ISTRUZIONE SUPERIORE FERRARIS - BRUNELLESCHI EMPOLI Anno scolastico 2015/2016

Informatica e Tecnologie per la Produzione del Software

Informatica e Tecnologie per la Produzione del Software Crediti formativi 7+2

Introduzione alla programmazione con Java

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura

MODELLO SCHEDA INSEGNAMENTO

ECONOMIA E GESTIONE DELLE IMPRESE BANCARIE A - L

Introduzione alla programmazione con Java

Algoritmi e Strutture Dati

PIANO DI STUDIO DELLA DISCIPLINA DISCIPLINA: Informatica

INGEGNERIA DEL SOFTWARE

Marco Faella Introduzione al corso

DIPARTIMENTO DI MATEMATICA E INFORMATICA Corso di laurea in Informatica Anno accademico 2018/ anno

Università degli Studi di Enna Kore Facoltà di Ingegneria e Architettura

CONTABILITÀ E BILANCIO

Corso di Fondamenti di Informatica e Laboratorio

Argomento della lezione N. 2. Argomento della lezione N. 1. Presentazione del corso.

Corso di Laurea in Ingegneria Informatica (L8) Anno Accademico 2015/2016 FONDAMENTI DI INFORMATICA

ECONOMIA E GESTIONE DELLE IMPRESE BANCARIE M - Z

PIANO DI LAVORO PREVENTIVO. Piano di lavoro preventivo dei Proff. Nicola Christian Barbieri Filomena Daraio. Materia INFORMATICA

Università degli Studi di Enna Kore Facoltà di Ingegneria ed Architettura Anno Accademico

Linguaggi di Programmazione + Lab. A.A Docente: Marco de Gemmis. Presentazione dell insegnamento

La programmazione ad oggetti: chiamate di metodi. Overloading. This

PIANO DI LAVORO. Programmazione Didattica per Competenze. Indirizzo Informatica e Telecomunicazioni. Articolazione Informatica DOCENTE:

ANNO ACCADEMICO 2016/17. Informatica e Tecnologie per la Produzione del Software. Prof.Giovanni Dimauro. ANNO DI CORSO primo SEMESTRE primo

Capitolo 7 Un primo sguardo agli oggetti Schema e valori Elementi di classe e d istanza

ALGORITMI E COMPLESSITA'

Università degli Studi di Enna Kore Facoltà di Ingegneria e Architettura

Metodi Avanzati di Programmazione Informatica Triennale-Brindisi Corrado Loglisci

Indice. Introduzione PARTE PRIMA LE BASI DEL C++: IL LINGUAGGIO C 1

Università degli studi Magna Graecia di Catanzaro

DIPARTIMENTO DI MATEMATICA E INFORMATICA Corso di laurea in Informatica Anno accademico 2016/ anno

Algoritmi e Strutture Dati

PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii

SYLLABUS TRIENNIO. prof. Mauro Malatesta. Approvata dal Dipartimento di il. Approvata dal Consiglio di classe il...

PROGRAMMARE IN JAVA Volume I

Informatica industriale L-31. Corso di Programmazione e Laboratorio di Programmazione

CALCOLATORI ELETTRONICI M - Z

Indice. Prefazione. 3 Oggetti e Java 53

PROGRAMMAZIONE E CONTROLLO

FONDAMENTI DI INFORMATICA

INFORMATICA Corso di Laurea in Fisica a.a. 2015/2016

Il computer. Il case e l'unità di elaborazione. Il computer, una macchina aggiornabile.

ITI M. FARADAY. Programmazione a. s

PROGRAMMAZIONE DISCIPLINARE

PROGRAMMAZIONE E CONTROLLO

PROGRAMMAZIONE DISCIPLINARE LICEO SCIENTIFICO OPZIONE SCIENZE APPLICATE INFORMATICA CLASSE TERZA

Sommario PREFAZIONE... XI CAPITOLO 1: INTRODUZIONE: I COMPUTER, LA PROGRAMMAZIONE E IL C

CALCOLATORI ELETTRONICI

Docente: Prof. Marco Patella Tutor: Lorenzo Rosa

Docente: Prof. Marco Patella Tutor: Stefano Pio Zingaro

CALCOLATORI ELETTRONICI

Fondamenti di informatica. Introduzione al corso di Fondamenti di informatica I e II (informatici) Anno Accademico

Informatica industriale L-31. Corso di Programmazione e Laboratorio di Programmazione

Metodi Avanzati di Programmazione 2012/2013 Informatica (Brindisi) Loglisci Corrado

Piano di Lavoro. di INFORMATICA. Secondo Biennio

Prefazione. Capitolo 1 Sistemi di elaborazione 1

ISTITUZIONE SCOLASTICA DI ISTRUZIONE TECNICA LYCÉE TECHNIQUE PROGRAMMAZIONE EDUCATIVA E DIDATTICA ANNUALE PER COMPETENZE A.S.

INFORMATICA LINEE GENERALI E COMPETENZE

Elementi di Informatica

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

Università degli Studi di Bologna. Facoltà di Ingegneria CORSO DI INGEGNERIA DEL SOFTWARE. Prof. Evelina Lamma

Fondamenti di Informatica e Laboratorio T-AB

PROGETTAZIONE DIDATTICA

PROGRAMMAZIONE INFORMATICA SECONDO BIENNIO. Liceo Scientifico opzione Scienze Applicate

FONDAMENTI DI INFORMATICA

Docenti Prof.ssa Biagini Barbara Prof. Sollitto Carlo INDIRIZZO DI STUDI SISTEMI INFORMATIVI AZIENDALI

Docente: Prof. Marco Patella Tutor: Vincenzo Lomonaco

Fondamenti di Informatica e Laboratorio T-AB

Principi di Progettazione del Software a.a Introduzione al corso Prof. Luca Mainetti Università del Salento

Corso di Laurea Ingegneria Informatica

Esercizi di autovalutazione Risposte agli esercizi di autovalutazione Esercizi... 64

algoritmi e strutture di dati

Fondamenti di Informatica. Proff. B.Buttarazzi & A.D Ambrogio A.A. 2011/2012

Informatica industriale L-31. Corso di Programmazione 1

Fondamenti di Informatica e Laboratorio T-AB

ISTITUTO SUPERIORE ENRICO FERMI. PROGRAMMAZIONE DEL GRUPPO DISCIPLINARE INFORMATICA IT INDIRIZZO INFORMATICA E TELECOMUNICAZIONI a.s.

Transcript:

DIPARTIMENTO DI MATEMATICA E INFORMATICA Corso di laurea in Informatica Anno accademico 2016/2017-1 anno PROGRAMMAZIONE I A - L INF/01-9 CFU - 1 semestre Docente titolare dell'insegnamento GIANLUCA CINCOTTI Email: cincotti@dmi.unict.it Edificio / Indirizzo: Dip. Matematica e Informatica - III blocco, studio 53 Telefono: 095-7383020 Orario ricevimento: Martedì h.9-10 OBIETTIVI FORMATIVI Descrizione generale sintetica Il corso presenta i fondamenti di programmazione degli elaboratori adottando C++ come linguaggio di riferimento. In particolare sono presentati i concetti base della programmazione strutturata e di quella OOP (Object- Oriented Programming) senza tralasciare la codifica di algoritmi notevoli ed alcune tecniche di progettazione di software OOP. Obiettivi formativi generali dell'insegnamento in termini di risultati di apprendimento attesi Conoscenza e capacità di comprensione (knowledge and understanding): l'obiettivo primario del corso è individuato nell acquisizione da parte degli studenti della filosofia della programmazione strutturata e di quella OOP, oltre che nella conoscenza dettagliata della sintassi e della semantica del linguaggio di programmazione C++. Il corso rivolge una particolare attenzione allo sviluppo di codice ben scritto e ben strutturato utilizzando le tecniche di base per lo sviluppo di software nel paradigma Object-Oriented. Capacità di applicare conoscenza e comprensione (applying knowledge and understanding): si intende fornire gli strumenti per conseguire le seguenti abilità pratiche e professionali: - Tradurre in codice idee algoritmiche; - Progettare, descrivere ed implementare programmi in C++; - Debuggare programmi C++ con tools professionali; - Comprendere semplici algoritmi ricorsivi; - Analizzare e descrivere soluzioni Object-Oriented mediante diagrammi UML (Unified Language Modeling) delle classi; - Progettare, implementare ed utilizzare correttamente gerarchie di classi polimorfe e codice

generico; - Leggere, comprendere ed analizzare codice C++ di terze parti anche in termini di efficienza; - Orientarsi nella documentazione delle librerie. Autonomia di giudizio (making judgements): attraverso l'esame di numerosi esempi di codice Object-Oriented e una consistente componente pratica che prevede lo svolgimento di esercizi all'elaboratore, il discente sarà in grado, sia in forma autonoma che in forma cooperativa, di analizzare problemi e progettare ed implementare le relative soluzioni software. Abilità comunicative (communication skills): lo studente acquisirà le necessarie abilità comunicative e di appropriatezza espressiva nell'impiego del linguaggio verbale tecnico e del linguaggio visuale UML nell'ambito della programmazione degli elaboratori. 5. Capacità di apprendimento (learning skills): il corso intende fornire al discente le necessarie metodologie teoriche e pratiche da mettere in campo in contesti professionali e, in particolare, la capacità di formulare algoritmi ad-hoc per la risoluzione di nuovi problemi e la possibilità di acquisire facilmente ed in breve tempo un altro linguaggio di programmazione Object-Oriented. PREREQUISITI RICHIESTI Nessun prerequisito. FREQUENZA LEZIONI Bi-settimanale secondo il calendario pubblicato in www.dmi.unict.it CONTENUTI DEL CORSO Modulo A Elementi di Programmazione Imperativa ed Orientata agli Oggetti (3CFU) Introduzione alla programmazione a. Problemi; Algoritmi; Diagrammi di flusso. b. Variabili; Espressioni; Assegnazioni. c. Notazione lineare strutturata; Teorema di Böhm-Jacopini. d. Struttura dati array. Linguaggi di programmazione : C++ a. Linguaggi di programmazione: macchina, assembly e di alto livello. b. Problema della traduzione : compilazione ed interpretazione. c. Installazione del compilatore; Primo programma: Editing, Compiling, Running, Debugging. Costrutti del linguaggio a. Tipi di dato; Operatori predefiniti; Conversioni di tipo; Gestione dell I/O. b. Controllo del flusso: costrutti di selezione if-then-else e switch, ed iterativi while e do-while. Introduzione alla Programmazione Orientata agli Oggetti a. Oggetti: stato e comportamento; Classi; Istanziazione di oggetti: costruttori. b. Messaggi: struttura, parametri, tipi di messaggi. c. Relazione di composizione/aggregazione per gli oggetti.

5. Struttura dati array e stringhe di caratteri a. Array di tipi predefiniti e di oggetti. Array bidimensionali. b. Costrutto iterativo for. c. Sequenze di caratteri : array di char ed oggetti stringa. Modulo B Caratteristiche avanzate del linguaggio C++ (2,5CFU) Dichiarazione di classi a. Struttura della classe: attributi ed operazioni; Modificatori di accesso. b. Implementazione di metodi: valore di ritorno, passaggio di parametri per valore e per riferimento; Categorie di memorizzazione delle variabili; Regole di visibilità. c. Implementazione del costruttore. Puntatori ed Array a. Puntatori; Operatori di indirizzo e di dereferenzazione. Aritmetica dei puntatori. Puntatori ed array; Puntatori come parametro; Allocazione dinamica della memoria. b. Puntatori a funzioni; Il puntatore this; Indirizzamento multilivello. c. Riferimenti; Enumerazioni; Unioni; Campi di bit. d. Array 2D : Array allocati dinamicamente, Array come parametri, Array frastagliati; Array multidimensionali;. Elementi avanzati del linguaggio a. Il modificatore const per i puntatori e per i metodi; Argomenti standard per i parametri di funzioni. Clausola Namespace; Dichiarazioni forward; Funzioni inline. b. Implementazione della relazione di composizione/aggregazione. c. Overloading di metodi; Costruttori e distruttori. Costruttore di copia. d. Funzioni e classi friend; Attributi e metodi statici. Modulo C Tecniche di Programmazione (0,5CFU) Algoritmi notevoli a. Algoritmi di Ricerca: lineare in una sequenza ordinata e non, ricerca con sentinella, ricerca del massimo/minimo, ricerca dicotomica iterativa. b. Algoritmi di Ordinamento: Bubblesort, Selectionsort, Insertionsort. c. Algoritmi di Fusione: Natural-merge. Ricorsione a. Definizione di metodi ricorsivi; Calcolo del fattoriale. b. Gestione delle chiamate ai metodi mediante stack delle attivazioni. c. Ricorsione di coda e non di coda. d. Efficienza della ricorsione: numeri di Fibonacci. e. Applicazioni della ricorsione: Ricerca dicotomica, Torre di Hanoi, Segmentazione binaria di un righello. Modulo D Progettazione di software orientato agli oggetti (3CFU) Ereditarietà a. Definizione; Relazione ISA; Derivazioni e modalità di accesso: protected.

5. b. Gerarchie ereditarie di classi. Overriding di metodi. Operatore :: risolutore di scope. c. Lista di inizializzazione e modalità d esecuzione di costruttori e distruttori ereditati. d. Ereditarietà multipla. Classi base virtuali. Polimorfismo e Classi astratte a. Puntatori a classi derivate; Funzioni virtuali; Late-binding. Polimorfismo. b. Gerarchie ereditarie di classi polimorfe. c. Funzioni virtuali pure; Classi astratte; Interfacce. d. RTTI: typeid e dynamic_cast. Principi di progettazione orientata agli oggetti a. Diagrammi UML per le classi. b. Progettazione ed analisi nel paradigma OOP. Overloading degli operatori. a. Tipo di overloading di operatori : non-membro, friend, membro. b. Operatori prefissi e postfissi ++ e --. c. Cenni ad operatori di assegnamento =, di indicizzazione [ ] e ( ) e di cast. d. Operatori di I/O. Programmazione generica. a. Funzioni generiche. Classi generiche. TESTI DI RIFERIMENTO 5. 6. 7. H.M. Deitel, P. J. Deitel, C++ Fondamenti di programmazione Apogeo Eckel, Thinking in C++, Vol. I, 2 Ed. (anche online ed in italiano) Horstmann, C++ for everyone, 2 Ed. Wiley (anche online) Lippman, Lajoye, C++ Corso di programmazione, 3 Ed. Addison Wesley Pohl, Object-Oriented Programming Using C++, 2 Ed. Addison Wesley Schildt, C++ La guida completa, 2 Ed. McGraw-Hill (anche online) Stroustrup, C++ Linguaggio, libreria standard, principi di programmazione, 3 Ed. Addison Wesley I libri (1), (2), (3) ed (6) sono consigliati ai principianti. Il libro (3) è fortemente consigliato ai principianti per la grande quantità di esercizi presenti in esso. I libri (4) e (5) sono di livello intermedio e sono consigliati a chi è già nota la programmazione. Il libro (7) è di livello avanzato ed è consigliato a chi è già nota la programmazione. MATERIALE DIDATTICO Tutto il materiale diattico è reso disponibile dal docente. VERIFICA DELL'APPRENDIMENTO MODALITÀ DI VERIFICA DELL'APPRENDIMENTO L esame consiste nella verifica degli obiettivi preposti per il corso e cioè: a. la capacità di descrivere ed implementare semplici procedimenti algoritmici,

b. la conoscenza dettagliata del linguaggio di programmazione C++, c. la capacità di applicare il paradigma orientato agli oggetti (OOP) allo sviluppo del software. A tal fine l esame è composto da tre prove indipendenti atte a verificare i precedenti punti e si intenderà superato quando tutte e tre le prove saranno valutate sufficientemente: prova teorica di programmazione imperativa (verifica gli obiettivi (a) e (b)), prova pratica di laboratorio (verifica gli obiettivi (b) e (c)), prova teorica di programmazione orientata agli oggetti (verifica gli obiettivi (b) e (c)). Le prove 1), 2) e 3) sono da considerarsi propedeutiche, pertanto, possono accedere alla prova 2) tutti coloro che abbiano superato la prova 1), e possono accedere alla prova 3) tutti coloro che abbiano superato la prova 2). Le varie prove possono essere superate in momenti differenti; la sufficienza conseguita in una certa prova sarà considerata valida per tutto l A.A. (fino a Dicembre successivo al corso). Ad ogni appello gli studenti potranno sostenere tutti e tre i tipi di prove, in particolare: la prova 1) può essere sostenuta alla data ufficiale dell appello; la prova 2) può essere sostenuta alla data che sarà pubblicata nella homepage del docente (tale data sarà tipicamente 7 gg. dopo la data dell appello). Per accedere al tale prova è necessario esibire il tesserino per il laboratorio ed utilizzare il corrispondente account assegnato. la prova 3) può essere sostenuta nello studio del docente durante un qualunque orario di ricevimento. Per accedere a tale prova lo studente deve risultare prenotato nel portale studenti. DATE DEGLI APPELLI Tutte le date d'esame sono pubblicate nel sito www.dmi.unict.it PROVE IN ITINERE E' prevista una prova in itinere in prossimità dell'interruzione natalizia. Il test consiste nella prova teorica (1) di programmazione imperativa (verifica gli obiettivi (a) e (b)). Il risultato conseguito ha la stessa valenza di quello di un appello ufficiale. PROVE DI FINE CORSO Prova teorica di programmazione imperativa. Si tratta di un compito scritto, valutato in trentesimi (V 1 ), in cui è richiesta la scrittura di due metodi in C++. Gli studenti hanno facoltà di ripetere tale prova scritta al fine di migliorare la votazione conseguita; in tal caso la votazione precedente viene annullata d ufficio al momento della consegna del nuovo compito svolto dallo studente. La votazione (V 1 ) si intende accettata se lo studente partecipa ad una qualsiasi prova di laboratorio (2). Prova pratica di laboratorio. Si tratta di un esercizio di programmazione orientata agli oggetti da sviluppare in C++ all elaboratore. La prova è giudicata sufficiente o insufficiente a seconda che l output del codice prodotto sia esatto o non esatto; ad essa è associata una votazione (V 2 ) che va da -2 a +

Prova teorica di programmazione orientata agli oggetti. Si tratta di un colloquio, valutato in trentesimi (V 3 ), che verte sui concetti tipici della OOP ed in cui è richiesta la modellazione di software tramite diagrammi UML delle classi. La votazione finale, espressa in trentesimi, è così calcolata (V 1 +V 3 )/2 + (V 2 - P), dove P è il numero di prove di laboratorio (2) non superate.