Programma consuntivo di Informatica Anno scolastico 2013

Programma consuntivo di Informatica
Anno scolastico 2013 - 2014
Classe
IV A
Indirizzo
Informatico
Docente teorico
Lolita Tiriticco
Docente tecnico pratico
Massimiliano Patti
Obiettivi
L'obiettivo del programma annuale è far acquisire all’alunno le competenze per affrontare progetti di una
certa complessità. Deve acquisire la flessibilità che gli consenta di analizzare e risolvere problemi di varia
natura utilizzando il linguaggio e gli strumenti più adatti al particolare problema in considerazione.
Al termine della classe quarta gli obiettivi raggiunti dovranno essere i seguenti:
 Svolgere un’analisi qualitativa circa la bontà ed il costo di un algoritmo.
 Capire la ricorsione, distinguere e realizzare sottoprogrammi ricorsivi e tradurli in iterativi.
 Applicare con proprietà le tecniche di programmazione modulare.
 Conoscere le strutture dati statiche fondamentali di un linguaggio di programmazione imperativo.
 Conoscere, usare e gestire le stringhe e le sue librerie.
 Sapere dichiarare, usare, gestire archivi di dati.
 Elaborare file di caratteri e testo.
 Capire i flussi dei dati e la bufferizzazione.
 Saper utilizzare e definire i puntatori a variabili strutturate.
 Conoscere le strutture dati dinamiche fondamentali di un linguaggio di programmazione
imperativo.
 Definire e manipolare strutture di dati connesse da puntatori.
 Essere in grado di usare, definire, differenziare e scegliere tra le strutture dati, statiche e
dinamiche, lineari e non.
 Sapere operare operazioni sulle strutture dati.
 Essere in grado di realizzare programmi nei linguaggi prescelti, verificandone la correttezza e
producendo una idonea documentazione.
 Saper definire classi e costruire gli oggetti per la risoluzione di un problema con metodologia
bottom-up e uso di un linguaggio di programmazione ad oggetti.
Obiettivi minimi per l’attribuzione della sufficienza:
 Possedere i contenuti minimi: Sapere i parametri per valutare la bontà di un algoritmo. Uso delle
librerie per le stringhe, cos’è la ricorsione e come si distingue un problema ricorsivo, uso e
gestione delle principali strutture dati statiche e differenze con le dinamiche. A cosa serve e come
si dichiara un puntatore, gestione di un file di testo e cos’è; a cosa serve un archivio; ADT cosa
sono, quali sono a cosa servono. Saper implementare le operazioni base sulle strutture dati. Basi
della scelta di implementazione di un algoritmo. Sapere cos’è, a cosa serve e saper definire una o
più classi ed i relativi oggetti. Gerarchia delle classi.
 Applicare le conoscenze acquisite per la soluzione di problemi (saper sviluppare programmi in C
con uso dei contenuti minimi).
 Scegliere la metodologia, ed i relativi strumenti, per progettare una strategia risolutiva.
 Sapersi esprimere in modo semplice ma con uso del linguaggio specifico della materia.
 Saper commentare un codice e realizzare una analisi formalmente corretta di un problema.
Contenuti:
Unità 1 – dal Tomo A del libro di testo





Le stringhe e loro gestione in C, uso delle librerie string.h.
Le stringhe come vettore di caratteri.
I record e le operazioni di caricamento, visualizzazione e assegnamento.
Le tabelle con le operazioni. ( anche codice C).
Allocazione dei record e tabelle in memoria.
Dal Tomo B del libro di testo
Unità 2 – FILE DI TESTO E MEMORIZZAZIONE DEI DATI
Oltre ai contenuti del libro, per questa unità sono stati forniti appunti, codice C ed esempi
svolti dall’insegnante e caricati su una cartella di Google Drive condivisa con la classe.
























I puntatori, cosa sono, uso, operazioni, allocazione della memoria, definizione di NULL.
I File, introduzione
File di testo
Operazioni logiche
Considerazioni sull’uso dei file
File non strutturati
Leggere e creare file di testo
Usare file di testo per I/O
File e diagrammi di flusso
File strutturati
Definizione, operazioni logiche e fisiche
File sequenziali
File ad accesso diretto
Accesso ad indice, ricerca ed inserimento
File ad accesso calcolato
Funzione Hash
Gestione dell’overflow
File relative
Chiavi secondarie
Chiavi, multi catene, indice
Compressione di file lossless e lossy
Soppressione caratteri ripetuti
Campi opzionali
Codifica di Huffman
Unità 3 – COMPLESSITA’ DEGLI ALGORITMI




