PROGRAMMAZIONE PROCEDURALE CON LABORATORIO






Progetto di esame 2023/2024

Il testo del progetto è visibile al seguente link.

Correzione appello scritto 15 Gennaio 2024 link.

Correzione appello scritto 30 Gennaio 2024 link.

Correzione appello scritto 12 Febbraio 2024 link.

Correzione appello scritto 26 Marzo 2024 link.




Risultati esercizio cifrari 2023/2024

I suggerimenti per ogni esercizio: link.




Linee guida per l'esame

DA LEGGERE ATTENTAMENTE: L'esame si suddivide in 1) una prova scritta, 2) un progetto di programmazione individuale (assegnato a Dicembre 2023), 3) ed infine una prova orale. Alla prova scritta è possibile utilizzare penna/matita/gomma e calcolatrice NON scientifica. Esempi di prove degli anni passati (con relativa correzione) sono presenti in fondo a questa pagina. Se si supera la prova scritta, si può sostenere la prova orale relativa allo stesso appello della prova scritta superata; il voto della prova scritta superata NON sarà conservato per appelli successivi. Per partecipare alla prova scritta è NECESSARIO aver sottomesso il progetto. Il progetto dovrà essere sottomesso (via GitHub) tramite l'apposito link che verrà pubblicato (qui e su Unistudium) per ogni appello: sarà pubblicato un link diverso per ogni appello d'esame. La scadenza per la consegna del progetto sarà due giorni circa prima della data dello scritto. La prova orale avverrà solitamente la settimana successiva alla prova scritta. Senza progetto non si potrà sostenere la prova scritta. È NECESSARIO quindi completare il progetto PRIMA dello scritto. Se non si supera la prova scritta o orale, si dovrà risottomettere il progetto al link GitHub dell'appello al quale si parteciperà in futuro (si potrà anche modificare il progetto, se desiderato). In sede di prova orale, sarà richiesta una modifica al progetto sottomesso, più alcune domande sul programama svolto a lezione.

Quindi in ordine, nello stesso appello si dovrà
consegnare il progetto -> passare la prova scritta -> passare la prova orale

