Programozási elemek I.
Országok listája
Hungary
Nyíregyházi Főiskola
Természettudományi Főiskolai Kar
Programozó matematikus
Záróvizsga
Programozási elemek I.
2009.02.01 19:28:24
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.
Programozási elemek I.
(8. tétel)
(típusok, operátorok, kifejezések, utasítások)
1. Típusok és Operátorok:
Egy típus jellemzésénél az alábbiakat kell figyelembe venni:
felvehetQ értékek halmaza (adatábrázolás)
konstansai
végezhetQ mqveletek
szabványos eljárások, függvények
Egész típus(ok):
A programozási nyelvek zöme a numerikus (szám) típusokon belül megkülönbözteti az egész és a valós típusokat. Ez azért van így, mert az egész számokat egyszerqbben tárolja, kezeli a rendszer, gyorsabban tud velük mqveleteket végezni. Ezért ha az adat jellege lehetQvé teszi, mindig egész típust válasszunk. A Pascal nyelvben vannak olyan helyzetek, ahol valós típusú szám nem is állhat (pl., for ciklus).
A Pascal nyelvben bQséges választék áll a rendelkezésünkre egész típusokból. Az alábbi táblázat tartalmazza a típusok elnevezését, értéktartományát, valamint a tárolásakor elfoglalt területet bájtokban, azaz a méretét:
Típus Értéktartomány Tárolás
Byte 0..255 1 byte
ShortInt -128..127 1 byte
Word 0..65535 2 byte
Integer -32768..32767 2 byte
LongInt kb. -2*109..2*109 4 byte
A Byte és a Word típus esetén 8 illetve 16 biten 28 = 256 ( 000000002-tól 111111112-ig ) illetve 216 = 65536 különbözQ számot ábrázolhat a rendszer kettes számrendszerben. A ShortInt, az Integer és a LongInt típusokban negatív számokat is tárolhatunk. Itt az ábrázolási tartomány egyik fele kettes komplemens kódolással negatív számokat jelent.
A tízes számrendszerbeli, decimális egészeket a megszokott alakban használhatjuk programjainkban, pl. 25, -123. A tizenhatos számrendszerbeli, hexadecimális egészekkel is dolgozhatunk, amelyeket egy dollárjellel kell bevezetnünk, pl. $33, -$A2D6. Az A..F számjegyek esetén mindegy, hogy kis-, vagy nagybetqt írunk. (A hexadecimális számok használatára elsQsorban rendszerközeli programok esetén van szükség.)
Nézzük azokat a mqveleteket, amelyeket egész típusú operandusokon elvégezve, az eredmény is egész típusú, azaz a mqvelet nem vezet ki az egész számok körébQl!
+,- (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
A bitenkénti mqveletek használata csak rendszerközeli programozásban gyakori.
not bitenkénti negálás,
pl not 28 = -29 ; (not 00011100 = 11100011)
and bitenkénti és,
pl. 5 and 6 = 4; (00000101 and 00000110 = 00000100)
or bitenkénti vagy,
pl. 5 or 6 = 7; (00000101 or 00000110 = 00000111)
xor bitenkénti kizáró vagy,
pl. 5 xor 6 = 3; (00000101 xor 00000110 = 00000011)
shl bitenkénti eltolás balra,
pl. 5 shl 3= 40; (00000101 shl 3 = 00101000)
shr bitenkénti eltolás jobbra,
pl. 5 shr 2= 1; (00000101 shr 2= 00000001)
Az eredmény kivezet az egész számok körébQl:
/ az eredmény mindig valós (bár 3 az értéke, 6/2-t már nem egész számként kezeli a rendszer)
<, >, <=, >=, =, <> relációs mqveletek, az eredmény logikai típusú: igaz, vagy hamis
in halmaz elemvizsgálat, logikai eredmény.
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.
Függvények:
Abs(I)
Abszolút érték függvény.
Sqr(I)
A paraméterének a négyzetét állítja elQ.
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.
Round(R)
Úgynevezett konverziós függvény, valós paraméterét egész típusúvá konvertálja kerekítéssel.
Random(I)
Egy véletlen egész számot állít elQ a 0..I-1 intervallumban.
Valós típus(ok):
Természetesen a programozási feladatok nagy részét nem lehet megoldani csak egész számok használatával. A Turbo Pascal nyelv több valós típussal is rendelkezik, mi csak az alaptípusnak tekinthetQ Real típussal foglalkozunk.
A Real típusú változók 6 bájtot foglalnak el a memóriában. Ábrázolásuk, kezelésük bonyolultabb módon történik, mint az egész típusok esetében. A rendszer a matematikai normál alakhoz hasonló, lebegQpontos formában tárolja el a számot. A legkisebb abszolút értékq valós szám 2,9*10-39 , a legnagyobb pedig 1,7*1038 . A pontosság maximálisan 11-12 decimális számjegy. (Ennyi értékes számjegye van egy valós számnak, a többi jegyet nem ábrázolja a rendszer, pl. a 1234567890,123456 számból az aláhúzott jegyek elvesznek.)
Tizedespontot kell alkalmaznunk (nem vesszQt), nagy, illetve kis abszolút értékq számok esetén használhatjuk a normál alakú formát.
Például: 5.12, -123.2313, 12.54E6 (12,54*106), 21.12E-5 (21,12*10-5)
Az eredmény is valós típusú: +,- (elQjel), *, /, +, -
Az eredmény logikai típusú: <, >, <=, >=, =, <>
Függvények:
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 ent 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.
Karakteres típus:
Nagyon gyakori, amikor egy programnak nem numerikus adatokat kell feldolgoznia, hanem szöveget. Gondoljon csak a leggyakrabban használt számítógépes irodai alkalmazásokra, a szövegszerkesztQkre. A szöveges típusú adatok kezeléséhez a Pascal nyelv a karakter (Char) és a karakterlánc (String) típust nyújtja.
A Char 1 bájtos típus, tehát 28 = 256 különbözQ értéknek, az ASCII kódrendszer 256 elemének a tárolására képes. A karakter típusú változó egy ASCII kódot tartalmaz. Pl. ha a változóhoz tartozó memóriarekesz értéke 65, akkor, mivel változónk típusa Char, ezt a rendszer 'A' betqként értelmezi.
A karakteres konstans csak egyetlen karaktert tartalmazhat, pl.: 'A', '*', '4'. Egy másik formája a Char konstansnak, ha az ASCII kód elé közvetlenül a kettQskereszt karaktert írjuk: #65, a 65-ös ASCII kódú karaktert, azaz 'A'-t jelenti. Gyakran hivatkozunk így az Escape - #27 karakterre.
A Char típus esetén nincs olyan mqvelet, amelynek az eredménye is karakteres típusú lenne.
Mint a számoknál, itt is értelmezi a nyelv a relációs mqveleteket: <, >, <=, >=, =, <>. Az eredmény természetesen logikai típusú, amit a karakter ASCII kódja határoz meg. Pl. 'A' < 'B' igaz, 'A' = 'a' hamis.
Alkalmazható még az in mqvelet.
Eljárások:
Inc(K, N), Dec(K, N)
Ön már találkozott ezekkel az eljárásokkal az egész típusoknál. Mqködésük itt is hasonló, a K karakter ASCII kódját növelik, illetve csökkentik N-nel, N elmaradhat, akkor eggyel növelnek, illetve csökkentnek.
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.
Logikai típus:
A Pascal nyelvben logikai típusú változók deklarálására is van lehetQség, a típus neve Boolean, mely elnevezés George Boole 19. századi angol matematikusra utal.
Egy logikai típusú változó két értéket vehet fel: igaz vagy hamis. Ábrázolása egy bájton történik (akár egy bit is elég lenne). Ha a bájt értéke 0, akkor a logikai típusúként értelmezett érték hamis, nullától eltérQ érték esetén pedig igaz.
A két logikai értéknek megfelel két elQredefiniált konstans: True (igaz), False (hamis)
Logikai típusú operandusokra alkalmazhatók a logikai mqveletek (operátorok), melyeknek az eredménye is boolean. A logikai mqveletek kiértékelését igazságtáblával szokták megadni.
not (nem)
A not A Hamis Igaz Igaz Hamis
and (és) akkor ad igaz értéket, ha mind a két operandus igaz
A B A and B Hamis Hamis Hamis Hamis Igaz Hamis Igaz Hamis Hamis Igaz Igaz Igaz
or (vagy) akkor ad igaz értéket, ha legalább az egyik operandus igaz
A B A or B Hamis Hamis Hamis Hamis Igaz Igaz Igaz Hamis Igaz Igaz Igaz Igaz
xor (kizáró vagy) akkor ad igaz értéket, ha pontosan az egyik operandus igaz
A B A xor B Hamis Hamis Hamis Hamis Igaz Igaz Igaz Hamis Igaz Igaz Igaz Hamis
Függvény:
Odd(I)
Párosság vizsgálat. Visszatérési értéke igaz, ha I páratlan.
A karakterlánc (sztring) típus:
Egy string típusú változóban tárolt karakterlánc hossza a program futása során változhat, de maximálva van. Ha deklarálásakor a string kulcsszó után nem írtunk semmit, ekkor a rendszer 256 bájtot foglal le a memóriában a számára. Egy bájt szükséges a karakterlánc aktuális hosszának a nyilvántartására, így a hossza 0 és 255 karakter között változhat. A másik fajta deklarálás során megadhatunk egy 256-nál kisebb maximális hosszt.
Gyakran használunk karakterlánc konstansokat a Write(Ln) eljárásokban. Pl. Write('Kérem az elsQ számot'). Létezik üres, nulla hosszúságú karakterlánc konstans, ami két aposztróf közvetlen,.D¢¤¸ÔØ*
L
\
b
x
45;
$(.VnNf¢ªóëàÕÑÊÆÊѼѴѰ«°«°«°¦°¦°«°°°°°°°°°°°°°° hË15hË15OJQJ hË1OJQJ hË1H* hË1H*hË1 h"p
OJQJh/tØh"p
56h[§
h"p
h"p
h"p
h4 Ïh"p
CJaJ h4 Ïh4 ÏCJaJ h4 ÏCJ aJ h"p
h"p
5CJ aJ 8.D¢¤ØÚT ¨ ¾ æ (
*
L
v
x
· Î ê "DEêóóóëæëëÛÛÛÛëëëëëëëëëëëëëë
$
&
Fa$gd1gd/tØ $a$gd1
$7$8$H$a$gd4 Ïêì\^xà(rtB¢Ê:dÐ=\ÜÝÒ~ÔÖ÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ $a$gd1ªÀÄØð:@V^rÐØî
#&=Aco´¿VXpvÒø~ÖêìV`¼Æô
!!N!\!®!°!Â!"¢"\#p#ì#î#ø# $$%¢%Î%ü÷üïüêü÷üïüêü÷üïüæüêüïüêüïüÝüïüïüÝüêüêüÖüÖüÖüêÖüÖÇÀÖÀÖÀÖÇü¶¬¶¨£¨ h15h1h/tØhË156h/tØh156
hË1hË1hË1hË1CJOJQJaJ
h/tØhË1hË15OJQJhsG hË15 hË1OJQJ hË16hË1@ÖìUV`»¼Æò ô
!!L!N!\!®!°!Â!""¢"Z#\#p#ì#î#$÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ê÷÷÷÷÷÷÷÷ê÷÷
-D
MÆ
ÿÿÿÿgd1 $a$gd1$Ð%Ò%â)ä)ì*x+z+è+J,L,d,t,¼,¾,Ü,l-n--...:.;.B.{.|..÷÷÷÷÷÷÷÷í÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷
Æ7Sgd1 $a$gd1Î%Ð%R'j'((@(D()))D+F+p+t+x+z+è+J,L,d,t,¾,Ü,n--..;.B.[.\.s.t.|..¿.Æ.//D/E/W/T1V111ª5¬5*8.8D8Z88&:@:N::¨:Z;n;0<÷óîóéóéóäÜóéóéó×óÈóÀ¹ó¹ó¹ó¹ó¹óéó²ó¹ó¹ó¹ó®¤óéóó×ó×ó×¹ó×¹ó¹ó¹óh1B*phÿh/tØh156hË1
j@ðh1
h/tØh1h1h15h1h1CJOJQJaJ h15h1B*
ph h1>* h1H* h16h1h1h16=.¾.¿.Æ.///D/E/W/1d3f3ª5¬5b68B8D8Z88&:(:@:N:::¨:÷÷÷÷÷÷÷÷÷è÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷ $
Æ
7Sa$gd1 $a$gd1¨:X;Z;n;.<0<@<<< <ê<ì<
=N>P>4@6@æ@è@'B(B2B4B:B÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷çç$¤( ¤($Ifa$gd/å $a$gd10<@<<< <ì<
=¸=Æ=´>¼>È>Ò>Ò?Ü?&@.@4@6@°@¸@Ê@Ô@æ@è@(B,B1B2B4B7BTBWBBBèBêB5C7CCCÖCÙC$D.D5DsDDDÄDËDâDëDEE G,G.GVGXGZGH Ò0
J
^
Ø
ùõðùõæõðõáõáõáõáõðõáõáõðõðõðõðõðõðõðõðõðõðõÙùõÏæËÆËÆË¾Ë¾Ë¾Ë¾Ë¼ËµËÆ®Ë
h/tØh:
h:h:U h:OJQJ h:5h:h/tØh:56h1h15 h16h/tØh156 h15h1
h/tØh1D:B;BABFB}}$¤( ¤($Ifa$gd/åqkd$$IfFÖÖ0ºÿnÜ´nÖ0ÿÿÿÿÿÿ öööÖÿÿÖÿÿÖÿÿÖÿÿ4Ö
FaöFBGBLBRB}}$¤( ¤($Ifa$gd/åqkd$$IfFÖÖ0ºÿnÜ´nÖ0ÿÿÿÿÿÿ öööÖÿÿÖÿÿÖÿÿÖÿÿ4Ö
FaöRBSBTBBBBB
uuu$¤( ¤($Ifa$gd/å $a$gd1qkd6$$IfFÖÖ0ºÿnÜ´nÖ0ÿÿÿÿÿÿ öööÖÿÿÖÿÿÖÿÿÖÿÿ4Ö
FaöB B¦B¬B²Bzjjj$¤( ¤($Ifa$gd/åkdÑ$$IfFÖÖFºÿnÜØ
´nüÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
Faö²B³B¹B¾BÄBzjjj$¤( ¤($Ifa$gd/åkd$$IfFÖÖFºÿnÜØ
´nüÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
FaöÄBÅBÊBÐBÖBzjjj$¤( ¤($Ifa$gd/åkd3$$IfFÖÖFºÿnÜØ
´nüÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
FaöÖB×BÜBáBæBzjjj$¤( ¤($Ifa$gd/åkdä$$IfFÖÖFºÿnÜØ
´nüÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
FaöæBçBèB/C1C3C:Czrrbbb$¤( ¤($Ifa$gd/å $a$gd1kd$$IfFÖÖFºÿnÜØ
´nüÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
Faö:C;CACGCMCzjjj$¤( ¤($Ifa$gd/åkdF$$IfFÖÖFºÿnÜf ´nÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
FaöMCNCTCYC^Czjjj$¤( ¤($Ifa$gd/åkd÷$$IfFÖÖFºÿnÜf ´nÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
Faö^C_CdCjCoCzjjj$¤( ¤($Ifa$gd/åkd¨$$IfFÖÖFºÿnÜf ´nÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
FaöoCpCuCzCCzjjj$¤( ¤($Ifa$gd/åkdY $$IfFÖÖFºÿnÜf ´nÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
FaöCCCÐCÒCÔCÜCzrrddd $¤($Ifa$gd/å $a$gd1kd
$$IfFÖÖFºÿnÜf ´nÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
FaöÜCÝCãCéCïCzjjj$¤( ¤($Ifa$gd/åkd»$$IfFÖÖFºÿnܸ´nÜÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
FaöïCðCöCûCDzjjj$¤( ¤($Ifa$gd/åkdl $$IfFÖÖFºÿnܸ´nÜÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
FaöDDD
DDzjjj$¤( ¤($Ifa$gd/åkd
$$IfFÖÖFºÿnܸ´nÜÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
FaöDDDD"Dzjjj$¤( ¤($Ifa$gd/åkdÎ
$$IfFÖÖFºÿnܸ´nÜÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
Faö"D#D$D.D5DrDsDDFF "zkccccckkkk $a$gd: $
Æ
7Sa$gd:kd
$$IfFÖÖFºÿnܸ´nÜÖ0ÿÿÿÿÿÿ öööÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿÖ
ÿÿÿ4Ö
Faö
ül egymás után.
Mqveletek segítségével kifejezéseket alkothatunk. A karakterlánc kifejezések alkotását egy mqvelet, az összefqzés, idegen eredetq szóval konkatenálás segíti. Ennek a jele a +.
Karakterlánc típusú operandusokra elvégezhetQk a relációs mqveletek, melyek természetesen logikai értéket eredményeznek. Nagyon kényelmes jellemzQje a Pascal nyelvnek, hogy két karakterlánc relációját az elsQ különbözQ karakter ASCII kódja alapján állapítja meg.
A karakterláncoknak hozzáférhetünk az egyes karaktereihez az indexelés segítségével, például S1[5] az S1 karakterlánc 5. karakterét jelenti. Az így kapott objektum egyenértékq egy karakteres változóval.
Függvények:
Length(I)
A paraméterben megadott karakterlánc hosszával tér vissza.
2. Kifejezések:
A kifejezések formálisan operandusokból, mqveleti jelekbQl (operátorok) és kerek zárójelekbQl épülnek fel. Az operandusok konstansok (pl. 2), változók (pl. x, alfa) és függvényhívások (pl. sin(alfa)) lehetnek. A kifejezések egy értéket képviselnek, amely meghatározását nevezzük kiértékelésnek. A mqveletek kiértékelésének sorrendjét precedenciájuk (prioritásuk, elsQbbségük) szabja meg. A Pascal nyelv precedencia szintjei az alábbiak:
NOT, +, -, @ (egy operandusú mqveletek)
*, /, DIV, MOD, AND, SHL, SHR
+, -, OR, XOR
<, >, <=, >=, <>, =, IN
Azonos prioritás esetén a rendszer balról jobbra haladva végzi el a mqveleteket. A prioritást megtörhetjük kerek zárójelek alkalmazásával. (Ellentétben a matematikában megszokottal, itt csak kerek zárójeleket használhatunk, de akármilyen mélységig egymásba ágyazhatjuk Qket.)
A Pascal szigorúan típusos nyelv, minden konstansnak, változónak és így a kifejezésnek is van típusa.
3. Utasítások:
- Értékadó utasítás
A leggyakrabban használt utasítással, ahogy a neve is mutatja, egy változónak adhatunk új értéket. Szintaktikája (nyelvtana) :
változó := kifejezés
Példa:
x := 2 * ( x + y ) + sin(alfa)
Az értékadás jele a :=, a bal oldalán mindig egy változónak kell állnia, a jobb oldalán pedig egy kifejezésnek.
- if utasítás
Az if-then-else utasítás kétirányú feltételes elágazást hajt végre. Az utasítás szintaktikája:
if feltétel then utasítás1 [else utasítás2]
ahol a feltétel egy logikai kifejezés. Ha a feltétel igaz, akkor az utasítás1 hajtódik végre, egyébként az utasítás2 (kétágú szelekció). Az else ág elhagyható, ilyenkor ha a feltétel hamis, akkor az utasítás1 kimarad, a program a következQ utasítással folytatódik (egyágú szelekció).
Láthatjuk, hogy az if-then-else utasítás maga is tartalmaz utasításokat, ezért ezen utasítás már a strukturált utasítások csoportjába tartozik, szemben az eddig tanult egyszerq utasításokkal (értékadó utasítás, eljárás hívás).
- case utasítás
A Pascal másik szelekciós utasításával, a case utasítással könnyen megoldhatjuk a programunk többirányú elágaztatását.
A case utasítás általános szintaktikája:
case kifejezés of
érték1: utasítás1;
érték2: utasítás2;
...
értékN: utasításN;
[else
különben_utasítás]
end;
A case kulcsszó után álló kifejezés (az utasítás szelektora) csak sorszámozott típusú lehet (gyakori esetben egy változó). Az érték1, érték2,... értékN ún. esetkonstansok a szelektor lehetséges értékeit jelölik. Ha a kifejezés értéke megegyezik valamelyik konstans értékével, akkor a program végrehajtása a konstans után kettQsponttal megadott utasítással folytatódik tovább. Ha a szelektor értéke egyik konstanssal sem egyezik meg, akkor a program az else ág utáni utasítással, vagy annak elhagyása esetén a case utáni utasítással folytatódik. A case szerkezetet az end kulcsszóval kell lezárnunk.
Egy ághoz több értéket is felsorolhatunk vesszQvel elválasztva, illetve intervallumot (intervallumokat) is megadhatunk. Ha egy esethez, ághoz több utasítás is tartozik, akkor azokat a begin-end kulcsszavak közé kell zárnunk, mint ahogy azt az if utasításnál már láttuk. Természetesen az egyes ágakban bármilyen utasítások állhatnak.
- KezdQfeltételes ciklus
A kezdQfeltételes, más elnevezéssel elöltesztelQ feltételes ciklus esetén a program a ciklus utasításainak végrehajtása elQtt vizsgál egy feltételt, amelynek teljesülése esetén végrehajtja az utasításokat. A ciklusnak a feltételt tartalmazó, vezérlQ részét ciklusfejnek nevezzük, az ismételten végrehajtott, azaz iterált utasításokat pedig ciklusmagnak. A Pascal nyelv elöltesztelQ feltételes ciklusa a while utasítás, melynek általános alakja a következQ:
while feltétel do
utasítás
A ciklus mqködése tehát a következQ: amíg a feltétel igaz, addig a program ismétli a ciklus magját (az utasítást), ha hamis, akkor a program a ciklust követQ következQ utasítással folytatódik. A feltétel egy logikai (boolean) kifejezés. Ha több utasítás szerepel a ciklus magjában, akkor Begin - End összetett utasítást (utasítás zárójelet) kell alkalmaznunk. Ha a feltétel már elQször sem teljesül, akkor a ciklusmag egyszer sem kerül végrehajtásra (üres ciklus), ha pedig a feltétel soha nem vesz fel hamis értéket, akkor a program végtelen ciklusba kerül. A feltétel gyakran egy reláció, például X > 0. Ekkor könnyen belátható, hogy a ciklusmagban kell lennie egy olyan utasításnak, amely megváltoztatja az X értékét. Máskülönben, ha az X kezdetben pozitív volt, akkor az is marad, azaz a program végtelen ciklusba kerül.
- Végfeltétel ciklus
Itt az iterációt vezérlQ feltételt a program a ciklusmag végrehajtása után értékeli ki, amelybQl az következik, hogy a ciklusmag legalább egyszer végrehajtódik. Ez az egyetlen lényegi különbség a kezdQfeltételes ciklushoz képest. A while és a repeat ciklust hasonló típusú feladatok megoldására használhatjuk (azaz olyankor, amikor nem tudjuk elQre az ismétlések számát), esetleg az egyik egy kicsit kényelmesebb megoldást nyújt. A repeat- until ciklus általános alakja:
repeat
utasítás(ok)
until feltétel;
Az utasítás(ok) végrehajtását meg kell ismételni, ha a feltétel hamis. Ha a feltétel igaz, a program a ciklus utáni utasítással folytatódik. A ciklusmagot a repeat - until kulcsszavak fogják közre, nem szükséges Begin - End utasítás zárójelet használnunk.
- Növekményes ciklus
A növekményes ciklust (hívják még számláló ciklusnak is), akkor használjuk, ha elQre meghatározott a ciklusmag végrehajtásainak a száma. Ezt a ciklust szinte minden programozási nyelvben a for szócska jelöli. A Pascalban a for ciklus szintaktikája:
for ciklusváltozó := kezdQérték to végérték do
utasítás;
vagy
for ciklusváltozó:=kezdQérték downto végérték do
utasítás;
ahol a ciklusváltozó sorszámozott típusú változó, a kezdQérték és a végérték pedig sorszámozott típusú kifejezések, mind a három azonos vagy kompatíbilis típusú. A ciklusváltozó a kezdQértéktQl a végértékig egyesével nQ (to) vagy csökken (downto). Az utasítás (vagy a begin - end utasítás zárójelek közé zárt utasításcsoport) a ciklusváltozó minden értékénél végrehajtódik. ElöltesztelQ ciklus, így ha a kezdQérték > végérték (to esetén), vagy a kezdQérték < végérték (downto esetén), akkor a ciklusmag egyszer sem kerül végrehajtásra (üres ciklus).
PAGE \* MERGEFORMAT 5
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! - Sikeres vizsga után írd meg tapasztalataid a tantárggyal, vizsgával kapcsolatban. Miből érdemes tanulni, mennyi készülés kell, milyen volt a vizsga... Ha mindenki így tesz, sokkal egyszerűbb lesz elkezdeni a tanulást egy olyan ember tapasztalatainak a birtokában, aki már elvégezte a tantárgyat. Ehhez kattints a tantárgyra a Tanulmányaimban, majd a Véleményem a tárgyról linkre a jobb felső részen.