Algoritmi

Kur të definohet zgjidhja e problemit duhet të definohen edhe të dhënat e nevojshme dhe rezulltatet të cilat paraqesin zgjidhjen e dëshiruar.

Forma analitike e paraqitjes së algoritmeve

Për zgjidhjen e një problemi me kompjuter sëpari zgjidhet rruga përkatëse nëpër të cilën duhet kaluar ashtu që të fitohet rezulltati i duhur. Pastaj, rrjedha e procesit llogaritës në këtë rrugë shprehet përmes formës analitike të paraqitjes së algoritmit, ku për çdo procedurë caktohet plotësishtë pozita dhe momenti i paraqitjes

Grumbulli i veprimeve me një renditje të caktuar, të cilat ndërrmirren për zgjidhjen e një problemi me komjuter, quhet algoritëm, kështu psh komandat të cilat i jepen kompjuterit gjatë llogaritjes së sipërfaqesë s dhe perimetrit p të katërkëndshit, mundë të shkruhet si në fig, ku me * duhet nunëkuptuar shenjën e shumëzimit .

  1. fillimi
  2. merri vlerat e brinjëve të katërkëndshit a,b.
  3. llogarite sipërfaqen: s=a*b.
  4. llogarite perimetrin : p=2*(a+b).
  5. Shtypi Vlerat e llogaritura : s,p
  6. fund.

Fig1. Algoritmi për llogaritjen e sipërfaqes dhe të perimetrit

            Vlerat e llogaritura në bazë të algoritmit të dhënë mundë të shtypen përmesë njësisë dalëse të komjuterit, psh në ekran, ose në printer

 

FORMA GRAFIKE

Përdorimi i formës analitike në rastet kur kemi të bëjmë me struktura algoritmike më të komplikuar është e pa përshtatshme sepëse përmes tij rëndë mund të paraqitet rrjedha e procesit

            Algoritmet kryesishtë paraqiten grafikishtë,përmesë bllok diagrameve .kështu psh blok diagrami i algoritmit të dhënë në fig 1 do të duket si në fig 2, ku numrat e shenuar djathtas blloqeve u përgjigjen hapave të veqant në algoritëm

Blloqet elementare
Blloqet elementare

Me instruksionin lexo ,komjuterit i hurdhërohet që të lexoj (të dhënat që janë hyrëse ) vlerat numerike që figurojnë në bllokun që i përket këtij instruksioni dhe ti vendos në memorje .

Me instuksionin shtyp kompjuterit i urdhërohet që për madhësit që figurojn në bllokun që i përket këti instruksioni t’i printoj (shkruaj) vlerat përkatëse numerike përmes njësisë dalëse duke i marrë ato nga memorja .

 

Psh bllok diagrami i algoritmit të dhënë më parë në formë analike dotë dukej si në fig vijuese. Ku numrat e shënuar djathtas blloqeve u përgjigjen hapave të veqant në algoritëm.

Definimi dhe vetitë

Një metodë e përgjithshme për për zgjidhjen e problemeve është metoda e algoritmit ose algoritmi. Algoritmi është ndonjë bashkësi e operatorve ,përpunime elementare dhe rregullave mbi zbatimin e tyre me qëllim të fitimit të zgjidhjes së ndonjë problemi.Kjo llojë procedure përcakton rradhën e në ekzekutimin e operatorve .Të ekzekuturit e secilit operator paraqet një hap algoritmik. Si rrjedhim i kësaj ,rradhës së ekzekutimit të hapave algoritmik Mund tju ndahen numrat rendor i (i=0,1,2,...,k) .Si rezulltat i zbatimit të operatorit në hapin e i-të është mesë rezulltati Ri. Ku me Ro shenohet e dhëna fillestare ,ndërsa Rk e dhëna përfundimtare ose rezulltati i zgjedhjes së problemit.rezulltati Ri-1 shërben si vlerë fillestare për operatorin që do të ekzekutohet në hapin e i-të .Krakteristik me ranësi e algoritmit është se ai duhet ta zgjedhë secilin problem , vlerat fillestare të të cilit i takojnë ndonjë bashkësie të pafundme të dhënash.Kjo është e ashtuquajtura veti e masivitetit. Karakteristik tjetër e secilit algoritëm është në ate se sigurisht do ta jepë zgjidhjen e problemit të parapar nëse dhe ajo ekziston. Sa i përket metodave algoritmike problemet mund të jenë

  • algoritma të zgjedhëshëm
  • algoritma të pazgjithshëm
  • të pakjart në zgjidhjen algoritmike

te algoritmi i zgjidhëshëm problemi ekziston së paku në formulimin e tij

Problemi qëndron te algoritmi i pazgjedhshëm nëse ekzistojn argumente në pamundësin e formulimit të algoritmit për zgjidhjen e tij .Nëse për problemin e dhënë nuk ekziston kurfar argumenti ,ai i takon klasës së problemeve me zgjidhje të pakjartë algoritmike.

            Algoritmi e zgjedhë problemin e dhënë nëse Rk është rezulltat i problemit të fitura në hapin logaritmik i=k ku k është numër natyral.Pasi koha e nevojshme për kryerje të secilit hap algoritmik e caktur ,zgjidhja e problemeve me ndimën e algoritmave arrihet në kohën e caktuar.

            Hapat të cilët nga algoritmi dallojn vetëm në ate që nuk kanë veti të masivitetit ,pasi për ndonjë vlerë fillestare nuk japin rezulltat ,quhen procedura ose hapa procedural.

 

 

