<- PW: GTK+ Quarta Puntata - Copertina - PW: IOCCC ->

PlutoWare


Introduzione al Pascal

di Mariano Bono


L'articolo...

Con questo articolo intendo dare un'introduzione al linguaggio di programmazione Pascal, partendo dalla storia del linguaggio fino ad arrivare ai compilatori oggi disponibili per piattaforma Linux.


Indice


Che cos'è il Pascal?

Il Pascal è un linguaggio di programmazione ad alto livello, come per esempio lo sono il C e Java; lo scopo fondamentale per cui questo linguaggio di programmazione è nato è quello di essere utilizzato a scopi didattici, e non per la realizzazione di software applicativi.

La programmazione in Pascal risulta semplice ed ordinata , inoltre "costringe" il programmatore a rispettare alcune regole di impostazione del programma che rendono il codice ben strutturato e di facile lettura .

Questa struttura ordinata e rigorosa è uno degli aspetti fondamentali che rende il Pascal un ottimo linguaggio per imparare a programmare; infatti queste "limitazioni", che possono risultare noiose per un programmatore esperto, sono molti utili al programmatore alle prime armi in quanto forniscono una metodologia di programmazione corretta e rendono più semplice l'individuazione di errori concettuali fatti nella scrittura del codice.
Un altro punto a favore del Pascal come linguaggio didattico è la semplicità con cui si scrive il codice; infatti le istruzioni del Pascal sono costituite da espressioni di tipo algebrico e da termini inglesi (dette parole riservate) come PROGRAM , BEGIN , END etc.

Uno svantaggio del linguaggio è certamente la scarsa flessibilità che lo rende inadatto allo sviluppo di software applicativi.


Storia del linguaggio

Il Pascal è stato sviluppato all'inizio degli anni '70 da Niklaus Wirth del Politecnico di Zurigo.

Come abbiamo già detto lo scopo dell'autore era quello di realizzare un linguaggio ad alto livello disciplinato all'insegnamento della programmazione strutturata.

Il linguaggio sviluppato da Wirth viene a volte definito Pascal standard, in realtà in seguito lo standard del linguaggio è stato definito dall'American National Standards Institute (ANSI), quindi spesso si parla di Pascal ANSI.
I compilatori disponibili oggi aderiscono perfettamente allo standard ANSI; quasi sempre però vengono fatte delle aggiunte che rendono la programmazione migliore, ma che non sempre sono compatibili con altri compilatori.

Attualmente sono disponibili diversi compilatori, free software e non, ma sicuramente il compilatore più famoso è il Turbo Pascal creato nel 1983 dalla Borland.

L'evoluzione dell'informatica ha apportato anche al Pascal alcune modifiche: inizialmente il Pascal supportava la programmazione strutturata, oggi supporta anche la programmazione orientata agli oggetti (OOP Object Oriented Programming); la nascita di ambienti di sviluppo visuali ha dato vita al Delphi, un ambiente di sviluppo visuale che alla base ha il Pascal, e che viene impiegato anche nello sviluppo di software applicativi.


Struttura di un programma Pascal e alcuni esempi di codice

Analizziamo ora la struttura tipica di un programma scritto in Pascal, vedremo in seguito alcuni esempi di codice.

La struttura del codice scritto in Pascal può essere schematizzata come segue :

     (* 1 INTESTAZIONI*)

