Informatica I (C.d.S. in Matematica) A.A.2005/06
Argomenti trattati a Lezione
- Lu.13/02/06, ore 11.00-13.00, aula Tonelli, Lezione 1.
Introduzione al corso; scheda Orario Corso;
scheda informativa da restituire; concetto di algoritmo per calcolatore; schema
di Von Neumann di un calcolatore: Input, CPU, Memoria, Output;
area di memoria, indirizzo, nome logico per un'area,
prime operazioni elementari; pseudolinguaggio per descrivere un algoritmo; istruzione di
assegnazione.
- Me.15/02/06, ore 9.00-11.00, aula Tonelli, Lezione 2.
Riassunto lezione precedente con introduzione concetti su: RAM, bit, byte, word,
Kbyte, Mbyte, Gbyte, tabella delle corrispondenze.
Istruzione di alternativa; espressioni miste (aritmetiche, relazionali
e logiche); istruzioni di lettura e stampa; istruzioni di inizio e fine;
problema esempio: progettazione dell'algoritmo in pseudolinguaggio e
simulazione di esecuzione.
- Gi.16/02/06, ore 11.00-13.00, aula Tonelli, Lezione 3.
Proprieta' degli algoritmi. Strutture fondamentali di controllo:
alternativa, ciclo e sequenza;
riformulato codice esempio; algoritmi ottimali in tempo e spazio;
calcoli trattabili; assegnati alcuni semplici esercizi; fasi di
risoluzione di un problema; problema esempio: il max fra tre numeri.
- Lu.20/02/06, ore 11.00-13.00, aula Tonelli, Lezione 4.
Organizzazione dati in memoria e riformulazione algoritmo.
Problema: quoziente intero della divisione N/D; metodo delle sottrazioni
successive e simulazione di esecuzione; tecnica delle scomposizioni
successive; Problema: MCD di due interi non negativi; metodo di Euclide;
algoritmo; simulazione di esecuzione; struttura di controllo procedura;
la procedura nel pseudolinguaggio usato; passaggio parametri per valore
e per indirizzo.
- Me.22/02/06, ore 9.00-11.00, aula Tonelli, Lezione 5.
Il passaggio parametri nei linguaggi Pascal, Fortran e C; esempi di
esecuzione nei tre casi citati; procedura max fra due numeri;
procedura div (suggerito di progettare procedura rem e utilizzarla per l'MCD);
strutture dati lista e tabella; allocazione statica della memoria.
- Gi.23/02/06, ore 11.00-13.00, aula Tonelli, Lezione 6.
Problema: minimo fra gli elementi di una lista; progettazione di
una procedura e di un main; simulazione di esecuzione; stessa
procedura min_lista con passaggio lista per indirizzo; lettura e
memorizzazione di una tabella; Problema: date due parole determinarne
l'ordine alfabetico; procedura str_compare con passaggio tabella per
indirizzo. Assegnati 4 esercizi di cui e' richiesto lo svolgimento di
alemeno uno in modo completo.
- Lu.27/02/06, ore 11.00-13.00, aula Tonelli, Lezione 7.
ESERCITIAMOCI INSIEME NELLA PROGETTAZIONE DI ALGORITMI
Svolgimento di due degli esercizi assegnati durante la lezione del 23/02:
1. Si progetti una procedura per calcolare il prodotto fra una matrice e un vettore.
2. Determinare i numeri primi minori di un assegnato numero N
utilizzando il crivello di Eratostene.
- Me.01/03/06, ore 9.00-11.00, aula Tonelli, Lezione 8.
LEZIONE IN AULA SUL SISTEMA OPERATIVO LINUX
Interfaccia grafica e interfaccia testuale, utilizzo della shell, editor di testo,
formattazione di un file di testo con LaTex, comandi base per la gestione di file e
directory, permessi, caratteri speciali, compressione di file, creazione di archivi, stampa,
processi, mounting di cdrom e penna.
- Gi.02/03/06, ore 14.00-18.00, Laboratorio Linux.
PRIMA ESERCITAZIONE IN LABORATORIO
- Lu.06/03/06, ore 11.00-13.00, aula Tonelli, Lezione 9.
Introduzione al linguaggio C: esempio di programma C e descrizione
delle sue componenti principali (direttive, identificatore main, parte
dichiarativa, parte esecutiva); tipi di dati semplici predefiniti (int, char, float);
strutture di controllo if e while; comandi di compilazione e linking;
comando di esecuzione.
- Me.08/03/06, ore 9.00-11.00, aula Tonelli, Lezione 10.
Ancora sui comandi di compilazione; funzionamento del compilatore e del linker:
simulazione su un programma main+procedura; errori di compilazione, linking ed esecuzione;
Tipi di dati in C: il tipo int, allocazione memoria per int, range dei valori per int,
operazioni ammissibili per int, conversioni implicite ed esplicite.
- Gi.09/03/06, ore 14.00-18.00, Laboratorio Linux.
ESERCITAZIONI IN LABORATORIO
- Lu.13/03/06, ore 11.00-13.00, aula Tonelli, Lezione 11.
Ancora sui tipi di dati in C: i tipi float, double e char, allocazione in memoria,
operazioni ammissibili, conversioni implicite ed esplicite.
Tipi strutturati: il costruttore array. Dichiarazione di array mono e multidimensionali
(direttiva define e dichiarazione const);
inizializzazione, gestione mediante operazioni sugli elementi (cicli while e for).
Problema: conversione di una intero positivo da base 10 a base B; progettazione
dell'algoritmo.
- Me.15/03/06, ore 9.00-11.00, aula Tonelli, Lezione 12.
Typedef per dichiarazione "nuovi tipi", puntatore (operatore &), deferenziazione (operatore *),
dichiarazione di "tipo puntatore", array e puntatori; sizeof; problema: ordinare in senso crescente
una lista di numeri; metodo di selezione e codice C relativo.
- Gi.16/03/06, ore 14.00-18.00, Laboratorio Linux.
ESERCITAZIONI IN LABORATORIO
- Lu.20/03/06, ore 11.00-13.00, aula Tonelli, Lezione 13.
le procedure in C (funzioni): intestazione,
parametri formali, valore di ritorno, corpo, ecc.; chiamata di funzioni,
parametri attuali, ecc.; array come parametri di una funzione; esempi
di funzioni e chiamate.
- Me.22/03/06, ore 9.00-11.00, aula Tonelli, Lezione 14.
Array multidimensionali e funzioni in C; semplice esempio di stampa tabella.
prototipo di funzioni; la funzione main;
ambiente globale e locale; ambito di visibilita' delle variabili; durata delle variabili;
funzioni predefinite (standard library).
- Gi.23/03/06, ore 14.00-18.00, Laboratorio Linux.
ESERCITAZIONI IN LABORATORIO
- Lu.27/03/06, ore 11.00-13.00, aula Tonelli, Lezione 15.
Costruttore struct: dichiarazione, dichiarazione con etichetta e typedef; inizializzazione
e utilizzo di variabili struct (accesso ai suoi campi); puntatore a variabile struct,
operatore "->" per accedere ai campi mediante puntatore; esempi di informazioni organizzate
a struct fra cui lista linkata. Struttura per numeri complessi ed esempio di main e funzioni
per l'elaborazione di complessi.
- Me.29/03/06, ore 9.00-11.00, aula Tonelli, Lezione 16.
Gestione di file da programma C: puntatore alla
struttura FILE, funzione fopen di apertura file, funzioni di lettura e scrittura,
controllo e chiusura di un file. Alcuni esempi.
- Gi.30/03/06, ore 14.00-18.00, Laboratorio Linux.
ESERCITAZIONI IN LABORATORIO
- Lu.03/04/06, ore 11.00-13.00, aula Tonelli, Lezione 17.
Dettagli su strutture di controllo (for, do while, switch, break, operatori ? e :);
Programmi in C su piu' file: dichiarazione e definizione di oggetti globali;
dichiarazione extern, file header, direttive #include, #ifndef #endif, #ifdef #endif,
#define, variabili del precompilatore. Compilazione su piu' file e definizione
di variabili (per es. -DDEBUG).
- Me.05/04/06, ore 9.00-11.00, aula Tonelli, Lezione 18.
Problema: soluzione di un sistema lineare via fattorizzazione LR;
rivisitato l'algoritmo di Gauss con scambio delle righe e perno
massimo; progettazione della fattorizzazione e separatamente della soluzione;
scelta di memorizzare le matrici L_i di Gauss come colonne di A, le matrici
di permutazione come un array degli scambi e la matrice R sempre in A; fase di soluzione
in avanti sfruttando le informazioni memorizzate, ma senza ricostruire la matrice
L della fattorizzazione PA=LU; commentate le funzioni decomp e solve presenti
nell'archivio matfat.tgz. (il codice relativo in C e' scaricabile dal link
alla pagina web del corso: archivio matfat.tgz).
- Gi.06/04/06, ore 14.00-18.00, Laboratorio Linux.
ESERCITAZIONI IN LABORATORIO
- Lu.10/04/06, ore 11.00-13.00.
Lezione sospesa per le Elezioni Politiche.
- Me.12/04/06, ore 9.00-11.00, aula Tonelli, Lezione 19.
Ripresa ed estesa l'architettura di un calcolatore (CPU, Clock, Cache, ROM, RAM, Bus Dati,
Bus Indirizzi, Linee di Controllo, PIO, Dispositivi di I/O); in particolare
schema della CPU (CU, ALU e registri).
Sistema Operativo: Interprete Comandi; File System; Gestione delle
Periferiche; Gestione della Memoria; Gestione dei processi.
Dettagli sulla Gestione della Memoria (rilocazione) e sulla Gestione dei Processi.
- Me.19/04/06, ore 9.00-11.00, aula Tonelli, Lezione 20.
Elementi di grafica 2D: finestra grafica (window schermo o viewport), pixel,
sistema di coordinate, risoluzione;
introduzione alle funzioni in graph_phun.c messe a disposizione per ottenere un output grafico
con programmazione C: funzioni InitGraph(); CreateWindow(); CloseGraph();
le altre funzioni della libreria;
progettazione di algoritmi con rappresentazione grafica dei risultati
(esempio: disegno di un poligono regolare); trasformazione window-viewport.
- Gi.20/04/06, ore 14.00-18.00, Laboratorio Linux.
ESERCITAZIONI IN LABORATORIO
- Lu.24/04/06, ore 11.00-13.00, aula Tonelli, Lezione 21.
Ancora su disegno di un poligono regolare: funzione wind_view() di trasformazione
window-viewport; determinazione vertici poligono regolare (file polygonf.c);
disegno direttamente in coord. schermo (file polygon.c);
grafico di una funzione; discretizzazione in punti (tabulazione), determinazione window,
mapping window-vieport con conservazione del rapporto rapporto width/height.
- Me.26/04/06, ore 9.00-11.00, aula Tonelli, Lezione 22.
Comando make e file Makefile; grafo delle dipendenze;
costruzione di un Makefile; sintassi; target; macro.
Compilazione e linking su piu' file con libreria grafica;
Makefile di esempio per i programmi draw_fun, polygon e polygonf che utilizzano
le funzioni di visualizzazione grafica 2D.
Allocazione dinamica della memoria: funzioni malloc e free.
- Gi.27/04/06, ore 14.00-18.00, Laboratorio Linux.
ESERCITAZIONI IN LABORATORIO
- Me.03/05/06, ore 9.00-11.00, aula Tonelli, Lezione 23.
Allocazione dinamica della memoria: funzioni malloc, free e
realloc; esempi; memoria divisa in stack (LIFO) e heap;
rischi dell'allocazione dinamica: garbage collection e dangling reference;
esempi di allocazione.
Elementi di gestione delle immagini: introduzione alle funzioni della libreria
draw_image.c messe a disposizione per la visualizzazione di immagini.
- Gi.04/05/06, ore 14.00-18.00, Laboratorio Linux.
ESERCITAZIONI IN LABORATORIO
- Lu.08/05/06, ore 11.00-13.00, aula Tonelli, Lezione 24.
Funzioni InitGraph(); LoadImage(); BlackImage(); CreateWindow(); PutImage();
CloseWindow(); CloseGraph(); funzioni della libreria X, XGetPixel() e XPutPixel().
Informazione colore e componenti RGB; esaminato codice main di esempio rgb2gray.c
per la conversione di una immagine a colori in livelli di grigio.
Comandi di sistema showrgb, display e import.
Scala e rotazione di una immagine: trasformazioni di scala e rotazione piu' tecnica di
interpolazione componenti colore (nearest neighbor, bilinear interpolation e bicubic interpolation).
- Me.10/05/06, ore 9.00-11.00, aula Tonelli, Lezione 25.
Ricorsivita': esempi di funzioni ricorsive; gestione della ricorsione; esempio del fattoriale
di un numero e del MCD di due numeri; algoritmo di ordinamento quick-sort.
- Lu.15/05/06, ore 11.00-13.00, aula Tonelli, Lezione 26.
Ancora sull'algoritmo quick-sort (implementazione ricorsiva in C); implementazione non ricorsiva
di una funzione ricorsiva: gestione di uno stack; esempio su algoritmo quick-sort
(implementazione non ricorsiva in C); cenno al backtracking da implementare ricorsivamente
o iterativamente.
Presentazione del progetto per l'esame del corso.
- Me.17/05/06, ore 9.00-11.00, aula Tonelli, Lezione 27.
Ancora su backtracking: generazione di permutazioni; soluzione del problema delle otto
regine sia ricorsivamente che non.
Commenti sul progetto d'esame.
Torna alla
home page di Giulio Casciola