4. A pszeudokód¶
Amíg a folyamatábra az algoritmusok egy grafikus megjelenítési formája, addig a pszeudokód egy szöveges leírás. Külalakját tekintve nagyon hasonló a valós programnyelvek forráskódjához, bár egyértelműen eltér azoktól. Gyakran azt mondjuk, félúton van a mondatszerű leírás és a valós magas szintű programnyelvek között. Számos jól definiált jelentéssel bíró ún. kulcsszó-t alkalmaz, például az algoritmus alapszerkezetek megadásához. Tekintsük át ezeket!
Az egyes elemi utasításokat külön sorokba írjuk. A szekvencia emiatt nem más, mint egymás alatti sorokban megadott utasítások. Egy programegység utasításainak végrehajtását mindig az első (legfelső) sorával kezdjük, majd ezután az alatta lévő sor utasítással folytatjuk és így tovább. A felírás sorrendjének tehát fontos szerepe van.
Az elágazás megadásához kulcsszavakat más néven lefoglalt szavakat használunk. Az elágazást mindig egy if
kulcsszóval vezetjük
be a sor elején. Jelentése: ha. Ezután egy feltételt fogalmazunk meg egy logikai kifejezés segítségével. Ezt egy then
(azaz akkor)
kulcsszó követi, tehát a feltétel mindig az if
és then
kulcsszópár között van megadva általában egy sorban. Az ez utáni
sor(ok)ban kell megadni az elágazás igaz ágát, vagyis azokat az utasításokat szekvenciálisan, amelyeket igaz feltétel esetén szeretnénk
végrehajtani. Ezt az utasításcsoportot egy újabb sorban megadott else
kulcsszó zárja általános esetben. Az else
kulcsszó
egyben a hamis ág kezdetét is jelenti, tehát utána találjuk a hamis feltétel esetén végrehajtandó utasítások sorait. Végül a szerkezetet
az endif
kulcsszó zárja. Ez a kulcsszó azért fontos, mert így mindig tudjuk, hogy melyik utasítás tartozik az adott feltételes
ágba és melyik az, amely az elágazáson kívüli mindenképpen végrehajtandó lépés. Mint korábban már említettük az elágazások hamis ága
elhagyható, ilyenkor a then
kulcsszó utáni igaz ágat közvetlenül az endif
követi. Általános esetben tehát így néz ki a teljes
elágazás:
1 2 3 4 5 if <feltétel> then <utasítások> else <utasítások> endif
A végrehajtás menetet pedig a következőképpen írható le:
Értékelt ki a feltételt, azaz dönts az igazságtartalmáról!
Amennyiben a feltétel igaznak bizonyul hajtsd végre szekvenciálisan a
then
és azelse
kulcsszó közötti utasításokat, majd folytasd a 4. lépéssel!Különben (hamis feltétel esetén), hajtsd végre az
else
és azendif
közötti utasításokat!Folytasd a végrehajtást az elágazást követő utasítással, amit az
endif
utáni sorban találsz!
A hamis ág nélküli elágazás szerkezete a következő:
1 2 3 if <feltétel> then <utasítások> endif
Ebben az esetben, ha a feltétel hamisnak bizonyul, akkor az endif
kulcsszót követő sorban lévő utasítást hajtjuk végre,
kihagyva az igaz ágat a végrehajtásból. Fontos hangsúlyozni, hogy csak a hamis ág elhagyható pszeudokódban, az igaz ág mindig
jelen kell legyen.
Egy ismételés megadása a while
(vagyis amíg) kulcsszóval kezdődik, amit egy feltétel követ, majd a sort a do
foglalt
szó zárja. Az ez utáni sor(ok)ban található a ciklus magja egészen az enddo
kulcsszót tartalmazó sorig. Az általános forma tehát
ez:
1 2 3 while <feltétel> do <utasítások> enddo
Miután a while
előtti sort befejeztük, kiértékeljük a feltételt. Ha ez igaz, akkor belépve a ciklusmagba végrehajtjuk a do
és az enddo
közötti utasításokat. Ezt ciklikusan a feltétel újbóli kiértékelése követi, hasonlóan az előzőekhez. A pszeudokód
ciklusa tehát igaz
-ra ismétel. Amennyiben a feltétel bármikor (akár már az első kiértékelés során) hamisnak bizonyul a ciklusmag
kihagyásával az enddo
utáni sor végrehajtásába kezdünk.
A további pszeudokód kulcsszavak közül két gyakran használt kulcsszót kell még itt megemlítenünk, melyek az I/O műveleteket jelenítik meg. Adatbekéréshez az
input
kulcsszóval kezdődő bemeneti utasítást használjuk, amelyet egy változónév (esetleg változónevek listája) követ, ahová a
kapott adatok elmentésre kerülnek. A felhasználó felé történő kimenet megadására az output
kulcsszó utáni kifejezés megadásával
történik. Ha például a felhasználó által méterben megadott hosszúságértéket centiméter egységben akarjuk kiíratni, akkor csak az alábbi
két sort tartalmazó szekvenciális pszeudokódot kell megadnunk:
1 2 input HOSSZ_METERBEN output 100*HOSSZ_METERBEN
Egy utasításban több dolgot is beolvashatunk vagy kiírhatunk. Kiíratásnál az egyszerű szöveges üzenet esetén a szöveget idézőjelbe kell tenni.
1 2 3 output "Add meg a pontos időt (óra:perc)!" input ORA, PERC output "Ma eddig ", ORA*60+PERC, " perc telt el."
A kimenet tehát így fog kinézni egy konkrét esetben:
Add meg a pontos időt (óra:perc)! 6:10 Ma eddig 370 perc telt el.
4.1. Indentálás¶
Meg kell még említeni egy technikát, aminek használata nem kötelező, de javítja a kód olvashatóságát így használata erősen ajánlott. Ez az úgynevezett indentálás. Alap esetben írhatjuk a kód minden utasítását a sor legelejére. Szemléletesebb lesz viszont a kód, ha az algoritmus logikai szerkezetét a kód külső megjelenése is tükrözi. Például, ha egy utasítás egy elágazás egyik ágában vagy egy ciklus magjában helyezkedik el, akkor érdemes ezt az utasítást nem a sor elején kezdeni, kicsit bentebb húzva ezt az utasítást. Egy pszeudokódban többszörös egymásba ágyazás is előfordulhat, amikor például egy ciklus magjában van egy elágazás, amely akár egy másik elágazást vagy ciklust is tartalmazhat. Láttunk már ilyet az előző fejezetben, amikor a szökőév meghatározó folyamatábrát alkottuk meg. Lássuk most ugyanazt az algoritmust indentált pszeudokód segítségével.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 input ev if ev%4==0 then if ev%100==0 then if ev%400==0 then output "igen" else output "nem" endif else output "igen" endif else output "nem" endif
Az indentálás révén könnyen azonosíthatja az olvasó az egymást tartalmazó szerkezeteket. Minden tartalmazott egység kissé be van húzva az őt tartalmazó egységhez képest.
Meg kell jegyeznem, hogy az előző pszeudokódban (és később minden továbbiban) lévő logikai kifejezésekben az ==
alternatív
jelölést használom az értékek egyenlőségének vizsgálatára. Ezzel is kihangsúlyozva két művelet eltérő jelentését. Az A=B
utasítás egy
értékadást jelöl, jelentése: tárold el a B
mennyiség értékét az A
változóba! Az A==B
kifejezés azt jelenti, döntsd el, hogy
A
és B
értéke megegyezik-e! Később a valós nyelvekben is megfigyelhető lesz ez az eltérő jelölés.
4.2. A pszeudokód és a folyamatábra megfeleltetése¶
A fentiek alapján egy algoritmus konvertálása folyamatábrából pszeudokódra vagy ellenkező irányban könnyen elvégezhető. Néhány speciális esetre, szabályszerűségre, különbségre azért érdemes felhívni a figyelmet.
Pszeudokódban nincs
Start
szimbólum. A végrehajtás az első sorral kezdődik. (Később ez az állítás egy kis korrekcióra szorul majd.)A
Vége
szimbólum nem szükséges pszeudokódban, ha elfogynak a sorok a végrehajtás befejeződik. (Egyes esetekben praktikus lehet a végrehajtás megállítása az utolsó sornál hamarabb. Szükség esetén használhatjuk astop
kulcsszót.)A végrehajtás menetét alapvetően a felírás sorrendje határozza meg pszeudokódban, míg folyamatábra esetén ezt a szerepet a nyilat töltik be.
A folyamatábra téglalapjaiban szövegesen megadott elemi lépéseket pszeudokódban csak egyszerűen egy külön sorban tüntetjük fel.
A paralelogramma szimbólumok szerepét pszeudokódban az
input
/output
utasítások veszik át.Folyamatábra esetén a feltételek vannak jelölve (rombusz) nem az elágazás vagy az iteráció maga. Emiatt a leképezésnél könnyen összezavarodhatunk. Ha egy rombuszból kiinduló egyik nyíl mentén haladva visszajuthatunk közvetlenül a rombuszhoz (
enddo
), akkor ismétlésről van szó, azaz pszeudokódban awhile
kulcsszó után kell írni a feltételt (a rombusz tartalmát). Ha a rombuszt elhagyó nyilak mentén haladva a két ág egyesül, azaz két nyíl egybeolvad (endif
), akkor a rombusz tartalmát azif
és athen
kulcsszó közzé írjuk.Szükség esetén egy folyamatábra ágainak címkéi (
igaz
vagyhamis
) felcserélhetőek a feltétel tagadásával.Ismétlés esetén az (jobb esetben
igaz
címkével ellátott) visszatérő ág kerül ado
és azenddo
közzé. Az általábanhamis
címkével ellátott magelkerülő ág utasításait egyszerűen azenddo
után írjuk.Elágazás esetén az utasításokat mindenképpen tartalmazó (általában
igaz
címkével ellátott) ág utasításai athen
kulcsszó után kell, hogy elhelyezkedjenek. Amennyiben az egyik ág nem tartalmaz utasításokat, akkor pszeudokódban kihagyjuk azelse
kulcsszót.A
while
, ado
és azenddo
kulcsszavak mindig együtt (azonos számban) fordulnak elő.Az
if
, athen
, azelse
és azendif
kulcsszavak mindig együtt fordulnak elő. Előfordulásuk száma (azelse
kivételével) mindig megegyezik, egy adott kódban azelse
-ek száma lehet kevesebb is, mint azif
-eké.
A felsorolás elemeit szem előtt tartva könnyen átkonvertálhatunk egy algoritmust a két megjelenítési módszer között. Az alábbi ábra számos elem megfeleltetését mutatja be különböző színekkel megjelenítve őket.
4.3. További példák pszeudokódra¶
Azért hogy jobban megértsük a pszeudokóddal megadott algoritmusok működését illetve, hogy jobban átlássuk a kód megírásának folyamatát három további problémát is megoldunk.
1. példa: Először próbáljunk meg értelmezni egy már kész pszeudokódot! Vizsgáljuk meg mikor, milyen értéket vesznek fel a benne szereplő változók. Az algoritmus bemenetéről tudjuk, hogy két pozitív egész számról van szó. Az algoritmus a következőképpen néz ki:
1 2 3 4 5 6 7 8 9 10 input A input B while A!=B do if A>B then A = A-B else B = B-A endif enddo output B
Hajtsuk végre az algoritmust követve a pszeudokódban megadott utasításokat! Először meg kell adnunk a két bemeneti értéket.
Legyenek ezek, mondjuk a 24
és a 18
! A két érték elmentődik tehát a megadott változókba (A=24
, B=18
). Ezután egy ciklus következik,
aminek a feltételét kell kiértékelnünk. Most az A
és a B
változó értéke nem egyenlő, azaz a feltétel igaz
. Végre kell hajtanunk
a ciklus magját. Itt az első lépés egy elágazás feltételének megvizsgálása. Mivel 24
nagyobb, mint 18
, így a feltétel igaz
, azaz
a then
és az else
kulcsszavak közötti utasítást kell végrehajtani. Először az értékadás jobb oldalán lévő kifejezés értékét
határozzuk meg. A két változó értékének különbsége 6
, amit az értékadás bal oldalán megadott A
változóban tárolunk el
(felülírva a korábban ott tárol 24
értéket). Tehát jelenleg A=6
és B=18
. Mivel az else
ágat ki kell hagyni, a
ciklusmagban már nincs már utasítás. Az enddo
azt jelenti, hogy vissza kell mennünk a ciklus feltételéhez és újra megvizsgálni azt.
A második kiértékelés is igaz
feltételt jelent, a ciklusmagot újra végre kell hajtani. Az elágazás feltétele most hamis
, mivel
a 6
nem nagyobb, mint a 18
. Az else
kulcsszóra kell ugranunk, majd a B
változó értékét megváltoztatni 12
-re.
Ismét vissza kell ugranunk a ciklus feltételhez, ami még mindig igaz
. Harmadjára is belépve a ciklusba az if
feltétele most éppen
6>12
az A
értéke most változatlan marad B
viszont ezentúl a 6
értéket fogja tárolni. Az enddo
révén ismét visszajutunk
a ciklusfeltételhez. Ebben az esetben viszont már mindkét változó értéke 6
, vagyis az egyenlőtlenség nem teljesül. Amikor a
while
feltétele hamis
nem lépünk be a ciklusba, hanem az enddo
utáni következő utasítást hajtjuk végre. Ez a B
változó
értékének megjelenítését eredményezi, aktuálisan tehát a kimenet a felhasználó felé a 6
érték.
Hajtsuk még végre többször is a fenti algoritmust különböző bemenetek esetén és jegyezzük fel milyen bemenetek esetén milyen kimenetet kapunk!
Bemenetek |
Kimenet |
|
---|---|---|
24 |
18 |
6 |
18 |
24 |
6 |
13 |
13 |
13 |
55 |
45 |
5 |
11 |
7 |
1 |
136 |
272 |
136 |
Ha megvizsgáljuk mi az összefüggés a bemeneti értékek és a kimenet között, akkor rájöhetünk arra is, hogy mit csinál az algoritmus.
Az A
és B
pozitív egész számok legnagyobb közös osztóját határozhatjuk meg vele.
2. példa: Szeretnénk tudni, hogy egy adott egész számnál nem nagyobb, pozitív, páratlan számok összege mennyi. Ehhez elkészítettünk egy algoritmust folyamatábra segítségével. Most szeretnénk ugyanezt az algoritmust pszeudokóddal megadni.
Ez első lépések leképezése egyszerűen az alábbi 3 pszeudokód sort eredményezi:
1 2 3 input N i = 1 s = 0
Ezután egy rombuszt, azaz feltételt találunk, tehát először ki kell derítenünk, vajon ciklusról vagy elágazásról van szó. Mivel a
feltétel bal oldalán haladva újra eljuthatunk közvetlenül a feltétel elé így egyértelműen ciklusról van szó. Ez egyben azt is jelenti,
hogy a bal ágban van a ciklus magja. Ez viszont a hamis
címkével ellátott ág. Egy while
ciklus mindig igaz
feltétel esetén
ismétlődik (hamis
esetben kell kilépnünk a ciklusból). Ezt az anomáliát úgy tudjuk feloldani, ha a két ágat felcseréljünk a
tagadott feltétel alkalmazásával. A >
logikai operátor ellentettje a <=
relációs jel.
4 while i<=N do
Ezt a ciklus magjának kell követnie, ami esetünkben egy újabb rombusszal (feltétellel) kezdődik. Most azonban azt vehetjük észre, hogy
a két ág egy későbbi pontban találkozik és együtt haladnak tovább. Ez egyértelműen elágazást jelent. Először mindig az igaz
ágat
kell leírnunk pszeudokódban. Észrevehetjük, hogy az egyik ágban egyetlen utasítás sincs, míg a másikban egy értékadás elemi lépés szerepel.
Egy elágazásnak pszeudokódban csak az else
(azaz hamis
) ága hagyható ki, csak az lehet üres. Jelen esetben viszont pont ez
az üres ág van ellátva az igaz
címkével. Ezt az ellentmondást is kezelni tudjuk a feltétel megfordításával.
5 6 7 if i%2!=0 then s = s+i endif
Mivel az egyik ág üres, így tehát nincs else
kulcsszó, vagyis a két ág találkozási pontja az endif
kulcsszóval adható meg
pszeudokódban. Ezt egy inkrementálás követi. A folyamatábrán innen a nyíl mentén visszajutunk a ciklusfeltételhez. Vagyis ennek megfelelően az enddo
kulcsszót
írjuk le pszeudokódban. Figyeljünk az indentálások helyes használatára is! A folyamatábrán a ciklus feltételét tartalmazó rombuszból kiinduló nem
hurkolódó ágat kell ezután leírnunk. Ez egyetlen egyszerű kimenet megadását jelenti.
8 9 10 i = i+1 enddo output s
Kész is vagyunk, megtörtént a fenti folyamatábra pszeudokóddá alakítása. Természetesen itt is léteznek alternatív algoritmusok. Egy teljesen más gondolatmeneten alapuló hatékonyabb megoldás így nézhet ki pszeudokódban.
1 2 3 4 5 6 7 8 9 input N if N%2==0 then N = N-1 endif while N>0 do s = s+N N = N-2 enddo output s
A ciklus magja egyszerűbb és kevesebbszer is kell ismételni, ráadásul a korábbi i
változó használatát is megspóroltuk. Persze, ha
a számtani sorozatokat jól ismerjük, akkor a matematikai tudásunkat felhasználva még hatékonyabb megoldást is kaphatunk:
1 2 3 4 5 6 input N if N%2!=0 then output ((N+1)*(N+1))/4 else output (N*N)/4 endif
Látszik tehát, hogy amennyiben nem csak a helyes megoldás megtalálása a cél, hanem a hatékonyság is, akkor érdemes jól átgondolni az
algoritmusainkat. Aki ezt nem hiszi el, hajtsa végre a mind a 3 algoritmusverziót N=20
bemenet esetén!
3. példa: Vegyünk elő most egy másik problémát és hozzuk létre az ezt megoldó algoritmust pszeudokóddal! Bontsunk egy pozitív egész számot
prím tényezőkre! Másképpen megfogalmazva a feladatot adjuk meg azoknak a csak eggyel és önmagukkal osztható számoknak a sorozatát,
amelyeknek a szorzata a bemenetként megadott szám! Először is a felhasználónak meg kell adnia a konkrét számot, aminek értékét az
algoritmusunkban az N
nevű változóban tároljuk.
1 input N
A probléma megoldásához ezt a számot osztogatnunk kell más értékekkel figyelve arra, hogy az osztó prímszám-e. Tehát kell egy változó,
nevezzük P
-nek, melyben az aktuális osztó értékét tároljuk. Ennek kezdeti értéke legyen a legkisebb prím, azaz a 2
!
2 P = 2
Ezt követően minden egyes prím tényezőt ciklikusan megkeresünk, tehát biztosan egy while
kulcsszó következik. Azonban mielőtt
meghatároznánk a ciklus feltételét, először írjuk le a ciklusmag lépéseit! Mit kell ismételgetnünk a cél elérésének érdekében?
Meg kell vizsgálnunk az oszthatóságot és azt, hogy az osztó prím-e. Két szám akkor
osztható, ha az osztás során a maradék nulla. Ez tehát egy elágazást eredményez, ami a ciklusmagon belül van, ezért kezdhetjük a sorát
egy kicsit bentebb.
4 if N%P==0 then
Először az igaz esetet kell leírnunk, azaz ha N
osztható P
-vel. Ebben az esetben tehát P
lehet egy N
-et eredményező
szorzat egyik tényezője. Azonban ez az N
osztó lehet, hogy többször is előfordul a tényezők között (gondoljunk a hatványokra).
Nekünk mindegyik előfordulásra szükségünk van. Ezeknek a megtalálásához használjunk egy kis trükköt! Ha találtunk egy P
osztót,
akkor a későbbiekben már ne az eredeti N
értéket vizsgájuk, hanem az N/P
hányadost, aminek az értékével akár felül is írhatjuk
a számunkra többé már nem használandó eredeti N
változó értéket. Az alábbi értékadás a cikluson belüli elágazáson belül van, ezért
duplán indentáljuk.
5 N = N/P
Ha erre az új értékre többször is végrehajtjuk a ciklusmag lépéseit, akkor P
minden előfordulását megtaláljuk a tényezők között.
Viszont bennünket csak prím tényezők érdekelnek. Ahelyett, hogy egy újabb ciklusban megvizsgálnánk, hogy az aktuális P
érték mivel is osztható egyáltalán, inkább gondolkozzunk egy kicsit! P
értéke kezdetben 2
, ami egy prímszám. Később ezt az
értéket folyamatosan növelni akarjuk, hogy teszteljünk más számokat is. A 3
is prím. A 4
viszont már nem az. A kérdés az, hogy
ez zavarja-e a megoldás menetét. Mivel korábban a 2
-t, mint lehetséges osztót megvizsgáltuk és felderítettük az összes előfordulását,
biztosak lehetünk benne, hogy az aktuális N
érték nem osztható 4
-gyel, mert akkor már korábban osztottuk volna kétszer is
2
-vel. Másként fogalmazva, mivel a P
-nél kisebb értékekkel már osztottunk korábban az aktuális P
csak akkor lehet osztó,
ha prím. Ebben az esetben viszont ki is kell őt írnunk, mint a keresett prím tényezők egyike.
6 output P
Nézzük most azt az esetet, amikor az oszthatóság nem teljesül! Ez lesz az elágazás hamis ága, amiben választanunk kell egy új osztójelöltet,
ezért vesszük a következő egész számot és eltároljuk P
-be!
7 8 9 else P = P+1 endif
Ezzel a ciklus magját be is fejeztük, a következő sor az enddo
kulcsszót tartalmazza (már nem indentálva). Viszont hiányzik még
a ciklus feltétele. A megfelelő osztók keresését ciklikusan végezzük,
kezdve tehát a P=2
esettel, majd szükség esetén a P
értékét növelni kell az osztandó N
értékét pedig esetleg csökkenteni.
Abban biztosan lehetünk, hogy az ismétlést nem kell folytatnunk, ha a P
osztó értéke nagyobb lesz, mint maga az N
osztandó.
Ebből következik a ciklus feltétele:
3 while P<=N do
A ciklusból való kilépés egyben azt is jelenti, hogy megtaláltuk és kiírtuk az összes prím tényezőt, azaz az algoritmus befejeződhet. A teljes pszeudokód a fentiek alapján tehát így néz ki:
1 2 3 4 5 6 7 8 9 10 input N P = 2 while P<=N do if N%P==0 then N = N/P output P else P = P+1 endif enddo
Ha esetleg a módszer nem lenne teljesen ismeretlen, az nem a véletlen műve. Ugyanez az algoritmus szerepel folyamatábrával megadva az előző fejezet végén található feladatsorban.
Az algoritmusok további általános eszközei kizárólag pszeudokóddal lesznek bemutatva. Ezek közül elsőként a tömbökről szerezhet információt az olvasó a következő fejezetben.
4.4. Szójegyzék¶
- indentálás
A kód sorainak bentebb kezdése (behúzása) az őt tartalmazó szerkezeti egységen (ciklusmagja, elágazás ága) belül. Tehát a
do-enddo
, athen-else
, azelse-endif
és hamis ág nélküli elágazás esetben athen-endif
kulcsszópárok közötti sorokat érdemes behúzni.- kulcsszó
Olyan karaktersorozat, melynek konkrét jelentést tulajdonítunk, nem használhatjuk más célra (például változónévként). Ezek a lefoglalt szavak fontos szerepet töltenek be a pszeudokódban.
- pszeudokód
Algoritmusok egy olyan szöveges megadási módja, amely formailag nagyon hasonlít egy egyszerűsített valódi számítógépes program szövegére, bár a számítógép közvetlenül nem tudja értelmezni.
4.5. Kérdések, feladatok¶
Mit ad eredményül az alábbi algoritmus, ha bemenetként
a=7
ésb=3
értékeket kap?1 2 3 4 5 6 7 8
input a input b c = a while b>0 do b = b-1 c = c-1 enddo output c
Mire szolgál a fenti algoritmus? Mi az összefüggés a bemenetek és a kimenet között?
Mit ad eredményül az alábbi algoritmus, ha bemenetként
A=30
ésB=105
értékeket kap? Mit csinál az algoritmus? [S403]1 2 3 4 5 6 7 8
input A input B while B>0 do C = B B = A%B A = C enddo output C
Írd le az alábbi folyamatábrával megadott algoritmust pszeudokóddal! [S404]
Alakítsd át az alábbi folyamatábrával megadott algoritmust pszeudokódá! [S405]
Írj le egy algoritmust pszeudokód segítségével, amely egy bemenetként megadott egész számról eldönti, hogy páros-e vagy nem! A kimenet a
"páros"
vagy"páratlan"
szavak egyike legyen!Írj le egy algoritmust pszeudokód segítségével, amely az
x
bemenetet emeliy
hatványra! Azx
bemenet (alap) tetszőleges valós szám lehet, míg azy
(kitevő) egy nem negatív egész számot jelent.Írj le egy algoritmust pszeudokód segítségével, amely három pozitív valós számról eldönti, hogy azok lehetnek-e egy derékszögű háromszög oldalhosszúságai! Használd fel a Pitagorasz-tételt! Ha van ilyen oldalhosszúságokkal rendelkező derékszögű háromszög, akkor valamelyik két oldalnak a négyzetösszege megegyezik a harmadik oldal négyzetével. [S408]
Írj egy pszeudokóddal megadott algoritmust, mely két egész számot vár bemenetként! A bemeneteket nevezzük
A
-nak ésB
-nek! Az algoritmus határozza meg a két szám közötti (beleértve magukat a bemeneti értékeket is) egész számok összegét!Adj meg pszeudokód segítségével egy algoritmust, amely eldönti egy egész számról, ahogy az prím szám-e! [S410]
Írj le egy algoritmust pszeudokód segítségével, amely a bemenetként megadott két pozitív egész szám legkisebb közös többszörösét határozza meg!
Alkosd meg azt a pszeudokódot, amely a Fibonacci-sorozat első 20 értékét jeleníti meg kimenetként! [S412]