FONDAMENTI DI PROGRAMMAZIONE

Gennaro PERCANNELLA FONDAMENTI DI PROGRAMMAZIONE

0612800005
DIPARTIMENTO DI INGEGNERIA DELL'INFORMAZIONE ED ELETTRICA E MATEMATICA APPLICATA
CORSO DI LAUREA
INGEGNERIA DELL'INFORMAZIONE PER LA MEDICINA DIGITALE
2024/2025

OBBLIGATORIO
ANNO CORSO 1
ANNO ORDINAMENTO 2022
PRIMO SEMESTRE
CFUOREATTIVITÀ
1FONDAMENTI DI PROGRAMMAZIONE
324LEZIONE
324ESERCITAZIONE
2FONDAMENTI DI PROGRAMMAZIONE
324LEZIONE
Obiettivi
L’INSEGNAMENTO FORNISCE GLI ELEMENTI DI BASE PER LA RISOLUZIONE DI PROBLEMI DI COMPLESSITÀ NON ELEVATA MEDIANTE L’USO DI SISTEMI DI ELABORAZIONE, USANDO GLI ELEMENTI FONDAMENTALI DI UN LINGUAGGIO DI PROGRAMMAZIONE AD ALTO LIVELLO.
IL CORSO È STRUTTURATO IN MODO DA CONSENTIRE AGLI STUDENTI DI ACQUISIRE LE CONOSCENZE RELATIVE AGLI ELEMENTI FONDAMENTALI DELLA PROGRAMMAZIONE STRUTTURATA E DEL LINGUAGGIO C, UNITAMENTE ALLE TECNICHE FONDAMENTALI DI “PROBLEM SOLVING” MEDIANTE L’USO DI UN ELABORATORE.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE
SINTASSI DEL LINGUAGGIO C, CODIFICA E RAPPRESENTAZIONE DELLE INFORMAZIONI, COSTRUTTI FONDAMENTALI DEI LINGUAGGI DI PROGRAMMAZIONE AD ALTO LIVELLO, STRUTTURE DATI FONDAMENTALI (ARRAY E MATRICI), RAPPRESENTAZIONE DEGLI ALGORITMI ATTRAVERSO DIAGRAMMI A BLOCCHI, FASI DELLA TRADUZIONE DI UN PROGRAMMA.

CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE
PROGETTARE UN ALGORITMO PER LA RISOLUZIONE DI PROBLEMI DI COMPLESSITÀ NON ELEVATA. LEGGERE E PROGRAMMARE IN LINGUAGGIO C. CODIFICARE UN ALGORITMO IN UN PROGRAMMA IN LINGUAGGIO C USANDO UN AMBIENTE DI SVILUPPO INTEGRATO. COMPILARE UN PROGRAMMA SCRITTO IN C. IDENTIFICARE E RISOLVERE ERRORI COMUNI.
Prerequisiti
NESSUNO

Contenuti
Unità didattica 1: ALGORITMO, PROGRAMMA, ESECUTORE
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 6/2/0)
- 1 (2 ORE Lezione): Concetto di algoritmo, esecutore, linguaggio, programma, processo
- 2 (2 ORE Lezione): Modelli di rappresentazione di un algoritmo: Flow chart. Concetto iniziale di variabile, costante, espressione
- 3 (2 ORE Lezione): Operazioni semplici (assegnazione, Ingresso/uscita)
- 4 (2 ORE Esercitazione): Esempi di sviluppo di semplici algoritmi (caduta di un grave, intersezione di due rette, ...) e rappresentazione mediante flow chart
CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprensione dei termini: algoritmo, esecutore, linguaggio, programma, processo
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Definire tramite flow-chart semplici algoritmi composti da sequenze di istruzioni

Unità didattica 2: RAPPRESENTAZIONE DELL'INFORMAZIONE
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 6/2/0)
- 5 (2 ORE Lezione): Informazione: definizione, tipo, cardinalità, rappresentazione, codifica
- 6 (2 ORE Lezione): Rappresentazione dei numeri naturali; Rappresentazione in base 2 e 2^k
- 7 (2 ORE Lezione): Cenni di Rappresentazione dei numeri interi in segno e modulo e complementi. Rappresentazione di informazioni per enumerazione. Rappresentazione dei caratteri. Intervalli di rappresentazione dei tipi
- 8 (2 ORE Esercitazione): Esempi di codifica e decodifica di un’informazione numerica dei tipi introdotti
CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprensione del concetto di informazione e di rappresentazione e codifica dell’informazione
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper codificare una generica informazione numerica e non, usando le rappresentazioni introdotte e tecniche di codifica.

Unità didattica 3: CONTROLLO DI FLUSSO
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/4/0)
- 9 (2 ORE Lezione): Costrutti nella programmazione strutturata. Costrutto sequenza. Costrutti selettivi: if-then, if-then-else, case
- 10 (2 ORE Lezione): Costrutti iterativi: while, repeat-until, do-while, for. Innesto di costrutti
- 11 (2 ORE Esercitazione): Esempi di sviluppo di semplici algoritmi e rappresentazione mediante flow chart
- 12 (2 ORE Esercitazione): Esempi di sviluppo di semplici algoritmi e rappresentazione mediante flow chart
CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Acquisire le conoscenze relative agli elementi fondamentali della programmazione strutturata: costrutti selettivi, costrutti sequenza e costrutti iterativi
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper analizzare semplici problemi (che non usino dati strutturati ma costrutti selettivi e iterativi) e arrivare alla loro progettazione mediante diagrammi di flusso sapendo scegliere consapevolmente i costrutti di controllo.

Unità didattica 4: CONCETTI DI BASE DELLA PROGRAMMAZIONE
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 10/0/0)
- 13 (2 ORE Lezione): I linguaggi di programmazione. Linguaggi ad alto e basso livello. Traduttori. Sintassi di un linguaggio, elementi lessicali. Concetti di istruzione, dichiarazione, espressione. Rappresentazione di algoritmi e programmi
- 14 (2 ORE Lezione): Sistema dei tipi. Definizione di tipo semplice e strutturato. Tipi semplici. Intervallo di rappresentazione, operazioni, precisione (per i tipi di dati reali)
- 15 (2 ORE Lezione): Tipi strutturati: array, cenni alle strutture e ai file
- 16 (2 ORE Lezione): Sistema degli operatori: precedenza, associatività e overload. Operatori e tipologia: operatori aritmetici, relazionali, logici 
- 17 (2 ORE Lezione): Costanti e variabili (completamento). Istruzioni dichiarative, semplici, assegnazione, espressioni 
CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Acquisire il concetto di linguaggio di alto livello, il concetto di traduzione e traduttore, il concetto di tipo di dato e quello di operatore.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper utilizzare i tipi semplici e strutturati e individuare i tipi da utilizzare in semplici problemi.

Unità didattica 5: ELEMENTI DI LINGUAGGIO C
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/4/0)
- 18 (2 ORE Lezione): Elementi di linguaggio C. Struttura di un programma. Tipi e operatori. Istruzioni di assegnazione. Istruzioni di ingresso e uscita
- 19 (2 ORE Lezione): Elementi di linguaggio C. Strutture di controllo selettive e iterative. Tipo strutturato array.
- 20 (2 ORE Esercitazione): Codifica in C di semplici algoritmi espressi mediante flow chart, usando un’adeguata rappresentazione dei dati mediante i tipi semplici del C
- 21 (2 ORE Esercitazione): Codifica in C di semplici algoritmi espressi mediante flow chart, usando un’adeguata rappresentazione dei dati mediante i tipi semplici e l'array del C
CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Acquisire le conoscenze relative agli elementi fondamentali del linguaggio di programmazione C mediante l’uso di un elaboratore
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper codificare in C un algoritmo semplice già espresso mediante un flow-chart.

