Sunteți pe pagina 1din 27

Liceul Tehnologic ,,Anghel Saligny”

Roșiori de Vede
Teleorman

ATESTAT INFORMATICĂ
Tema: Limbajul de programare Pascal

Profesor coordonator :
Stan Ilie

Elev : Gheorghe (Barbu) D. Ileana -


Mariana
AN II – PL : Analist programator
2022 - 2023
Cuprins:

Capitolul 1 - Limbaje de programare.......................................pag.2


 Despre aplicatie.............................................................................pag.4

Capitolul 2 - Descrierea programului.......................................pag.8


 Sursa Pascal….............................................................................pag.10

Bibliografie............................................................................................pag.25

1
Capitolul 1
Limbaje de programare

Borland Pascal este numele compilatorului si mediului integrat de


dezvoltare pentru limbajul Pascal produs de firma Borland.
Lansat in 1984 sub numele de Turbo Pascal, a ajuns repede unul dintre cele
mai populare medii de dezvoltare pentru PC. Borland Pascal 7.0, lansat in 1992,
a cuprins si un mediu de dezvoltare pentru Microsoft Windows.
Borland Pascal a fost precursorul limbajului si mediului de
dezvoltare Borland Delphi.
Programarea este o ramura foarte importanta a informaticii care se ocupa
cu crearea programelor (software) necesare pentru marea majoritate a
activitatilor realizate cu ajutorul calculatorului.
Un limbaj de programare este o tehnica de comunicare standardizata
pentru transmiterea de instructiuni catre un computer. Un limbaj de programare
are definite un set de reguli sintactice si semantice. Un limbaj da posibilitatea
programatorului sa specifice cu ce fel de date va lucra computerul si ce actiuni
va executa acesta in anumite situatii precizate.
Categorii
Dupa modul de specificare a instructiunilor:
o limbaje procedurale; ex. C, Java, Perl
o limbaje neprocedurale: ex. LISP, Haskell, Clips, Prolog
Dupa nivelul de abstractizare (care cuantifica usurinta cu care pot fi citite
de catre programatori):
o limbaje de generatia I: limbajele cod-masina
o limbaje de generatia a doua: limbajele de asamblare
o limbaje de generatia a treia: limbaje de nivel inalt, cum ar fi C-
ul (si toate derivatele sale: C++, Java, ), Pascal, Fortran, etc
o limbaje de generatia a patra: limbajele neprocedurale, orientate pe
rezolvarea unei anumite clase de probleme: SQL
o limbaje de generatia a cincea: limbaje utilizate in domenii precum
logica fuzzy, inteligenta artificiala, sau retelele neuronale: Prolog, LISP,
Lista de limbaje de programare
Limbaje generale

Limbaje care pot fi folosite (cel putin teoretic) in scrierea oricarui tip de
programe:
 (QuickBasic, GW-BASIC, Visual Basic)
 BASICC
 C++
 C#
2
 Clips
 Cobol
 Fortran
 Haskell
 Java
 JavaScript
 LISP
 Pascal (si ObjectPascal, folosit de Borland Delphi)
 Perl
 PHP
 Prolog
 Python
 Ruby
 Seed7
 Scriptol
 Tcl/TK
 CSS
 XHTML
Limbaje cu o tinta bine definita - de obicei folosite pentru interactiunea cu
un anumit program sau sistem.
ActionScript - limbajul de scripting folosit de Macromedia Flash
 ASP (si ASP.NET) - pentru scripting web
 FoxPro
 MIVA SCRIPT
 SQL - pentru interactiunea cu bazele de date relationale
 Executia
Pentru executarea unui program scris intr-un limbaj oarecare, exista, in
principiu, doua abordari: compilare sau interpretare.
Unele limbaje se preteaza bine la compilare; de exemplu limbajele
clasice: Pascal, Fortran, C. Alte limbaje sint in mod predilect interpretate, de
ex. BASIC, PHP, SQL. Multe limbaje moderne combina compilarea cu
interpretarea: codul sursa este compilat intr-un limbaj binar numit bytecode,
care la rulare este interpretat de catre o masina virtuala. De remarcat faptul ca
unele interpretoare de limbaje pot folosi compilatoare just-in-time, care
transforma codul in limbaj masina chiar inaintea executarii.
Algoritm (notiunea are la origine numele matematicianului persan Al-
Khwarizmi), in matematica si informatica teoretica, reprezinta o metoda
univoca prin care se descriu, pe rand, pasii necesari pentru rezolvarea unei
probleme.
Algoritmul este notiunea fundamentala a informaticii. Totul este construit in
jurul algoritmilor si al structurilor de date, cum ar fi listele sau grafurile.