{Leximi -urdhërat për futje të të dhënave

       Programi i cili ekzekutohet në kompjuter dhe të dhënat të cilat

përpunohen janë të qasasshme për përpunim vetëm prej kujtesës punuese të

komjuterit.Të dhënat,sipas regullit ,janë të pavarura prej programit sipas

nevojes futen në kujtesen e punës ose operative nga bartsi i jashtem i të

dhënave.Për këtë ,shumica e programeve të cilët përdoren sot në praktikë

përmbaj spaku një urdhër për futjen e të dhënave në kompjuter.Megithat jo të gjithë.

Përdoren dhe programet ,edhe pse shumë rrall,Te të cilët të dhënat jepen

në vetë programin.Të dhënat në këto programe janë madhësi të përhershme,

dhe me anë të urdhërit aritmetikë iu ndahen vlerat variablave .Këto

programe saher që ekzekutohen ,ekzekutohen gjithmon në të njejtën mënyrë

dhe japin të njejtin rezulltat.Athua a ka kuptim përpunimi vetëm njëher.

Nëse dëshirohet ndryshuar vlerat e ndonjërës variabël duhet bërë modifikime në

program.

ekzekutohen

Komjuterit duhet t'i jepen të dhënat që përpunohen.

Deklarimi i tyre brenda programit si konstante të emëruara

ose ndarja e vlerave variablave përmes operatorit të shoqërimit ,

gjithnjë nuk është praktikë.Kjo rrugë e futjes së të dhënave në

kompjuter e imponon nevojën e pasjes së verzionit burimor të programit ,

sa herë që duhet të ndryshohen që marrin pjesë në llogaritje .

Të dhënat në komjuterit mund t'i jepen përmes njërës nga njësit

hyrëse ,ose mund të merren direkt nga njësit memoruese të tij ,

ku janë vendosur më parë.Këtu do të spjegohet mënyra e përcjelljes

së të dhënave në komjuter përmes tastierës,e cila llogaritet

si njësi hyrëse standarte.

Procedurat për lexim

Në gjuhën pascal ,marrja ,ose siç thuhet ndryshe leximi i vlerave hyrëse,

të cilat komjuterit i jepen në tastierë ,bëhet me procedurën për lexim.

vlerat lexohen përmes variablave përkatëse,vendosen në memrjen e

komjuterit .

                Procedura për lexim,shkruhet në dy verzione ,të cilat në formë

         të përgjithshme duken kështu.

                Read(v1,v2,. . .vn)

                ReadLn(v1,v2,. . .vn)

Ku me v1,v2,. . .vn janë shënuar variablat në të cilat do të vendosen

vlerat e lexuara.

                Numri i variablave brenda kllapave në procedurën për lexim e

       përcakton numrin e vlerave hyrëse që duhet dhënë përmes tastierës.

       Komjuteri nuk do ta vazhdoj ekzekutimin e matujeshëm të programit ,

       gjersa nuk shkruhen vlerat për të gjitha variablat që paraqiten në

         procedurën për lexim.

Leximi i vlerave numerike

Variablat, vlerat numerike të të cilave lexohen ,patjetër duhet të

deklarohen në fillim të programit ,përmes deklarimit përkatës,si

variabla të tipit përkatës

Shembull: Programi për leximin e vlerave numerike të

variablave a dhe b }

Program lexo_1;

uses wincrt;

Var

   a,b:integer;

begin

clrScr;

WriteLn('Vlerat e lexuara:');

Read(a,b);

WriteLn('a= ',a,'b= ',b);

End.

{Ekzekutimi i komandave brenda trupit të programit fillon

me ekzekutimin e komandës ClrScr ,e cila fshinë ekranin.

Pas kësaj Vjen procedura Read ,përmes së cilës lexohen

vlerat e variablave të tipit intexher a e b .kompjuteri

hynë në regjimin e pritjes derisa përmes tastierës nuk

skruhen dy vlera numerike ,të ndara mes vete me më së

paku një zbrazësirë dhe pastaj shtypet pulla Enter.Pas

kësaj,vlerat numerike ,u shoqërohen Variablave a dhe b ,

duke pasur parasysh rradhën e shkruarjes

Kështu psh.

Në praktikë ,para procedurës për lexim rregullisht shkruhet

procedura për shtypje të tekstit ,ashtu që shfrytëzuesi i

programit të njoftohet se çka lexohet,gjegjësisht çfarë

vlerash duhet shkrua në tastierë.kështu në programin e dhënë

më sipër ,para procedurës për leximmund të shtohet psh. Procedura

Write ('vlerat për a dhe b:') si rezullat i së cilës në ekran

do të shtypet teksti

vlerat për a dhe b:

Pastaj komjuteri do të presë që pas dy pikave të shenohen vlerat që lexohen.

Leximi i vlerave mundë të bëhet edhe duke përdorur më shumë procedura

njëkohsisht.psh.programi i dhënë më sipër ,procedura për lexim mund të

zëvendsohet me dy procedura.

                Read(a);

                Read(b);

Me efekt plotësiahtë të njëjtë.

Për leximin përdoret edhe procedura ReadLn (ReadLine)

e cila dallohet nga procedura Read, sepse pas ekzekutimit të saj,

leximi i vlerave me procedurën vijuese vazhdon në rreshtin vijues.

Shembull: Programi për leximin e vlerave numerike të variablave x,y dhe z.

 

 

}

 

 

 

{shembulli 8.4

duhet sajuar programi përmes së cilit mund të futen tre numra

real:a,b dhe x,testoni se a i takon numri x intervalit[a,b]

dhe për nga kompjuteri shtypni mesazhin përkatës.

detyra mund të zgjidhet në dy mënyra.Zgjidhja e problemit do

të jetë e dhanun me njërën prej dy përgjigjigjjeve:

Numri x i takon intervalit [a,b] ose nuk i takon intervalit[a,b]

{1}

uses wincrt;

var

   a,b,x:real;

   begin

     read(a,b,x);

     If x>=a then

         begin

           if x<=b then

               writeln('numri',x, 'i takon intervalit [a,b]')

           else

               writeln('numri',x, 'nuk i takon intervalit [a,b]')

         end

 

         else

               writeln('numri',x, 'nuk i takon intervalit [a,b]')

 

   end.

 

 

 

{Programi për zgjidhjen e ekuacionit a*x*x+b*x+c=0

ku a,b dhe c janë numra real

ZGJIDHJE

Q@ T@ p@rcaktohet forma e zgjidhjes s@ pari duhet p@rcaktuar

diskriminanten D=b*b-4a*c. Kur D>=0 ,rr@nj@t jan@ numra real

x1=(-b+sqrt(d))/(2*a)

x2=(-b-sqrt(d))/(2*a))

n@se D<0 zgjidhjet jan@ numra kompleks t@ konjuguara t@ form@s;

z=alfa+/- beta*i

ku jan@

   -alfa-pjesa reale e numrit kompleks

   -beta -pjesa imanagjinare e numrit kompleks ddhe

   -i-nj@sia imagjinare

a dhe b jan@ elemente nga bashk@sia e numrave real , nd@rsa nj@sia imagjinare

@sht@ sipas definiconit i:=sqrt(-1) (p@rkujtojm sqrt(-a)=i*sqrt(abs(a)) )

     alfa dhe beta llogariten sipas shprehjeve :

     alfa =-b/(2*a) , beta =sqrt(abs(D))/(2*a)

 

}