(1)   program Esempio_di_struttura;

     (* 2 BLOCCO DELLE DICHIARAZIONI*

(2)   var a,b,c : integer;
(3)       d     : real;
(4)       str1  : string;

(5)   procedure Esempio1;
(6)     begin
(7)     end;

(8)   function Esempio2:real;
(9)     begin
(10)    end;

      (* 3 BLOCCO DELLE ISTRUZIONI*)

(11)  begin

       (*Istruzioni principali del programma*)

(12)  end.

Le parti principali del programma sono 3: intestazioni, blocco delle dichiarazioni e blocco delle istruzioni.
La prima parte, cioè quella delle intestazioni, è formata essenzialmente da una istruzione, la (1) in cui viene specificato il nome del programma tramite la parola chiave program.

La seconda sezione del programma viene denominata blocco delle dichiarazioni: qui definiremo tutto quello che ci servirà in seguito (nel blocco delle istruzioni); in particolare possiamo schematizzare il tutto come segue.

Blocco delle dichiarazioni:

Il blocco delle istruzioni contiene le istruzione vere e proprie che il programma deve eseguire al fine di produrre l'effetto desiderato, che può essere la scritta di un messaggio sul video, la somma di 2 numeri etc.

Per finire questa sezione vi mostro 2 piccoli programmini di esempio, il primo è il classico "Hello world" che si limita a stampare la scritta "Hello world" sul video del vostro computer; il secondo invece dopo avere chiesto all'utente di inserire 2 numeri ne effettua la somma e il prodotto e restituisce i risultati.

  program Ciao_Mondo;

  begin

    writeln('Ciao Mondo!!!');

  end.

Dopo avere compilato (dopo vi dirò come fare) questo codice ed eseguito il programma da un terminale otterrete un effetto simile:

  Ciao Mondo!!!

Questo è il secondo programma:

  program Somma_e_prodotto_di_2_numeri;

    var a,b : integer;

  begin

    write('Inserisci A = ');
    readln(a);

    write('Inserisci B = ');
    readln(b);

    writeln(a,'+',b,'=',a+b);
    writeln(a,'*',b,'=',a*b);

  end.

Questo fornisce un risultato del genere:

Inserisci A = 12
Inserisci B = 10
12+10=22
12*10=120


Compilatori Pascal

Il Pluto-journal si occupa di sistemi free e di freesoftware, per queste ragioni mi limiterò in questa sezione a parlare di compilatori free disponibili per Linux, ma che lo sono anche per Windows.

Sono molti i compilatori disponibili, ma sono due quelli che io ritengo i migliori e cioè il Freepascal e lo GNU-Pascal.

Il Freepascal e scaricabile all'indirizzo www.freepascal.org; il secondo invece lo potete trovare al seguente indirizzo agnes.dida.physik.uni- essen.de/~gnu-pascal/

Freepascal

Il compilatore Freepascal è un ottimo compilatore, semplice da usare, completamente aderente allo stadard ANSI e che inoltre aggiunge molte funzionalità a quest'ultimo. Inoltre, è estremamente veloce.

Inizio col dire che questo compilatore è distribuito con licenza GPL (www.gnu.org) e quindi completamente free; punto forte del freepascal è sicuramente il fatto che lo abbiamo disponibile per ben sei piattaforme diverse:

E' un compilatore a 32 bits per i processori della famiglia i386 e superiori.

Le caratteristiche che mi hanno subito colpito del freepascal sono molte; per prima cosa la piena compatibilità tra freepascal e Turbo Pascal, il che significa che tutti i programmi scritti per quel mitico compilatore sono compilati in maniera perfetta dal freepascal.
Per chi non sa cos'è il Turbo Pascal, niente paura: darò un accenno in seguito.

Un altro aspetto che mi ha colpito è il supporto delle librerie GTK in ambiente Linux, e il supporto delle API in ambiente Windows, quindi la possibilità di creare applicazioni a "finestre" e non limitarsi ai programmi che girano solo su un terminale Linux o sul prompt di DOS.

Altri aspetti importanti sono il supporto del codice asm (assembly) integrato all'interno del programma in Pascal e il supporto della grafica in ambiente DOS tramite l'uso delle BGI.

Il freepascal mette inoltre a disposizione del programmatore una vasta mole di librerie per gli usi più disparati, dalla gestione dello schermo alla gestione delle stringhe; inoltre per gli ambienti Linux e DOS sono disponibili due apposite librerie con le funzioni di sistema.

Infine c'è da segnalare la documentazione allegata al compilatore che è veramente ottima; troviamo infatti tutto su come usare il compilatore, la descrizione di tutte le librerie fornite ed anche una descrizione del linguaggio Pascal stesso.

Adesso diamo un'occhiata all'uso basilare del compilatore; parto con il dire che il comando del compilatore (una volta installato) è ppc386 in Linux, mentre si chiama ppc386.exe sotto DOS/WINDOWS; per compilare un programma, che avrete scritto e salvato nella forma nomefile.pas oppure nomefile.pp, basta scrivere alla shell dei comandi:

ppc386 nomefile.pas

Per esempio vediamo come compilare il programma Ciao Mondo visto in precedenza:

Il compilatore vi dirà qualcosa del genere:

Free Pascal Compiler version 0.99.13 [1999/11/20] for i386
Copyright (c) 1993-1999 by Florian Klaempfl
Target OS: Linux for i386
Compiling ciao.pas

       ............
       ............

Assembling ciao_mondo
Linking ciao
6 Lines compiled, 0.0 sec

Se tutto è andato a buon fine il programma eseguibile si chiama ciao è per lanciarlo basta fare "./ciao" ottenendo questo risultato:

./ciao
Ciao Mondo!!!

Questo è il modo più semplice per compilare un programma. Naturalmente il compilatore dispone diverse opzioni, tra cui il supporto per i debugger; per farvene un'idea lanciate il comando ppc386 -?.

ppc386 -?

ppc386 [options]  [options]
put + after a boolean switch option to enable it, - to disable it
  -a     the compiler doesn't delete the generated assembler file
           -al        list sourcecode lines in assembler file
           -ar        list register allocation/release info in assembler file
           -at        list temp allocation/release info in assembler file
  -b     generate browser info
           -bl        generate local symbol info
  -B     build all modules
  -C  code generation options:
           -CD        create dynamic library
           -Ch      bytes heap (between 1023 and 67107840)
           -Ci        IO-checking
           -Cn        omit linking stage
           -Co        check overflow of integer operations
           -Cr        range checking
           -Cs     set stack size to 
           -Ct        stack checking
           -CD        create also dynamic library (* doesn't work yet *)
           -CX        create also smartlinked library
  -d  defines the symbol 
  -e  set path to executable
..........
..........
..........

GNU Pascal

Adesso parliamo un po' dello GNU Pascal ; questo compilatore è lo strumento standard fornito sui sistemi Linux e i suoi pregi essenzialmente sono una perfetta aderenza allo standard A.N.S.I., una buona velocità e tutte le altre caratteristiche che rendono unici i compilatori GNU :-)); per contro la quantità di librerie che vengono fornite con questo compilatore non è lontanamente paragonabile con il FreePascal. Un'altra nota dolente è la mancanza della possibilità di scrivere codice assembly integrato all'interno del codice pascal, cosa che altri compilatori consentono.

Naturalmente anche questo compilatore è fornito con licenza GPL (www.gnu.org), altrimenti non sarebbe GNU, ed inoltre esistono dei porting per altre piattaforme tra cui DOS e Win32.

Vi consiglio l'uso del GNU Pascal se volete un buon compilatore Pascal e non avete bisogno di alcune librerie che sono disponibili sul Freepascal e sui compilatori commerciali, per il resto infatti il compilatore è davvero ottimo.

Veniamo agli utilizzi pratici del compilatore; il nome del comando è gpc nei sistemi Linux, per eseguire un semplice test sull'uso del compilatore editate il programma "Ciao Mondo" visto in precedenza e salvate il file con il nome ciao.pas, per compilare il programma dovete lanciare il comando:

$ gpc -o Ciao ciao.pas

Se il programma non contiene errori, nella stessa directory di ciao.pas trovate il file eseguibile Ciao, altrimenti ricevete un avviso di errore del genere:

$ gpc -o Ciao ciao.pas
ciao.pas: In function `program_Ciaomondo':
ciao.pas:3: undeclared identifier `Wriwteln' (first use this function)
ciao.pas:3:  (Each undeclared identifier is reported only once
ciao.pas:3:  for each function it appears in.)

Le opzioni del compilatore sono numerossisime ed uguali in tutto a quelle degli altri compilatori della famiglia GNU, quindi mi limito a spiegarvi a cosa serve l'opzione "-o".
Questa opzione serve a specificare quale deve essere il nome del programma eseguibile (la o sta per output), in caso questa opzione venga omessa il nome di default per l'eseguibile sarebbe a.out, che a me personalmente da molto fastidio; vi consiglio quindi di usare sempre questa opzione.

Per farvi un idea sul numero infinito di opzioni utilizzabili leggetevi la pagina di manuale del gpc.

$man gpc

GPC(1)                      GNU Tools                      GPC(1)

NAME
       gpc - GNU project Pascal Compiler (v2.0)

SYNOPSIS
       gpc [option | filename ]...

..............
..............
..............

Turbo Pascal

Parlando di pascal come si può non parlare del Turbo Pascal? Beh, naturalmente è impossibile, quindi almeno due parole su questo leggendario ambiente di sviluppo le devo proprio dire, anche se questo giornale parla di free software e il Turbo Pascal non è free.

Il turbo pascal è un compilatore prodotto dalla Borland che grazie alla sua semplicità, potenza e velocità è diventato IL compilatore pascal.

Le innovazioni introdotte dalla Borland oggi sono diventate degli standard, e molti compilatori si preoccupano di essere compatibili con il turbo pascal.

La nota dolente è che questo compilatore è disponibile solo per DOS ed è un software commerciale; per il resto è davvero unico.

Delphi

Delphi è un ambiente di sviluppo visuale molto potente e veloce; il linguaggio usato dal Delphi è sostanzialmente il pascal con delle aggiunte (tipo OOP) che lo rendono più potente e flessibile.

Anche Delphi è un software commerciale prodotto dalla Borland ed è disponibile per Windows. Da un po' di tempo ne esiste una versione anche per Linux, Kylix, che non è free software ma che è comunque disponibile gratuitamente se viene utilizzato per lo sviluppo di software libero.


Perché il Pascal?

"Perché il Pascal?" è davvero una bella domanda a cui voglio dare la mia personalissima risposta.

Uno dei motivi che possono spingere all'uso del pascal è semplicemente la voglia di imparare a programmare, la semplicità di utilizzo, la rigorosità dell'impostazione; tutti questi fattori rendono il pascal uno dei migliori linguaggi disponibili per imparare a programmare "come si deve".
Quindi consiglio di usare il pascal sia a chi vuole imparare, sia a chi insegna.

Un secondo motivo che spinge ad imparare il Pascal è la possibilità di passare a programmare in Delphi in maniera semplice e naturale, consentendo così la realizzazione di software ad un livello molto alto.

Il terzo motivo per scegliere il Pascal è per la realizzazione di applicazioni destinate ad un uso personale o che non necessitano di prestazioni al top, evitando di complicarsi la vita con linguaggi più difficili quali il C.

Questi sono alcuni motivi che mi spingono a usare il Pascal e che lo rendono così caro a tante persone che come me hanno imparato questo linguaggio come primo di una lunga serie.


Conclusioni

Per quanto riguarda l'introduzione al pascal mi fermo qui, se avete bisogno di altre informazioni scrivetemi pure un'email oppure visitate il mio sito web.tiscalinet.it/pascalitalia. Per ora è tutto, spero di essere stato abbastanza chiaro ed esauriente.

Ciao e alla prossima...



A cura di

Mariano Bono (claudiobono@libero.it), studente in Ingegneria Informatica, da alcuni anni si interessa di Linux, appoggiando in pieno la politica dell'open-source e il progetto GNU.


<- PW: GTK+ Quarta Puntata - Copertina - PW: IOCCC ->