Come contattarciTrovaMappa del sito
UNIVERSITÀ POLITECNICA DELLE MARCHE
   
Novità

Didattica

Esami

Bacheca

Eventi

Rubrica

Home Page
A.A. 2003/2004
Laurea triennale
ING-INF/05
Fondamenti di informatica (a/l)
Docente: Primo Zingaretti

Programma:

Introduzione al corso e concetti introduttivi.
Reti di calcolatori, Internet e World Wide Web.
L’informatica e i suoi campi di applicazione.

Elaboratori elettronici e sistemi di elaborazione.
Sistemi di calcolo e principali componenti hardware, architetture, la macchina di Von Neumann.
Il software di base, il sistema operativo e le sue funzioni principali, e i programmi applicativi.

Elementi di programmazione.
Metodi per l'analisi di un problema, introduzione agli algoritmi e metodologie di progettazione.
Fasi di sviluppo e verifica di programmi, strumenti: editor, traduttori, linker, loader e debugger.
Introduzione ai linguaggi di programmazione, cenni sulla loro evoluzione, sintassi e semantica, grammatiche, BNF, EBNF, diagrammi e alberi sintattici.
Codifica binaria dell'informazione e algebra di Boole.

Il linguaggio C.
Struttura di un programma C, main, identificatori, commenti.
Espressioni: tipi di dato primitivi; costanti; espressioni e operatori: semplici, composti, aritmetici, relazionali, logici, condizionali e di concatenamento; grammatica e alberi sintattici delle espressioni, priorità e associatività degli operatori.
Variabili: dichiarazione e definizioni; inizializzazione; caratteristiche: scope, tipo, lifetime e valore; effetti collaterali: assegnamento, incremento e decremento.
Funzioni: il modello client-server; dichiarazione e definizione, chiamata e ritorno; binding e environment, tecniche di legame dei parametri; strategie di composizione, principi di progetto e relazione tra ricorsione e iterazione; il modello a run-time delle funzioni, record di attivazione.
Puntatori: estrazione di indirizzo e dereferenziamento; procedure e passaggio per puntatore.
Istruzioni: semplici; di controllo a basso livello (assembler); programmazione strutturata, strutture di controllo in C: blocco, selezione semplice e multipla, iterazione, alterazione di flusso.
Tipi strutturati: array e aritmetica dei puntatori, strutture, typedef, enumerazioni.
Progetti: l’ambiente di sviluppo integrato DJGPP; argomenti dalla linea di comando; progetti su più file; librerie di funzioni predefinite, file header; direttive al preprocessore C; macro.
Input/Output: canali standard; I/O a caratteri, bufferizzato e formattato; funzione per la lettura, scrittura e posizionamento su file binari e di testo.
Ancora sui puntatori: allocazione dinamica; puntatori a strutture, a puntatori, a funzioni.

Rappresentazione dei numeri naturali, interi e reali.
Notazioni posizionali; rappresentazioni degli interi in modulo e segno e in complemento a 2; rappresentazione normalizzata dei reali con mantissa e resto; algoritmi per le conversioni stringa/numero/stringa; valori rappresentabili e cifre significative per i tipi primitivi del C; errori: overflow, troncamento, incolonnamento, cancellazione, accumulazione.

Algoritmi e complessità.
Complessità di algoritmi e problemi, notazioni asintotiche.
Algoritmi di ordinamento: naive sort, bubble sort, insertion sort, quicksort, merge sort.
Generalizzazione del problema dell’ordinamento.
Algoritmi di ricerca sequenziale e binaria.

Strutture dati classiche.
Definizione tipi di dato astratti (ADT).
Liste: ADT; rappresentazioni statica e collegata, con indici e puntatori; implementazione delle operazioni primitive sia come funzioni che procedure; implementazione delle principali operazioni derivate (append e inserimento ordinato); liste circolari, bidirezionali e liste di liste.
Stack e code: ADT; rappresentazioni tramite vettore e indice e tramite lista; implementazione delle operazioni primitive.
Alberi: definizioni; ADT alberi binari, rappresentazione collegata con strutture e puntatori; implementazione delle operazioni primitive; algoritmi di visita; alberi binari di ricerca e inserimento ordinato.

Testi di riferimento:

  1. A. Bellini, A. Guidi, Linguaggio C - Guida alla programmazione, McGraw-Hill, 1999.

Altri testi:
B.W.Kernigham, D.M.Ritchie, Linguaggio C- II edizione, Jackson Libri, 1992.
C.Batini, L.C.Aiello, M.Lenzerini, A.Marchetti Spaccamela, A.Miola, Fondamenti di programmazione dei calcolatori elettronici, Franco Angeli, 1993.
B.Stroustrup, C++ (terza edizione), Addison-Wesley, 2000.
H.Schildt, Guida al linguaggio C++, McGraw-Hill, 1996.

 
<< torna al sommario
 
  Via Brecce Bianche - Monte Dago -60131 Ancona - Tel. 0039-071-2204708