3
Proprietati
Cele mai importante proprietati ale unui algoritm sunt urmatoarele:
 finitudinea este proprietatea algoritmului de a se termina intr-un
numar finit de pasi. Exista si 'algoritmi' care nu se termina intr-un
numar finit de pasi, dar acestia se numesc metode algoritmice.
 corectitudinea este proprietatea algoritmului de a furniza o solutie
corecta a problemei date.
 generalitatea este proprietatea unui algoritm de a rezolva o clasa de
probleme, si nu doar o problema particulara. Spre exemplu, un
algoritm care rezolva ecuatia x2 + 5x − 6 = 0 este mai putin general
decat unul care rezolva ecuatia ax2 + bx + c = 0.
 claritatea este proprietatea algoritmului de a descrie cu exactitate
pasii pe care ii parcurge in rezolvarea problemei, fara ambiguitati.
 optimalitatea este proprietatea unui algoritm de a se termina dupa un
numar minim de pasi. Spre exemplu, daca se cere sa se calculeze
suma primelor n numere naturale, putem aplica formula de calcul, si
astfel algoritmul se termina intr-un singur pas, pe cand, daca am
aduna toate numerele de la 1 la n, s-ar termina in n pasi.
Clasificarea algoritmilor
In functie de modul de implementare, un algoritm poate fi:
 recursiv sau iterativ
 serial sau paralel
 deterministic sau aleator (probabilistic)
 poate furniza rezultatul exact sau doar o aproximare a acestuia
In functie de paradigma utilizata pot fi:
 algoritmi backtracking
 algoritmi divide et impera
 algoritmi de programare dinamica
 algoritmi greedy
 algoritmi probabilisti, algoritmi genetici, algoritmi euristici

Despre aplicatie

Programul se numeste “Tetris_MD” si este facut in limbajul de programare


Pascal. Tetris_MD este un joc realizat dupa modelul bine-cunoscutului joc
Tetris.
Tetris_MD presupune programul propriu-zis (sursa Pascal) si un fisier text
in care sunt salvate recordurile.
Imediat dupa lansarea in executie a programului se deschide pagina de
inceput a proiectului, cu titlul “Lucrare de atestat”. Dupa apasarea tastei
ENTER, apare numele realizatorului, numele profesorului indrumator, numele

4
liceului, clasa si profilul, precum si un chenar “start aplicatie”. Pentru
deschiderea aplicatiei, cu ajutorul mouse-ului se da click in chenarul “start
aplicatie”.
Dupa deschiderea aplicatiei, se intra in pagina “Meniu principal” in care
apar cinci optiuni:
-“Joc nou”
-“Recorduri”
-“Despre joc”
-“Conf. taste”
-“Iesire”

Optiunea “Recorduri” se apeleaza din meniul principal cu ajutorul mouse-


ului si are ca efect afisarea recordurilor. Aceste recorduri sunt cele mai bune 10
punctaje realizate. Recordurile sunt afisate in ordine descrescatoare. Dupa
apelarea optiunii Recorduri, pe ecran apare textul “Apasati ENTER”. Dupa
apasarea tastei ENTER, pentru a reveni la meniul principal, se da click pe
butonul “Inapoi”.
Optiunea “Despre joc” se apeleaza tot cu ajutorul mouse-ului, la fel ca
celelalte optiuni, dand click in chenarul “Despre joc”. Pe ecran va aparea
numele jocului: “Tetris_MD”, informatii despre originea jocului (cunoscutul joc
Tetris la care s-au adus mici modificari) si regulile jocului:
 piesele de joc trebuie aranjate in spatiul de joc in asa fel incat sa se
completeze cel putin cate o linie pe orizontala.
 fiecare linie completata valoreaza un anumit numar de puncte, puncte
ce se adauga la scor, pentru ca jucatorul sa-si poata masura abilitatile,
in comparatie cu ceilalti jucatori.
 piesele se pot deplasa la dreapta si la stanga cu ajutorul tastelor ‘4’ si
 piesele se pot roti la stanga cu 90 prin apasarea tastei ‘5’.
Pe langa acestea mai apare butonul “Inapoi” cu ajutorul caruia putem reveni
la meniul principal.
Prin apelarea optiunii “Conf. taste”, pe ecran vor aparea toate tastele care
sunt necesare rularii aplicatiei, impreuna cu rolul lor:

5
Prin butonul “Inapoi” se revine la meniul principal.

Optiunea “Iesire” se apeleaza din meniul principal cu ajutorul mouse-ului si


are ca efect imediat parasirea aplicatiei.
Cea mai importanta optiune a meniului principal este ”Joc Nou”. Ea se
apeleaza tot cu ajutorul mouse-ului si lanseaza in executie jocul propriu-zis.
La lansarea in executie a jocului pe ecran va aparea bine plasat in centru
spatiul de joc. Regulile jocului sunt simple. Spatiul de joc este format din
patratele, asemanator tablei de sah, doar ca are dimensiunile 20x10. Fiecare
camp poate fi plin (acoperit de o caramida) sau gol. In centru sus apar diferite
piese pe care jucatorul le poate manevra dupa bunul plac, astfel el le va deplasa
unde doreste. El poate muta piesa la dreapta, la stanga, poate sa accelereze
coborarea si o poate roti la stanga cu 90 .
Piesele pot cadea pana la intalnirea altei piese sau pana la intalnirea solului.
Scopul jocului este de a acumula cat mai multe puncte. Punctele se
acumuleaza atunci cand se umple un rand intreg. Dupa ce piesa a ajuns pe sol
(randul de jos) sau a intalnit o alta piesa si a completat un rand, randul plin va
disparea si tot ce se afla deasupra va cobori in mod automat cu o pozitie mai jos.
Jocul dureaza pana cand urmatoarea piesa nu mai are loc in centrul spatiului
de joc, pe primele linii.

6
Alaturi de spatiul de joc vor mai aparea in partea din dreapta si punctajul
realizat pana in acel moment, precum si piesa ce urmeaza sa apara dupa fixarea
piesei curente, nivelul si numarul de linii care trebuie completate pana la
trecerea la nivelul urmator. In
partea stanga, vor aparea texte informative
despre iesirea sau intreruperea
jocului.

In cazul in care in centru sus este pozitionata o anumita piesa si piesa


urmatoare nu mai are loc, jocul se termina, pe ecran aparand textul “GAME
OVER”, palpaind de cateva ori, dupa care se afiseaza textul “Apasati ”s” ”.
Dupa ce se apasa tasta “s”, in coltul din dreapta jos apare un chenar cu textul
”Inapoi”. Pentru a reveni la meniul principal, dati click pe acest chenar.
Daca, in timpul jocului, vreti sa reveniti la meniul principal, apasati tasta “s”
si se procedeaza ca in cazul in care se termina jocul (dati click pe chenarul
“Inapoi”). Daca doriti sa iesiti din aplicatie, apasati tasta “q”.
ATENTIE: daca apasati “s”, jocul se pierde.

7
De fiecare data cand un joc se termina, scorul se memoreaza intr-un vector.
La apelarea procedurii “Recorduri”, vectorul este ordonat descrescator si pe
ecran apar cele mai bune 10 recorduri.
Capitolul 2
Descrierea programului

Programul Pascal (codul sursa) este impartit intr-un numar mare de


proceduri, proceduri enumerate mai jos. Practic, programul principal nu face
decat sa apeleze procedura “pagina1” si sa initializeze unele variabile.
Procedura “Piesa” creaza fiecare piesa in parte, in functie de o variabila “p”.
Acesta reprezinta valoarea unui element al vectorului “v”, ales aleator. Vectorul
“v” are 23 de elemente si reprezinta codul culorii pe care o are o piesa. Faptul
ca vectorul are 23 de elemente nu inseamna ca avem 23 de piese diferite. Avem
7 piese care au fiecare una sau mai multe pozitii diferite (maxim 4). In functie
de valoarea parametrilor “p”, “x” si “y”, procedura piesa atribuie unor elemente
ale matricei “a” anumite valori, iar la afisarea acesteia, patratelele vor avea
diferite culori, reprezentand diferite piese.
Procedura “Anulpiesa” are cam acelasi efect ca si procedura “Piesa”, doar
ca in functie de valoarea parametrilor, atribuie unor elemente ale matricei “a”
valoarea 11, deoarece 11 este codul culorii spatiului de joc. Astfel, la afisarea
matricii, anumite patratele vor aparea necolorate (colorate ca si spatiul de joc).
Procedura “Verif” verifica daca pe o anumita linie a spatiului de joc sunt
ocupate toate patratelele (daca in matricea “a”, toate elementele de pe o linie
sunt diferite de 11. Daca un element din matrice are valoarea 11 inseamna ca pe
acea pozitie nu este nici o caramida a unei piese). Daca sunt ocupate toate
patratelele, scorul este marit cu un anumit numar de puncte, se emite un anumit
sunet, linia este stearsa si tot ce se afla deasupra liniei coboara cu un nivel.
Scorul se calculeaza astfel: 30 de puncte pentru fiecare linie completata in
nivelul I, iar apoi pentru fiecare nivel, scorul pentru fiecare linie se mareste cu 5
puncte.
Procedura “Gril” face ca dupa fiecare modificare a pozitiei unei piese,
spatiul de joc sa apara ca o “pagina in patratele”.
Procedura “Records” are ca efect principal afisarea celor mai bune 10
punctaje obtinute. In primul rand, daca scorul jucatorului este mai mare decat 0,
atunci scrie scorul la sfarsitul fisierului “record.int”. Apoi coloreaza tot ecranul
albastru deschis si citeste toate scorurile din fisierul “record.int” si le
memoreaza in vectorul “r”. Ordoneaza vectorul “r” in ordine descrescatoare si
afiseaza primele 10 elemente ale vectorului “r” (cele mai mari 10 punctaje
obtinute).
Procedura “Game_Over” verifica daca piesa urmatoare poate fi pusa in
centrul spatiului de joc. Daca elementele spatiului de joc din centru sunt
ocupate, atunci afiseaza pe ecran textul “Game Over”.
8
Procedura “Stanga” deplaseaza piesa la stanga. Prima data sterge piesa,
apeland procedura “anulpiesa”, dupa care ,cu ajutorul procedurei “piesa”
deseneaza piesa in stanga, deplasata cu o coloana. Daca piesa nu poate fi
deplasata la stanga, procedura nu are nici un efect.
Procedura “Dreapta” este asemanatoare cu procedura “stanga”, doar ca in
loc sa deplaseze piesa la stanga, ea deplaseaza piesa la dreapta cu o coloana.
Procedura “Jos” are ca efect coborarea piesei cu un nivel, daca aceasta poate
sa coboare (nu a ajuns pe ultima linie a spatiului de joc sau nu are pe nivelul
imediat urmator o alta piesa). Se procedeaza exact ca la procedurile “stanga” si
“dreapta”: se sterge piesa prin apelarea procedurii “anulpiesa” dupa care se
deseneaza piesa cu un nivel mai jos.
Prin procedura “Rotire”, piesa este rotita la stanga cu 90 . Dupa cum am
spus la inceput, avem un vector “v” care contine codurile culorilor pentru
fiecare pozitie a fiecarei piese. Prin apelarea procedurii “rotire”, se sterge piesa,
si se deseneaza piesa care are codul din urmatorul element al vectorului “v”.
Daca urmatorul element din vector are codul pentru o alta piesa, atunci se
deseneaza piesa curenta care are codul cel mai mic memorat intr-un element al
vectorului “v”.
Procedura “Ceasca” deseneaza o ceasca de cafea in partea stanga atunci
cand jucatorul pune pauza.
Procedura “Joc” este jocul propriu-zis si apeleaza toate celelalte proceduri
descrise pana acum.
Pentru inceput initializeaza variabila “sc” cu 0, variabila care reprezinta
scorul. Deseneaza spatiul in care va aparea piesa urmatoare si scorul si creaza
spatiul de joc.
Urmeaza jocul: -alege o piesa (de la 1 la 23);
-pune piesa in spatiul de joc si o sterge de la “piesa urmatoare”, unde alege
alta piesa
-citeste o tasta, care poate fi “4”, ”6”, ”2”, ”p”, ”s”, ”q” sau ”5” (daca tasta
apasata nu se regaseste printre cele 7 taste, ea nu are nici un efect)
-fiecare dintre cele 7 taste are un efect specific: deplaseaza piesa la stanga,
la dreapta, in jos, pune pauza, opreste jocul pentru a reveni la meniul principal,
inchide aplicatia sau roteste piesa.
-daca se apasa tastele de trei ori consecutiv piesa coboara un nivel
-daca nu se apasa nici o tasta, piesa coboara automat cate un nivel
-se verifica daca, dupa ce a ajuns o piesa pe sol (nivelul de jos) sau a intalnit
o alta piesa, s-a completat o linie sau mai multe. In caz afirmativ, se elimina
linia corespunzatoare, se mareste scorul, scade numarul de linii (afisat sub scor)
care trebuie completate pentru a trece la nivelul urmator si eventual creste
nivelul.
Procedura “Pa” este procedura care deseneaza meniul principal (cele 5
chenare: Joc nou, Recorduri, Despre joc, Conf. taste si Iesire cu textele
corespunzatoare).