Unità didattica 6: SOTTOPROGRAMMI
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 8/4/0)
- 22 (2 ORE Lezione): Sottoprogrammi. Astrazione funzionale. Funzioni e procedure. Prototipi. Scambio di dati: parametri di ingresso e di uscita
- 23 (2 ORE Lezione): Ambiente del sottoprogramma. Passaggio dei parametri. Passaggio per valore e riferimento.
- 24 (2 ORE Lezione): Struttura dell'ambiente (visibilità e tempo di vita). Contratti, precondizioni e postcondizioni 
- 25 (2 ORE Lezione): Elementi di linguaggio C. Funzioni e funzioni void.
- 26 (2 ORE Esercitazione): Codifica in C di semplici programmi che fanno uso di funzioni e procedure
- 27 (2 ORE Esercitazione): Codifica in C di semplici programmi che fanno uso di funzioni e procedure
CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprensione del concetto di sottoprogramma, facendo riferimento sia alle funzioni che alle procedure. Analisi delle due tecniche di associazione dei parametri: per valore e per riferimento.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper codificare in C un programma mediante funzioni e procedure mediante scambio per valore e riferimento. Saper analizzare l’effetto di semplici programmi in C, comprendendo il comportamento determinato da ciascuna dichiarazione o istruzione contenuta nel programma.

Unità didattica 7: ALGORITMI ELEMENTARI
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 6/4/0)
- 28 (2 ORE Lezione): Pattern Semplici. Algoritmi di base su sequenze di dati. Generazione di sequenze
- 29 (2 ORE Lezione): Visita di sequenze (con tappo e di lunghezza nota)
- 30 (2 ORE Lezione): Accumulazione su una sequenza
- 31 (2 ORE Esercitazione): Codifica in C di semplici programmi che fanno uso di funzioni e procedure rispetto ai pattern di base
- 32 (2 ORE Esercitazione): Codifica in C di semplici programmi che fanno uso di funzioni e procedure rispetto ai pattern di base
CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Comprensione dei modelli di algoritmi (design pattern) per la risoluzione di problemi.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper risolvere singoli problemi a partire dai pattern per loro specializzazione

Unità didattica 8: ALGORITMI DI SELEZIONE SU SEQUENZE DI DATI
(ORE LEZIONE/ESERCITAZIONE/LABORATORIO 4/4/0)
- 33 (2 ORE Lezione): Problema della selezione. Selezione di un elemento (che soddisfa una proprietà P in una sequenza o un vettore)
- 34 (2 ORE Lezione): Descrizione di pattern di selezione in vettori e sequenze di vario tipologia. Ricerca lineare come caso di applicazione dei pattern.
- 35 (2 ORE Esercitazione): Sviluppo di algoritmi di selezione in vettori e sequenze e relativa codifica in C. (Esempi: selezione del minimo, del massimo, del più grande positivo, in vettori e sequenze memorizzate e non.)
- 36 (2 ORE Esercitazione): Sviluppo di algoritmi di selezione in vettori e sequenze e relativa codifica in C. (Esempi: selezione del minimo, del massimo, del più grande positivo, in vettori e sequenze memorizzate e non.)
CONOSCENZE E CAPACITÀ DI COMPRENSIONE: Descrizione di pattern di selezione in vettori e sequenze di varia tipologia.
CONOSCENZE E CAPACITÀ DI COMPRENSIONE APPLICATE: Saper sviluppare algoritmi di selezione in C in vettori e sequenze di varia tipologia.

