Documente Academic
Documente Profesional
Documente Cultură
Roșiori de Vede
Teleorman
ATESTAT INFORMATICĂ
Tema: Limbajul de programare Pascal
Profesor coordonator :
Stan Ilie
Bibliografie............................................................................................pag.25
1
Capitolul 1
Limbaje de programare
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
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”
5
Prin butonul “Inapoi” se revine la meniul principal.
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.
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
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;
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;
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;
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
25
26