Guida al Pascal

Il Pascal è un linguaggio di programmazione molto facile da comprendere e, per certi tratti, è più semplice del BASIC. Ma ora bando alle ciance e iniziamo con la programmazione vera e propria….

Prepariamo la cassetta degli attrezzi

I compilatori che si possono uttilizzare non sono molti; eccone uno gratuito:
Freepascal disponibile sia per FINESTRE :b che per LINUX e per quasi la totalità dei processori

Una volta installato e avviato si presenterà un’ interfaccia molto comprensibile.

Compariranno vari menu, ma quelli pricipali sono tre: File, Run, Compile.

Il primo è formato da New, per crere un nuovo documento di lavoro; Load-open, per aprire lavori già salvati; Save, per salvare i nostri lavori. Spesso può risultare utile conoscere il comando Destination (nel menu Compile) per decidere se compilare il programma nella Ram oppure in un file eseguibile (nome_programma.exe).

Una volta compilato il programma, però, dobbiamo eseguirlo, e perciò è necessario selezionare dal menu Run il comando Run.

Funzioni e operatori di base

La prima cosa da scrivere in un programma in PASCAL è il nome che vogliamo dare alla nostra applicazione.

Procediamo in questo modo:


PROGRAM guida_al_pascal;

L’operatore PROGRAM va sempre seguito dal nome che abbiamo scelto per il nostro codice.

Nota bene: Teniamo a mente che dopo ogni riga di codice va immesso il Punto e virgola(;), altrimenti al momento della Compilazione del codice ci verrà restituito un errore. L’unica riga di programma in cui non va scritto il punto e virgola è quella contenente il comando BEGIN che analizzeremo adesso e in altri casi particolari.

I secondi comandi che andiamo ad analizzare sono BEGIN, che serve ad iniziare l’algoritmo o procedimento risolutivo, e END, che termina l’algoritmo.(notare che END va sempre seguito dal punto e non dal punto e virgola).

Mettiamoci al lavoro.

PROGRAM guida_al_pascal; {riga di intestazione}
BEGIN {inizio programma}
procedimento risolutivo;
END. {fine programma}

Per ora tutto dovrebbe funzionare però mancano ancora degli operatori indispensabili al funzionamento del programmma che affronteremo nella prossima sezione.

NB: In questo stralcio di programma abbiamo introdotto i commenti al codice che sono racchiusi dalle parentesi graffe (non è l’unico modo di commentare il programma ma è sicuramente il più efficace… per chi non lo sapesse in Windows le graffe si aprono con alt+123 e si chiudono con alt+125)

Riassunto
In sostanza il codice scritto in Pascal può essere suddiviso in tre parti distinte:
Il BLOCCO D’INTESTAZIONE che contiene il nome del programma
Il BLOCCO DELLE DICHIARAZIONI in cui si dichiarano le variabili e la loro tipologia con il comando VAR di cui ci occuperemo ora e le costanti con il comando CONST.
La SEZIONE ESECUTIVA in cui si scrive l’algoritmo

Risolvere un problema

Per cominciare a risolvere dei semplici problemi abbiamo bisogno di introdurre un nuovo comando: VAR. Questo comando serve per definire quali sono le variabili di programma che possono essere di tre tipi:
INTEGER (numeri interi positivi e negativi)
REAL (numeri reali positivi e negativi)
BYTE (numeri interi)
WORD (numeri interi)
STRING[x] (stringa di testo; la x indica il numero di caratteri massimi che deve essere scelto da noi)

INTEGER é una categoria di numeri che vanno da -32767 a +32768. Ciò significa che se se usiamo la classe INTEGER per sommare 1 o più a 32768 (32768+1) il risultato non sarà 32769 ma bensì -32767; questo significa che ogni numero non compreso tra i suddetti estremi produce una situazione che in termini tecnici ciene chiamata overflow (traboccamento). 32768 è una costante indicata con MAXINT (massimo degli interi).

Per il momento ci limiteremo ad adoperare la classe INTEGER, le altre le tratteremo più avanti.

