I.T.I.S. Minerario “G. Asproni”
PROGRAMMA
di
INFORMATICA GENERALE
Classe IV A
A.S. 2015/16
TEORIA
METODOLOGIE DI PROGETTAZIONE
- Superamento della separazione tra Dati e Operazioni
- Dagli UDT del C agli ADT (Tipi di Dato Astratti)
- Incapsulamento e Information Hiding
- Nozione di Classe e di Oggetto nei linguaggi OO (Orientati agli oggetti)
- Ereditarietà tra classi
- Polimorfismo
- Notazioni diagrammatiche che per progettazione a oggetti
RICORSIONE
- Generalità sui metodi di risoluzione basati sulla ricorsione
- Strumenti per rappresentare la ricorsione
- Definizione funzionale
- Ricorsione sui dati
- Numeri naturali
- Esempi notevoli di strutture dati ricorsive: liste e alberi
- Ricorsione sulle operazioni
- Algoritmi ricorsivi
- Funzioni Tipate
- Funzioni Non Tipate
- Esempi notevoli di algoritmi ricorsivi
- Operazioni aritmetiche e funzioni matematiche
- La torre di Hanoi
- Operazioni di ricerca e di ordinamento
- Algoritmi per curve frattali
- Considerazioni sull’efficienza
- Raffronto tra iterazione e ricorsione
- Cattivi esempi di programmazione ricorsiva: la serie di Fibonacci
-DIMOSTRAZIONI PER INDUZIONE
- Asserti arimetici sull’insieme dei numeri Naturali
- La logica induttiva
- Dimostrazioni
- Formula di Gauss
- Somma dei primi N dispari
- Numero delle connessioni di un grafo completo
- Numero dei nodi di un albero binario completo di livello N
- Numero delle mosse della Torre di Hanoi (strategia ricorsiva)
- ORDINAMENTO e RICERCA
- Caratterizzazione generale del problema
- Algoritmi di ordinamento e ricerca su dizionari statici
- La nozione di chiave
- Ordinamento lessicografico ed ordinamenti combinati su più campi
- Ordinamento
- Generalità
- Chiavi semplici e chiavi composte
- Classificazione degli algoritmi
- Metodi ingenui (implementazione completa)
- Inserzione
- Selezione
- Scambio (Bubbe-Sort di base, migliorato e shakesort)
- Metodi non ingenui
- Merge-Sort (implementazione completa)
- Heap Sort (implementazione completa)
- Shell-Sort
- Quick-Sort (implementazione completa)
- Ricerca
- Sequenziale
- Binaria (con ricorsione)
- Su Liste Semplici Concatenate
- Su Alberi Binari e Alberi Binari di Ricerca
- Su Dizionari di Ricerca (Tabelle Hash)
- STRUTTURE DATI NOTEVOLI
- Dizionari di Ricerca
- Generalità e terminologia di base
(spazio delle chiavi, spazio degli indirizzi, slot, bucket, fattore di carico,…)
- Funzioni di randomizzazione (hash)
- Proprietà matematiche (iniettività, uniformità, casualità)
- Algoritmi e tecniche di randomizzazione della chiave
- Implementazione di tabelle hash
- Il problema delle collisioni
- La risoluzione delle collisioni
- Metodi di Indirizzamento Aperto
- La legge di scansione
- Strategie di scansione
- Clustering
- Metodi di concatenazione
- Catene distinte (base)
- Catene distinte (ottimizzato con cellar)
- Raffronto tra le tecniche di gestione delle collisioni
- Pila
- Caratterizzazione astratta
- Caratterizzazione concreta (statica e dinamica)
- Coda
- Caratterizzazione astratta
- Caratterizzazione concreta (statica e dinamica)
- Coda con Priorità
- Inserzione
- Estrazione
- Lista (Semplice Concatenata)
- Generalità e definizioni
- Caratterizzazione astratta vs. concreta
- Implementazione Statica
- Rappresentazione grafica
- Operazioni di base: creazione, inserzione, estrazione, cancellazione,
aggiornamento
- Implementazione Dinamica
- Rappresentazione grafica
- Operazioni di base: creazione, inserzione, estrazione, cancellazione, aggiornamento
- Albero Radicato
- Gli “alberi” nella rappresentazione della conoscenza
- Modelli grafici generici
- L'albero come struttura dati informativa
- Terminologia
- Definizione ricorsiva
- Rappresentazioni concrete
- Attraversamento
- Anticipato, differito, per livelli;
- Costruzione e manipolazione
- Albero Binario (AB)
- Terminologia
- Definizione ricorsiva
- Rappresentazione astratta e concreta
- Costruzione: interattiva, da array, da lista
- Operazioni di base: visita (simmetrica,anticipata, differita), ricerca,
eliminazione, altezza, confronto, conteggi
- Attrvaersamento di alberi binari per livelli
- Implemetazione con coda;
- Alberi binari tramati
- Albero Binario di Ricerca (ABR):
- Definizione
- Operazioni di base: costruzione, ricerca, inserimento, cancellazione
- Attraversamento di alberi binari senza ricorsione
- Con stack
- Con puntatori ausiliari (Alberi binari tramati)
- Alberi parzialmente ordinati (array/file)
- Considerazioni sull’efficienza: raffronto tra AB e ABR
- Grafo
- Terminologia, definizione e proprietà di base
(diretto/indiretto, ciclico/aciclico, connesso, fortemente connesso, pesato, …)
- Implementazione
- Statica (Matrice di Adiacenza)
- Cammini sulla matrice di adiacenza
- Tabella di raggiungibilità (per percorsi di lunghezza L)
- Dinamica (vettore di liste di adicenza)
- Algoritmi di visita (in profondità e in ampiezza)
- Algoritmo di Dijkstra (tutti i cammini di lunghezza minima da un nodo)
- Algoritmo di Floyd (tutti i cammini di lunghezza minima)
- Algoritmo di Warshall (esistenza di una qualsiasi cammino)
- Determinazione di tutte le componenti connesse di un grafo
TECNOLOGIE DI PROGRAMMAZIONE
- PROGRAMMAZIONE A OGGETTI
- Generalità sulla programmazione a oggetti
- Nozione di classe come tipo di dato astratto
- Oggetti
- Proprietà e operazioni
- Limitazione della visibilità: pubblico/privato
- Information Hiding e incapsulamento
- Polimorfismo
- Sovraccarico delle funzioni
- Ereditarietà
- PROGRAMMAZIONE JAVA (LIVELLO BASE)
- Java e la programmazione a oggetti
- Java dal punto di vista del programmatore C
- Caratteristiche native di Java: portabilità, sicurezza, manutenibilità, versatilità, eleganza
- Memoria dinamica e garbage collector
- Un unico meccanismo per la tipizzazione d'utente: la classe
- Attributi e metodi di classe
- Oggetti come variabili di “tipo” classe
- Attributi e metodi degli oggetti
- Metodi costruttori
- Costruttori speciali: di default, di copia
- Metodi setter/getter
- Creazione e uso di oggetti
- Riferimenti agli oggetti
- Riferimenti validi e riferimenti nulli
- Riferimenti autoreferenziali: this
- Confronto tra oggetti
- Struttura di un programma Java e fondamenti del linguaggio
- Il metodo main() e la struttura base di una classe
- Tipi di Dato Primitivi e Classi Wrapper
- Operazioni Output
- Oggetti e array di oggetti
- Package e Classi di utilità
- I tipi di dati del linguaggio
- Tipi numerici
- Il tipo boolean
- Le stringhe come oggetti
- Immutabili: classe String e operazioni su stringhe
- Mutabili: classi StringBuffer/StringBuilder e operazioni di base
- Le conversioni di tipo
- Da stringa a numero
- Da numero a stringa
- Array
- A 1 dimensione
- A più dimensioni
- Array di valori predefiniti
- La ricorsione in Java
- La programmazione funzionale
- Metodi tipati
- Metodi non tipati
- Strutture dati Ricorsive in Java
- Liste semplici concatenate
- Alberi Radicati
- Alberi Binari
- Pile
- Code
- Alberi binari di Ricerca
- Dizionari di Ricerca
- Generalità
- Implementazione
- Tabelle hash (statiche)
- Funzioni di randomizzazione
- Hashing perfetto
- Proprietà desiderabili delle funzioni di hashing
- Univocità, uniformità, casualità, velocità
- Il fenomeno delle collisioni
- Hashing imperfetto
- Significato matematico delle collisioni
- Tecniche per la riduzione delle collisioni
- Metodi di indirizzamento aperto
- Sondaggio lineare, quadratico, con doppia randomizzazione
- Clustering
- Metodi di concatenazione
- Operazioni su tabelle hash
- Ricerca, inserimento, cancellazione, aggiornamento
- Efficienza dei dizionari implementati via hashing
- PROGRAMMAZIONE JAVA (LIVELLO INTERMEDIO)
- Organizzazione di applicazioni “non elementari “
- Definizione ed importazione di package e classi
- Classi nidificate
- Ereditarietà tra classi
- Input da tastiera
- Grafica bidimensionale in Java
- Gli elementi dell'interfaccia grafica
- Gli elementi come oggetti della OOP
- Programmazione guidata dagli eventi (cenni)
La libreria AWT
- Contenitori e Componenti
- Finestre e Pannelli
- Etichette, caselle di testo, aree di testo,
- Area di Disegno
- Layout degli elementi grafici
- Posizionamento degli elementi grafici
- La gestione degli eventi secondo il modello a delegazione (cenni)
- Gli ascoltatori
- La registrazione
- Modalità di interazione utente-applicazione
- Tracciamento di curve, angoli, poligoni e cerchi
- Composizione di figure
- Realizzazione di GUI con widgets.
LABORATORIO
Esercitazioni guidate di programmazione e metodologie di programmazione, su tutti gli
argomenti trattati nelle lezioni teoriche, con particolare riferimento a:

Programmazione ricorsiva;

Modellizzazione delle classi;

Applicazioni in Java per l'elaborazione di strutture dati notevoli: pile, code, liste, alberi
binari, alberi con radice, dizionari di ricerca, grafi;

Applicazioni in Java basate su algoritmi di ricerca e di ordinamento;

Applicazioni in Java basate sui package grafici AWT e SWING

Elaborazione di file in C.
PROGRAMMA
di
INFORMATICA GENERALE
Classe IV A
A.S. 2015/16
Gli Allievi
________________
________________
________________
________________
Iglesias, 10 Giugno 2016
Il Docente di Teoria e Lab.
Il Docente di Laboratorio
Pierpaolo Damele
Arnaldo Scarpa
________________
________________