Pascal
Országok listája
Hungary
Nyíregyházi Főiskola
Természettudományi Főiskolai Kar
Programozó matematikus
Záróvizsga
Pascal
2009.02.01 19:29:57
Az alábbi szöveg egy formázás és képek nélküli előnézete a dokumentumnak. A tökéletes megjelenítéshez jelentkezz be, majd töltsd le a dokumentumot.
10. Turbo Pascal
(program szerkezete, adattípusai, utasításai)
A Pascal programok három részbQl állnak:
Programfej: a program kulcsszóval kezdQdik, majd egy azonosító követi (példánkban Bankett), pontosvesszQvel zárjuk le. Nem kötelezQ, de célszerq a használata.
Deklarációs rész: itt kell felsorolnunk a program következQ, végrehajtó részében használt programelemeinket. Uses (unitok), const (konstansok), type (típusdefinciók), Label (címke), var (globális deklarációk). A példában az adatok tárolására szolgáló változókat deklaráltuk, a var kulcsszót követQen. A változók azonosítóinak vesszQvel elválasztott felsorolása mellett kettQspont után megadtuk azok típusát is (integer).
Végrehajtó rész: utasítások sorozatából áll, amelyek a programozási feladat algoritmusát valósítják meg. A begin kulcsszóval kezdQdik, és az end kulcsszóval, valamint egy ponttal zárul. Láthatja a példaprogramban, hogy minden utasítást pontosvesszQvel zártunk le. Ez egy kis félreértésre adhat okot, hiszen a pontosvesszQ nem az utasítások lezárására, hanem egymástól való elválasztására szolgál. Az utolsó utasítás (ReadLn) után el is hagyhattuk volna. SQt vannak olyan helyzetek, amikor nem szabad az utasítást pontosvesszQvel lezárni.
A Pascal program szerkezete:
program programnév;
uses unitok; {A deklarációk kezdete.}
const konstansok;
type típusdefiníciók;
label címke;
var globális deklarációk;
procedure eljárásnév(paraméterek);
lokális deklarációk
begin
utasítások
end;
function függvénynév(paraméterek): visszatérési típus;
lokális deklarációk
begin
utasítások
end;
{A deklarációk vége.}
{A fQprogram blokkjának kezdete.}
begin
utasítások
end.
{A fQprogram blokkjának vége.}
A Pascal nyelven a fQprogram blokkjában lévQ utasítások kerülnek végrehajtásra. Ha ezek eljárás és függvényhívásokat is tartalmaznak, akkor az eljárások és függvények blokkja is végrehajtódik. Minden azonosítót - konstanst, címkét, típust, változót, eljárást és függvényt deklarálni kell.
program pelda;
var i, j, k: integer;
function max(a, b: integer): integer; {Két egész közül a nagyobbat adja.}
begin
if a>b then max:=a
else max:=b;
end;
procedure csere(var a, b: integer); {Két egész számot felcserél.}
var temp: integer;
begin
temp:=a;
a:=b;
b:=temp;
end;
{A fQprogram.}
begin
i:=12;
j:=20;
writeln( Csere elQtt: i= , i:2, j= , j:2);
csere(i, j);
writeln( Csere után: i= , i:2, j= , j:2);
k:= max(i, j);
writeln( A nagyobb szám: , k:2);
end
A Pascal nyelv utasításai:
Az értékadó utasítás: változónév:= kifejezés;
A változó felveszi a kifejezés kiszámított értékét. A két oldalnak azonos típusúnak kell lennie.
A goto utasítás: goto label;
Feltétel nélküli vezérlésátadást valósít meg. A program végrehajtása a label címkénél folytatódik. Kerüljük a használatát. Helyette használjuk a break és continue eljárásokat.
Az eljáráshívás: eljárásnév(paraméterek);
Az eljáráshívás folyamán a hívott programrész végrehajtódik, majd a vezérlés visszakerül a hívás utáni utasításra.
Az utasításblokk:
begin
utasítás;
utasítás;
end;
Az utasításblokk egyetlen utasítássá fogja össze az általa közrezárt utasításokat. Pascal-ban utasításblokkban csak utasítás állhat. Ahol utasítás állhat, ott utasításblokk is állhat.
with utasítás: with rekordváltozó do utasítás;
Kényelmes hozzáférést biztosít a rekord mezQihez.
A feltételes utasítások:
A nyelv kétféle feltételes végrehajtási konstrukciót tartalmaz.
Egyszerq elágazáshoz: if logikai kifejezés then utasítás else utasítás;
Ha a logikai kifejezés igaz, a then utáni utasítás hajtódik végre, egyébként az else ág utáni utasítás. Az else ág opcionális.
Többirányú elágazáshoz:
case kifejezés of
konstans: utasítás;
konstans: utasítás;
else utasítások
end;
A kifejezés csak sorszámozott típusú lehet. A lista konstansok sorozata, amely tartalmazhat résztartományt is. Ha a kifejezés értéke megegyezik valamelyik konstanssal, a konstans után álló legfeljebb egy utasítás vagy utasításblokk kerül végrehajtásra, majd az end utáni sorra kerül a vezérlés. Egyébként az else után található utasítások futnak le. Az else ág opcionális.
A ciklusutasítások:
for változó:=kezdQérték to végérték do utasítás;
A változó értéke kezdQérték végértékig nQ.
for változó:=kezdQérték downto végérték do utasítás;
A változó értéke kezdQértéktQl végértékig csökken.
while belépésifeltétel do utasítás;
Amíg a belépésifeltétel igaz, végrehajtja az utasítást.
repeat utasítás until kilépésifeltétel;
Amíg a kilépésifeltétel hamis, végrehajtja az utasítást. Egyszer mindig lefut.
Pascal adattípusok:
Egyszerq típusok
Deklarálásuk: Var Változonev: Tipus ;
Egészek:
Byte 0..255 1 byte
Word 0..65,535 2 byte
ShortInt -128..127 1 byte
Integer -32,768..32,767 2 byte
Longint -2,147,483,648..2,147,483,647 4 byte
Számkonstansok pl.:8 ; const Valtozonev = 5;
Mqveletek:
+,- (elQjel)
*, +, - (a megszokott szorzás, összeadás, kivonás)
div egész osztás, pl. 13 div 3 = 4
mod maradékképzés, pl. 13 mod 3 = 1
Függvények, eljárások:
Inc(I, N) I értékét növeli N-el (inkrementálja), N elhagyható, abban az esetben 1-gyel növel.
Dec(I, N) I értékét csökkenti N-el (dekrementálja), N elhagyható, abban az esetben 1-gyel csökkent.
Randomize Paraméter nélküli eljárás, olyan programban, ahol véletlen számokat állítunk elQ a Random függvénnyel, általában egyszer meg kell hívnunk. Inicializálja (elQkészíti) a véletlen szám generátort.
Abs(I) Abszolút érték függvény.
Sqr(I) A paraméterének a négyzetét állítja elQ. Megegyezik I * I-vel, ha a paramétere egy hosszabb kifejezés, akkor célszerq használni.
Trunc(R) Úgynevezett konverziós függvény, valós paraméterét egész típusúvá konvertálja a törtrész levágásával.
X := 4.56;
A := Trunc(X) {A értéke 4 lesz, típusa egész}
Round(R) Úgynevezett konverziós függvény, valós paraméterét egész típusúvá konvertálja kerekítéssel.
X := 4.56;
A := Round(X) {A értéke 5 lesz, típusa egész}
Random(I) Egy véletlen egész számot állít elQ a 0..I-1 intervallumban.
Logikai:
Boolean True, False 1 byte
0 vagy 1 értéket vehet fel
Konstansok: True,False
Mqveletek: not, and, or, xor (fontos a zárójelezés)
Függvények:
Odd(I) Párosság vizsgálat. Visszatérési értéke igaz, ha I páratlan.
Karakter:
Char bármely ASCII karakter Pl: 'A' 1 byte
Konstansok: karakteres konstansok A vagy #65
Mqveletek: nincs olyan mqvelet, amelynek az eredménye is Char típusú Reláci"~ÐÒæt v
0
ê
ô
,
<
Z
j
v
z
°
²
´
\
z
ÌÚÜðôüþ - %&0267FHMUXYùòáÚÓÏÇÓÏÓÇÓÇÓÇÓÇÓÇÓÀÇÓÚÇÓÇÓǦÇÓÓÇÓÓÓÇÓÓÇÓÓÓÇÓhº ÞhSÉ5h¼&hSÉB*
ph°Ph¼&h
´hSÉ63h~ _hSÉ6B*CJOJQJ\aJnH phO½tH
h
´h85yh
´hSÉ5h
´
h
´hSÉ
h
´h
´ h~ _hT7CJOJPJQJaJ
h~ _hSÉ
h~ _h;ò5"~Ò
\
Ìô 2HUo§¹¾õ
õèÙÙÙÙÍͽÍÍÍÍÍÍÍÍÍÍÍÍÍ$$d ¤È ¤a$gd~ _
$
Æha$gd85y $
Æ
7Sa$gd85y
$d ¤Èa$gd~ _ $¤a$gd~ _Ymoxy§®¹¼¾ÆÇÒÓÞáóö
-$B D N P R h r ° 9?|} ¢ªµ¼¿ÆÇÈÉìíóôöûÿ#=÷ðèð÷ð÷ð÷èð÷èðèð÷ð÷ð÷ð÷èð÷èðÝÒèÒð÷èÝðËðÆèðèðèðèðèðè𻳨»èðèðèðèðèðh¼&h¼&B*
ph°Ph¼&B*ph3fÿh
´hSÉB*ph3fÿ hT75
h
´h85yh
´hSÉB*phÿh¼&hSÉB*
ph°Ph
´hSÉ5
h
´hSÉh
´hSÉ6B
!$:D P h r ° ² |}¢íó ]pvóóóóóóóóóóóóóóóóóóóóçóóóóó
$
Æha$gd¼&
$
Æha$gd85y=>?\]afnov(*Àêì
o
Ùá
h
´h85yh
´hSÉ6 hÆ53h~ _hSÉ6B*CJOJQJ\aJnH phO½tH h
´hSÉB*phÿh¼&hSÉB*
ph°P
h
´hSÉh
´hSÉ5h
´h¼&B*phÿh¼&h¼&B*
ph°Ph¼&B*ph3fÿh
´hSÉB*ph3fÿ3*:J¤À:À o
óóóóóóóóóóóëÛóÑóÑóÑóóóóó $ ¤xa$gdÆ$$d ¤È ¤a$gd~ _ $a$gd85y
$
Æha$gd85y
Âñ&XØh-3 L ^ r "H"ª"#j#Ð#$$Ø$v%%õéõéééõééééééõééõéõéõéõÙ$$d ¤È ¤a$gd~ _
$
Æha$gd85y $ ¤xa$gdÆãäæçï&XØ---
-,-.-6-8-H-J-R-T-d-3 I J L P Q Z [ ^ h p | "N"P"^"b"v"x"|"~"""""¦"#####0#<#>#N#P#T#V#f#Ð#Ú#Ü#ü#þ#$$ $$$$¦$¨$²$´$Ô$v%ùñùéùñùáùÝñéùñùéØñùéùáùÝñùéùñùéùéùñùéùñùñùéùéùñùéùñùéùñùéùéñùéùñùéùñùéùñùéùñùéùñùéù hÆ6hÆhÆhSÉ>*h
´hSÉ6h
´hSÉ5
h
´hSÉSv%%%%À%Ø%Ú%& &&8&9&'''-'((((((2(4(åË念¦¦¦o_UD<¦<¦<h
nhÍS
5 jh
nhÍS
UmHnHuhÆ!hÍS
56-hÆ!hÍS
5CJOJQJaJ"hÆ!hÍS
56CJOJQJaJh
nhÍS
CJOJQJaJhÍS
hÆ!hÍS
>*hÆ!hÍS
5>*
h
nhÍS
h;òhÍS
5h;òhÍS
56h;òhÍS
5CJaJ3h~ _h
´6B*CJOJQJ\aJnH phO½tH 3h~ _hSÉ6B*CJOJQJ\aJnH phO½tH %À%&&A&t&¤&×&''='(2((â(,)Z)*â*z,º,èàààààààÛÛÌÀÀÀÀà´´´À
$Ä^Äa$gd85y
$Ä`Äa$gd85y $
Æ
7Sa$gdÆ!gd85y $a$gd85y$
&
FÊþ¤x ¤x^Ê`þa$gd;ò 4(8(:(>(@(( (â(è(,)X)Z)l)n)***,*Â*Ä*â*ô*ö*|+~+&,(,z,,,º,Æ,È,Ê-Ú-Ü-T.. .¡.ý.A/B/J/0|000¸0º011,1.1F1X1Z1®1Ä1Ê1Ö1Ø1T2f2h2Ú2î2:3L3N3h3ùñùñùñùñùçßñÚùñÚùÖùñÚùÖùÖùñÚùñÚùñÚùÇñÚùÇÚñÚù½µù±ùÖçßùçßùçßñÚù½µùçùçßùh85yhÆ!hÍS
>*hÆ!hÍS
5>*h
nhÍS
CJOJQJaJhÍS
hÍS
5hÆ!hÍS
6hÆ!hÍS
56h
nhÍS
5
h
nhÍS
Eº,Ê-T.c..ý.
/A/z0|00Ú011F1®1Ê1R2T2h2Ø2Ú2:3vNNæNóóîîóîîóææÚæææææÚææÚææææÚ
$Ä`Äa$gd85y $a$gd85ygd85y
$Ä^Äa$gd85yh3x3Â3Ð3NvNNNNæNòNôNtOvO¤O¶O¸OFPHPzPPPÖPæPèP2Q4QzQ~Q¬Q®QÒQÔQ®R°R¶RS²S´ShTjTUhUøUVVpWrW~WòW
X$X&X
>*h
nhÍS
CJOJQJaJ"hÆ!hÍS
56CJOJQJaJ-hÆ!hÍS
6CJOJQJaJhÆ!hÍS
5>* hÍS
5h
nhÍS
5hÆ!hÍS
56UhÍS
h
nhÍS
h
nh85y8ós mqveletek lehetnek, de az eredmény logikai típusú lesz.
Függvények:
Ord(K) A karakter ASCII kódját adja vissza.
Chr(I) Az Ord függvény inverzének tekinthetQ, az ASCII kódnak megfelelQ karaktert adja vissza.
UpCase(K) Ha a paramétere egy kisbetq, akkor a nagybetqs változatával tér vissza, egyébként nincs hatása.
Pred(K) A K-t megelQzQ karakterrel tér vissza.
Succ(K) A K-t követQ karakterrel tér vissza.
Felsorolásos vagy intervallum típus:
A felsorolásban szereplQ elemek Pl.: T=(Qsz,tél)
A felsorolt típus értékei azonosítók lehetnek, melyeket a deklaráláskor fel kell sorolnunk. Például:
var Tantargy: (Magyar, Tori, Matek, Tesi);
A változó (Tantárgy) által felvehetQ értékeket zárójelben, vesszQvel elválasztva adjuk meg. Az értékekhez a rendszer egy sorszámot rendel, 0-tól kezdQdQen. Az intervallum típust egy már létezQ típus intervallumaként, a felsQ és alsó határával adhatjuk meg. Például:
var Szamjegy: '0'.. '9';
Honap: 1..12;
Lényeges, hogy az intervallum határai közé pontosan két pontot írjunk.
Valós:
Real 2.9E-39..1.7E38 6 byte
Single 1.5E45..3.4E38
Double 5.0E-324..1.7E308
Extended 3.4E-4932..1.1E4932
Comp -2(63-on)+1..2(63-on)-1
LebegQpontos ábrázolás, Real "felett" aritmetikai társprocesszor szükséges, illetve annak emulálása.
Konstansok: Tizedespontot kell alkalmaznunk (nem vesszQt), nagy, illetve kis abszolút értékq számok esetén használhatjuk a normál alakú formát.
Mqveletek: Az eredmény is valós típusú: +,- (elQjel), *, /, +, - Az eredmény logikai típusú: <, >, <=, >=, =, <>
Függvények, eljárások: Egész típusoknál leírtak (Abs, Sqr, Round, Trunc, Str, Val, Randomize)
Sqrt(R) Egy szám négyzetgyökét adja vissza.
Sin(R), Cos(R) Egy radiánban megadott szög szinuszát, illetve koszinuszát adja vissza.
ArcTan(R) Arkusztangens függvény, visszatérési értéke radiánban értendQ.
Pi Paraméter nélküli függvény, a pi értékét adja vissza.
Exp(R) Exponenciális függvény, eR t adja vissza. (e ( 2,71)
Ln(R) Paraméterének a természetes alapú logaritmusát adja vissza.
Int(R) A paraméterének az egész részét adja vissza, de valós típusúként kezelve.
Frac(R) A paraméterének a tört részét adja vissza.
Random Mint az egész típusoknál, ha paraméter nélkül hívjuk meg, akkor egy valós véletlen számot állít elQ a 0..1 intervallumban
Strukturált típusok
String: String[szám] Legfeljebb szám hosszúságú ASCII karakter 1-255 byte
Deklarálása: var S1: string; 0-255 byte
S2: string[20]; 0-20 byte
Konstansok: Write('String konstans') ;
S1 := '';
Mqveletek: Konkatenáció jele: + Karakterláncok összefqzése
Függvények:
Length Egy karakterlánc hosszával tér vissza.
Pos Egy rész karakterláncot keres egy karakterláncban.
Copy A karakterlánc egy részével tér vissza.
Concat Stringek sorozatát egymáshoz fqzi, konkatenálja.
Eljárások:
Str Egy numerikus értéket karakterlánccá konvertál.
Val Egy karakterláncot numerikus értéké konvertál. Az Str fordítottjának tekinthetQ.
Delete A karakterlánc egy részét kitörli.
Insert Egy karakterláncot beilleszt egy másikba.
Tömb:
Tomb : Array[index1,index2...] of alaptípus
(index csak sorszámozott típusú, az indexszámtól függ a dimenzió)
A tömb adott számú, azonos típusú elemet tartalmazó összetett(strukturált) adattípus. A tömb elemeinek a sorrendje kötött, minden elemnek van egy indexe, az elemekhez közvetlenül hozzáférhetünk, egy tömbelemre az indexével hivatkozhatunk.
Mqveletek: Két azonos típusú tömbre az értékadás és az egyenlQség vizsgálat megengedett.
Rekord: Pl.: type
Nev = (Teglalap, Negyzet, Kor)
Sikidom = record
X,Y: real;
Case S: Nev of
Teglalap: (Magassag, Szelesseg: word);
Negyzet: (Oldal: byte);
Kor: (Sugar: real);
End ;
A rekord olyan strukturált típus, mely adott számú és típusú komponensbQl épül fel. Ezeket a komponenseket mezQnek nevezzük, s egy rekordon belül a mezQk különbözQ típusúak lehetnek, sQt egy rekordban több, különbözQ típus szokott szerepelni.
Állomány:
Típusos: File of alaptípus Pl : File of Integer;
(Komponensei egyforma méretqek, az alaptípus nem lehet állomány ill. objektum típus)
Assign : file változó hozzárendelése a fizikai file-hoz
Reset, Rewrite: file megnyitása
Close : lezárás
Típus nélküli: File Tipikus --> Pl : BlockRead/Write
Szöveges: Text Felhasználásuk --> Pl : Listafile
(Csak szekvenciális elérés, soros szervezés)
Mutató típusok
Típusos: 4 byte-os memóriacímet tartalmaz
Mut = ^alaptípus azonosítója
Típus nélküli: 4 byte-os memóriacímet tartalmaz
Pointer
(Mutatók felhasználása pl. Listaszerkezetnél)
PAGE
PAGE \* MERGEFORMAT 6
Hasonló témájú dokumentumok
Egyelőre még egyetlen hasonló témájú file sincs feltöltve a rendszerbe
A mások által feltöltött dokumentumokat értékelheted. Ha úgy ítéled meg, hogy a vizsgára való felkészülés szempontjából hasznos volt egy dokumentum, akkor adj rá sokcsillagos értékelést.
Ha hibákat tartalmaz, vagy egyéb probléma van vele, akkor keveset.
A dokumentumok sorrendje az értékelések alapján adódik. Ami fentebb van a listában, azt hasznosabbnak ítélték társaid. Az új dokumentumok pedig (értékelések hiányában) szintén a lista tetején kezdenek.
Hozzászólások
Ha észrevételed van egy dokumentummal kapcsolatban (például hibát találtál benne), akkor a Hozzászólások részben jelezheted. Az olyan jellegű kérdéseket mint pl.: A 2. feladat 4. sorából milyen átalakítással jutottunk az 5. sorban szereplő képlethez? - szintén ide érdemes írni
Egy tipp az oldalhoz! - Üzenj az összes olyan hallgatónak aki felvett egy bizonyos tantárgyat! Hasznos lehet ha egy tárggyal kapcsolatban olyan kérdéseid merülnek fel mint pl
- Hol lesz a vizsgamegtekintés?
- Meddig kell tudni az anyagot?
- Mely részeket adták le előadáson a könyből?
- stb...
Az üzeneted így ahhoz a célcsoporthoz jut el, akik együtt hallgatják veled a tárgyat. Ehhez kattints az Üzenetekre, ezután válaszd ki a tantárgyat a saját tárgyaid közül, majd kattints az Üzenet írására.