Programmazione I

(Turno 1 e Turno Serale)

Docente: Giovanni Pighizzini

Anno accademico 1999/2000


Programma del corso

1. Introduzione

Computer.

Hardware e software.

Algoritmi e programmmi.

Linguaggi: sintassi e semantica.

Linguaggi di programmazione: linguaggi ad alto livello e linguaggi macchina.

Dal programma in linguaggio ad alto livello al programma eseguibile: editor, compilatore, linker, interprete, debugger.

Il concetto di variabile e di tipo.

La programmazione strutturata: strutture di controllo fondamentali (sequenza, selezione, iterazione).

2. Linguaggio Pascal

Generalità sulla struttura lessicale e sintattica.

Struttura dei programmi Pascal.

Classificazione di tipi di dati in Pascal: semplici, stutturati, puntatori.

I tipi semplici: enumerativi, predefiniti (integer, char, boolean, real) e subrange. I tipi scalari.

I tipi strutturati: array, record, file, set. Il tipo text.

Istruzioni: istruzioni di assegnamento, costrutti di selezione, costrutti iterativi, chiamate di sottoprogrammi, input e output standard.

Procedure e funzioni: ambiente, definizione e chiamata di procedura, definizione e chiamata di funzione, meccanismi per il passaggio dei parametri (variabili, valore, funzioni, procedure).

Regole di visibilità degli identificatori. Gestione della symbol table da parte del compilatore Pascal.

Comportamento dinamico dei programmi durante l'esecuzione: organizzazione della memoria (stack e record di attivazione), attivazione e disattivazione di sottoprogrammi.

Sottoprogrammi ricorsivi.

Puntatori e variabili dinamiche. Le procedure new e dispose. Heap: allocazione dinamica di variabili.

3. Introduzione alle strutture dati e loro realizzazione in linguaggio Pascal

Liste, code, pile.

Alberi binari.

Alberi di ricerca.

Sottoprogrammi iterativi e ricorsivi per il trattamento delle strutture dati dinamiche.

Testi di riferimento

A. V. Aho, J.D. Ullman, Fondamenti di Informatica, Zanichelli, 1994.

J. Bishop, Pascal: Corso di programmazione, Addison-Wesley, 1994.

K. Jensen, N. Wirth, Pascal User Manual and Report (fourth edition), Springer-Verlag, 1991.

U. Moscato, M. Ornaghi, Algoritmi, programmi e linguaggi di programmazione, Città Studi Editore, 1991.

U. Moscato, M. Ornaghi, Pascal: Elementi di semantica del linguaggio,Città Studi Editore, 1991.

N. Wirth, Algoritmi + Strutture Dati = Programmi, Tecniche Nuove, 1987.

Gli appunti delle lezioni, preparati dal docente, sono disponibili in formato elettronico all'indirizzo Internet http://homes.dsi.unimi.it/~pighizzi/prog1

Modalità d'esame

L'esame consiste di una prova scritta e di una prova orale. Sono oggetto delle prove tutti gli argomenti trattati durante il corso. Per la prova orale lo studente dovrà inoltre presentare e discutere un progetto, sviluppato in linguaggio Pascal, per la soluzione di un problema proposto dal docente.

Durante il corso sono previsti tre compitini. Gli studenti che sostengono i compitini con esito positivo sono esonerati dalla prova scritta e ammessi direttamente alla prova orale. Si suggerisce vivamente agli studenti di sfruttare questa opportunità, in modo che la preparazione dell'esame segua di pari passo lo svolgimento del corso e l'esame stesso sia sostenuto subito dopo la fine del corso.


Ultimo aggiornamento: 1° febbraio 2000
Giovanni Pighizzini, pighizzi@dsi.unimi.it