
MSX Turbo Pascal Rubrica a cura di Stefano Roperto (parte 2)
Capitolo 2
Introduzione al linguaggio Turbo Pascal
Vedremo ora come è strutturato un programma in Turbo Pascal. Non è necessario comprendere tutto in questo momento, stiamo solo vedendo la struttura tipica di un programma:
Un programma in Turbo Pascal comincia sempre con la parola riservata “program” seguita dal nome del programma, e ogni riga (tranne alcune eccezioni) finisce sempre con un punto e virgola. Vediamo un esempio:
program nome_del_programma;
{Questo è un commento}
{in questa sezione si dichiarano le etichette (label), le costanti (const), i tipi definiti dall’utente (type), le variabili (var), le procedure e le funzioni. Tutti gli oggetti che saranno usati nel programma, devono essere dichiarati prima dell’uso}
Var {dichiarazione variabili}
X,y : integer;
str : string[30];
pg: real;
procedure Cls; {dichiarazione di procedura}
{dichiarazioni, come per il programma principale}
begin {inizio procedura}
clrscr; {istruzioni}
end; {fine procedura}
function Cls (param_1:tipo1,var param_2:tipo2,..param_n:tipon):tipo_restituito ; {dichiarazione di funzione}
{dichiarazioni, come per il programma principale}
begin {inizio funzione}
Cls := valore; {istruzioni della funzione}
end; {fine della funzione}
begin {inizio del programma
istruzioni del programma; {codice}
end. {fine del programma}Visto così sembra complicato, ma in effetti non le è. Vediamo un esempio reale e poi scriviamo lo stesso programma in MSX Basic.
Program potenza;
var x,y:integer;
begin
clrscr;
writeln('Immetti il numero da elevare al quadrato');
readln(x);
y:=x*x;
writeln('il quadrato di ',x,' e'' ',y);
end.La prima riga è l’intestazione del programma ed è obbligatoria. Le variabili x e y sono di tipo integer e, sono dichiarate prima del loro utilizzo. Il programma inizia sempre con la parola chiave begin e termina con la parola chiave end. seguita dal punto. Le istruzioni comprese tra begin e end formano il corpo del programma (per chi conosce il C, begin ed end hanno la stessa funzione delle parentesi { } graffe ). Gruppi di istruzioni coerenti tra loro vanno rinchiuse tra begin e end; in questo caso, però, end è seguito dal punto e virgola(;), perchè il punto (.) indica la fine del programma. Nella definizione di subroutines, procedure e funzioni definite dall’utente, si segue esattamente lo stesso schema, l’unica differenza è che la definizione di una subroutine termina sempre con end e il punto e virgola. Ma vediamo ora lo stesso programma scritto in Basic MSX:
10 CLS 20 PRINT “Immetti il numero da elevare al quadrato” 25 INPUT X 30 Y=X*X 50 PRINT “il quadrato di X è ”; Y 60 END
L’equivalente in basic è certamente più compatto, ma il Turbo Pascal, per esempio nella definizione dei sottoprogrammi offre una versatilità maggiore, una procedure, o una function infatti, hanno la stessa struttura di un programma, quindi possono avere accesso a dati propri, definire tipi propri, definire al proprio interno altre procedure e funzioni, restituire valori al programma principale. Riscriviamo lo stesso programma utilizzando una funzione. In questo caso implementiamo l’operazione di elevamento al quadrato che viene realizzata da una funzione, alla quale passiamo come parametro il numero da elevare al quadrato e che restituisce il valore della potenza. Vediamo un esempio:
Program potenza;
var x,y:integer;
{qui definiamo la funzione}
function quadrato(numero : integer): integer;
begin
quadrato:= numero * numero;
end;
{da qui inizia il programma principale}
begin
clrscr;
writeln('Immetti il numero da elevare al quadrato');
readln(x);
y:=quadrato (x);
writeln('il quadrato di ',x,' e'' ',y);
{oppure si può inserire direttamente la chiamata alla funzione in un’espressione}
writeln('il quadrato di ',x,' e'' ',quadrato(x));
end.Lo stesso programma in basic sarebbe il seguente
10 CLS 20 DEF FN QUADRATO (X)=X^2 30 INPUT “Immetti il numero da elevare al quadrato”, X 40 Y=FN QUADRATO(X) 50 PRINT “il quadrato di X è ”; Y 55 REM OPPURE 60 PRINT “il quadrato di X è ”; FN QUADRATO(X) 70 END
Come si vede, in Turbo Pascal la definizione di una funzione segue lo stesso schema della definizione del programma
Function nome_della_funzione (parametri da passare alla funzione): tipo restituito
Begin
Istruzioni della funzione
End;
In questo caso la definizione della funzione è la seguente:
function quadrato(numero : integer): integer; begin quadrato:= numero * numero; end;
Naturalmente possiamo migliorare la funzione in modo che prenda in input due numeri , base ed esponente, e che restituisca il valore di base elevato esponente. Per esempio
function potenza(base real, esponente:real): real; var i: integr; r: real; begin r:=1; for i := 1 to abs(trunc(esponente)) do r := r * base; potenza:=r; end;
dunque all’interno di un programma possiamo usare per esempio l’istruzione
x:=3; y:=4; k:= potenza (x,y);
e utilizzare il valore di K (ovvero 3 elevato 4) dove K avrà valore 81.
La funzione assegna alla variabile base il valore del primo parametro (x) e alla variabile esponenente il valore del secondo parametro (Y). Dopo i calcoli assegna alla funzione potenza il valore calcolato e lo restituisce all’espressione chiamante (in questo caso a k).
Naturalmente, la funzione può essere migliorata, per esempio mancano i controlli per i casi particolari di esponente = 0 o esponente negativo.
In ogni caso, torneremo sulle funzioni e sulle procedure in un capitolo dedicato. Intendevo solo presentare la struttura di un programma in Turbo Pascal e mostrarne le potenzialità. Naturalmente c’è molto di più!


0 commenti