La bontà degli algoritmi
Costo di un algoritmo
Complessità computazionale per gli algoritmi ricorsivi rispetto agli iterativi
Complessità degli algoritmi di ricerca, ordinamento, algoritmo ottimo.
Unità 4 – STRUTTURE DATI DINAMICHE LINEARI – LISTA PILA CODA
Oltre ai contenuti del libro, per questa unità sono stati forniti appunti, codice C ed esempi
svolti dall’insegnante e caricati su una cartella di Google Drive condivisa con la classe.
Per ognuno dei punti sono state date e spiegate le procedure di gestione in C
 Allocazione statica e dinamica della memoria
 Aree di memoria



















I puntatori
Allocare e deallocare memoria con i puntatori
Aliasing, garbage, side effect e dangling reference
Assegnazione tra puntatori di tipo diversi
Puntatori a variabili strutturate
Le strutture dati
Implementazione delle strutture dati astratte
Strutture dati concrete dinamiche e concatenate
Classificazione delle strutture dati
Il concetto di nodo
La lista semplice, circolare, bidirezionale, concatenata e multipla.
La Lista con le operazioni di creazione, cancellazione, inserimento, ordinamento, ricerca,
eliminazione struttura.
Memorizzazione di una lista dinamica.
La Pila con le operazioni di creazione, cancellazione, inserimento, ordinamento, ricerca,
eliminazione struttura.
Memorizzazione di una Pila con i puntatori.
Memorizzazione di una Pila con i vettori.
La Coda con le operazioni di creazione, cancellazione, inserimento, ordinamento, ricerca,
eliminazione struttura.
Memorizzazione di una Coda con i puntatori.
Memorizzazione di una Coda con i vettori.
Unità 5 – STRUTTURE DATI DINAMICHE NON LINEARI – GRAFI ED ALBERI
Oltre ai contenuti del libro, per questa unità sono stati forniti appunti, codice C ed esempi
svolti dall’insegnante e caricati su una cartella di Google Drive condivisa con la classe.
Per ognuno dei punti sono state date e spiegate le procedure di gestione in C
 I grafi: definizione e terminologia
 Rappresentazione matematica dei grafi
 Allocazione dei grafi in memoria
 Allocazione mediante matrice di adiacenza o incidenza
 Le operazioni sui grafi
 Implementazione di un grafo orientato pesato
 Gli alberi: definizione e terminologia
 Alberi generici e alberi binari
 Alberi bilanciati e relazione tra livelli e numero di nodi
 Allocazione in memoria degli alberi generici
 Allocazione in memoria degli alberi binari
 Visita di un albero
 Visita in profondità
 Algoritmi di visita in ampiezza (BFS) di un albero binario
 Algoritmi di visita in profondità (DFS) di un albero binario
 Alberi e rappresentazione delle espressioni
 Alberi e valutazione delle espressioni
 Alberi binari di ricerca, ABR, e loro implementazione
 Nodi e foglie di un ABR
 Alberi binari di ricerca bilanciati: AVL e B-Tree
Unità 6 – PROGRAMMAZIONE ORIENTATA AGLI OGGETTI






Dalla programmazione tradizionale all’object oriented
Incapsulamento
Oggetti
Classe
Attributi
Operazioni e metodi
Unità 7 - METODOLOGIA UML




Metodologie a oggetti
Class diagram
Modello dinamico
Sequence diagram
Unità 8 – CARATTERISTICHE DELLE CLASSI





Caratteristiche delle classi e degli oggetti
Costruttori
Oggetti pubblici e privati
Gestire classi semplici e complesse
Gestire array con classi
Unità 9 – LE SOTTOCLASSI E LA LORO GESTIONE





Ereditarietà
Polimorfismo
Definizione di sottoclassi
Gestire sottoclassi
Classe per la gestione di file di testo
Laboratorio
Le ore di laboratorio sono state utilizzate per esercizi e verifiche sia teorici che pratici.
Per l’implementazione abbiamo utilizzato l’interfaccia Dev C++.
Materiale didattico
 Libro di testo: Iacobelli,Ajme,Marrone – EPROGRAM Tomo A Tomo B – Juvenilia Scuola
 Fotocopie da libri per alcune parti della teoria e per il codice C;
 Appunti e presentazioni forniti dall’insegnante, caricati in Google Drive