Dettaglio insegnamento

PROGRAMMAZIONE 1

MF0207

Insegnamento
PROGRAMMAZIONE 1
Codice
MF0207
Anno Accademico
2026/2027
Anno regolamento
2026/2027
Corso di studio
INFORMATICA
Curriculum
000 - CORSO GENERICO
Responsabile didattico
CFU
9
Ore di lezione
72
Settore Scientifico Disciplinare (SSD)
INFO-01/A - 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
La Studentessa/lo Studente può scegliere tra l'esame standard e l'esame semplificato.

ESAME STANDARD:
consiste di due prove che si tengono in due giorni diversi: 1) prova pratica; 2) prova orale.

1.
Durante la prova pratica la Studentessa/lo Studente, dato un determinato problema, deve essere in grado di:
a) scrivere un programma in linguaggio C che contiene le strutture dati (variabili, costanti, array) 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:
- una funzione che carica un array (vettore, matrice, stringa o vettore di stringhe);
- una funzione che visualizza l'array;
- due funzioni che effettuano operazioni sull'array;
- la funzione main che raccoglie i dati di input, invoca le altre funzioni e visualizza i risultati.
Ogni funzione vale 6 punti, per un totale di 30 punti.

Ogni funzione viene valutata da 0 a 6 punti in base al livello di correttezza logica.
La prova pratica è fallita se
- il programma non è compilabile (non è formalmente corretto);
- il programma è compilabile (è formalmente corretto), ma il punteggio complessivo è meno di 18.
In questo caso l'esame termina direttamente con esito insufficiente.
La prova pratica è superata se il programma è compilabile e il punteggio complessivo è almeno 18. In questo caso la Studentessa/lo Studente accede alla successiva prova orale.

La prova pratica dura 2 ore e può riguardare qualunque argomento del corso.
Prove pratiche del passato, con le soluzioni, sono presenti sulla piattaforma DIR.

2.
La prova orale riguarda il programma consegnato al termine della prova pratica.
In particolare prevede:
- domande sulle strutture dati usate nel programma (circa 2);
- domande sugli algoritmi implementati nel programma (circa 2);
- domande sui comandi e i costrutti del linguaggio C presenti nel programma (circa 2);
- richieste di modifica del programma per modificarne il comportamento (circa 2).

La prova orale ha lo scopo di verificare che la Studentessa/lo Studente sia consapevole di tutto ciò che ha scritto nel programma (strutture dati, algoritmi, comandi, costrutti) e sia in grado di modificare il programma per ottenere un risultato diverso.

La prova orale è superata se la Studentessa/lo Studente risponde correttamente e prontamente a tutte le domande.
In questo caso l'esame è superato e il voto finale è lo stesso della prova pratica.
Se la prova orale non è superata l'esame si conclude con esito insufficiente.

La prova orale dura circa 15 minuti.

ESAME SEMPLIFICATO:
prevede solo la prova pratica.

La Studentessa/lo Studente deve essere in grado di:
a) implementare un programma in linguaggio C che contiene le strutture dati (variabili, costanti, array) e gli algoritmi necessari;
b) compilare con successo il programma;
c) verificare la corretta esecuzione del programma.

Il programma deve essere strutturato in 3 funzioni:
- una funzione che carica un array (vettore, matrice, stringa o vettore di stringhe);
- una funzione che visualizza l'array;
- la funzione main che invoca le altre funzioni.
Ogni funzione vale 6 punti, per un totale di 18 punti.

Ogni funzione viene valutata da 0 a 6 punti in base al livello di correttezza logica.
L'esame è fallito se
- il programma non è compilabile;
- il programma è compilabile, ma il punteggio complessivo è meno di 18.
L'esame è superato se il programma è compilabile e il punteggio complessivo è 18.

L'esame dura un'ora.

Durante l'esame non è consentita la consultazione del materiale del corso o di manuali.
Si usano i calcolatori presenti nel laboratorio informatico.
E' vietato l'uso di qualunque altro dispositivo (computer portatili, smartphone, occhiali smart, auricolari, ecc.).
L'uso di tali dispositivi causerà l'immediato annullamento dell'esame.
Programma esteso
- introduzione alla programmazione ed al linguaggio C (algoritmi, primi programmi, compilazione, comandi da terminale);
- variabili, costanti, tipi di dato, operatori aritmetici, operatori di input/output;
- costrutto di selezione (if...else) con condizioni Booleane semplici e composte;
- costrutti di iterazione (while, for, do-while);
- funzioni, passaggio dei parametri per valore e per riferimento tramite puntatori;
- array (vettori, matrici, stringhe, vettori di stringhe);
- aritmetica dei puntatori;
- tipi di dato estesi e conversioni di tipo;
- operazioni di lettura e scrittura di file di testo;
- argomenti da riga di comando.
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