9
Procedura “Pp” este procedura care realizeaza lucrul cu mouse-ul in cadrul
meniului si revenirea la meniul principal.
Procedura “Pagina1” creeaza pagina de inceput si face legatura dintre
aceasta si aplicatie, prin intermediul chenarului “ Start Aplicatie”. Trecerea se
face dand click cu ajutorul mouse-ului pe butonul de legatura.
Programul principal este foarte simplu: initializeaza modul graph,
initializeaza unele variabile care contorizeaza viteza de rulare a pieselor,
nivelul, numarul de linii care trebuie completate pana la trecerea la nivelul
urmator si bonusul pentru completarea mai multor linii in acelasi timp si
apeleaza procedura “pagina1” dupa care inchide modul graph.

Sursa Pascal

uses Graph,crt,dos,d_mouse;
type tip=record
c:byte;
x,y:integer;
end;
mtip=array[0..20,0..20]of tip;
const v:array[1..23]of
byte=(4,2,18,5,21,7,23,39,55,6,22,38,54,1,17,14,30,46,62,12,28,44,60);

var
grDriver: Integer;
grMode: Integer;
30:begin
a[x+2,y].c:=14;
a[x,y].c:=14;
a[x+1,y].c:=14;
a[x+1,y+1].c:=14;
end;
46:begin
a[x+1,y].c:=14;
a[x+1,y+1].c:=14;
a[x+1,y+2].c:=14;
a[x,y+1].c:=14;
end;
62:begin
a[x,y+1].c:=14;

10
a[x+1,y].c:=14;
a[x+1,y+1].c:=14;
a[x+2,y+1].c:=14;
end;
12:begin
a[x,y].c:=12;
a[x+1,y+1].c:=12;
a[x+1,y].c:=12;
end;
28:begin
a[x,y+1].c:=12;
a[x+1,y].c:=12;
a[x+1,y+1].c:=12;
end;
44:begin
a[x,y].c:=12;
a[x,y+1].c:=12;
a[x+1,y+1].c:=12;
end;
60:begin
a[x,y].c:=12;
a[x,y+1].c:=12;
a[x+1,y].c:=12;
end;
end;
end;
procedure anulpiesa(p:byte;x,y:integer;var a:mtip);
begin

case p of
4:begin
a[x,y].c:=11;
a[x+1,y].c:=11;
a[x,y+1].c:=11;
a[x+1,y+1].c:=11;
end;
2:begin
a[x,y+1].c:=11;
a[x,y+2].c:=11;
a[x+1,y].c:=11;
a[x+1,y+1].c:=11;
end;

11
18:begin
a[x,y].c:=11;
a[x+1,y].c:=11;
a[x+1,y+1].c:=11;
a[x+2,y+1].c:=11;
end;
5:begin
a[x+1,y+1].c:=11;
a[x+1,y+2].c:=11;
a[x,y].c:=11;
a[x,y+1].c:=11;
end;
21:begin
a[x,y+1].c:=11;
a[x+1,y+1].c:=11;
a[x+1,y].c:=11;
a[x+2,y].c:=11;
end;
7:begin
a[x+1,y].c:=11;
a[x+2,y].c:=11;
a[x,y].c:=11;
a[x+2,y+1].c:=11;
end;
23:begin
a[x,y+2].c:=11;
a[x+1,y].c:=11;
a[x+1,y+2].c:=11;
a[x+1,y+1].c:=11;
end;
39:begin
a[x+1,y+1].c:=11;
a[x+2,y+1].c:=11;
a[x,y+1].c:=11;
a[x,y].c:=11;
end;
55:begin
a[x+1,y].c:=11;
a[x,y+2].c:=11;
a[x,y].c:=11;
a[x,y+1].c:=11;
end;
6:begin

