Program Pascal
Program Pascal
Introducere în Pascal
Despre Pascal
Limbajul de programare Pascal a fost creat de Niklaus Wirth în 1970. A fost numit după
Blaise Pascal, un matematician faimos francez. A fost creat ca un limbaj pentru a învăț a programarea
ș i să fie fiabil ș i eficient. Pascal a devenit între timp mai mult decât o limbă academică
ș i este acum folosit comercial.
Întotdeauna începem un program tastând numele său. Tastează programul ș i numele programului următor
îi. Vom numi primul nostru program "Salut" deoarece va imprima cuvintele "Salut lume"
pe ecran.
program Salut;
Următorul pas va fi să scriem începutul ș i sfârș itul. Vom scrie corpul principal al programului între
aceste 2 cuvinte cheie. Nu uita să pui punctul după sfârș it.
program Salut;
începe
sfârș it.
program Salut;
începe
Scrie('Salut lume');
final.
Veț i observa că "Hello world" este între ghilimele simple. Acest lucru se datorează faptului că este ceea ce se numeș te un
ș ir. Toate ș irurile trebuie să fie aș a. Punctul ș i virgula de la sfârș itul liniei este un separator de instrucț iuni.
Trebuie să-ț i aminteș ti întotdeauna să-l pui la sfârș itul liniei.
Comanda Readln va fi utilizată acum pentru a aș tepta ca utilizatorul să apese Enter înainte de a termina
program.
program Salut;
începe
Scrie('Salut lume');
Citeș te linia;
sfârș it.
Completare
Primul nostru program este acum gata să fie compilat. Când compilezi un program, compilatorul citeș te
codul tău sursă ș i îl transformă într-un fiș ier executabil. Dacă foloseș ti un IDE, atunci apăsând
CTRL+F9 este folosit de obicei pentru a compila ș i rula programul. Dacă compilezi din
linie de comandă cu Free Pascal apoi introduceț i următoarele:
fpc hello.pas
Dacă primiț i erori când îl compilaț i, trebuie să repassaț i această lecț ie pentru a descoperi.
unde le-ai făcut. Utilizatorii IDE vor constata că programele lor se compilează ș i se execută în acelaș i timp.
Utilizatorii liniei de comandă trebuie să tasteze numele programului în promptul de comandă pentru a-l rula.
Ar trebui să vezi cuvintele "Salut lume" când îț i rulezi programul, iar apăsarea tastei enter va ieș i.
programul. Felicitări! Tocmai ai creat primul tău program Pascal.
program Salut;
începe
Scrie('Bună');
Scrie('lume');
Citeș te.
sfârș it.
Dacă vrei să sari o linie, atunci foloseș te pur ș i simplu Writeln singur, fără paranteze.
Folosind comenzi din unităț i
Comenzile încorporate în compilatorul tău Pascal sunt foarte de bază ș i va trebui să avem câteva
mai mult. Unităț ile pot fi incluse într-un program pentru a-ț i oferi acces la mai multe comenzi. Unitatea crt este
unul dintre cele mai utile. Comanda ClrScr din unitatea crt ș terge ecranul. Iată cum poț i
foloseș te-l:
program Salut;
utilizări
crt;
începe
ClrScr;
Scrie('Salut lume');
Citire;
sfârș it.
Comentarii
Comentariile sunt lucruri folosite pentru a explica ce fac părț ile unui program. Comentariile sunt ignorate.
de către compilator ș i sunt doar pentru persoanele care folosesc codul sursă. Comentariile trebuie să fie
pune între acolade. Ar trebui să ai întotdeauna un comentariu în partea de sus a programului tău pentru
spune ce face, precum ș i comentarii pentru orice cod care este greu de înț eles. Iată un
exemplu de cum să comentăm programul pe care tocmai l-am realizat:
program Salut;
utilizări
crt;
începe
ClrScr;{Sterge ecranul}
Scrie('Salut lume');{Afiș ează "Salut lume"}
Citeste; {Aș teaptă ca utilizatorul să apese enter}
sfârș it.
Indentare
Veț i observa că am pus 3 spaț ii în faț a unor comenzi. Acest lucru se numeș te
indentarea ș i este folosită pentru a face un program mai uș or de citit. Mulț i începători nu înț eleg
motivaț ia pentru indentare ș i nu o folosi, dar când începem să facem lucruri mai lungi, mai complexe
programe, vei înț elege.
Culori
Pentru a schimba culoarea textului tipărit pe ecran, folosim comanda TextColor.
program Culori;
utilizări
crt;
începe
CuloareText(Rouge);
Writeln('Bună');
CuloareText(Alb);
Scrie('lume');
sfârș it.
program Culori;
utilizări
crt;
a începe
TextBackground(Roș u);
Scrie('Salut');
TextColor(Alb);
ClrScr;
sfârș it.
Coordonatele ecranului
Puteț i plasa cursorul oriunde pe ecran folosind comanda GoToXY. În DOS, ecranul
are 80 de caractere lăț ime ș i 25 de caractere înălț ime. Înălț imea ș i lăț imea variază pe alte platforme.
S-ar putea să vă amintiț i graficele din matematică care au un ax X ș i un ax Y. Coordonaț iile de pe ecran funcț ionează în
o modalitate similară. Iată un exemplu de cum să muț i cursorul la a 10-a coloană în a 5-a linie.
program Coordonate;
folosiri
crt;
începe
Du-te la XY(10,5);
Scrie('Salut');
sfârș it.
Windows
Windows vă permit să definiț i o parte a ecranului în care ieș irea dumneavoastră va fi restricț ionată. Dacă creaț i un
fereastra ș i curăț ă ecranul, va curăț a doar ceea ce este în fereastră. ComandaTheWindow are
4 parametrii care sunt coordonatele din colț ul din stânga sus ș i coordonatele din colț ul din dreapta jos.
program Coordonate;
utilizări
crt;
începe
Fereastră(1,1,10,5);
TextFundal(Albastru);
ClrScr;
sfârș it.
Variabilele pot stoca valori care sunt fie numere, fie ș iruri de caractere sau valori boolean. Ș tim deja ce
numerele sunt. Ș irurile sunt alcătuite din litere. Variabilele boolean pot avea una dintre cele două valori, fie
Adevărat sau Fals.
Folosind variabile
Trebuie să declari întotdeauna o variabilă înainte de a o folosi. Folosim declaraț ia var pentru a face acest lucru.
trebuie să aleagă ș i ce tip de variabilă este. Iată un tabel cu diferitele tipuri de variabile:
Byte 0 la 255
Cuvânt 0 la 65535
ShortInt -128 la 127
Între -32768 ș i 32767
LongInt -4228250000 până la 4228249000
Real valori cu virgulă mobilă
Char 1 caracter
Ș ir de până la 255 de caractere
Boolean adevărat sau fals
Iată un exemplu de cum să declarăm o variabilă întreagă numită i:
program Variabile;
var
i: Întreg;
începe
sfârș it.
program Variabile;
var
i: Întreg;
începe
i := 5;
sfârș it.
Puteț i crea 2 sau mai multe variabile de acelaș i tip dacă le separaț i numele cu virgule.
De asemenea, poț i crea variabile de un tip diferit fără a fi nevoie de o altă declaraț ie var.
program Variabile;
var
i, j: Întreg;
Ș ir
începe
sfârș it.
Când aloci o valoare unei variabile de tip ș ir, trebuie să o pui între ghilimele simple. Boolean
variabilele pot fi atribuite doar valorilor Adevărat ș i Fals.
program Variabile;
var
i: Întreg;
Ș ir
Boolean;
începe
i := -3;
Salut
b := Adevărat;
sfârș it.
Calculaț ii cu variabile
Variabilele pot fi folosite în calcule. De exemplu, ai putea atribui o valoare unei variabile ș i
apoi adaugă numărul 1 la el. Iată un tabel cu operatorii care pot fi utilizaț i:
+ Adaugă
- Scade
* Înmulț ire
/ Împărț ire în virgulă mobilă
div Împăr ț ire între întregi
program Variabile;
var
Num1, Num2, Răspuns: Întreg
începe
Ans := 1 + 1;
Num1 := 5;
Ans := Num1 + 3;
Num2 := 2;
Ans := Num1 - Num2;
Ans := Ans * Num1;
sfârș it.
Ș irurile conț in caractere. Caracterele includ literele alfabetului, precum ș i caractere speciale.
caractere ș i chiar numere. Este important să înț elegem că numerele întregi ș i ș irurile
Numerele sunt lucruri diferite. Poț i adăuga ș iruri de caractere împreună. Tot ce se întâmplă este că se unesc.
2 ș iruri. Dacă adaugi ș irurile '1' ș i '1' vei obț ine '11' ș i nu 2.
program Variabile;
var
Ș ir
începe
s := '1' + '1';
sfârș it.
Puteț i citi valori de la tastatură în variabile folosind Readln ș i ReadKey. ReadKey este
din unitatea crt ș i citeș te doar 1 caracter. Vei observa că ReadKey funcț ionează diferit faț ă de
Citeș te
program Variabile;
foloseș te crt;
var
Întreg
s: Ș ir;
c: Caracter;
începe
Citeste(i);
CitesteLn(s);
c := CitesteTasta;
sfârș it.
Afiș area variabilelor pe ecran este la fel de simplă. Dacă vrei să afiș ezi variabile ș i text cu
acelaș iWritelnatunci separaț i-le cu virgulă.
program Variabile;
var
i: Întreg;
Ș ir;
începe
i := 24;
Salut
Scrie(i);
Scrie(s, ' lume');
sfârș it.
Constante
Constantele sunt ca variabilele, cu exceptia faptului ca valorile lor nu se pot schimba. Atribui o valoare unei
constant atunci când îl creezi. const este folosit în loc de var când se declară o constantă. Constantale sunt
folosit pentru valori care nu se schimbă, cum ar fi valoarea lui pi.
program Variabile;
const
pi: Real = 3.14;
var
c, d: Real;
începe
d := 5;
c := pi * d;
Puteț i accesa un caracter specific într-un ș ir dacă introduceț i numărul poziț iei acestuia.
caracter în paranteze pătrate în spatele unui ș ir.
program Ș iruri;
var
Ș ir
c: Char;
începe
Salut
c := s[1];{c = 'H'}
sfârș it.
program Ș iruri;
var
s: Ș ir;
l: Întreg;
începe
Salut
l := Lungimea(s);{l = 5}
sfârș it.
Pentru a găsi poziț ia unui ș ir în cadrul unui alt ș ir, foloseș te comanda thePos.
Parametrii:
Ș ir de căutat
2: Ș ir de căutare
program Ș iruri;
var
s: Ș ir;
p: Întreg;
începe
Salut lume
p := Poz('lume',s);
sfârș it.
program Ș iruri;
variabilă
Ș ir
începe
Bună
Ș terge(s,1,1);{s = 'ello'}
sfârș it.
Comanda Copy este asemănătoare cu parantezele pătrate, dar poate accesa mai mult decât un singur caracter.
Parametrii:
1: String de copiat caractere din
2: Poziț ia de copiat din
3: Cantitatea de caractere de copiat
program Ș iruri;
var
s
începe
Bună
t := Copie(s,1,3);{t = 'Hel'}
sfârș it.
program Ș iruri;
var
s: Ș ir;
începe
Hlo
Inserează('el',s,2);
sfârș it.
Comanda TheParamStr vă va oferi parametrii din linia de comandă care au fost transmiș i la un
program.ParamCount îț i va spune câte parametrii au fost transmiș i programului.
Parametrul 0 este întotdeauna numele programului, iar de la 1 în sus sunt parametrii care au fost
tastat de utilizator.
program Ș iruri;
var
s: Ș ir;
i: Întreg;
începe
s := ParamStr(0);
i := NumărulParametrelor;
sfârș it.
Conversii
Comanda Str converteș te un întreg într-un ș ir.
program Convert;
var
s: Ș ir;
i: Întreg;
începe
i := 123;
Str(i,s);
sfârș it.
program Convert;
var
Ș ir
i: Întreg;
e: Întreg;
începe
s := '123';
Val(i,e);
sfârș it.
program Convert;
var
Real
începe
r := Int(3.14);
sfârș it.
program Convert;
var
Real
începe
r := Frac(3.14);
sfârș it.
var
i: Întreg;
începe
i := Rotunjire(3.14);
sfârș it.
program Convert;
var
i: Întreg;
începe
i := Trunc(3.14);
sfârș it.
Computerele folosesc numerele 0 până la 255 (1 byte) pentru a reprezenta caracterele intern ș i acestea sunt
numite caractere ASCII. Comanda TheOrd va converti un caracter în număr, iar theChr
comanda va transforma un număr într-un caracter. Folosind un # în faț a unui număr, de asemenea, va face conversia
la un caracter.
program Convert;
var
Octet;
c: Char;
începe
c := 'a';
b := Ord(c);
c := Chr(b);
c := #123;
sfârș it.
program Convert;
var
c: Char;
începe
c := 'a';
c := UpCase(c);
sfârș it.
Nu există o comandă pentru litere mici, dar poț i face acest lucru adăugând 32 la valoarea ordinală a unui
litera mare ș i apoi schimbând-o înapoi într-un caracter.
Extras
ComandaAleatorie îț i va oferi un număr aleatoriu de la 0 la numărul pe care i-l dai - 1.
Comanda aleatoare generează aceleaș i numere aleatoare de fiecare dată când rulezi un program, aș a că
Comanda Randomize este folosită pentru a le face mai aleatorii prin utilizarea ceasului sistemului.
program Rănd;
var
i: Întreg;
începe
Razaț i;
i := Random(101);
Sfârș it.
5. Învăț aț i programarea Pascal
Decizii
Dacă atunci altfel
Instrucț iunea if permite unui program să ia o decizie bazată pe o condiț ie. Următoarea
exemplul cere utilizatorului să introducă un număr ș i îț i spune dacă numărul este mai mare de 5:
program Decizii;
var
i: Intreg;
începe
Scrieț i un număr
Citeș te(i);
dacă i > 5 atunci
Scrie('Mai mare decât 5');
final.
Iată un tabel cu operatorii care pot fi folosiț i în condiț ii:
Exemplul de mai sus îț i spune doar dacă numărul este mai mare de 5. Dacă vrei să-ț i spună că este
nu este mai mare decât 5 atunci folosim else. Când foloseș ti else, nu trebuie să pui un punct ș i virgulă la
sfârș itul comenzii înainte de aceasta.
program Decizii;
var
i: Întreg;
începe
Scrieț i un număr
Citeș te(i);
dacă i > 5 atunci
Scrie('Mai mare decât 5')
altele
Scrie('Nu este mai mare decât 5');
sfârș it.
Dacă condiț ia este adevărată, atunci se alege partea 'atunci', dar dacă este falsă, atunci se alege partea 'altfel'.
Acest lucru se datorează faptului că condiț iile cum ar fi i > 5 sunt o ecuaț ie booleană. Poț i chiar să atribui rezultatul.
al unei ecuaț ii boolean la o variabilă booleană.
program Decizii;
var
i: Integer;
Boolean;
începe
Scrieț i ('Introduceț i un număr');
Citeș te(i);
b := i > 5;
sfârș it.
Dacă vrei să foloseș ti mai mult de o condiț ie, atunci trebuie să pui fiecare condiț ie între paranteze. Pentru a combina
condiț iile pe care le poț i folosi fieANDfieOR. Dacă foloseș tiANDatunci ambele condiț ii trebuie să fie adevărate
dar dacă foloseș ti OR, atunci doar 1 sau ambele condiț ii trebuie să fie adevărate.
program Decizii;
var
Întreg
începe
Scrieț i un număr
Citeș te(i);
dacă (i > 1) ș i (i < 100) atunci
Scrie('Numărul este între 1 ș i 100');
sfârș it.
Dacă vrei să pui 2 sau mai multe comenzi pentru o declaraț ie if atât pentru partea then, cât ș i pentru partea else
trebuie să foloseș ti începere ș i sfârș it; pentru a le grupa împreună. Vei observa că acest sfârș it are un punct ș i virgulă
după ea în loc de un punct.
program Decizii;
var
i: Întreagă;
începe
Scrieț i un număr
Citeș te(i);
dacă i > 0 atunci
începe
Scrie('Ai introdus ',i);
Scrie('Este un număr pozitiv');
sfârș it;
sfârș it.
Sarcină
De asemenea, poț i folosi instrucț iuni if în interiorul altor instrucț iuni if.
Caz
Comanda case este asemănătoare cu o declaraț ie if, dar poț i avea multe condiț ii cu acț iuni pentru
fiecare.
program Decizii;
utilizări
crt;
var
Caracter
începe
Scrieț i('Care dintre acestea vă place?');
Scrie('a - Măr:');
Scrie('b - Banane:');
Scrie('c - Morcov:');
Alegere := Citeș teTasta;
caz Alegere de
Scrie('Îț i plac merele');
Scrie('Îț i plac bananele');
Scrie('Îț i plac morcovii');
altfel
Ai făcut o alegere invalidă
sfârș it;
sfârș it.
Tutorial de programare Pascal Lecț ia 6 - Bucle
Buclurile sunt folosite atunci când vrei să repeț i codul de multe ori. De exemplu, dacă ai vrea să imprimi
„Bună” pe ecran de 10 ori ai nevoie de 10 comenzi Writeln. Ai putea face acelaș i lucru
chiar prin introducerea unei comenzi Writeln în interiorul unei bucle care se repetă de 10 ori.
Există 3 tipuri de bucle care sunt: bucla for, bucla while ș i bucla repeat until.
Buclă for
Bucle for foloseș te o variabilă de contor de buclă, la care adaugă 1 de fiecare dată, pentru a itera de la un prim
număr până la ultimul număr.
program Buclă;
var
i: Întreg;
începe
pentru i := 1 până la 10 face
Scrie('Salut');
sfârș it.
Dacă vrei să ai mai mult de 1 comandă într-o buclă, atunci trebuie să le pui între abegin
ș i un final.
program Bucle;
var
i: Întreg;
începe
pentru i := 1 la 10 face
începe
Writeln('Salut');
Writeln('Aceasta este bucla ',i);
sfârș it;
sfârș it.
Buclă while
Ciclul while se repetă atâta timp cât o condiț ie este adevărată. Condiț ia este testată în partea de sus a ciclului ș i
nu în orice moment în timp ce bucla este în execuț ie, după cum sugerează numele. O buclă while nu are nevoie de o
variabila de buclă, dar dacă vrei să foloseș ti una, atunci trebuie să-i iniț ializezi valoarea înainte de a intra în
buclă.
program Bucle;
var
i: Întreg;
începe
i := 0;
în timp ce i <= 10
începe
i := i + 1;
Scrie('Bună');
sfârș it;
sfârș it.
program Bucle;
var
i: Întreg;
începe
i := 0;
repeta
i := i + 1;
Scrie('Salut');
până i = 10;
sfârș it.
Dacă doriț i să utilizaț i mai mult de o condiț ie pentru buclele while sau repeat, atunci trebuie să
pune condiț iile între paranteze.
program Bucle;
var
i: Integer;
Ș ir
începe
i := 0;
repeta
i := i + 1;
Introduceț i un număr:
Citeste(s);
până când (i = 10) sau (s = 0);
sfârș it.
Break
Comanda Break va ieș i dintr-un ciclu în orice moment. Programul următor nu va afiș a nimic
pentru că iese din buclă înainte de a ajunge acolo.
program Bucle;
var
i: Întreg;
începe
i := 0;
repeta
i := i + 1;
Pauză;
Scrie(i);
până i = 10;
sfârș it.
Comanda Continue se va întoarce la începutul unei bucle. Acest exemplu nu va imprima de asemenea
oricare, dar spre deosebire de exemplulBreak, va număra până la 10.
program Bucle;
var
i: Integer;
începe
i := 0;
repeta
i := i + 1;
Continua;
Scrie(i);
până la i = 10;
final
1 valoare 1
2 valoare 2
3 valoare 3
4 valoare 4
5 valoare 5
Arregi sunt declarate aproape în acelaș i mod ca variabilele normale, cu excepț ia cazului în care tu
trebuie să spui câte elemente vrei în array.
program Arregi;
var
a: array[1..5] de Integer;
începe
sfârș it.
Accesăm fiecare dintre elemente folosind numărul elementelor din spatele acestuia în paranteze pătrate.
program Arregi;
var
a: array[1..5] de Integer;
începe
a[1] := 12;
a[2] := 23;
a[3] := 34;
a[4] := 45;
a[5] := 56;
sfârș it.
Este mult mai uș or când foloseș ti o buclă pentru a accesa valorile dintr-un array. Iată un exemplu de
citirea a 5 valori într-un array:
program Aranjamente;
var
a: array[1..5] de Integer;
i: Întreg;
începe
pentru i := 1 la 5 face
Citeste(a[i]);
sfârș it.
Sortarea array-urilor
Uneori vei dori să sortezi valorile dintr-un array într-o anumită ordine. Pentru a face acest lucru, poț i folosi
un sortare prin bule. O sortare prin bule este doar una dintre numeroasele modalităț i de a sorta un tablou. Cu o sortare prin bule,
celele mai mari numere sunt mutate la sfârș itul tabloului.
Veț i avea nevoie de 2 bucle. Una pentru a parcurge fiecare număr ș i alta pentru a face referire la celălalt număr
care este comparat. Dacă numărul este mai mare, atunci este schimbat cu celălalt. Vei
trebuie să foloseș ti o variabilă temporară pentru a stoca valorile în timp ce le schimbi.
program Array-uri;
var
a: array[1..5] de Integer;
i, j, tmp: Întreg;
începe
a[1] := 23;
a[2] := 45;
a[3] := 12;
a[4] := 56;
a[5] := 34;
pentru i := 1 la 4 face
pentru j := i + 1 până la 5 face
dacă a[i] > a[j] atunci
începe
tmp := a[i];
a[i] := a[j];
a[j] := tmp;
sfârș it;
pentru i := 1 la 5 face
writeln(i,': ',a[i]);
final
Matrice 2D
Aranjamentele pot avea 2 dimensiuni în loc de doar una. Cu alte cuvinte, pot avea rânduri ș i
coloane în loc de doar rânduri.
123
1123
2456
3789
program Arregi;
var
a: array [1..3,1..3] de Integer;
începe
sfârș it.
Pentru a accesa valorile unui array 2D, trebuie să foloseș ti 2 numere în parantezele pătrate. Arrays 2D, de asemenea
cerinț ă 2 bucle în loc de una singură.
program Array-uri;
var
r, c: Întreg;
a: tabloul [1..3,1..3] de Integer;
începe
pentru r := 1 la 3 face
pentru c := 1 la 3 face
Citeste(a[r,c]);
sfârș it.
Puteț i obț ine matrice multidimensionale care au mai mult de 2 dimensiuni, dar acestea nu sunt folosite.
foarte des, aș a că nu trebuie să te îngrijorezi cu privire la ele.
Tipuri
Este posibil să creezi propriile tipuri de variabile folosind declaraț ia de tip. Primul tip pe care îl poț i
creaț i înregistrări. Înregistrările sunt 2 sau mai multe variabile de tipuri diferite într-una. Un exemplu de cum
aceasta ar putea fi folosită pentru un student care are un număr de student ș i un nume. Iată cum se creează
un tip:
program Tipuri;
Tip
Student
Număr: Întreg;
Ș ir
sfârș it;
începe
sfârș it.
După ce ai creat tipul, trebuie să declari o variabilă de acel tip pentru a putea să o foloseș ti.
program Tipuri;
Tip
ÎnregistrareStudent
Număr: Întreg;
Ș ir
sfârș it;
var
Student
începe
sfârș it.
Pentru a accesa părț ile Număr ș i Nume ale înregistrării, trebuie să faceț i următoarele:
program Tipuri;
Tip
Fiș ăStudent
Număr: Întreg;
String
sfârș it;
var
Student
începe
Student.Number := 12345;
John Smith
sfârș it.
Cealaltă tip este un ansamblu. Ansamblurile nu sunt foarte utile ș i orice poț i face cu un ansamblu poate fi făcut
la fel de uș or într-un alt mod. Următorul este un exemplu de un set numit Animal care include câine,
pisică ș i iepure ca datele pe care le poate stoca:
program Tipuri;
Tip
set de (câine, pisică, iepure)
var
Animale
începe
câine
sfârș it.
Nu poț i folosi Readln sau Writeln pe seturi, aș a că metoda de utilizare de mai sus nu este foarte utilă. Poț i
creează un interval de valori ca un set, cum ar fi 'a' până la 'z'. Acest tip de set poate fi folosit pentru a verifica dacă o valoare este
în acel interval.
program Tipuri;
foloseș te
crt;
Tip
'a'..'z';
var
Scrisoare: set de Alpha;
c: Char;
începe
c := CitesteTasta;
dacă c în [Literă] atunci
Aț i introdus o literă
sfârș it.
program Proceduri;
procedură Salut;
începe
Scrie('Salut');
sfârș it;
începe
sfârș it.
Pentru a folosi o procedură, trebuie să o apelăm prin utilizarea numelui său în corpul principal.
program Proceduri;
procedură Bună;
începe
Scrie('Bună');
sfârș it;
începe
Bună;
sfârș it.
Procedurile trebuie să fie întotdeauna deasupra locului din care sunt apelate. Iată un exemplu de procedură
care apelează o altă procedură.
program Proceduri;
procedură Salut;
începe
Scrie('Bună');
sfârș it;
procedura HelloCall;
începe
Bună;
final;
începe
SalutApel;
sfârș it.
Procedurile pot avea parametrii la fel ca celelalte comenzi pe care le-am folosit. Fiecare
parametrul este atribuit un nume ș i un tip ș i este folosit la fel ca orice altă variabilă. Dacă vrei să
foloseș te mai mult de un parametru, atunci acestea trebuie să fie separate prin punct ș i virgulă.
program Proceduri;
începe
Print('Bună',3);
sfârș it.
program Proceduri;
începe
Print('Bună');
sfârș it.
Funcț ii
Funcț iile sunt ca procedurile, cu excepț ia faptului că returnează o valoare. Cuvântul cheie funcț ie este folosit în loc de
procedura atunci când declaraț i o funcț ie. Pentru a specifica ce tip de date trebuie să fie valoarea de returnare, trebuie să
foloseș te două puncte ș i numele tipului după numele funcț iei.
program Funcț ii;
începe
sfârș it.
Atribuirea valorii unei funcț ii unei variabile face ca variabila să fie egală cu valoarea de returnare. Dacă tu
foloseș te o funcț ie în ceva de genul Writeln va imprima valoarea de returnare. Pentru a seta valoarea de returnare doar
fă ca numele funcț iei să fie egal cu valoarea pe care vrei să o returnezi.
var
Răspuns: Întreg;
începe
Răspuns := Adaugă(1,2);
Scrie(Add(1,2));
sfârș it.
Puteț i ieș i dintr-o procedură sau funcț ie în orice moment folosind comanda Exit.
program Proceduri;
procedură GetName;
var
Ș ir
începe
Scrie: 'Care este numele tău?';
Citeste(Name);
dacă Numele = '' atunci
Iesi;
Scrie('Numele tău este ', Nume);
sfârș it;
începe
GetName
sfârș it.
var
f: Text;
începe
final.
var
f: Text;
începe
Alocă(f, 'MyFile.txt');
sfârș it.
Pentru a crea un fiș ier nou gol, folosim comanda Rewrite. Aceasta va suprascrie orice fiș iere existente.
cu acelaș i nume.
var
f: Text;
începe
Atribuie(f, 'MyFile.txt');
Rescrie(f);
sfârș it.
Comenzile Write ș i Writeln funcț ionează pe fiș iere în acelaș i mod în care funcț ionează pe ecran, cu excepț ia
că trebuie să foloseș ti un parametru suplimentar pentru a-i spune să scrie în fiș ier.
variabil
f: Text;
începe
Asignează(f, 'MyFile.txt');
Rescrie(f);
Writeln(f, 'O linie de text');
sfârș it.
Dacă vrei să citeș ti dintr-un fiș ier care există deja, atunci trebuie să foloseș ti Reset în loc de Rewrite.
Foloseș te ReadLnt pentru a citi linii de text din fiș ier. Vei avea nevoie ș i de un loop while care se repetă până când ...
ajunge la sfârș itul fiș ierului.
Fiș iere program;
var
f: Text;
String;
începe
Asignează(f, 'MyFile.txt');
Reset(f);
în timp ce nu este sfârș itul fiș ierului (f) atunci
Citeș teLn(f,s);
final
Append deschide un fiș ier ș i îț i permite să adaugi mai mult text la sfârș itul fiș ierului.
var
f: Text;
Ș ir
începe
Asigna(f,'MyFile.txt');
Adaugă(f);
Scrie(f, 'Încă câteva texte');
sfârș it.
Indiferent de care dintre cele 3 tipuri de acces alegi, trebuie să închizi un fiș ier atunci când eș ti
am terminat de utilizat. Dacă nu îl închizi, atunci o parte din textul care a fost scris în el s-ar putea pierde.
program Fisiere;
var
f: Text;
s: String;
începe
Asignează(f, 'MyFile.txt');
Adaugă(f);
Scrie(f, 'Câteva texte în plus');
Închide(f);
sfârș it.
Puteț i schimba numele unui fiș ier cu comanda Rename ș i puteț i ș terge un fiș ier cu comanda Erase.
comandă.
var
f: Text;
începe
Alocă(f, 'MyFile.txt');
Renumeș te(f, 'YourFile.txt');
Ș terge(f);
Închide(f);
final
Pentru a verifica dacă un fiș ier există, trebuie mai întâi să dezactivezi verificarea erorilor folosind compilatorul {$I-}
directivă. După aceea, trebuie să resetaț i fiș ierul ș i dacă IOResult = 2, înseamnă că fiș ierul nu a fost găsit. Dacă
IOResult = 0 atunci fiș ierul a fost găsit, dar dacă este orice altă valoare, atunci programul trebuie să se oprească
cu comanda Halt, IOResult îș i pierde valoarea odată ce a fost folosit, aș a că trebuie să punem ș i asta.
într-o altă variabilă înainte de a o folosi. De asemenea, trebuie să foloseș ti {$I+} pentru a activa din nou verificarea erorilor.
var
f: Text;
Întreg
începe
Asignează(f, 'MyFile.txt');
{$I-}
Reset(f);
{$I+}
IOR := RezultatulIO;
dacă IOR = 2 atunci
Scrie('Fiș ierul nu a fost găsit');
altfel
dacă IOR <> 0 atunci
Opreș te-te;
Închide(f);
sfârș it.
program FisiereDate;
var
f: fiș ier de Byte;
începe
sfârș it.
program FisiereDate;
var
f: fiș ier de Byte;
începe
Asignează(f,'MyFile.dat');
sfârș it.
Puteț i utiliza Rewriteto pentru a crea un fiș ier nou sau pentru a suprascrie unul existent. Diferenț a dintre
Fiș ierele text ș i fiș ierele de date atunci când utilizaț i Rewrite pot fi citite ș i scrise.
var
f: fiș ier de Byte;
începe
SAssign(f,'MyFile.dat');
Rescrie(f);
sfârș it.
var
f: fiș ier de Byte;
începe
Alocă(f,'MyFile.dat');
Reset(f);
sfârș it.
Când scrii într-un fiș ier folosind comanda Write, trebuie mai întâi să pui valoarea de scris în
fiș ierul într-o variabilă. Înainte de a putea scrie sau citi dintr-un fiș ier de date, trebuie să foloseș ti Seek
comandă pentru a găsi locul potrivit pentru a începe să scrii. Trebuie să-ț i aminteș ti, de asemenea, că fiș ierele de date încep
de la poziț ia 0 ș i nu 1.
program DataFiles;
var
f: fiș ier de Byte;
Octet;
începe
Atribuie(f, 'MyFile.dat');
Reset(f);
b := 1;
Caută(f,0);
Scrie(f,b);
sfârș it.
Comanda Read este folosită pentru a citi dintr-un fiș ier de date.
program FisiereDate;
var
f: fiș ier de Byte;
Octet;
începe
Asignează(f, 'MyFile.dat');
Resetare(f);
Caută(f,0);
Citeș te(f,b);
sfârș it.
Trebuie să închizi un fiș ier de date când ai terminat cu el, la fel ca ș i cu fiș ierele de text.
var
f: fiș ier de Byte;
b: Byte;
începe
Asignează(f,'MyFile.dat');
Reset(f);
Cauta(f,0);
Citeș te(f,b);
Închide(f);
sfârș it.
var
f: fiș ier de Byte;
Octet;
începe
Atribuie(f,'MyFile.dat');
Reset(f);
în timp ce FilePos(f) <> FileSize(f) fă
începe
Citeș te(f,b);
Scrie(b);
sfârș it;
Închide(f);
sfârș it.
începe
Asignează(f,'MyFile.dat');
Resetează(f);
Caută(f,3);
Trunchiaza(f);
Închide(f);
sfârș it.
Unul dintre cele mai utile lucruri despre fiș ierele de date este că le poț i folosi pentru a stoca înregistrări.
tip
ÎnregistrareStudent
Număr
String
sfârș it;
var
Student
f: fiș ier de StudentRecord;
începe
Alocă(f, 'MyFile.dat');
Rescrie(f);
12345
John Smith
Scrie(f,Student);
Închide(f);
sfârș it.
Pentru a crea un modul, trebuie să creezi un nou fiș ier Pascal pe care îl vom numi MyUnit.pas. Prima linie
fiș ierul ar trebui să înceapă cu cuvântul cheie unit urmat de numele unităț ii. Numele unităț ii ș i
numele fiș ierului unităț ii trebuie să fie exact acelaș i.
unit MyUnit;
Următoarea linie este cuvântul cheie interface. După aceasta, trebuie să pui numele procedurilor care
va fi disponibil pentru programul care va folosi unitatea dumneavoastră. Pentru acest exemplu, vom fi
creând o funcț ie numită NewReadln care este asemănătoare cu Readln, dar îț i permite să limitezi cantitatea de
caractere care pot fi introduse.
unit MyUnit;
interfaț ă
Linia următoare este implementarea. Aici vei tasta codul complet pentru proceduri ș i
funcț ii. De asemenea, va trebui să folosim unitatea crt pentru a faceNewReadln. Încheiem unitatea exact ca un
program normal cu cuvântul cheie end.
unit MyUnit;
interfaț ă
implementare
sfârș it.
Odată ce ai salvat unitatea, trebuie să o compilezi. Acum trebuie să facem programul care foloseș te
unitatea pe care tocmai am creat-o. De data aceasta vom scrie MyUnit în secț iunea uses ș i apoi vom folosi
Funcț ia NewReadln.
program MyProgram;
utilizări
Unitatea mea;
var
s: Ș ir;
începe
s := NewReadln(10);
sfârș it.
Când declarati un pointer tipizat, trebuie să puneț i un ^ în faț a tipului de variabilă pe care doriț i.
iată un exemplu de cum să declarăm un pointer către un întreg:
program Poinț i;
var
p: ^integer;
începe
sfârș it.
Semnul @ poate fi folosit înaintea unei variabile pentru a obț ine adresa sa de memorie. Această adresă de memorie
poate fi apoi stocat într-un pointer deoarece pointerii stochează adresele de memorie. Iată un exemplu de
cum să stochezi adresa de memorie a unui întreg într-un pointer la un întreg:
var
i: întreg;
p: ^integer;
începe
p := @i;
sfârș it.
Dacă vrei să schimbi valoarea stocată la adresa de memorie indicată de un pointer, trebuie să
mai întâi dereferenț iază variabila pointer folosind un ^ după numele pointer-ului. Iată un exemplu de cum
a schimba valoarea unui întreg de la 1 la 2 folosind un pointer:
program Pointers;
var
i: întreg;
p: ^integer;
începe
i := 1;
p := @i;
p^ := 2;
scrie(i);
sfârș it.
Poț i aloca memorie nouă unui pointer tipizat folosind comanda new.
are un parametru care este un pointer. Thenewcommand primeș te memoria care este de dimensiunea
tipul de variabilă al pointerului ș i apoi setează pointerul să indice către adresa de memorie a acestuia. Când
ai terminat de folosit pointerul, trebuie să foloseș ti comanda dispose pentru a elibera memoria.
a fost alocat pointer-ului. Iată un exemplu:
program Pointers;
var
p: ^număr întreg;
începe
nou(p);
p^ := 3;
writeln(p^);
dispoziț ie(p);
sfârș it.
Când declari un pointer netipizat, trebuie să foloseș ti tipul de variabilă numit pointer.
program Pointeri;
var
p: pointer;
începe
sfârș it.
Când aloci memorie pentru un pointer netipizat, trebuie să foloseș ti comanda getmem în loc de
Apoi noua comandă ș i trebuie să foloseș ti memorie liberă în loc de a o elimina. Obț ineț i memorie ș i memorie liberă fiecare au
un al doilea parametru care este dimensiunea în octeț i a cantităț ii de memorie care trebuie alocată
la pointer. Poț i folosi fie un număr pentru dimensiune, fie poț i folosi funcț ia sizeof pentru a obț ine
dimensiunea unui tip de variabilă specific.
program Pointers;
variabil
p: pointer;
începe
getmem(p,sizeof(integer));
freemem(p,sizeof(integer));
sfârș it.
Cozi
O coadă este ca ș i cum ai sta într-o coadă la un magazin. Prima persoană care se alătură unei cozi este prima
persoana care trebuie să fie servită. Trebuie să te alături întotdeauna la coada din spate pentru că dacă te alături la început
ceilalț i oameni vor fi supăraț i. Acesta se numeș te FIFO (Primul venit, primul servit).
Fiecare element al unei liste înlănț uite este un record care conț ine datele ș i un pointer către următorul sau precedentul
element. Iată un exemplu de cum să declarăm înregistrarea pentru o coadă ș i un pointer către o înregistrare a cozii
precum ș i variabilele necesare:
program coadă;
tip
pQueue = ^tqueue;
tQueue = înregistrare
întreg
următor: pQueue;
sfârș it;
var
cap, ultim, cur: pQueue;
începe
sfârș it.
Vom face acum 3 proceduri. Prima procedură va adăuga articole pe listă, a doua va
vizualizaț i lista ș i al treilea va elibera memoria utilizată de coadă. Înainte de a face
procedurile, să aruncăm mai întâi o privire asupra programului principal.
începe
head := nil;{Setează head la nil deoarece nu sunt itemi în coadă}
adaugă(1){Adaugă 1 în coadă folosind procedura de adăugare};
adauga(2);
adauga(3);
Vizualizaț i toate articolele din coada
distruge
sfârș it.
Procedura de adăugare va lua un întreg ca parametru ș i va adăuga acel întreg la sfârș itul.
coadă.
Procedura de vizualizare foloseș te o buclă pentru a afiș a datele de la primul element până la ultimul element al
coadă.
procedură vizualizare;
începere
cur := cap;{Setează curentul la începutul cozii}
în timp ce cur <> nil fă{Atâta timp cât există un element curent}
începe
writeln(cur^.data);{Afiș ează elementul curent}
cur := cur^.next;{Setează curentul la următorul element din coadă}
sfârș it;
sfârș it;
procedură distruge;
începe
cur := cap;{Setează curentul la începutul cozii}
while cur <> nil do{În timp ce există un element în coadă}
începe
cur := cur^.next;{Stochează elementul următor în curent}
elimină(head);{Eliberează memoria utilizată de head}
head := cur;{Setează noua cap al cozii la elementul curent}
sfârș it;
sfârș it;
Stive
Pentru a înț elege un stivă, trebuie să te gândeș ti la o stivă de farfurii. Poț i adăuga o farfurie în vârful
stiva ș i ia unul de pe vârf, dar nu poț i adăuga sau lua un platou de la baza fără
toate farfuriile căzând. Acesta se numeș te LIFO (Ultimul intrat, primul ieș it).
Când declari înregistrarea pentru un element din stivă, trebuie să foloseș ti anterior în loc de următor. Iată un
exemplu.
program stivă;
tip
pStack = ^tStack;
tStack = înregistrare
întreg
prev: pStack;
sfârș it;
var
ultimul, cur: pStack;
începe
nil
adaugă(3);
adaugă(2);
adauga(1);
vizualizare
distruge;
sfârș it.
Procedurile de vizualizare ș i distrugere sunt aproape identice cu cele ale unei cozi, aș a că nu va fi nevoie să fie
explicat.
procedură vedere;
începe
cur := ultimul;
while cur <> nil do
începe
writeln(cur^.data);
cur := cur^.anterior;
sfârș it;
sfârș it;
procedura distruge;
începe
în timp ce last <> nil fă
începe
cur := last^.prev;
elimină(ultimul);
ultimul := cur;
sfârș it;
sfârș it;