Diario lezioni

1/10/2007 Lez. 1,2:  Presentazione del Corso. Programma, obiettivi, organizzazione, verifica finale. Accesso all' aula informatica. Basi fisiche della tecnologia binaria degli elaboratori. Richiami sulla notazione posizionale in base 10 e in base 2. Codifica binaria dei caratteri.

2/10/2007 Lez. 3,4:
Bit, byte e multipli. Gerarchia dei livelli di descrizione dell' elaboratore. Schema di von Neumann di un elaboratore. Memoria, processore, registri, bus, clock. Rappresentazione di dati ed istruzioni in memoria. Schema di esecuzione di un programma (Program Counter, decodifica di istruzioni). Linguaggio macchina. Linguaggio assembler. Linguaggi di alto ed altissimo livello.

4/10/2007 Lez. 5,6:
Uso dedicato o condiviso delle risorse. Sistema Operativo: compiti e caratteristiche generali. Caratteristiche dei S.O. moderni (multitasking, multiutenza, time sharing e job scheduling). Introduzione al Filesystem.

8/10/2007 Lez. 7,8:
Introduzione al Filesystem. Files e directories. Attributi dei files (nomi, permessi, proprietario). Interfacce. I. di linea e grafiche. Interprete di comandi. Ciclo di vita del SW (Problema, analisi con esempio sulla soluzione della generica eq. di secondo grado). Requisiti basilari per gli algoritmi.

9/10/2007 Lez. 9,10:
Utilizzo del sistema di calcolo dell' aula informatizzata. Accesso all' interprete di comandi (bash). visualizzazione del filesystem mediante interfaccia grafica e mediante interfaccia di linea. Permessi dei file. Editor di testi e creazione/modifica di file (uso di Nedit).  Interpretazione dei comandi da parte della shell. Esempio di comando, parametri e opzioni.

11/10/2007 Lez. 11,12:  Alcuni comandi della shell di uso frequente (ls, rm, cp, mv, cd, cat e more). La shell come linguaggio di programmazione (variabili di shell e cenni all' esistenza di istruzioni di controllo). Cenni alla varietà  di linguaggi di programmazione. Produzione del SW:  analisi del "lato problema" e  individuazione degli algoritmi (esempi:  ordinamento di parole e soluzione dell' equazione generica di secondo grado nel campo dei reali). Concetto di tipo dati. Cenni alla storia del C.

