Sei sulla pagina 1di 2

In queste note, descrivo due degli attrezzi con i quali possiamo trasformare un algoritmo in un programma eseguibile.

Il primo attrezzo assiste nella stesura del codice sorgente; il secondo traduce il codice sorgente in codice eseguibile.

1 Leditor vi
Il codice sorgente di un programma ` e un testo che va composto con laiuto di un altro programma. I programmi per la composizione di testi si possono suddividere in due grandi categorie: 1. word processor 2. text editor I programmi della prima categoria, ai quali appartengono Microsoft Word e OpenOce Writer, combinano le funzioni di una macchina per scrivere e le operazioni di un tipografo: possiamo impaginare il testo secondo diversi stili, impiegare tipi diversi di caratteri, colori, e cos` via. Un text editor, invece, ` e lequivalente di una macchina per scrivere semplice. Rispetto al nostro obiettivo, la dierenza fondamentale risiede nella rappresentazione interna dei testi composti nei due casi: per conservare le informazioni sullimpaginazione e sulle altre caratteristiche visive di un testo, un word processor mescola ai byte corrispondenti ai caratteri testuali altri byte che codicano quelle caratteristiche. Viceversa, un text editor registra fedelmente solo ci` o che scriviamo: il testo semplice. Un compilatore si aspetta di ricevere un programma nella forma di testo semplice; di conseguenza, ` e possibile adoperare un word processor per la stesura di un programma, ma occorre salvare il le su cui si lavora nel formato solo testo (o formulazioni equivalenti, come formato ASCII o altre). Daltra parte, i text editor sono spesso dotati di funzioni speciche per i programmatori, e sono quindi pi` u convenienti. Descrivo qui un particolare editor, cio` e vi, universalmente disponibile nei sistemi UNIX. Per avviarlo, si impartisce il comando vi nf, dove nf va sostituito con il nome del le che si vuole comporre. Per comprendere il funzionamento di vi, occorre distinguere due modi operativi: il modo di inserimento e il modo di comando. Nel primo, ci` o che scrivo compare sullo schermo ed ` e destinato a essere registrato come contenuto del le; nel secondo, il programma attende un comando. I comandi corrispondono a brevi sigle, di una o pi` u lettere o tasti. Nel seguito, per indicare un comando, scriver` o la sigla corrispondente nel carattere delle macchine per scrivere, come in Y. Di norma, allavvio il programma ` e in modo di comando; per passare al modo di inserimento si usa il comando i, cio` e si preme il tasto della lettera i minuscola. Da questo momento, si pu` o digitare il testo. Per passare dal modo di inserimento al modo di comando, si preme il tasto ESC. Per salvare il contenuto corrente, si digita, mentre il programmma opera nel modo di comando, :w. Diversamente da altri comandi, questo

compare in fondo alla nestra. Per uscire dal programma, si digita, sempre in modo di comando, :q. Il programma ` e dotato di una serie ricchissima di comandi per spostarsi rapidamente da una parte allaltra del testo, per compiere sostituzioni testuali, per cercare occorrenze di parole o sequenze di caratteri, e cos` via: consultate la scheda di riferimento.

2 Il compilatore gcc
La trasformazione di un programma dalla forma di codice sorgente a quella di codice eseguibile comprende di norma diverse fasi, che si possono per` o eseguire con un solo comando. Descrivo qui i rudimenti dellimpiego di un particolare compilatore, denominato gcc. La sigla gcc denota in eetti una famiglia di programmi che costituiscono nel loro insieme una scatola degli attrezzi per compilare programmi scritti in C. Per ora ci limitiamo alle forme pi` u semplici duso. Supponiamo di avere scritto un programma e di averlo salvato nel le prog.c. Se la cartella corrente ` e quella che contiene quel le, possiamo compilarlo con il comando gcc prog.c Se il programma ` e sintatticamente corretto, il compilatore genera un le eseguibile di nome a.out, ma lo fa silenziosamente: nella nestra della shell di lavoro, ricompare linvito al comando successivo. Lesecuzione di ls in questo caso testimonia la presenza del nuovo le nella stessa cartella. Il le ` e eseguibile, il che signica che lo possiamo trattare alla stregua di un nuovo comando e possiamo quindi avviarne lesecuzione direttamente. Se il programma non ` e sintatticamente corretto, il compilatore, lungi dallo starsene silenzioso, si lamenta esponendo lelenco dei presunti errori. Dico presunti perch e il compilatore fa del suo meglio per individuarli, ma in alcuni casi, specialmente in presenza di una catena di errori, pu` o confondersi. In ogni caso, il compilatore non perdona: se c` e un errore, lo rileva infallibilmente. Linterpretazione dei messaggi derrore ` e unarte che esige animo sereno e si ana con lesperienza. In soccorso al programmatore ci sono programmi specializzati, detti debugger, dei quali tratteremo nel seguito del corso (se ci sar` a tempo suciente). Per concludere questa miniguida, menziono due delle innite opzioni con le quali si pu` o regolare il comportamento di gcc. La prima (-o nomefile) permette di specicare un nome alternativo per il le eseguibile generato dalla compilazione; la seconda (-Wall) istruisce il compilatore a emettere non solo eventuali messaggi derrore, ma anche avvertimenti (warning ) relativi a caratteristiche dubbie o sospette del codice sorgente. La forma in cui adoperiamo il compilatore nelle prime esercitazioni ` e quindi la seguente: gcc -Wall -o nfex nfsrc dove nfsrc ` e il nome del le contenente il codice sorgente, e nfex ` e il nome che scegliamo per il le eseguibile da generare.

Potrebbero piacerti anche