Questo insegnamento si propone di fornire allo
studente le conoscenze necessarie ad avere dimestichezza con la
programmazione in linguaggio C e con alcuni argomenti ad essa
collegati (ad es. la formulazione di algoritmi efficienti).
Il seguente elenco di argomenti viene discusso (quasi sempre) in
connessione a dei programmi che vengono scritti dagli studenti in
laboratorio durante delle esercitazioni guidate. I testi dei
programmi (scritti dal docente) relativi alle suddette esercitazioni
guidate sono reperibili al punto 5 del Materiale
didattico.
Cenni al funzionamento del computer; introduzione al sistema
operativo Linux/Unix.
Rappresentazione dei numeri interi e in virgola mobile;
descrizione del metodo di calcolo delle funzioni elementari e non;
utilizzo degli operatori logici.
Funzioni: passaggio delle variabili da chiamante a funzione
e viceversa; suddivisione di un algoritmo complesso in parti elementari
(divide et impera);
Iterazione e ricorsione; pila di attivazione; cenni al calcolo
della complessità di un algoritmo.
Manipolazione di stringhe; vettori e puntatori; un algoritmo
di ordinamento: il "merge sort";
Gestione delle operazioni di input/output sui file ASCII e binari.
Accesso sequenziale a un file e cenni all'accesso casuale.
La prova d'esame consiste nella scrittura (e nell'esecuzione) di un
programma al computer su un qualsiasi argomento, che spesso è
di carattere matematico. A titolo di esempio, al punto 6 del Materiale didattico sono reperibili i temi d'esame
(e le soluzioni) relativi agli appelli precedenti.
Tutto il materiale didattico, di cui si può generare una copia
in formato elettronico seguendo le istruzioni fornite in questa pagina
web, è ampiamente sufficiente per apprendere gli
argomenti del corso e superare la prova d'esame. Inoltre, è
fondata speranza (o pia illusione, al lettore l'ardua sentenza) del
docente di questo corso che il seguente materiale didattico possa
costituire un valido supporto anche per alcuni degli insegnamenti
relativi all'informatica o al calcolo numerico (fino all'analisi
numerica), che lo studente di matematica dovrà sostenere in
futuro, durante il suo periodo di formazione all'università.
È comunque auspicabile anche l'acquisto di un testo completo
sul linguaggio C, per cui si rimanda al testo consigliato dai docenti
del corso di Informatica 1. Per completezza di informazione,
al termine della presente sezione "Materiale didattico" di questa
pagina web, sono riportate le referenze di alcuni manuali sul
linguaggio C.
Avvertenza: tutto il materiale
didattico descritto fino al seguente punto 3 compreso (inclusi i
CD-ROM) è stato consegnato al "Focal point" presente all'interno
dell'edificio So.ge.ne., affinché potesse esserne distribuita
copia a tutti gli studenti che ne fanno richiesta. Il prezzo
complessivo delle copie del materiale cartaceo descritto ai punti 1-3
è di circa 10 euro, cui vanno sommati 2 euro per la
masterizzazione di ciascun CD-ROM di cui si richiede copia (in totale
sono due CD-ROM, ma ci si può limitare ad uno solo). Avere una
copia in formato elettronico del suddetto materiale didattico sul
proprio computer può essere molto comodo per lo studio, ma si
prega di tenere conto del fatto che produrre delle copie cartacee
(partendo da quella in formato elettronico) utilizzando la propria
stampante è probabilmente molto più costoso rispetto
all'acquisto delle fotocopie. Inoltre, per quanto riguarda la
masterizzazione dei CD-ROM, è bene tener presente che la cosa
può essere fattibile e vantaggiosa solo se si ha a disposizione
un collegamento alla rete sufficientemente rapido ed economico.
I files di documentazione, accessibili da questa pagina web o da
quelle indicate nei links, sono in formato PostScript e PDF.
I files in formato PDF accessibili da questa pagina web non sono
compressi (la differenza in occupazione di memoria di questi files non
sarebbe molto rilevante). Dopo averli scaricati, per poterli leggere
occorre l'applicazione Acrobat Reader, che è molto spesso
presente nelle distribuzioni recenti dei sistemi operativi sia di tipo
Linux che Windows. Inoltre, Acrobat Reader si può trovare in
quasi tutti i CD allegati a riviste di informatica o si può
scaricare direttamente dal sito del produttore (cercare la voce
Acrobat con un motore di ricerca qualsiasi).
Per quanto riguarda i files in formato PostScript accessibili da
questa pagina web, si proceda come segue. Chi usa Linux può
scaricare i files di tipo ps.gz, compressi in formato gzip, e
decomprimerli col comando
gunzip nome_file.ps.gz
Chi usa Windows può scaricare i files di tipo .zip,
compressi in formato zip, e decomprimerli con
winzip.
I files PostScript possono essere stampati o letti con l'applicazione
ghostview.
Note su linguaggio C e dintorni
di A. Giorgilli.
Tutti i files relativi alle suddette note sono accessibili al
punto 3 della pagina web relativa al corso Laboratorio
Informatico dell'Università di Milano Bicocca tenuto
dal prof. A. Giorgilli.
Primi passi con il sistema operativo
LINUX di A. Giorgilli e U. Locatelli. Un "collage"
di materiale didattico che dovrebbe mettere in condizione chiunque
ha a disposizione un calcolatore (dalle caratteristiche non troppo
eccentriche) di lavorare in un ambiente simile a quello che trova in
laboratorio.
Questa guida consta delle seguenti parti:
Il CD-ROM di KNOPPIX e/o Il CD-ROM
di QUANTIAN:
due distribuzioni del sistema operativo Linux con cui
è possibile lavorare senza effettuare l'installazione sul
disco rigido del proprio computer. Quantian è basato su
Knoppix e si differenzia da esso per la scelta dei programmi
applicativi forniti assieme al sistema operativo. In Quantian
sono presenti molti programmi utili in ambiente
scientifico. D'altra parte, la versione di Knoppix indicata sotto
sembra più affidabile di quella corrispondente di
Quantian, specie per quanto riguarda l'utilizzo in modo testo.
Sono qui
disponibili alcune informazioni sui siti da cui è
possibile scaricare i CD-ROM di Knoppix e Quantian, oltre
ad alcuni accorgimenti che consentono di avviare il sistema
dal CD-ROM di Knoppix anche quando non sembra possibile.
Schede di lavoro di
A. Giorgilli. Esse costituiscono dei veri e propri esercizi di
programmazione.
Tutti i files relativi alle suddette schede sono accessibili al
punto 4 (dalla scheda 3 alla 11, le prime due non sono adatte per
essere svolte nel contesto del corrispondente corso di Laboratorio
di programmazione tenuto all'Università di Roma "Tor
Vergata") della pagina web relativa al corso Laboratorio
Informatico dell'Università di Milano Bicocca tenuto
dal prof. A. Giorgilli.
Il dischetto di laboratorio di
A. Giorgilli. Esso contiene i programmi (o, in altri termini,
le "soluzioni degli esercizi") relativi alle schede di lavoro
descritte al punto 3.
dischetto.tgz: archivio tar
compresso con gzip, per utenti Linux (o Unix).
Occorre decomprimere e
spacchettare il file col comando tar -xvzf dischetto.tgz
dischetto.zip: file
compresso con winzip, per utenti Windows. Il contenuto del file
deve essere spacchettato con winzip.
I programmi svolti nel laboratorio di
programmazione: in un unico file sono raccolti tutti
i programmi riguardanti gli esercizi proposti a lezione e svolti dal
docente durante il corso tenuto nell'anno accademico
2003/04.
aproffe0304.tgz: archivio tar
compresso con gzip, per utenti Linux.
Occorre decomprimere e spacchettare il file con il comando tar -xvzf aproffe0304.tgz
aproffe0304.zip: file
compresso con winzip, per utenti Windows. Il contenuto del file
deve essere spacchettato con winzip.
Indipendentemente dal fatto che il sistema operativo usato sia di tipo
Linux o Windows, dopo aver effettuato le operazioni di "decompressione
e spacchettamento", verrà generata una directory chiamata
"aproffe". Al fine di cominciare ad esercitarsi con i suddetti programmi,
per prima cosa si consiglia di leggere il file "README" all'interno
della directory "aproffe".
Un esercizio terribile sull'uso
dei puntatori e sulle operazioni di lettura / scrittura sui
file, a beneficio degli indomiti studenti del corso di
LC1 dell'anno accademico 2005/06.
I valori riportati nel file di input matrici.inp sono tali
che il risultato del prodotto matriciale (che viene riportato nel
file di output matrici.out) deve essere uguale
all'identità.
I temi d'esame assegnati negli appelli
precedenti: in un unico file sono raccolti tutti
i testi e le soluzioni degli esercizi proposti agli esami.
esami0304.tgz: archivio tar
compresso con gzip, per utenti Linux.
Occorre decomprimere e spacchettare il file con il comando tar -xvzf esami0304.tgz
esami0304.zip: file
compresso con winzip, per utenti Windows. Il contenuto del file
deve essere spacchettato con winzip.
Indipendentemente dal fatto che il sistema operativo usato sia di
tipo Linux o Windows, dopo aver effettuato le operazioni di
"decompressione e spacchettamento", verrà generata una
directory chiamata "esami0304" e all'interno di essa una
sotto-directory per ciascun appello. Al fine di cominciare ad
esercitarsi con i suddetti temi d'esame, per prima cosa si consiglia
di leggere il file "README" all'interno di una sotto-directory
relativa a un qualsiasi appello.
Il promemoria dei comandi per DOS, FTP, PICO
e UNIX da utilizzare in laboratorio (utili per come è
configurata l'aula 25):
istruzioni.txt: Il file di testo
con un breve pro-memoria dei comandi per DOS, PICO e UNIX.
salva.txt: Il file di
testo con un breve pro-memoria sulle operazioni da effettuare per
poter copiare su dischetto i files che sono presenti sul server
dell'attività didattica di Matematica e viceversa.
Il compilatore DEV C++: questo
compilatore funziona in ambiente Windows ed è in grado di
tradurre in files eseguibili i codici sorgente scritti in C++ (e
quindi anche quelli in C).
devcpp4.zip: file compresso
con zip, per utenti Windows. Il contenuto del file deve essere
spacchettato con zip. Successivamente, le istruzioni per
l'installazione del compilatore devono essere lette e seguite
attentamente.
Testi consigliati sul linguaggio C:
B. W. Kernighan, D. M. Ritchie:
The C programming language, Prentice-Hall Inc., New Jersey. (Di
questo testo esiste anche una traduzione italiana).
H.M. Deitel, P.J. Deitel: C corso completo di programmazione,
Apogeo, Milano.
Il titolare del corso di Laboratorio di programmazione
per l'anno accademico 2003/04 è il
Dr. Ugo Locatelli
Orario di ricevimento studenti: su
appuntamento (da fissare preventivamente tramite
e-mail).
Num. di stanza dell'ufficio: 1222
(tradotto in italiano: si trova al primo piano del secondo "dente",
nella zona di So.ge.ne. riservata agli uffici dei docenti che
afferiscono al Dipartimento di Matematica)
Num. tel. (ufficio): 06 7259 4652
Indirizzo e-mail: locatell@mat.uniroma2.it
Il corso di Laboratorio di Programmazione scompare e non si sa
se e quando si rimaterializzerà. Infatti, in seguito alla
riorganizzazione del corso di laurea in matematica, a partire dal
prossimo anno accademico 2004/05, il corso di Laboratorio di
Programmazione non verrà attivato. Gli studenti che hanno
nel proprio piano di studi il corso di Laboratorio di
Programmazione e che, sfortunatamente, non hanno superato l'esame
nel corso degli appelli dell'a.a. 2003/04, sono pregati di recarsi
presso la segreteria didattica del corso di laurea in Matematica
(in parole povere, si chieda della Sig.ra Laura Filippetti), per
sapere come sostituire il corso di Laboratorio di Programmazione
con altri nel proprio piano di studi e / o se è possibile
sostenere l'esame del corso stesso di Laboratorio di Programmazione
in futuro.