FAQ:
-Ho sostenuto lo scritto al primo appello di Gennaio, posso portare il progetto e sostenere l'orale al secondo appello di Gennaio o successivamente? No, il voto dello scritto è inoltre perso per sempre.
-Se ho passato lo scritto, ma poi mi sono presentato all'orale e non l'ho superato, devo superare di nuovo anche lo scritto? Sì.
-Avevo giò sottomesso il progetto a Gennaio, ma poi non ho sostenuto la prova orale. Mi sento preparato per l'orale di Febbraio, devo risottomettere anche il progetto? Sì, il progetto deve essere sottomesso al link corrispondente per l'appello di esame in cui ci si vuole presentare.
-Se non ho passato l'esame, mi posso presentare subito all'appello successivo? Sì, ci si può presentare a tutti gli appelli disponibili (sono 8 nel corso dell'anno).
-Come viene calcolato il voto complessivo? Voto dello scritto, più 1-4 punti per il progetto, più 2 punti per le domande orali (INDICATIVAMENTE). Se la prova orale non sarà però convincente, potranno essere però sottratti un numero imprecisato di punti.
-Se il progetto non compila, oppure è incompleto (manca per esempio una funzione richiesta), va bene lo stesso? No, l'esame si ritiene immediatamente non superato.
-Cosa succede se non so modificare il progetto finale, che ho programmato a casa, in sede di orale? La modifica è requisito necessario per il passaggio dell'esame, che quindi automaticamente non viene superato.
-Posso copiare tutto o in parte il progetto di un collega? No, i progetti saranno automaticamente controllati con un software antiplagio: se la somiglianza rilevata oltrepasserà una certa soglia, tutti e due i progetti saranno annullati.



Lezioni (Lunedì 9-11; Martedì 14-16; Mercoledì 9-11; Giovedì 11-13) / Lectures (Monday 9-11; Tuesday 14-16; Wednesday 9-11; Thursday 11-13

Materiale disponibile anche su Unistudium alla pagina del corso

  • 26 September 2023 (14-16).
    • Introduction pdf
    • Exercises: Flowcharts pdf
    • Exercises: Flowcharts with solution pdf
  • 27 September 2023 (9-11).
    • Programming environment pdf
  • 28 September 2023 (11-13).
    • Language basics pdf
  • 4 October 2023 (9-11).
    • Language basics
  • 5 October 2023 (11-13).
  • 6 October 2023 (11-13).
    • C Basics
  • 10 October 2023 (14-16).
    • Types in C pdf
  • 11 October 2023 (9-11).
    • Types in C
  • 12 October 2023 (11-13).
    • Types in C
  • 13 October 2023 (11-13).
    • Types in C
    • Programming exercises pdf
    • Exercises on binary/hexadecimal/octal and representation pdf
    • Literals pdf
  • 17 October 2023 (14-16).
    • Type conversions pdf
  • 18 October 2023 (9-11).
    • Type conversions
    • Exercises
  • 19 October 2023 (11-13).
    • Type conversions
  • 20 October 2023 (11-13).
    • Expressions pdf
    • Exercises on type conversions pdf
  • 24 October 2023 (14-16).
    • Expressions
  • 26 October 2023 (11-13).
    • Expressions
    • Exercises on expressions pdf
  • 27 October 2023 (11-13).
    • Expressions
    • Exercises
  • 31 October 2023 (14-16).
    • Commands (while, for, do while, if, switch, unconditional jumps) pdf
  • 2 November 2023 (11-13).
    • Commands
  • 3 November 2023 (11-13).
    • Exercises in class
  • 7 November 2023 (14-16).
  • 10 November 2023 (11-13).
    • Arrays
    • Esercizio assegnato
  • 14 November 2023 (11-13).
  • 15 November 2023 (9-11).
    • Arrays
  • 16 November 2023 (11-13).
    • Examples of loops and ifs pdf
    • Exercises on statements pdf
  • 17 November 2023 (11-13).
  • 21 November 2023 (14-16).
    • Pointers
    • Exercises on pointers pdf
    • Programming exercises pdf
  • 22 November 2023 (9-11).
    • Funcions and call by reference pptx
  • 23 November 2023 (11-13).
    • Dynamic memory pptx
  • 24 November 2023 (11-13).
    • Dynamic memory
  • 28 November 2023 (14-16).
    • Hello World!
    • Structs and Unions pdf
  • 29 November 2023 (11-13).
    • Structs and Unions
    • Memory pptx
  • 30 November 2023 (11-13).
    • Memory
  • 1 December 2023 (11-13).
    • Linked lists pptx
    • Exercises
  • 1 December 2023 (11-13).
    • Linked lsits
    • Exercises
  • 5 December 2023 (14-16).
    • Linked lists
    • Linkage pdf
  • 6 December 2023 (9-11).
    • Linkage
  • 7 December 2023 (11-13).
    • Compiler/debugger pdf
  • 12 December 2023 (14-16).
    • Exercises
  • 13 December 2023 (9-11).
    • Exercises
  • 14 December 2023 (11-13).
    • Exercises
  • 19 December 2023 (14-16).
    • Exercises
    • Appunti su esercizi in aula link


Link utili / Useful Links





Libri di riferimento / Reference Books

In ordine di importanza dal primo all'ultimo. Il libro di testo consigliato è il PRIMO dei tre.

In order of importance, from top to bottom. The reference book for this course is the FIRST one.

Il Linguaggio C Il linguaggio C. Fondamenti e tecniche di programmazione. Ediz. Mylab. Con espansione online, Paul J. Deitel and Harvey M. Deitel (Authors), Publisher: Pearson; 9 edizione, ISBN-10: 8891906239, Pages: 736, 2022.



Altri testi consultabili secondariamente al precedente testo principale

C. Didattica e programmazione C didattica e programmazione. Ediz. mylab. Con espansione online, Al Kelley and Ira Pohl (Authors), Publisher: Pearson; 2 edizione, ISBN: 9788891908216, Pages: 670+, 2018.

C pocket reference C Pocket Reference, Peter Prinz, Ulla Kirch-Prinz, Publisher: O'Reilly Media, ISBN-10: 0596004362, Pages: 144, 2002.

C in a Nutshell (book cover)C in a Nutshell: The Definitive Reference, Peter Prinz, Tony Crawford, Publisher: O'Reilly Media, ISBN-10: 1491904755, 824 pages, 2015.



Altri libri / More books

Altri libri sul linguaggio C:
  • Il linguaggio C. Principi di programmazione e manuale di riferimento, Brian W. Kernighan (Autore), Dennis M. Ritchie (Autore), ISBN-10: 887192200X, 2004 (Pearson).


Programma corso / Course program

  • Introduction to programming languages
  • Interpreted and compiled languages
  • Names, scope, binding
  • Memory (static, stack, heap)
  • GitHub
  • C language:
    • Language Basics
    • Types
    • Literals
    • Type conversions
    • Expressions and operators
    • Statements
    • Loops
    • Conditional statements
    • Functions
    • Arrays
    • Pointers
    • Structures and Unions
    • Dynamic Memory Management
    • Input and Output
    • Pre-processing directives
    • Compiling with GCC
    • Using make to build C Programs
    • Debugging C Programs with GDB
  • Linked lists


Date appelli esame 2023/2024 / Exam dates 2023/2024

  • 15 Gennaio 2024 / 15 January 2024
  • 29 Gennaio 2024 / 29 January 2024
  • 12 Febbraio 2024 / 12 February 2024
  • 27 Marzo 2024 / 27 March 2024
  • 4 Giugno 2024 / 4 June 2024
  • 18 Giugno 2024 / 18 June 2024
  • 3 Settembre 2024 / 3 September 2024
  • ?? Novembre 2024 / ?? Nomvember 2024


  • Esami scritti / Written exams

    Soluzioni/Solutions 2022-2023: zip

    Soluzioni/Solutions 2021-2022: zip

    Soluzioni/Solutions 2019-2020: zip

    Soluzioni/Solutions 2018-2019: zip

    Soluzioni/Solutions 2018-2019: zip

    Soluzioni/Solutions 2017-2018: zip

    Soluzioni/Solutions 2016-2017: zip

    Soluzioni/Solutions 2015-2016: zip

    Progetto / Project

    2022-2023: pdf possibile soluzione

    2021-2022: pdf possibile soluzione

    2020-2021: pdf possibile soluzione

    2019-2020: pdf possibile soluzione

    2018-2019: pdf possibile soluzione

    2017-2018: pdf possibile soluzione

    2016-2017: pdf possibile soluzione



    More slides / Slides aggiuntive

    • From C to C++ (first part) slides
    • From C to C++ (second part) slides


    Contatti / Contacts

    Ricevimento studenti su appuntamento, si prega contattare il docente per mail o Telegram (vedere sotto)

    Posso essere contattato direttamente e più velocemente tramite Telegram.

    Iscrivetevi al canale Telegram del corso Programmazione Procedurale con laboratorio per avere velocemente comunicazioni generali (per esempio i risultati degli esami).


    Please contact me for hoffice hours by email or Telegram (see my contacts below)

    I can be directly and more easily contacted via Telegram.

    Please subscribe to the Telegram channel of the course Programmazione Procedurale con laboratorio in order to quickly receive general communications (e.g., exam results).



Francesco Santini