PROGRAMOZÁSI NYELVEK (ELMÉLET)
PROGRAMOZÁSI NYELVEK (ELMÉLET)
A
programozási
nyelvekről
általánosan
már
az
előző
részben
beszéltünk.
Megkülönböztettünk alacsony és magas szintű nyelveket. A legtöbb esetben elegendő a magas
szintű
nyelvek
használata
számunkra.
A
következő
oldalakon
keresztül
megismerkedhetünk egy általánosan leírt és bemutatott strukturált nyelv szerkezetével és
használatával. Mielőtt azonban részletesebben belevágnánk a munkába, nézzük meg a programozás egyik alaptételét: Böhm-Jacopini tétel: Minden program felépíthető három alkotóelemből, ezek : szekvencia, szelekció, iteráció.
A tétel más szóval azt mondja ki, hogy gyakorlatilag strukturált programozási nyelv
segítségével minden program elkészíthető. A következő fejezetekben erről szeretnénk bővebben is beszélni, de ehhez meg kell ismernünk számos fogalmat és modult.
SZAKMAI INFORMÁCIÓTARTALOM ADATSZERKEZETEK 1. Elemi típusok Egy változóban, alapértelmezetten egy adat tárolható el. A változóknál már tanultuk, hogy fontos tulajdonsága a típusa. A következőkben ezeket a típusokat fogjuk megismerni.
Megszámlálható típusok: a., egészek: Típus
Méret
Előjel
Számtartomány
Byte
1 Byte
Nincs
0..255
Word
2 Byte
Nincs
0..65535
Shortint
1 Byte
Van
-128..+127
Integer
2 byte
Van
-32768..+32767
Longint
4 Byte
Van
±2 milliárd
A típuson végezhető műveletek: 1
PROGRAMOZÁSI NYELVEK (ELMÉLET) Művelet
Leírás
+
Összeadás
-
Kivonás
DIV
Egészrész osztás
MOD
Maradékos osztás
INC
Egyel növeli az értéket
DEC
Egyel csökkenti az értéket
SHL
Szám eltolása egyel balra
SHR
Szám eltolása egyel jobbra
AND
Logikai és
OR
Logikai vagy
XOR
Logikai kizáró vagy
b., karakteres: Típus
Méret
Char
Tartomány
1 Byte
ASCII kódtábla
A típuson végezhető műveletek: Művelet
Leírás
Chr
Kód alapján megadja a karaktert
Ord
Lekérdezi a karakter kódját
c., logikai: Típus
Méret
Boolean
Tartomány
1 Byte
{false..true}
A típuson végezhető műveletek: Művelet
Leírás
Not
Logikai tagadás
AND
Logikai és
OR
Logikai vagy
XOR
Logikai kizáróvagy
EQU
Equivalencia
NAND
Logikai nemés
NOR
Logikai nemvagy
Implikáció
Implikáció
Hasonlító operátorok: =, >, <, <>, >=, <=, IN. d.,Valós típusosztály: Típus Real
Méret 5+1 Byte
Számtartomány 2.9·10
-39
< |N| < 1.7·1038 2
PROGRAMOZÁSI NYELVEK (ELMÉLET) Single
3+1 Byte
8,43·10-37< |N| <3,37·1038
Double
6+2 Byte
4,19·10-307< |N| <1,67·10308
Extended
7+3 byte
3,4·10-4932< |N| <1,2·104932
Ábrázolás: lebegőpontos számként: mantissza+karakterisztika Műveletei: minden matematikai művelet és függvény
2. Összetett típusok Egy változónév alatt több adat is eltárolható. a. Karaktersorozat: Stringnek nevezzük a zérus vagy véges számú karaktert tartalmazó karaktersorozatot. Az
elemei
karakterek
és
rendelkeznek
is
a
char
típus
Alapértelmezésben egy string maximum 255 karakterből állhat.
minden
tulajdonságával.
A típuson végezhető műveletek: Művelet
Leírás
Hossz(s)
A s string hosszát adja vissza
RészSztring (s,n,m)
Az s string n elemétől m
Pozíció (s1,s2)
Megadja, az s1 stringben az s2
hosszúságú részt ad vissza h
pozícióját Konkateráció(s1,s2)
Az s1 és s2 stringet
összeolvasztja egy stringgé
b. Tömb: A típus neve: array. Egy tömbnek fix számú eleme van, és az összes elemnek ugyanaz a típusa. Az elemek típusát alaptípusnak nevezzük. Az elemek indexelhetők, mégpedig
bármely sorszámozott típus egymás utáni értékével. A tömb gyakorlatilag egy matematikai
vektorhoz hasonlítható. Többdimenziós tömbök is létrehozhatók. Ekkor értelemszerűen az indexei is többdimenziósak lesznek. c. Rekord: Egy rekord (record) különböző típusú elemeket fog össze. Általában akkor használjuk, amikor több, egymás melletti adatot egyszerre kell mozgatnunk, kezelnünk. A deklarált
adatokat a rekord mezőinek nevezzük. A mezőkre a rekodnév.mezőnév formában szoktunk hivatkozni.
3. Definiált típusok a, Részintervallum:
Részintervallum típusok beépített vagy előzőleg definiált megszámlálható típusból szűkíthetők le az értékkészlet részintervallumának kiválasztásával. A két határ is 3
PROGRAMOZÁSI NYELVEK (ELMÉLET) beletartozik az intervallumba; a felső határ nem lehet kisebb az alsó határnál, azaz az intervallum nem lehet üres. b, Halmaz:
A halmaz speciális adattípus, melyen a matematikai halmazelmélet műveletei végezhetők el. A halmaz elemei ugyanolyan típusúak. Az alaptípus csak sorszámozott lehet, melyben
a lehetséges elemek sorszámai 0 és 255 közöttiek lehetnek. Egy halmazt megadhatunk úgy, hogy felsoroljuk elemeit, vagy egy intervallumot adunk meg. Az üres halmaz: [] c, Felsorolás
A felsorolás típus értékei fix konstansokból állnak. A programozó adja meg a típus elemeit. Maga a felsorolás egyben az elemek sorszámát is megadja. A felsorolás típusban megadott értékek eleve típus definiációt adnak. d, Verem:
A verem LIFO (last-in-first-out) szervezésű, azaz mindig az utoljára beletett elemet lehet
kivenni. A legtöbbször olyan adathalmaz tárolásánál használjuk, ahol nem ismert mennyiségben kell rögzíteni adatot, majd azt fordított sorrendben vissza kell olvasnunk. e, Sor:
A sor, vagy, más néven láncolt lista FIFO (first-in-first-out) szervezésű, vagyis az elsőnek beírt elemet fogjuk elsőre kivenni. A legtöbbször olyan adathalmaz tárolására használjuk,
ahol nem ismert mennyiségben kell rögzíteni az adatokat, majd a felvitel sorrendjében kell kiolvasni. g, Gráf:
Pontok és élek halmaza, ahol az élek ponttól pontig tartanak. Adattárolás szempontjából
a sorok felhasználásával valósítjuk meg. Tipikus esete a Fa, mint speciális gráf. Fa adatszerkezetben igen sokféle keresési és rendezési algoritmus használatos.
4. Mutató típus: A mutatók (pointerek) olyan változók, amelyek egyes tárolási egységek (változók vagy függvények) memória címeit tartalmazzák. Az ilyen változók tehát az adott tárolási egységre
nem közvetlenül utalnak, hanem közvetetten (indirekció). A pointerek használatával valósítható meg a verem, sor és gráf adattípus is.
5. Konstansok: Az attribútum azt mondja, hogy a típus konstans típus. Ez azt jelenti, hogy a típus értékek
(objektumok) nem változtathatják meg az értéküket a program futása során.
_________________________________________________________________________________________
4
PROGRAMOZÁSI NYELVEK (ELMÉLET)
SZAKMAI INFORMÁCIÓTARTALOM
1. Értékadás
PROGRAMOZÁSI ESZKÖZÖK
A változóknak adhatunk új értéket. A programvégrehajtás során a változók értékei változhatnak. Lényegében ezért kapták a változó nevet. A legtöbb programnyelv nem ad kezdőértéket a deklarált változóinak. A program során a programozónak kell biztosítani a változó értékadását. Pl.:
A = 1234
2. Adatbevitel és adatkiírás Ezeknek az utasításoknak a segítségével a program és a külvilág közötti adatcserére nyílik
lehetőségünk. A bevitel általában a billentyűzetről vagy háttértárolóról történik. A kivitel általában a monitor, a nyomtató vagy a háttértároló segítségével valósul meg.
3. Elágazások, feltételes programvégrehajtás A program elérkezik egy ponthoz, ahol az egyes programrészek végrehajtása egy feltételtől
függ. Itt a logikai feltétel kiértékelése után dől el, hogy a program melyik ágon fog folytatódni, de csakis az egyik ág teljesülhet. Az elágazások feltétele egy logikai kifejezés,
ami az összehasonlító operátorok (relációs jelek) és logikai műveletek illetve függvények használatával képezhető: <, >, <=, >=, <>, AND, OR, NOT. Pl.:
Ha feltétel akkor utasítások1 különben utasítások2
4. Ciklusszervezés Ciklust akkor alkalmazunk a programokban, ha valamilyen tevékenységet ismételtetni
szeretnénk. Ilyenkor nem kell többször megírni ugyanazt a programrészt, hanem elég egyszer.
Előirt lépésszámú ciklus
Ebben az esetben már a program írása során pontosan tudjuk, hogy hányszor szeretnénk ismételni a programrészletet.
Mivel itt konkrét számról van szó, ezért a programba be is építjük, mint egy konstans értéket. A program addigi futásától függetlenül a ciklusmag mindig ugyanannyiszor fog ismétlődni.
A ciklusmag utasításai a ciklusváltozó kezdő és végértékének, valamint a lépésköznek megfelelő számszor kerülnek végrehajtásra. Pl.:
Ciklus ciklusváltozó = 1 től 100-ig 2 lépésközzel :
5
PROGRAMOZÁSI NYELVEK (ELMÉLET) : Ciklusmag :
Ciklus vége Elöltesztelő ciklus
A ciklusmag utasításait addig kell végrehajtani, amíg a feltétel igaz. A feltétel kiértékelés a ciklusmag lefutása előtt történik, tehát előfordulhat olyan eset, amikor a ciklusmag egyszer sem fut le. Pl.:
Ciklus amíg feltétel :
: Ciklusmag :
Ciklus vége Hátultesztelő ciklus
Az előzőhöz hasonló, azzal a különbséggel, hogy a ciklusmag utasításait egyszer mindenképpen végre kell hajtani. Pl.: Ciklus :
: Ciklusmag
Amíg feltétel Ciklus vége
5. Függvények A függvények fő sajátossága, hogy nevük egy értéket képvisel. Típusuk pontosan
meghatározott. A függvényekre nevük és paramétereik leírásával hivatkozhatunk. A függvény megadott paramétereken végrehajt egy utasítássorozatot és visszatér egy értékkel.
Ezt a visszatérési értéket tekintjük a függvény eredményének és így értékadásban kell szerepelnie. Pl.:
A= SIN(x)
6. Eljárások Az eljárások annyiban különböznek a függvényektől, hogy nem értéket, hanem valamilyen tevékenységet
képviselnek.
Ezekre
nevükkel
és
paramétereikkel
hivatkozhatunk.
A
programok során érdemes eljárásokban elhelyezni azokat az algoritmusokat, amiket többször is használunk különböző helyzetekben. Az eljárásokra tagolt program könnyebben
áttekinthető, de nagyobb odafigyelést igényel a használatuk. Az eljárásoknál nagy szerepe van a paraméterátadásnak.
2
PROGRAMOZÁSI NYELVEK (ELMÉLET) Összefoglalás Milyen egyszerű adatszerkezeteket ismer? Milyen összetett adatszerkezeteket ismer? Milyen definiált adatszerkezeteket ismer? Mit jelent, ha egy típus sorszámozott? Mi a LIFO? Mi a FIFO? Mire jók a függvények és eljárások?
SZAKMAI INFORMÁCIÓTARTALOM PROGRAMOZÁSI ESZKÖZÖK MEGVALÓSÍTÁSA PASCAL NYELVEN A következő részben a PASCAL nyelvet segítségül hívva bemutatjuk a fentebb tanult
programozási eszközök megvalósítását egy konkrét nyelven keresztül is. A PASCAL nem
kifejezetten az a szakmai nyelv, amit a programozók a hétköznapi munka során szívesen alkalmaznak, de egy remek tanuló nyelv! Nagy előnye, hogy könnyen megjegyezhetőek az utasításai, és eléggé kötött a szintakszisa. Ez kifejezetten előny egy tanulás folyamán, de sajnos hátránnyá válik egy bonyolult fejlesztés alatt.
Aki elsajátítja a PASCAL alapvető utasításait, annak könnyen megy majd az áttérés egy komolyabb nyelvre. A DELPHI például a PASCAL alapjaira épít. Ezektől függetlenül továbbra is hangsúlyoznám, hogy nem az számít, hogy ki milyen nyelven tanul meg programozni, hanem az, hogy megértse a programozás logikáját! Tudjon algoritmust tervezni egy problémára! Képes legyen elvonatkoztatni és megérteni egy feladat
lényegét. Ha ebben gyakorlatot szerzünk, akkor nyelvektől függetlenül tudunk majd programozni és „programozóként” gondolkodni! Egy PASCAL program felépítése: Egy PASCAL programot három részre oszthatunk: 1. Programfej 2. Deklarációs rész 3. Programtörzs
program program_neve; 3
PROGRAMOZÁSI NYELVEK (ELMÉLET) Uses unitok neve; var változók deklarálása; begin parancsok,utasítások amiket a program végrehajtson; End. Programfej: A programunk első sora a programfej. A PROGRAM szó után álló azonosító lesz a programunk neve. Ez célszerűen megegyezhet a program mentett nevével is. Mindez elhagyható, de használata javasolt a későbbi azonosítás megkönnyítésére. Figyeljünk rá, hogy az adott név ne szerepeljen a program többi részében azonosítóként! Unitok: A program második sorában a USES kulcsszó után a programunk által használt egységeket, más szóval UNITokat soroljuk fel. A System unit, amely a leggyakrabban használt deklarációkat,
konstansokat,
változókat,
eljárásokat,
függvényeket
tartalmazza,
automatikusan hozzászerkesztődik a programunkhoz. Unitokat mi is készíthetünk az
általunk sokat használt saját függvényeinkből és eljárásainkból. A PASCAL legtöbbet használt unitjai a következők: Deklarációs rész: A
harmadik
sorban
a
Var
kulcsszó
után
álló
változódeklarációs
szakaszban
a
programblokkban használt összes változót fel kell sorolni, és típusát megadni. A
típusmegadás történhet áttételesen, a Type utáni típusdeklaráció segítségével (ld. tömb). A konstansok használata programozói munkánkat könnyítheti meg (Const). Példa a deklarációra: Var x,y,z:integer; Programtörzs (végrehajtandó rész): BEGIN
[utasítások..] END.
A PASCAL szabad formátumú nyelv, azaz több utasítás is szerepelhet egy sorban vagy akár egy
utasítást
több
sorra
is
tördelhetünk.
Célszerű
a
program
olvashatóságára,
áttekinthetőségére törekedni, ezért tagolhatjuk tabulátorokkal és behúzásokkal is a
4
PROGRAMOZÁSI NYELVEK (ELMÉLET) programunkat. Ezeket az üres részeket a compiler figyelmen kívül fogja hagyni a fordítás során.
Az egyes utasításokat pontosvesszővel választjuk el egymástól!
A PASCAL nyelv nem különbözteti meg a kis és nagy betűket Programunkban korlátlan hosszúságú megjegyzést, más szóval kommentet helyezhetünk el a { ... } illetve a (* ... *)
jelek között. Ezeket célszerű használni, hiszen így a későbbiekben saját magunk is könnyebben eligazodunk az utasítások között. Begin-end blokk A PASCAL utasításai Begin és end közé zárt blokkokban helyezhetjük el. A program szerkezetéből is láthattuk, hogy maga az utasítás rész is egy ilyen blokkban szerepel. Itt a
végső end utasítást egy pont zárja, ami a program zárását is jelenti.
Ezen a fő blokkon belül alkalmazhatunk tetszőleges számú alblokkot, amit szintén Begin-
end utasítások közé zárva tehetünk meg. Figyelnünk kell rá, hogy minden Begin utasításnak legyen End párja! Ezekben az esetekben az End mögött pontosvesszőt használunk. Példa a használatra: Program elso; Uses crt; Var Begin Clrscr; For K:=1 To 100 Do Begin
Writeln(’Hello’);
Readln;
End;
End.
5
PROGRAMOZÁSI NYELVEK (ELMÉLET) A példa programban piros és zöld színekkel jelöltem az egymásba ágyazott blokkokat.
1.Értékadás A PASCAL nyelvben az értékadás a := karakterkombinációval történik. Ezt „legyen egyenlő”nek szoktuk mondani a matematikai értékadásokhoz hasonlóan. Bármilyen deklarált változónak adhatunk értéket a típusának megfelelően a program utasításrészében. Pl:
A:=2345;
2. Adatbevitel és adatkiírás Az adatbevitel és a kiíratás utasításai paraméterezhetőek. A paraméterek határozzák meg, hogy honnan, vagy pedig hová történjen a művelet. Alapvető beviteli eszköz a billentyűzet. Alapértelmezett kimenet pedig a monitor. Példa bevitelre:
Readln(A);
Read(A);
/Sort olvas be
/Egy adatot olvas be
Példa kimenetre: Writeln(’Helló Világ!’);
Write(A);
/Sort irat ki
/Egy adatot ír ki
3. Elágazások, feltételes programvégrehajtás Az elágazások teszik lehetővé, hogy a program változói értékétől függően különböző
tevékenységeket hajtson végre. Tipikus hiba PASCAL-ban, ha az Else elé pontosvesszőt teszünk, ez ugyanis kettévágná az elágazás utasítást! Általánosan:
If feltétel Then utasítás1 Else utasítás2
Nézzük meg egy konkrét példán keresztül: If A<0 Then Writeln(’Negatív’) Else Writeln(’Pozitív’);
4. Ciklusszervezés A PASCAL nyelv mind a három fajta ciklust alkalmazza. Nézzük meg sorban a használatukat! Előirt lépésszámú ciklus Itt előre meghatározzuk az ismétlések számát. Gyakorlatilag egy változó segítségével a program számlálja, hogy hányadik ismétlésnél tartunk.
6
PROGRAMOZÁSI NYELVEK (ELMÉLET) Az I (iteráció=ismétlés) változó értéke k kezdőértéktől v végső értékig egyesével nő (Downto esetén csökken). Szokásos módon Begin ... End blokkban adunk meg több utasításból álló ciklusmagot. Ez a ciklus akkor használható, ha ugyanazt a tevékenységet megadott számú esetben akarjuk lefuttatni.
Általánosan: For i:=k To v Do ciklusmag For i:=k Downto v Do ciklusmag Konkrét esetben: For K:=1 To 100 Do Begin
Writeln(’Hello’); End;
Elöltesztelő ciklus
Ebben a ciklusban a ciklusmag előtt található egy feltétel, aminek a kiértékelésétől függ a ciklus lefutása. Amíg a feltétel igaz addig fut a ciklus.
Általánosan: While feltétel Do ciklusmag Konkrét példán keresztül: While A<100 do Begin
Wrilten(A); A:=A+1; End;
Hátultesztelő ciklus
Itt a feltétel a ciklus végén van, de van még egy érdekesség is. Az Until után található
feltétellel úgy határozzuk meg a ciklus működési feltételét, hogy akkor marad abba az ismétlés, amikor a feltétel igazzá válik. Szokás az UNTIL utasítást „mígnem”-nek fordítani is ezért.
Általánosan
Repeat ciklusmag Until feltétel
Konkrét példán keresztül: Repeat
Writeln(A); A:=A+1;
Until A>100;
7
PROGRAMOZÁSI NYELVEK (ELMÉLET)
5. Függvények A függvények segítségével olyan algoritmusokat készíthetünk, amik meghívásukkor paraméterezhetőek és visszatérésükkor egy értéket adnak. Vagyis egy visszatérési értékkel adnak eredményt. A visszatérési értéket egy értékadással tudjuk a függvény utasítás
részében megadni. A függvény nevének, mint egy változónak adunk értéket. A függvények kifejezésekben használhatóak csak. Egy függvényt a nevével hívunk meg. Először deklarálnunk kell a függvényt: Általánosan:
Function Függvénynév(paraméterek):típus
Begin
Utasítások;
függvénynév := kifejezés; End Konkrét példában: Function Proba(x,y:integer):Integer Begin
Proba:=x+y; End
A függvény a deklarációs részben lett deklarálva. A neve utáni zárójelben a paraméterei fel vannak sorolva a típus deklarációjukkal egyben. A zárójel mögött található típus a
visszatérési érték típusa. Utána a program utasítás részében a neve segítségével bármikor meg lehet hívni a függvényt egy kifejezésben, de arra ügyelni kell, hogy a függvény típusa ne ütközzön a kifejezésben betöltött szerepével!
6. Eljárások Az eljárások annyiban különböznek a függvényektől, hogy nem értéket, hanem valamilyen tevékenységet képviselnek. Ezekre is nevükkel és paramétereikkel hivatkozhatunk. Az
eljárások bárhol meghívhatóak a nevükkel. Gyakorlatilag úgy viselkednek, mint egy általános paraméterezett utasítás.
Először deklarálnunk kell az eljárást: Általánosan:
Procedure Eljárásnév(paraméterek) Begin
utasítások ; End
Konkrét példa: Procedure Minta(x:integer)
Begin
Writeln(’Hello’,x); 8
PROGRAMOZÁSI NYELVEK (ELMÉLET) End Paraméter átadás Az eljárások és függvények lényeges tulajdonsága a paraméter átadás. Mivel a meghívásuk
paraméterekkel történik és a működésük során is a paraméterek befolyásolják a tevékenységüket, ezért erről kicsit részletesebben kell szólnunk. A paraméterek az eljárás és
az őt hívó programrész közötti adatcserét, kommunikációt szolgálják. A formális paraméterekkel írjuk le az alprogram tevékenységét. Híváskor ezek helyére konkrét objektumokat, aktuális paramétereket írunk.
Alapvetően PASCAL-ban kétféle paraméterátadás ismeretes: a, Érték szerinti paraméter átadás A deklarációban a formális paraméter előtt nincs VAR! Ekkor az aktuális paraméter értéke
kerül át a formális paraméterbe. Az eljárás minden egyes hívásakor a rendszer tárterületet
rendel a verem memóriában a formális paraméterekhez, és ide másolja be az aktuális
paraméterek értékeit. Az eljárás végeztével ez a terület felszabadul. Az aktuális paraméter
értékét az eljárás nem változtathatja meg, így ez csak bemenő paraméter. Az aktuális paraméter csak változó lehet. Példa a deklarációra: Procedure Minta(x,y:integer) Begin
x:=x+y;
Writeln(x); End
Példa a használatra: Begin a:=10; b:=13; Minta(a,b); Writeln (a,b); End;
Az eljárás lefutása után az a és b változó értékei nem módosulnak. Ugyan azok maradnak mint az eljárás futatása előtt, holott az eljárásban az a értékét módosítottuk. Ez a módosítás
csak az eljárás futásának idejére volt érvényes. b, Cím szerinti paraméter átadás
9
PROGRAMOZÁSI NYELVEK (ELMÉLET) A deklarációban a formális paraméter elé VAR -t írunk) Az aktuális paraméter címe kerül át a
formális paraméterhez, ha változik a formális paraméter, akkor az aktuális ugyancsak
változik. Ezáltal egyaránt használhatjuk be- és kimenő paraméterként is. Az eljárás vagy függvény lefutása után megváltozhatnak a paraméterként megadott változók értékei. Az aktuális paraméter csak változó lehet. Példa a deklarációra: Procedure Minta(var x:integer,y:integer) Begin
x:=x+y; Writeln(x); End
Példa a használatra: Begin a:=10; b:=13; Minta(a,b); Writeln (a,b); End;
Az eljárás deklarációja során az X paraméter elé VAR utasítást írtunk, amivel deklaráltuk a cím szerinti paraméter átadást számára. Az eljárás meghívása során az a változó lett
behelyettesítve az x helyére. Az eljárás gyakorlatilag az a változó memóriacímén dolgozott.
Az eljárás futásának végén így az a változó értéke megváltozik. Gyakorlatilag az a és b változó értéke kerül a helyére, mivel az eljárásban történt egy értékadás a címén.
TANULÁSIRÁNYÍTÓ A fent ismertetett tananyag egy iránymutató. A programozást igazán soha nem lehet „megtanulni”. Ezt csak tanulni lehet! Minden egyes új probléma megoldása során az ember új ismeretekre tesz szert. Mindig jobb és gyorsabb programokat tud írni az, aki ezt szívvel
lélekkel teszi. Ha valaki az ismertetett tananyag után kedvet kapott a programozás részletesebb megismerésére, akkor ajánlom a gyakorlati rész áttekintését is!
A tanulás során javaslok egy olyan sorrendet betartani, ami a tananyag ismertetésekor is történt. Ha tisztában vagyunk az alapfogalmakkal és a leíró rendszerekkel, akkor érdemes
gyakorolni a használatukat pár feladaton keresztül, ami a következő részben megtalálható lesz!
10
PROGRAMOZÁSI NYELVEK (ELMÉLET)
11
PROGRAMOZÁSI NYELVEK (ELMÉLET)
ÖNELLENÖRZŐ FELADATOK Ebben a részben találunk néhány feladatot, ami segít elmélyíteni a fenti ismereteket. A feladatokat itt kell megoldani a kijelölt helyen. Segítségképpen nyugodtan lapozzunk vissza kezdetben a tananyaghoz, de az lenne a végső cél, hogy teljesen önállóan tudjuk megoldani a feladatokat! 1. feladat Írjon programot a páros és páratlan számok kiválogatására! Használja segítségképpen a Programozásmódszertan 1 anyagot!
_________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________
12
PROGRAMOZÁSI NYELVEK (ELMÉLET) 2. feladat Írjon
programot
a
szökőévek
Programozásmódszertan 1 tananyagot!
kiválogatására!
Használja
segítségképpen
a
_________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________
13
PROGRAMOZÁSI NYELVEK (ELMÉLET)
3. feladat Írjon
programot
a
prímszámok
Programozásmódszertan 1 anyagot!
megkeresésére!
Használja
segítségképpen
a
_________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________ _________________________________________________________________________________________
14
PROGRAMOZÁSI NYELVEK (ELMÉLET)
MEGOLDÁSOK
1. feladat Program kivalogat; Uses crt; Var i:integer; t: array [1..10] of integer; Begin Clrscr; For i:=1 to 10 do begin Writeln(’Add meg az’,i,’. számot!’); Readln(t[i]); End; For i:=1 to 10 do begin If (t[i]/2)=int(t[i/2) then writeln(’Pozitív:’, else writeln (’Negatív:’,t[i]); End; Readln; End.
t[i])
15
PROGRAMOZÁSI NYELVEK (ELMÉLET)
2. feladat
Program szokoev; Uses crt; Var e:integer; Begin Clrscr; Writeln(’Add meg az ellenőrzendő évszámot!’); Readln(e); If ((e/4)=int(e/4)and ((e/100)<>(int(e/100)) then Writeln(’Szökőév’) else Writeln(’Nem szökőév’); Readln; End.
16
PROGRAMOZÁSI NYELVEK (ELMÉLET)
3. feladat program PRIM; var i,n:longint; k:boolean; begin Write('N:');ReadLn(n); i:=2;k:=true; repeat if n mod i=0 then k:=false; i:=i+1; until (i>Sqrt(n)) or not k; if k then WriteLn('Prím') else WriteLn('Nem prím'); end.
17
PROGRAMOZÁSI NYELVEK (ELMÉLET)
IRODALOMJEGYZÉK FELHASZNÁLT IRODALOM KUROS, A. G. : Felsőbb algebra. Budapest (Tankönyvkiadó) 1978. KNUTH, Donald, E.: A számítógép-programozás művészete I-III. Budapest (Műszaki) 1987. OBÁDOVICS J. Gyula: Matematika. Budapest (Műszaki) 1978. REIMANN József: Matematika. Budapest 1982. WIRTH, Niklaus: Algoritmusok + Adatstruktúrák = Programok. Budapest (Műszaki) 1982.
18