Program Det_106;

Uses Crt;

 

 

Var

D,a,b,c:Real ;

 

Begin

WriteLn('Vlerat për konsantet a,b dhe c');

Write('a=');

Read(a);

Write('b=');

Read(b);

Write('c=');

Read(c) ;

WriteLn('Rrënjët janë:');

D:=b*b-4*a*c ;

   If D>=0 then

       Begin

         writeln('x1=',(-b+sqrt(d))/(2*a));

         writeln('x2=',(-b-sqrt(d))/(2*a))

       end

   else

       begin

       writeln('x1=', -b/(2*a),'+', sqrt(abs(D))/(2*a),'*i');

       writeln('x2=', -b/(2*a),'-', sqrt(abs(D))/(2*a),'*i')

       end

 

End.

{n@se testohet programi p@r vlerat a=-1, b=1,c=-3 fitohen zgjidhjet n@ form2n

x1=..............+-......*i     dhe

x2=..............--......*i

pasi k@si lloj@ shenimi n@ matematik nuk @sht@ i r@ndomt duhet modifikuar

dhe algoritmin dhe programin ashtu q@ p@r vlera negative b shkrimi i

numrit kompleks t@ jet@ n@ form@n :

x1=..............+(-......*i)     dhe

x2=..............-(-......*i)

 

 

Program Det_106;

Uses Crt;

 

 

Var

D,x1R,x2R,x1I,x2I,a,b,c:Real ;

Begin

WriteLn('Vlerat për konsantet a,b dhe c');

Write('a=');

Read(a);

Write('b=');

Read(b);

Write('c=');

Read(c) ;

writeln('a',a:4:2,' ,b=',b:4:2, ' ,c= ',c:4:2 );

writeln(a,'x*x+',b,'x+',c,'=0');

D:=b*b-4*a*c ;

If D<0    

                Then

                Begin

                   x1R:=-b/(2*a);

                   x2R:=X1R;    

                   x1I:=sqrt(abs(D))/(2*a);

                   x2I:=-x1I                              

         End

   else                                    

                                               

     Begin

       x1R:=(-b+sqrt(D))/(2*a);

       x2R:=(-b-sqrt(D))/(2*a);

       x1I:=0;

       x2I:=0;          

     End;

 

WriteLn('Rrënjët janë:');

WriteLn(x1R:8:2,'+j(',x1I:4:2,')');

WriteLn(x2R:8:2,'+j(',x2I:4:2,')');

End.

{Programi përmes së ciulit gjendet faktorieli i numrit të dhënë n}

 

Program while_1;

Uses wincrt;

Var

   n,i:integer;

     F:real;

Begin

Write('Vlera e variabës n:');

Readln(n);

F:=1;

i:=1;

While i<=n Do

     begin

       F:=F*i;

       i:=i+1;

     End;

writeln('Vlera e llogaritur:',n:4,'!=',F:8:0);

Readln

End.

{programi për gjetjen e mbetjes së pjestimit të dy numrave

të plotë.}

program while_1;

uses wincrt;

var

   m,n:integer;

begin

   clrscr;

   m:=19;

   n:=4;

   write('Mbetja e pjestimit ',m,'/',n,' është ');

     while m>=n Do

       m:=m-n;

   writeln(m);

   readln

end.

{1.           Repeat . . . Until

 

Përmes unazës Repeat ,do të përsëritet ekzekutimi i komandës

,ose grupit të komandave x ,derisa të plotësohet kushti k

,gjegjësisht ekzekutimi i unazës ndërpritet kur vlera e

kushtit k bëhet True .Pas daljes prej unazës repeat

ekzekutimi i programit vazhdon me komandën e parë që

gjindet nën te .

Shembull programi për shtypjen e numrave natyral mes 1 dhe 9 }

Program Repea;

uses Crt;

Var

                i:Integer;

Begin

                i:=1;

                Repeat

                                Write(i:2);

                                i:=i+1

                Until i>9;

ReadLn

End.

{Për shtypje është përdorur unaza repeat ,me të cilën

përsëritrt ekzekutimi i unazës (Komandat që gjinden mes

fjalëve Repeat dhe Until) derisa kushti i përfundmit të saj i>9

është False (nuk është i sakt) .Në momentin kur kushti i

                përfundimit të unazës bëhet i sakt (Vlera e shprehjes i>9

                është True )dilet nga unaza dhe ekzekutohet komanda e parë

 

                vijuese ReadLn-Gjatë përdorimit të unazës Repeat duhet pasur

                kujdes sepse kushti për përfundimin e saj vendoset në fund të unazës}

{Programi për llogaritjen e shumës së Katrorve të numrave natyror

tek mes 1 Dhe n}

Program Repeat_1;

uses wincrt;

Var

n,i:Integer;

   S:Real;

Begin

     Write('Vlera e variables n:');

     Readln(n);

     S:=0;

     i:=1;

     Repeat

       S:=S+Sqr(i);

       i:=i+2;

     Until i>n;

   writeln('Shuma e kërkuar është S=',S:8:0);

   Readln

End.

 

Programi përmes së cilit tregohet realizimi i komandës while të

programit while_1 ,duke i përdorur komandat if dhe goto}

Program while_2;

uses crt;

var

m,n:integer;

label

     d;

begin

   m:=19;

   n:=4;

   write('Mbetja e pjestimit ',m,'/',n,' është ');

   d:if m>=n

       then

         begin

           m:=m-n;

           goto d

         end

       else

   writeln(m);

   readln;

end.

{shembulli 9_3}

Program Nrthjesht(input ,output) ;

Uses wincrt;

(* programi teston se a është vlera e lexuar e variables

numër i thjesht*)

Var

Nr:Integer;(*numri i cili testohet*)

n:Integer; (*Pjestuesi i mundshëm*)

Begin

Write('Jepni numrin e dëshiruar:');

Read(Nr);

n:=1 ;

Repeat

   n:=n+1;

Until Nr Mod n=0;

If n=Nr Then

   WriteLN(Nr,'është numër i thjesht')

           Else

           Writeln(Nr,' është i pjestueshëm me ',n);

End.

 

Programi permes se cilit tregohet perfshirja e unazes for

brenda nje unaze tjeter.}

Program For_14;

Uses Crt;

Var

                i,j:Integer;