12/10/2007 Lez. 13,14: Necessità  e  utilità  della standardizzazione dei linguaggi di programmazione.  Standard del C. Struttura generale dei programmi C  come insieme di function cooperanti. Struttura di massima di una function C (nome, argomenti,  tipo dati del valore di ritorno e corpo della function.  Esempio di un programma C  e prima discussione di alcune strutture sintsttiche.  Compilatori ed interpreti.  Struttura del compilatore C (preprocessore, compilatore e linker). Cenni alle funzionalità  del linker (risoluzione degli externals,  rilocazione relativa )  e del loader (rilocazione finale).

15/10/2007 Lez. 15,16: 
Pseudofiles associati ad ogni processo Unix (stdin, stdout, stderr), ridirezione di stdin e stdout, meccanismo delle pipes. Strutturazione delle man pages (volumi). Uso dei comandi apropos e man per ottenere informazioni sui comandi dell' interprete di linea. Visualizzazione della lista dei processi (ps). Caratteri jolly (wildcharacters).

16/10/2007 Lez. 17,18: 
Caratteristiche del processore e dei processi rilevabili attraverso il comando top. Ciclo di editing, salvataggio,compilazione, verifica dei risultati. File binari e loro visualizzazione. Rappresentazione in base 8 e 16 e conversione di qesta da e per base 2.

18/10/2007 Lez. 19,20:  Rappresentazione degli interi senza segno e degli interi con il segno. Rappresentazione dei negativi col bit del segno, complemento a due e bias B. Proprieta' congruenziali modulo 2n dell' artimetica intera a n bit. Equivalenza tra somme e sottrazioni nella rappresentazione complemento a due.

19/10/2007 Lez.21,22:  Rappresentazione binaria dei numeri razionali. Passaggio tra base 10 e base 2. Periodicita' in base 2 di numeri che hanno una rappresentazione finita in base 10. Standard IEEE754 per la rappresentazione dei numeri non interi (floating point). Caso di rappresentazioni a 32 e 64 bit. Minimo e massimo valore floating point, normalizzato e denormalizzato. Codifica dei denormalizzati speciali (+- Inf e NaN). Non uniformita' della distribuzione dei floating point. Tipi dati primitivi del C.

22/10/2007 Lez. 23,24: 
Dichiarazioni dei tipi dati. Cenni alle function di I/O scanf e printf, alle costanti di stringa, ai convertitori di formato e all' operatore unario "indirizzo di". Tipi dati di default delle costanti. Modificatore f per costanti float. Espressioni. Operatore di assegnazione. Operatori aritmetici (+,-,*,/,%) e loro precedenza. Associatività e parentesi. Operatori di confronto aritmetico. Conversioni (cast) implicite ed esplicite. Modificatore per costanti letterali di tipo double. Operatore sizeof. Cenni all' istruzione if.

23/10/2007 Lez. 25,26: 
Esercizi sulla conversione implicita tra tipi dati (Esercitazione n.3). Conversioni decimale/ASCII e tra rappresentazioni diverse degli interi (decimale¸ ottale, esadecimale) mediante i convertitori di formato %i, %o, %x. Cast esplicito. Costanti letterali intere ottali ed esadecimali.

25/10/2007 Lez. 27,28: 
Costrutto if-else. Rappresentazione numerica di vero e falso in C. Costrutti di salto condizionato: if-else e if-else annidati. Simulazione di in costrutto if-else if mediante if-else annidati. Istruzione switch-case. Istruzione continue. Operatore ternario ?: . Indentazione e leggibilità  dei codici. Costrutti di iterazione: il ciclo ifor.. Istruzioni che rompono la sequenza di iterazioni: break e continue. Altri costrutti di iterazione: while e do-while. Salto incondizionato (goto e label di istruzioni). Operatori unari di incremento e decremento unitario, in versione post- e pre-fissa. Operatore virgola. Istruzione nulla. Blocchi di istruzioni.

26/10/2007 Lez. 29,30: 
Programmazione strutturata e goto. Commenti. Operatori logici e tabelle di verità . Valutazione cortocircuitata di espressioni logiche. Function C: dichiarazione e utilizzo. Prototipi e meccanismo del passaggio dei parametri e del ricevere il valore di ritorno. Uso dei file di header per raccogliere i prototipi. Include di file di header di sistema o costruiti dall' utente. Effetto della non inclusione dei prototipi. Definizione di una function. Valore di ritorno ed istruzione return. Valore di ritorno della function main. Tipo void. Function come strumento di programmazione modulare.

30/10/2007 Lez. 31,32: 
(Laboratorio) Somme di sequenze di interi. Operatore di incremento unitario. Ristrutturazione e semplificazione di un doppio costrutto if. Cicli for.

6/11/2007 Lez. 33,34: 
(Laboratorio) Conversione di un costrutto if-else in switch-case. Implementazione dell' algoritmo di Newton per il calcolo della radice quadrata. Conversione caratteri (minuscoli-maiuscoli). Aritmetica con tipi interi diversi. Function per il calcolo del fattoriale. Classi di memoria.

8/11/2007 Lez. 35,36: 
Istruzione define per il precompilatore. Inizializzazione ddegli array. Determinazione del numero di componenti mediante l' operatore sizeof. Operatore indirizzo di (&). Rappresentazione degli indirizzi e convertitore di formato %p. Variabili di tipo dati puntatore: dichiarazione, assegnazione e operatore di indirezione.

12/11/2007 Lez. 37,38: 
(Laboratorio, schema 6) Compilazione indipendente di function in file diversi. Uso e scrittura di puntatori. Puntatori come argomento di function. Puntatori non inizializzati. Aritmetica dei puntatori. Uso di array.

13/11/2007 Lez. 39,40: 
(Laboratorio) Stringhe come array terminati dal carattere nul. Convertitore di formato %s. Funzioni di libreria per manipolare le stringhe. Implementazione dell' algoritmo bubblesort.

15/11/2007 Lez. 41,42: 
Tipo puntatore generico (void *). Allocazione dinamica della memoria (function malloc, calloc, realloc, free). Considerazioni sull' efficienza. Memory leaks

19/11/2007 Lez. 43,44: 
(Laboratorio) Esercizi su puntatori, array e stringhe.

20/11/2007 Lez. 45,46: 
(Laboratorio) Esercizi su puntatori, array e allocazion dinamica.

22/11/2007 Lez. 47,48: 
Array di puntatori e array di stringhe. Array bidimensionali come array di array. Sintassi di array e sintassi di puntatore.

26/11/2007 Lez. 49,50: 
(Laboratorio) Stringhe e token. Uso della funzione di libreria strtok per la ricerca di token in stringhe. Manipolazioni di matrici numeriche.

27/11/2007 Lez. 51,52: 
(Laboratorio) Modifica del programma bubblesort per interi per ordinare stringhe secondo l' ordine lessicografico.  Esercizi su matrici e Passaggio di matrici a funzioni.

29/11/2007 Lez. 53,54: 
Funzione di libreria strcmp, interfaccia e utilizzo. Matrici dinamiche e puntatori a puntatori a carattere. Prototipi standard di main. Uso della lista degli argomenti. Puntatori a funzione.

3/12/2007 Lez. 55,56: 
(Laboratorio) Strutture. Definizione di strutture, dichiarazioni, definizioni e inizializzazione di variabili di tipo strutura. Accesso ai campi di una struttura. Strutture anonime. Uso di strutture con function. Utilizzo di typedef per definire un nuovo nome per tipi dati. Utilizzo di strutture nelle function.  Puntatori a struttura. Unioni. Esercizi su array a  due indici e  puntatori a puntatori.

4/12/2007 Lez. 57,58:
(Laboratorio) Esercizi su strutture e  unioni. Allocazione di memoria per strutture e campi di strutture.

6/12/2007 Lez. 59,60:
Definizione di macro con argomenti. Test sulla definizione di macro. Salti condizionati per il precompilatore. Definizione di macro attraverso parametri di compilazione. Accesso a files dall' interno di programmi C. Struttura dati FILE. Istruzioni fopen e fclose. Modalità di apertura di un file. Tipi di I/O: con e senza buffer - formattato e non formattato.

7/12/2007 Lez. 61,62:
I/O con buffer non formattato (a livello di carattere, linea e blocco) e formattato (fopen, fclose, fwrite, fread, fputc, putc, putchar, fgetc, getc, getchar, fputs, puts, fgets, gets, fread, fwrite, fprintf, printf, sprintf, scanf, sscanf, fscanf). Cenni alle funzioni ausiliarie (setvbuf, fflush, fseek, ftell, rewind, feof, clearerr ). Lettura e scrittura con conversione ( famiglie della printf e scanf ). Convertitori di formato per printf e scanf.

10/12/2007 Lez. 63,64:
(Laboratorio) Esercizi su funzioni di libreria per l' I/O.

11/12/2007 Lez. 65,66:
(Laboratorio) Esercizi su convertitori di formato della printf e scanf.

13/12/2007 Lez. 67,68:
Strutture dati astratte e loro implementazione in C. Esempio: vettore. Liste concatenate: definizione, implementazione della struttura dati mediante struttura e puntatore alla stessa struttura, creazione della lista, alternative di implementazione.

14/12/2007 Lez. 69,70:
Liste concatenate: aggiunta e cancellazione di un nodo. Function di manipolazione.

17/12/2007 Lez. 71,72:
Elaborazione di input formattato. Esercizi su I/O formattato.

18/12/2007 Lez. 73,74:
Uso del debugger gdb mediante interfaccia grafica ddd. Passaggio di parametri a main. Esempio di implementazione di lista concatenata semplice.

20/12/2007 Lez. 75,76: Metodologie di programmazione.  Programmazione strutturata:  modularizzazione,  information hiding, disegno top-down o bottom-up. Limiti dell' approccio. Cenni alle caratteristiche delle metodologie object-oriented. Classi, oggetti, ereditarietà,  polimorfismo.  Evoluzione dalla struttura  C  alla classe. Metodi.  Breve storia di Java.

21/12/2007 Lez. 77,78: Struttura basata su  classi di un programma java.  Metodo main. Esempi.  Semplice I/O: Sistem.out.println, JOptionPane.showInputDialog.  Principali differenze tra Java e C: cast, operatori (>>>, no  operatore virgola),   tipi dati primitivi, caratteri Unicode, classe String. Attributo final.  Array.  Metodi costruttori.

7/1/2008 Lez. 79,80: (Laboratorio) Lettura da stdin mediane  InputStreamReader. Cenni alle eccezioni. Campi ad acceso pubblico e privato.

8/1/2008  Lez 81,82: (Labotatorio)  Esempio di ereditarietà.  Classi astratte. Implementazione dei metodi astratti.

10/1/2008  Lez. 83,84:  Classi astratte ed interfacce. Implementazione delle interfacce. Classi interne. Interfacce grafiche. Eventi.  Ascoltatori. Esempio di interfaccia grafica (package swing).

14/1/2008 Lez. 85,86: (Laboratorio). Implementazione di interfaccia grafica.  Uso di JFrame, JPanel, JButton, ActionListener.



e-mail:  pastore@ts.infn.it

Department of Theoretical Physics, University of Trieste, Italy - Home-page