online kép - Fájl  tube fájl feltöltés file feltöltés - adja hozzá a fájlokat online fedezze fel a legújabb online dokumentumok Kapcsolat
   
 

Letöltheto dokumentumok, programok, törvények, tervezetek, javaslatok, egyéb hasznos információk, receptek - Fájl kiterjesztések - fajltube.com

 

Online dokumentumok - kep
   
kategória
 

Biológia állatok Fizikai Földrajz Kémia Matematika Növénytan Számítógépes
Filozófia
Gazdaság
Gyógyszer
Irodalom
Menedzsment
Receptek
Vegyes

 
 
 
 













































 
 

A Pascal program szerkezete

számítógépes

Fájl küldése e-mail Esszé Projekt


egyéb tételek

 
Access 2000 kezdő
Halózati operaciós rendszerek
MemórIak-tarak
Objektumok mozgatasa
VOIP RENDSZERTECHNIKÁK
A MESTERSÉGES INTELLIGENCIA MÓDSZEREI A PROGRAMOZHATÓ AUTOMATÁKBAN
A PowerPoint program
PÉLDÁK PLC ALAPÚ IPARI AUTOMATIZÁLÁSRA
A relaciós adatmodell, kulcsok
A LEGFONTOSABB SZÁLLÍTÓK ÉS TERMÉKEIK ÁTTEKINTÉSE
 
 

A Pascal program szerkezete

A Pascal programot három fõ részre oszthatjuk:
    - programfej
    - deklarációs rész
    - programtörzs

1. Programfej: Mindössze esztétikai célokat szolgál. Itt adhatjuk meg egy szóban a program nevét. Nem kötelezõ szerepelnie a programban.

2. Deklarációs rész: A Pascal nyelv erõsen típusos nyelv, ami azt jelenti, hogy egy programban minden változót, melyet használni szeretnénk deklarálnunk kell, azaz elõre meg kell határoznunk a nevét és a típusát. Ezek a jellemzõk kés& 252d39c otilde;bb a program futása alatt természetesen nem változhatnak. A deklarációs részben történik a használni kívánt változók felsorolása, illetve típusuk meghatározása. Ezen kívül a deklarációs részben szerepelnek a program futása során alkalmazott konstansok (állandók), az általunk létrehozott típusok, az általunk létrehozott eljárások, függvények, és az ugró utasítás esetén alkalmazott címkék is. A deklarációs részhez szokás kapcsolni a unit-ok hívását is.

3. Programtörzs: Másnéven végrehajtási rész. A programtörzs tartalmazza a program utasításait.


program Programnév;




uses Unit_1, Unit_2, ..., Unit_n;


label Cimke_1, Cimke_2, ..., Cimke_n;


type Tipus1= tipusleírás1;
     Tipus2= tipusleírás2;


const Konstans1= érték1
      Konstans2= érték2;


var Változó1: tipus1;
    Változó2: tipus2;


function Függvény1[(Paraméterlista)]: Tipus1;


procedure Eljárás1[(Paramáterlista)];



begin
   utasítás_1;
   utasítás_2;
     .
     .
     .
   utasítás_n;
end.

    A programon belül majdnem bárhol elhelyezhetünk magyarázó szöveget, megjegyzést. A megjegyzések olvashatóbbá teszik a programot, érdemes rászokni a használatukra. A néhány szóból álló magyarázó szöveg nagyon megkönnyíti a program esetleges késõbbi módosítását. A megjegyzést vagy (*...*) zárójelek között kell elhelyezni a programsorok között.
 

Néhány szóban a unit-okról:

    A Pascal nyelv utasításkészlete viszonylag kevés utasításból épül fel, mégis igen sokoldalúak a nyelv által biztosított lehetõségek. A nyelv ugyanis a kevés utasítás mellett rengeteg eljárást és függvényt biztosít számunkra.
    A unit-ok feladata az eljárások, függvények tárolása. Ezek az elõre definiált eljárások, függvények szerves részét képezik a Turbo Pascal rendszernek, alapvetõ mûveleteket végeznek (írás a képernyõre, olvasás a billentyûzetrõl, a képernyõ törlése, stb.). A unit-ok csoportokba szedve tartalmazzák az eljárásokat, függvényeket (például: a Graph unit-ban található az összes olyan eljárás és függvény, amely a grafikus képernyõ kezelését végzi), nekünk csak azokat a unit-okat kell beépíteni a programunkba, amelynek az eljárásait, függvényeit használni szeretnénk. Ezeket a unitneveket kell megadnunk a Uses kulcsszó után.
 

Címkék:

    A Pascal programban használhatjuk (bár nem célszerû) a Goto utasítást, amely az általunk megadott címkéhez ugrik, itt folytatva a program végrehajtását. A programban elhelyezni kívánt címkéket szintén elõre deklarálni kell a Label kulcsszó után. A címkéket egyszerûen fel kell sorolnunk. Címke azonosítóként nem használhatjuk a foglalt szavakat.
 

