Programma del corso di
Fondamenti di Informatica (SSE)
docente: ing. Paolo Franciosa
anno accademico 1999-2000
Concetto di algoritmo.
Esempi di algoritmi in linguaggio naturale.
Generalità sui linguaggi di programmazione, compilatori.
Componenti di un sistema di elaborazione: hardware, software,
principali unità periferiche.
Architettura di un elaboratore: modello di von Neumann. Memoria
centrale, unità centrale, principali registri. Esecuzione dei
programmi, fasi di fetch ed execute.
Rappresentazione dell'informazione: codifica di informazioni numeriche
- sistemi di numerazione posizionali, codifica binaria, ottale,
esadecimale, conversioni di base. Rappresentazione di numeri interi
negativi. Rappresentazione in virgola mobile. Codifica di caratteri.
Tipi di dato astratti: vettori, matrici, pile, code. Implementazione
di pile e code tramite array e tramite liste collegate.
Algoritmi fondamentali:
Ricerca sequenziale, ricerca dicotomica su un vettore ordinato.
Algoritmi di base su matrici.
Ordinamento: bubble sort, insertion sort, selection sort, merge sort.
Introduzione alla complessità computazionale: concetto di
complessità di un algoritmo, notazioni asintotiche,
complessità intrinseca di un problema. Complessità del
problema dell'ordinamento basato su confronti. Equazioni di ricorrenza e
metodi per la loro soluzione (vedi [3, pagg. 21-26, 58-60,
163-165]).
Interazione con un sistema operativo basato su finestre. Concetto di
cartella, documento, applicazione.
Il sistema operativo: funzioni principali, gestione dei processi,
gestione della memoria, file system.
Introduzione alle reti di calcolatori: reti locali e geografiche,
protocolli e servizi fondamentali: ftp, smtp, telnet, http.
Strumenti di produttività individuale: i fogli elettronici.
Linguaggio C
- concetto di variabile, tipo, identificatore
- struttura di un programma C
- operatore di assegnazione
- tipi interi, floating point, carattere
- uso delle funzioni printf() e scanf()
- operatori aritmetici, autoincremento, confronto, logici. Espressioni,
precedenza tra operatori.
- conversioni implicite in espressioni disomogenee
- l'istruzione condizionale if ... else ...
- l'istruzione composta { ... }
- istruzioni condizionali nidificate
- istruzioni di iterazione: while ..., do ... while, for ..., istruzione
break
- arrays, stringhe di caratteri
- funzioni, istruzione return, passaggio dei parametri
- direttive di compilazione #define e #include, file di headers
%- modularizzazione di programmi in funzioni, variabili extern.
%- definizione di tipi utente (typedef)
%- ricorsione
%- puntatori, operatori & e *, passaggio di puntatori come parametri
- aritmetica dei puntatori, puntatori ed arrays
- variabili dinamiche: funzioni malloc(), calloc(), free()
- il tipo struct, realizzazione di liste tramite struct e
puntatori
Uso di un ambiente di programmazione C per
editing, compilazione, esecuzione, debugging di semplici
programmi.
Sono disponibili a titolo gratuito i seguenti strumenti della Borland:
-
TurboC 2.01, ambiente di sviluppo integrato,
-
C++ Builder,
compilatore di linea, non contiene editor ne' debugger.
Testi consigliati
[1] Ceri, Mandrioli, Sbattella: Informatica, arte e
mestiere, McGraw-Hill
[2] Bellini, Guidi: Linguaggio C: guida alla programmazione,
McGraw-Hill
[3] Cormen, Leicerson, Rivest: Introduzione agli algoritmi, Jackson
libri