Dettaglio insegnamento

PROGRAMMAZIONE 1

MF0207

Insegnamento
PROGRAMMAZIONE 1
Codice
MF0207
Anno Accademico
2025/2026
Anno regolamento
2025/2026
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
CFU
9
Ore di lezione
72
Settore Scientifico Disciplinare (SSD)
INF/01 - INFORMATICA
Tipo di insegnamento
Attività formativa monodisciplinare
Fruizione insegnamento
OBB - Obbligatoria
Anno
1
Periodo
Primo Semestre
Sede
VERCELLI
Lingua insegnamento
Italiano
Contenuti
Il corso ha la finalità di introdurre i fondamenti della programmazione degli elaboratori elettronici, partendo dal concetto di algoritmo e dalla descrizione dei concetti di base di un programma, per arrivare a concetti avanzati di strutture dati e di controllo dei linguaggi di programmazione. Il corso si propone, inoltre, di presentare i concetti di base del linguaggio di programmazione C impiegato a supporto dell’insegnamento della programmazione, nonché per lo svolgimento di esercitazioni pratiche in laboratorio.
Testi di riferimento
- Kelley, Pohl, “C: didattica e programmazione”, Pearson Italia, 2a edizione, 2018, https://he.pearson.it/bundle/654?isbn=9788891908216 - P. Deitel, H. Deitel, “Il linguaggio C: Fondamenti e tecniche di programmazione”, Pearson Italia, 9a edizione, 2022, https://he.pearson.it/bundle/500?isbn=9788891906236 - Kernighan, Ritchie, “Il linguaggio C: Principi di programmazione e manuale di riferimento”, Pearson Italia, 2a edizione, 2018, https://he.pearson.it/bundle/679?isbn=9788891908230
Obiettivi formativi
La Studentessa/lo Studente deve conoscere i costrutti di base della programmazione, le strutture dati di base (variabili, costanti, array) e l'organizzazione del programma in più funzioni.

Dato un problema di media complessità, la Studentessa/lo Studente deve essere in grado di individuare i possibili dati di input, i possibili dati di output e l'algoritmo che risolve il problema. Inoltre la Studentessa/lo Studente deve essere in grado di scrivere un programma in linguaggio C corrispondente all'algoritmo, di compilarlo ed eseguirlo.
Prerequisiti
Nessuno
Metodi didattici
Il corso si articola in lezioni frontali in aula e in esercitazioni al calcolatore in laboratorio.
Le lezioni frontali occupano circa 48 ore.
Le esercitazioni occupano circa 24 ore.

Modalità:
durante le lezioni frontali si presentano gli aspetti teorici della programmazione (algoritmi, costrutti, strutture dati, ecc.). Inoltre, tramite un calcolatore collegato ad un proiettore, si mostra come tali aspetti si possono implementare al calcolatore.
Per ogni argomento vengono presentati vari esempi di problemi ed i corrispondenti algoritmi e programmi.
Durante le lezioni in laboratorio si richiede alle Studentesse/agli Studenti di realizzare gli stessi programmi visti in aula, e di realizzarne altri che risolvono problemi analoghi.

Strumenti:
per assimilare in modo graduale i concetti di algoritmo e di programma, e i relativi costrutti, all'inizio del corso gli algoritmi vengono definiti tramite vari livelli di astrazione: diagramma di flusso, pseduo-codice, linguaggio di programmazione.
Dato che si tratta di un corso di programmazione di base, i programmi vengono scritti al calcolatore tramite un comune editor di testo. Per abituare le Studentesse/gli Studenti all'uso del terminale (utile per insegnamenti successivi), la compilazione e l'esecuzione dei programmi avviene dalla riga di comando del terminale. Oltre ai comandi di compilazione ed esecuzione, vengono presentati ed applicati i principali comandi da terminale.
Durante il corso, l'apprendimento viene verificato tramite lo svolgimento di una serie di esercizi per ogni argomento del corso. Ogni esercizio richiede la definizione di un algoritmo e la scrittura in linguaggio C del programma corrispondente.
Durante le lezioni di laboratorio, ogni esercizio viene introdotto, si definisce sommariamente la struttura del programma, si richiede alle Studentesse/agli Studenti di completare in modo autonomo il programma entro un certo periodo di tempo, dopodiché si fornisce la soluzione dell'esercizio per verificare la correttezza.
Alla fine del corso vengono svolte alcune simulazioni di esame, al calcolatore, per consentire alle Studentesse/agli Studenti di rendersi conto di quanto richiesto effettivamente all'esame.
Oltre alle ore di laboratorio, il corso prevede delle ore di tutorato in cui le Studentesse/gli Studenti possono continuare gli esercizi, chiarire eventuali dubbi, o richiedere che un argomento venga spiegato una seconda volta.
Il corso ha una propria pagina nella piattaforma DIR (Didattica in Rete), che contiene le slide del corso, i programmi presentati in aula, i programmi preparati in laboratorio, i programmi preparati durante il tutorato, le prove d'esame del passato, ecc.
Altre informazioni
Non sono previste prove parziali durante il corso. Le studentesse e gli studenti con disabilità o con Disturbi Specifici dell’Apprendimento (DSA) o con Bisogni Educativi Speciali (BES) possono richiedere servizi e strumenti specifici a loro dedicati rivolgendosi allo Staff Sviluppo e Coordinamento Carriere e Servizi alle Studentesse e agli Studenti e consultando la pagina dedicata del sito di Ateneo: https://uniupo.it/it/servizi/servizi-studenti-disabili-e-dsa Le studentesse e gli studenti con disabilità, DSA, BES possono inoltre contattare la/il docente titolare dell’insegnamento in relazione alla declinazione delle modalità di esame.
Modalità di verifica dell'apprendimento
L'esame consiste di due prove che si tengono nello stesso giorno: 1) quiz; 2) prova pratica.