Supponiamo ora di voler calcolare il perimetro e l’area di un quadrato: per prima cosa dobbiamo individuare le variabili che ci serviranno per risolvere il problema. Sicuramente la prima è il lato (di cui dovremo inserire il valore da tastiera il valore da tastiera), poi ci sono il perimetro e l’area. Per cui:

PROGRAM perminetro_e_area_quadrato;
USES CRT;
VAR lato, perimetro, area: INTEGER;
BEGIN
CLRSCR;
READLN(lato);
perimetro:=lato*4;
area:=lato*lato;
WRITELN(perimetro);
WRITELN(area);
READLN
END.


NB: il suffisso +LN ordina al cursore di prepararsi a capo (WRITE–>WRITELN…); e il comando CLRSCR pulisce lo schermo ad ogni esecuzione

Per chiarire alcuni punti del programma è necessario chiarire nuovi comandi e operatori:
USES + metodo: CRT in questo caso—>TASTIERA,MONITOR;COLORI;
READLN + (nome variabile): inizializza la variabile da immettere da tastiera;
:= simile all’operatore aritmetico “=”;
WRITELN: comando che stampa a schermo ciò che è racchiuso fra parentesi; se volessimo inserirci del testo dovremmo racchiuderlo tra apici singoli;
READLN: serve per dare il tempo all’utente di leggere i risultati restituiti che altrimenti rimarrebbero sullo schermo una frazione di secondo. NB: se non si mette il punto e virgola non viene restituito errore;

Abbiamo anche introdotto uno degli operatori interi (*—>moltiplicazione);

Gli operatori della classe INTEGER sono:

  • + {somma}
  • – {differenza}
  • *  {prodotto}
  • DIV {quoziente della divisione euclidea fra due interi}
  • MOD {resto della divisione euclidea fra due interi}

NB: se in espressione sono presenti più di un operatore vengono utilizzati secondo le priorità

Esistono anche degli operatori che confrontano due numeri e restituiscono TRUE (vero) o FALSE (falso). Essi sono:

= Uguale

<> Diverso

< minore

> Maggiore

<= Minore uguale

>= Maggiore uguale

Se volessimo colorare i risultati che compaiono nel programma dovremmo ricorrere a due nuovi comandi:

TEXTCOLOR + (numero colore da 0 a 15);
TEXTBACKGRUOND + (numero colore da 0 a 7);

Essi sono da inserire prima di agni comando WRITELN a cui vogliamo colorare i risultati. ES:

......
TEXTCOLOR(0); {oppure textbackground o entrambi}
WRITELN('ciao');
TEXTBACKGROUND(4); {oppure textcolor o entrambi}
WRITELN ('riciao');
READLN
END.


Esempio pratico di programma con operatori interi

