Corso di
Fondamenti di Informatica I (I modulo)
Corso di Laurea in Ingegneria Informatica (canale didattico di Ingegneria delle Reti e dei Servizi Informatici), Facolta' di Ingegneria, Universita' degli Studi di Roma "La Sapienza" - Polo di Rieti, a.a. 2008/2009.
Testo di riferimento:
-
"C Corso completo di programmazione" - H. M. Deitel, P. J. Deitel; Apogeo, 2007.
Materiale didattico:
Programma:
-
Nozioni di base:
Concetto di macchina programmabile. Definizione di algoritmo. Proprieta' degli algoritmi: non ambiguita', eseguibilita', finitezza. Linguaggi per descrivere algoritmi: linguaggio naturale, diagrammi a blocchi, pseudocodice, linguaggi di programmazione. Livelli di astrazione nei linguaggi di programmazione: linguaggio macchina, linguaggi assemblativi, linguaggi di alto livello. Classificazione dei linguaggi di alto livello: dichiarativi, imperativi, orientati agli oggetti.
-
Architettura dell'elaboratore:
Macchina di Harvard. Macchina di von Neumann. Architettura di un moderno elaboratore. Struttura della memoria: organizzazione in celle, indirizzi. Schema funzionale di una CPU: ciclo fetch-decode-execute, registri, arithmetic logic unit (ALU).
-
Rappresentazione dell'informazione:
Rappresentazione binaria di numeri interi senza segno. Rappresentazione binari di numeri interi con segno: bit di segno, complemento a 2. Rappresentazione di numeri reali: rappresentazioni in virgola fissa ed in virgola mobile (floating point). Rappresentazione in base 16 (esadecimale). Conversioni di base.
-
Software di base:
Concetto di sistema operativo. Funzionalita' del sistema operativo: gestione della CPU (scheduling dei processi), della memoria centrale, dei dispositivi di I/O, della memoria secondaria (filesystem, organizzazione gerarchica delle directory), dell'interfaccia utente. Concetto di virtualizzazione dell'hardware. Differenze tra compilatori ed interpreti. Compilazione, linking, caricamento ed esecuzione di un programma.
-
Linguaggio C:
Tipi di dato, variabili, espressioni, assegnazioni. Istruzioni condizionali. Istruzioni di ciclo. Array e puntatori. Stringhe. Gestione dei parametri passati sulla riga di comando. Funzioni di libreria standard: input da tastiera, output su schermo, allocazione e rilascio di memoria, accesso sequenziale ai file, operazioni matematiche, manipolazione di stringhe. Modularizzazione funzionale. Definizione di funzioni in C: parametri formali, parametri attuali, organizzazione della pila dei record di attivazione. Ricorsione. Algoritmi di ordinamento: Selection Sort, Bubble Sort.
Testi d'esame: