Il linguaggio Pascal

Materie:Appunti
Categoria:Informatica

Voto:

1.5 (2)
Download:279
Data:20.02.2001
Numero di pagine:9
Formato di file:.doc (Microsoft Word)
Download   Anteprima
linguaggio-pascal_1.zip (Dimensione: 9.39 Kb)
trucheck.it_il-linguaggio-pascal.doc     30.5 Kb
readme.txt     59 Bytes


Testo

3. Il linguaggio Pascal

3.1. Ambiente Turbo Pascal

Il compilatore puт essere un interprete o un compilatore: il compilatore ha la funzione di segnalare gli errori.
Nel menu si possono trovare alcune opzioni:
• L: per selezionare il drive di lavoro;
• W: per assegnare un nome al programma;
• E: per entrare in ambiente editor e digitare il programma;
• R: per mandare in esecuzione il programma;
• S: per salvare il programma sul disco selezionato con L;
• Q: per uscire dal Turbo e ritornare al sistema operativo.
In editor si scrive il testo del programma, per poi tornare al menu, premendo i tasti CTRL e K e poi premendo D.
La versione 5.5 di Turbo pascal contione otto moduli indipendenti, con funzioni specifiche. Per utilizzare uno dei moduli, bisogna digitare una parola-chiave seguita dal nome del modulo (Es. Uses printer, permette di usare il modulo che gestisce la stampante). Il crt, contiene le funzioni di controllo del video, della tastiera e del colore.
Per tradurre un algoritmo in Pascal, и necessario sostituire le parole-chiave dell’algoritmo in quelle del Pascal:

Linguaggio di progetto
Linguaggio Pascal
Algoritmo
Variabili
Inizio
acquisisci

comunica
Fine.
Program
Var
Begin
readln
: =
writeln
End.
Ogni istruzione termina con il punto e virgola; nelle istruzioni di lettura (readln) e di scrittura (writeln) il nome della variabile и messo fra parentesi tonde.

3.2. Istruzioni di input-output

Le istruzioni eseguibili, comprese fra Begin...End, sono:
• assegnazione di valore ad una variabile;
• acquisizione di dati dall’esterno (in gergo, input);
• visulizzazione dei risultati (in gergo, output).
Nell’istruzione di assegnazione il nome della variabile (o identificatore), deve cominciare con una lettera, non puт contenere spoazi vuoti, puт contenere numeri; deve esserci compatibilitа fra il tipo di variabile e il valore assegnato; l’assegnazione и distruttiva, perchй il vecchio valore della variabile viene perduto.
L’istruzione SQR eleva al quadrato; mentre SQRT estrae la radice quadrata. A volte, quando si scrive una frazione, puт essere necessario mettere delle parentesi. Ogni operazione deve essere indicata in modo esplicito. Si possono usare solo parentesi tonde.
Nell’istruzione di lettura si usa readln, che significa acquisisci un valore immesso da tastiera.
Nell’istruzione di scrittura si usa writeln, che significa scrivi sullo schermo e porta il cursore a capo. Con questa istruzione si puт visualizzare il contenuto di una o piщ variabili separate da virgola; si puт visualizzare un messaggio, purchи sia scritto fra due apici. Invece di writeln, и anche possibile usare write, ma il cursore non va a capo.
Lo schermo и in modo testo. Esso и formato da 25 righe e 80 colonne per un totale di 2000 caselle. Ogni casella и individuata con due numeri interi, il primo rappresenta la colonna, il secondo la riga. Per scrivere un messaggio da un punto ben preciso dello schermo, si usa l’istruzione gotoxy.
L’ istruzione textcolor(N), per visualizzare il testo nel colore N; textcolor(N+128), per far lampeggiare la scritta, sempre nel colore N; textbackground(N), percambiare il colore del fondo schermo.
Per mezze della parola-chiave lst, con l’istruzione writeln, il modulo Printer permette di indirizzare l’output sulla stampante. Se si vuole utilizzare la stampante, bisogna dichiarare nel programma: uses crt, printer;.

3.3. I tipi di dato

I tipi di dato possono essere integer (interi), real (reali), char, boolean e string.
Nel tipo integer, l’elaboratore puт solo rappresentare solo una parte dell’insieme dei numeri interi. Mentre in matematica gli interi sono infiniti, per l’elaboratore sono compresi solo i numeri tra -32768 e 32767. Ogni numero non compreso fra i suddetti estremi, vi и una situazione di overflow (traboccamento).
Funzioni e operatori sugli integer

Funzione
Significato
ABS(x)
SQR(x)
PRED(x)
SUCC(x)
valore assoluto di x
quadrato di x
numero che precede x
numero successivo di x
Gli operatori sono:
+ per la somma;
- per la sottrazione;
- per la moltiplicazione;
DIV dа il quoziente intero;
MOD dа il resto della divisione.

Esistono anche gli operatori, che permettono di confrontare due interi (vero o falso).

Simbolo
Significato
=
=

=
=
uguale
diverso
maggiore
minore
maggiore o uguale
minore o uguale
L’intervallo dei real e molto piщ vasto di quello degli integer: si estende da -2.9 : 10-39 a 1.7 1038.
Funzioni e operatori sui real

Funzione
Significato
SQR(x)
SQRT(x)
ABS(x)
TRUNC(x)
ROUND(x)
INT(x)
quadrato di x
radice quadrata di x
valore assoluto di x
troncamento di x
arrotondamento di x
parte intera di x
Gli operatori sono G / + -. Per essi valgono le stesse prioritа che si applicano in matematica. I numeri di tipo real vengono visualizzati in forma esponenziale.
Quando si scrive un programma, occorre dichiarare subito le variabili da usare, in modo che l’esecutore sappia dove collocare un dato quando gli viene fornito.
Una variabile di tipo intero puт far parte di una di tipo reale; ma una di tipo reale non puт far parte di una di tipo intero.

3.4. I tipi alfanumerici

Con char si indica una variabile di tipo carattere. Nell’assegnazione occorre mettere fra apici il valore della variabile.
Ogni carattere della tastiera viene codificato con un numero del codice ASII (Codice Standard Americano per l’Interscambio di Informazioni). Le lettere maiuscole hanno codice compreso fra 65 e 90; le minuscole fra 97 e 122; i caratteri semigrafici fra 129 e 255.
CHR(N) fornisce il carattere corriospondente al numero N; ORD(‘C’) fornisce il numero corrispondente al carattere C.

Il tipo string permette di operare con parole e frasi (Es. var nome: string(30);). Il numero fra parentesi indica la lunghezza dei caratteri contenuti nella stringa (deve essere intero e compreso fra 1 e 255).
Nell’assegnare un valore alla variabile di tipo string, occorre mettere gli apici come per il tipo char. tra le funzioni predefinite vi и length, che fornisce la lunghezza di una stringa.

Una variabile di tipo boolean puт assumere valore di true (vero) o false (falso).
Gli operatori fra variabili booleane sono operatori logici: not (negazione), and (congiunzione, et), or (disgiunzione, vel), xor (disgiunzione esclusiva, aut). La composizione di variabili booleane segue le tavole di veritа della logica proposizionale.

3.5. La struttura alternativa

La selezione binaria consiste nelle seguenti istruzioni

Significato
Codifica in Pascal
Se la condizione и vera
Allora istruzione 1
Altrimenti istruzione 2
If condizione vera
Then istruzione 1
Else istruzione 2
Le tre parole-chiave Se...Allora...Altrimenti si traducono con If...Then...Else.

La selezione con blocco, sia dopo Then che dopo Else, invece che una istruzione puт essere eseguito un blocco di istruzioni. L’intera operazione и delimitata fra Begin ed End.

La selezione semplice consiste nelle seguenti istruzioni Se (If) condizione vera, Allora (Then) istruzione.

Nella selezione con condizione composta, l’operatore logico and indica che le condizioni devono essere verificate entrambe. Se uno dei due valori и negativo (o nullo), il blocco non viene eseguito.
Le due condizioni devono essere scritte fra parentesi tonde. Il motivo consiste nella prioritа delle operazioni. Infatti il compilatore esegue prima le operazioni di tipo logico, poi quelle di tipo aritmetico.

L’istruzione di selezione diventa molto utile quando bisogna calcolare il valore di una frazione, perchи occorre controllare che il denominatore sia diverso da zero.

3.6. La selezione multipla

Per la selezione multipla, invece di usare piщ volte Se...Allora... (If...Then), si usa Case...of...end. Questa opzione significa “nel caso in cui la variabile ... ha valore di ...”. L’istruzione и cgiusa da end. In questa istruzione и possibile introdurre Else.
Nella selezione multipla con blocco, occorre delimitare il blocco con le parole-chiave begin...end, perchй si tratta di eseguire piщ istruzioni in corrispondenza di ogni scelta.
Per inserire messaggi esplicativi in qualunque punto del programma, devono essere fra parentesi tonde e asterischi (* ... *).
A volte, in una formula contenente piщ variabili, bisogna ricavarne una in funzione delle altre. Di fronte a problemi dello stesso genere, si usa la parola-chiave const, per definire una costante (Es. R = 8.31;).

3.7. Debugging: esecuzione passo-passo

Il debugging (caccia all’errore), rende possibile la visione dell’esecuzione di un programma riga per riga. Durante questa operazione и possibile osservare, sulla finestra watch, il valore delle variabili. Per applicarlo si preme il tasto F7, per ogni istruzione (da Beging i poi), finchи non si arriva ad End. Per terminare l’operazione prima che finisca tutto il programma, si preme il tasto CTRL, accompagnato da F2.

Per inserire una o piщ variabili nella finestra Watch (osservazione), per controllare i loro valori durante l’esecuzione, si usa CTRL ,accompagnato da F7. Una volta comparsa la finestra, si deve digitare il nome di una variabile, e poi premere INVIO. Si possono osservare piщ variabili; accanto all’ultime compare il simbolo •. Continuando a premere F7, il valore delle variabili cambia, perchй ad esse viene assegnato un valore casuale, che cambia con lo spostamento del cursore sulle righe successive. Per svuotare l’intera finestra Watch si usa l’opzione Remove all watches del sottomenu di Break/Watch. Si puт togliere solo l’ultima variabile immessa con Delete Watch. Con F5 si puт far comparire o scomparire la finestra Watch.

3.8. Le procedure