12
a[x+1,y+1].c:=11;
a[x+2,y+1].c:=11;
a[x,y+1].c:=11;
a[x+2,y].c:=11;
end;
22:begin
a[x,y].c:=11;
a[x,y+1].c:=11;
a[x+1,y+2].c:=11;
a[x,y+2].c:=11;
end;
38:begin
a[x+1,y].c:=11;
a[x+2,y].c:=11;
a[x,y].c:=11;
a[x,y+1].c:=11;
end;
54:begin
a[x+1,y].c:=11;
a[x+1,y+1].c:=11;
a[x,y].c:=11;
a[x+1,y+2].c:=11;
end;
1:begin
a[x+1,y].c:=11;
a[x+2,y].c:=11;
a[x,y].c:=11;
a[x+3,y].c:=11;
end;
17:begin
a[x,y].c:=11;
a[x,y+1].c:=11;
a[x,y+2].c:=11;
a[x,y+3].c:=11;
end;
14:begin
a[x,y].c:=11;
a[x,y+1].c:=11;
a[x,y+2].c:=11;
a[x+1,y+1].c:=11;
end;
30:begin
a[x+2,y].c:=11;

13
a[x,y].c:=11;
a[x+1,y].c:=11;
a[x+1,y+1].c:=11;
end;
46:begin
a[x+1,y].c:=11;
a[x+1,y+1].c:=11;
a[x+1,y+2].c:=11;
a[x,y+1].c:=11;
end;
62:begin
a[x,y+1].c:=11;
a[x+1,y].c:=11;
a[x+1,y+1].c:=11;
a[x+2,y+1].c:=11;
end;
12:begin
a[x,y].c:=11;
a[x+1,y+1].c:=11;
a[x+1,y].c:=11;
end;
28:begin
a[x,y+1].c:=11;
a[x+1,y].c:=11;
a[x+1,y+1].c:=11;
end;
44:begin
a[x,y].c:=11;
a[x,y+1].c:=11;
a[x+1,y+1].c:=11;
end;
60:begin
a[x,y].c:=11;
a[x,y+1].c:=11;
a[x+1,y].c:=11;
end;

end;
end;

Procedure verif(k:byte;var s:boolean);

14
begin
i:=5;
s:=true;
repeat
if a[k,i].c=11
then
s:=false;
inc(i);
until (s=false)or(i=17);

if s
then
begin
for i:=k downto 2 do
for j:=5 to 16 do
a[i,j].c:=a[i-1,j].c;
for i:=1 to 20 do
a[1,i].c:=11;
setcolor(15);
str(sc,scor);
outtextXY(580,235,scor);
setcolor(red);
sc:=sc+30;
str(sc,scor);
outtextXY(580,235,scor);

o:=200;
repeat
sound(o);
delay(30);
o:=o+50;
until o=850;
nosound;
if (sc-bonus) mod 300 = 0
then
begin
viteza:=viteza-50;
setcolor(15);

15
str(niv,scor);
outtextXY(580,315,Scor);
setcolor(red);
inc(niv);
str(niv,scor);

outtextXY(580,315,Scor);
end;
end;
end;
procedure gril(var x,y:integer);
begin
setlinestyle(0,1,1);
setcolor(13);
for i:=1 to 19 do
begin
line(x,y,x+240,y);
y:=y+20;
end;
y:=40;
x:=x+20;
for i:=1 to 11 do
begin
line(x,y,x,y+400);
x:=x+20;
end;
end;

procedure records;
begin

settextstyle(0,0,1);
outtextxy(150,400,'Pentru vizualizarea recordurilor apasati r.');
assign(f,'record.int');
append(f);
if sc>0
then
writeln(f,sc);
close(f);

16
assign(f,'record.int');
reset(f);