Típusdeklarációk:



    A Pascal nyelv lehetõvé teszi, hogy saját magunk állítsunk elõ új adattipusokat a standard adattipusok felhasználásával. Az általunk elõállított típusok kapnak egy azonosítót, amellyel a változók (tipusos konstansok) deklarációja során erre a tipusra hivatkozni tudunk. Azonosítóként nem használhatjuk a foglalt szavakat.

Példa:
    Program pelda;
    Type Szamtomb= array [1..10] of Integer; 

    Var A: Szamtomb;
           I: Byte;
    Begin
       For I:=1 to 10 do
            Begin
                Writeln('A(z) ', I, '. szam: ');
                Readln(A[I]);
            End;
        .
        .
        .
    End.
 

    A példában egy 10 elemû Integer értékeket tartalmazó tömböt definiáltunk Szamtomb azonosítóval. A saját típusok áttekinthetõbbé teszik a programot, amennyiben bonyolult tipusokkal dolgozunk.
    A tipusdeklaráció jelentõsége azonban a függvények, eljárások alkalmazásakor tapasztalható. A függvények, eljárások paraméterei, és visszatérési értéke csak egyszerû tipus lehet. Hogyan adhatunk át egy 10 elemû tömböt mégis egy függvénynek:

Példa:

Program Osszegez;

Type Szamtomb= Array [1..10] of byte;

Var A: Szamtomb;

Function Sum(T: Szamtomb): Integer;
Var I: Byte;
      O: Integer;
begin
    O:= 0;
    For I:= 1 to 10 do
        O:= O+T[I];
    Sum:= O;
end;

begin
       For I:=1 to 10 do
            Begin
                Writeln('A(z) ', I, '. szam: ');
                Readln(A[I]);
            End;
       Writeln('A tomb elemeinek osszege: ', Sum(A));
end;
 

    Programunkban a Sum függvény segítségével összegezzük a beolvasott A tömb elemeinek értékét, majd kiiratjuk az eredményt. Ha a Sum függvény deklarációjánál összetett tipust alkalmaztunk volna, hibaüzenet keletkezett volna a fordítás közben. Rossz példa (így soha!!!):
    Function Sum(T: Array [1..10] of Byte): Integer;

    Látható tehát, hogy a problémát csak úgy lehetett megoldani, hogy egy saját tipust deklaráltunk hozzá, amelyet a fordító már egyszerû tipusként értelmez.
 

Konstansok:

    A konstansok segítségével szintén áttekinthetõbbé tehetjük a programunkat. A konstansok értéke a program futása során nem változhat meg. Olyan értékeket célszerû (és ésszerû) konstansként deklarálni, amelyek a program során többször is elõfordulnak. Konstans azonosítójaként nem alkalmazhatjuk a foglalt szavakat.

Példa: Számítsuk ki az R sugarú kör kerületét és területét !

Program Kor;
Const PI= 3.14;
Var R: Real;
      K, T: Real;
Begin
    Write('A kor sugara: ');
    Readln(R);
    K:= 2*R*PI;
    T:= R*R*PI;

   
   

    Writeln('A kor kerulete: ', K:8:2);
    Writeln('A kor terulete: ', T:8:2);
End.
 

    A példában a PI értékét konstansként definiáltuk, ezzel a programunkat olvashatóbbá téve.
 
    A konstansok és a változók közötti másik fontos különbség (amellett, hogy a konstansok értéke nem változhat) a memóriában való tárolás során jelentkezik. A változók az adatszegmensen vagy a veremben jönnek létre, aszerint, hogy a fõprogram, vagy egy alprogram használja õket. Ezzel szemben a konstansok a kódszegmensben kerülnek elhelyezésre.
    A fenti szabály alól egyetlen kivétel a tipusos konstans, amelyet tulajdonképpen kezdõértékkel ellátott változónak tekinthetünk. Értéke a program futása során megváltozhat, de - a változókhoz hasonlóan - csak a tipus által meghatározott értékeket vehet fel. A tipusos konstans deklarálása a többi konstanssal együtt történik. Példa:

    Const A=10;
              B=11;
              PI=3.14;
              J: Byte= 1;

    A végrehajtási részben a J azonosítót úgy használhatjuk, mint bármely deklarált változót, annyi különbséggel, hogy J már rendelkezik kezdõértékkel, míg a válzozók értéke határozatlan (amíg a fõprogramon beül nem adunk nekik kezdõértéket).
 

Változók deklarálása:

    A program során használni kívánt változókat deklarálnunk kell, azaz meg kell határoznunk a változó tipusát. A változó tipusa befolyásolja, hogy a fordító a memóriában mennyi helyet foglal a változó számára, illetve azt, hogy milyen értéket kaphat a változó a program futása során. A változók deklarációja a Var kulcsszóval bevezetett részben történik. Formája:
    Var azonosító: tipus;
