0% au considerat acest document util (0 voturi)
31 vizualizări38 pagini

Program Pascal

Tutorialul oferă o introducere în programarea Pascal, explicând concepte fundamentale precum sintaxa de bază, variabilele, constantele și manipularea șirurilor. Utilizatorii învață să scrie programe simple, să utilizeze comenzi de bază și să gestioneze variabilele și șirurile de caractere. De asemenea, tutorialul include exemple de cod și explicații despre compilarea și rularea programelor.

Încărcat de

ScribdTranslations
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd
0% au considerat acest document util (0 voturi)
31 vizualizări38 pagini

Program Pascal

Tutorialul oferă o introducere în programarea Pascal, explicând concepte fundamentale precum sintaxa de bază, variabilele, constantele și manipularea șirurilor. Utilizatorii învață să scrie programe simple, să utilizeze comenzi de bază și să gestioneze variabilele și șirurile de caractere. De asemenea, tutorialul include exemple de cod și explicații despre compilarea și rularea programelor.

Încărcat de

ScribdTranslations
Drepturi de autor
© © All Rights Reserved
Respectăm cu strictețe drepturile privind conținutul. Dacă suspectați că acesta este conținutul dumneavoastră, reclamați-l aici.
Formate disponibile
Descărcați ca PDF, TXT sau citiți online pe Scribd

Învăț aț i programarea Pascal - Tutorial Lecț ia 1

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.

Ce vei avea nevoie


Înainte de a începe să înveț i Pascal, vei avea nevoie de un compilator Pascal. Acest tutorial foloseș teesteGratuit
Compilator Pascal. Tu cpot găsi o listă cu alte compilatoare PascaltPascal de la TheFreeCountry
listă de compilatoare.

Primul tău program


Primul lucru de făcut este să deschizi IDE-ul tău dacă compilatorul tău vine cu unul sau să deschizi un fiș ier text
editor

Î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.

Comanda Write tipăreș te cuvinte pe ecran.

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.

Acum trebuie să-ț i salvezi programul ca hello.pas.

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.

Mai multe comenzi


Writeln este exact ca Write, cu exceptia ca muta cursorul pe linia urmatoare dupa ce a imprimat
Cuvinte. Iată un program care va afiș a "Salut" ș i apoi "lume" pe linia următoare:

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:

Acest program va curăț a ecranul, va imprima "Salut lume" ș i va aș tepta pentru


utilizator pentru a apăsa enter.

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.

Comanda backgroundText schimbă culoarea fundalului textului. Dacă doriț i să


schimbă întregul ecran într-o anumită culoare, apoi trebuie să foloseș ti ClrScr.

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.

Folosirea window(1,1,80,25) va seta fereastra înapoi la dimensiunea normală.

Învăț aț i Programarea Pascal Tutorial Lecț ia 3


-Variabile ș i constante
Ce sunt variabilele?
Variablele sunt nume date blocurilor de memorie ale computerului. Numele sunt folosite pentru a stoca
valorile din aceste blocuri de memorie.

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.

Pentru a atribui o valoare unei variabile, folosim :=

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

mod Rămăș iț a împărț irii întregilor

Următorul exemplu arată câteva calcule care pot fi efectuate:

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;

Învăț aț i Programarea Pascal Tutorial Lecț ia 4


Manipularea ș irurilor ș i conversiile
Gestionarea ș irurilor

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.

Puteț i obț ine lungimea unui ș ir folosind comanda lungimea.

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.

Comanda Delete elimină caractere dintr-un ș ir.


Parametrii:
1: Ș ir pentru ș tergerea caracterelor din
2: Poziț ia de la care să începi ș tergerea
3: Cantitatea de caractere de ș ters

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.

Insertwill va insera caractere într-un ș ir la o anumită poziț ie.


Parametrii:
1: Şir care va fi inserat în celălalt şir
Ș ir de caractere în care vor fi inserate caractere
3: Poziț ia pentru a insera caractere

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.

Valcommand converteș te un ș ir de caractere într-un număr întreg.

program Convert;

var
Ș ir
i: Întreg;
e: Întreg;

începe
s := '123';
Val(i,e);
sfârș it.

Îț i voi da numărul înainte de virgulă într-un număr real.

program Convert;

var
Real

începe
r := Int(3.14);
sfârș it.

Fracul îț i va da numărul după virgulă într-un număr real.

program Convert;

var
Real