begin
z:=0;
setfillstyle(1,lightblue);
bar(0,0,640,480);
i:=0;
while not eof(f) do
begin
inc(i);
readln(f,r[i]);
end;
z:=i;
repeat
s:=true;

for i:=1 to z-1 do


if r[i]<r[i+1]
then
begin
aux:=r[i];
r[i]:=r[i+1];
r[i+1]:=aux;
s:=false;
end;
until s=true;
k:=0;
setcolor(red);
settextstyle(1,0,1);
for i:=1 to 10 do
begin
k:=k+30;

outtextXY(30,k,'Locul ');
str(i,l);
outtextXY(78,k,l);
str(r[i],scor);
outtextXY(120,k,scor);
end;

17
i:=0;
outtextxy(320,380,'Apasati ENTER');
repeat
outtextXY(44,30,'Locul 1');
inc(i);
if i mod 2 =0
then
begin
setcolor(lightblue);
delay(100);
end
else
begin
setcolor(red);
delay(150);
end;
until keypressed;

end;
close(f);
end;

procedure game_over(var a,b:mtip;var ss:boolean);


begin
x:=1;
ss:=true;
for i:=1 to 4 do
for j:=1 to 4 do
if (b[i,j].c<>11) and (a[i,j+10].c<>11)
then
ss:=false;
if ss=false
then
begin
cleardevice;
repeat
inc(i);
if i mod 2=0
then
setbkcolor(lightblue)
else

18
setbkcolor(lightred);
delay(30);
settextstyle(0,0,10);
setcolor(yellow);
outtextXY(320,150,'Game');
outtextXY(320,250,'Over');
until i=30;
t:='s';
end;
end;
procedure stanga(var a:mtip;var k:integer);
begin
if y>5
then
if (k=4)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=2)and(a[x,y].c=11)and(a[x+1,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=18)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)and(a[x+2,y].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=18)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)and(a[x+2,y].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);

19
piesa(k,x,y,a);
end
else
if (k=5)and(a[x,y-1].c=11)and(a[x+1,y].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=21)and(a[x,y].c=11)and(a[x+1,y-1].c=11)and(a[x+2,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=7)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)and(a[x+2,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=23)and(a[x,y+1].c=11)and(a[x+1,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=39)and(a[x,y-1].c=11)and(a[x+1,y].c=11)and(a[x+2,y].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else

20
if (k=55)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=6)and(a[x,y].c=11)and(a[x+1,y].c=11)and(a[x+2,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=22)and(a[x,y-1].c=11)and(a[x+1,y+1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=38)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)and(a[x+2,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=54)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=1)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)and(a[x+2,y-
1].c=11)and(a[x+3,y-1].c=11)
then

21
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=17)and(a[x,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=14)and(a[x,y-1].c=11)and(a[x+1,y].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=30)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)and(a[x+2,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=46)and(a[x,y].c=11)and(a[x+1,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=62)and(a[x,y].c=11)and(a[x+1,y-1].c=11)and(a[x+2,y].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);

22
piesa(k,x,y,a);
end
else
if (k=12)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=28)and(a[x,y].c=11)and(a[x+1,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=44)and(a[x,y-1].c=11)and(a[x+1,y].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end
else
if (k=60)and(a[x,y-1].c=11)and(a[x+1,y-1].c=11)
then
begin
anulpiesa(k,x,y,a);
dec(y);
piesa(k,x,y,a);
end;

until (x>240)and(x<400)and(y>440)and(y<475);
pa;
pp;

end;

23
Begin
grDriver := Detect;
InitGraph(grDriver, grMode,' ');
viteza:=300;
niv:=1;
contor:=0;
bonus:=0;
pagina1;
readln;
CloseGraph;
end.

24
Bibliografie

 Donald E. Knuth - Arta Programarii Calculatoarelor (ed. 2), Volumul


1: Algoritmi Fundamentali
 Herbert S. Wilf - Algorithms and Complexity (PDF Document)
 Martin Davis - The Undecidable: Basic Papers On Undecidable
Propostions, Unsolvable Problems and Computable Functions, Raven
Press, New York, 1965
 Tudor Sorin – Manual de informatica cls a X-a, Editura L&S 2000
 Bogdan Batog si Catalin Drula – Tehnici de programare, cls a X-a,
Editura L&S Informat, 1988

25
26

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