Tehát elõször a változó azonosítóját kell meghatároznunk, majd kettõsponttal elválasztva a tipusát. A változók tipusa csak (a fordító számára) ismert tipus lehet, azaz ha a változó tipusa nem a standard típusok közül kerül ki, a saját tipust elõzõleg deklarálni kell. (Lásd a tipusdeklarációknál.) A változók azonosítójaként nem alkalmazhatjuk a foglalt szavakat.



Példa:

    Var A: integer;
           S: string;
           I: byte;
 

Függvények, eljárások:

    Az alprogramok delkarálása (definiálása) szintén a delkarációs részhez kapcsolódik. Ha a programunkat modulárisan szeretnénk felépíteni, akkor az egyes részfeladatok elvégzését külön eljárások, függvények segítségével végezzük. A deklarációs részben (tehát a felhasználási rész, a fõprogram elõtt) deklarálnunk kell legalább az eljárások, függvények fejét. A fõprogramban csak olyan függvényeket, eljárásokat hívhatunk meg, amelyeknek már legalább a neve ismert a fordító számára. A függvények neve nem lehet foglalt szó, és általában nem célszerû a standard unit-ok függvényeinek nevét alkalmazni, mert ezesetben csak speciális módon tudjuk megkülönböztetni a két függvényt (eljárást). Általában az alprogramok fejével együtt a deklarációs részben történik az alprogram törzsének (végrehajtási részének) kifejtése. Példa:


Program Eljárások;


Var A, B: Integer;

Procedure Kivonas(X, Y: Integer);
Begin
    Writeln('A ket szam kulonbsege: ', X-Y);
End;

Procedure Osszeadas(X, Y: Integer);
Begin
    Writeln('A ket szam osszege: ', X+Y);
End;


begin
    Write('Az elso szam: ');
    Readln(A);
    Write('A masodik szam: ');
    Readln(B);

    Osszeadas(A, B);
    Kivonas(A, B);
end.
 

A példában két eljárást definiáltunk, amelyek a képernyõre írták két szám összegét, illetve különbségét. Az eljárások végrehajtási részét itt a deklarációs részben írtuk meg, közvetlenül az eljárás fejrésze után. A megoldás mûködik, de nem igazán elegáns.
    Áttekinthetõbb programot kapunk, amennyiben kihasználjuk a Forward opció által biztosított lehetõségeket. Ha az alprogram fejrészének deklarációja után szerepel a Forward kulcsszó, akkor nem kötelezõ azonnal definiálnunk az alprogram végrehajtási részét, ezt bármikor megtehetjük a program késõbbi részeiben, de a fõprogram blokkja, a végrehajtási rész elõtt. Ez a lehetõség szintén az esztétikai szempontok miatt lehet elõnyös, amikor egy nagyobb programot írunk.

Példa:
Olvassunk be 3 nevet egy tombbe! Alakitsuk at a neveket csupa nagybetus formara, majd irjuk ki oket. Az atalakitast es a kiirast egy eljaras segítségével oldjuk meg!

Program Eljaras2;
Type Tomb: Array [1..3] of String;

Procedure NagyBetu(T: Tomb); forward;

Var A: Tomb;
       I: Byte;

Const   Fejlec1= 'Kerek harom nevet';
            Fejlec2= 'A beolvasott nevek nagybetuvel irva:';

Procedure NagyBetu(T: Tomb);
Var J, N: Byte;
      K: Tomb;
Begin
   
    For J:= 1 to 3 do

       
        For N:=1 to length(S) do
            K[J][N]:= UpCaseT[J][N];

   
    For J:=1 to 3 do
        Writeln(K[J]);
End;


Begin
    ClrScr;
    Writeln(Fejlec1);
    For I:= 1 to 3 do
        Begin
            Writeln('Az', I, '. nev: ');
            Readln(A[I]);
        End;

    ClrScr;
    Writeln(Fejlec2);
    NagyBetu(A);
End.
 

A programtörzs:

    A program végrehajtási részének is nevezhetjük, lényegében itt írjuk le, hogy mit fog csinálni a programunk, hogyan és mire használja fel a deklarációs részben deklarált változókat, konstansokat, alprogramokat. Nagyon fontos, hogy a fõprogram mindig a Pascal program végén helyezkedik el. A fõprogram egy Begin utasítással kezdõdik és egy End utasítással zárul. Fontos: a fõprogram végét jelzõ End utasítás után minden esetben pontot kell tenni pontosvesszõ helyett, mivel ez jelzi a Pascal program végét a fordító számára.
 

A Pascal programban minden utasítás végére pontosvesszõt kell tenni, kivétel a Begin utasítás, amely egy blokk kezdetét jelzi, és a fõprogramot záró End utasítás, amelynek a végére pont kerül.
A Pascal programban vegyesen használhatunk kis és nagybetûket, a Pascal fordító ezeket nem különbözteti meg.
 



: 721