TOTALE ORE LEZIONE/ESERCITAZIONE/LABORATORIO 48/24/0
Metodi Didattici
L’INSEGNAMENTO CONTEMPLA LEZIONI TEORICHE (48H) ED ESERCITAZIONI PRATICHE AL CALCOLATORE (24H). NELLE ESERCITAZIONI VENGONO PROPOSTI E COMMENTATI SPECIFICI ALGORITMI PER LA RISOLUZIONE DI PROBLEMI E LA RELATIVA CODIFICA IN LINGUAGGIO C; GLI STUDENTI, GUIDATI DAL DOCENTE, IMPLEMENTANO, ESEGUONO E VERIFICANO GLI ALGORITMI DELINEATI DURANTE LE LEZIONI. PER POTER SOSTENERE LA VERIFICA FINALE DEL PROFITTO E CONSEGUIRE I CFU RELATIVI ALL’ATTIVITÀ FORMATIVA, LO STUDENTE DOVRÀ AVERE FREQUENTATO ALMENO IL 70% DELLE ORE PREVISTE DI ATTIVITÀ DIDATTICA ASSISTITA.
Verifica dell'apprendimento
LA VALUTAZIONE DEL RAGGIUNGIMENTO DEGLI OBIETTIVI PREFISSATI AVVIENE MEDIANTE UNA PROVA PRATICA DI MEDIO TERMINE, UNA PROVA PRATICA FINALE ED UN COLLOQUIO ORALE. LA PROVA PRATICA DI MEDIO TERMINE CONSISTE IN UN TEST A RISPOSTA MULTIPLA E DUE QUESITI A RISPOSTA APERTA DI CARATTERE TEORICO. LA PROVA PRATICA FINALE VIENE EFFETTUATA DALLO STUDENTE SUL SISTEMA DI ELABORAZIONE E CONSISTE NELLA SCRITTURA, COMPILAZIONE, ESECUZIONE E VERIFICA DI UN ESERCIZIO DI PROGRAMMAZIONE IN LINGUAGGIO C. LA PROVA PRATICA DI MEDIO TERMINE È ESONERATIVA PER LA PRIMA PARTE DEI CONTENUTI DEL CORSO. PARTENDO DAI CONTENUTI DELLA PROVA PRATICA FINALE, LA DISCUSSIONE ORALE VERTE SUGLI ARGOMENTI TRATTATI NELLA SECONDA PARTE DEL CORSO ALLO SCOPO DI VALUTARE SIA IL GRADO DI CONOSCENZE ACQUISITE SIA LE CAPACITÀ DI SINTESI E DI ESPOSIZIONE.
NELLA VALUTAZIONE FINALE, ESPRESSA IN TRENTESIMI, LA VALUTAZIONE DELLA PROVA DI MEDIO TERMINE PESERÀ PER IL 30%, LA PROVA FINALE PESERÀ PER IL 50% MENTRE IL COLLOQUIO ORALE PER IL 20%. SI È AMMESSI ALLE PROVE SOLO PREVIO SUPERAMENTO DELLE PROVE PRECEDENTI. LA LODE POTRÀ ESSERE ATTRIBUITA AGLI STUDENTI CHE DIMOSTRINO UNA PIENA CONOSCENZA DI TUTTE LE PRINCIPALI TEMATICHE AFFRONTATE NEL CORSO E CHE ABBIANO DIMOSTRATO UNA OTTIMA CAPACITÀ DI PROGRAMMAZIONE.
Testi
M. VENTO, FONDAMENTI DI INFORMATICA, APPUNTI DELLE LEZIONI, EDIZIONE 2015.


MATERIALE DIDATTICO INTEGRATIVO SARA' DISPONIBILE NELLA SEZIONE DEDICATA DELL'INSEGNAMENTO ALL'INTERNO DELLA PIATTAFORMA E-LEARNING DI ATENEO (HTTP://ELEARNING.UNISA.IT) ACCESSIBILE AGLI STUDENTI DEL CORSO TRAMITE LE CREDENZIALI UNICHE DI ATENEO.
Altre Informazioni
IL CORSO È EROGATO IN ITALIANO
Orari Lezioni

  BETA VERSION Fonte dati ESSE3 [Ultima Sincronizzazione: 2024-10-23]