Con il Pascal и possibile usare il metodo top-down, ovvero dividere un problema in sottoproblemi risolvibili con procedure (o funzioni).
In Turbo Pascal sono presenti procedure predefinite (cioи costruite da chi ha scritto il compilatore):
• Clrscr, che pulisce schermo ed esecuzioni;
• Gotoxy, che porta il cursore in un punto ben definito dello schermo. Questa procedura ha bisogno di due parametri per essere eseguita (Es Gotoxy(9,4););
• Writeln, puт essere usata con o senza parametri (Es. writeln, writeln(somma), writeln(somma, media).
Le procedure definite sono quelle inserite dall’utente, che devono essere dichiarate subito dopo le variabili, e viene eseguita quando viene richiamata nel blocco esecutivo del programma (programma principale). La struttura di procedura e di programma и identica. L’intestazione comincia con la parola-chiave Procedure seguita dal nome della procedura. Poi vi и la dichiarazione di eventuali variabili e il blocco esecutivo fra beging...end. Una procedura termina con end;, mentre il programma con End.. Appena l’esecutore incontra una procedura nel programma principale sospende l’esecuzione del programma, cerca la procedura nella parte dichiarativa, esegue la procedura e ritorna all’istruzione successiva. Ogni procedura ha un nome all0interno del programma principale, e puт essere chiamata piщ volte.

3.9. Il ciclo Repeat... Until

Il ciclo repeat...until (Ripeti...finchи), consiste nel ripetere le istruzioni quando sono false; se vere passa all’istruzione successiva. La condizione deve essere una proposizione logica, che puт solo assumere il valore di vero o falso. Se l’esecutore non comprende la condizione, manda un messaggio di errore.
La procedura Repeat...Until, permette di controllare l’imput e i dati immessi da tastiera. Si esce dal ciclo solo quando sono verificate contemporaneamente le condizioni.
Inizializzando una variabile si assegna un valore iniziale alla variabile, altrimenti il programma ne assegna un valore casuale.
Spesso, nell’uso dei cicli, si corre il pericolo di un ciclo infinito, perchи la condizione di terminazione non risulta mai vera.
И possibile usare un contatore (con passo intero o decimale) all’interno del ciclo.
Usando un ciclo si possono calcolare somme di valori numerici.

3.10. Il ciclo For...To...Do

Nei problemi iterativi possono essere di tipo enumerativo (si conosce il numero di ripetizioni) e non enumerativo (non si conosce il numero di ripetizioni).
Il ciclo enumerativo si esprime con le parole-chiave For...To...Do (Per...fino a...esegui). Questo blocco di istruzioni deve essere racchiuso tra begin.end.
L’istruzione del ciclo и la seguente:
For contatore:= valore_iniziale To valore_finale Do ...
• Contatore, valore_iniziale e valore_finale devono essere dello stesso tipo (integer o char).
• Se valore_iniziale > valore_finale il ciclo non и eseguibile.
• Valore_iniziale e valore_finale, se hanno un intero come risultato, possono essere delle espressioni (Es. For k:= h + m To 3 * h Do ...).
• Nel ciclo si possono usare delle procedure.
• Un ciclo, se vuoto, puт provocare ritardi nell’esecuzione (Es. For k:= 1 To 500 Do;).
Al momento dell’esecuzione, vi и lo scrolling (ovvero lo scorrimento veloce delle schermate). Lo schermo contiene 25 righe e 255 caratteri: quindi si susseguono piщ di dieci schermate. Occorre quindi mettere un controllo sulla variabile, che faccia fermare lo schermo quando essa risulta multiplo di 24 e quindi uguale a 0.
Con write(...) scrive i valori di ogni riga allineati e separati da uno spazio di quattro caratteri. Il primo writeln manda il cursore a nuova riga; il secondo lascia una riga vuota, per una maggiore leggibilitа della tavola.
Il contatore di un ciclo For puт anche essere diminuito di 1, cambiando To in Downto (Es. For k:= 20 Downto 1 Do writeln(k);).

3.11. Giochiamo con i numeri casuali
La funzione random genera un numero casuale tra 0 1 (1 escluso), e lo assegna ad una variabile (di tipo real) scrivendo: x:=random.
Per generare un numero intero fra 0 ed N (N escluso), si fa l’assegnazione x:= random(N+1) (x di tipo integer).
Prima della funzione random occorre scrivere l’istruzione randomize, che permette di generare diversi numeri casuali a ogni esecuzione.

3.12. Il ciclo While...Do
Il ciclo While...Do (Fintantochй...esegui) va delimitato tra begin...end; si esprime: While condizione vera Do istruzione. La variabile che controlla il ciclo viene inizializzata fuori dal ciclo (Es. N=1). Dentro al ciclo и incrementata di una unitа. Il ciclo si ripete finchи la condizione risulta vera; se falsa, termina. In struttura While...Do la condizione si esprime all’inizio del ciclo, subendo il rischio di non essere eseguito nemmeno una volta. Anche qui, vi и il rischio del ciclo infinito.
Per calcolare il massimo comune divisore si usa l’algoritmo di Euclide. Per calcolare il minimo comune multiplo bisogna dividere il prodotto dei due numeri per il loro massimo comune divisore.

Esempio