începe
r := Frac(3.14);
sfârș it.

Roundwill va rotunji un număr real la cel mai apropiat întreg.


program Convert;

var
i: Întreg;

începe
i := Rotunjire(3.14);
sfârș it.

Trunc va oferi numărul înaintea virgulei dintr-un număr real ca un întreg.

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.

Comanda UpCase schimbă un caracter din litera mică în litera mare.

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:

> Mai mare decât


< Mai puț in de
>= Mai mare sau egal cu
Mai mic sau egal cu
= Egal cu
<> Diferit de

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.

Bucle repetate până la


Ciclul repeat untilloop este similar cu ciclul whileloop, cu excepț ia că testează condiț ia la sfârș itul
loop. De asemenea, nu trebuie să aibă un abegin ș i un endif dacă are mai mult de o comandă în interiorul său.

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

Învăț aț i programarea Pascal Tutorial Lecț ia 7


- Arregi
Matricele sunt variabile care sunt compuse din multe variabile de acelaș i tip de date, dar au doar una.
Nume. Iată o reprezentare vizuală a unui tablou cu 5 elemente:

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

Iată cum se declară un array 2D:

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.

Învaț ă programarea PascalTutorial Lecț ia 8 - Tipuri,


Înregistrări ș i Seturi

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.

Învăț aț i programarea Pascal Tutorial Lecț ia 9


- Proceduri ș i Funcț ii
Proceduri
Procedurile sunt sub-programe care pot fi apelate din partea principală a programului. Procedurile
sunt declarate în afara corpului principal al programului folosind cuvântul cheie procedură. Procedurile trebuie să
de asemenea, să primească un nume unic. Procedurile au propriul început ș i sfârș it. Iată un exemplu de
cum să faci o procedură numită Salut care afiș ează "Salut" pe ecran.

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;

procedură Print(s: Ș ir; i: Întreg);


începe
Scrie(s);
Scrie(i);
sfârș it;

începe
Print('Bună',3);
sfârș it.

Variabile globale ș i locale


Variabilele pe care le-am folosit până acum au fost globale, deoarece pot fi utilizate în orice moment.
în timpul programului. Variabilele locale pot fi folosite doar în interiorul procedurilor, dar memoria pe care o folosesc
este eliberat atunci când procedura nu este utilizată. Variabilele locale sunt declarate chiar sub
declaraț ia numelui procedurii.

program Proceduri;

procedură Print(s: String);


var
i: Integer;
începe
pentru i := 1 până la 3 face
Scrie(s);
sfârș it;

î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;

funcț ia Adaugă(i, j: Integer): Integer;


începe
sfârș it;

î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.

program Funcț ii;

var
Răspuns: Întreg;

functia Adauga(i, j: Integer): Integer;


începe
Adaugă := i + j;
sfârș it;

î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.

Învăț aț i programarea în Pascal Tutorial Lecț ie


10 -Fiș iere Text
Ar trebui să ș tii până acum că un fiș ier text este un fiș ier cu linii de text. Când vrei să accesezi un
în Pascal trebuie mai întâi să creezi o variabilă de fiș ier.

fiș iere program

var
f: Text;

începe
final.

După ce variabila a fost declarată, trebuie să îi asignezi numele fiș ierului.

fiș iere de program;

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.

programul Fiș iere;

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.

fiș iere de program;

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.

Fiș iere de program;

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ă.

fiș iere de program;

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.

fiș iere de program;

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.

Învăț aț i Programarea Pascal Tutorial Lecț ie


11 - Fiș iere de date
Fiș ierele de date sunt diferite de fiș ierele text în câteva moduri. Fiș ierele de date sunt accesibile aleatoriu, ceea ce înseamnă
nu trebuie să le citeș ti linie cu linie, ci să accesezi orice parte a fiș ierului în orice moment
timp. Iată cum declaraț i un fiș ier de date:

program FisiereDate;

var
f: fiș ier de Byte;

începe
sfârș it.

Folosim apoi Assign ca ș i cum am face cu un fiș ier text.

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.

program Fiș iereDate;

var
f: fiș ier de Byte;

începe
SAssign(f,'MyFile.dat');
Rescrie(f);
sfârș it.

Reset este la fel ca Rewrite, cu exceptia faptului că nu suprascrie fiș ierul.

program Fiș iereDate;

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.

program Fiș iereDate;

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.