Begin

 

                For i:=0 To 9 Do

                Begin

                                For j:=0 To i Do

                                                Write(j:2);

                                WriteLn

                End;

                ReadLn

End.

 

{shkruani segment te programit i cili shtyp

*********

*******

*****

   ***

   *

}

Program For_14;

Uses WinCrt;

Var

                k,i,j:Integer;

Begin

                ClrScr;

                For k:=5 DownTo 1 Do

                Begin

                   For i:=1 To 5-k Do

                                                Write(' ');

           For j:=1 To 2*k-1 Do

             Write('*');

                                WriteLn

                End;

                ReadLn

End.}

 

{Program Jokorekt(Input,output);

uses wincrt;

{programi lexon vergun e numrave natyral dhe gjen vleren e

tyre mesatare , per perfundim jepet vlera -1}

{Const

fund=-1;

Var

n:Integer;

Nr,shuma:Real;

Begin

   n:=0;

   shuma:=0;

   Repeat

     Read(Nr);

     shuma:=shuma+nr;

     n:=n+1

   Until Nr=fund ;

   WriteLn('Vlera mesatare eshte',shuma/n:4:2);

End.

Const

     fund=-1;

Var

     n:Integer;

     Nr,shuma:Real;

begin

       n:=0;

       shuma:=0;

       Repeat

         Read(Nr) ;

         If Nr<> fund Then

           begin

             Shuma :=Shuma+Nr;

             n:=n+1

           End

       Until nr=fund;

Writeln('Vlera mesatare eshte ',shuma/n:4:2)

End.}

program Vleramesat(input,output);

Uses wincrt;

var

Nr ,s,shuma:Real;

i,j,k,m,n:integer;

Begin

     Shuma:=0;

     ReadLn(n,m);

     For i:=1 To n Do

       Begin

         s:=0;k:=0 ;

         For j:=1 To m do

           Begin

             readLn(Nr);

             s:=s+Nr;

             k:=k+1

           End;

         Shuma:=shuma +s;

         Writeln(' vlera e ',i:2,'-të mesatare është ',s/k:5:2 )

       End;

     Writeln('Shuma e fundit përmban',k:2,' numra');

     Writeln('Vlera mesatare e këtyre numrave është', shuma/n:5:2)

End.

 

 

program tabel_f;

uses crt;

const

                x:real=1.0;

                h=0.5;

                f=4.0;

                a='   x            y       z         v';

 

                b='           ______________________________________';

 

var

                y,z,v:real;

                begin

                writeln(b);

                writeln(a);

                writeln(b);

                repeat

                                y:=2*(x/3-4.5)+6;

                                z:=x-1;

                                v:=3+4*(x+2-x/3);

                writeln(x:8:2,y:8:2,z:8:2,v:8:2);

                x:=x+h;

                until x>f;

 

 

writeln(b);

readln;

end.

 

 

PROGRAMI         PERMES SE CILIT           tregohet perdorimi i operatorve

Or ,And dhe Xor mbi numrat intexher a dhe b me madh[si i bajt}

Program Bit_or;

Uses WinCrt;

Var

                a,b,c,d,e:Byte;

Begin

                Write('Dy numra me vlerë deri 255:');

                Read(a,b);

                c:=a Or b;

                WriteLn(a,' OR ',b,' =',c);

                d:=a And b;

                WriteLn(a,' AND ',b,' =',d);

                e:=a xOr b ;

                WriteLn(a,' XOR ',b,' =',e);

                ReadLn

End.

 

tregimi i përdorimit të operatorve Shl dhe shr, kur çvendosja

bëhet me një numër të dëshiruar vendesh}

Program Shr_shl;

Uses WinCrt;

Var

                a,b,c,t:Byte;

Begin

                Write('Numri a:');

                ReadLn(a);

                WriteLn('t       a shl t       a shr t');

                WriteLn('..............................');

                For t:=1 To 8 Do

                                Begin

                                                b:= a shl t;

                                                c:= a shr t;

                                                WriteLn(t:3,b:12,c:12)

                                End;

                WriteLn('..............................');

                ReadLn

end.

 