PROGRAM operatori_interi; {blocco d'intestazione}
USES CRT; {tastiera+monitor+colori}
VAR n1,n2,somma,differenza,prodotto,quoziente,resto:INTEGER; {dichiarazione delle variabili}
BEGIN {inizio programma}
CLRSCR; {clear screen}
WRITELN ('inserire il valore dei numeri');
READLN (n1,n2); {inizializiamo le variabili}
somma:=n1+n2; {somma delle due variabili}
differenza:=n1-n2; {diffrenza delle due variabili}
prodotto:=n1*n2; {prodotto delle variabili}
quoziente:=n1 DIV n2; {divisione delle variabili}
resto:=n1 MOD n2; {resto della divisione}
WRITELN ('la somma dei numeri è:',somma); {stampiamo a schermo i risultati}
WRITELN ('la diferenza dei numeri è:',differenza);
WRITELN ('il prodotto dei numeri è:',prodotto);
WRITELN ('il quoziente dei numeri è:',quoziente);
TEXTCOLOR (3); {diamo un po' di colore al resto...}
WRITELN ('il resto della divisione è:',resto); {stampiamo a schermo il resto che sarà colorato}
READLN {diamo il tempo per la lettura dei risultati}
END. {fine programma}

NB: per stampare a schermo i risultati abbiamo diviso quello che c’era fra parentesi in due parti:
una stringa di testo racchiusa tra apici;
la variabile da stampare a schermo;

Le due parti devono sempre essere separate dalla virgola

Funzioni dei numeri interi 

Le funzioni dei numeri interi non sono molte e sono semplici; motivo percui daremo solo un’infarinatura generale… Are you ready?

  • ABS: restituisce il valore assoluto;
  • SQR: quadrarto;
  • PRED: numero precedente;
  • SUC: numero successivo;

Esempio di funzioni di numeri interi

PROGRAM funzioni_intere;
USES CRT;
VAR numero,valore_assoluto,quadrato,radice_quadrata,precedente,successivo:INTEGER;
BEGIN
CLRSCR;
WRITELN ('inserire un numero');
READLN (numero);
valore_assoluto:=ABS(numero);
quadrato:=SQR(numero);
precedente:=PRED(numero);
successivo:=SUC (numero);
WRITELN ('valore assoluto=',valore_assoluto);
WRITELN ('quadrato=',quadrato);
WRITELN ('radice quadrata=',radice_quadrata);
WRITELN ('precedente=',precedente);
WRITELN (successivo=',successivo);
READLN
END.

I numeri reali

Cosa sono i numeri reali?

I numeri reali sono sempilicemente quella categoria di numeri (con cifre decimali) con intervallo che va da 2.9×10^-35 a 1.5 x 10^35. Il loro funzionamento non si discosta molto dalla categoria degli interi; infatti le differenze principali sono:

  • l’operatore “/” al posto di “DIV” per la divisione
  • non esiste la funzione “MOD” (ovvio no?)
  • i numeri vengono visualizzati in notazione scientifica (o esponenziale)
  • un po’ di funzioni in più

Esempio di codice con numeri reali

Mettiamo il caso di voler calcolare la circonferenza di un cerchio, procediamo come segue:

PROGRAM circonferenza del cerchio;
USES CRT;
VAR raggio,circonferenza:REAL;
BEGIN
WRITELN ('inserire il valore del raggio=?');
READLN (raggio);
circonferenza:=2*PI*raggio;
WRITELN ('circonferenza=',circonferenza);
READLN
END.

Commentiamo il codice assieme:

Il blocco di intestazione è sempre lo stesso, quello che è cambiato è il blocco delle variabili. Infatti le variabili sono enytrambe entrambe di tipo REAL.
Notiamo come quando eseguiamo il programma la circonferenza viene visualizzata in notazione esponenziale; ora almeno che non siate dei geni vi risulterà difficile leggere il numero, per ovviare a questo problema modifichiamo il comando WRITELN come segue:

...
WRITELN ('circonfernza=',circonferenza:10:3); ...

Ecco cosa abbiamo fatto: abbiamo assegnato alla variabile circonferenza 10 celle di memoria e 3 cifre decimali.

Naturalmente il numero di celle e cifre decimali possiamo deciderle secondo i nostri gusti personali.

NB: PI è una parola riservata del pascal che indica il pi greco, è un comando molto utile poichè risparmia al programmatore la fatica di immettere un numero con una caterba di cifre decimali 🙂
Funzioni dei numeri reali

  • SQR(x)————-quadrato di x—————- SQR(-2.5)= 6.25
  • SQRT(x)————radice quadrata di x——— SQRT(3.1415)= 1.77
  • ABS(x)————-valore assoluto di x——— ABS(-4.45)= 4.45
  • TRUNC(x)———–troncamento di x ———— TRUNC(14.7983)= 14
  • ROUND(x)———–arrotondamento di x———- ROUND(14.7983)= 15
  • INT(x)————-parte intera di x———— INT(-24.678)= -24

Naturalmente ora che sapete come si scrive un codice (e il funzionamento è sempre lo stesso) non starò qui a scrivere il

codice di esempio… mi limito solo a rammentarvi che le funzioni dei numeri reali producono errore se usate per i numeri interi 🙂

Work in progress!!!

Dizionario del Pascal

  • ABS(n)–> valore assoluto di un numero
  • AND –> operatore logico “et”
  • ARRAY –> vettore o matrice
  • BEGIN –> inizio
  • BOOLEAN –> boleana
  • CASE –> caso
  • CHAR –> carattere (character)
  • CLRSCR –> pulisce lo schermo (clear screen)
  • CONST –> costante (constant)
  • COS –> funzione coseno (cosinus)
  • DIV –> divisione tra numeri interi (divide)
  • DO –> esegui
  • ELSE –> altrimenti
  • END –> fine
  • FALSE –> falso
  • TRUE –> vero
  • FILE –> archivio
  • IF –> se
  • FUNCTION –> funzione
  • INPUT –> ingresso
  • OUTPUT –> uscita
  • INTEGER –> numeri interi da -32767 a +32768
  • REAL –> numeri reali da 2.9×10^-36 a 1.5 x 10^35
  • BYTE –> numeri interi da 0 a 255
  • WORD –> numeri interi da 0 a 65535
  • MAXINT –> massimo valore intero
  • MOD –> resto di divisione tra interi
  • NOT –> operatore logico “non”
  • OR –> operatore logico “oppure inclusivo”
  • PRED –> precedente
  • SUCC –> successivo
  • VAR –> variabile
  • WRITE(“) –> scrivi
  • WRITELN(“) –> scrive e va a capo
  • READ(var) –> leggi
  • READLN(var) –> legge e va capo
  • READLN –> da il tempo di leggere i risultati
  • TRUNC –> tronca la parte decimale
  • THEN –> allora
  • TO –> a (valori crescenti)
  • DOWNTO –> a (valori decrescenti)
  • TYPE –> tipo
  • RANDOM(n) –> genera un numero a caso compreso tra 0 e il numero indicato in parentesi (max 255)
  • WHILE –> mentre
  • ORD –> ordine
  • PROGRAM –> programma
  • REPEAT –> ripeti
  • PROCEDURE –> procedura
  • PLOT –> disegna un punto
  • DRAW –> disegna un segmento
  • WITH –> con
  • DELAY(n) –> crea un ciclo di attesa lungo n (millisecondi)
  • STRING[n] –> tipo di dato formato da n caratteri alfanumerici (compresi gli spazi). Usato senza parametri non definisce la lunghezza della stringa o nel caso in cui si dichiari una lunghezza minore del dato inserito,il programma non considerera i cartteri in eccesso

Tavola dei colori

  • 0 nero
  • 1 blu
  • 2 verde
  • 3 turchese
  • 4 rosso
  • 5 viola
  •  6 marrone
  •  7 grigio
  • 8 Grigio scuro
  • 9 Blu chiaro
  • 10 Verde chiaro
  • 11 Turchese chiaro
  • 12 Rosso chiaro
  • 13 Viola chiaro
  • 14 Giallo
  • 15 Bianco

NB: qualsiasi numero sopra il 15 produce lampeggiamento; per colorare lo sfondo di tutto il programma anzichè solo la parola TEXTBACKGROUND va inserito prima di CLRSCR (clearscreen)

1Z1-141 Exam 500-254 Certification ECM Certification 840-425 Exam HP0-490 Study Guide HIO-101 Certification VCS-371 IT-Exam 270-411 PDF HP0-A113 Exam 9L0-410 A4040-332 Study Guide TT0-101 Dumps 1Z1-807 VCE EE0-425 IT-Exam HC-035-310-ENU IT-Exam HC-035-700-CHS 111-056 1Z1-523 Dumps 77-601 Exam PDF ITIL-F PDF C2020-012 Dumps 9A0-156 Exam 922-101 PDF professionals whereas live chat facility is also provided to get in time answers LOT-442 PDF 000-386 Exam PDF C_TB1300_07 Certification MB2-713 Dumps passing other exams or through experience. This is possible only if you worked before with tools and are familiar with the environment. Otherwise you will need to take it from ground zero.The Exam 1Z0-329 Study Guide I10-001 Dumps written in an uncomplicated manner allowing the candidates to grasp knowledge about their TB0-122 Exam PDF 920-160 Exam PDF ISS-001 Dumps 000-N27 HP0-A16 Exam ACSO-L2-PROC-01 IT-Exam 648-266 VCE C2040-986 IT-Exam