1.
Il quiz prevede 30 domande a risposta multipla, sui concetti di base della programmazione in linguaggio C.
Per ogni domanda ci sono 4 possibili risposte predefinite: 1 è corretta, 3 sono sbagliate. La Studentessa/lo Studente deve selezionare la risposta che ritiene corretta.
Ogni domanda vale 1 punto.
Il quiz è fallito se la Studentessa/lo Studente seleziona meno di 18 risposte effettivamente corrette. In questo caso l'esame termina immediatamente con esito insufficiente.
Il quiz è superato se la Studentessa/lo Studente seleziona almeno 18 risposte effettivamente corrette. In questo caso la Studentessa/lo Studente accede alla prova pratica.
Le Studentesse/gli Studenti possono trovare un esempio di quiz con la soluzione, sulla piattaforma DIR.
Il quiz dura 40 minuti e può riguardare qualunque argomento del corso.

2.
Durante la prova pratica la Studentessa/lo Studente, dato un determinato problema, deve: a) implementare un programma in linguaggio C che contiene le strutture dati e gli algoritmi che risolvono il problema; b) compilare con successo il programma; c) verificare la corretta esecuzione del programma.
Il programma deve essere strutturato in 5 funzioni, inclusa la funzione main. Ogni funzione vale 6 punti.
Se il programma non è compilabile (non è formalmente corretto) l'esame ha direttamente esito insufficiente.
Se il programma è compilabile (è formalmente corretto) ogni funzione viene valutata da 0 a 6 punti in base al livello di correttezza logica.
La prova pratica è fallita se il punteggio complessivo è meno di 18. La prova pratica è superata se il punteggio complessivo è almeno 18.
La prova pratica dura 2 ore e può riguardare qualunque argomento del corso.
Le Studentesse/gli Studenti possono trovare le prove pratiche del passato, con le soluzioni, sulla piattaforma DIR.

L'esame è superato solo se entrambe le prove sono state superate.
In questo caso il voto finale è la media pesata tra il punteggio del quiz (1/3) e il punteggio della prova pratica (2/3).

Durante entrambe le prove non è consentita la consultazione del materiale del corso o di manuali.
Entrambe le prove usano i calcolatori del laboratorio informatico; è vietato l'uso di dispositivi mobili o computer portatili.
Programma esteso
- introduzione alla programmazione ed al linguaggio C;
- algoritmi e loro rappresentazione;
- variabili, costanti, tipi di dato e operatori aritmetici;
- operatori di input e output in C;
- primi programmi C con il solo uso di sequenze di comandi;
- costrutto di selezione (if...else) con condizioni booleane semplici e composte;
- iterazione e costrutti while, for e do-while;
- array (vettori, stringhe, matrici);
- funzioni e passaggio dei parametri per valore;
- concetto di puntatore e passaggio dei parametri per riferimento;
- aritmetica dei puntatori;
- parametri da riga di comando;
- input/output su file;
- uso del terminale.
Risultati di apprendimento attesi
Al termine del corso, la Studentessa/lo Studente deve essere in grado, dato un semplice problema di programmazione, di individuarne un algoritmo risolutivo, implementarlo in linguaggio C, eseguirlo al calcolatore e verificarne la correttezza.

Conoscenza e comprensione:
concetto di algoritmo, concetto di programma, strutture dati fondamentali, costrutti di base della programmazione.

Capacità di applicare conoscenza e comprensione:
dato un problema,
- individuare i dati di input da raccogliere dall'utente e i dati di output da produrre;
- individuare le strutture dati necessarie per gestire tali dati;
- definire un algoritmo che trasforma i dati di input nei dati di output, seguendo i costrutti della programmazione;
- scrivere al calcolatore il programma sorgente che implementa l'algoritmo, utilizzando un linguaggio di programmazione (C);
- generare il programma eseguibile tramite la compilazione del programma sorgente, al calcolatore;
- esecuzione e test del programma eseguibile, al calcolatore.

Autonomia di giudizio:
in modo autonomo la Studentessa/lo Studente deve riuscire ad identificare le strutture dati necessarie, definire ed implementare l'algoritmo nel linguaggio di programmazione (C), ed infine compilare ed eseguire il programma.

Abilità comunicative:
la Studentessa/lo Studente deve riuscire a definire un algoritmo a vari livelli di astrazione, quali il diagramma di flusso, lo pseudo-codice, il programma in linguaggio di programmazione. Inoltre si esige che il programma richieda e presenti i dati all'utente tramite messaggi comprensibili dall'utente.

Capacità di apprendimento:
la Studentessa/lo Studente deve essere capace di apprendere come si genera un algoritmo dal problema, come si implementa l'algoritmo in un linguaggio di programmazione, ed infine come si compila e si esegue il programma al calcolatore.
Ultimo aggiornamento:09-09-2026 00:14:31