{Set operatatorët

Në pascal mund të operohet me grumbujt duke shfrytëzuar rregullat

që përdoren në matematikë

Operataor              Funksioni              Tipi i operandit

+              Unioni   

-               Diferenca(diference           

*              Prerja (intersection)            

Rezulltati i set-operatorit   pajtohet me rregullat e grumbullit

logjik (set logic)

"              Një vlerë e të dhënave rendore C është në A+B vetëm nëse

C është në A ose B  

"              Një vlerë rendore C është A-B vetëm nëse C është në A dhe jo në B

"              Një vlerë rendore C është në A*B vetëm nëse C është në dyjat

A dhe B

"              Nëse vlera rendore më e vogël që është antarë i rezulltatit

nga set operatori është A dhe më e madhja është B ,atëhere tipi i

rezulltatit është

Set of A..B

Shembull programi përmes së cilit gjinden se ajanë shifrat e sistemit

decimal elemente të grumbullit të shifrave decimale s,grumbullit të

shifrave çiftë a, dhe grumbullit të shifrave tek b, pastaj unionin

   (a+b) diferencën (a-b) dhe premjen (a*b)      }

   program set_op;

   uses wincrt;

   type

       shifra=0..9 ;

           g=set of shifra ;

   var

     s,a,b,u,d,p:g;

     i,j         :integer;

     x         :array[1..6] of char;

     begin

           s:=[0,1,2,3,4,5,6,7,8,9];

           a:=[0,2,4,6,8];

           b:=[1,3,5,7,9];

           u:=a+b ;

           d:=a-b ;

           p:=a*b;

       writeln('   i     s   a   b   u   d   p') ;

       writeln(' ..... .............................');

       for i:=0 to 9 Do

         begin

               if i In s then x[1]:='+' else x[1]:='-';

               if i In a then x[2]:='+' else x[2]:='-';

               if i In b then x[3]:='+' else x[3]:='-';

               if i In u then x[4]:='+' else x[4]:='-';

               if i In d then x[5]:='+' else x[5]:='-';

               if i In p then x[6]:='+' else x[6]:='-';

                     write (i:5);

                         for j:=1 to 6 do

                           write(x[j]:5);

         writeln;

          end;

         readln

       end.

       {Në fillim të programit përmes deklarimit type është

       deklaruar tipi i të dhënave me emrin shifra , dhe prej tyre

         është formuar grumbulli g më pas ky tip është shfrytëzuar

         për deklarimin e variablave tjera ;s,a,b,u,d,p.brenda

           programit janë deklaruar ose formur grumbujt

"              S-grumbulli i shifrave decimale

"              a grumbulli i shifrave decimale çif

"              b grumbulli i shifrave decimale tek

"              u-unioni i grumbujve a dhe b

"              d-diferenca e grumbujve a dhe b

"              p- premja e grumbujve adhe b

në fund duke përdorur operatorin relacional IN është gjetur

prezenca e sistemit decimal në grumbujt e veçantë dhe për

prezenc është përdorur simboli + ndërsa për mosprezencë

simboli' -'.,janë vendosur në vektorin x që njëkosisht

shtypen duke formuar tabelën si do ta shihni gjatë ekzekutimit .

 

}

 

 

 

Koka e procedurës definon emrin për procedur dhe parametrat formal

(nëse ka )

Një procedurë aktivizohet me urdhërin procedure

Koka e procedurës fillon me :

-               pjesën e deklarimeve ku deklaron parametrat lokal

-               urdhërat ndërmjet Bigin dhe end; përcaktojn se çka duhet të

ekzekutohet kur të thirret procedura .

 

nëprogramet procedure shkruhen ngjajshëm me nënprogramet e tipit function

me tre dallime esenciale vijuse.

"              Emri i tipit procedure është vetëm për thirrjen e tij ,

por jo edhe varibël sikurse te nënprogrami function .

"              Brenda kllapave te titulli i nënprogramit procedure ,

përmes parametrave hyrës që shenohen te nënprogramet function ,

shenohen dhe parametrat dalës ,përmes së cilëve merren rrezulltatet

nga nënprogrami .

"              Thirrja e nëprogramit procedure bëhet përmes emrit të tij duke

e shkruar atë si një komand e veçantë, por jo dhe brenda shprehjeve të

ndryshme ,sikurse thirret nëprogrami function

shembull: Programi p@r gjrtjen dhe shtypjen e vler@s m@ t@ vog@l

(mes vlerave a dhe b}

Program   Proc_1;

Uses wincrt;

Var

   a,b:Integer;

Procedure Min;

Begin

program Proc_1; {programi me nje nenprogram procedure pa parametra}

uses wincrt;

Const

     PI=3.1415962;

Var

S,P,r:real;{dekl i. var. që perdoren ne prog. dhe nenprog-parametrat global}

Procedure     RRETHI;{deklarimi i proc. rrehti pa parametra lokal}

Begin

     S:=PI*Sqr(r);

     P:=2*PI*r;

End;

Begin

     Write('rrezja e rrethit r:');

     Readln(r);

                RRETHI;{thirja e procedures me emrin rrethi në program}

     writeln('Sipërfaqja e rrethit S=',S:8:4);

     Writeln('Perimetri i rrethit P=',P:8:4);

     Readln

End.

 

Me qëllim që procedura të jetë e përgjithshme , në

vazhdim të emrit të saj brenda kllapave shënohen parametrat

formal ,përmes së cilave definohen llogaritjet e ndryshme në

proceedur.Parametrat formal mund të jenë dy llojesh :

Parametra variablash (varible parameters) dhe parametra

   vlerash (value parameter)

                Parametrat e variablave breanda kllapave të procedures

                dekklarohen të tipit të caktuar,kurse parametrat e

                vlerave shoqërohen vetëm me tipin e tyre

                Gjatë thirjes së procedures në program në program ,

                parametrat formal zëvendsohen me ato aktual ,duke ruajtur

                numrin ,rradhën dhe tipin e tyre .

 

}

Program Proc_2;{ forma me parametra}

Uses wincrt;

Const

     PI=3.1415962;

Var

   S,P,r:real; {parametrat global}

Procedure     RRETHI(p,a:Real;Var x,y:Real);{parametrat formal hyres/dales}

Begin

     x:=p*Sqr(a);

     y:=2*p*a;

End;

Begin

     Write('rrezja e rrethit r:');

     Readln(r);

     RRETHI(PI,r,S,P); {thirja e pare e procedures me paramtra në program}

     writeln('Sipërfaqja e rrethit S=',S:8:4);

     Writeln('Perimetri i rrethit P=',P:8:4);

     RRETHI(PI,5,S,P); {thirja e dytë e procedures me paramtra}

     Writeln('Rezulltati i dytë për r=5.0: S=',S:8:4,' P=',P:8:4);

     Readln

End.

{Në procedur janë shfrytëzuar parametrat formal për definimin e llogaritjes së sipërfaqes dhe perimitrit të rrethit si parametra formal janë përdor :

a-rrezja

p-konstanta PI

x-sipërfaqja

y-perimetri

Gjatë thirjes së procedurës ,parametrat formal janë zavendsuar

me parametrat aktual ,duke pasur kujdes që të ruhetv rradha ,

tipi dhe numri i tyre.,zavensimi është si më poshtë.

Parametrat formal                                              parametrat aktual

                                                                RRETHI(PI,r,s,p) RRETHI(PI,5.0,s,p)

..........................................................................................................

                a                                                              r                                               5.0

                p                                                              PI                                            PI

                x                                                              s                                              s

                y                                                              p                                              y

..........................................................................................................

parametrat formal mund të jenë të njëjt me parametrat aktual ,

te programi i dhënë më sipër ,rezulltati nuk do të ndryshoj aspak

nëse shfrytëzohet deklarimi deklarimi i procedures

Procedure RRETHI(PI,r:Real;Var s,p:Real)

                                Begin

                                   S:=PI*sqr(r);

                                   P:=2*PI*r;

     End;

}

 

