Programmazione I [Matricole pari] (2018/2019)



Codice insegnamento
4S02723
Crediti
12
Coordinatore
Nicola Bombieri
Settore disciplinare
INF/01 - INFORMATICA
Lingua di erogazione
Italiano
L'insegnamento è organizzato come segue:
Attività Crediti Periodo Docenti Orario
Teoria 8 II semestre, I semestre Nicola Bombieri

Vai all'orario delle lezioni

Laboratorio 4 II semestre, I semestre Ancora Da Definire

Vai all'orario delle lezioni

Obiettivi formativi

Il corso si propone di fornire le conoscenze base per la scrittura di programmi in un linguaggio imperativo di natura procedurale (es. C), con enfasi sulla relazione tra programma e architettura dell'elaboratore che esegue il programma, sul concetto di ricorsione e sulla realizzazione di semplici strutture dati, ricorsive e non ricorsive.

Al termine del corso lo studente dovrà dimostrare di avere conoscenze e capacità di comprensione inerenti i principi alla base della programmazione in un linguaggio imperativo di natura procedurale, capacità di organizzare, implementare e tradurre in tale linguaggio e capacità di analizzare mediante debugging di algoritmi risolutivi e delle corrispondenti strutture dati partendo da specifiche; saper sviluppare le competenze necessarie per proseguire gli studi in modo autonomo nell’ambito della programmazione e dello sviluppo SW.

Programma

Teoria:
-----------
• Introduzione al corso.
• Concetti fondamentali: programmazione, linguaggio di alto livello, sistemi operativi, compilazione dei programmi.
• Compilazione ed esecuzione del primo programma: compilazione del primo programma, esecuzione del primo programma, descrizione del primo programma, visualizzazione delle variabili, commenti.
• Variabili, tipi di dati ed espressioni aritmetiche: operare con le variabili, tipi di dati e costanti, operare con le espressioni aritmetiche, combinare le operazioni con l’assegnamento – gli operatori di assegnamento.
• Iterazione: l’istruzione for, l’istruzione while, l’istruzione do.
• Prendere decisioni: l’istruzione if, l’istruzione switch, variabili booleane, l’operatore condizionale.
• Operazioni con gli array: definire un array, inizializzare un array, array di caratteri, array multidimensionali.
• Le funzioni: definire una funzione, argomenti e variabili locali, restituire i risultati di una funzione, funzioni che chiamano funzioni, che chiamano.., programmazione top-down, funzioni e array, variabili globali, variabili automatiche e statiche, funzioni ricorsive.
• Le strutture: una struttura per memorizzare data, funzioni e strutture, inizializzare le strutture, array di strutture, strutture contenenti strutture, strutture contenenti array, varianti delle strutture.
• Stringhe di caratteri: array di caratteri, stringhe di caratteri di lunghezza variabile, sequenze di escape, altre informazioni sulle stringhe costanti, stringhe di caratteri, strutture e array, operazioni con i caratteri.
• Puntatori: definire un puntatore, utilizzare i puntatori nelle espressioni, puntatori e strutture, puntatori e funzioni, puntatori e array, operazioni sui puntatori, puntatori e indirizzi di memoria.
• Il preprocessore: la direttiva #define, la direttiva #include, compilazione condizionale.
• Operazioni di input/output: I/O di caratteri – getchar e putchar, I/O formattato – printf e scanf.
• Caratteristiche varie e avanzate: Istruzioni varie del linguaggio, operatore virgola, allocazione dinamica della memoria.

Laboratorio:
-------------------
• Introduzione al corso, file system, bash, editor
• Prova pratica in laboratorio di tutti gli argomenti presentati nella parte teorica: esempi, esercizi.
• Debugging di codice C: gdb, ddd e CodeBlocks.

Modalità d'esame

L'esame è unificato con la parte di Laboratorio. Esso consiste in due parziali. Il primo parziale si svolgerà indicativamente a Febbraio e il secondo parziale a Giugno. Il voto finale sarà ottenuto dalla media dei voti dei due esami parziali. Oltre ai parziali, gli studenti hanno a disposizione le normali 4 sessioni di esame totale annuali, a partire da quella di Giugno, in cui si svolgeranno esami sulla totalità del programma.
I compiti (parziali o totali) consistono nella scrittura di programmi al calcolatore, in laboratorio.
Per superare l'esame gli studenti dovranno dimostrare di:
- aver compreso i principi alla base della programmazione in C;
- essere in grado di sviluppare codice C a di analizzare la sua correttezza nonche' problemi tramite debuggin;
- saper applicare le conoscenze acquisite per implementare algoritmi risolutivi partendo da specifiche date sottoforma di esercizi;
Verrà valutata la capacità di organizzare l'algoritmo e le strutture dati e di tradurli in linguaggio C.

Testi di riferimento
Attività Autore Titolo Casa editrice Anno ISBN Note
Teoria Stephen G. Kochan Programmare in C (Edizione 3) Pearson 2011 9788871926605