ComandaFileSize poate fi folosită împreună cu comandaFilePos pentru a descoperi când ai


a ajuns la sfârș itul fiș ierului.FileSizereturns numărul real de înregistrări, ceea ce înseamnă că începe de la
1 ș i nu 0. Comanda TheFilePos va indica la ce poziț ie din fiș ier te afli.

program Fiș iereDate;

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.

Comanda Truncate va ș terge totul în fiș ier de la poziț ia curentă.

program Fiș iereDate;


variabilă
f: fiș ier de Byte;

î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.

program Fiș iereDate;

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.

Învăț aț i Programarea Pascal Tutorial Lecț ia


12 - Unităț i
Ș tim deja că unităț ile, cum ar fi unitatea crt, îț i permit să foloseș ti mai multe proceduri ș i funcț ii decât
cele integrate. Poț i crea propriile tale unităț i care au proceduri ș i funcț ii pe care le
au fost făcute în ele.

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ț ă

funcț ia NewReadln(Max: Integer): String;

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ț ă

funcț ia NewReadln(Max: Integer): String;

implementare

functia NewReadln(Max: Intreg): Sir;


var
Ș ir
c: Caracter;
începe
s := '';
repetă
c := CitesteTasta;
dacă (c = #8){#8 = BACKSPACE} ș i (s <> '') atunci
începe
Scrie(#8+' '+#8);
ș terge(s, lungimea(s), 1);
sfârș it;
dacă (c <> #8) ș i (c <> #13) {#13 = ENTER} ș i (lungimea(s) < Max) atunci
începe
Scrie(c);
s := s + c;
sfârș it;
până c = #13;
s
final;

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.

Învăț aț i programarea Pascal - Lecț ia tutorialului


13 - Puncte
Ce este un pointer?
Un pointer este un tip de variabilă care stochează o adresă de memorie. Deoarece stochează o adresă de memorie
se spune că îndreaptă spre acesta. Există 2 tipuri de pointeri, care sunt tipizaț i ș i netipizaț i. Un pointer tipizat
un pointer face referire la o variabilă, cum ar fi un întreg. Un pointer netipat poate face referire la orice tip de
variabilă.

Declararea ș i utilizarea pointerilor tipizaț i

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:

program Poinț eri;

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.

Declararea ș i utilizarea indicilor netipizaț i

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.

Învăț aț i Programarea Pascal Tutorial Lecț ie


14 - Liste Înlănț uite
Ce este o listă legată
O listă legată este ca un tablou, cu excepț ia faptului că numărul de elemente dintr-o listă legată se poate schimba, spre deosebire de
o matrice. O listă legată foloseș te indicatoare pentru a face legătura cu elementul următor sau anterior.

Liste legate simple


Există 2 tipuri de liste legate simple care se numesc cozi ș i stive.

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).

Elementul 1 --> Elementul 2 --> Elementul 3 --> (Până la ultimul element)

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ă.

procedură adaugă(i: integer);


începe
nou(cur);{Creează un nou element de coadă}
cur^.data := i;{Setează valoarea elementului din coadă la i}
cur^.next := nil;{Setează următorul element din coadă la nil pentru că acesta
nu există
dacă head = nil atunci {Dacă nu există un cap al cozii atunci}
head := cur{Curentul este noua cap deoarece este primul element care este
adăugat pe lista
altfel
last^.next := cur;{Setează ultimul element precedent ca fiind curent pentru că este
ultimul element nou din coadă
last := cur;{Faceț i ca elementul curent să fie ultimul element din coadă}
sfârș it;

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;

Procedura de distrugere va elibera memoria care a fost folosită de coadă.

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).

Elementul 1 <-- Elementul 2 <-- Elementul 3 <-- (Până la ultimul element)

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.

Vei vedea că numerele sunt adăugate de la 3 la 1 cu un stivă în loc de 1 la 3. Acesta este


pentru că lucrurile trebuie să iasă de pe vârful stivei, în loc să iasă de la capul unei cozi.

Procedura de adăugare adaugă elementul după ultimul element de pe stivă.

procedură adăugare(i: întreg);


începe
nou(cur);{Creează un nou element în stivă}
cur^.data := i; {Setează valoarea elementului la valoarea parametrului}
cur^.prev := last;{Setează elementul anterior la ultimul element din stivă}
ultimul := cur;{Face ca elementul curent să fie noul ultim element}
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;

S-ar putea să vă placă și