{PROGRAMI I STRUKTURUAR -DETALIZIMI HAP PAS HAPI

         ekzistojnë metoda të ndryshme me të cilat bazohet

ndërtmi i programit. Në programin e strukturuar,me rastin e

ndërtimit të programit Përdoret metoda lart posht(Top-down

disgn. Kjo metod bazohet në krijimin e programit ashtu që

ai zbërthehet në një varg modulesh të cilët ndërmjet veti

lidhen.Në të vërtet ,fjala është mbi detalizimin hap pas hapi

të përshkrimit të një zgjidhje globale

 

   Nga një tërsi komplekse fitohen nëntërsit të cilat

   janë të nevojshme dhe më tutje të zbërthehen derisa të

vie deri te niveli i gjuhës programuese.Strukturat komplekse

për secilin hap të detalizuar(profiluar)shprehen përmes

strukturave të thjeshta -derisa të mos arrihet deri te strukturat

primare që janë prezente(që ekzistojn) në gjuhën programuese

 

         Për përshkrim Global të programit zakonisht përdoret

ndonjë tip i pseodo gjuhës,pra gjuhës folëse e cila përshtatet

në gjuhën programuese në të cilën programi do të shkruhet.

Për këtë qëllim në pseudo-gjuhën zakonisht përdoren strukturat

primare të cilat ekzistojnë dhe në gjuhën Programuse në të cilën

shprehet (shkruhet) programi .Rregullat sintaksore të

Pseodo-gjuhës ,sipas rregullit ,nuk janë strikte si në gjuhën

programuese

 

           Të gjithë Modulet e Përgjithëshme shkruhen me ndimën

e pseodo-gjuhës .Modulet finale Me rastin e procedurës të detalizimit

shkruhen mendimën e gjuhës programuese në të cilën shprehet programi

         Që të skjarrojm procedurën e detalizimit të programit

hap pas hapi,do ta shkoqitim një shembull konkret

SHEMBULL:- shkruani programin për

           leximin e një varg të dhënash :

            

         shifra e shtëpisë së mallrave ,sasia e mallit të shitur,çmimi

         sipas njësisë matse derisa të mos largohemi prej fajllit hyr

         ës

        Shtypja e raportit i cili përmban shifrën e shtëpisë së mallrave

         dhe fitimin total në bazë të të dhënave hyrëse

supozohet se fajlli   hyrës të mos jet i zbrazt.

ZGJIDHJE :

         ZGJIDHJE shumë e përgjithëshme e detyrës së parashtruarështë:

 

         SHTYPJA e fitimit total për secilën shtëpi të mallrave ,të prezentuara

         me shifra ,në bazë sasisë dhe çmimit për njësin matëse për

         lloje të ndryshme të mallit

Në të vërtet këtu detyra e parashtruar është vetëm ndryshe e formuluar.Me

rëndsi është me rastin Kso lloj paraformulimeve të mos ndrrhoet kuptim

i detyrës së shtruar.

 

Në përgjithësi detyrën e parashtruar mundemi ta shprehim më detalisht

me ndimën e tre moduleve

1) leximi i të dhënave hyrëse

2) PëRPUNIMI i të dhënave hyrëse dhe FORMIMI i të dhënave dalëlse

3) SHTYPJA e të dhënave dalëse

 

dhe kjo zgjidhje akoma është e përgjithshme , dhe duhet qasur detalizimit

të moduleve .Mirpo më parë është e nevojshme të definohen të dhënat me

të cilat operohet .Tri të dhënat hyrëse: shifra ,sasia dhe çmimi për

njësi matëse përbëjnë një lloj tërsie .Këto të dhëna mund ti Baashkojm

në jë rekord të cilin mund ta definojm në mënyrën si në vazhdim

 

   RekordiHyres= Record

                   shifra:0..Maxint;

                   sasia : Real

                   cmimi : Real

                 End;

   Kemi Supozuar se shifra është numër i plot jo negativë ,Ndërsa sipas

   natyrës së gjërave sasia dhe cmimi janë numra real

 

Më e përshtatshme është që dhe të dhënat dalëse të trajtohen si një rekord

Prej dy komponeneteve .Shifra e shtepisë së mallrave dhe fitimi. Shifrat

e Njërës shtëpi të mallrave munden shumëher të lajmrohen në hyrje ,gjerësa

në dalje duhet lajmrohet vetëm njëher. Sipas Kësa secili rekord hyrëse duhet

të ruhet -që të mundësohet përpunimi i tij .Më e Përshtashme është që rekordet

Hyrëse dhe dalëse të vendosen në dy vektor dhe të ruhet numri i antarve të

këtyre vektorve (Vargjeve)

 

Tani mund tju qasemi detalizimit të matutjem të module të mëparme.

MODULI   1 detalisht përshkruet në mënyrën si në vazhdim

(1.1) Tju ndaj 0 numrin e rekordeve hyrëse.

(1.2 ) Derisa të mos haset Fundi i fajllit hyrës BëNI sinë vazhdim:

(1.3 RRITNI numrin e rekordeve hyrëse për 1.

(1.4) LEXONI KOMPONENTET e tjetrit rekord hyrës.

 

Të gjitha "urdhërat" e mëparshëm të Pseodu-kodit (1.1)-(1,4) mund të

shprehen në pascal .Nëse me m shënojm numrin e rekordeve hyrëse ,ndërsa

me H[m] rekordi i m -të hyrës ,pseodo-kodin e mëparshë

me ndimën e pascalit e shkruajm në mënyrën si në vazhdim

m:=0;

While Not eof Do

   Begin

     m:=m+1;

     ReadLn(H[m].shifra ,H[m].saisia .H[m].cmimi

   end;

 

 

   Thën ndryshe ,kemi ardhur deri te një modul final,d.m.th

   deri te një procedur në pascal

 

   Procedurë të ngjajshme të detalizimit e zbatojm për modulin

   (2) dhe (3). Pasi është prejedikuar se ekziston së paku një

   rekord hyrës ,Detalizimi imodulit (2) fillon me formimin

   e rekordit të parë dalës në bazë të të parit hyrës:

 

   (2.1) shifren e rekordit të parë NDAJA shifrës së atij të parë

   Dalës.Saisin e rekordit të parë hyrës shumzone me çmin dhe

   NDAJA shumës të rekordit të dytë.

   (2.2) nËSE numri i rekordeve hyrëse është më i madhë se 1 ATËHERE

   (2.3) PËRPUNO secilin rekord hyrës prej 2 deri te i fundit

 

   Hapat (2.1) dhe 2.2 mund të shprehen në pascal,Hapin (2.3), megjë that

   zbërthim duhet dhe mëtutje përpunu

   Hapin(2.3) në program është përshkruar meprocedurën llogaritje dhe

   kështu mund ta Përshkruajm me pseodu-kod

 

   (2.3.1)Për secilin rekord dalës Bëni:

 

   (2.3.2) NËSE ekziston shifra e rekordit hyrës ATËHERE

   (2.3.3.) shumzoni sasin dhe çmimin e rekordit hyrës dhe ndanja

             shumës të rekordit dalës

(2.3.4 Nëse nuk ekziston shifra e rekordit hyrës në asnjë dalës ATËHERE

2.3.5 formoni rekord të ri dalës dhe rritni numrin e rekordit dalës

për 1

 

       Me këtë kemi arritur deri te niveli i pascalit .Kujtojm se

       në praktik nuk bëhet detalizimi deri në këtë shkallë.Detalizimi

i hapit (2.3) nga moduli (2) mund të bëhet direkt në pascal

Moduli (3) përmes pseodo kodit shprehet në mënyrën si në vijim:

 

(3.1) SHTYPNI KOKëN përkatëse .

(3.2) PËR secili rekord prej 1 deri te i fundit:

(3.3) shtypni shifren dhe shumën

 

Me lidhjen emoduleve të përshkruara vie deri te programi

final i cili ka struktur kiarekike

}

 

Uses wincrt;

{llogaritet fitimi total i seciles shitore ne baze:}

{shifra e shitores,sasia e mallit dhe cmimi i mallit per njesi}

Const n=200;

Type

   RekordHyr=Record

                 shifra:0..maxint;

                 sasia:Real;

                 cmimi:real

             End;

   Rekorddal=Record

                 Shifra:0..maxint;

                 shuma:Real

             End;

   Vektorihyr=Array[1..n] of Rekordhyr ;

   Vektoridal=Array[1..n] Of Rekorddal;

   derien=0..n;

Var

   h:Vektorihyr;

   s:Vektoridal;

   m,k:Derien ;

(*---------------------------------------------------------*)

Procedure hyrje( Var h:vektorihyr;Var m:derien);

begin

   WriteLn('jepni ,sipas rradhes,shifra e shitores,sasia dhe çmimi');

   m:=0;

   While Not eof Do

     begin

       m:=m+1;

       Readln(h[m].shifra,h[m].sasia,h[m].cmimi)

     End

End; {hyrja}

Procedure perpunimi(Var s:VektoriDal;h:VektoriHyr;m:derien;Var k:derien);

     Var i:derien;

     Procedure llogaritje(P:RekordHyr;Var s:Vektoridal;Var k:derien);

       Var ind:Boolean;

         j:derien;

       Begin

         ind:=True;

         For j:=1 To k Do

           iF p.shifra=s[j].shifra then

             Begin

               s[j].shuma:=s[j].shuma +p.sasia*p.cmimi;

               ind:=false

             end;

           if ind Then Begin

                         k:=k+1;

                         s[k].shifra:=p.shifra;

                         s[k].shuma:=p.sasia*p.cmimi

                       End

       end;{llogaritja}

     (*---------------------*)

   Begin {perpunimi }

       s[1].shifra:=h[1].shifra;

       s[1].shuma:=h[1].sasia * h[1].cmimi;

       k:=1;

       If m>1 Then

               For i:=2 To m Do

                 llogaritje(h[i],s,k)

   End; {Perpunimi}

   {*****************************************************************}

   procedure shtypje(s:Vektoridal;k:derien);

     Var i:derien;

       begin

         Writeln;

         WriteLn('fitimi total per secilen shitore');

         Writeln;

         writeln('shifra e shitores       fitimi') ;

         writeln;

         For i:=1 to k Do

         WriteLn(s[i].shifra,'         ',s[i].shuma)

       end;{shtypja}

   {***************************************************************}

                       {PROGRAMI KRYESOR}

   {***************************************************************}

   begin

         hyrje(h,m);

         perpunimi(s,h,m,k);

         shtypje(s,k)

{RANGIMI I KANDIDATVE PËR REXHISTRIM NË FAKULTET

shkruani programin për formimin e ranglistes së kandidatve

të cilët kanë konkuruar për tu rexhistruar në fakultet

   prej fajllit hyrës së pari lexohen numri i kandidatve,dhe

   më pas për secilin kandidat të dhënat si në vazhdim

   -Emri dhe mbiemri (me gjatsi 25 shenja)

   -4 notat të lëndës kryesore prej 4 klasve të shkollës së

   mesme,si dhe nota të provivimit të maturës të shkollës së mesme

   (Këto Të dhëna Mund Të mirren numra të plot prej 2..5

   -Numri i poenave në provimin pranues (prej 0 deri 25

Rang-Lista formohet në bazë Të numrit Total i cili fitohet

me mbledhjen e notave të provimit kryesor nga katër klasët

e shkollës së mesme ,notës të provimit Të maturës në shkollë të mesme

dhe numrit Të poenave që ka arritur në provimin Pranues.Dhe

shtypet rang lista

ZGJIDHJE

       sipas detyrës së parashtruar,një kandidat karakterizohet

me të dhënat si në vazhdim

   1-emri dhe mbiemri

   2-notat e lëndës kryesore në shkollë të mesme dhe nota e provimit të maturës

   3-numrit të poenave provimin pranues

   4-numrit total të poenave

   Më e përshtashme është që këto Të dhëna të grupohen në një rekord në

   formën(Në vazhdim në vend të fjalës kandidat do të përdorim fjalën

   student) Studenti=Record

             emri:EmriStud;

   L1,L2,L3,L4,PM:2..5;

             para:0..25;

               s:10..50

           End

 

   këtu lajmrohet tipi i padefinuar EmriStud Ky tip lypset që më parë

   të definohet si paket string prej 25 shenjave.Në këtë mënyrë kemi

   përcaktuar gjatësin maksimale tëemrave dhe nëse emri është më i shkurt

   nevojitet të plotësohet me zbrastira -nëse emri është më i gjatë duhet

   shkurtuar

   Të dhënat mbi kandidatët (studentënt) i ruajmë në një varg(vektor)

   Rekordesh Algoritmi global mund të shkruhet në mënyrën si në vazhdim

1. LEXOHET numri i studentve(me shenjën n)

2.KUR i ndryshon prej 1 deri n

3.LEXOHEN të dhënat mbi I-tin student

4.LLOGARITEN numri total i poenave të studentit të i-të

5.RENDITJA e vektorit me rekorde me rendije jo rritëse sipas

numrit total të poenave

6.shtypja e kokës

7.KUR i ndryshon prej 1 deri n

8.SHTYPEN të dhënat e studentit të i-Të

Në përshkrim global të algoritmit , hapat 1,2,6,7 realizohen drejtpërdrejt

në Pascal.Hapat 3,4 dhe 8 realizohen përmes procedurave të thjeshta të

cilat menjëher shkruhen në pascal.Secila nga këto procedura ka nga një

rekord hyrës student

Hapi i 5 stë është më i komp.komplikuari.Në këtë hapë duhet renditur rekordet

ashtu që numri i poenave sipas rekordeve të jetë jo rritës(Nëse dy ose

më shumë studenta kanë të njejtat poena ,renditen sipas rradhës)Sortimi

i rekordeve bëhet me procedurë

n renditje }

Program ranglista(input,output);

Uses wincrt;

{Rang lista e kandidatve per rexhistrim ne fakulltetet}

Type

Nr=1..50;

EmriStud=Packed Array[1..25] Of Char ;

Studenti=Record

             emri:EmriStud;

   L1,L2,L3,L4,PM:2..5;

             para:0..25;

              s:10..50

           End;

   VektoriStudent=Array[Nr] Of Studenti;

Var

i,n:Nr;

ListStud:VektoriStudent;

Procedure Leximi(Var Stud:studenti);

Var

   i:1..25;

Begin

   WriteLn('EMRI I STUDENTIT         ,L1, L2, L3, L4, PM, PARA ?');

   With Stud Do Begin

                   For i:=1 To 25 do Read(emri[i]);

                   Read(   L1,L2,L3,L4,PM,PARA)

                 END;

   Readln

End; {leximi}

Procedure llogaritje(Var Stud:Studenti);

   begin

     with stud Do s:=L1+L2+L3+L4+PM+PARA

   END;{LLOGARITJE}

pROCEDURE Renditje(Var lista:VektoriStudent;n:Nr);

Var

   i,j:Nr;

   StudNdimes:Studenti;

begin

   For i:=1 To n-1 Do

     For j:=i+1 To n Do

     If Lista[i].s <lista[j].s

       Then Begin

               StudNdimes:=Lista[i];

               Lista[i]:=lista[j];

               Lista[j]:=StudNdimes

             End

End;{ renditja}

Procedure Shtypje (k:Nr;Stud :Studenti);

     Begin

       With Stud Do

         Write(k:2,'. ', Emri,L1:3,L2:3,L3:3,L4:4,PM:3,PARA:4,S:6);

         writeln

     End;{shtypja}

 

Begin{Programi kryesor}

     Writeln('RANG-LISTA E STUDENTVE');

     writeln('jepni te dhanat per studentet');

     Writeln;

     write('sa studenta?');readln(n);

     For i:=1 to n Do Begin

                         leximi(listStud[i]);

                         llogaritje(ListStud[i])

                       End;

     Renditje(ListStud,n);

     writeln;writeln;

     writeln('NR.   EMRI E MBIEMRI (L1 ,L2 ,L3 ,L4, PARA) SHUMA');

     writeln;writeln;

     For i:=1 To n Do shtypje(i,liststud[i])

End.{ranglista}

 

{POINTERËT -TREGUESIT

shumica e ndryshoreve të deklaruara ,kryesisht paraqesin

madhësi statike të pa ndryshueshme ,dhe memoria që ju ndahet

mbetet në pronë të tyre prej fillimit deri në fund të ekzekutimit

të programit.Mirpo në kuadër të memories dinamike (Heap)

vendosen tipet dinamike të të dhënave të njohura si terguesit-

ang pointer .

   Ndryshoret treguese -pointerët kanë natyrë dinamike ,sepse

   mund të krijohen dhe të shkatrrohen gjatë ekxekutimit të

   programit.Shkurt , tipet e ndryshme të ndryshoreve munden

më shumë herë të përdorin të njejtën memorie.

   Përdorimi i pointerëve zgjeron hapësirën e kujetesës që mund të

përdoret për të dhënat në kuadër të programit.Përdorimi i mundëson

që programi të ekzekutohet me hapsirë më të vogël të kujtesës

   pointerët nuk i mbajnë të dhënat njësoj si tipet tjera të

ndryshoreve .Në fakt ky tip i ndryshoreve në vend të vlerave

ruajn lokacionet gjegjësisht adresën e vlerës së vërtet .P.sh.,Nëse

kemi ndryshoren p,e cila ruan adresën e ndryshores së tipit integer

,atëhere p mund të përdoret si tregues në ndryshoren e tipit integer,

edhepse p vetvetiu nuk është e tipit integer.

P.sh

   .......

   p:^Integer;

   i:Integer;

Kur programi fillon ekzekutimin ,kujtesa dinamike është e zbrazt.Para se të

përdoret pointeri p, duhet dhën urdhërin New(p) i cili urdhëron Turbo Pascalin

që tia ndaj një adres në kuadër të kujtesës dinamike.

   urdhëri Dispose(p) kryen funksionin e kundërt(zbrazjen) .Ndryshorja

që ndodhet në kujtesën dinamike mund të përdoret në shprehjet dinamike

dhe të shoqrimit duke shtuar simbolin ^ pas ekzekutimit p.sh

     p^:=100;

     Simboli ^ i tregon pascalit se ka të bëj me ndryshoren e cila ndodhet

   në kujtesën dinamike .

   .......   PËRDORIMI I OPERATORIT @ dhe ^.................

   kur kryhen operacione me adresa ,shpesh nevojitet që ponterit t'i

   ndahet adresa e ndonj@ ndryshore ose procedure.Kjo realizohet me anë

të operatorit @ ,i cili jep adresën e identifikatorit i cili pason.P.sh.

nëse A është varibël integer atëhere @A tregon lokacionin e variblas

A në kujtesë

ose Me operatorin @ merret adrresa ku është vendosur variabla në kujtesën

e kompjuterit.Nëse p.sh në një program është përdorur variabla k ,me @k

gjindet adresa(lokacioni) i kësaj varible në kujtesë ,kurse p.sh

Varibla T është pointer i tipit Char, me T^gjindet karakteri ku tregon

   pinteri T

   Shembull:Tregimi i pointerit dhe operatorit @ ose funksionit addr}

Program Adresa ;

Uses Crt;

Type

B_Varg=Array[1..2] Of Byte ;

Var

                i:Word;

                b:^B_Varg;{b-tregues pointer në vargun prej dy bajtave }

       T:^Char;

       a:char;

Begin

 

                i:=0;

                b:=@i;{ky urdhër shkakton që b të shënjoj në B_varg}

                WriteLn(b^[1]:4,b^[2]:4); {b^ behet ri-itepretues i vleres

       Byte sikurse te ishte nje array[0..1] of byte}

                WriteLn;

       a:='a';

       T:=@a;

       a:=^T;

       writeln('a=',a)

                                                                                                                  

               

End.