Programozási Alapismeretek Könyv

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 0

Programozsi

alapismeretek jegyzet
B Ba ar rh h c cs s O Ok kt ta at t K K z zp po on nt t
2 20 00 02 2. .
Barhcs OktatKzpont Programozsi alapismeretek modul 1. fejezet
2.
Trtneti ttekints
Elzmnyek
A szmtstechnika kezdetn elterjedt (egyeduralkod) volt a mrnkpult hasznlata,
a gp s az ember kommunikcija binris nyelven zajlott.
A gpi kd programozs nem tette lehetv komplex, ltalnos jelleg programok
ksztst (a programok csak egy megadott feladatra szletnek), megjelennek az
alacsonyszint (assembly) nyelvek (a gpi utastskdokat az angol nyelvi
megfelelik rvidtsvel - mnemonikokkal - jelzik, a binris adatszerkezeteket
felvltja a hexadecimlis brzolsmd).
A hardver fejldse bonyolultabb programok ksztst tette lehetv, kialakul a
"szoftverkrzis": a tesztelt programok az zemeltets sorn javthatatlan hibkat
tartalmaznak (nem volt javtsi lehetsg). A hardver gyorsabban fejldik, mint a
szoftver, mivel a termkek gyorsan elavultak, kemnyen ellenlltak a
mdostsoknak.
Programozsi nyelvek fejldse
Az '50-es vek elejn az IBM-nl megkonstruljk a Fortrant. Ltrehozsnak oka a
gpi kd alkalmazsnak knyelmetlenn vlsa, valamint az automatizls
lehetsgnek felmerlse. A Fortran tudomnyos, mszaki nyelv,
szvegfeldolgozsra alkalmatlan, viszont alkalmas matematikai mveletek
vgzsre. jabb verzii miatt 2002-ben is l nyelv, a szociolgiai, kmiai, fizikai
statisztikai szmtsoknak kb. felt ma is Fortrannal vgzik.
Az '50-es vek msodik felben az amerikai hadgyminisztrium benyjtja krst
az IBM-nek: ksztsenek a feltteleiknek megfelel magas szint programnyelvet.
Megszletik a Cobol, amely adatfeldolgozsra, pnzgyi, gazdasgi, nyilvntartsi
feladatokra alkalmas. Innentl az IBM Fortrant s Cobolt szllt a gpeihez.
1960-ban az IBM eurpai kzpontjban ltrehozzk az Algol60-t. Ez az els
matematikai rtelemben definilt nyelv. Hivatkozsi nyelve is van, rendezett
fogalomrendszerrel rendelkezik. Az IBM nem tmogatja, ennek ellenre nagy
jelentsg, konstrukcija ma is hat. Ekkortl kezdve az Algol60 az algoritmus-ler
szabvny, a ksbbi nyelvek vagy belle indulnak ki, vagy tagadjk. Az Algol60
tagadsra pl nyelvek: pl. LISP (a mestersges intelligencia tmogatsra
fejlesztettk ki), APL (eszkzrendszere mg ma is egyedlll).
Barhcs OktatKzpont Programozsi alapismeretek modul 1. fejezet
3.
'60-as vek els fele: Mindenki nyelvet gyrt. Tbb szz nyelv szletik, ltalban az
Algol60-ra hivatkoznak. (pl. BASIC, de csak a '80-as vekben vlik vilgmretv)
'60-as vek kzepe: Az IBM elhatrozza, hogy a nyelvek kavalkdjban rendet
teremt. Olyan nyelvet akarnak alkotni, amely egyesti az eddigi nyelvek elnyeit, s
opercis rendszer rsra is alkalmas. gy jn ltre a PL/1. A nyelv tl bonyolultra
sikerlt, sok mindent megprbltak belezsfolni. j fogalmak (kztk egyedlllak
is) jelentek meg, pl. az alnyelv (subset). Az alnyelvek (A-tl F-ig) eszkzrendszere
halmazszeren pl egymsra. Legszkebb az A halmaz, ez a minimlis, az F a
teljes eszkzrendszert tartalmazza. A szakma a PL/1-t alkalmatlannak nyilvntja
opercis rendszer rsra, s az eddigi nyelveket hasznlja fel.
1967: SIMULA67. Egy teljesen eltr filozfit vezet be, mert objektumorientlt.
1968: ALGOL68. Olyan bonyolultra terveztk, hogy egy ideig fordtprogramja sem
volt. Elmleti jelentsg.
1971: Wirth, aki ms jelents nyelvek ltrehozsban is segdkezett, megkonstrulja
a PASCAL-t. Standard algoritmus-ler nyelv, tveszi az Algol60 szerept.
Eszkzrendszere szks, rengeteg implementcija ltezik, rengeteg eltrssel. A
gyakorlatban is jelents, pl. a kzoktatsban az els szm nyelv.
A PROLOG Eurpban, Franciaorszgban szletik meg, a mestersges intelligencia
kutats tmogatsra.
'70-es vek kzepe: Az amerikai hadgyminisztrium jabb kvnsglistt nyjt be,
melynek eredmnye az ADA. Ez a nyelv sajt kategrijban a cscs, minden benne
van, ami kell. Bonyolult, az elmletben kulcsnyelv, de gyakorlatban is jelents. (pl. a
NATO-ban alkalmazzk)
'70-es vek vge: C nyelv. Az snyelvek mellett j szerepet jtszik, bizonyos verzii
a '80-as vektl kezdve a szakma nyelvnek szmtanak. Az els magas szint
nyelv, amin opercis rendszert valstanak meg.
'80-as vek: Jelents nyelvet nem konstrulnak.
- SMALLTALK: A '80-as vekben fejldik ki. Az els vizulis kezelfellet
nyelv.
- EIFFEL: Csak az elmleti szerepe jelents.
- C++: Ma alapvet szerepe van.
'90-es vek: JAVA. Ma a Java "a" nyelv.
Barhcs OktatKzpont Programozsi alapismeretek modul 1. fejezet
4.
Programozsi nyelvek osztlyozsi szempontjai
1
Genercik szerint
Els generci:
- manulis programozstechnika
- gpi kd, alacsonyszint nyelvek hasznlata
Msodik generci:
- magas szint nyelvek hasznlata
- strukturlt programozstechnika megjelense
Harmadik generci:
- objektumorientlt megkzelts kialakulsa
- objektumorientlt nyelvek hasznlata, kiegsztsek, "rpl" nyelvek kifejldse
Negyedik generci (4GL):
- vizulis kezelfellet nyelvek megjelense
- esemnyvezreltsg kialakulsa
- az objektumorientltsg alapvet kvetelmny
Mkds szerint
Procedurlis nyelv, amelyben a programoz adja meg az utastsok
vgrehajtsnak sorrendjt s mikntjt. Brmely adatszerkezeten brmely nyelvi
utasts vgrehajthat a szintaktikai szablyoknak megfelelen.
Objektumorientlt nyelv, amelyben az adatokat s a rajtuk vgrehajthat
utastsokat egy egysgknt kezeljk. A programoz korltozva van abban, hogy
milyen utastsokat hajthat vgre az adatokon.
Esemnyvezrelt nyelv, amely mr nem lineris szerkezet, az utasts
vgrehajtsa az objektumhoz tartoz esemnyhez ktdik (az utasts vgrehajts
sorn a programoz korltozva van abban, hogy hogyan hajtathatja vgre azt).
Szerkezet szerint
Az imperatv (utastsszerkezet) nyelvek alapeszkzei az utastsok s a
vltozk. A program szvege utastssorozat, minden utasts mgtt gpi kd ll.
Minden program utastssorozat, amely mgtt tbb gpi utasts ll. Ktdnek a
Neumann-architektrhoz, ltalban fordtprogramosak. Algoritmikus nyelvek, a
programban azt az algoritmust rom le, amelyet a gp vgrehajt, s a problma
megoldsa gy szletik meg. A program a hatst a tr egyes terletein lv
rtkeken fejti ki.
A deklaratv (lersjelleg) nyelveknl nincs utastsfogalom, a Neumann-
architektrtl tvol ll. Nem algoritmikusak, a programban csak a problmt
fogalmazom meg, a megoldst nem, az algoritmus a rendszerbe van beptve. A
trhoz a programoznak kevs kze van, nem feladata a tr egyes rszeinek
mdostsa.

1
Mellklet: pralap_I.ppt
Barhcs OktatKzpont Programozsi alapismeretek modul 1. fejezet
5.
Alapdefincik
- Informci: rtelmezett adat, rtesls, j adat, mely sszefggseivel egytt
kerl be ismereteinkbe. Az informci mrtkegysge a bit, ami vagy 1 vagy 0
(igaz vagy hamis, magasabb vagy alacsonyabb elektromos feszltsgi szint)
rtket vehet fel.
- Adat: A szmtgpben jelsorozat formjban trolt, kdolt informci. A
bennnket krlvev vilg objektumainak (trgyak, dolgok) mrhet s nem
mrhet jellemzi. Adat egy trgy kilogrammban kifejezett rtke, egy ember
neve, a ruha szne. Mindegyik egy tulajdonsgot jellemez, de tartalmukat tekintve
klnbzek. Az adatok jellemzsnek egyik mdja, hogy megadjuk milyen
rtkeket vehetnek fel az adott szituciban, s ezekkel milyen mveleteket lehet
elvgezni. Egy adat lehetsges rtkeinek halmazt tpusrtk-halmaznak
nevezzk. Egy adat tpust hrom dolog hatrozza meg. Egyrszt azok az
rtkek, amelyeket az adat felvehet, a tpusrtk-halmaz. Msodszor az a
szerkezet, ahogyan egy ilyen rtk egyszerbb tpusok rtkeibl felpl.
Harmadszor azoknak a mveleteknek az sszessge, amit az adott halmazon el
lehet vgezni.
- Parancs: a szmtgp szmra adott kzvetlen utasts.
- Upgrade: tdolgozott verzi, tovbbfejlesztett, bvtett funkcikkal.
- Update: frisstett verzi, hibk javtsval, program jabb adatokkal val
feltltse.
- Szintaktika: A szveg sszelltsra vonatkoz szablyok sszessge.
- Szemantika: A program mkdsre vonatkoz szablyok sszessge.
- Hivatkozsi nyelv: Egy magas szint nyelvnek defincija van, ez ltalban
szabvny. A hivatkozsi nyelv a szintaktikai s szemantikai szablyokat adja meg,
definilja a nyelvet. Csak egy darab van belle.
- Implementci: A nyelv adott rendszeren belli konkrt megvalstsa, ltalban
nem kompatibilis a hivatkozsi nyelvvel.
- Compiler (fordt): a magas szint programozsi nyelven rt programot lefordtja
a gp szmra rthet formra. (Pascal, ADA, Clipper).
- Interpreter (rtelmez): egy magas szint programozsi nyelven rt programot
rtelmez a gp szmra. (BASIC, LOGO).
- Absztrakci: azon adatok s tulajdonsgok kivlasztsa, melyek egy feladat
vgrehajtshoz szksgesek
- Dekompozci: a feladat rszekre bontsa.
- Alacsony szint nyelv: az ember ltal nehezebben megfogalmazhat, nagyobb
programozi munkt ignyl, gpkzeli programozsi nyelv. Az assembly nyelv
utastsai 3 rszre oszthatak:
- cm: az a memriarekesz, amiben az adott utasts tallhat
- utastskd: mnemonikok: a nyelv alapszavainak rvid, knnyen
megjegyezhet formi
- operandus: mvelet elvgzshez szksges adatot vagy cmet tartalmazza
- Assembler: program, mely az assembly-ben rt programot lefordtja a gp
szmra rthet formra.
Barhcs OktatKzpont Programozsi alapismeretek modul 1. fejezet
6.
- Magas szint nyelv: a programoz szmra knnyebben megfogalmazhat,
emberkzelibb, bvebb utastskszlettel rendelkez programnyelv. Hordozhat,
viszonylag gpfggetlen programok. Sok utastssal rendelkeznek, sszetettebb
feladatok megvalstsra is kpesek.(Pl. Pascal, C, Basic, Delphi, Clipper,
LOGO)
- Forrsprogram: maga a program egy adott programozsi nyelven kdolva.
- Trgyprogram: flig fordtott kd (clkd), kisebb helyet foglal, a hardver
utastsok gpi kdjt vgleges formban tartalmazza, de a cmek tcmezhetk.
Az object knyvtrbl msoldnak hozz programmodulok.
- Gpi kd program: gpi kd utasts: a gp szmra vgrehajthat utastsok
sorozata.
- Szintaktikai hiba: egy programnyelv azon szablyainak megsrtse, amelyek az
utastsok s adatok lersra vonatkoznak. ltalban elgpels okozza.
- Szemantikai hiba: logikailag rtelmetlen mvelet, az adatok tartalmi hibjbl
s/vagy helytelen csoportostsbl, hibs sszefggseibl kvetkez
hiba.(tmbn tli indexels).
- Programfejleszts: a program elksztsnek munkafolyamata a felmerl
problmtl a ksz, eladhat termkig.
- Analzis: felmrjk a helyzetet: mire van szksg, mik a lehetsgek?
- Feladatspecifikci: a feladat pontos megfogalmazsa, az esetleges kperny-
s listatervekkel egytt.
- Fejleszti dokumentci: a program fejlesztst vgigksr dokumentcik
sszessge.
- Felhasznli dokumentci: a program hasznlatval kapcsolatos tudnivalkat
tartalmazza.
- Kdols: a forrsprogram elksztse.
- Tesztels: a hibk feldertse.
- Szrazteszt: a programterv gondolatban val ellenrzse, kiprblsa.
- Felhasznlbart: a program szp, nem idegest, teljes mrtkben szolglja a
felhasznlt.
Barhcs OktatKzpont Programozsi alapismeretek modul 1. fejezet
7.
Az algoritmus
Az algoritmus egy feladat megoldsra szolgl egyrtelmen elrt mdon s
sorrendben vgrehajtand vges tevkenysgsorozat, mely vges id alatt
befejezdik. A tevkenysg matematikai mvelettl kezdve tetszleges szmtsi,
gyrtsi vagy technolgiai mvelet lehet.
Az algoritmusokkal szemben tmasztott kvetelmnyek
- Lpsekbl ll. Vgrehajtsa lpsenknt trtnik (folyamat).
- Minden lpsnek egyrtelmen vgrehajthatnak kell lennie.
- Rszletezs, dekompozci.
- A vgrehajts trgya az adat.
- A vgrehajtand instrukcinak valamilyen clja van.
- Vannak bemen adatai, melyeket felhasznl.
- Legalbb egy kimen adatot produklnia kell.
- Vges szm lpsben megoldhatnak kell lennie.
- Legyen hatkony s elronthatatlan!
- Legyen az algoritmus felhasznlbart!
Az algoritmus llapottere
Az elfelttelben lerjuk a vltozk segtsgvel azt a felttelt, ami a
kezdllapotokat jellemzi, az utfelttelben pedig a vgllapotok jellemzit.
A feladat specifikcija (deklarcija) sorn megadjuk a feladat szempontjbl
lnyeges tpusrtk-halmazokat a hozzjuk tartoz vltozkkal egytt, a vltozk
segtsgvel lerjuk az el- s utfelttelt.
Barhcs OktatKzpont Programozsi alapismeretek modul 1. fejezet
8.
A program I.
A program elre megadott utastsok logikus sorozata, amely kzli a szmtgppel,
hogy mit tegyen a betpllt adatokkal az adott feladat elvgzse rdekben. A
program = algoritmus + adatszerkezetek (Wirth).
A programfejleszts lpsei
Compileres technika
1. Forrsprogram megrsa, szerkesztse egy szvegszerkesztvel
2. Forrsprogram lefordtsa a fordtprogram segtsgvel eredmnye a trgykd
3. Gpi kd futtathat llomny ltrehozsa a kapcsolatszerkeszt segtsgvel
4. Program futtatsa a betlt segtsgvel, hibakeress
Ahhoz, hogy a szmtgpet cljainknak megfelelen tudjuk hasznlni, programot
kell rnunk. Ehhez ltalban valamilyen szvegszerkesztt hasznlunk. A megrt
programszveget forrsprogramnak nevezzk. Ahhoz, hogy a programot
megrtessk a gppel, a forrsprogramot le kell fordtani a gp szmra rthet
formra. A fordtprogram a forrsprogramot n. trgyprogramm vagy
trgykdd alaktja t, amely mr gpi kd program. Szksg lehet egyb
programrszekkel val szerkesztsre, illetve el kell ltni a futtatshoz szksges
informcikkal. A szintaktikai hibk a fordtsnl, a szemantikai hibk a program
futsa alatt (vagy egyltaln nem) derlnek ki. Csak szintaktikailag helyes szvegnek
van trgykdja. A szerkesztprogram kszti a futtathat programot, a betlt
feladata a futtathat program betltse a trba s elindtsa.
Interpreteres technika
Nhny nyelvhez hasznlhat interpreter (rtelmezprogram). Ez nem llt el
trgykdot, hanem magt a forrsprogramot hajtja vgre utastsonknt. Nem
kpzdik trgykd, nincs szksg kapcsolatszerkesztsre, de minden futtatskor jra
kell rtelmezni a forrsprogramot, utastsonknt. A forrsszveget elemei szerint
rtelmezi, az rtelmezs utn rgtn az eredmnyt szolgltatja. Htrnya, hogy
trgykd hinyban llandan kirtkel (pl. ciklusoknl), s elfordulhat, hogy az
esetleges hibk helyre a tesztels ideje alatt egyltaln nem kerl a vezrls (pl.
elgazsoknl), teht egyes szintaktikai hibk rejtve maradhatnak.
Jellemzi:
- Az rtelmeznek mindig benn kell lennie a memriban >> rossz
memria-kihasznls.
- A programokat utastsonknt rtelmezi s hajtja vgre >> lass
vgrehajts.
- Prbeszdes munka >> knnyebb programfejleszts.
Barhcs OktatKzpont Programozsi alapismeretek modul 1. fejezet
9.
Programmal szembeni elvrsok
- Megszokott alkalmazi fellet
- Gyorsasg
- Hatkonysg
- Egyszersg
- Olcssg
- Rugalmassg
- Korltlan tovbbfejleszthetsg
- Knny kezelhetsg
- rthetsg
- Biztonsg
- Tudja a felhasznl, hogy pp mit csinl a gp
Barhcs OktatKzpont Programozsi alapismeretek modul 1. fejezet
10.
Ellenrz krdsek
I.
KREM VLASSZA KI A HELYES MEGOLDST!
1. Mikorra tehet az els magas szint programnyelvek ltrejtte?
a., 1940-es vek vge
b., 1950-es vek
c., 1962-tl
2. A programozsi nyelvek hnyadik genercija alaktotta ki az objektumorientlt
megkzeltst?
a., els
b., harmadik
c., negyedik
3. Mi a compiler?
a., fordt
b., rtelmez
c., szerkeszt
4. Az assembler
a., egy nyelv
b., egy fordt
c., egy opercis rendszer
5. Mi a hivatkozsi nyelv?
a., magas szint nyelvek sszefoglal neve
b., egy magas szint nyelv szintaktikai s szemantikai szablyainak lersa
c., a nyelv egy adott rendszeren belli megvalstsa
6. Hny genercijt ismerjk a programozsi nyelveknek?
a., hrom
b., ngy
c., t
7. Mi a trgykd?
a., szerkeszts eltti binris kd
b., a lert programszveg
c., a futtathat program
Barhcs OktatKzpont Programozsi alapismeretek modul 1. fejezet
11.
II.
KREM DNTSE EL, HOGY IGAZ, VAGY HAMIS-E AZ LLTS!
1. A FORTRANT az IBM dolgozta ki.
igaz
hamis
2. A msodik genercis nyelvek magas szintek.
igaz
hamis
3. Az esemnyvezreltsg a programozsi nyelvek harmadik genercijban jelenik
meg.
igaz
hamis
4. Az imperatv szerkezet nyelvek nem algoritmikusak.
igaz
hamis
5. A szintaktika a szveg sszelltsra vonatkoz szablyok sszessge.
igaz
hamis
6. Az implementci azon adatok s tulajdonsgok kivlasztsa, melyek egy feladat
vgrehajtshoz szksgesek.
igaz
hamis
7. Az algoritmusok mindegyike vges idn bell befejezdik.
igaz
hamis
III.
KREM VLASZOLJON A FELTETT KRDSEKRE!
1. Mi a mnemonik?
2. Mi a jelentsge az ALGOL programozsi nyelvnek?
3. Melyik volt az els objektumorientlt nyelv?
4. Milyen programozsi nyelv genercikat ismer?
5. Hogyan osztlyozn a nyelveket mkds szerint?
6. Mi a klnbsg az imperatv s a deklaratv nyelvek kztt?
7. Mi az adat?
8. Mitl tekintnk egy nyelvet magas szintnek?
9. Mi az algoritmus?
10. Mik a programfejleszts lpsei compileres technika esetn?
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
12.
A program II.
A program lettja
2
A program elksztse egy gyrtsi folyamat, melynek tbb fzist klnbztetjk
meg. A fzisokon val vgighaladst a program lettjnak szoks nevezni.
Feladatmegfogalmazs
A program megrendelje megfogalmazza elvrsait, ignyt kznapi vagy a
megrendel szakmai nyelvn. Jobb helyeken a megrendelvel a rendszerszervez
trgyal, akinek feladata a megrendel szakmjnak olyan szint ismerete, hogy
eldnthesse a feladatrl, hogy az mennyire szmtgpesthet, milyen
hardverigny, ltezik-e a problma megoldsra mr ksz szoftver. Tovbb milyen
talaktsokat ignyel a hagyomnyos folyamat a gpestshez. A rendszerszervez
feladata az is, hogy kzeltleg megbecsli a szoftver elksztsi idejt s kltsgt.
A feladat megfogalmazsa legyen pontos, egyrtelm, teljes; rvid, tmr formalizlt;
szemlletes, rthet, tagolt formj. Egyrtelmen s pontosan azt a feladatot s
gy oldja meg, ahogy azt a feladat kitzje elvrja.
Specifikci, algoritmustervezs
A rendszerszervez, a programoz s a megrendel pontosan meghatrozzk az
alkalmazs feltteleit s hatrait, a lehetsges tovbbfejlesztsi irnyokat. A
feladatot a lehet legpontosabban lerjk, ez lesz a programoz irnytje a
tovbbiakban. Az elkszlt specifikci a szakmai nyelv mellett tartalmazza a
programozi szhasznlatot is a megrendel, felhasznl szmra is rthet s
ellenrizhet formban. A program legfbb rszeit valamilyen mdon meg kell
terveznnk. E terv lersa klnsen fontos a ksbbi tesztelshez, a
dokumentlshoz. A program tervezje ekkor lltja ssze a menszerkezetet,
elkszti a kpernyterveket, meghatrozza az adatbrzolsi mdokat. Klnbz
algoritmus-ler eszkzket hasznlhat a programoz (mondatszer lers,
folyamatbra, struktogram, struktra diagram).

2
Mellklet: pralap_II.ppt
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
13.
Kdols
A megtervezett program megvalstsa valamilyen programozsi nyelv
felhasznlsval. A programnyelv kivlasztsakor figyelembe kell venni a
programozsi feladat jellegt, a mr rendelkezsre ll programrszleteket, s a
programot futtat rendszer jellemzit. Ha a kdols sorn elakadunk, akkor a
vltoztatsokat, j megoldsi utakat az algoritmustervbe is fel kell vennnk. Ha
nagyobb problmval kerlnk szembe, akkor akr a specifikcit is meg kell
vltoztatnunk, s jra kell terveznnk algoritmusaink egy rszt. A kdols folyamata
alatt jabb tesztadatokat gyjthetnk ssze. A ksbbi knnyebb mdosts s
tovbbfejleszts rdekben clszer megjegyzseket is tenni a kdba.
Tesztels
A program nyelvi helyessgt ltalban az adott nyelv vgzi. A szls s extrm,
kifejezetten abnormlis adatbevitelek, normlis esetek vizsglata nagyon fontos!
Tesztelskor a cl az, hogy minl tbb hibt feldertsnk. Az els lps, hogy
megvizsgljuk a program szvegt, tnyleg azt rtuk-e le, amit akartunk. Kvetkez
lps: mkds kzben vizsgljuk a programot. Klnbz bemen adatokra a
megfelel kimenetet adja-e? Fontos, hogy minden lnyeges esetet megvizsgljunk.
Pl. Ha egy szmrl el kell dnteni, hogy prmszm-e, akkor prbljuk ki egy
prmszmra, egy nem prmre, az 1-re s a 2-re is. Olyan bemen adatot is meg kell
vizsglni, ami a feladat szempontjbl hatresetnek minsl (pl. nullval val
oszts). Vizsglni kell azt is, hogy a program az elfordul hibalehetsgeket hogyan
kezeli (rossz tpus adat esetn mi trtnik).
Programozsi tpushibk
- Gpelsi hiba
- Azonost hibs megadsa
- Vezrlstadsi hiba (ciklusoknl rossz felttel, case szerkezet hibs, eljrsok
fggvnyek hvs, elgazs szervezsi hibk, utastsok maradnak ki)
- Vgtelen ciklus
- Vltoz hibi: pl.: nem kap kezdrtket, rtkhatron kvli rtket kap,
vltozszaports stb.
- Inputadat hiba
- Aritmetikai s logikai kifejezsek hibi: pl.: zrjelezs, precedencia sorrend
figyelmen kvl hagysa, opertorok megkeverse
- Tmbkkel kapcsolatos hibk: pl.: mretezs, tlindexels
- Eljrsokkal kapcsolatos hibk: pl.: paramtertadsi hiba, vltozk lokalitsnak
figyelmen kvl hagysa, rtktads
- File-kezelsi hibk: pl.: nyits, zrs, kimarad az utols rekord, a file-mutatt nem
jl kezeljk
"Nincs tkletes program, csak olyan, amelyiknek mg nem talltk meg a hibit!"
(Wirth)
Statikus tesztelsi mdszer
- szrazteszt: a program szmtgp nlkli formlis ellenrzse (kdellenrzs,
egyeztets az algoritmussal, szemantikai vagy logikai ellenrzs: nem kvettnk-e
el logikai hibt; a szintaktikai ellenrzs fordtskor kiderl)
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
14.
Dinamikus tesztels
- fekete doboz tesztels: logikailag ellenrizzk a programot a program input-output
adatain keresztl a forrsprogram ismerete nlkl (csak specifikci alapjn - nem
ismert a mkds)
- az adatokat olyan csoportok szerint vizsgljuk, ahol a csoport minden tagja
egyformn viselkedik (ekvivalens lltsok)
- hatresetek vizsglata
- fehr doboz tesztels: a forrsprogram tteles ellenrzse klnbz szempontok,
stratgik szerint
- kiprblsi stratgit ksztnk (globlis vltozk nyomkvetse, eljrsok
tesztelsnek sorrendje, paramtertads figyelse)
- tesztadatok generlsa
- tvonalak tesztelse: minden tvonalat be kell jrni a programban (elgazsnl !)
- csompont tesztels: a program minden csompontjn a logikai kifejezsek
minden rszkifejezse vegye fel az sszes lehetsges rtket
Specilis tesztek
- a konkrt esetvizsglat nem a program helyessgrl gyz meg, hanem konkrt
szitucit elemez
- a funkciteszt azt vizsglja, hogy az adott funkcit megoldja-e a program
- biztonsgi teszt: a program biztonsgos mkdst vizsglja, I/O hibkat figyeli,
ellenrzi
Hibakeressi eszkzk, tesztelsi eszkzk
- modulvgrehajts: a program egsztl fggetlenl a paramterek vltoztatsval
hajtjuk vgre
- kiratjuk a vltozk rtkt
- nyomkvets
- utastsonknt
- programsoronknt
- logikai egysgenknt, modulonknt
- vltoz figyels
- folyamatos
- adott feltteltl, szitucitl fgg
- trspont elhelyezse
- llapotellenrzs a program futsa kzben az adatok megjelentsre
rszfeltteleket lehet hrtani (pl. rendezs )
Hibakeress, javts
Program szvegnek vizsglata. Elfordul, hogy egy hiba kijavtsa utn tbb hiba
keletkezik. A hibakeress a tesztelssel szorosan sszekapcsoldik. A korszerbb
fejlesztrendszerekben klnbz hibakeres eszkzk is rendelkezsre llnak:
- az egyes vltozkat nyomon kvethetjk a futs sorn, lthatjuk az aktulis
rtkket
- lpsenknti vgrehajts: a programot a program szvege alapjn utastsonknt
vgrehajthatjuk
- trspontok elhelyezse: a program futsa a programban elhelyezett trspontig
tart, majd innen folytathatjuk a vgrehajtst
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
15.
Hatkonysgvizsglat
Az elkszlt programot vizsglni kell a futsi id s a trfelhasznls szempontjbl,
ezeknek a minimalizlsra kell trekedni.
Dokumentls
A programot rdemes magyarz megjegyzsekkel elltni a ksbbi fejlesztsi
munkk megknnytshez, illetve mkdsnek megrtshez.
zembehelyezs, karbantarts
A felhasznl megismeri a vgleges verzit. A programoz kikpezi a felhasznlt a
program mkdtetsre. A felhasznl ellenrizheti, hogy a program a kvnt
feladatokat oldja-e meg. Valdi zemi krlmnyek kztt megtrtnik egy tfog
tesztels. Amennyiben a program hasznlata sorn rendellenessgek
tapasztalhatk, akkor a fejlesztnek azt ktelessge a garancilis idn bell
kijavtani.
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
16.
A dokumentci
Felhasznli kziknyv (User Guide)
A dokumentcik kzl taln a legfontosabb. Rszletesen tartalmaznia kell a
program teleptst, indtst, hasznlatt. Ki kell terjednie a program ltal
elvgezhet sszes funkcira. Rendszerint kpernymintkkal, pldkkal illusztrlt.
Tartalmazza az esetleges hibazeneteket s a kapcsold hibk elkerlsnek,
kijavtsnak lehetsgeit. A dokumentcinak olyan rszletesnek kell lennie, hogy a
legkevesebb hozzrtssel is hasznlni lehessen, hiszen ez nem szakembereknek
kszl elssorban. ltalban kinyomtatott formban megvsrolhat, ill. mai
kvetelmnyeknek megfelelen HTML vagy PDF formtumban olvashatak.
Tartalma:
- futtatshoz szksges gptpus, konfigurci, hardverkrnyezet
- a futshoz szksges szoftverek, opercis rendszer, szoftverkrnyezet
- program kzrthet nyelv specifikcija
- ksz program fontosabb paramterei
- specilis elnevezsek
- telepts, installls menete
- program hasznlatnak rszletes lersa
- mintahasznlat
- hibajelzsek lersa
- hibk kezelsnek lersa
- program kpessgei, alkalmazsi kre
- menrendszer lersa
- kpernykpek
Fejleszti kziknyv (Programming Guide)
Ha egy program gy kerl eladsra, hogy annak fejlesztsi jogt is megvsroljk,
akkor annak elengedhetetlenl tartalmaznia kell egy olyan dokumentcit, melynek
birtokban egy msik programoz szksg esetn elvgezheti a mdostsokat,
hibajavtsokat.
Tartalma:
- algoritmus rszletes lersa
- programban szerepl adatok lersa, vltoztblk
- program fejlesztsi lehetsgei
- program teljes listja
- futs ideredmnyek
Opertori kziknyv (Installing Guide)
Egyfelhasznls krnyezetben ltalban a felhasznli kziknyv tartalmazza az
zemeltetsi, opertori teendket, mivel ott az nem vlik szt. Tbbfelhasznls
krnyezetben azonban az opertori teendket ler dokumentcinak tartalmaznia
kell a program teleptsnek menett, szksges konfigurcijt, belltsokat. Lerja
a program indtst, paramterezst. Elrja a szksges mentsek idejt, mdjt
menett. Az elfordul hibazenetek rszletes lerst, valamint a hibk
megszntetsnek mdjt.
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
17.
Programtervezsi mdszerek
Frontlis feladatmegolds
A feladatot egy egysgknt kezeli, egyszerre akarja megoldani minden elzetes
felmrs, rszekre bonts, tgondols nlkl. A ksz programnak nincs szerkezete,
ttekinthetetlen, mdostani, javtani, fejleszteni szinte lehetetlen, nincs
dokumentcija, hasznlata bizonytalan, teljes anarchia. Kis programoknl
hasznlhat jl.
Fellrl lefel (top-down) programozs
Legfontosabb megvalstsi elve a lpsenknti finomts elve: a feladat megoldst
elszr csak tfogan vgezzk el. Ezutn az egszet rsz-feladatokra bontjuk, s a
tovbbiakban ezeket a rszfeladatokat oldjuk meg. gy az egyes rszeket egymstl
fggetlenl (de illesztve egymshoz) rhatjuk, tesztelhetjk, javthatjuk. Az egyes
rszeket tovbb kell finomtani, amg elemi rszfeladatokig nem jutunk.
Lpsek:
- bemen adatok meghatrozsa
- szksges mveletek elvgzse
- eredmnyek megjelentse, kirsa, rgztse
Alulrl felfel (bottom-up) programozs
Nagy elrelts, gyakorlat szksges hozz. Elszr a legelemibb rszeket s ezek
algoritmust ksztjk el, utna ezeknek a segtsgvel bonyolultabb rsz-
feladatokat oldunk meg.
Prhuzamos finomts elve
A finomtst az adott szint minden rszfeladatra vgezzk el: finomtjuk az adatokat,
az egyes rszfeladatokat, meghatrozzuk az adatok kapcsolatait, s ezeket rgztjk
is.
Dntsek elhalasztsnak elve
Egyszerre csak kevs dologrl, de azokrl kvetkezetesen dntnk. A felbonts utn
keletkez rszek lehetleg egyenl slyak legyenek! Azokat a dntseket, amelyek
az adott szinten nagyon bonyolultnak ltszanak, prbljuk ksbbre halasztani,
elkpzelhet, hogy ksbb egyszeren megoldhatk lesznek.
Vissza az skhz elv
Ha zskutcba jutottunk, nem elegend az adott szint jbli vgiggondolsa, vissza
kell lpnnk az elz szintre, s azt vgiggondolnunk, stb.
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
18.
Nylt rendszer felpts
ltalnosan fogalmazzuk meg a feladatot, ltalnos algoritmust s programot
ksztsnk, gy az szlesebb krben, hossz ideig alkalmazhat lesz. A konkrt
feladat megfogalmazst kell ltalnostani, az adatait pedig paramterknt kezelni.
Dntsek kimondsnak (dokumentlsnak) elve
A kimondott, de nem lert dntsek rengeteg bajt okozhatnak. ltalban arrl
feledkeznk meg, hogy egy adat nem lehet nulla. Az algoritmus ksztsnl ez mg
nyilvnval, de ha nem mondjuk ki, nem rgztjk, akkor a kdolsnl mr el is
felejtjk ezt ellenrizni!
Adatok elszigetelsnek elve
Az egyes programrszekhez tartoz adatokat ki kell jellni, s szigoran el kell
klnteni ms programrszektl. Beszlhetnk globlis adatokrl, melyekhez a
program sszes rszegysge hozzfrhet, mdosthat; illetve loklis (helyi)
adatokrl, amelyeket nem minden programrsz mdosthat, rhet el. A bemen
adatokat input adatoknak, a kimeneti adatokat output adatoknak nevezzk.
Modulris programozs
A modul nll, nvvel rendelkez, nmagban rtelmezhet programegysg.
nllan tervezhet, kdolhat, tesztelhet. A programot nagyobb egysgekre,
modulokra bontjuk, a ksz program a modulok sszeillesztsbl jn ltre. Ezltal
ttekinthetv vlik a program. Meg kell hatrozni, hogy az adott modul milyen
mdon tart kapcsolatot a tbbi modullal, milyen bemen s kimen adatai vannak.
(eljrsok, fggvnyek, unitok).
A modulok fajti
- adatmodulok
- eljrsmodulok
- vezrlmodulok
- I/O modulok
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
19.
Strukturlt programozs
Fellrl lefel elv. Brmilyen algoritmus felpthet elgazsokbl, ciklusokbl s
rszlpsek egymsutnjbl (szekvencikbl).
A strukturlt programozs lnyege
- Fellrl lefel trtn lpsenknti problmamegolds.
- Minden szinten csak a kzvetlenl odatartoz dntsek folyamata.
- Kevs, de jl meghatrozott vezrlsi s adatszerkezeti elemek hasznlata.
- Tiltott a feltteles vagy felttel nlkli vezrlstads (GOTO).
A strukturlt programozs elveinek meghatrozsa
- A feladat meghatrozst modellsorozattal vgezzk.
- A modell olyan program, amely a clprogram mkdst egy magasabb
intelligencij " absztrakt " gpen szimullja.
- Az utols vltozat utastsai egybeesnek egy ltez gp vagy nyelv
utastskszletvel. A modell elemei hierarchikus viszonyban llnak egymssal.
- Alapelv a lpsenknti finomts elve, amely az egyes absztrakcis szintek
kialaktsra ad mdszert.
- A megoldand feladatokat tbb, kevsb sszetett rszfeladatra bontjuk, de a
rsz-feladatok megfelel illesztse adja az sszprogramot; egyes rszei
ltalnosak, de jl krlhatrolt, nll feladatokat oldanak meg.
Objektumorientlt programozs
Az objektumorientlt megkzelts az objektumok mint programegysgek
bevezetsvel megsznteti a program kdjnak s adatainak sztvlasztst.
Objektumok hasznlatval egyszer szerkezet, jl kzben tarthat programok
kszthetk. Az objektumorientlt programozs kzppontjban az egymssal
kapcsolatban ll programegysgek hierarchijnak megtervezse ll.
Az objektumosztlyok felptse
Az adatokat s az adatokon vgrehajthat mveleteket egyenrangan, zrt
egysgben kezeljk. Ezeket az egysgeket objektumoknak nevezzk, mely nem
ms, mint az adatok s az adatokat kezel alprogramok (metdusok)
egysgbezrsa. Az objektum felhasznli tpusknt (class, osztly) jelenik meg,
mellyel vltozkat, objektumpldnyokat (instance) hozhatunk ltre. Maga az
osztly nem ms, mint egy n. sobjektum, mely az adatmeziben nem ktelezen
tartalmaz adatokat, de az adattpus defincikat mr igen.
Az objektumok lehetnek nll (nem szrmaztatott) s statikus helyfoglals
objektumok is, a class tpus pldnyai azonban dinamikusan jnnek ltre s minden
j tpusnak van eldje. Az rklds az jelenti, hogy mr meglv osztlybl
kiindulva jabb osztlyokat pthetnk fel, amelyek rklik a felhasznlt osztly
minden tulajdonsgait. Az objektum tulajdonsgait s metdusait is lehet rkteni.
Minden osztly adatmezket, metdusokat s jellemzket tartalmaz.
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
20.
Az adatmezk olyan adatelemek, amelyek az osztly minden objektumpldnyban
megtallhatak. A metdusok az objektumon elvgzend mveleteket definil
eljrsok s fggvnyek. A konstruktor egy olyan metdus, mely segtsgvel
megadhatjuk az objektum ltrehozsval s inicializlsval kapcsolatos
mveleteket. A destruktor egy olyan metdus, mellyel az objektum
megszntetsvel kapcsolatos mveleteket gyjthetjk egy csoportba. Meghvsakor
a destruktor felszabadtja az objektumpldny szmra dinamikusan lefoglalt
memriaterletet. Azokat a metdusokat, amelyek az objektumpldny helyett
magn az osztlyon fejtik ki hatsukat osztlymetdusnak nevezzk.
Az objektumorientltsg hrom f ismrve
- Egysgbezrs (encapsulation)
- Azt takarja, hogy az adatstruktrkat s az adott struktrj adatokat kezel
fggvnyeket (metdusokat) egy egysgknt kezelve, az alapelemeket
elzrjuk a vilg ell. Az gy kapott egysgek az objektumok.
- rklds (inheritance)
- Azt jelenti, hogy az adott meglv osztlyokbl levezetett jabb osztlyok
rklik a definilsukhoz hasznlt alaposztlyok mr ltez adatstruktrit s
metdusait.
- Tbbrtsg (polimorfizmus)
- Azt rtjk ezalatt, hogy egy rklt metdus az adott objektumpldnyban
felldefinildik.
Az adatrejts elve az objektumorientlt programozsban
Az objektum adatmezi s metdusai alaphelyzetben korltozs nlkl elrhetek.
Az objektum adatmezit csak metdusok felhasznlsval rjk el. Kulcsszavak (pl.
public s private) segtsgvel kijellhetjk az objektum bels s kvlrl is elrhet
rszeit. A vdetten deklarlt rsze az objektumnak bels elrs a klvilg szmra.
A publiklt rszben elhelyezked adatmezkhz s jellemzkhz futsi idej tpus-
informcikat kapcsol a rendszer. Ezzel a megoldssal ismeretlen tpus osztly
adatmezi s jellemzi is elrhetk.
Objektumok kzti kapcsolat
- semmi kapcsolat nincs a kt objektum kztt.
- o1 IS A o2: vagyis az egyik objektumtpus leszrmazottja a msik
objektumtpusnak, teht rkli annak tulajdonsgait s metdusait, illetve ezeket
bvtheti is.
- o1 HAS A o2: vagyis a kt objektum kztt birtokos viszony van.
A polimorfizmus megvalstsa
A metdusok tdefinilsa a virtulis metdusok segtsgvel trtnik Ez valjban
azt jelenti, hogy azonos hivatkozs esetn ms-ms mvelet (metdus) kerl
vgrehajtsra. A program futsa kzben dl el, hogy vgl is melyik metdust kell
aktivizlni. Ezt a jelensget ksi ktsnek (late binding) nevezzk.
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
21.
Adatszerkezetek
Matematikai
Termszetes szmok: a szmlls tjn nyert szmok, mely sorszmnvknt is
hasznlhatak, {0,1,2,3} jele N.
A termszetes szmok halmazn rtelmezhet az sszeads s a szorzs. Ahhoz
azonban, hogy az sszeads fordtott (inverz) mvelett, a kivonst is
elvgezhessk, ezt a halmazt ki kell bvtennk a negatv egsz szmok halmazval.
Egsz szmok: a pozitv, a negatv egsz szmok s a nulla, {-1,0,1,} jele Z.
Az egsz szmok halmazn a kivons is rtelmezhet minden esetben. Ahhoz
azonban, hogy a szorzs inverze az oszts is elvgezhet legyen tovbbi bvtsre
van szksgnk.
Racionlis szmok: vges vagy szakaszos tizedes trtek, minden olyan szm, mely
felrhat kt egsz szm hnyadosaknt, {m/n ahol mZ,nZ, n<>0) jele Q.
A hatvnyozs inverznek, a gykvonsnak elvgzshez tovbb kell bvteni a
szmokat, ugyanis lteznek olyan szmok melyek vgtelen tizedes trtalakak, mivel
nem rhatak fel kt egsz szm hnyadosaknt (pl. 2). Ezek az irracionlis
szmok.
Vals szmok: a racionlis s az irracionlis szmokat egyttesen vals szmoknak
nevezzk, jelezve ezzel, hogy ezen szmtpussal minden elfordul szmot fel lehet
rni, jele R.
0 (NULLA) Pozitv
Termszetes Negatv egszek
Egsz Trtszmok
Racionlis Irracionlis szmok
Vals
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
22.
Programozsi
Egyszer adattpusok
Az adott szituciban nincs rtelme tovbbi rszekre bontani, rszeit nem tudjuk
kln kezelni.
Numerikus
Egsz
Byte 0 - 255 eljel nlkl 8 bites
Shortint -128 - 127 eljeles 8 bites
Word 0 - 65536 eljel nlkl 16 bites
Integer -32768 - 32767 eljeles 16 bites
Longint
-2147483648 -
2147483647
eljeles 32 bites (-)
Vals
Real
-2,9*10
-39
- 1,7*10
38
11-12 szmjegy
pontossg
48 bites,
Single
-1,5*10
-45
-3,4*10
38
*
7-8 szmjegy
pontossg
32 bites,
Double
-5*10
-324
- 1,7*10
308
*
15-16 szmjegy
pontossg
32 bites,
Extended -3,4*10
-4932
-
1,1*10
4932
*
19-20 szmjegy
pontossg
80 bites,
Comp
-2
-63
+ 1..2
63
-1*
19-20 szmjegy
pontossg
64 bites,
*csak aritmetikai koprocesszorral
Logikai:
True - False
1 - 0
Igaz - Hamis
Karakter
A karakter tpus vltozban egy brmilyen ASCII kd karaktert trolhatunk. A
karakter tpus vltoznak adhatunk rtkl karakter konstanst (1 hossz
szvegkonstanst), illetve karakter tpus vltozt is. Trolsa 1 Byte-on trtnik.
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
23.
Mutat
A mutat egy olyan adatszerkezet, amely egy memriaterletre mutat. Egy
dinamikus vltozt a program futsa kzben hozunk ltre, illetve szntetnk meg. A
ltrehozott vltozra mutatval hivatkozunk, mely mutat egy cmet tartalmaz: a
mutatott vltoz fizikai cmt. Programunk brmely rszn deklarlhatunk mutat
tpus vltozt, mely rtkads utn egy cmet fog tartalmazni. Ha p egy mutat
tpus vltoz, akkor a mutatott vltoz p^ (vagy *p). Ktfle mutat ltezik: tpusos
s tpus nlkli. Tpusos mutat esetn a mutatott vltoznak jl meghatrozott
tpusa van, mg egy tpus nlkli mutat ltal mutatott memriaterletre nem jellemz
a tpus. Mutatkkal nem csak dinamikus vltozkra lehet mutatni, hanem brmely
memriaterletre, pldul egy mr ltez statikus vltozra. A mutatkat
rtkadssal t lehet irnytani egyik memriacmrl a msikra. Mutat tpus
vltozt sem beolvasni, sem pedig kirni nem lehet.
sszetett adattpusok
Rszei kln kezelhetk, a hozz tartoz adatelemek kztt valamilyen sorrendi,
szerkezeti sszefggs van. Az adatoknak ezen osztlyozs szerinti besorolsa
ersen szitucifgg.
Az sszetett adat elemi adatokbl hromflekppen pthet fel:
- azonos tpus elemek sokasga ( iterlt vagy sorozat adattpus )
- klnbz tpus elemek sokasga, ezek a rekord mezi ( direkt szorzat
vagy rekord tpus )
- klnbz tpus rszekbl llhat, de a rszekre oszts is tbbflekppen
trtnhet egy feltteltl fggen ( alternatv vagy uni tpus )
Sorozat adattpusok
Halmaz
A halmaz olyan adatszerkezet, melyben egyforma tpus, de klnbz, rendezetlen
elemek tallhatk. A halmaz brmilyen fajtj, jl meghatrozott, egymstl
megklnbztethet dolgok sszessge. A halmazban lv dolgokat a halmaz
elemeinek nevezzk. Egy halmazban egy elem csak egyszer szerepel, s az
elemeknek nincs sorrendje. Az elemek szma lehet vges vagy vgtelen. Halmazt
megadhatunk gy, hogy felsoroljuk az elemeit: H1 = {Pascal, Eiffel, C++, Prolog } s
H2 = {1,2,3,4,5,6,7,8,9}.
Sorozat
Nem felttlenl rgztett az elemek szma. Legismertebb sorozat a szmsorozat
(intervallum tpus) ahol a lpskz rgztett s amely mindkt irnyban vgtelen.
Termszetesen megllapthatunk zrt intervallumokat is, ilyenkor a sorozat "kvzi-
tmbknt" viselkedik, annyi eltrssel, hogy a tmbt explicit mdon fel kell tlteni, a
szmsorozat tagjai viszont adottak. A sorozat nagyon rugalmas, lteznek ms tpus
sorozatok pl. nevek sorozata.
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
24.
Tmb
Tpusrtk-halmaza konstans hosszsg elemeket tartalmaz, az egyes elemekre
indexelssel lehet hivatkozni. Egy tmb megadsakor meg kell adni az egyes
dimenzik irnyba es maximlis komponensek szmt, teht a tmb mrete
rgztett. Az egydimenzis tmbt vektornak (pl. lottszmok), a ktdimenzis
tmbt mtrixnak (rarend, sakktbla) is szoks nevezni. Hromdimenzis tmb pl.
az iskola sszes rarendje. A tmb brmely elemre hivatkozhatunk gy, hogy
megadjuk az elem sorszmt. A sorszmot a vltoz neve utn szgletes zrjelbe
kell tenni. Ezt a sorszmot indexnek, a hivatkozsi mdszert indexelsnek nevezzk.
Arra kell vigyzni, hogy az elemre val hivatkozskor az indexnek olyan rtke
legyen, mely egy ltez tmbelemre hivatkozik. Ellenkez esetben a tmbn tli
indexels meglltja a program futst. Lteznek n. asszociatv vagy "hash" tmbk,
ahol az indexet nem a sorszm, hanem egy rtk adja, ezek a tmbk kulcs-rtk
prokbl plnek fel.
String vagy text
Karaktertmb. Kt fajtja van a "norml" string azokban a nyelvekben, ahol ez az
adattpus kln definilt (Pascal), ilyenkor a hosszt kln troljuk, ill. a nullvg
string, ami karaktervektor, a vgn egy nulla rtk byte-al (C). A karakterlnc tpus
vltoznak illetve konstansnak brmelyik karakterre kln hivatkozhatunk gy, hogy
megadjuk annak sorszmt, ugyangy ahogy a norml tmbnl.
Rekord tpusok
Rekord
Pl. Tanulk adatai: nv, cm, telefonszm, letkor, anyja neve, tanulmnyi tlaga.
A rekordban klnbz tpus, de sszetartoz adatokat trolunk. Legnagyobb
elnye, hogy ezeket az adatcsoportokat egyszerre tudjuk kezelni s mozgatni. A
rekord a klnbz tpus, de sszetartoz adatokat sszefogja, azokat egy
adatknt kezeli. Az ilyen adatcsoportok a memriban egyms mellett helyezkednek
el, s az egsz adatcsoportra egy nvvel lehet hivatkozni. A rekord adatait mezknek
nevezzk. A rekord tpus tpusrtk-halmaza a felptsben rszt vev tpusok
rtkhalmazainak direkt szorzata. Egyfajta mvelete van: egyenknt ki lehet
vlasztani az egyes komponenseket.
File
A lemezre vitt adatokat egy msik szmtgpre is tvihetjk, ott felhasznlhatjuk,
mdosthatjuk. A file-okra azrt van szksg, mert a memriban trolt adatok a
program futsnak vgeztvel mindenkppen elvesznek, de ugyanez kvetkezhet be
valamilyen nem vrt esemny (ramsznet, programhiba, szmtgp kikapcsolsa)
hatsra is. Az adatok trolshoz szksges memria nagysga ltalban
tbbszrsen meghaladja a rendelkezsre ll memria nagysgt. A bevitt
adatokra ksbb is szksgnk lehet - pl. az ruhzban forgalmazott ruk adatait
nem csak a bevitel napjn, hanem esetleg vekig hasznlni szeretnnk. Az adatok
trolst biztonsggal kell megoldanunk. Fizikai file-nak nevezzk a msodlagos
troln (floppy, winchester) elhelyezett adatok nll nvvel elltott halmazt. Ez az
nll nv a lemezen az llomnyspecifikci.
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
25.
Elrst tekintve a file lehet:
- szekvencilis input file - sorozat els elemnek olvassa.
- szekvencilis output file - sorozat vgre rs.
- direkt file - megengedett a pozcionls valamely elemre, gy lehetv
vlik brmely elemnek olvassa, fellrsa, ill. a file vgre rs mvelete.
A logikai file egyed-elfordulsok nll nvvel elltott halmaza, mely olyan
tulajdonsgtpusok elfordulsait tartalmazza, mely egy adott feladat szempontjbl
lnyeges. Pldul az tel logikai file konkrt teleket tartalmazhat. Elkpzelhet,
hogy egy tterem szmtgpen szeretn nyilvntartani teleinek receptjeit,
jellemzit. A szakcs szerint az telek legfontosabb tulajdonsgtpusai tbbek kztt
a kvetkezk: tel neve, Hozzvalk, Elksztsi id, Elkszts pontos lersa,
Ellltsi r, Eladsi r, stb.
Szerkezett tekintve a file lehet:
- Tpusos file:
- Direkt szervezs llomny. A kirs illetve a beolvass egysge a
komponens. A komponensek egyforma tpusak, mely tpus az
llomnyra jellemz. A komponens hosszt a tpus hatrozza meg. A
komponensek sorszmozva vannak 0-tl kezdve. Brmelyik elemre
hivatkozhatunk kzvetlenl a sorszmval, azt beolvashatjuk, illetve
kirathatjuk. A komponens helyt a rendszer a sorszm s a
komponens hossza alapjn meg tudja hatrozni. A tpusos llomnyt
szekvencilisan is feldolgozhatjuk a komponensek fizikai sorrendjben,
vagyis a sorszmok szerint.
- Tpusnlkli file:
- Direkt szervezs llomny. Abban klnbzik a tpusos llomnytl,
hogy itt a komponensek hossza tetszlegesen megadhat, azt nem a
tpus hatrozza meg. ltalban akkor hasznljuk, amikor csak az
szmt, hogy hny byte-ot runk ki, illetve olvasunk be egyszerre - az
adatok tpusa rdektelen.
- Szveges file
- Soros szervezs llomny. A szveges llomny sorokbl, a sorok
karakterekbl s egy "sor vge" jelbl llnak. A kirt illetve beolvasott
adatok vltoz hosszsgak, azok fizikai cmt nem lehet sorszm
alapjn megllaptani. Ezrt a szveges llomnyban tallhat adatokat
nem lehet direkt mdon elrni.
Uni tpusok
Uni
Pl. ha n, akkor a szlsek szma, ha frfi, akkor a katonaigazolvny szma a
nyilvntartott adat. Tpusmvelete segtsgvel meg tudjuk krdezni, hogy egy rtk
egy elemi tpushoz tartozik-e.
Objektum
Hasonlt a rekord adattpushoz, de nem csak a logikailag sszefgg adatokat
troljuk egy szerkezetben, hanem az adatokon elvgezhet mveleteket is.
Jellemzje az rklds, vagyis hogy a szrmaztatott objektum a szl objektum
adatstruktrit s eljrsait is megkapja, br t is definilhatja azokat.
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
26.
Ellenrz krdsek
I.
KREM VLASSZA KI A HELYES MEGOLDST!
1. A program lettja
a., a program gyrtsi folyamata
b., az elavulsig eltelt id
c., az rtkels vltozsai
2. Mi a tesztels szerepe?
a., megmutatni a vevnek, hogy a program megfelel
b., hibakeress
c., a lehet legjobb eredmnyek elrse
3. A dokumentci rszei:
a., fejleszti s zemelteti kziknyv
b., felhasznli s kereskedelmi kziknyv
c., fejleszti, felhasznli s opertori kziknyv
4. A strukturlt programozs
a., egy top-down mdszer
b., egy bottom-up mdszer
c., egy modulris programozsi technika
5. Melyik nem elemi adattpus?
a., byte
b., mutat
c., szveg
II.
KREM DNTSE EL, HOGY IGAZ, VAGY HAMIS-E AZ LLTS!
1. Tesztelskor a cl az, hogy minl tbb hibt feldertsnk.
igaz
hamis
2. A szrazteszt egy statikus tesztelsi mdszer.
igaz
hamis
3. Fejleszti Kziknyv minden eladott programhoz jr.
igaz
hamis
4. A frontlis feladatmegolds csak kis programoknl alkalmazhat jl.
igaz
hamis
5. Az objektumorientlt programozs egy fellrl-lefel trtn dekompozcin
alapul elv.
igaz
hamis
Barhcs OktatKzpont Programozsi alapismeretek modul 2. fejezet
27.
III.
KREM VLASZOLJON A FELTETT KRDSEKRE!
1. Ismertesse a kdols szerept a program lettjban.
2. Mik a Felhasznli Kziknyv legfontosabb rszei?
3. Mi a jelentsge az Opertori Kziknyvnek?
4. Mikor ktelez a programhoz Fejleszti Kziknyvet is mellkelni?
5. Mi a dntsek elhalasztsnak elve?
6. Mire j a nylt rendszer felpts?
7. Mik a modulok fajti?
8. Mi az objektumorientlt programozs lnyege?
9. Mi az objektumorientltsg hrom f ismrve?
10. Milyen sorozat adattpusokat ismer?
Barhcs OktatKzpont Programozsi alapismeretek modul 3. fejezet
28.
Az algoritmusok alapelemei
Vltozk
Olyan programozsi eszkzk, amelynek ngy komponense van:
- Nv
- Egyedi azonost, a program szvegben a vltoz mindig a nevvel jelenik
meg, ez hordozza a komponenseket.
- Attribtumok
- A vltoz futs kzbeni viselkedst, az ltala felvehet rtkeket hatrozzk
meg. Az eljrs-orientlt nyelvekben a legfontosabb attribtum a tpus, nem
tpusos nyelvekben ilyen komponens nincs, de ms attribtum lehetsges.
Vltozhoz attribtum rendels deklarci segtsgvel trtnhet.
- Cm
- A tr azon terletnek a cme, ahol az adott vltoz rtke elhelyezkedik.
- rtk
- Az adott trrszen elhelyezked bitkombinci. A tpus eldnti, hogy hny
byte-on, milyen brzolsi mddal van brzolva a vltoz, s meghatrozza
az rtkhatrokat.
I/O mveletek
Az adat be- s kiviteli mveletek azok az utastsok, amik alapjn a program
helyzetfgg informcikat kaphat.
Az input-output az az eszkzrendszer, amit a programban akkor hasznlunk, ha a
perifrikkal akarunk kommuniklni. Hardverfgg, opercis rendszer-fgg, a
leginkompatibilisebb rsze a nyelveknek. A nyelvek egy rszben nincs I/O utasts
(pl. Algol60, az implementcira bzza), ms nyelvekben van. Az I/O alapja az
llomny. A nyelvek gyakran kihagyjk, a kommunikcit "a" perifrival kpzelik el
(implicit/standard llomny). Ezt az llomnyt a nyelv nem kezeli explicit mdon, de a
rendszer igen. Nem kell deklarlnom, megnyitnom, sszerendelnem fizikai
llomnnyal, lezrnom. Ilyenkor a program a szabvny bemenetrl (alaphelyzetben a
billentyzet) olvas s a szabvny rendszerkimeneti perifrira (alaphelyzetben a
monitor) r. A kimenet s a bemenet tdefinilhat.
Utastsok
Az utastsok a program szvegnek azon egysgei, amelyeket a fordtprogramnak
elssorban fel kell ismernie, mert a fordtprogram ezekkel az utastsokkal dolgozik.
Deklarcis utastsok
A fordtprogramnak szlnak, a mkdst befolysoljk, szolgltatst krnek,
zemmdot vltanak, informcival ltjk el, amelyet a fordtprogram felhasznl kd
generlsnl. Nem ll mgttk kd, a fordtprogram nem fordtja le ket.
Barhcs OktatKzpont Programozsi alapismeretek modul 3. fejezet
29.
Vgrehajthat utastsok
Kd ll mgttk, a fordtprogram lefordtja, s ezekbl generlja a trgyprogramot.
- rtkad utastsok: Szerepk, hogy egy vltoz rtkkomponenst a
program futsnak brmely pillanatban be tudjuk lltani, vltoztatni.
- res utastsok: A legtbb magas szint nyelvben van, nhny nyelvben
elengedhetetlen, bizonyos szitucikban a nyelvek elrjk. Kln gpi
kdja van, jele vagy van (pl. ;) vagy nincs. Hatsra a program nem csinl
semmit.
- elgaztat utastsok
- ciklusszervez utastsok
- ugr utastsok
- hv utastsok
Ezek minden eljrs-orientlt nyelvben megtallhatak. Az elgaztat,
ciklusszervez, ugr s hv utastsokat vezrl utastsoknak hvjuk, a program
vezrlsi szerkezetnek felrsra szolglnak.
- input-output utastsok: Az adatmozgatst vezrlik a perifrik s a tr
kztt valamelyik irnyban.
- egyb utastsok: A nyelvek kztt a legnagyobb eltrs az egyb
utastsoknl van, pl. Pascal: csak egy van: WITH (a minstst segti
(record)), PL/1: tbb egyb utasts van, mint ms utasts.
Kifejezsek
A kifejezs a programnyelvek szintaktikai egysge, az eddigi fogalmak jelennek meg
benne. Mr ismert rtkek alapjn j rtket hatrozunk meg. Olyan objektum,
amelynek kt komponense van: rtk s tpus. Tpussal csak a tpusos nyelvekben
rendelkezik. A kifejezsek lehetnek matematikaiak vagy logikaiak. Formlisan
operandusokbl, opertorokbl s kerek zrjelekbl ll.
Operandusok: Az rtket kpviselik, egy operandus nmagban is kifejezst alkot
(a legegyszerbb kifejezs). Operandus lehet: konstans, nevestett konstans, vltoz
vagy fggvnyhvs.
Opertorok: Minden nyelv definilja sajt opertorait, nhol a programoz is
definilhat sajtot. Tpusai:
Mveleti jelek: -, +, *, / stb.
Relcis opertorok: >,<,>=,<=,<>,=
Logikai opertorok: NOT, AND, OR, XOR stb.
Barhcs OktatKzpont Programozsi alapismeretek modul 3. fejezet
30.
Vezrlsi szerkezetek
Az elgaztat, ciklusszervez, ugr-hv utastsokat egyttesen vezrlsi
szerkezeteknek nevezzk.
Utasts-vgrehajtsi sorozat (szekvencia)
Elrt utastsok lineris vgrehajtsa a legegyszerbb vezrlsi szerkezet.
Elgazs (szelekci)
Egyg szelekci: ha igaz a megadott felttel, akkor a hozz kapcsold
tevkenysget vgre kell hajtani, egybknt azt ki kell kerlni, s a programot az azt
kvet kzs tevkenysggel kell folytatni.
Ktg szelekci: ha a kirtkelds utn a kifejezs rtke igaz, akkor a felttel
utni tevkenysg hajtdik vgre. Ha az rtke hamis akkor a klnben gban lv
utastsokat hajtja vgre. Ezutn a program a feltteles utasts utni utastson
folytatdik.
Tbbirny szelekci: feladata, hogy a program egy adott pontjn akrhny
tevkenysg kzl tudjunkk egyet vlasztani. A vlaszts ltalban egy kifejezs
(szelektor) rtkei szerint trtnik, lnyeges a kifejezs tpusa. A kifejezs
kirtkeldik, az rtkt a konstanslisthoz hasonltja. Ha tall megfelel gat,
vgrehajtja az utasts(oka)t s kilp az elgazsbl. Ha nincs megfelel g s van
klnben g, a klnben gban lv utastst vgzi el s kilp, ha nincs klnben g,
akkor res utastst hajt vgre.
Ciklusszervezs (iterci)
Az algoritmusok vezrlszerkezetei kz tartozik az iterci, ms nven ciklus: egy
vagy tbb utasts ismtelt vgrehajtsa. Akkor van r szksg, ha egy adatcsoport
valamennyi elemn ugyanazt a mveletet kell elvgezni. Ciklus hasznlatnl a
mveletet ciklikusan kell megismtelni az sszes adattal. A ciklikus mveletek vgt
valamilyen felttel hatrozza meg. A ciklus kezdete eltt llhatnak mveletek,
amelyeket csak egyszer kell ugyan vgrehajtani, de a ciklushoz kapcsoldnak: a
vltozk rtkeinek belltsa. A mveletsorozatot, amelyet ismtelten vgrehajtunk,
ciklusmagnak nevezzk. A ciklus folytatsval vagy befejezsvel kapcsolatos
vizsglatot ciklusfelttel-vizsglatnak hvjuk. Az az adat, amelynek rtke
meghatrozza a ciklus folytatst, vagy befejezst, a ciklus vltozja. A
ciklusmveletek addig hajtdnak vgre, amg a vgrehajtsi felttel teljesl (van
olyan ciklus, ahol a fordtottja igaz). Fontos, hogy a felttel ne teljesljn mindig, mert
akkor a vgrehajtsok szma vgtelen lesz.
A ciklusnak formlisan van:
fej, vg: Kln utastsokkal adjuk meg, az ismtldsre vonatkoz
informcit tartalmazzk.
mag: Az ismtlend tevkenysget rja le.
Fej
Mag
Vg
Barhcs OktatKzpont Programozsi alapismeretek modul 3. fejezet
31.
Tpusai:
- elrt lpsszm (nvekmnyes) ciklus (FOR)
- Az ismtlsek szma a ciklusba val belps eltt mr ismeretes,
vagy kiszmthat. Egy utasts ismtelt vgrehajtst rja el,
mikzben egy vltoz monoton nvekv vagy cskken rtket vesz
fel. A ciklusvltoz az ismtlseket szmolja az els kifejezs ltal
megadott rtktl kezdve a msodik kifejezs ltal megadott rtkig. A
ciklusvltoz sorszmozott tpus (de tmb eleme nem lehet), a kt
kifejezsnek pedig azonos tpusnak kell lennie s kompatibilisnek a
ciklusvltoz tpusval.
- feltteles ciklus:
- elltesztel ciklus (WHILE)
- A felttelvizsglat a ciklusmag vgrehajtsa eltt trtnik meg. A
ciklusmagot mindaddig vgre kell hajtani, amg a vgrehajtsi
felttel fennll, ezt belpsi felttelnek hvjuk. Ha a felttel mr nem
teljesl, akkor a ciklus befejezdik s a vezrls a ciklus utni
kvetkez utastsra kerl.
- htultesztel ciklus (REPEAT UNTIL)
- A felttelvizsglat a ciklusmag utn megy vgbe. Azt kell vizsglni,
hogy a kilps felttele fennll-e. Ha nem ll fenn, akkor a ciklust
folytatni kell. Ellenkez esetben a ciklus befejezdtt.
- vgtelen ciklus
- A megszaktsi felttel a trzsben tallhat, ezltal a vezrlszerkezet
nem tartalmaz kzvetlen informcit a befejezds felttelrl.
Ugr utastsok
Ha a cmke ltezik, a program ott folytatdik. Az snyelvekben nem lehetett GOTO
nlkl programozni (pl. Fortran, PL/1). A ksbbi nyelvek nmelyikben van GOTO
(hagyomnytiszteletbl), de lehet nlkle programot rni (pl. Pascal). Van olyan nyelv
is, amelyben egyltaln nincs, pl. JAVA.
Az algoritmus alapjelei, ptelemei
- Fenntartott szavak: tulajdonkppen a nyelv szavai, amelyeket a programozs
sorn hasznlhatunk.
- Pldul: begin, end, for, procedure, stb. Az alapszavak sszessgt
felfoghatjuk gy, mint a nyelv sztrt.
- Szimblumok. Pldul: , ; ? :=
- Azonostk: a programoz munkja sorn rengeteg azonostt hasznl.
- Pldul azonostt rendel a vltozkhoz, a sajt eljrsaihoz, stb.
- Konstansok: a legtbb programban szksg van konstans rtkekre, melyek
rtke a program egszben lland.
- Pl.: PI 3.14, stb.
- Hatrol- vagy elvlasztjelek.
- Pldul szkz, =, (, ), /, +, , , stb.
Barhcs OktatKzpont Programozsi alapismeretek modul 3. fejezet
32.
Algoritmus ler eszkzk
3
Folyamatbra
Az algoritmus rszlpseit klnbz geometriai szimblumokkal szemllteti. Az
egyes szerkezeti elemek kztt nyilakkal jelljk a vgrehajtsi sorrendet. Az
rtkad utasts illetve az eljrsok tglalapba, az elgazsok rombuszba vagy
lapos hatszgbe, az adatramls paralelogrammba, a vezrl utastsok krbe
kerlnek.
Struktogram
Az algoritmust egy tglalapba rjuk be. Ebbe a tglalapba tovbbi tglalapokat
illesztnk, s a vgrehajtand utastsokat ezekbe rjuk be. Az egyes szerkezeti
elemek jl elklnlnek, a szekvencia az egymsutnisggal, a szelekci az
egymsmell kerlssel, az iterci a visszatrsi t kijellsvel brzolhat. Ezek
a szerkezetek egymsba gyazhatak.
Pszeudokd
Egy megadott programnyelvhez hasonl, de szintaktikailag szabadabb algoritmus
lers. Mondatszer elemekkel bvti a nyelv utastskszlett.
Funkcionlis lers
Az adott algoritmus funkciinak s ezek hierarchijnak szveges lersa.
Jackson bra
Top-down dekompozcis diagram, ahol az algoritmus felttelei n. feltteljegyzkbe,
az ltala vgrehajtott tevkenysgek pedig tevkenysgjegyzkbe kerlnek.
Mondatszer lers
Az algoritmust egyms utn kvetkez mondatokkal rjuk le. Ma mr a pszeudokd
s a mondatszer lers sszemosdott, a f klnbsg mgis az, hogy a
mondatszer lersban a programszerkezetet magyarz rszek a szvegbe
kerlnek, mg a pszeudokdnl a magyarzat a hasznlatos nyelv kommentezsi
szoksai szerint van megjellve.

3
Mellklet: pralap_III.ppt
Barhcs OktatKzpont Programozsi alapismeretek modul 3. fejezet
33.
Pldk
Algoritmuslers
Jelljk a kvetkez alapelemeket klnbz algoritmus-ler eszkzkkel!
1., Szekvencia
2., Szelekci
3., Iterci
Folyamatbra
1., 2., 3.,
Start
Be( B )
Ki( C )
C:=A+B
End
Be( A )
Start
Be( B )
C:=A+B
Be( A )
C>5
End
Ki( C )
Start
Be( B )
Ki( C )
C:=A+B
Be( A )
I:=I+1
I>5
End
I:=1
IGAZ
IGAZ
HAMIS
HAMIS
Barhcs OktatKzpont Programozsi alapismeretek modul 3. fejezet
34.
Struktogram
1., 2., 3.,
Pszeudokd (Pascal)
1.,
Be( A );
Be( B );
C:=A+B;
Ki( C );
2.,
Be( A );
Be( B );
C:=A+B;
Ha (C>5) akkor
Ki( C );
Klnben
Semmi;
Elgazs vge
3.,
Ciklus i:=1-tl 5-ig
Be( A );
Be( B );
C:=A+B;
Ki( C );
Ciklus vge
Be( A )
Be( B )
C:=A+B
Ki( C )
Be( A )
Be( B )
C:=A+B
C>5
Ki( C )
I H
I:=1
I<=5
Be( A )
Be( B )
C:=A+B
Ki( C )
I:=I+1
Barhcs OktatKzpont Programozsi alapismeretek modul 3. fejezet
35.
Jackson jells
1. Tevkenysgjegyzk:
1. Be(A)
2. Be(B)
3. C:=A+B
4.Ki(C)
2. Tevkenysgjegyzk:
1. Be(A)
2. Be(B)
3. C:=A+B
4.Ki(C)
Feltteljegyzk:
F1. C > 5
3. Tevkenysgjegyzk:
1. Be(A)
2. Be(B)
3. C:=A+B
4.Ki(C)
5. I:=I+1
Feltteljegyzk:
F1. I <= 5
1 4 2 3
Program
Program
1 2 3
F1
4
Vizsglat
Ciklus *
5 4
F1
1 2 3
Program
Barhcs OktatKzpont Programozsi alapismeretek modul 3. fejezet
36.
Ellenrz krdsek
KREM VLASZOLJON A FELTETT KRDSEKRE!
1. Mi a vltoz?
2. Milyen szabvnyos programozsi kifejezseket ismer?
3. Mutassa be az elgazst (szelekcit)!
4. Mutassa be a ciklust (itercit)!
5. Milyen algoritmus ler eszkzket ismer?
Barhcs OktatKzpont Programozsi alapismeretek modul 4. fejezet
37.
Alprogramok
Az jrafelhasznlhatsg s a procedurlis absztrakci eszkze.
jrafelhasznlhatsg: Ha a program klnbz rszein ugyanaz az
utastssorozat fordul el, akkor ki lehet emelni. A kiemels helyrl hivatkozva r
aktivizlhat.
Procedurlis absztrakci: Lehetsg van a kiemelt szvegrsz paramterezsre,
gy nem csak egy tevkenysg, hanem egy tevkenysgcsoport vgrehajtsra
kpes.
Az alprogramok egy problmaosztlyt oldanak meg. A problma akkor
konkretizlhat, amikor az alprogramot az aktulis paramterek megadsval
meghvom. A fejben tallhat, ltalban kerek zrjelek kztt. A nyelvek egy rsze
azt mondja, hogy nem kell a zrjel, ha az alprogramnak nincs formlis paramtere
(pl. Pascalban), ms rsze szerint pedig a zrjel nem a paramterekhez, hanem az
alprogramhoz tartozik, teht paramterek nlkl is ki kell tenni (pl. C). Nyelvfgg,
hogy a paramterek mivel vannak elvlasztva. A paramterlistn szerepl nevek a
trzsben klnfle objektumok lehetnek: vltozk, nevestett konstansok,
llomnynevek, ms alprogramok nevei. A korbbi nyelvekben a listn csak a
paramterek nevei szerepeltek, ksbb a nv mellet megjelent a tpusmegjells, de
lehetnek plusz informcik is, amelyek a formlis paramterek futs kzbeni
viselkedst szablyozzk. Szmuk brmennyi lehet, a nulla paramterrel
rendelkez alprogramot paramter nlkli alprogramnak hvjuk.
Eljrs (PROCEDURE)
Hatst paramtereinek, krnyezetnek vagy mindkettnek megvltoztatsval fejti
ki. Adat-transzformcit hajt vgre vagy tevkenysget vgez. Hvsa
utastsszeren trtnik, vgrehajtand utastsnak tekinthet. A program
szvegbe brhol elhelyezhet eljrshvs, ahol vgrehajtand utasts lehet.
Egyes nyelvekben kln alapszval (ltalban CALL) hvhat, ms nyelvekben nincs
r alapsz.
Befejezse:
1. Az utastsok elfogynak, a vezrlst visszaadja a hvst kvet utastsra.
2. Kln utastsra. ltalban ez az utasts a RETURN. Brhol kiadhat, a
program a hvst kvet utastsra tr vissza. Ez a szablyos befejeztets.
GOTO-val is ki lehet lpni, de nem szablyos. A megadott cmkre kerl a
vezrls, ha a cmke ltezik. Veszlyes, mert a kzbenskkel brmi trtnhet,
fleg ha egy hvsi lncban vagyunk.
3. Befejeztet utastsokkal vagy eljrsokkal. A teljes programot befejeztetik. Nem
teljesen szablyosak, de nem is veszlyesek. (pl. HALT, STOP)
Barhcs OktatKzpont Programozsi alapismeretek modul 4. fejezet
38.
Fggvny (FUNCTION)
A matematikai fogalmat hozza t, feladata 1 db rtk meghatrozsa. Nyelvfgg,
hogy ez az rtk mennyire bonyolult struktrj lehet. Mg egy komponense van, a
fggvny ltal visszaadott rtk (visszatrsi rtk) tpusa. Ezt a fggvny neve
hordozza, a fejben szerepel, a specifikci rsze. Csak kifejezsben hvhat meg,
mert a fggvny neve ltal hordozott rtket fel kell hasznlni.
Befejezse s rtk-hozzrendels:
1. A fggvny neve az eljrs trzsn bell mint vltoz hasznlhat (rtkad
utasts bal s jobb oldaln is), befejezskor az rtke a legutoljra kapott rtk.
A fggvny befejezdik, ha elrtk a vgt (a logikai sorrend szmt, nem a
felrs, pl. Fortran)
2. A fggvny nevnek az eljrs trzsn bell rtket kell kapnia, rtkad utasts
jobb oldaln a fggvny neve nmagban nem szerepelhet. Befejezskor az
rtke a legutoljra kapott rtk. A fggvny befejezdik, ha elrtk a vgt (a
logikai sorrend szmt, nem a felrs, pl. Pascal).
3. Kln utastsra rendeli hozz az rtket a fggvny nevhez a fggvny
befejeztekor.
3.1. pl. RETURN[(kifejezs)]: Brhol, akrhnyszor kiadhat, a hozzrendels s
a vezrls-visszaads az els RETUN-nl trtnik. A kifejezs elhagyhat.
(pl. C-ben)
3.2. STOP
3.3. GOTO: Vgkpp szablytalan, de engedett. A fggvnyt s az eredeti kdot
is otthagyja.
A fggvny feladata 1 db visszatrsi rtk meghatrozsa. Ha a fggvny
megvltoztatja paramtereit vagy krnyezett, akkor ezt a tevkenysget
mellkhatsnak hvjuk. A nyelvek ltalban nem javasoljk, de megengedett.
Barhcs OktatKzpont Programozsi alapismeretek modul 4. fejezet
39.
Paramterek, paramtertadsi mdok
Formlis paramter listban kell definilni azt az adatszerkezetet, amely rvn a
fggvny vagy eljrs bemeneti informcit kap. A definilt adatszerkezet fiktv, a
tnyleges adatokat csak a fggvny vagy eljrs hvsakor fogjuk elrni. A formlis
paramtereket a hv program nem nv szerint, hanem a felsorolsban elfoglalt
pozci szerint azonostja: az els aktulis paramter az els formlis paramternek,
a msodik aktulis paramter a msodik formlis paramternek, a harmadik aktulis
paramter a harmadik formlis paramternek s gy tovbb felel meg.
Aktulis paramtereknek azokat a paramtereket nevezzk, amelyeket a fggvny
vagy eljrs meghvsakor adunk meg a fggvny vagy eljrs neve utn. Ezeken
hajtdnak vgre a fggvny vagy eljrs utastsai.
Vltoz vagy cm szerinti paramtertads
A vltozparamter rtkt a hvott program (eljrs, fggvny) megvltoztathatja,
ekkor a hv programban hasznlt aktulis paramter rtke is megvltozik.
A folyamat:
Meghatrozdik a rendszer ltal az aktulis paramter cmkomponense, ez kerl
tadsra a hvtl a hvotthoz. Az aktulis paramter rtke ezen a trcmen
helyezkedik el, az alprogram itt dolgozik. Az informcitads ktirny. A hvott
alprogram tudja hol van a hv egysg, ha nem vigyzunk, szabadon mozoghat a
hv terletn. Az aktulis paramter vltoz is lehet.
rtk szerinti paramtertads
A formlis paramter rtknek vltozsa nem hat vissza az aktulis paramter
rtkre. A kifejezs, utasts az eljrs vagy fggvny aktivizlsakor rtkeldik ki,
s a megfelel formlis paramter ezt az rtket kapja meg.
A folyamat:
Meghatrozdik a rendszer ltal az aktulis paramter rtke, tkerl a hvtl a
hvotthoz (tmsoldik a cmkomponensre). Bizonyos kezdrtk-adsnak is
tekinthet. Az informcitads egyirny, a hvtl a hvott fel. A hvott alprogram
nem tud semmit a hvrl, a sajt terletn dolgozik. Az aktulis paramter ebben az
esetben kifejezs lehet.
A formlis paramterlista vltoz deklarcik listja. Az aktulis paramterlista pedig
kifejezsek listja.
Barhcs OktatKzpont Programozsi alapismeretek modul 4. fejezet
40.
Rekurzi
Rekurzi: olyan programtevkenysg, ahol az eljrsok, fggvnyek nmagukat
hvjk meg. A feladatot esetekre bontjuk, s van olyan eset, amely eset nmagval
van megfogalmazva, egy msik n rtkkel. Ha ez a folyamat tbbszr ismtldik,
hvsi lncrl beszlnk. A lnc alaphelyzetben dinamikusan vltozik, eleje mindig a
fprogram. Fggetlenl attl, hogy mkdik-e, minden eleme aktv. Aktv alprogram
jra meghvst rekurzv hvsnak (rekurzinak) nevezzk.
Kzvetlen rekurzi: A rekurzi egyszer esete, az alprogram sajt magt hvja
meg.
Kzvetett rekurzi: Az alprogram egy msik, a hvsi lncban szerepl alprogramot
hv meg.
Faktorilis:
n! = n*(n-1)*...*1
0! = 1
teht ha n > 0, akkor n! = n*(n-1)!
ha n = 0, akkor n! = 1
Hatvnyozs:
2^3 = 8
n^m = n^(m-1)*n
n^0 = 1 s 0^m = 0
Algoritmizlva:
Fggvny Fakt(n:int):int
Ha (n=0) akkor
Fakt:=1;
Klnben
Fakt:=Fakt(n-1)*n;
Elgazs vge
Fggvny vge
Algoritmizlva:
Fggvny Hatvany(n,m:int):int
Ha (n=0) akkor
Hatvany:=0;
Klnben Ha (m=0) akkor
Hatvany:=1;
Klnben
Hatvany:=Hatvany(n,m-1)*n;
Elgazs vge
Elgazs vge
Fggvny vge
Barhcs OktatKzpont Programozsi alapismeretek modul 4. fejezet
41.
Programozsi technikk
rjunk algoritmust tglalap kerletnek s terletnek kiszmtsra!
Strukturlt programozstechnika
A mvelet amit itt bemutatunk a dekompozci, vagyis a feladat egyre alapvetbb
rszekre bontsa. A dekompozci az alapja a top-down mdszernek, amely
vgeredmnye olyan feladatok megfogalmazsa, melyet mr megvalsthatunk az
adott nyelv szintaktikjnak megfelelen.
Start
Kerlet s terlet
kiszmtsa
Vgrtkek
kivitele
End
Be( A )
Be( B )
Ki( K )
Ki( T )
K:=(A+B)*2
T:=(A*B)
Kezdrtkek
bevitele
Barhcs OktatKzpont Programozsi alapismeretek modul 4. fejezet
42.
Objektumorientlt programozstechnika
Elso:int;
Masodik:int;
Objektum Tglalap
a: int;
b: int;
Konstruktor Ltrehoz;
Destruktor Megszntet;
Fggvny Kerlet(a,b:int):int;
Fggvny Terlet(a,b:int):int;
Objektumdefinci vge;
Konstruktor Ltrehoz
j(Tglalap);
Eljrs vge
Destruktor Megszntet
Trl(Tglalap);
Eljrs vge
Fggvny Kerlet(a,b):int
Kerlet:=(a+b)*2;
Fggvny vge
Fgvny Terlet(a,b):int
Terlet:=(a*b);
Fggvny vge
Program kezdete
Be(Elso);
Be(Masodik);
Tglalap.Ltrehoz;
Tglalap.A:=Elso;
Tglalap.B:=Masodik;
Ki(Tglalap.Kerlet());
Ki(Tglalap.Terlet());
Tglalap.Megszntet;
Program vge
A pldban az egysgbezrsra ltunk egyfajta megoldst, a tglalap oldalainak
adatai s az adatokon elvgzend mveletek egy objektumon bell tallhatak.
Kln definiljuk a metdusokat, kzttk a konstruktort, ami az objektumpldny
ltrehozsrt felel s a destruktort, ami a megszntetst vgzi. A
programegysgek definilsa utn a programtrzs egyszer rtkadsokat s
fggvnyhvsokat tartalmazva ttekinthetv, knnyen fejleszthetv vlik. Ms
plda (a birtokos viszony bemutatsra):
Osztly Objektum
{fggvny Konstruktor()
/memriafoglals
fggvny vge
fggvny Destruktor()
/memria-felszabadts
fggvny vge}
Osztlydefinci vge
Osztly Pont: objektum
{x:Z; /koordintk
y:Z;
fggvny Megjelent()
/megjelenti a pontot
fggvny vge}
Osztlydefinci vge
Osztly Szakasz: objektum
{a:pont; /pont objektum tpus!
b:pont; /has a relci!
fggvny Meghz()
/meghzza a szakaszt
fggvny vge}
Osztlydefinci vge
Osztly Irnytott_Szakasz: szakasz
{fggvny Meghz(kezdpont)
/virtulis metdus, megadott
fggvny vge} /kezdpontbl hzza a szakaszt
Osztlydefinci vge
Barhcs OktatKzpont Programozsi alapismeretek modul 4. fejezet
43.
Ellenrz krdsek
KREM VLASZOLJON A FELTETT KRDSEKRE!
1. Mi az alprogramok szerepe a programozsban?
2. Ismertesse az ELJRS fogalmt!
3. Ismertesse a FGGVNY fogalmt!
4. Mi a paramter? Milyen tpusait ismeri?
5. Mi a klnbsg a cm s az rtk szerinti paramtertads kztt?
6. Mi a rekurzi?
Barhcs OktatKzpont Programozsi alapismeretek modul 5. fejezet
44.
Elemi algoritmusok I.
4
Az elemi algoritmusok jelentik a programtervek alapjait, olyan ltalnosan elfordul
problmkra tartalmaznak megoldsokat, melyek a leggyakrabban jelentkeznek. A
legtbb elemi algoritmus matematikai elveken nyugszik, gy "egy-az-egyben" val
tltetsk nem mindig biztostja a legjobb hatkonysgot, m a megoldand feladat
kidolgozshoz, a problma felismershez ismeretk nlklzhetetlen.
sszegzs ttele
Adott egy n elem e sorozat, vagy tmb. Hatrozzuk meg az elemek sszegt! A
vgeredmnyt s tartalmazza.
s:=0; /s-nek rtket adunk, mivel rtktelen vltozval nem lehet
/ matematikai mveletet vgezni;
ciklus i:=m - tl n - ig /majd elindtjuk a ciklust a sorozat vagy tmb els elemtl s
/ haladunk az utols elemig (nvekmnyes ciklus - tudjuk hol a vge);
s:=s + e[i]; /s vltozba beletltjk s eddigi rtkt, hozzadva az aktulis elem
/rtkt (a bal oldalon ll vltoznak adunk rtket a jobb
/oldalon ll kifejezssel, a kirtkels teht jobb >> bal irny);
ciklus vge /a ciklus vge, innen vagy a ciklus elejre ugrunk, vagy tovbblpnk;
Ki(s); /kirjuk s rtkt, a ciklus vget rt, hiszen itt a vezrls;
Plda
Hatrozza meg az [1, 100] intervallumba es pros szmok sszegt!
Osszeg:=0;
Ciklus i:=1 - tl 100 - ig
/a mod a maradkkpzs opertora, a felttel arra a matematikai
Ha (i mod 2 = 0) akkor / igazsgra utal, hogy a pros szmok 2-vel maradk nlkl
osszeg:=osszeg + i; /oszthatak;
Klnben
semmi; /res utasts;
Elgazs vge
Ciklus vge
Ki(osszeg);
Feladatok
1. Hatrozza meg az els n termszetes szm sszegt!
2. Adott az egsz szmok egy intervalluma. Hatrozza meg az intervallumba es
egsz szmok kbeinek sszegt!
3. Feladat: hinyzsi statisztika ksztse.
Egy tanulrl tudjuk, hogy a hnap egyes napjain hny rt mulasztott, Hatrozza
meg, hogy ezen hnapban mennyi mulasztott rinak a szma.
4. Egy osztly tanulinak flvi matematika osztlyzatai ismertek. Szmtsa ki a
matematika flvi tlageredmnyt!
A feladatokhoz ksztse el az llapotteret s az algoritmust!

4
Mellklet: pralap_IV.ppt
Barhcs OktatKzpont Programozsi alapismeretek modul 5. fejezet
45.
Kivlaszts ttele
Adott egy n elem e szmsorozat, s az elemein rtelmezett T tulajdonsg. Tudjuk,
hogy valamely elem(ek) a sorozatban T tulajdonsg(ak). Hatrozzuk meg az els
ilyen elem sorszmt!
i:=1; /kezdrtk belltsa;
Ciklus amg (e[i] nem T tulajdonsg) /ciklus indtsa a ciklus addig tart amg nem
/tallunk egy a tulajdonsgnak megfelel elemet
/(elltesztel felttelfgg ciklus);
i:=i + 1; /ciklusrtk nvelse (a FOR ciklusnl automatikus,
/a WHILE ciklusnl azonban a
/programozra van bzva);
Ciklus vge /cikluslb;
Ki(i); /kirjuk az rtket vagy a tmbindexet
/(sorozat vagy tmb);
Plda
Vlasszuk ki a 25-nl nagyobb szmok kzl az els httel oszthatt!
i:=25; /kezdrtk 25-re lltsa;
Ciklus amg (i mod 7 <> 0) /ciklus amg nem tallunk olyan szmot mely maradk nlkl oszthat 7-tel;
i:=i + 1; /a ciklusmagban az inkerementls;
Ciklus vge
Ki(i); /rtk kirsa (sorozat!);
Feladatok
1. Adott egy tetszleges termszetes szm. Keressk a nla nem kisebb
prmszmok kzl a legkisebbet!
2. Adott egy tetszleges termszetes szm. Keressk a nla nem nagyobb
prmszmok kzl a legnagyobbat!
3. Dntsk el, hogy Kiss Ibolya hnyadik az osztlynvsorban. Tudjuk, hogy van
ilyen nev tanul az osztlyban. Ha tbb is van, akkor az els elfordulst adjuk
meg!
A feladatokhoz ksztse el az llapotteret s az algoritmust!
Barhcs OktatKzpont Programozsi alapismeretek modul 5. fejezet
46.
Megszmlls ttele
Adott egy intervallumon vagy tmbn rtelmezett T tulajdonsg. Hatrozzuk meg,
hogy hny T tulajdonsg elem van a sorozatban vagy a tmbben. A ciklusmag
minden vgrehajtsa utn s tartalmazni fogja az [n, i] intervallumban lev T
tulajdonsg elemek szmt.
db:=0; /a kezdsnl a darabszm mg 0;
Ciklus i: = m - tl n - ig /ciklus indtsa 1-tl (tmb!) vagy m-tl (sorozat!)
Ha (e[i] T tulajdonsg) akkor /ha E i-edik eleme T tulajdonsg
db:=db + 1; /akkor a darabszmot nveljk eggyel;
Klnben
semmi; /az egyirny elgazsunk res utastsa;
Elgazs vge
Ciklus vge
Ki (db); /darabszm kirsa;
Plda
Szmoljuk meg, hogy a [25, 68] intervallumban hny darab ttel oszthat szm
tallhat!
db:=0; /darabszm a kezdetkor 0;
Ciklus i:=25-tl 68-ig /ciklus amg tart a sorozat;
Ha (i mod 5 = 0) akkor /ha i maradk nlkl oszthat 5-tel
db:=db + 1; /nveljk eggyel a darabszmot;
Klnben
semmi; /klnben res utastssal folytatjuk;
Elgazs vge
Ciklus vge /cikluslb;
Ki(db); /darabszm kirs;
Feladatok
1. Hny prmszm tallhat a termszetes szmok egy adott intervallumban?
2. Adjuk meg, hogy egy adott iskola nyilvntartsban hny Nagy Gbor nev
tanul szerepel!
A feladatokhoz ksztse el az llapotteret s az algoritmust!
Barhcs OktatKzpont Programozsi alapismeretek modul 6. fejezet
47.
Elemi algoritmusok II.
5
Eldnts ttele
A kivlaszts hatkony akkor, ha biztosak vagyunk abban, hogy a tmbnk tartalmaz
T tulajdonsg elemet. Azonban ha ez az llts nem igaz, a kivlaszts tmbn tli
indexelst okoz. Ha nem vagyunk biztosak abban, hogy egy tmb vagy zrt
intervallum tartalmaz-e adott tulajdonsg elemet az eldntst kell hasznlnunk.
Dntsk el, hogy egy adott intervallum vagy tmb tartalmaz-e adott tulajdonsg
elemet!
i:=m - 1; /i rtknek belltsa, az els elem el eggyel, hogy az els elemet
/ is vizsglni tudjuk;
tallt:=hamis; /a hamis egy logikai rtk amit azrt lltunk hamisra
/ hogy be tudjunk lpni a ciklusba;
Ciklus amg ((tallt = hamis) S ( i < n )) /ciklus amg nem tallunk T tulajdonsg elemet
/S nincs vge a tmbnek;
i:=i + 1; /inkrementls (WHILE!);
tallt:=e[i] T tulajdonsg; /tallt rtknek belltsa, a jobb oldali kifejezs logikai:
/E i-edik eleme vagy T tulajdonsg (igaz) vagy nem (hamis);
Ciklus vge
Ki(tallt); /az eldnts vgeredmnye: van-e T tulajdonsg elem?
Plda
Egy megadott intervallum tartalmaz-e nyolccal oszthat szmot?
Be(m); /bekrjk az intervallum als (m) s fels (n) rtkt;
Be(n);
i:=m-1; /i rtknek belltsa;
tallt:=hamis; /tallt rtke hamis, hogy be tudjunk lpni a ciklusba;
Ciklus amg ((tallt = hamis) S (i < n)) /ciklus indtsa az ismert felttelekkel;
i:= i + 1; /inkrementls;
tallt:= (i mod 8) = 0; /tallt rtke akkor igaz ha a sorozat adott eleme
Ciklus vge /maradk nlkl oszthat 8-cal;
Ki(tallt); /kirjuk hogy a krdsre adott vlasz igaz-e vagy hamis?
Feladatok
1. Adott termszetes szmrl dntsk el, hogy van-e valdi osztja!
2. Egy adott nvrl dntsk el, hogy szerepel-e az adott nvsorban!
3. Termszetes szmok adott intervallumban van-e prmszm?
A feladatokhoz ksztse el az llapotteret s az algoritmust!

5
Mellklet: pralap_V.ppt
Barhcs OktatKzpont Programozsi alapismeretek modul 6. fejezet
48.
Kivlogats ttele
Adott egy n elem e sorozat vagy tmb s egy T tulajdonsg. Vlogassuk ki a T
tulajdonsg elemeket egy j vektorba!
j :=0; /cltmb index inicializlsa;
Ciklus i:=1-tl n-ig /nvekmnyes ciklus indtsa;
Ha (i T tulajdonsg) akkor /ha a sorozat i-edik eleme T tulajdonsg;
j:=j + 1; /inkrementljuk a tmbindexet;
a[j]:=i; /hogy a kvetkez tmbhelyre rakjuk a T tulajdonsg elemet;
Klnben
semmi; /res utasts;
Elgazs vge
Ciklus vge
Plda
Vlogassuk ki az A tmbbl a B tmbbe a prmszmokat!
j:=0; /tmbindex 0-ra lltsa (alaphelyzet);
Ciklus i:=1-tl n-ig /ciklus az els tmbelemtl az utolsig;
Ha (A[i] prmszm ) akkor /ha A i-edik eleme prm;
j:=j + 1; /nveljk B tmb tmbindexnek rtkt;
B[j]:=A[i]; /B j-edik eleme legyen A i-edik eleme;
Klnben
semmi; /res utasts;
Elgazs vge
Ciklus vge
Feladatok
1. Egy osztlynvsorbl vlogassuk ki a K betvel kezdd nev tanulkat!
2. Egy orvosi nvsorbl vlogassuk ki a megadott magassg betegeket!
3. Megadott sorozatbl vlogassuk ki a megadott szmmal oszthatakat!
A feladatokhoz ksztse el az llapotteret s az algoritmust!
Barhcs OktatKzpont Programozsi alapismeretek modul 6. fejezet
49.
Maximum-minimum kivlaszts ttele
Adott egy n elem e tmb vagy sorozat. Keressk meg a legnagyobb (legkisebb)
rtket!
i:=1; /tmbindex a tmb els elemindexe mivel a ciklusban mr nem
/hasonltjuk ssze az els elemet sajt magval;
ind:=1; /ind vltoznak az els elem indexrtkt adjuk;
max:=e[1]; /a max rtke legyen az els elem rtke;
Ciklus amg (i < n) /ciklus indtsa amg i kisebb mint n;
i:=i + 1; /ciklusindex inkrementlsa;
Ha (max < e[i]) akkor /ha a jelenlegi max kisebb mint E i-edik eleme
max:=e[i]; /akkor max legyen e i-edik eleme;
ind:=i; /ind vltoz rtke legyen az aktulis maximum rtk indexe;
Klnben
semmi; /res utasts;
Elgazs vge
Ciklus vge
Ki (ind); /kirjuk a maximum rtket s indext;
Ki (max);
Mivel itt a ciklusfejben csak egy - a ciklusvltoz vizsglatra vonatkoz - felttel
szerepel, gy ezt a ciklust feltteles helyett nvekmnyes mdon is megadhatjuk.
Plda
Keressk meg egy intervallumon a legkisebb fggvnyrtket!
i:=m; /i rtke az intervallum als hatra;
ind:=m; /ind rtke az els elem indexe;
min:=f(m); /min az els sorozatelemre rtelmezett fggvnyrtk;
Ciklus amg (i < n) /ciklus indtsa amg i rtke kisebb/mint a sorozat fels hatra;
i:=i + 1; /ciklusindex inkrementlsa;
Ha (min > f(i)) akkor /ha min nagyobb mint az i-edik elemre rtelmezett fggvnyrtk
min:=f(i); /akkor min legyen az;
ind:=i; /ind pedig mindig a legkisebb rtk indext trolja;
Klnben
semmi; /ha min nem nagyobb (kisebb vagy egyenl) akkor
Elgazs vge /ne vltozzon semmi;
Ciklus vge
Ki(ind); /output;
Ki(min);
Feladatok
1. Az f(x) = 2x
3
- 3x
2
+ 4x - 9 fggvnyt a [-2; 15] egszintervallumon rtelmezzk.
Hatrozza meg az intervallumnak azt az elemt, ahol a fggvny helyettestsi
rtke a legnagyobb! Mekkora ez az rtk?
2. Egy osztly orvosi lapjairl nyilvntartst ksztettnk a tanulk fogainak
szmrl. Vlassza ki a nyilvntartsbl azt a gyereket, akinek a legtbb foga
van!
3. Az pttbor 18 brigdja kztt hat napig tart versenyt hirdettek meg. Egy
tblzatban rgztettk naponta a brigdteljestmnyeket, Ki lett a gyztes
brigd?
A feladatokhoz ksztse el az llapotteret s az algoritmust!
Barhcs OktatKzpont Programozsi alapismeretek modul 7. fejezet
50.
Keressi ttelek
Adott egy n elem e sorozat vagy tmb s az elemein rtelmezett T tulajdonsg.
Dntsk el, hogy van-e T tulajdonsg elem a sorozatban s mi annak a sorszma.
szrevehet, hogy a keress ttele alapesetben tulajdonkppen az eldnts s a
kivlaszts ttelnek kombincija.
Lineris keress ttele
A sorozat elemei nem rendezettek. Adott egy n elem e tmb, s egy T tulajdonsg.
Dntsk el, hogy e-nek van-e T tulajdonsg eleme, s ha van, akkor hnyadik?
i:=1; /indexvltoz lltsa az els elemre;
Ciklus amg ((i <= n) S (e[i] nem T tulajdonsg)) /ciklus indtsa amg nem rjk el a tmb vgt
/s nem tallunk megfelel elemet;
i:=i + 1; /inkrementls a ciklustrzsben (while ciklus!);
Ciklus vge /cikluslb;
tallt:=(i <= n); /rtkads a tallt vltoznak, ha tlmentnk a
/tmbn akkor nincs ilyen elem;
Ha (tallt = igaz) akkor /ha tallt rtke igaz akkor
Ki(i); /kiratjuk a megtallt elem indext;
Klnben /ha hamis
Ki('Nincs ilyen elem'); /akkor csak egy zenetet;
Elgazs vge
Feladatok
1. Egy szmokat tartalmaz tmbben hnyadik a legels 100-nl nagyobb szm (ha
van)?
2. Egy nvsorban tallhat-e Szab Istvn nev tanul, s ha igen hnyadik?
3. Adott a tanulk v vgi matematika eredmnye. llaptsuk meg, hogy van-e
bukott kzttk!
A feladatokhoz ksztse el az llapotteret s az algoritmust!
Barhcs OktatKzpont Programozsi alapismeretek modul 7. fejezet
51.
Logaritmikus keress ttele
Az intervallum egyik hatrtl kiindulva nem egyesvel nveljk a mr megvizsglt
elemek szmt, hanem a mg krdses szakasz felvel. Hogy melyik felvel, azt a
kzps elemhez tartoz rtk s az adott korlt nagysgviszonya dnti el. H ebben
az esetben a keresett rtket jelenti.
als:=1; /kezdskor az als rtke legyen az intervallum kezdrtke;
fels:=n; /a fels rtke pedig a legnagyobb rtk;
tallt:=hamis; /tallt rtke hamis, hogy be tudjunk lpni a ciklusba;
Ciklus amg ((tallt = hamis) s (als <= fels))
/ciklust indtunk amg nem talljuk meg a
/keresett elemet s mg van vizsgland tartomny;
kzp:=(als + fels) div 2; /kzp rtke legyen als s fels sszege felnek egszrsze;
Ha (kzp = h) akkor /vizsglatok: ha kzp a keresett rtk
tallt:= igaz; /akkor tallt rtke igaz lesz (megtalltuk!);
Klnben Ha (kzp < h) akkor /ha kzp kisebb mint a keresett rtk
als:=kzp + 1; /akkor az eddigi kzpnl eggyel nagyobb rtk
/lesz az intervallum als hatra;
Klnben Ha (kzp > h) akkor /ha kzp nagyobb mint a keresett rtk
fels:=kzp - 1; /akkor az eddigi kzpnl eggyel kisebb rtk
/legyen az intervallum fels hatra;
Klnben
semmi; /res utasts;
Elgazs vge
Elgazs vge
Elgazs vge
Ciklus vge
Ha (tallt = igaz) akkor /ha a binris keress folyamn tallt igaz rtket kap;
Ki(kzp); /ott megll a ciklus s kzp fogja tartalmazni a keresett rtket;
Klnben
Ki('Nincs ilyen elem'); /ha tallt hamis maradt a ciklus lefutsa utn akkor nem talltuk
Elgazs vge /meg az intervallumon bell a keresett rtket;
N elem tmbben val binris keress esetn a maximlis lpsek szma
Log
2
(N)+1, az tlagos keress lpsszma pedig Log
2
(N). Ezrt hvjk ezt a keressi
formt logaritmikus keressnek. Ismert mg a binris vagy felezses keress
elnevezs is.
Feladat
Ksztsnk algoritmust, amely kitallja a felhasznl ltal gondolt szmot (1-100), s
kirja azt is, hogy hny lpsben sikerlt megtallni azt.
A feladathoz ksztse el az llapotteret s az algoritmust!
Barhcs OktatKzpont Programozsi alapismeretek modul 7. fejezet
52.
Visszalpses keress ttele
Adott n darab vltoz hosszsg sorozat, mely sorozatok mindegyikbl ki kell
vlasztani gy egy elemet, hogy az a megadott szablyoknak eleget tegyen.
Alapesetben elemekhez tartoz tbbszrs rtkek kzl kell kivlasztani egyet oly
mdon, hogy minden elemhez tartozzon rtk, de egyetlen rtk se tartozzon tbb
elemhez.
Elfelttel: Adott az elemek tmbje s a hozzjuk tartoz sorozatrtk tmbk
Utfelttel: A program rja ki, hogy milyen prostsban lehet az elemekhez legalbb
egy sorozatrtket rendelni
Deklarci: Megolds[1..n], i: N;
Darab[1.n],Hozzrendels[1..n,1..m], index, j : Z+
Fggvny Jmegolds( i, index ):L /akkor j a megolds, ha nem egyezik meg egyik elzvel sem;
j := 1;
Ciklus amg ((j < i) S (Hozzrendels[j, Megolds[j]] <> Hozzrendels[i,index]))
j := j + 1; / ciklusfejben a vizsglat. a trzsben csak inkrementlunk;
Ciklus vge
Jmegolds := ( j >= i );
Fggvny vge
Fggvny Tallt( i ):N /visszaadja a j megolds indext;
index := Megolds[i]+1; /ha visszalpnk a tmbelem rtke az elzleg
Ciklus amg (( index <= Darab[i] ) S ( Jmegolds(i, index) = hamis ))
/kivlasztott, ha a Hozzrendels indexedik eleme
index := index + 1; /mr foglalt ( hozzrendeltk egy msik elemhez),
Ciklus vge /lpnk;
Ha ( index <= Darab[i] ) akkor
Tallt := index; /Tallt rtke a megtallt (elemhez tartoz)
Klnben /Hozzrendels indexe;
Tallt := 0; /nulla ha nincs ilyen rtk az elemhez tartoz
Elgazs vge /Darab intervallumon bell;
Fggvny vge
Ciklus i:=1 - n-ig
Megolds[i]:=0; /kezdskor nullzzuk a Megolds tmbt (mg
Ciklus vge /nincs megolds);
i := 1;
Ciklus amg ( i >= 1 ) S ( i <= n )) /lpkednk az rtkeken;
Megolds[i] := Tallt( i ); /a megolds a megtallt index;
Ha ( Megolds[i] <> 0 ) akkor /ha van megolds tovbblpnk;
i := i + 1;
Klnben
i := i - 1; /ha nincs visszalpnk;
Elgazs vge
Ciklus vge
Ha ( i > n ) akkor
Ciklus i:= 1 - n-ig
Ki( i, Megolds[i] ); megold kulcs kiratsa;
Ciklus vge
Klnben
Ki( 'Nincs megolds!' ); /ha a feladat nem megoldhat (nem mindegyik
Elgazs vge /elemhez tudunk rtket rendelni);
Barhcs OktatKzpont Programozsi alapismeretek modul 7. fejezet
53.
Plda
Adottak munkk s dolgozk, azonos szmban. Mindegyik dolgoz elmondja, hogy
milyen munkt kpes elvgezni. A feladat a munkk elosztsa a dolgozk kztt oly
mdon, hogy minden dolgozhoz tartozzon munka, s minden munkt elvgezzen
valaki.
Munkk:
1. Fests
2. Taptzs
3. Parkettzs
4. Villanyszerels
5. Ftsszerels
Dolgozk Hny munkt
vllalnak?
Milyen munkkat
vllalnak?
Munkk elosztsa
(Darab) (Hozzrendels) (Megolds (index!))
Tihamr 2 1, 3 1: Fests
Gusztv 3 1, 3, 5 3: Ftsszerels
Vazul 1 3 1: Parkettzs
Huba 3 3, 4, 5 2: Villanyszerels
Kzmr 1 2 1: Taptzs
A fenti pldban az els visszalps a harmadik embernl (Vazul) trtnik, hiszen az
elshz hozzrendeljk az els munkt, a msodikhoz (az elst mr foglalt!) a
harmadikat, azonban a harmadik embernl evvel a mdszerrel mr zskutcba
jutottunk, hiszen Vazul csak a hrmas munkt vllalja, amit mr kiosztottunk. Ezrt
vissza kell lpni az elz dolgozhoz, s msik munkt hozzrendelni. Ha nem lenne
ilyen szabad munka, mg egyet kellene visszalpnnk s az elsnek j munkt
kiosztani. Ez jelen esetben nem okoz problmt, hiszen mr a msodik emberhez is
kpesek vagyunk j munkt hozzrendelni. A fenti plda optimlis eset, elfordulhat,
hogy nem tudjuk a prostst megoldani gy, hogy minden elemhez tartozzon rtk.
Ebben az esetben rtkeljk ki gy a feladatot, hogy arra megolds nem tallhat.
A fenti plda s a hozz tartoz algoritmus alapeset, gyakorta elfordul, hogy ms
szempontokat is figyelembe kell venni, mint pl.: a kivlasztott elemek darabszma ne
haladja meg a vals rtket, a kivlasztott rtkek rekurzv vizsglata az elemekre
(lehetsges prok kpzse), az algoritmus "motorja", azonban mindig a fent lthat
visszalpses keressben tallhat meg.
Barhcs OktatKzpont Programozsi alapismeretek modul 8. fejezet
54.
Rendezsek I.
6
A rendezs klasszikus szmtstechnikai feladat. A problmakr lnyege, hogy egy
adathalmaz elemeit meghatrozott sorrendbe rakjuk. ltalnosan azt mondhatjuk,
hogy adott egy N elem E tmb, s a tmbelemeket kell nvekv vagy cskken
sorrend szerint rendezni. Igen sokfle rendezsi algoritmus ltezik, klnbz
hatkonysggal, az hogy egy adott problma magoldsra melyiket vlasztjuk, a
megoldand feladattl fgg.
Rendezs kzvetlen kivlasztssal
A rendezend szmok legyenek az A vektor elemei. Az els menetben kivlasztjuk a
vektor legkisebb elemt gy, hogy az A(1)-et sszehasonltjuk A(2), , A(n)
mindegyikvel. Ha A(1)-nl kisebb elemet tallunk, felcserljk ket, vagyis ezt a
kisebbet tesszk A(1)-be. gy a menet vgre A(1) biztosan a vektor legkisebb
elemt tartalmazza majd. Az eljrst A(2)-vel folytatjuk, ezt hasonltjuk ssze az
A(3), , A(n) elemekkel, s gy tovbb, menetenknt a soron kvetkez legkisebb
elem kivlasztsval. n-1 menet utn a vektor rendezett lesz.
Ciklus i:=1 - tl n - 1-ig /kls ciklus ez hatrozza meg, hogy mit hasonltunk
/ssze, az utols eltti elemig tart;
Ciklus j:=i + 1-tl n-ig /bels ciklus, hatrozza meg, hogy az elz rtket
/mivel hasonltjuk ssze;
Ha (A[j] < A[i]) akkor /ha a vektor nagyobb index eleme rtke mint a kisebb index
segd:=A[j]; /akkor csere;
A[j]:=A[i];
A[i]:=segd;
Klnben
semmi; /ha nem akkor nem trtnik semmi;
Elgazs vge
Ciklus vge
Ciklus vge

6
Mellklet: pralap_VI.ppt
Barhcs OktatKzpont Programozsi alapismeretek modul 8. fejezet
55.
Rendezs minimumkivlasztssal
A felesleges cserk kikszblse rdekben kt segdvltoz bevezetsre van
szksgnk. Az rtk nev vltoz tartalmazza az adott menetben addig megtallt
legkisebb elemet, index pedig annak vektorbeli sorszmt, indext. Az A vektor
elemt mindig rtk vltoz tartalmval hasonltjuk ssze. Ha rtknl kisebb elemet
tallunk, azt betesszk az rtk nev vltozba s az indexben megjegyezzk a
szban forg elem indext. A menet vgre az rtk a vektor soron kvetkez
legkisebb elemt tartalmazza, index pedig azt a sorszmot, ahol ezt az elemet
talltuk. Csak a menet utols lpsben van szksgnk cserre, amikor az
rtkben lv legkisebb elemet helyre tesszk.
Ciklus i:=1 - tl n - 1 - ig /ciklusindts az elstl az utols eltti elemig;
index:=i; /index vltoz legyen az pp vizsglt elem indexe;
min:=A[i]; /a minimum pedig az rtke (egyelre ez a legkisebb);
Ciklus j:=i + 1-tl n-ig /bels ciklus az i-edik elemet kvet elemtl az utolsig;
Ha (min > A[j]) akkor /ha a j-edik elem kisebb mint az eddigi legkisebb;
min:=A[j]; /akkor ez az elem legyen a legkisebb;
index:=j; /az index pedig ennek az indexe;
Elgazs vge /vge az elgazsnak, klnben g nlkl (egyirny
/elgazs!);
Ciklus vge /bels ciklus vge;
A[index]:=A[i]; /ha kisebbet talltunk akkor annak a helyre rakjuk
A[i]:=min; /az i-edik elemet, az i-edik helyre pedig a legkisebbet;
Ciklus vge
Buborkos rendezs
Az els menetben a rendezend A vektor vgrl indulva minden elemet
sszehasonltunk az eltte lvvel. Amennyiben rossz sorrendben vannak,
felcserljk ket. Az els menet vgre a legkisebb elem biztosan a helyre kerl.
Minden tovbbi menetben ismt a vektor vgrl indulunk, de egyre kevesebb
sszehasonltsra van szksgnk, hiszen a vektor eleje fokozatosan rendezett
vlik. Vgeredmnyben a teljes vektor rendezshez n-1 menetre van szksgnk.
Ciklus i :=2 - tl n - ig /ciklus indtsa 2-tl, mivel htulrl megynk elre
/gy a msodikat hasonltjuk ssze az elsvel a vgn;
Ciklus j:=n - tl i - ig /bels ciklus a vgtl az ppen sszehasonltand elemig;
Ha (A[j-1] > A[j]) akkor /ha j-edik elem eltti elem rtke nagyobb mint a j-edik;
segd:=A[j-1]; /akkor csere;
A[j-1]:=A[j];
A[j]:=segd;
Elgazs vge /egyirny elgazs klnben g nlkl, hisz abban
Ciklus vge /gyis csak egy res utasts lenne;
Ciklus vge
Barhcs OktatKzpont Programozsi alapismeretek modul 8. fejezet
56.
Beszrsos rendezs
A rendezs sorn sorrendbeli hibt keresnk. A kialakult sorrendtl eltr helyet
megjegyezzk, az ott lev elemet elmentjk, majd addig keresnk attl visszafel,
amg nla nagyobbat nem tallunk, hiszen ez el kell majd beszrnunk. Amikor a
helyet megtalltuk, akkor a kzbees elemeket feljebb tolva, az imnt kiemelt elemet
a felszabadul helyre illesztjk. A kvetkez ciklusban mindig eggyel magasabb
pozcirl indulva ismtelten elvgezzk a vizsglatot, amg ki nem alakul a
megfelel sorrend.
Ciklus i:=2 - tl n - ig /ciklus ketttl hiszen j eggyel kisebb mint i, ezrt i nem
/lehet 1, mert az tmbn tli indexelst jelentene;
segd:=A[i]; /segdvltoz rtke az i-edik elem
/(amit vizsglunk);
j:=i - 1; /j rtke eggyel kisebb mint i-;
Ciklus amg ((j > 0) S (segd < A[j])) /ciklus amibe csak akkor lpnk be, ha visszafele nem rtk
/el a tmb elejt, s a vizsgland elem kisebb mint a j-edik;
A[j+1]:=A[j]; / ilyenkor j rtkt/i-be tltjk (i rtke=segd!);
j:=j - 1; /dekrementls, visszafele haladunk;
Ciklus vge
A[j+1]:=segd; /segd rtkt visszatltjk;
Ciklus vge
Feladatok
1. Adott egy szmokat tartalmaz tmb. Vlasszon egy rendezsi algoritmust s
rendezze a tmbt cskken sorrendbe!
2. Adott egy Hmrsklet tmb, mely hrom hnap, napi hmrskleteit
tartalmazza. Vlasszon egy rendezsi algoritmust s rendezze a tmb elemeit
nvekv sorrendbe!
3. Adott egy nvsor. Rendezze a nvsor elemeit szletsi id szerint nvekv
sorrendbe beszrsos rendezssel.
A feladatokhoz ksztse el az llapotteret s az algoritmust!
Barhcs OktatKzpont Programozsi alapismeretek modul 9. fejezet
57.
Rendezsek II.
7
Gyorsrendezs
Tekintsk a tmb kzps elemt (felezzk a tmbt). Balrl keressk meg azt az
els elemet ami ennl nem kisebb, jobbrl ami ennl nem nagyobb. Cserljk ki a
kt elemet, s folytassuk a cserlgetst egszen addig, amg a baloldalon a kzps
elemnl (mely termszetesen cserldhet menet kzben) csupa nem nagyobb,
jobboldalon pedig csupa nem kisebb elem ll. Rekurzv hvssal most rendezzk a
tmb als s fels felt, stb.
Elfelttel: adott a tmb.
Utfelttel: a program rendezze a tmbt gyorsrendezssel.
Deklarci:
Bal, Jobb, i, j:Z+;
Tmb[1..n], Kzp, Segd:N;
Eljrs Gyorsrendezs(Bal:Z+,Jobb:Z+)
Kzp:=Tmb[(Bal+Jobb) Div 2]; /kzprtk meghatrozsa;
i:=Bal;
j:=Jobb;
Ciklus amg (i<=j) /kls ciklus;
Ciklus amg (Tmb[i] < Kzp) /ciklus amg nem tallunk a kzprtknl
i:=i+1; /nagyobbat (i=bal!);
Ciklus vge
Ciklus amg (Tmb[j] > Kzp) /ciklus amg nem tallunk a kzprtknl
j:=j-1; /kisebbet (j=jobb!);
Ciklus vge
Ha (i <= j) akkor /ha mg nem szaladtunk tl a kzpen akkor
Segd:=Tmb[i]; /csere;
Tmb[i]:=Tmb[j];
Tmb[j]:=Segd;
i:=i+1;
j:=j-1;
Elgazs vge
Ciklus vge
Ha (i < Jobb) akkor /ha a kisebb rtk s Jobb kztt mg van intervallum,
Gyorsrendezs(i, Jobb); /rekurzv hvssal meghvjuk erre az intervallumra a
Elgazs vge /gyorsrendezst;
Ha (j > Bal) akkor /a kzp msik oldaln lv intervallumra is ugyanez;
Gyorsrendezs(Bal, J);
Elgazs vge
Eljrs vge

7
Mellklet: Algoritmusok\sortexe\sortdemo.exe
Barhcs OktatKzpont Programozsi alapismeretek modul 9. fejezet
58.
sszefsls
Az sszefsls s vltozatai is gyakori problmakrt alkotnak. Alapesetben kt
rendezett tmbt (sorozatot, file-t stb.) kell sszefslni egy harmadikba, olyan
mdon hogy a rendezettsg megmaradjon.
i:=0; /az j tmb indexe;
j:=1; /az egyik sszefslend tmb indexe;
k:=1; /a msik sszefslend tmb indexe;
Ciklus amg (i < m + n) /ciklus amg i kisebb mint a kt tmb elemeinek
/sszege (ekkora lesz az j tmb);
i:=i + 1; /inkrementls;
/felttel: ha nem futottunk ki egyik tmbbl sem
Ha ((k > n) VAGY ((j <= m) S (A[j] < B[k]))) akkor
/S A j-edik eleme kisebb mint B k-adik eleme VAGY
C[i]:=A[j]; /vge B tmbnek akkor az A tmb elemt rakjuk C-be;
j:=j + 1; /lptetjk A tmbt;
Klnben Ha ((j > m) VAGY ((k <= n) S (B[k] < A[j]))) akkor
/az elbbi felttel B tmbre rtelmezve;
C[i]:=B[k]; /B elemt rakjuk C-be, hisz az a kisebb;
k:=k + 1; /s B-t lptetjk;
Klnben Ha (A[j] = B[k]) akkor /mindkt tmb mg "l" hiszen ezen az gon
/vagyunk, s egyenlk az elemek;
C[i]:=A[j]; /akkor megllapods szerint A-val kezdjk;
j:=j + 1;
i:=i+1; /kt elem kerl C-be, gy i-t is lptetni kell;
C[i]:=B[k]; /B-vel folytatjuk;
k:=k + 1;
Elgazs vge /a hrom egymsba gyazott elgazs vge;
Elgazs vge
Elgazs vge
Ciklus vge /sszefslsi eljrs vge;
Feladatok
1. Adott kt egsz szmokat tartalmaz rendezett tmb, melyben minden elem csak
egyszer szerepel, s gy halmazknt is felfoghatak. rjon algoritmust, mely
elkszti a kt tmb unijt!
2. Adott kt egsz szmokat tartalmaz rendezett tmb, melyben minden elem csak
egyszer szerepel, s gy halmazknt is felfoghatak. rjon algoritmust, mely
elkszti a kt tmb metszett!
A feladatokhoz ksztse el az llapotteret s az algoritmust!
Barhcs OktatKzpont Programozsi alapismeretek modul 9. fejezet
59.
Vegyes Feladatok
Emil s dn nyron hrom hten t dolgoztak, mlnt szedtek. A mlna nem
egyenletesen rett, ezrt minden nap ms s ms mennyisget sikerlt leszednik.
A munkabrbl utna nyaralst terveztek, Balaton krli biciklitrra kszltek. A
tra szervezshez gondosan tanulmnyoztk a trkpet, a parti teleplsek neveit
s a megteend tvolsgokat.
Adottak:
Emil napi mlnaadagjai MlnaE[1..21]:N
dn napi mlnaadagjai Mlna[1..21]:N
Balaton krli teleplsek nevei Telepls[1..n]:string
Teleplsek kztti tvolsgok (az i.-tl az i+1. Teleplsig) Tvolsg [1..n]:N
1. Emil vagy dn szedett tbb mlnt a hrom ht alatt?
2. Mennyi volt Emil napi tlaga?
3. Hnyadik napon kezdett jl teremni a mlna, vagyis mikor szedtek elszr ketten
egytt 20 kg-nl tbbet?
4. Hnyadik naptl cskkent a mlna mennyisge Emil szedse alapjn?
5. Hny olyan nap volt, mikor dn 5 kg-nl tbb mlnt szedett?
6. Lustlkodott-e a msodik ht kzben Emil, volt-e olyan nap amikor nem szedett
semmit?
7. Mely napokon szedtek fejenknt 10 kg-nl tbbet?
8. Melyik volt Emil legjobb napja, mennyi mlnt szedett aznap?
9. Melyik volt dn legrosszabb napja, mennyi mlnt szedett aznap?
10. Rendezze sorba a napokat (kzvetlen kivlaszts) Emil nvekv teljestmnye
szerint!
11. Rendezze sorba a napokat (buborkos) dn nvekv teljestmnye szerint!
12. Fslje ssze a kapott tmbket egy harmadikba!
13. Rendezze cskken sorrendbe a teleplstvolsgokat (maximum kivlaszts)!
14. Melyik a leghosszabb nev telepls?
15. Mely teleplsektl vannak a szomszdos teleplsek 5 km-nl kzelebb?
16. Hny telepls neve kezddik "Balaton"-nal?
17. Van-e olyan kt szomszdos telepls, melyek kztt a tvolsg 10 s 12 km
kztti?
18. Hny 20 km-nl hosszabb tvolsg van a teleplsek kztt?
19. Balatonfredtl indulva hnyadik telepls Balatonszemes?
20. Hny km-t kell tlagosan megtennik, ha 3 ht alatt krbe akarjk jrni a tavat?
Barhcs OktatKzpont Programozsi alapismeretek modul 10. fejezet
60.
Adattrolsi mdszerek I.
8
Mtrix
A mtrix a ktdimenzis tmb elnevezse a szmtstechnikban. Nagyon sok olyan
adattrolsi forma van, amit hatkonyan csak mtrixszal lehet megoldani. A mtrixok
beolvassa, a bennk val keress knny, az alapelv az, hogy kt egymsba
gyazott ciklust indtunk, az egyik a sorokon lpdel vgig a msik az oszlopokon.
Mindig a sorokon val vgighaladssal kezdjk, mivel a gp memrijban a
ktdimenzis tmb is vektorknt van trolva (a sorok egyms utn val felfzsvel).
Brmely mtrix lekpezhet vektorra az albbi egyszer szably ismeretben:
k:= oszlopszm*(i-1)+j
ahol k a vektorindex, i a mtrix sorindexe, j pedig az oszlopindex. Knny beltni,
hogy
Mtrix[2,3]=3*1+3=6
vagyis a mtrix 2. sornak 3. oszlopban szerepl rtk a memriavektor hatodik
eleme (feltve, ha a mtrix oszlopainak szma hrom).
Plda
sszegezzk A[1..m,1..n] mtrix elemeit!
sszeg:=0; /sszeg vltoz inicializlsa;
Ciklus i:=1-tl m-ig /kls ciklus, a sorokon lpdel;
Ciklus j:=1-tl n-ig /bels ciklus, az adott sor cellin (oszlopokon) lpdel;
sszeg:=sszeg + A[i,j]; /sszeghez adjuk hozz az A mtrix i-edik sorban
Ciklus vge /j-edik oszlopban lv cella sszegt;
Ciklus vge
Feladatok
1. Ksztsnk algoritmust mely egy m*n-es mtrixnak megadja a legnagyobb s
legkisebb elemt!
2. Vlaszuk ki egy m*n-es pozitv egsz szmokat tartalmaz mtrix legnagyobb
sszeg sort!
3. Adott egy n*n-es mtrix. rjunk algoritmust, ami megadja a mtrix tliban lv
elemek sszegt!
A feladatokhoz ksztse el az llapotteret s az algoritmust!

8
Mellklet: pralap_VII.ppt
Kls ciklus
Bels ciklus
Barhcs OktatKzpont Programozsi alapismeretek modul 10. fejezet
61.
Szveg (string)
A szveg valjban egy karaktertmb, gy hivatkozhatunk a szvegen bell lv
karakterekre, a tmbnl megszokott mdon (Szveg[1]). Segdfggvnyknt
gyakran alkalmaznak Hossz rtk alprogramot, mely visszaadja a karaktertmb
elemeinek szmt (a szveg hosszt).
Plda
Adjuk meg egy szvegben lv mssalhangzk szmt!
Be(szveg); /bekrjk a szveget;
db:=0; /mg nem tudjuk, hny mssalhangz lesz;
Ciklus i:=1 tl Hossz(szveg)-ig /ciklus amg el nem rjk a karaktertmb vgt;
Ha (szveg[i] mssalhangz) akkor /vizsglat;
db:=db + 1; /ha mssalhangz nveljk a darabszmot eggyel;
Elgazs vge
Ciklus vge
Ki(db); /rassuk ki a darabszmot;
Feladatok
1. rjunk algoritmust, ami eldnti, hogy egy adott hosszsg szvegben,
megtallhat-e a "kutya" sz!
2. Adott egy szveg, ksztsnk algoritmust arra, amely kiszmtja a szvegben
elfordul karakterek relatv gyakorisgt!
3. Szmoljuk meg egy szvegben a szavak szmt!
A feladatokhoz ksztse el az llapotteret s az algoritmust!
Barhcs OktatKzpont Programozsi alapismeretek modul 10. fejezet
62.
File
A file adatszerkezet lehet tmbszer (szekvencilis llomny), vagy rekordalap
(direkt llomny). A direkt elrshez indexeket hasznlunk, amelyek megmutatjk,
hogy a keresett rekord, hol helyezkedik el az llomnyon bell. Indexelt llomnyrl
akkor beszlnk, ha ezeket az indexeket kln adatszerkezetbe (indextblba)
gyjtjk. Ha az indexek mutatkat tartalmaznak a kvetkez index(ek)re, indexlista
jn ltre, ekkor beszlnk indexelt szekvencilis llomnyrl (a lista szekvencilis).
Ha a rekordok azonos mretek, akkor a rekordok mezit nllan is kezelhetjk,
azonban ha a rekordok vltoz hosszsgak (ez a gyakoribb), akkor csak teljes
rekordokat tudunk felvinni ill. kiolvasni.
A file-ok alapmveletei
- megnyits (open): beolvassuk az llomny s azonostt (handle) rendel hozz
valamint belltja a mutatt, ami jelzi hogy hol tartunk az llomnyban.
- lezrs (close):
- mentssel: kirjuk a vltozsokat a lemezre s trljk a mutatt, a file-vltoz
sszerendels megmarad (a handle trldik).
- ments nlkl: csak a mutatt trljk, valamint felszabadtjuk a
memriaterletet.
- olvass (read): a mutat ltal meghatrozott helyrl beolvassuk az adatokat.
- rs (write): a mutat ltal meghatrozott pozciba rjuk az adatot (ha volt ott
adat fellrjuk).
- fellrs (rewrite): trljk a file tartalmt (ha volt) s belerjuk az adatokat, a
mutat a file elejre mutat.
- hozzfzs (append): nem trljk a file tartalmt, a file vgre lltjuk a mutatt
s oda rjuk az adatainkat.
- thelyezs (seek): a mutat mozgatsa a file-on bell.
Barhcs OktatKzpont Programozsi alapismeretek modul 10. fejezet
63.
Plda
Adott kt szekvencilis file x s y , mindkett rendezett, z llomnyba fsljk ssze
a kt llomny tartalmt, gy hogy a rendezettsg megmaradjon!
MEGNYIT(z); /megnyitjuk (ltrehozzuk) z-t;
MEGNYIT(x); /megnyitjuk x-et;
MEGNYIT(y); /megnyitjuk y-t;
Ciklus amg ((nem eof(x)) VAGY (nem eof(y))) /ciklus amg brmely llomnyban van mg adat;
Ha ((eof(y)) VAGY ((nem eof(x)) S (ex < ey))) akkor
HOZZFZ(z, ex); /x adott rekordja kisebb mint y-;
OLVAS(x, ex, eofx); /olvasssal lptetnk a kvetkez rekordra;
Klnben Ha ((eof(x)) VAGY ((nem eof(y)) S (ey < ex))) akkor
HOZZFZ(z, ey);
OLVAS(y, ey, eofy); /lptets, amg nincs file vge;
Klnben Ha (ex = ey) akkor
HOZZFZ(z, ex);
OLVAS(x, ex, eofx);
LPTET(z); /mutat mozgatsa direkt mdon a kvetkez rekordra;
HOZZFZ(z, ey);
OLVAS(y, ey, eofy);
Elgazs vge
Elgazs vge
Elgazs vge
LPTET(z);
Ciklus vge
LEZR(x, nem ment);
LEZR(y, nem ment);
LEZR(z, ment); /elmentjk a belert adatokat;
Barhcs OktatKzpont Programozsi alapismeretek modul 11. fejezet
64.
Adattrolsi mdszerek II.
9
Tbla
A tbla egy asszociatv adatszerkezet, melynek elemei kulcs s adat prok, ahol a
kulcsok egyediek s brmely elem a kulcsn keresztl rhet el. A tblval
kapcsolatos mveletek kzponti krdse az adott kulcshoz tartoz adatok, minl
rvidebb id alatt trtn megkeresse, s a tbla karbantartsa.
A tbla egy olyan adatszerkezet, amelyen a kvetkez mveletek vannak
rtelmezve:
- Keress
- Beszrs
- Trls
- Szekvencilis elrs
A tblamveletek hatkonysga a fizikai trolstl, vagyis a tbla szervezstl fgg.
Szinte minden mvelet tartalmaz keresst, hiszen nem vihetnk fel pldul olyan
adatot, melynek kulcsa mr szerepel a listban. A tbla valjban az egydimenzis
tmb (a vektor) ltalnostsa - ott a trolt adatokat indexeken keresztl rjk el,
vagyis a kulcsok maguk az indexek.
A tblk lehetnek:
- Sorosak
- ntrendezk
- Rendezettek
- Kulcstranszformcisak
Mi ez utbbival foglalkozunk behatbban.
Mi a kulcstranszformci lnyege? Minden tblatpushoz tartozik egy algoritmus,
mely meghatrozza az j elem beszrsnak helyt. Kulcstranszformcis tbla
esetben a kulcshoz tartoz transzformci (fggvny) adja meg az elem helyt
(indext). A transzformcis fggvnyt hash (hast) fggvnynek is szoks nevezni,
feladata pedig az n. kulcstkzsek feloldsa, vagyis annak elkerlse, hogy kt
kulcshoz, ugyanaz az index rendeldjn.
Ha a kulcsok egsz szmok a transzformcis fggvnyek e kvetkezk lehetnek:
- Maradkkpzs (hasts): ha az indexek 1 s m kz esnek, a kulcshoz rendels
mdja lehet a (Kulcs mod m) + 1.
- Szorzs: a kulcsot sszeszorozzuk sajt magval s vesszk az eredmny
kzps jegyeit.
- Randomizls: egy olyan vletlenszmgenertor hasznlata, ami egy adott
rtkhez mindig ugyanazt a "vletlen" rtket rendeli.

9
Mellklet: Algoritmusok\index.html
Barhcs OktatKzpont Programozsi alapismeretek modul 11. fejezet
65.
Hash algoritmus
Hash keresst - rendezst (mint a neve is mutatja) asszociatv (hash) tmbn lehet
vgrehajtani. Az asszociatv tmb jellegzetessge, hogy kulcs-rtk prokbl ll, ahol
a kulcsot s az rtket is a felhasznl adja meg. A Hash tblk kezelse azon
alapszik, hogy a kulcsknt meghatrozott adathoz, az algoritmus mindig ugyanazt a
tblaindex rtket rendeli hozz, ezltal meghatrozhat, hogy egy adott rtk hol
tallhat a tblban (a kulcsa alapjn). Ha a hozzrendelt tblaindex foglalt, akkor a
kvetkez indexrtk vesszk, ha az is foglalt , akkor az azt kvett, s gy tovbb.
Ha elrjk a tbla vgt az elejre pakolunk. A legfontosabb itt annak a mdszernek
a meghatrozsa amivel egy kulcshoz tblaindexet rendelnk. A legismertebb
mdszer a
Kulcs mod tblahossz + 1
mivel termszetesen biztostanunk kell azt, hogy a hozzrendelt tblaindex az
1..tblahossz tartomnyban legyen, valamint azt is, hogy elg egyenletes eloszls
maradjon az indexek kiosztsa, hiszen a kijells itt nem lineris mdon trtnik mint
az elz algoritmusokban. Az elz maradkkpzs eredmnye gy is tekinthet,
mintha a kulcsot tblahossz alap szmrendszerben rtuk volna fel, s az indexhez
csak az utols szmjegyet hasznltuk volna fel (hozzadva egyet), ebbl szrmazik
a csonktsos - hash - algoritmus neve. A keressnl meghatrozzuk a kulcshoz az
indexet, majd onnan kezdnk keresni egszen addig amg meg nem talljuk az
rtket vagy res tblabejegyzst nem tallunk.
Plda
Adott egy n elem e tmb. Keressnk meg a tmbben egy adott rtket!
Be(rtk); /bekrjk az rtket;
kulcs:=Kulcs(rtk); /a Kulcs fggvny visszaadja az rtkhez tartoz kulcsot;
index:=kulcs mod n + 1; /a kulcs ismeretben meghatrozzuk az indexet;
nincs:=hamis; /logikai segdvltoz, abban bzunk, hogy van ilyen elem;
Ciklus amig ((e[index] <> rtk) S (e[index] <> NULL) S (nincs = hamis)) /ciklus amg e indexedik
/eleme nem a keresett elem, nem res s nincs rtke hamis;
index:= index + 1; /index inkrementlsa;
Ha (index > n) akkor /ha tlmegynk a tblahosszon
index:=1; /kezdjk az elejrl;
Elgazs vge
Ha (index = kulcs mod n + 1) akkor /ha az index a legelszr meghatrozott index,
/az azt jelenti, hogy "krbejrtunk";
nincs:=igaz; /vagyis nincs ilyen rtk elem;
Elgazs vge /nincs klnben g, hiszen ott gyis res utasts lenne;
Ciklus vge
Ha ((nincs = hamis) S (e[index] <> NULL)) akkor
Ki(index); / ha megtalltuk akkor kirjuk;
Klnben /klnben ha "krbejrtunk" vagy kilptnk a ciklusbl
Ki('Nincs ilyen elem'); /mert res elemet talltunk, kirjuk, hogy nem talltuk meg;
Elgazs vge
Barhcs OktatKzpont Programozsi alapismeretek modul 11. fejezet
66.
Verem adatszerkezet
A verem a legltalnosabb s legelterjedtebb adatszerkezet. Minden olyan
helyzetben alkalmazhat, ahol az adatokhoz a bersukhoz kpest fordtott
sorrendben kvnunk hozzfrni. Az egymsba gyazott fggvnyek vltozi nagyon
knyelmesen kezelhetek ezzel a szerkezettel, hiszen a fggvnyek bellrl kifel
hajtdnak vgre, vagyis elbb azok amiket ksbb hvtunk meg.
A verem f jellemzje, hogy a tetejre pakolunk, s onnan is vesznk ki, hiszen egy
elemet csak a felette lv elemek eltvoltsa utn rhetnk el. Azon helyzetekben
alkalmazhat jl, ahol az adatok felhasznlsa LIFO (Last in, first out - a ksbb jtt
elbb tvozik) rendszerben trtnik
Globlis vltozk:
ADATOK [1..n]:string /a "valdi" vektor amit veremknt kezelnk;
szabad:Z+ /az els szabad hely a veremben (tmbben);
Eljrs VTRL /a verem alaphelyzetbe lltsa (trlse);
szabad:=1; /ress vlik a verem, ha a szabad helyre mutat vltozt
Eljrs vge /az els elemre lltjuk;
Fggvny VRES:L /verem ressgnek vizsglata;
VRES:=(szabad = 1); /res a verem, ha az szabad hely vltozja az els elemre
Fggvny vge /mutat;
Fggvny VTELE:L /verem feltltttsgnek vizsglata;
VTELE:=(szabad> n); /tele a verem, ha az szabad hely vltozja nagyobb rtk
Fggvny vge /mint az elemek maximlis szma;
Fggvny VEREMBL:string /elem kivtele a verembl (POP);
Ha (VRES) akkor /ha a VRES fggvny igaz rtket ad vissza;
Ki('Nincs elem, a verem res'); /zenet kirsa;
VEREMBL:=NULL; /a fggvny ltal visszaadott rtk res;
Klnben /ha nem res a verem;
szabad:= szabad-1; /akkor - mivel kivesznk egy elemet - felszabadul egy hely
VEREMBL:= ADATOK[szabad]; /vagyis a szabad hely vltozja dekrementldik;
Elgazs vge /a kivett adat pedig legyen az ADAT tmb belltott
Fggvny vge /"szabad"-ik eleme (ami a kivtel miatt ress vlik;
Eljrs VEREMBE(adat:string) /elem bettele a verembe (PUSH);
Ha (VTELE) akkor /ha a szabad vltoz rtke nagyobb mint a tmb utols indexe;
Ki('Tele a verem'); /akkor nincs mr szabad hely;
Klnben /ha van mg hely a veremben;
ADATOK[szabad]:=adat; /ADAT-ok tmb "szabad"-ik eleme legyen a paramterknt
szabad:=szabad + 1; /megadott rtk, a szabad vltoz rtke inkrementldik
Elgazs vge/ (eggyel cskken a szabad helyek szma);
Eljrs vge
Barhcs OktatKzpont Programozsi alapismeretek modul 11. fejezet
67.
Sor adatszerkezet
A sor adatszerkezet f jellemzje, hogy mindig a sor vgre pakolunk s a sor
elejrl vesznk el elemeket. Azon helyzetekben alkalmazhat jl, ahol az adatok
felhasznlsa FIFO (First in, first out - az elbb jtt elbb tvozik) rendszerben
trtnik. Ha a tmb vgre rnk, s az eleje res, akkor a sor elejre pakolunk.
Globlis vltozk:
ADATOK[1..n]:string
honnan:Z+ /sor eleje;
hova:Z+ /utols elem utni els szabad hely;
db:N /sorban lv elemek szma;
Eljrs STRL /sor inicializlsa (trlse);
db:=0; /nincs elem;
hova:=1; /az els helyre pakolhatunk;
honnan:=1; /az els helyrl vehetnk ki;
Eljrs vge
Fggvny SRES:L /sor ressgvizsglata;
SRES:=(db=0); /nincs elem a sorban;
Fggvny vge
Fggvny STELE:L /sor feltltttsgnek vizsglata;
STELE:=(db=n); /a darabszm megegyezik a maximlis elemszmmal;
Fggvny vge
Fggvny SORBL:string /elem kivtele a sorbl;
Ha (SRES) akkor /ha nincsenek elemek a sorban
Ki('Nincs elem, res a sor'); /akkor a sor res;
SORBL:=NULL; /a visszaadott rtk res;
Klnben /ha vannak
SORBL:=ADATOK[honnan]; /akkor a "honnan"-adik helyen lv elemet vesszk ki;
honnan:=honnan + 1; /s "honnan"-t inkrementljuk;
Ha (honnan > n) akkor /ha elrjk a sor vgt
honnan:=1; /kezdjk az elejtl;
Elgazs vge
db:=db - 1; /kivettnk egy elemet, a darabszm cskken;
Elgazs vge
Fggvny vge
Eljrs SORBA(adat:string) /elem bettele a sorba;
Ha (STELE) akkor /ha a darabszm megegyezik az indexszmmal
Ki('Tele a sor'); /akkor nincs hely a sorban;
Klnben /ha van
ADATOK[hova]:=adat; /akkor a "hova"-dik helyre berakjuk az adatot;
hova:=hova + 1; /inkrementljuk a "hova" vltozt;
Ha (hova > n) akkor /ha elrjk a sor vgt
hova:=1; /az elejre pakolunk;
Elgazs vge
db:=db + 1; /betettnk egy elemet, a darabszm n eggyel;
Elgazs vge
Eljrs vge
Barhcs OktatKzpont Programozsi alapismeretek modul 12. fejezet
68.
Adattrolsi mdszerek III.
Lista
A lista egy olyan szerkezet, amely megmondja, hogy egy adott adatelem utn melyik
a (logikailag) kvetkez. Nevezik ezt a trolsi formt lncolt brzolsnak is.
Knny az elemek kiolvassa, j elem beszrsa, de a mveletekhez
szekvencilisan vgig kell olvasni az egsz listt. Ez az adatszerkezet akkor is
elnys, amikor kt adatelem kz kell beszrni egy jat, vagy az adatsor kzeprl
kell trlni egy elemet.
A lncolt adatszerkezet gy brzolhat:
Listatpusok
- Egyirny: minden elem csak egy mutatt tartalmaz az t kvet elemre.
- Ktirny vagy szimmetrikus lista: minden elem kt mutatt tartalmaz egyet az t
megelzre, egyet pedig az t kvetre.
- Nyltvg: a lista utols elemnek mutatja rtktelen (NIL).
- Cirkulris: a lista utols elemnek mutatja az els elemre mutat.
- Multilista: minden listaelem egy jabb lista kiindulpontja lehet.
- Statikus: elre meghatrozott szm s lefoglalt listaelemet tartalmaz.
- Dinamikus: tetszs szerint bvthet j elemek lefoglalsval.
A pldnkban egy egyirny, nyltvg, dinamikus lista karbantart programjt adjuk
meg.
Globlis vltozk:
Rekord Listaelem /nhivatkoz struktra;
adat:string
kv:mutat /egy rekordra mutat mutatt tartalmaz rekord;
Rekord vge
Lista[1..n]:Listaelem / a dinamikusan kezelt tmb;
ELEJE:mutat /lista elejre mutat;
AKTULIS:mutat /az aktulis elemre mutat;
KVETKEZ:mutat /az aktulis elem kv mezjben szerepl elemre mutat;
ELZ:mutat /az aktulis megelzre mutat;
MEMFOG(Byteok:Z+):mutat /lefoglalja a memria egy rszt (akkort amekkora a
/tmbelem tpusnak szksges) s visszaadja a lefoglalt
Pldul: /memriaterlet cmt egy mutatban;
P:=MEMFOG(20)
Ha (P = NIL) akkor /a NIL egy specilis mutatrtk nem mutat sehova;
('Hiba, nincs elg memria a listhoz')
Elgazs vge
Adat Mutat = 2 Adat Mutat = 3 Adat Mutat = NIL
Barhcs OktatKzpont Programozsi alapismeretek modul 12. fejezet
69.
MEMSZAB(P) /felszabadtja a memria mutat ltal
/meghatrozott rszt;
Fggvny RES:L
RES:=(ELEJE = NIL); /res a lista, ha az els elem rtktelen;
Fggvny vge
Fggvny VGE:L
VGE:=(KVETKEZ = NIL) /vge van a listnak, ha NIL az kvetkez elem rtke,
Fggvny vge /vagyis az utols elemen llunk;
Eljrs ELSRE
AKTULIS:= ELEJE; /az els elem lesz az aktulis;
KVETKEZ:= (*AKTULIS).kv; /a kvetkez pedig az t kvet elem;
ELZ:=NIL; /ha az els elem az AKTULIS, akkor az elz NIL lesz
Eljrs vge / nincs megelz elem;
Eljrs ALAP /alapllapotba hozza (inicializlja) a listt;
ELSRE;
Ciklus amg (AKTULIS <> NIL) /amg el nem rjk a lista vgt;
MEMSZAB(AKTULIS) ; /trljk az aktulis elemet;
AKTULIS:=KVETKEZ; /az aktulis legyen a kvetkez elem;
KVETKEZ:=(*AKTULIS).kv; /kvetkez mutasson az aktulis elemet
Ciklus vge /kvetre;
ELEJE:=NIL; /res a lista, nincs kezd elem;
ELZ:=NIL; /ha az eleje NIL, akkor eltte sincs semmi;
Eljrs vge
Eljrs LPTET
Ha (nem VGE) akkor /ha nem az utols elemen llunk(van kvetkez);
ELZ:=AKTULIS; /a most aktulis lesz az elz elem;
AKTULIS:=KVETKEZ; /az aktulis pedig az t kvet elem lesz;
KVETKEZ:= (*AKTULIS).kv;
Elgazs vge
Eljrs vge
Eljrs BEOLVAS /a teljes lista beolvassa;
ELSRE; /mivel az els elemtl kezdnk;
Ciklus amg (nem VGE) /megynk a legutols listaelemig;
ELZ:=AKTULIS; /a most aktulis lesz az elz elem;
AKTULIS:=KVETKEZ; /az aktulis pedig az t kvet elem lesz;
KVETKEZ:= (*AKTULIS).kv; /(ua. mint a lptetsnl, csak itt nem egyet
Ciklus vge /lpnk);
Eljrs cge
Fggvny RTK:string
Ha (AKTULIS <> NIL) akkor /ha van mutatnk
RTK:=(*AKTULIS).adat; /akkor az aktulis listaelem rtkt
Klnben /vesszk ki, klnben az rtk fggvny
RTK:=NULL; /adjon vissza res rtket;
Elgazs vge
Fggvny vge
Barhcs OktatKzpont Programozsi alapismeretek modul 12. fejezet
70.
Eljrs TRL
segd:=AKTULIS; /a segd vltozt a memria felszabadtshoz hasznljuk;
Ha (nem VGE) akkor /ha nem az utols elemen llunk
Ha (AKTULIS = ELEJE) akkor /ha az els elemet trljk;
ELEJE:=KVETKEZ; /a lista eleje a kvetkez elem lesz;
Klnben /ha nem az els elem;
(*ELZ).kv:=(*AKTULIS).kv; /elz elem kvetkez mezje mutasson
Elgazs vge /a trlend elem utnira, majd az aktulis
AKTULIS:=KVETKEZ; /is legyen az, majd a kvetkez legyen a
KVETKEZ:= (*AKTULIS).kv; /mostani aktulis kvet;
Klnben /ha az utols elemen llunk;
Ha (ELZ = AKTULIS) akkor /vizsglat: ha mr trltk az utolst, s jra
BEOLVAS; /meghvtuk a trlsi eljrst, beolvassuk a listt,
Elgazs vge hogy ELZNEK legyen hasznlhat rtke;
AKTULIS:=ELZ; /visszalpnk egyet;
(*AKTULIS).kv:=NIL; /s az aktulis elem mutatjt trljk,
Elgazs vge /gy most ez az utols;
MEMSZAB(segd); /a segd vltozba tett utols elemet
Eljrs vge /trljk, a "kvetkez" vltozt
/nem bntjuk, rtke gyis NIL;
Problmt jelent a trlsnl az, hogy esetleg tbbszr is meghvjk a trlsi eljrst
egyms utn. Ez az ELZ mutat rossz rtke miatt (ELZ = AKTULIS!), hibt
okozhat. Ez az eset rvilgt a lista legfontosabb tulajdonsgra, hogy egyirny,
ezrt szekvencilisan olvashat csak be. jraolvasssal segthetnk a gondon.
Adat Mutat=(2)3 Adat
Mutat=NIL
Adat
Mutat = 3
j
rgi rgi
Barhcs OktatKzpont Programozsi alapismeretek modul 12. fejezet
71.
Fggvny BESZR(adat:string):L /adat felvitele a listba;
PJ:mutat /fggvnyvltoz deklarlsa;
PJ:=MEMFOG(listaelemmret); /le kell foglalni a helyet az j adat rszre;
Ha (PJ <> NIL) akkor /ha sikerlt a lefoglals;
Ha ((RES) VAGY (AKTULIS = ELEJE)) akkor /ha res a lista vagy az
ELEJE:=PJ; /elejn llunk, az elejre szrunk be;
Klnben
Ha (ELZ = AKTULIS) akkor /ha trltk az utolst, s visszalptnk egyet
BEOLVAS; /jra beolvassuk a listt, hogy ELZNEK
Elgazs vge /legyen hasznlhat rtke;
(*ELZ).kv:=PJ; /az aktulis el szrunk be;
Elgazs vge /az j elem kvetkez mezje mutasson az
(*PJ).kv:=AKTULIS; /aktulisra;
KVETKEZ:= AKTULIS /kvetkez legyen a mostani aktulis elem;
AKTULIS:=PJ; /aktuliss tesszk az j elemet;
(*AKTULIS).adat:=adat; /beletesszk az adat rszt;
BESZR:=igaz; /a beszr fggvny igaz rtket ad vissza;
Klnben
BESZR:=hamis; /nem sikerlt a lefoglals, hamis a visszatrsi
Elgazs vge /rtk;
Fggny vge
Eljrs TRLAH(honnan:Z+) /adott helyrl val trls, a honnan tartalmazza a trlend indext;
van:logikai /logikai vltoz annak vizsglatra hogy van-e ilyen elem;
van:=igaz; /abban bzunk, hogy van;
Ha (honnan > n) akkor /ha nagyobb indexet adunk meg mint a tmbelem szma,
van:=hamis; /az tmbn tli indexels, nincs ilyen elem;
Klnben
ELSRE; /a lista elejre llunk;
i:=1; /index legyen az els elemindex;
Ciklus amg ((i < honnan) S (van = igaz)) /ciklus amg el nem rjk a keresett indexet;
Ha ((VGE) S (i <> honnan)) akkor /ha elrtk a lista vgt s nem talltuk meg
van:=hamis; /a keresett indexet, nincs ilyen listaelem;
Klnben
LPTET; /lptetnk;
i:=i + 1; /ciklusvltoz inkrementlsa;
Elgazs vge
Ciklus vge
Elgazs vge
Ha (van = hamis) akkor /ha nem talltunk ilyen indexet;
Ki('Nincs ilyen elemindex'); /kirs;
Klnben /ha megtalltuk a keresett elemet (honnan);
TRL; /trlhetnk, hiszen az i vltozval pontosan belltottuk,
Elgazs vge /hogy honnan szeretnnk trlni;
Eljrs vge
Adat Mutat=(3)2 Adat
Mutat=NIL
Adat Mutat=3
rgi
j j
Beszrt elem
Barhcs OktatKzpont Programozsi alapismeretek modul 12. fejezet
72.
Eljrs BESZRAH(hova:Z+, adat:string) /adott helyre val beszrs;
van:logikai /logikai vltoz annak vizsglatra hogy van-e ilyen elem;
van:=igaz; /abban bzunk, hogy van;
Ha (hova > n) akkor /ha nincs ilyen tmbelemindex (tlindexelnk a tmbn);
van:=hamis; /van rtke legyen hamis;
Klnben
ELSRE; /a lista elejre llunk;
i:=1; /ciklusvltoz inicializlsa;
Ciklus amg ((i < hova) S (van = igaz)) /ciklus amg meg nem talljuk, ahova be akarunk szrni;
Ha ((VGE) S (i <> hova)) akkor /ha elrtk a lista vgt s nem talltuk meg
van:=hamis; /a keresett indexet, nincs ilyen listaelem;
Klnben
LPTET; /lptetnk;
i:=i + 1; /inkrementljuk a ciklusvltozt (WHILE!);
Elgazs vge
Ciklus vge
Elgazs vge
Ha (van = hamis) akkor /ha nincs ilyen elem (hova);
Ki('Nincs ilyen elemindex'); /kirs;
Klnben /ha megtalltuk, belltottuk a helyet, teht beszrunk,
HA (nem BESZR(adat)) akkor /az adat a hv eljrs "adat" paramtere;
Ki('Nem sikerlt a memriafoglals'); /ha a BESZR fggvny hamis rtket ad vissza
Elgazs vge /a tbbi felttel teljeslt, de nem tudtuk lefoglalni a
Elgazs vge /szksges memriaterletet;
Eljrs vge
Mind az adott helyrl val trlsnl, mind a beszrsnl le kell fednnk azt a
problmt, hogy esetleg olyan listaelemre hivatkozunk, ami nem ltezik. N a
tmbelemek maximlis szma, ami azonban nem egyezik meg a listaelemek
tnyleges szmval (dinamikus memriafoglals!), gy vizsglnunk kell, hogy nem
adnak-e meg ezeknl nagyobb indexet. A beszrsnl mg egy vizsglatot kell
vgeznnk, mgpedig, hogy sikerlt-e a memriafoglals az j elemnek.
Barhcs OktatKzpont Programozsi alapismeretek modul 13. fejezet
73.
Adattrolsi mdszerek IV.
Binris fa
A binris fa a szmtstechnikban igen gyakran hasznlt szerkezet, hiszen
hierarchikus sszefggseket tudunk a segtsgvel trolni. Olyan multilistaknt
kpzelhet el, melyben minden elemhez kt mutat tartozik, a jobboldali als s a
baloldali als kapcsold elemhez tartoz.
a
b c
d e f g
A fa egy hierarchikus adatszerkezet amely vges szm csompontbl ll, s igazak
r a kvetkezk:
- Kt csompont kztt a kapcsolat egyirny, az egyik a kezdpont a msik a
vgpont
- Van a fnak egy kitntetett csompontja, mely nem lehet vgpont. Ez a fa
gykere.
- Az sszes tbbi csompont pontosan egyszer vgpont.
- A gykrhez 0 vagy tbb diszjunkt fa kapcsoldik. Ezek a gykrhez tartoz
rszfk.
Defincik
Csompont foka: csomponthoz kapcsolt rszfk szma.
Fa foka: a fban tallhat legnagyobb fokszm.
Levl: 0 fok csompont.
Szl (s): kapcsolat kezdpontja (csak a levelek nem szlk).
Gyerek: kapcsolat vgpontja (csak a gykr nem gyerek).
Szintszm: gykrtl mrt tvolsg. A gykr szintszma 0.
Fa magassga: a levelekhez vezet utak kzl a leghosszabb, a maximlis
szintszm.
Binris fa: fokszma 2, gykerbl maximlisan kt rszfa gazik el: bal s
jobboldali rszfa.
jobb bal
rtk
a b
d e
c
Gykr
0. szint
1. szint
2. szint
rszfa
g
levl
Barhcs OktatKzpont Programozsi alapismeretek modul 13. fejezet
74.
Rendezetlen binris fa
A rendezetlen binris fa egy egyszer multilista. Az elemek a fban nem rendezettek,
semmilyen szably szerint nem llapthat meg, hogy egy adott elem, a fban hol
tallhat. Kezelse (mdosts, trls, beszrs) nagyon gyors, de a keresse,
"bejrsa", lass fleg nagy elemszm esetn.
Rendezett binris fa (keresfa)
A rendezett binris fa megfelel a kvetkez szablyoknak:
- A baloldali rszfa sszes eleme kisebb, mint a szl.
- A jobboldali rszfa sszes eleme nagyobb vagy egyenl, mint a szl.
- Egy n szint fa elemeinek szma maximum 2
n+1
-1.
- Egy elemet maximum n+1 lpsben megtallunk.
Mindezt gy rjk el, hogy mr az elemek felfzsekor ("beszrsakor") figyelnk
arra, hogy az elem j helyre kerljn. Minden esetben levlknt szrjuk be, oly
mdon, hogy megkeressk az elem helyt, vagyis a gykrtl kezdve vgiglpdelnk
a csompontokon, oly mdon, hogy ha az adott csompont rtke kisebb, mint a
beszrand elem balra megynk, ha nem jobbra. Ezt a stratgit folytatva rjk el a
fa aljt, a leveleket, amihez hozzfzhetjk az elemnket.
Plda
Fzzk fel a 4, 2, 6, 3, 1, 7, 5 szmokat egy binris fra!
Prbljuk meg ugyanezt az 1, 2, 3 ,4 ,5 ,6 ,7 sorrenddel!
4
2 6
1 3 5 7
1
2
3
4
5
6
7
Barhcs OktatKzpont Programozsi alapismeretek modul 13. fejezet
75.
A msodik esetben a fa egyszer lineris listv fajult, degenerlt fa vlt belle. Az
ilyen tpus, n. kiegyenslyozatlan fban trtn keress mg a listban trtn
keressnl is rosszabb hatsfok. Mg a kiegyenslyozott fban maximum Log
2
N
lpsben megtalljuk a keresett elemet, addig a kiegyenslyozatlan fban a
legrosszabb esethez tartoz lpsszm maga N (az elemek szma). Vagyis ha az
elemek szma 1 millird, kiegyenslyozott keresfa esetn brmely elemet
megtallunk 30 lpsben (2
30
=1 073 741 824), mg a legrosszabb eset az elemek
szma vagyis: 1 000 000 000 lps.
Kiegyenslyozott binris fk (AVL-fk, vrs-fekete fk)
Az ltalnos binris keresfk htrnya az, hogy elfajulhatnak. Mi a megolds? A
kiegyenslyozs. A magassg szerinti kiegyenslyozs kzpt a
kiegyenslyozatlan s a tkletesen kiegyenslyozott fk kztt. Csak annyira van
kiegyenslyozva, hogy a karbantarts mg elviselhet, de a keress mr hatkony
legyen. E fk elmlett Adelson-Velskii s Landis vezettk be, ezrt nevezik ezeket a
fkat AVL-fknak.
Egy binris fa akkor kiegyenslyozott magassg szerint, ha brmely csompontra
igaz, hogy jobb s a baloldali rszfjnak magassga kztti klnbsg <=1. Az ilyen
fkat forgatssal tudjuk egyenslyban tartani.
Ez egy egyszeres balra forgats, vagyis minden elem balra mozdult el az eredeti
helyrl. Attl fggen forgatunk balra vagy jobbra, hogy melyik rszfa magassga a
nagyobb. Sok esetben egy forgatssal nem tudjuk kiegyenslyozni a rszft ilyenkor
ketts forgatssal rotljuk az elemeket.
Az AVL-fk magassga legfeljebb 1,45-szerese az optimlis binris keresfa
magassgnak (max. 45%-al magasabb). Viszont a forgatsok szma elvileg elrheti
a fa magassgt is.
A vrs-fekete fk szintn kiegyenslyozott binris keresfk. Mindegyik pontot ki
kell egszteni egy bitnyi ksr informcival, ami az adott pont sznt adja meg. Az
elre magadott szablyok szerinti adatfelvitelkor a fa kiegyenslyozottknt jn ltre.
A vrs-fekete tulajdonsg a kvetkez:
- Minden pont szne vagy vrs vagy fekete.
- Minden NIL levl szne fekete.
- Minden vrs pontnak mindkt fia fekete.
- Brmely kt, azonos pontbl indul s levlig vezet ton ugyanannyi fekete
pont van.
A szablyok betartshoz itt is szksg van a loklis forgatsokra.
A tovbbiakban egy kiegyenslyozatlan, binris keresfa kezelshez szksges
algoritmusokat adjuk meg.
1
2
3
2
1 3
Barhcs OktatKzpont Programozsi alapismeretek modul 13. fejezet
76.
Globlis vltozk
Rekord Faelem /nhivatkoz struktra
adat:string
jobb:mutat /rekordra mutat mutat
bal:mutat
Rekord vge
Adatok[1..n]:Faelem /dinamikusan kezelt tmb
ELEJE: mutat /a legels elemre mutat (gykrre);
AKTULIS: mutat /aktulis elemre mutat;
SZL: mutat /az aktulis elem szljre mutat;
Eljrs GYKR
AKTULIS:=ELEJE; /a legels elem lesz az aktulis;
SZL:=NIL; /az els elemnek nincs szlje;
Eljrs vge
Fggvny VGE:L /visszatrsi rtk logikai;
VGE:=((*AKTULIS).bal=NIL s (*AKTULIS).jobb=NIL); /nincs elem amire aktulis mutatna;
Fggvny vge
Eljrs BEJRS
GYKR;
Eljrs BEJR(AKTULIS:mutat)
Ha (nem VGE) akkor /ha nem a vgn vagyunk;
Ki((*AKTULIS).adat); /adatkirs;
BEJR((*AKTULIS).bal); /rekurzvan meghvjuk a fggvnyt, addig
BEJR((*AKTULIS).jobb); /megynk balra mg el nem rjk a fa
Klnben /vgt, majd jobbra folytatjuk;
Ki((*AKTULIS).adat);
Elgazs vge
Eljrs vge
Eljrs vge
(A gykrtl kezdve a kirs sorrendje: a; b; d; e; c; f; g)
A binris fa bejrsi stratgii:
- Gykrkezd (preorder): gykr, bal rszfa, jobb rszfa.
- (A gykrtl kezdve a kirs sorrendje: a; b; d; e; c; f; g)
- Gykrkzep (inorder): bal rszfa, gykr, jobb rszfa.
- (A gykrtl kezdve a kirs sorrendje: d; b; e; a; f; c; g)
- Gykrvgz (postorder): bal rszfa, jobb rszfa, gykr.
- (A gykrtl kezdve a kirs sorrendje: d; e; b; f; g; c; a)
Eljrs LPTET
Ha (nem VGE) akkor
SZL:=AKTULIS; /a mostani aktulis legyen a szl;
Ha( (*AKTULIS).bal <> NIL) akkor /ha van balra elem,
AKTULIS:=(*AKTULIS).bal; /legyen az aktulis;
Klnben
AKTULIS:=(*AKTULIS).jobb; /ha nincs, a jobb lesz az;
Elgazs vge
Klnben
semmi;
Elgazs vge
Eljrs vge
Barhcs OktatKzpont Programozsi alapismeretek modul 13. fejezet
77.
Eljrs TRL
TRLEND:mutat /segdvltoz deklarcija;
GYKR;
Ciklus amg (nem VGE) /lptetnk, a vgig;
LPTET;
Ciklus vge
TRLEND:=AKTULIS; /a trlend vltozba betesszk az aktulisat;
AKTULIS:=SZL; /visszalpnk egy szintet;
Ha (TRLEND=(*AKTULIS).bal) akkor /megvizsgljuk, hogy a trlend a szl melyik
(*AKTULIS).bal:=NIL; /mutatjhoz kapcsoldik, majd azt a mutatt
Klnben /trljk;
(*AKTULIS).jobb:=NIL;
Elgazs vge
MEMSZAB(TRLEND) /felszabadtjuk az elem ltal lefoglalt memrit;
Eljrs vge
Levl trlsnl nem kell foglalkozni a rendezettsg megtartsval, mindegy hogy
melyik levelet trljk. gy nem is rdekel minket, hogy milyen rtk volt a trlt
elemben. Ha a fenti eljrst ciklikusan meghvjuk (amg ELEJE <> NIL), le tudjuk
trlni a teljes ft.
Eljrs BESZR(adat:String) /a fa vgre trtn elemfelvitel;
PJ:mutat
PJ:=MEMFOG(elemmret) /a listbl ismert memriafoglals;
Ha (PJ <> NIL) akkor /ha sikerlt lefoglalni;
Ha (ELEJE=NIL) akkor /ha res a fa,
ELEJE:=PJ; /az els elem lesz az j ( a gykr);
GYKR; /majd aktuliss tesszk;
Klnben /ha a fa nem res;
GYKR; /az elejre lpnk;
Ciklus amg (AKTULIS <> NIL) /amg az aktulis nem rtktelen;
SZL:=AKTULIS; /lptets:
HA (adat < (*AKTULIS).adat) /ha az adat kisebb mint az akt.adat,
AKTULIS:=(*AKTULIS).bal; /akkor balra lpnk,
Klnben
AKTULIS:=(*AKTULIS).jobb; /klnben jobbra;
Elgazs vge
Ciklus vge /ha vge a ciklusnak, lertnk a fa aljra;
Ha (adat < (*SZL).adat) akkor /AKTULIS=NIL, szlt vizsgljuk;
(*SZL).bal:=PJ; /ha az adat kisebb mint a szl adata,
Klnben /balrl csatlakozik;
(*SZL).jobb:=PJ; /ha nem, jobbrl;
Elgazs vge
Elgazs vge
AKTULIS:=PJ; /az aktulis legyen az j elem;
(*AKTULIS).adat:=adat; /s rakjuk bele az adatot;
(*AKTULIS).jobb:=NIL; /rtktelenn tesszk az jdonslt levl mutatit
(*AKTULIS).bal:=NIL;
Klnben
Ki(Nem sikerlt a memriafoglals); /nem sikerlt a memriafoglals (pl. nincs
Elgazs vge /elg memria);
Eljrs vge
Beszrsnl mindig a fa vgre szrunk be (levlknt), j elemet. Lthat, hogy
beszrsnl azt a szablyt kvetjk, hogy a baloldalon lv elem mindig kisebb, mint
a szl, mg jobboldali nagyobb vagy egyenl mint a szl. gy egy n szint fa
elemeinek a szma maximum 2
n+1
-1, s egy elemet n lpsben biztos megtallunk.
Barhcs OktatKzpont Programozsi alapismeretek modul 13. fejezet
78.
Fggvny KERES(adat:string):L /elem keresse a binris fban
van: logikai /logikai segdvltoz;
van:=hamis; /logikai vltoz belltsa (inicializls);
GYKR; /a fa elejre lpnk;
Ciklus amg ((van = hamis) S (AKTULIS <> NIL)) /keresnk amg meg nem talljuk s
Ha (adat = (*AKTULIS).adat) akkor /nem rnk a vgre, ha megtalltuk
van:=igaz; /akkor igazra lltjuk a segdvltozt;
Klnben /klnben lptetnk;
SZL:=AKTULIS;
Ha (adat < (*AKTULIS).adat) akkor /az adat rtktl fggen;
AKTULIS:=(*AKTULIS).bal; /balra
Klnben
AKTULIS:=(*AKTULIS).jobb; /vagy jobbra;
Elgazs vge
Elgazs vge
Ciklus vge
KERES:=van; /KERES fggvny adja vissza a
Fggvny vge /segdvltoz rtkt;
Ha a fa rendezett a keress hatkony, hiszen ugyanazzal a mdszerrel keresnk,
mint ahogy feltltttk az adatszerkezetet.
Eljrs BESZRAH(adat:string, keresett:string) /adott helyre trtn beszrs;
PJ:mutat /beszrand elem mutatja;
SEGD:mutat /segdvltoz;
PJ:=MEMFOG(elemmret); /memriafoglals;
Ha (PJ <> NIL) akkor /ha sikeres
Ha (KERES(keresett) = hamis) akkor /elkezdjk a keresst, ami ha hamis
Ki(Nincs ilyen elem); /rtket ad vissza, akkor nincs ilyen elem;
Klnben /klnben az aktulis a keresett elem;
Ha (adat < (*AKTULIS).adat) akkor /az aktulis utn szrunk be megtartva a
SEGD:=(*AKTULIS).bal; /rendezettsget, elmentjk azt a mutatt
(*AKTULIS).bal:=PJ; /amit elfoglalunk, majd felkapcsoljuk
Klnben /az j elemet;
SEGD:=(*AKTULIS).jobb;
(*AKTULIS).jobb:=PJ;
Elgazs vge
SZL:=AKTULIS;
AKTULIS:=PJ; /az aktulis legyen az j elem
(*AKTULIS).adat:=adat; /rakjuk bele az adatot;
Ha ((*SEGD).adat < (*AKTULIS).adat) /kapcsoljuk fel a segdbe lementett
(*AKTULIS).bal:=SEGD; /elemet, rtke szerint az j elemre;
Klnben
(*AKTULIS).jobb:=SEGD;
Elgazs vge
Elgazs vge
Klnben
Ki(Nem sikerlt a memriafoglals);
Elgazs vge
Eljrs vge
Barhcs OktatKzpont Programozsi alapismeretek modul 13. fejezet
79.
Az adott helyre val beszrsra illik az "erltetett beszrs" jelz, mivel eltr az eddig
alkalmazott beszrsi smtl. Valjban az adott helyre trtn beszrst a binris
fnl nem alkalmazzk, mivel nem hatkony, hiszen annak eldntse, hogy egy
adatot az kivlasztott helyre be lehet-e szrni anlkl, hogy megsrtennk a
rendezettsget, csak az adott fa ismeretben lehetsges. Emiatt elszr be kellene
olvasni a teljes ft, s csak ezutn lehetne eldnteni azt, hogy rdemes-e (nveli-e a
hatkonysgot) egy adott (s melyik) helyre beszrni az j elemet, vagy jobban
jrunk, ha levlknt fzzk hozz az adatszerkezethez. Jelen jegyzetben azrt kapott
helyet az algoritmus, hogy ssze lehessen hasonltani a lista hasonl eljrsval.
Eljrs TRLAH(adat:string) /adott helyrl trtn trls;
HELY:mutat /segdvltozk deklarlsa;
MAX:mutat
Ha(KERES(adat) = hamis) akkor /ha nincs ilyen elem
Ki(Nincs ilyen elem); /ezt kzljk;
Klnben /klnben a keresett az aktulis;
Ha ((*AKTULIS).bal = NIL) akkor /ha nincs balra elem,
HELY:=(*AKTULIS).jobb; /a trls utn a jobboldali lp elre;
Klnben
HELY:=(*AKTULIS).bal; /klnben a bal;
MAX:=HELY;
Ciklus amg ((*MAX).jobb <> NIL) /ilyenkor lemegynk a baloldali g aljra;
MAX:=(*MAX).jobb;
Ciklus vge
(*MAX).jobb:=(*AKTULIS).jobb; /erre kapcsoljuk fel a jobboldali gat;
Elgazs vge
Ha (AKTULIS = ELEJE) akkor /ha a keresett elem a gykr,
ELEJE:=HELY; /a hely vltozba elmentett legyen az;
Klnben Ha ((*SZL).bal = AKTULIS) akkor
(*SZL).bal=HELY; /klnben elfoglalja az aktulis helyt
Klnben /a szlnl;
(*SZL).jobb:=HELY;
Elgazs vge
Elgazs vge
MEMSZAB(AKTULIS); /felszabadtjuk a memriaterletet;
AKTULIS:=HELY; /aktuliss tesszk az elrelpt;
Elgazs vge
Eljrs vge
Az elemek adott helyrl val trlse igen gyakori problma a binris fnl. Mg az
nem okoz gondot, hogy egy j elemet levlknt az adatszerkezet vghez fznk,
hisz a rendezettsg megmarad s az j elem is bekerl a fba, addig nem mindig
leveleket akarunk trlni. Trlsnl ha a trlend elemnek van baloldali ga, akkor a
baloldali g lp a trlend helyre, egybknt a jobboldali. Ha a baloldali g lp
eggyel feljebb, akkor ez az g rkli a jobboldali gat, vagyis a legnagyobb elemhez
- a jobboldali legals levlhez - fog kapcsoldni az egsz jobboldali g.
Barhcs OktatKzpont Programozsi alapismeretek modul 14. fejezet
80.
Algoritmustervezsi elvek
Az algoritmustervezsi elvek, olyan mdszerek, melyek bonyolultabb feladatok,
problmk megoldshoz, algoritmizlshoz nyjtanak segtsget. Hasznlatukkal
kivlaszthatjuk az adott problma megoldsnak legoptimlisabb (legjobb
munka/teljestmny arny) megoldsi mdozatt.
Elemenknti feldolgozs
Elemenknti feldolgozsrl beszlnk, ha egy vagy tbb halmazbl kell egy vagy
tbb halmazt ellltani. Mindegyik esetben az ellltand halmazok elemeit olyan
szempontbl kell kivlogatnunk (ellltanunk), melynl a kiindulsi halmaz(ok) egy
elem elegend annak eldntsre, hogy az elem bekerl-e az eredmnyhalmazba,
vagy sem. Ez fggetlen a halmaz(ok) tbbi elemtl. Az ilyen feladatokat elemenknt
feldolgozhat feladatoknak nevezzk.
Ezeket tbb csoportba sorolhatjuk:
- Egy halmazbl egy halmazt lltunk el
- Egy halmazbl kt vagy tbb halmazt lltunk el
- Kt vagy tbb halmazbl egy halmazt lltunk el
- Kt vagy tbb halmazbl kt vagy tbb halmazt lltunk el
Egy halmazbl egy halmaz ellltsa
Sorravesszk x halmaz elemeit, s a meghatrozott tulajdonsgakat hozzvesszk
y halmazhoz s elhagyjuk x halmazbl. gy x mindig csak azokat az elemek fogja
tartalmazni amiket mg nem dolgoztunk fel. A megold algoritmus ciklus lesz.
Kezdetben amikor mg egy elemet sem dolgoztunk fel y res. A feldolgozs vgre x
res, y pedig tartalmazza a meghatrozott tulajdonsg elemeit x-nek.
Plda: Egy osztlynvsorbl vlogassuk ki a lnytanulkat!
Egy halmazbl tbb halmaz ellltsa
Az x halmazbl kivlasztott elemet mindkt felttel szerint fel kell dolgozni, s a
megfelel (y vagy z) halmazba kell elhelyezni. A feldolgozs vgre x res, a
rszhalmazok pedig tartalmazzk a felttelknek megfelel elemeket.
Plda: Egy osztlynvsorbl vlogassuk kln a lnyokat s a fikat!
Kt vagy tbb halmazbl egy halmaz ellltsa
A kt halmaz unijnak (xy) elemeit kell sorravenni (ha egy elem mindkt
halmazban szerepel, csak egyszer kell vizsglni), s a felttelnek megfelelen
elhelyezni z halmazban. A feldolgozs vgre xy res z pedig tartalmazza a
felttelnek megfelel elemeket.
Plda: Egy iskola osztlyainak nvsoraibl vlogassuk ki a lnyokat!
Kt vagy tbb halmazbl kt vagy tbb halmaz ellltsa
A kt halmaz unijnak (xy) elemeit mindkt felttel szerint fel kell dolgozni, s a
megfelel (z vagy v) halmazba kell elhelyezni. A feldolgozs vgre(xy) res, a
rszhalmazok pedig tartalmazzk a felttelknek megfelel elemeket.
Plda: Egy iskola osztlyainak nvsoraibl vlogassuk kln a lnyokat s a fikat!
Barhcs OktatKzpont Programozsi alapismeretek modul 14. fejezet
81.
Moh algoritmusok
A moh algoritmusok egy adott lpsnl mindig az optimlisnak tn megoldst
vlasztjk, abban a remnyben, hogy ez az optimlis megoldshoz fog vezetni.
Abban az esetben hasznlhat, ha a loklis optimum vlasztsa a globlis
optimumhoz fog vezetni. Nem mindig ad optimlis megoldst, de sok problma
megoldhat vele.
Esemny-kivlaszts
Adott esemnyek egy S halmaza, amik egy kzs erforrst (pl.: pletet, autt, stb.)
kvnnak hasznlni. Minden esemnyhez adott egy kezd s egy befejez idpont
(kezds<=befejezs). Kt, i s j esemny kompatibilis, ha az i esemny vge<=a j
esemny kezdidpontjnl, vagy a j esemny vge<=az i esemny
kezdidpontjnl. Az esemny-kivlasztsi problma azt jelenti, hogy kivlasztand
a klcsnsen kompatibilis esemnyeknek egy legnagyobb elemszm halmaza.
Megolds
1. Az esemnyeket a befejez idpont szerint sorba rendezzk
2. Kivlasztjuk a legels (legelsnek befejezd) esemnyt.
3. Mindig a leghamarabb befejezd esemnyt vlasztjuk gy, hogy az eddig
vlasztottakkal kompatibilis legyen.
Pnzvlts
Adott egy sszeg, s adottak klnbz nagysg cmletek. Vltsuk fel az sszeget
a lehet legkevesebb cmlet felhasznlsval.
Megolds
A moh algoritmus ebben az esetben nem minden bemen rtkre ad helyes
megoldst. Ha a mindennapi letben hasznlt cmleteket hasznljuk (pl.: 1,2,5,10,20
Ft), akkor j mkdik, de knnyen hozhatunk ellenpldt is (pl: 10Ft-ot vltsunk fel,
ha 6,5,2 Ft-os cmleteink vannak. A moh megolds 6+2+2 mdon vltja fel, holott
5+5 felvlts is lehetsges, amihez csak 2 rme szksges.) Megfigyelhet, hogy
optimlis megoldst kapunk, ha a cmletek nvekv sorrendben vannak.
Barhcs OktatKzpont Programozsi alapismeretek modul 14. fejezet
82.
Elgazs s korltozs
A mdszer angol neve branch-and-bound. Olyan esetekben szoktk alkalmazni,
amikor a megoldand feladat termszetes mdon vezet egy risi gykeres irnytott
fa teljes, vagy rszleges bejrshoz. A ft gyakran nevezik a feladat fzisternek. A
fa ltalban olyan hatalmas, hogy nem rdemes (olykor nem is lehetne) minden
cscst trolni. Vannak viszont szablyok, amivel egy cscs leszrmazottjait el
tudjuk lltani. Ezt szoksos kifejezssel generlsnak nevezzk.
A feladat ltalban azt kveteli, hogy a fa igen sok cscsrl rendelkezznk
informcival. Az elgazs s korltozs mdszere ezt az informcigyjtst
igyekszik gazdasgosan megszervezni. Ilyen feladat pldul egy sakklls
rtkelse. A cl annak a meghatrozsa, hogy melyik fl - vilgos vagy stt- ll
jobban, s mi(k) a helyes lps(ek). Kpzeljnk el ehhez egy ft, aminek a cscsai a
sakkllsok, megjellve azzal, hogy melyik flen van a lps joga. Egy cscsbl
(llsbl) s vezet a belle egyetlen lpssel megkaphat llsokba. Az lls
rtknek megllaptshoz az alatta lv rszfa cscsait kellene rtkelni. Ez
azonban tl nagy, idignyes vllalkozs lenne. Az elgazs azt jelenti, hogy
generljuk az ppen vizsglt cscs fiait, bizonyos esetekben korltos mlysgig a
tovbbi leszrmazottait is. A generlt cscsok vizsglata alapjn dntjk el, hogy
merre menjnk tovbb lefel a fban.
Ebben fontos szerepet jtszanak a korltoz heurisztikk. Ezek a feladat
tulajdonsgaibl ered megfontolsok, amelyekkel igyeksznk minl tbb cscsot s
egyszerre azok leszrmazottait is kizrni a tovbbi keressbl. A sakk esetn az
elgazs azt jelenti, hogy generljuk a nhny lpsben elrhet llsokat, s
azokat valahogy rtkeljk. Korltoz heurisztika lehet, hogy nem nzzk azokat az
gakat, ahol vezrt vesztnk. Termszetesen a komoly sakkprogramok tbbfle, a
fentinl sokkal finomabb s bonyolultabb korltoz heurisztikt hasznlnak. A
korltoz heurisztikk alkalmazsval gakat tudunk levgni a frl, s csak az
eslyes, tll irnyokkal foglalkozunk tovbb.
Dinamikus programozs
A dinamikus programozs ppgy, mint az oszd meg s uralkodj mdszer, a
feladatot rszfeladatokra val osztssal oldja meg. A feladatot felosztja
rszfeladatokra, s a rszfeladat eredmnyt egy tblzatban trolja el, s ezltal
elkerli az ismtelt szmtst, ha a rszfeladat megint felmerl. A dinamikus
programozst optimalizlsi feladatok megoldsra hasznljuk.
A dinamikus programozs lpsei
1. rszproblmkra bonts
2. a rszproblmk kztti sszefggsek meghatrozsa (rekurzv kplettel)
3. a rszproblmk optimlis rtknek kiszmtsa alulrl felfel haladva (tblzat
kitltse)
4. az optimlis megolds megalkotsa
Barhcs OktatKzpont Programozsi alapismeretek modul 14. fejezet
83.
Kzelt algoritmusok
Elfordul, hogy egy nehz algoritmikus problmval kerlnk szembe, de elegend
cljainkhoz az optimum elg j kzeltse is. Bizonyos esetekben igen egyszer s
hatkony mdszerekkel kaphatunk az optimlishoz kzeli eredmnyt. rdemes lehet
kzelt mdszert hasznlni akkor is, ha a problmra van ugyan gyors mdszer, de
egy a cloknak megfelel kzeltst mg gyorsabban ki lehet szmtani.
Ldapakols
Inputknt adottak racionlis slyok, melyek rtke >=0 s <=1. A cl a slyok
elhelyezse minl kevesebb a slykapacits ldba.
Megolds
1. megolds:
FF-mdszer (first fit). Vegynk elszr res ldkat, s szmozzuk meg ket 1,2,...,k
egszekkel. Tegyk fel, hogy 1-tl i-1-ig a slyokat mr elhelyeztk. Ekkor az i. sly
kerljn az els olyan ldba, amibe mg belefr. Az FF igen gyors s egyszer
mdszer, amely elri az optimum 10/17-t.
2.megolds:
Az FFD (first fit decreasing) mdszer egy kicsit tovbbfejlesztett vltozat. Elszr
rendezzk a slyokat cskken sorrendbe, majd alkalmazzuk a FF mdszert. Ezzel a
mdszerrel elrjk az optimum 9/11-t.
Lteznek ezeknl valamivel jobb eredmnyt ad mdszerek is, ezek azonban
egyszersmind jval bonyolultabbak is.
Vletlent hasznl algoritmusok
Az ilyen algoritmusok furcsa sajtossga, hogy a bemenet s az algoritmus maga
nem hatrozzk meg egyrtelmen a tnyleges lpseket, a szmtsi idt, olykor a
vgeredmnyt sem. Mindezekrt a bizonytalansgokrt azonban krptol a vletlent
hasznl mdszerek hatkonysga. Egy pldval mr tallkoztunk a gyorsrendezs
kapcsn, ahol a gyorsrendezs ideje nagymrtkben fgg attl, hogy a particionl
elemek mennyire vgjk egyforma darabokra a tmbt. Gyakorlati szempontbl a
gyorsrendezs randomizlt vltozata a legjobb az ismert rendez mdszerek kzl.
A randomizlt mdszerekkel kapcsolatban kt rvet szoks felhozni. Az egyik a
bizonytalansg, a hiba lehetsge, amely mintegy bele van tervezve ezekbe a
mdszerekbe. A msik rv jval slyosabb. A randomizlt mdszerek elemzsnl
feltesszk, hogy valamifle "igazn vletlen" bitek kell hossz sorozatval
rendelkeznk, mgpedig ltalban nulla kltsggel. Valjban nem vilgos, hogy mit
tekinthetnk vletlen sorozatnak, s a mg kevsb, hogy nyerhetnk-e ilyet
egyltaln valamilyen termszeti folyamatbl. Ezek azonban filozfiba nyl
krdsek, amelyek izgalmasak ugyan, de kevs algoritmikus tanulsggal szolglnak
Barhcs OktatKzpont Programozsi alapismeretek modul 14. fejezet
84.
Vegyes Feladatok
1. rjunk algoritmust, ami megadja kt szm legnagyobb kzs osztjt!
2. rjunk algoritmust, ami megadja kt szm legkisebb kzs tbbszrst!
3. Ksztsnk algoritmust, ami megadja kt ngyjegy szm maszkjnak rtkt
(azt, hogy a kt szm hny helyi rtken egyezik meg)!
4. rjunk programot, ami venknti bontsban kiszmtja s kirja a bett kamatos
kamattal megnvelt sszegt. A bett , a kamat s az vek szma bemen adat!
5. rjunk algoritmust, ami feltlti a szorztblt!
6. llaptsuk meg, hogy egy n*n-es mtrix szimmetrikus-e? A szimmetria felttele
minden mtrixelemre: Tmb[i,j] = Tmb[j,i].
7. rjunk algoritmust, ami kiszmolja megadott rtkekre a permutci s a varici
rtkt! A feladatot alprogramokkal oldjuk meg!
8. Rendezzk egy m*n-es pozitv egsz szmokat tartalmaz mtrix elemeit
nvekv sorrendbe!
9. Adott A[1..m] tmb s B[1..n] tmb, melyek nem tartalmaznak ismtld
elemeket, gy halmazknt is felfoghatak. Adjuk meg azt az adatszerkezetet s
az adatszerkezethez tartoz algoritmust, amelyik a kt tmbnek mint halmaznak
a Descartes-szorzatt trolja!
10. Adott egy szveg. rjunk algoritmust, ami kirja azokat a szavakat, melyek egynl
tbbszr fordulnak el!
A feladatokhoz ksztse el az llapotteret s az algoritmust!
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
85.
Megoldsok
1. fejezet
I.
1. b.
2. b.
3. a.
4. b.
5. b.
6. b.
7. a.
II.
1. igaz
2. igaz
3. hamis
4. hamis
5. igaz
6. hamis
7. igaz
III.
1. Az alacsonyszint nyelvekben (assembly) a gpi utastskdokat az angol nyelvi
megfelelik rvidtsvel - mnemonikokkal - jelzik.
2. 1960-ban az IBM eurpai kzpontjban ltrehozzk az Algol60-t. Ez az els
matematikai rtelemben definilt nyelv. Hivatkozsi nyelve is van, rendezett
fogalomrendszerrel rendelkezik. Az IBM nem tmogatja, ennek ellenre nagy
jelentsg, konstrukcija ma is hat. Ekkortl kezdve az Algol60 az algoritmus-
ler szabvny, a ksbbi nyelvek belle indulnak ki, vagy tagadjk. Az Algol60
tagadsra pl nyelvek: pl. LISP (a mestersges intelligencia tmogatsra
fejlesztettk ki), APL (eszkzrendszere mg ma is egyedlll).
3. Simula67.
4. - Els generci:
- manulis programozstechnika
- gpi kd, alacsonyszint nyelvek hasznlata
- Msodik generci:
- magas szint nyelvek hasznlata
- strukturlt programozstechnika megjelense
- Harmadik generci:
- objektumorientlt megkzelts kialakulsa
- objektumorientlt nyelvek hasznlata, kiegsztsek, "rpl" nyelvek
kifejldse
- Negyedik generci (4GL):
- vizulis kezelfellet nyelvek megjelense
- esemnyvezreltsg kialakulsa
- az objektumorientltsg alapvet kvetelmny
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
86.
5. Procedurlis nyelv, amelyben a programoz adja meg az utastsok
vgrehajtsnak sorrendjt s mikntjt. Brmely adatszerkezeten brmely nyelvi
utasts vgrehajthat a szintaktikai szablyoknak megfelelen.
Objektumorientlt nyelv, amelyben az adatokat s a rajtuk vgrehajthat
utastsokat egy egysgknt kezeljk. A programoz korltozva van abban, hogy
milyen utastsokat hajthat vgre az adatokon. Esemnyvezrelt nyelv, amely
mr nem lineris szerkezet, az utasts vgrehajtsa az objektumhoz tartoz
esemnyhez ktdik (az utasts vgrehajts sorn a programoz korltozva van
abban, hogy hogyan hajtathatja vgre azt).
6. Az imperatv (utastsszerkezet) nyelvek alapeszkzei az utastsok s a
vltozk. A program szvege utastssorozat, minden utasts mgtt gpi kd
ll. Minden program utastssorozat, amely mgtt tbb gpi utasts ll.
Ktdnek a Neumann-architektrhoz, ltalban fordtprogramosak.
Algoritmikus nyelvek, a programban azt az algoritmust rom le, amelyet a gp
vgrehajt, s a problma megoldsa gy szletik meg. A program a hatst a tr
egyes terletein lv rtkeken fejti ki.
A deklaratv (lersjelleg) nyelveknl nincs utastsfogalom, a Neumann-
architektrtl tvol ll. Nem algoritmikusak, a programban csak a problmt
fogalmazom meg, a megoldst nem, az algoritmus a rendszerbe van beptve. A
trhoz a programoznak kevs kze van, nem feladata a tr egyes rszeinek
mdostsa.
7. Adat: A szmtgpben jelsorozat formjban trolt, kdolt informci. A
bennnket krlvev vilg objektumainak (trgyak, dolgok) mrhet s nem
mrhet jellemzi. Adat egy trgy kilogrammban kifejezett rtke, egy ember
neve, a ruha szne. Mindegyik egy tulajdonsgot jellemez, de tartalmukat tekintve
klnbzek. Az adatok jellemzsnek egyik mdja, hogy megadjuk milyen
rtkeket vehetnek fel az adott szituciban, s ezekkel milyen mveleteket lehet
elvgezni. Egy adat lehetsges rtkeinek halmazt tpusrtk-halmaznak
nevezzk. Egy adat tpust hrom dolog hatrozza meg. Egyrszt azok az
rtkek, amelyeket az adat felvehet, a tpusrtk-halmaz. Msodszor az a
szerkezet, ahogyan egy ilyen rtk egyszerbb tpusok rtkeibl felpl.
Harmadszor azoknak a mveteknek az sszessge, amit az adott halmazon el
lehet vgezni.
8. Magas szint nyelv: a programoz szmra knnyebben megfogalmazhat,
emberkzelibb, bvebb utastskszlettel rendelkez programnyelv. Hordozhat,
viszonylag gpfggetlen programok. Sok utastssal rendelkeznek, sszetettebb
feladatok megvalstsra is kpesek.(Pl. Pascal, C, Basic, Delphi, Clipper,
LOGO).
9. Az algoritmus egy feladat megoldsra szolgl egyrtelmen elrt mdon s
sorrendben vgrehajtand vges tevkenysgsorozat, mely vges id alatt
befejezdik. A tevkenysg matematikai mvelettl kezdve tetszleges szmtsi,
gyrtsi vagy technolgiai mvelet lehet.
10. A. Forrsprogram megrsa, szerkesztse egy szvegszerkesztvel
B. Forrsprogram lefordtsa a fordtprogram segtsgvel eredmnye a trgykd
C. Gpi kd futtathat llomny ltrehozsa a kapcsolatszerkeszt segtsgvel
D. Program futtatsa a betlt segtsgvel, hibakeress
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
87.
2. fejezet
I.
1. a.
2. b.
3. c.
4. a.
5. c.
II.
1. igaz
2. igaz
3. hamis
4. igaz
5. hamis
III.
1. A megtervezett program megvalstsa valamilyen programozsi nyelv
felhasznlsval. A programnyelv kivlasztsakor figyelembe kell venni a
programozsi feladat jellegt, a mr rendelkezsre ll programrszleteket, s a
programot futtat rendszer jellemzit. Ha a kdols sorn elakadunk, akkor a
vltoztatsokat, j megoldsi utakat az algoritmustervbe is fel kell vennnk. Ha
nagyobb problmval kerlnk szembe, akkor akr a specifikcit is meg kell
vltoztatnunk, s jra kell terveznnk algoritmusaink egy rszt. A kdols
folyamata alatt jabb tesztadatokat gyjthetnk ssze. A ksbbi knnyebb
mdosts s tovbbfejleszts rdekben clszer megjegyzseket is tenni a
kdba.
2. A dokumentcik kzl taln a legfontosabb. Rszletesen tartalmaznia kell a
program teleptst, indtst, hasznlatt. Ki kell terjednie a program ltal
elvgezhet sszes funkcira. Rendszerint kpernymintkkal, pldkkal
illusztrlt. Tartalmazza az esetleges hibazeneteket s a kapcsold hibk
elkerlsnek, kijavtsnak lehetsgeit. A dokumentcinak olyan rszletesnek
kell lennie, hogy a legkevesebb hozzrtssel is hasznlni lehessen, hiszen ez
nem szakembereknek kszl elssorban. ltalban kinyomtatott formban
megvsrolhat, ill. mai kvetelmnyeknek megfelelen HTML vagy PDF
formtumban olvashatak.
3. Egyfelhasznls krnyezetben ltalban a felhasznli kziknyv tartalmazza az
zemeltetsi, opertori teendket, mivel ott az nem vlik szt. Tbbfelhasznls
krnyezetben azonban az opertori teendket ler dokumentcinak
tartalmaznia kell a program teleptsnek menett, szksges konfigurcijt,
belltsokat. Lerja a program indtst, paramterezst. Elrja a szksges
mentsek idejt, mdjt menett. Az elfordul hibazenetek rszletes lerst,
valamint a hibk megszntetsnek mdjt.
4. Ha egy program gy kerl eladsra, hogy annak fejlesztsi jogt is
megvsroljk, akkor annak elengedhetetlenl tartalmaznia kell egy olyan
dokumentcit, melynek birtokban egy msik programoz szksg esetn
elvgezheti a mdostsokat, hibajavtsokat.
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
88.
5. Egyszerre csak kevs dologrl, de azokrl kvetkezetesen dntnk. A felbonts
utn keletkez rszek lehetleg egyenl slyak legyenek! Azokat a dntseket,
amelyek az adott szinten nagyon bonyolultnak ltszanak, prbljuk ksbbre
halasztani, elkpzelhet, hogy ksbb egyszeren megoldhatk lesznek.
6. ltalnosan fogalmazzuk meg a feladatot, ltalnos algoritmust s programot
ksztsnk, gy az szlesebb krben, hossz ideig alkalmazhat lesz. A konkrt
feladat megfogalmazst kell ltalnostani, az adatait pedig paramterknt
kezelni.
7. A modulok fajti
- adatmodulok
- eljrsmodulok
- vezrlmodulok
- I/O modulok
8. Az objektumorientlt megkzelts az objektumok mint programegysgek
bevezetsvel megsznteti a program kdjnak s adatainak sztvlasztst.
Objektumok hasznlatval egyszer szerkezet, jl kzben tarthat programok
kszthetk. Az objektumorientlt programozs kzppontjban az egymssal
kapcsolatban ll programegysgek hierarchijnak megtervezse ll.
9. Az objektumorientltsg hrom f ismrve
Egysgbezrs (encapsulation)
Azt takarja, hogy az adatstruktrkat s az adott struktrj adatokat
kezel fggvnyeket (metdusokat) egy egysgknt kezelve, az
alapelemeket elzrjuk a vilg ell. Az gy kapott egysgek az
objektumok.
rklds (inheritance)
Azt jelenti, hogy az adott meglv osztlyokbl levezetett jabb
osztlyok rklik a definilsukhoz hasznlt alaposztlyok mr ltez
adatstruktrit s metdusait.
Tbbrtsg (polimorfizmus)
Azt rtjk ezalatt, hogy egy rklt metdus az adott
objektumpldnyban felldefinildik.
10. Sorozat adattpusok
Halmaz
A halmaz olyan adatszerkezet, melyben egyforma tpus, de klnbz, rendezetlen
elemek tallhatk. A halmaz brmilyen fajtj, jl meghatrozott, egymstl
megklnbztethet dolgok sszessge. A halmazban lv dolgokat a halmaz
elemeinek nevezzk. Egy halmazban egy elem csak egyszer szerepel, s az
elemeknek nincs sorrendje. Az elemek szma lehet vges vagy vgtelen. Halmazt
megadhatunk gy, hogy felsoroljuk az elemeit: H1 = {Pascal, Eiffel, C++, Prolog } s
H2 = {1,2,3,4,5,6,7,8,9}.
Sorozat
Nem felttlenl rgztett az elemek szma. Legismertebb sorozat a szmsorozat
(intervallum tpus) ahol a lpskz rgztett s amely mindkt irnyban vgtelen.
Termszetesen megllapthatunk zrt intervallumokat is, ilyenkor a sorozat "kvzi-
tmbknt" viselkedik, annyi eltrssel, hogy a tmbt explicit mdn fel kell tlteni a
szmsorozat tagjai viszont adottak. A sorozat nagyon rugalmas, lteznek ms tpus
sorozatok pl. nevek sorozata.
Tmb
Tpusrtk-halmaza konstans hosszsg elemeket tartalmaz, az egyes elemekre
indexelssel lehet hivatkozni. Egy tmb megadsakor meg kell adni az egyes
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
89.
dimenzik irnyba es maximlis komponensek szmt, teht a tmb mrete
rgztett. Az egydimenzis tmbt vektornak (pl. lottszmok), a ktdimenzis
tmbt mtrixnak (rarend, sakktbla) is szoks nevezni. Hromdimenzis tmb pl.
az iskola sszes rarendje. A tmb brmely elemre hivatkozhatunk gy, hogy
megadjuk az elem sorszmt. A sorszmot a vltoz neve utn szgletes zrjelbe
kell tenni. Ezt a sorszmot indexnek, a hivatkozsi mdszert indexelsnek nevezzk.
Arra kell vigyzni, hogy az elemre val hivatkozskor az indexnek olyan rtke
legyen, mely egy ltez tmbelemre hivatkozik. Ellenkez esetben a tmbn tli
indexels meglltja a program futst. Lteznek n. asszociatv vagy "hash" tmbk,
ahol az indexet nem a sorszm, hanem egy rtk adja, ezek a tmbk kulcs-rtk
prokbl plnek fel.
String vagy text
Karaktertmb. Kt fajtja van a "norml" string azokban a nyelvekben, ahol ez az
adattpus kln definilt (Pascal), ilyenkor a hosszt kln troljuk, ill. a nullvg
string, ami karaktervektor, a vgn egy nulla rtk byte-al (C). A karakterlnc tpus
vltoznak illetve konstansnak brmelyik karakterre kln hivatkozhatunk gy, hogy
megadjuk annak sorszmt, ugyangy ahogy a norml tmbnl.
3. fejezet
1. Olyan programozsi eszkzk, amelynek ngy komponense van:
- Nv
- Egyedi azonost, a program szvegben a vltoz mindig a nevvel
jelenik meg, ez hordozza a komponenseket.
- Attribtumok
- A vltoz futs kzbeni viselkedst, az ltala felvehet rtkeket
hatrozzk meg. Az eljrs-orientlt nyelvekben a legfontosabb attribtum
a tpus, nem tpusos nyelvekben ilyen komponens nincs, de ms attribtum
lehetsges. Vltozhoz attribtum rendels deklarci segtsgvel
trtnhet.
- Cm
- A tr azon terletnek a cme, ahol az adott vltoz rtke elhelyezkedik.
- rtk
- Az adott trrszen elhelyezked bitkombinci. A tpus eldnti, hogy hny
byte-on, milyen brzolsi mddal van brzolva a vltoz, s
meghatrozza az rtkhatrokat.
2. A kifejezs a programnyelvek szintaktikai egysge, az eddigi fogalmak jelennek
meg benne. Mr ismert rtkek alapjn j rtket hatrozunk meg. Olyan
objektum, amelynek kt komponense van: rtk s tpus. Tpussal csak a tpusos
nyelvekben rendelkezik. A kifejezsek lehetnek matematikaiak vagy logikaiak.
Formlisan operandusokbl, opertorokbl s kerek zrjelekbl ll.
3. Egyg szelekci: ha igaz a megadott felttel, akkor a hozz kapcsold
tevkenysget vgre kell hajtani, egybknt azt ki kell kerlni, s a programot az
azt kvet kzs tevkenysggel kell folytatni.
Ktg szelekci: ha a kirtkelds utn a kifejezs rtke igaz, akkor a felttel
utni tevkenysg hajtdik vgre. Ha az rtke hamis akkor a klnben gban
lv utastsokat hajtja vgre. Ezutn a program a feltteles utasts utni
utastson folytatdik.
Tbbirny szelekci: feladata, hogy a program egy adott pontjn akrhny
tevkenysg kzl tudjak egyet vlasztani. A vlaszts ltalban egy kifejezs
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
90.
rtkei szerint trtnik, lnyeges a kifejezs tpusa. A kifejezs kirtkeldik, az
rtkt a konstanslisthoz hasonltja. Ha tall megfelel gat, vgrehajtja az
utasts(oka)t s kilp az elgazsbl. Ha nincs megfelel g s van klnben
g, a klnben gban lv utastst vgzi el s kilp, ha nincs klnben g, akkor
res utasts.
4. Feladata a program adott pontjn egy tevkenysg egyms utni tbbszrs
vgrehajtsa.
Tpusai:
- elrt lpsszm (nvekmnyes) ciklus (FOR)
- Elre tudjuk, hogy hnyszor akarjuk elfuttatni a ciklusmagban lv
utastsokat. A ciklusvltoz automatikusan vesz fel rtkeket,
lpskz s irny megadsa ktelez
- feltteles ciklus:
- elltesztel ciklus (WHILE)
- A feltteltl fgg, hogy belpnk-e a ciklusba vagy sem.
- htultesztel ciklus (REPEAT UNTIL)
- A ciklusmag egyszer mindenflekppen vgrehajtdik
- sszetett ciklus
- vgtelen ciklus
- A megszaktsi felttel a trzsben tallhat.
5. Folyamatbra
Az algoritmus rszlpseit klnbz geometriai szimblumokkal szemllteti. Az
egyes szerkezeti elemek kztt nyilakkal jelljk a vgrehajtsi sorrendet. Az
rtkad utasts illetve az eljrsok tglalapba, az elgazsok rombuszba vagy
lapos hatszgbe, az adatramls paralelogrammba, a vezrl utastsok krbe
kerlnek.
Struktogram
Az algoritmust egy tglalapba rjuk be. Ebbe a tglalapba tovbbi tglalapokat
illesztnk, s a vgrehajtand utastsokat ezekbe rjuk be. Az egyes szerkezeti
elemek jl elklnlnek, a szekvencia az egymsutnisggal, a szelekci az
egymsmell kerlssel, az iterci a visszatrsi t kijellsvel brzolhat. Ezek
a szerkezetek egymsba gyazhatak.
Pszeudokd
Egy megadott programnyelvhez hasonl, de szintaktikailag szabadabb algoritmus
lers. Mondatszer elemekkel bvti a nyelv utastskszlett.
Funkcionlis lers
Az adott algoritmus funkciinak s ezek hierarchijnak szveges lersa.
Jackson bra
Top-down dekompozcis diagram, ahol az algoritmus felttelei n. feltteljegyzkbe,
az ltala vgrehajtott tevkenysgek pedig tevkenysgjegyzkbe kerlnek.
Mondatszer lers
Az algoritmust egyms utn kvetkez mondatokkal rjuk le. Ma mr a pszeudokd
s a mondatszer lers sszemosdott, a f klnbsg mgis az, hogy a
mondatszer lersban a programszerkezetet magyarz rszek a szvegbe
kerlnek, mg a pszeudokdnl a magyarzat a hasznlatos nyelv kommentezsi
szoksai szerint van megjellve.
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
91.
4. fejezet
1. Az alprogramok egy problmaosztlyt oldanak meg. A problma akkor
konkretizlhat, amikor az alprogramot az aktulis paramterek megadsval
meghvom. A fejben tallhat, ltalban kerek zrjelek kztt. A nyelvek egy
rsze azt mondja, hogy nem kell a zrjel, ha az alprogramnak nincs formlis
paramtere (pl. Pascalban), ms rsze szerint pedig a zrjel nem a
paramterekhez, hanem az alprogramhoz tartozik, teht paramterek nlkl is ki
kell tenni (pl. C). Nyelvfgg, hogy a paramterek mivel vannak elvlasztva. A
paramterlistn szerepl nevek a trzsben klnfle objektumok lehetnek:
vltozk, nevestett konstansok, llomnynevek, ms alprogramok nevei. Szmuk
brmennyi lehet, a nulla paramterrel rendelkez alprogramot paramter nlkli
alprogramnak hvjuk.
2. Hatst paramtereinek, krnyezetnek vagy mindkettnek megvltoztatsval
fejti ki. Adat-transzformcit hajt vgre vagy tevkenysget vgez. Hvsa
utastsszeren trtnik, vgrehajtand utastsnak tekinthet. A program
szvegbe brhol elhelyezhet eljrshvs, ahol vgrehajtand utasts lehet.
Egyes nyelvekben kln alapszval (ltalban CALL) hvhat, ms nyelvekben
nincs r alapsz.
3. A matematikai fogalmat hozza t, feladata 1 db rtk meghatrozsa.
Nyelvfgg, hogy ez az rtk mennyire bonyolult struktrj lehet. Mg egy
komponense van, a fggvny ltal visszaadott rtk (visszatrsi rtk) tpusa.
Ezt a fggvny neve hordozza, a fejben szerepel, a specifikci rsze. Csak
kifejezsben hvhat meg, mert a fggvny neve ltal hordozott rtket fel kell
hasznlni.
4. Formlis paramter listban kell definilni azt az adatszerkezetet, amely rvn a
fggvny vagy eljrs bemeneti informcit kap. A definilt adatszerkezet fiktv, a
tnyleges adatokat csak a fggvny vagy eljrs hvsakor fogjuk elrni. A
formlis paramtereket a hv program nem nv szerint, hanem a felsorolsban
elfoglalt pozci szerint azonostja: az els aktulis paramter az els formlis
paramternek, a msodik aktulis paramter a msodik formlis paramternek, a
harmadik aktulis paramter a harmadik formlis paramternek s gy tovbb
felel meg. Aktulis paramtereknek azokat a paramtereket nevezzk, amelyeket
a fggvny vagy eljrs meghvsakor adunk meg a fggvny vagy eljrs neve
utn. Ezeken hajtdnak vgre a fggvny vagy eljrs utastsai
5. Vltoz vagy cm szerinti paramtertads: A vltozparamter rtkt a hvott
program ( eljrs, fggvny ) megvltoztathatja, ekkor a hv programban
hasznlt aktulis paramter rtke is megvltozik.
rtk szerinti paramtertads: A formlis paramter rtknek vltozsa
nem hat vissza az aktulis paramter rtkre. A ki-fejezs, utasts az eljrs
vagy fggvny aktivizlsakor rtkeldik ki, s a megfelel formlis paramter
ezt az rtket kapja meg.
6. Rekurzi: olyan programtevkenysg, ahol az eljrsok, fggvnyek nmagukat
hvjk meg. A feladatot esetekre bontjuk, s van olyan eset, amely eset
nmagval van megfogalmazva, egy msik n rtkkel. Ha ez a folyamat tbbszr
ismtldik, hvsi lncrl beszlnk. A lnc alaphelyzetben dinamikusan vltozik,
eleje mindig a fprogram. Fggetlenl attl, hogy mkdik-e, minden eleme aktv.
Aktv alprogram jra meghvst rekurzv hvsnak (rekurzinak) nevezzk.
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
92.
5. fejezet
sszegzs
1. Elfelttel: adott az intervallum 1-tl n-1-ig.
Utfelttel: a program rja ki az intervallumba es szmok sszegt.
Deklarci: s:N
i,n:Z+
Be(n);
s:=0;
Ciklus i:=1-tl n-1-ig
s:=s + i;
Ciklus vge
Ki(s);
2. Elfelttel: adott az intervallum m-tl n-ig.
Utfelttel: a program rja ki az intervallumba es szmok kbeinek sszegt.
Deklarci: s:N
i,m,n:Z
Be(m);
Be(n);
s:=0;
Ciklus i:=m-tl n-ig
s:=s + i
3
;
Ciklus vge
Ki(s);
3. Elfelttel: adott a 31 elem Hinyzs tmb.
Utfelttel: a program rja ki a hinyzott rk szmt (a Hinyzs tmb elemeinek sszegt).
Deklarci: s:N
i,n:Z+
Hinyzs[1..31]:N
s:=0;
Ciklus i:=1-tl 31-ig
s:=s + Hinyzs[i];
Ciklus vge
Ki(s);
4. Elfelttel: adott a Matek tmb.
Utfelttel: a program rja ki a tmb elemeinek tlagrtkt.
Deklarci: s:Z+
i,n:Z+
Matek[1..n]:Z+
s:=0;
Ciklus i:=1-tl n-ig
s:=s + Matek[i];
Ciklus vge
tlag:=s / n;
Ki(tlag);
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
93.
Kivlaszts
1. Elfelttel: adott N szm.
Utfelttel: a program adja meg az n-nl nem kisebb (nagyobb vagy egyenl szmok kzl a
legkisebb prmet.
Deklarci: n:Z+
i:Z+
Be(n);
i:=n;
Ciklus amg (i nem prm)
i:=i + 1;
Ciklus vge
Ki(i);
2. Elfelttel: adott N szm.
Utfelttel: a program adja meg az n-nl nem nagyobb (kisebb vagy egyenl szmok kzl a
legnagyobb prmet.
Deklarci: n:Z+
i:Z+
Be(n);
i:=n;
Ciklus amg (i nem prm)
i:=i - 1;
Ciklus vge
Ki(i);
3. Elfelttel: adott az osztlynvsor.
Utfelttel: a program dntse el, hogy Kiss Ibolya hnyadik az osztlynvsorban.
Deklarci: Nvsor[1..n]:string
i:Z+
i:=1;
Ciklus amg (Nvsor[i] <> "Kiss Ibolya")
i:=i + 1;
Ciklus vge
Ki(i);
Megszmlls
1. Elfelttel: adott az egsz szmok egy intervalluma.
Utfelttel: a program rja ki, hogy az adott intervallumban hny prmszm van.
Deklarci: m,n,i,db:N
Be(m);
Be(n);
db:=0;
Ciklus(i:=m-tl n-ig
Ha (i prm) akkor
db:=db + 1;
Elgazs vge
Ciklus vge
Ki(db);
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
94.
2. Elfelttel: adott a nvsor.
Utfelttel: a program adja ki, hogy a nvsorban hny Nagy Gbor nev tanul szerepel.
Deklarci: i,db:N
Nvsor[1..n]:string
db:=0;
Ciklus i:=1-tl n-ig
Ha (Nvsor[i] = "Nagy Gbor") akkor
db:=db + 1;
Elgazs vge
Ciklus vge
Ki(db);
6. fejezet
Eldnts
1. Elfelttel: adott a szm.
Utfelttel: a program rja ki, hogy az adott szmnak van-e valdi osztja
Deklarci: i,n:Z+
tallt:L
Be(n);
tallt:=hamis;
i:=1;
Ciklus amg ((nem tallt) S (i < n/2))
i:=i + 1;
Ha (n mod i) = 0 akkor
tallt:=igaz;
Elgazs vge
Ciklus vge
Ha (tallt) akkor
Ki("Van");
Klnben
Ki("Nincs);
Elgazs vge
2. Elfelttel: adott a nv s a nvsor.
Utfelttel: a program rja ki, hogy az adott nv szerepel-e az adott nvsorban
Deklarci: i:N
tallt:L
nv, Nvsor[1..n]: string
Be(nv);
tallt:=hamis;
i:=0;
Ciklus amg ((nem tallt) S (i < n))
i:=i + 1;
tallt:= (Nvsor[i] = nv);
Ciklus vge
Ha (tallt) akkor
Ki("Szerepel");
Klnben
Ki("Nem szerepel");
Elgazs vge
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
95.
3. Elfelttel: adott az intervallum.
Utfelttel: a program rja ki, hogy az intervallumban van-e prmszm.
Deklarci: i,n:Z+
tallt:L
Be(m);
Be(n);
tallt:=hamis;
i:=m-1;
Ciklus amg ((nem tallt) S (i < n))
i:=i + 1;
tallt:=i prm;
Ciklus vge
Ha (tallt) akkor
Ki("Van");
Klnben
Ki("Nincs);
Elgazs vge
Kivlogats
1. Elfelttel: adott a nvsor.
Utfelttel: a program vlogassa ki a "K" betvel kezdd tanulkat.
Deklarci: j:N
i:Z+
Szveg, Nvsor[1..n], K[1..n]:string
j:=0;
Ciklus i:=1-tl n-ig
Szveg:=Nvsor[i];
Ha (Szveg[1] = "K") akkor
j:=j + 1;
K[j]:=Nvsor[i];
Elgazs vge
Ciklus vge
2. Elfelttel: adott a nvsor.
Utfelttel: a program vlogassa ki a megadott magassg szemlyeket.
Deklarci: j:N
i:Z+
Rekord Szemly
nv:string
magassg:string
Rekord vge
Nvsor[1..n],Magassg[1..n]:Szemly
Be(magassg);
j:=0;
Ciklus i:=1-tl n-ig
Ha (Nvsor[i].magassg = magassg) akkor
j:=j + 1;
Magassg[j]:=Nvsor[i];
Elgazs vge
Ciklus vge
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
96.
3. Elfelttel: adott az intervallum s a szm.
Utfelttel: a program vlogassa ki a megadott szmmal oszthatak.
Deklarci: j:Z+
m,n:Z
i:Z
Oszt[1..n]:Z
Be(m);
Be(n);
Be(szam)
j:=0;
Ciklus i:=m-tl n-ig
Ha (i mod szam = 0) akkor
j:=j + 1;
Oszt[j]:=i;
Elgazs vge
Ciklus vge
Maximum-minimum kivlaszts
1. Elfelttel: adott az intervallum s a fggvny.
Utfelttel: a program hatrozza meg az intervallumnak azt az elemt, ahol a fggvny
helyettestsi rtke a legnagyobb.
Deklarci: i,ind:Z
max:Z
i:=-2;
ind:=-2;
max:=f(-2);
Ciklus amg (i < 15)
i:=i + 1;
Ha (max < f(i)) akkor
max:=f(i);
ind:=i;
Klnben
semmi;
Elgazs vge
Ciklus vge
Ki(ind);
Ki(max);
2. Elfelttel: adott az osztly tmb.
Utfelttel: a program hatrozza meg annak a gyereknek a nevt, akinek a legtbb foga van.
Deklarci: i,ind:N
Rekord Tanul
nv:string
fog:N
Rekord vge
Max,Osztly[1..n]:Tanul
i:=1;
ind:=1;
max:=Osztly[i].fog;
Ciklus amg (i < n)
i:=i + 1;
Ha (max < Osztly[i].fog) akkor
max:=Osztly[i].fog;
ind:=i;
Elgazs vge
Ciklus vge
Ki(Osztly[ind].nv);
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
97.
3. Elfelttel: adottak a brigdok s a teljestmnyek.
Utfelttel: a program adja meg annak a brigdnak a sorszmt, amelynek a teljestmnye a
legnagyobb volt.
Deklarci: i,ind:N
Max,Brigd[1..18,1..6]:N
i:=1;
ind:=1;
max:=Brigd[i,1]+ Brigd[i,2]+ Brigd[i,3]+Brigd[i,4]+Brigd[i,5]+ Brigd[i,6];
Ciklus amg (i < 18)
i:=i + 1;
Ha (max < Brigd[i,1]+ Brigd[i,2]+ Brigd[i,3]+Brigd[i,4]+Brigd[i,5]+ Brigd[i,6]) akkor
max:= Brigd[i,1]+ Brigd[i,2]+ Brigd[i,3]+Brigd[i,4]+Brigd[i,5]+ Brigd[i,6];
ind:=i;
Elgazs vge
Ciklus vge
Ki(i);
7. fejezet
Lineris keress
1. Elfelttel: adott a szmokat tartalmaz tmb.
Utfelttel: a program adja ki az els olyan szm indext(ha van) amelyik nagyobb mint 100.
Deklarci: i:Z+
tmb[1..n]:Z
tallt:L
i:=1;
Ciklus amg ((i <= n) S (tmb[i] < 100))
i:=i + 1;
Ciklus vge
Tallt:=(i <= n);
Ha (tallt) akkor
Ki(i);
Klnben
Ki("Nincs ilyen szm!");
Elgazs vge
2. Elfelttel: adott a neveket tartalmaz tmb.
Utfelttel: a program adja ki annak a tmbelemnek az indext(ha van) melynek rtke Szab
Istvn..
Deklarci: i:Z+
tmb[1..n]:string
tallt:L
i:=1;
Ciklus amg ((i <= n) S (tmb[i] <> "Szab Istvn"))
i:=i + 1;
Ciklus vge
Tallt:=(i <= n);
Ha (tallt) akkor
Ki(i);
Klnben
Ki("Nincs ilyen nv!");
Elgazs vge
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
98.
3. Elfelttel: adott a tanulk matematika osztlyzatainak tmbje.
Utfelttel: a program adja ki hogy volt e bukott tanul kzttk.
Deklarci: i:Z+
tmb[1..n]:Z
tallt:L
i:=1;
Ciklus amg ((i <= n) S (tmb[i] <> 1))
i:=i + 1;
Ciklus vge
Tallt:=(i <= n);
Ha (tallt) akkor
Ki("Van");
Klnben
Ki("Nincs");
Elgazs vge
Logaritmikus keress
1. Elfelttel: adott a tanulk matematika osztlyzatainak tmbje.
Utfelttel: a program adja ki hogy volt e bukott tanul kzttk.
Deklarci: i:Z+
tmb[1..n]:Z
tallt:L
lps:=0;
als:=1;
fels:=100;
tallt:=hamis;
ciklus amg ((nem tallt) S (als<=fels))
kzp:=(als+fels) div 2;
lps:=lps+1;
Ha (kzp = gondolt) akkor
tallt:=igaz;
Klnben Ha (kzp < gondolt) akkor
als:=kzp + 1;
Klnben
fels:=kzp - 1;
Elgazs vge
Elgazs vge
Ciklus vge
Ki(kzp);
Ki(lps);
A feladat megoldsbl hinyoznak az inputok.
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
99.
8. fejezet
Rendezsek
1. Elfelttel: adott a szmokat tartalmaz tmb.
Utfelttel: a program rendezze a tmb elemeit cskken sorrendbe.
Deklarci: i:Z+
segd;A[1..n]:N
Ciklus i :=2 - tl n - ig
Ciklus j:=n - tl i - ig
Ha (A[j-1] < A[j]) akkor
segd:=A[j-1];
A[j-1]:=A[j];
A[j]:=segd;
Elgazs vge
Ciklus vge
Ciklus vge
2. Elfelttel: adott a hmrskleteteket tartalmaz tmb.
Utfelttel: a program rendezze a tmb elemeit nvekv sorrendbe.
Deklarci: i:Z+
segd;Hmrsklet[1..n]:N
Ciklus i :=2 - tl n - ig
Ciklus j:=n - tl i - ig
Ha (Hmrsklet[j-1] > Hmrsklet[j]) akkor
segd:=Hmrsklet[j-1];
Hmrsklet[j-1]:=Hmrsklet[j];
Hmrsklet[j]:=segd;
Elgazs vge
Ciklus vge
Ciklus vge
3. Elfelttel: adott a nvsor.
Utfelttel: a program rendezze a nvsor elemeit szletsi id mez szerint nvekv sorrendbe.
Deklarci: i:Z+
j,szl:N
Rekord Szemly
Nv:string
Szl:N
Rekord vge
Nvsor[1..n],segd:Szemly
Ciklus i:=2 - tl n - ig
szl:=Nvsor[i].szl;
segd:=Nvsor[i]
j:=i - 1;
Ciklus amg ((j > 0) S (szl < Nvsor[j].szl))
Nvsor[j+1]:=Nvsor[j];
j:=j - 1;
Ciklus vge
Nvsor[j+1]:=segd;
Ciklus vge
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
100.
9. fejezet
sszefsls
1. Elfelttel: adott a kt szmokat tartalmaz tmb.
Utfelttel: a program hozza ltre a kt tmb unijz (a megegyez elemek csak egyszer
szerepeljenek az j tmbben).
Deklarci: j,k:Z+
A[1..n],B[1..m],c[1..m+n]:N
i:=0;
j:=1;
k:=1;
Ciklus amg (i < m + n)
i:=i + 1;
Ha ((k > n) VAGY ((j <= m) S (A[j] < B[k]))) akkor
C[i]:=A[j];
j:=j + 1;
Klnben Ha ((j > m) VAGY ((k <= n) S (B[k] < A[j]))) akkor
C[i]:=B[k];
k:=k + 1;
Klnben Ha (A[j] = B[k]) akkor
C[i]:=A[j];
j:=j + 1;
k:=k + 1;
Elgazs vge
Elgazs vge
Elgazs vge
Ciklus vge
2. Elfelttel: adott a kt szmokat tartalmaz tmb.
Utfelttel: a program hozza ltre a kt tmb metszett (csak a a megegyez elemek kerljenek
az j tmbbe).
Deklarci: j,k:Z+
A[1..n],B[1..m],c[1..m+n]:N
i:=0;
j:=1;
k:=1;
Ciklus amg (i < m + n)
Ha ((k > n) VAGY ((j <= m) S (A[j] < B[k]))) akkor
j:=j + 1;
Klnben Ha ((j > m) VAGY ((k <= n) S (B[k] < A[j]))) akkor
k:=k + 1;
Klnben Ha (A[j] = B[k]) akkor
C[i]:=A[j];
j:=j + 1;
k:=k + 1;
i:=i + 1;
Elgazs vge
Elgazs vge
Elgazs vge
Ciklus vge
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
101.
Vegyes feladatok
1.
sE:=0;
s:=0;
Ciklus i:=1-tl 21-ig
sE:=sE+MlnaE[i];
s:=s+Mlna[i];
Ciklus vge
Ha (sE>s) akkor
Ki('Emil');
Klnben Ha (s>sE) akkor
Ki('dn');
Klnben
Ki('Ugyanannyi');
Elgazs vge
Elgazs vge
2.
s:=0;
Ciklus i:=1-tl 21-ig
s:=s+MlnaE[i];
Ciklus vge
tlag:=s/21;
Ki(tlag);
3.
i:=1;
Ciklus amg (MlnaE[i]+Mlna[i]>=20)
i:=i+1;
Ciklus vge
Ki(i);
4.
i:=1;
Ciklus amg (MlnaE[i+1]>MlnaE[i])
i:=i+1;
Ciklus vge
Ki(i);
5.
db:=0;
Ciklus i:=1-tl 21-ig
Ha (Mlna[i]>5) akkor
db:=db+1;
Elgazs vge
Ciklus vge
Ki(db);
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
102.
6.
lusta:=hamis;
i:=13;
Ciklus amg ((nem lusta) S (i <21))
i:=i+1;
Ha (MlnaE[i]=0) akkor
lusta:=igaz;
Elgazs vge
Ciklus vge
Ha (lusta) akkor
Ki('Lustlkodott!');
Klnben
Ki('Nem lustlkodott');
Elgazs vge
7.
j:=0;
Ciklus i:=1-tl 21-ig
Ha ((MlnaE[i]>10) S (Mlna[i]>10)) akkor
j:=j+1;
Jonapok[j]:=i;
Elgazs vge
Ciklus vge
8.
i:=1;
ind:=1;
max:=MlnaE[1];
Ciklus i:=2-tl 21-ig
Ha (MlnaE[i]>max) akkor
max:=MlnaE[i];
ind:=i;
Elgazs vge
Ciklus vge
Ki(ind);
Ki(max);
9.
i:=1;
ind:=1;
min:=Mlna[1];
Ciklus i:=2-tl 21-ig
Ha (Mlna[i]<min) akkor
min:=MlnaE[i];
ind:=i;
Elgazs vge
Ciklus vge
Ki(ind);
Ki(min);
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
103.
10.
Ciklus i:=1-tl 20-ig
Ciklus j:=i+1-tl 21-ig
Ha (MlnaE[j]<MlnaE[i]) akkor
segd:=MlnaE[j];
MlnaE[j]:=MlnaE[i];
MlnaE[i]:=segd;
Elgazs vge
Ciklus vge
Ciklus vge
11.
Ciklus i:=2-tl 21-ig
Ciklus j:=21-tl i-ig
Ha (Mlna[j-1]>Mlna[j]) akkor
segd:=Mlna[j-1];
Mlna[j-1]:=Mlna[j];
Mlna[j]:=segd;
Elgazs vge
Ciklus vge
Ciklus vge
12.
i:=0;
j:=1;
k:=1;
Ciklus amg (i<42)
i:=i+1;
Ha ((k > 21) VAGY ((j <= 21) S (MlnaE[j] < Mlna[k]))) akkor
Egytt[i]:=MlnaE[j];
j:=j+1;
Klnben Ha ((j > 21) VAGY ((k <= 21) S (Mlna[k] < MlnaE[j]))) akkor
Egytt[i]:=Mlna[k];
k:=k+1;
Klnben
Egytt[i]:=MlnaE[j];
j:=j+1;
i:=i+1;
Egytt[i]:=Mlna[k];
k:=k+1;
Elgazs vge
Elgazs vge
Ciklus vge
13.
Ciklus i:=1-tl n-1-ig
index:=i;
max:=Tvolsg[i];
Ciklus j:=i+1-tl n-ig
Ha (max<Tvolsg[j]) akkor
max:=Tvolsg[j];
index:=j;
Elgazs vge
Ciklus vge
Tvolsg[index]:=Tvolsg[i];
Tvolsg[i]:=max;
Ciklus vge
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
104.
14.
i:=1;
ind:=1;
max:=Hossz(Telepls[1]);
Ciklus amg (i<n)
i:=i+1;
Ha (Hossz(Telepls[i])>max) akkor
max:=Telepls[i];
ind:=i;
Elgazs vge
Ciklus vge
Ki(Telepls[ind]);
15.
j:=0;
Ciklus i:=1-tl n-ig
Ha (Tvolsg[i]<5) akkor
j:=j+1;
Sr[j]:=Telepls[i];
Elgazs vge
Ciklus vge
16.
db:=0;
Ciklus i:=1-tl n-ig
Ha (Telepls[i]='Balaton*') akkor
db:=db+1;
Elgazs vge
Ciklus vge
Ki(db);
17.
tallt:=hamis;
i:=0;
Ciklus amg (nem tallt) s (i<n)
i:=i+1;
Ha (Tvolsg[i]>=10 S Tvolsg[i]<=12) akkor
tallt:=igaz;
Elgazs vge
Ciklus vge
Ha (tallt)
Ki('Van);
Klnben
KI('Nincs);
Elgazs vge
18.
db:=0;
Ciklus i:=1-tl n-ig
Ha (Tvolsg[i]>20) akkor
db:=db+1;
Elgazs vge
Ciklus vge
Ki(db);
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
105.
19.
i:=1;
j:=1;
Ciklus amg (Telepls[i]<>'Balatonfred')
i:=i+1;
Ciklus vge
Ciklus amg (Telepls[j]<>'Balatonszemes')
j:=j+1;
Ciklus vge
Ki(j-i);
20.
s:=0;
Ciklus i:=1-tl n-ig
s:=s+Tvolsg[i];
Ciklus vge
tlag:=s/21;
Ki(tlag);
A feladatokbl hinyoznak az llapottr lersok.
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
106.
10. fejezet
Mtrix
1. Elfelttel: adott a mtrix.
Utfelttel: a program rja ki a mtrix legnagyobb s legkisebb elemt.
Deklarci: i,j:Z+
max, min, Mtrix[1..m,1..n]:Z
max:=Mtrix[1,1];
min:=Mtrix[1,1];
Ciklus i:=1-tl m-ig
Ciklus j:=1-tl n ig
Ha (max < Mtrix[i,j]) akkor
max:=Mtrix[i,j];
Klnben Ha (min > Mtrix[i,j]) akkor
min:=Mtrix[i,j];
Elgazs vge
Elgazs vge
Ciklus vge
Ciklus vge
Ki(max, min);
2. Elfelttel: adott a mtrix.
Utfelttel: a program rja ki a mtrix legnagyobb sszeg sornak indext.
Deklarci: i, j, ind, max, sorszum, Mtrix[1..m,1..n]:Z+
max:=0;
ind:=1;
Ciklus i:=1-tl m-ig
sorszum:=0;
Ciklus j:=1-tl n ig
sorszum:=sorszum+Mtrix[i,j];
Ciklus vge
Ha (max < sorszum) akkor
max:=sorszum;
ind:=i;
Ciklus vge
Ki(ind);
3. Elfelttel: adott a mtrix
Utfelttel: a program rja ki a mtrix tliban lv elemek sszegt
Deklarci: i,:Z+
j:N
Mtrix[1..n,1..n], sszeg:Z
j:=n+1;
sszeg:=0;
Ciklus i:=1-tl n ig
j:=j-1;
Ha (i=j) akkor
sszeg:=sszeg + Mtrix[i,j];
Klnben
sszeg:=sszeg + Mtrix[i,i] + Mtrix[i,j];
Elgazs vge
Ciklus vge
Ki(sszeg);
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
107.
Szveg
1. Elfelttel: adott a szveg.
Utfelttel: a program rja ki, hogy a szvegben szerepel-e a "kutya" sz.
Deklarci: i:N
van:L
szveg:string
Be(szveg)
i:=0;
van:=hamis
Ciklus amg ((i < Hossz(szveg)-4) S (van=hamis))
i:=i + 1;
Ha ((szveg[i]="k") S (szveg[i+1]="u")
S (szveg[i+2]="t") S (szveg[i+3]="y") S (szveg[i+4]="a")) akkor
van:=igaz
Elgazs vge
Ciklus vge
Ha (van) akkor
Ki("Megtallhat");
Klnben
Ki("Nem tallhat meg");
Elgazs vge
2. Elfelttel: adott a szveg.
Utfelttel: B tmb tartalmazza a szvegben elfordul karakterek relatv gyakorisgt.
Deklarci: i, j, db:N
van:L
szveg, c:String
B[1..n]:R
Be(szveg);
i:=0;
Ciklus amg (i< Hossz(szveg))
i:=i + 1;
j:=0;
c:=szveg[i];
db:=0;
Ciklus amg (j < Hossz(szveg))
j:=j + 1;
Ha (c = szveg[j]) akkor
db:=db + 1;
Elgazs vge
Ciklus vge
B[i]:=db / Hossz(szveg)
Ciklus vge
3. Elfelttel: adott a szveg.
Utfelttel: a program rja ki a szvegben elfordul szavak szmt.
Deklarci: i, j, db:N
Be(szveg);
db:=0;
Ciklus i:=1-tl Hossz(szveg)-ig
Ha (szveg[i] = " ") akkor
db:=db + 1;
Elgazs vge
Ciklus vge
db:=db+1;
Ki(db);
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
108.
14. fejezet
Vegyes feladatok
1. Elfelttel: adott a kt szm.
Utfelttel: a program rja ki a kt szm legnagyobb kzs osztjt.
Deklarci: a, b:N
Be(a);
Be(b);
Ciklus amg (a <> b)
Ha (a < b) akkor
b:=b-a;
Klnben
a:=a-b;
Elgazs vge
Ciklus vge
Ki(a);
2. Elfelttel: adott a kt szm.
Utfelttel: a program rja ki a kt szm legkisebb kzs tbbszrst.
Deklarci: a, b, lktbb, oszt:Z+
Be(a);
Be(b);
lktbb:=1;
Ciklus amg ((a <> 1) VAGY (b <> 1))
Ciklus amg (a <> 1)
oszt:=2;
Ciklus amg (a mod oszt <> 0)
oszt:=oszt+1;
Ciklus vge
Ha (b mod oszt = 0) akkor
b:=b div oszt;
Elgazs vge
lktbb:=lktbb*oszt;
a:=a div oszt;
Ciklus vge
Ciklus amg (b <> 1)
oszt:=2;
Ciklus amg (b mod oszt <> 0)
oszt:=oszt+1;
Ciklus vge;
b:= b div oszt;
lktbb:=lktbb*oszt;
Ciklus vge
Ciklus vge
Ki(lktbb);
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
109.
3. Elfelttel: adott a kt ngyjegy szm szm.
Utfelttel: a program rja ki a kt szm maszkjnak rtkt.
Deklarci: a, b:Z+
db:N
i:Q
Be(a);
Be(b);
i:=1000;
db:=0;
Ciklus amg (i >= 1)
Ha ((a div i) = (b div i)) akkor
db:=db + 1;
Elgzs vge
a:=a mod i;
b:=b mod i;
i:=i/10;
Ciklus vge
Ki(db);
4. Elfelttel: adott az vek szma, a kamatlb s a bett sszege.
Utfelttel: a program rja ki a bett kamatos kamattal nvelt sszegt venknt.
Deklarci: bett, kamat:R
i, v:Z+
Be(bett, kamat, v);
Ciklusi:=1-tl v-ig
bett:=bett*(1+kamat/100);
Ki(bett);
Ciklus vge
5. Elfelttel: ismerjk a szorztblt :).
Utfelttel: a program tltse fel a szorztblt oszlop s sorfejlccel egytt.
Deklarci: i, j:N
Tbla[1..11,1..11]:N
Ciklus i:=1-tl 11-ig
Tbla[1,i]:=i-1;
Tbla[i,1]:=i-1;
Ciklus vge
Ciklus i:=2-tl 11-ig
Ciklus j:=2-tl 11-ig
Tbla[i,j]:=(i-1)*(j-1);
Ciklus vge
Ciklus vge
6. Elfelttel: adott az n*n-es mtrix.
Utfelttel: a program dntse el, hogy a mtrix szimmetrikus-e.
Deklarci: i, j:N
Tmb[1..n,1..n]:Z
szimmetrikus:logikai
szimmetrikus:=igaz;
Ciklus i:=1-tl n-ig
Ciklus j:=1-tl n-ig
Ha (Tmb[i,j] <> Tmb[j,i]) akkor
szimmetrikus:=hamis;
Elgazs vge
Ciklus vge
Ki(szimmetrikus);
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
110.
7. Elfelttel: adottak az rtkek.
Utfelttel: a program rja ki a permutci s varici rtkt.
Deklarci: counter:N
total:Z+
a, b:R
Fggvny Factorial(Num:Z+):Z+
total = 1;
Ciklus counter:=2-tl Num-ig
total = total * counter;
Ciklus vge
Factorial = total;
Fggvny vge
Fggvny P(N:Z+, R:Z+):R
P = Factorial(N) / Factorial(N - R);
Fggvny vge
Fggvny C(N:Z+, R:Z+):R
C = Factorial(N) / (Factorial(N - R) * Factorial(R));
Fggvny vge
Eljrs Permutci(N:Z+, Z:+)
a = P(N, Z);
b = C(N, Z);
Ki(a);
Ki(b);
Eljrs vge
8. Elfelttel: adott az m*n-es mtrix.
Utfelttel: a program rendezze a mtrixot nvekv sorrendbe minimumkivlasztsos
rendezssel.
Deklarci: i, j, k, l, indi, indj:Z+
Mtrix[1..m,1..n], min:N
Ciklus i:=1-tl m-ig
Ciklus j:=1-tl n-ig
min:=Mtrix[i,j];
Ciklus k:=m-tl i-ig
Ciklus l:=n tl 1-ig
Ha ((i = k) S (j >= l)) akkor
Klnben
Ha (min > Mtrix[k,l])
min:=Mtrix[k,l];
indi:=k;
indj:=l;
Elgazs vge
Elgazs vge
Ciklus vge
Ciklus vge
Mtrix[indi,indj]:=Mtrix[i,j];
Mtrix[i,j]:=min;
Ciklus vge
Ciklus vge
Barhcs OktatKzpont Programozsi alapismeretek modul - Megoldsok
111.
9. Elfelttel: adott a kt tmb
Utfelttel: a program hozza ltre a kt tmb Descartes-fle szorzatt.
Deklarci: i, j, k:Z+
A[1..m],B[1..n]:N
Mtrix[1..m*n,1..2]:N
k:=1;
Ciklus i:=1-tl m-ig
Ciklus j:=1-tl n-ig
Mtrix[k,1]:=A[i];
Mtrix[k,2]:=B[j];
k:=k + 1;
Ciklus vge
Ciklus vge
10. Elfelttel: adott a szveg
Utfelttel: a program adja ki azokat a szavakat, melyek egynl tbbszr fordulnak el.
Deklarci: i, j, k, l , db:N
szveg, Tmb[1..n]:string
Be(szveg)
i:=0;
j:=0;
Ciklus amg (i < Hossz(szveg));
i:=i + 1;
j:=j + 1;
Ciklus amg ((szveg[i] <> " ") VAGY (i < Hossz(szveg)))
Tmb[j]:=Tmb[j] & szveg[i];
i:=i+1;
Ciklus vge
Ciklus vge
Ciklus k:=1-tl j-ig
db:=0;
Ciklus l:=1-tl j-ig
Ha (Tmb[k]=Tmb[l]) akkor
db:=db+1;
Elgazs vge
Ciklus vge
Ha (db > 1) akkor
Ki(Tmb[k]);
Ki(db);
Elgazs vge
Ciklus vge
Barhcs OktatKzpont Programozsi alapismeretek modul - Tartalomjegyzk
112.
Tartalomjegyzk
TRTNETI TTEKINTS............................................................................................................... 2
ELZMNYEK...................................................................................................................................... 2
PROGRAMOZSI NYELVEK FEJLDSE................................................................................................ 2
PROGRAMOZSI NYELVEK OSZTLYOZSI SZEMPONTJAI............................................. 4
GENERCIK SZERINT......................................................................................................................... 4
MKDS SZERINT.............................................................................................................................. 4
SZERKEZET SZERINT............................................................................................................................ 4
ALAPDEFINCIK.............................................................................................................................. 5
AZ ALGORITMUS............................................................................................................................... 7
AZ ALGORITMUSOKKAL SZEMBEN TMASZTOTT KVETELMNYEK.................................................. 7
AZ ALGORITMUS LLAPOTTERE.......................................................................................................... 7
A PROGRAM I...................................................................................................................................... 8
A PROGRAMFEJLESZTS LPSEI......................................................................................................... 8
Compileres technika........................................................................................................................ 8
Interpreteres technika ..................................................................................................................... 8
PROGRAMMAL SZEMBENI ELVRSOK ............................................................................................... 9
ELLENRZ KRDSEK............................................................................................................... 10
I.......................................................................................................................................................... 10
II. ....................................................................................................................................................... 11
III. ...................................................................................................................................................... 11
A PROGRAM II. ................................................................................................................................. 12
A PROGRAM LETTJA...................................................................................................................... 12
Feladatmegfogalmazs ................................................................................................................. 12
Specifikci, algoritmustervezs................................................................................................... 12
Kdols ......................................................................................................................................... 13
Tesztels ........................................................................................................................................ 13
Hibakeress, javts ...................................................................................................................... 14
Hatkonysgvizsglat ................................................................................................................... 15
Dokumentls ............................................................................................................................... 15
zembehelyezs, karbantarts...................................................................................................... 15
A DOKUMENTCI ............................................................................................................................ 16
Felhasznli kziknyv (User Guide) ........................................................................................... 16
Fejleszti kziknyv (Programming Guide) tartalma................................................................... 16
Opertori kziknyv (Installing Guide) ........................................................................................ 16
Barhcs OktatKzpont Programozsi alapismeretek modul - Tartalomjegyzk
113.
PROGRAMTERVEZSI MDSZEREK ........................................................................................ 17
Frontlis feladatmegolds ............................................................................................................ 17
Fellrl lefel (top-down) programozs ....................................................................................... 17
Alulrl felfel (bottom-up) programozs ...................................................................................... 17
Prhuzamos finomts elve ........................................................................................................... 17
Dntsek elhalasztsnak elve...................................................................................................... 17
Vissza az skhz elv .................................................................................................................... 17
Nylt rendszer felpts................................................................................................................ 18
Dntsek kimondsnak elve ........................................................................................................ 18
Adatok elszigetelsnek elve ......................................................................................................... 18
Modulris programozs................................................................................................................ 18
Strukturlt programozs ............................................................................................................... 19
Objektumorientlt programozs ................................................................................................... 19
ADATSZERKEZETEK...................................................................................................................... 21
MATEMATIKAI ................................................................................................................................... 21
PROGRAMOZSI................................................................................................................................. 22
Egyszer adattpusok .................................................................................................................... 22
sszetett adattpusok .................................................................................................................... 23
ELLENRZ KRDSEK............................................................................................................... 26
I.......................................................................................................................................................... 26
II. ....................................................................................................................................................... 26
III. ...................................................................................................................................................... 27
AZ ALGORITMUSOK ALAPELEMEI........................................................................................... 28
VLTOZK......................................................................................................................................... 28
I/O MVELETEK................................................................................................................................. 28
UTASTSOK...................................................................................................................................... 28
Deklarcis utastsok.................................................................................................................. 28
Vgrehajthat utastsok .............................................................................................................. 29
KIFEJEZSEK...................................................................................................................................... 29
VEZRLSI SZERKEZETEK ................................................................................................................. 30
Utasts-vgrehajtsi sorozat (szekvencia)................................................................................... 30
Elgazs (szelekci)...................................................................................................................... 30
Ciklusszervezs (iterci) ............................................................................................................. 30
Ugr utastsok............................................................................................................................. 31
AZ ALGORITMUS ALAPJELEI, PTELEMEI ....................................................................................... 31
ALGORITMUS LER ESZKZK.............................................................................................. 32
FOLYAMATBRA ............................................................................................................................... 32
STRUKTOGRAM.................................................................................................................................. 32
PSZEUDOKD..................................................................................................................................... 32
FUNKCIONLIS LERS ...................................................................................................................... 32
JACKSON BRA.................................................................................................................................. 32
MONDATSZER LERS ..................................................................................................................... 32
PLDK.............................................................................................................................................. 33
Algoritmuslers............................................................................................................................ 33
Folyamatbra................................................................................................................................ 33
Struktogram................................................................................................................................... 34
Pszeudokd (Pascal)..................................................................................................................... 34
Jackson jells .............................................................................................................................. 35
ELLENRZ KRDSEK............................................................................................................... 36
Barhcs OktatKzpont Programozsi alapismeretek modul - Tartalomjegyzk
114.
ALPROGRAMOK.............................................................................................................................. 37
ELJRS (PROCEDURE) ................................................................................................................. 37
FGGVNY (FUNCTION)................................................................................................................. 38
PARAMTEREK, PARAMTERTADSI MDOK................................................................................. 39
Vltoz vagy cm szerinti paramtertads .................................................................................. 39
rtk szerinti paramtertads..................................................................................................... 39
REKURZI.......................................................................................................................................... 40
PROGRAMOZSI TECHNIKK............................................................................................................. 41
Strukturlt programozstechnika.................................................................................................. 41
Objektumorientlt programozstechnika...................................................................................... 42
ELLENRZ KRDSEK............................................................................................................... 43
ELEMI ALGORITMUSOK I. ........................................................................................................... 44
SSZEGZS TTELE ........................................................................................................................... 44
Plda ............................................................................................................................................. 44
Feladatok ...................................................................................................................................... 44
KIVLASZTS TTELE....................................................................................................................... 45
Plda ............................................................................................................................................. 45
Feladatok ...................................................................................................................................... 45
MEGSZMLLS TTELE................................................................................................................... 46
Plda ............................................................................................................................................. 46
Feladatok ...................................................................................................................................... 46
ELEMI ALGORITMUSOK II. .......................................................................................................... 47
ELDNTS TTELE............................................................................................................................. 47
Plda ............................................................................................................................................. 47
Feladatok ...................................................................................................................................... 47
KIVLOGATS TTELE ...................................................................................................................... 48
Plda ............................................................................................................................................. 48
Feladatok ...................................................................................................................................... 48
MAXIMUM-MINIMUM KIVLASZTS TTELE .................................................................................... 49
Plda ............................................................................................................................................. 49
Feladatok ...................................................................................................................................... 49
KERESSI TTELEK....................................................................................................................... 50
Lineris keress ttele................................................................................................................... 50
Logaritmikus keress ttele........................................................................................................... 51
Visszalpses keress ttele .......................................................................................................... 52
RENDEZSEK I. ................................................................................................................................ 54
RENDEZS KZVETLEN KIVLASZTSSAL........................................................................................ 54
RENDEZS MINIMUMKIVLASZTSSAL............................................................................................. 55
BUBORKOS RENDEZS ..................................................................................................................... 55
BESZRSOS RENDEZS.................................................................................................................... 56
Feladatok ...................................................................................................................................... 56
RENDEZSEK II. ............................................................................................................................... 57
GYORSRENDEZS............................................................................................................................... 57
SSZEFSLS................................................................................................................................. 58
Feladatok ...................................................................................................................................... 58
VEGYES FELADATOK .................................................................................................................... 59
Barhcs OktatKzpont Programozsi alapismeretek modul - Tartalomjegyzk
115.
ADATTROLSI MDSZEREK I.................................................................................................. 60
MTRIX ............................................................................................................................................. 60
Plda ............................................................................................................................................. 60
Feladatok ...................................................................................................................................... 60
SZVEG (STRING) .............................................................................................................................. 61
Plda ............................................................................................................................................. 61
Feladatok ...................................................................................................................................... 61
FILE.................................................................................................................................................... 62
A file-ok alapmveletei ................................................................................................................. 62
Plda ............................................................................................................................................. 63
ADATTROLSI MDSZEREK II. ............................................................................................... 64
TBLA................................................................................................................................................ 64
Hash algoritmus............................................................................................................................ 65
VEREM ADATSZERKEZET................................................................................................................... 66
SOR ADATSZERKEZET........................................................................................................................ 67
ADATTROLSI MDSZEREK III. ............................................................................................. 68
LISTA................................................................................................................................................. 68
Listatpusok................................................................................................................................... 68
ADATTROLSI MDSZEREK IV............................................................................................... 73
BINRIS FA ........................................................................................................................................ 73
Defincik...................................................................................................................................... 73
Rendezetlen binris fa................................................................................................................... 74
Rendezett binris fa (keresfa) ..................................................................................................... 74
Kiegyenslyozott binris fk (AVL-fk, vrs-fekete fk)............................................................. 75
ALGORITMUSTERVEZSI ELVEK.............................................................................................. 80
ELEMENKNTI FELDOLGOZS ........................................................................................................... 80
Egy halmazbl egy halmaz ellltsa.......................................................................................... 80
Egy halmazbl tbb halmaz ellltsa ........................................................................................ 80
Kt vagy tbb halmazbl egy halmaz ellltsa.......................................................................... 80
Kt vagy tbb halmazbl kt vagy tbb halmaz ellltsa .......................................................... 80
MOH ALGORITMUSOK ..................................................................................................................... 81
Esemny-kivlaszts ..................................................................................................................... 81
Pnzvlts ..................................................................................................................................... 81
Elgazs s korltozs.................................................................................................................. 82
DINAMIKUS PROGRAMOZS .............................................................................................................. 82
A dinamikus programozs lpsei................................................................................................. 82
KZELT ALGORITMUSOK ............................................................................................................... 83
Ldapakols.................................................................................................................................. 83
VLETLENT HASZNL ALGORITMUSOK .......................................................................................... 83
VEGYES FELADATOK .................................................................................................................... 84
Barhcs OktatKzpont Programozsi alapismeretek modul - Tartalomjegyzk
116.
MEGOLDSOK.................................................................................................................................. 85
1. FEJEZET.......................................................................................................................................... 85
I. .................................................................................................................................................... 85
II.................................................................................................................................................... 85
III. ................................................................................................................................................. 85
2. FEJEZET.......................................................................................................................................... 87
I. .................................................................................................................................................... 87
II.................................................................................................................................................... 87
III. ................................................................................................................................................. 87
3. FEJEZET.......................................................................................................................................... 89
4. FEJEZET.......................................................................................................................................... 91
5. FEJEZET.......................................................................................................................................... 92
sszegzs ...................................................................................................................................... 92
Kivlaszts .................................................................................................................................... 93
Megszmlls................................................................................................................................ 93
6. FEJEZET.......................................................................................................................................... 94
Eldnts ........................................................................................................................................ 94
Kivlogats ................................................................................................................................... 95
Maximum-minimum kivlaszts.................................................................................................... 96
7. FEJEZET.......................................................................................................................................... 97
Lineris keress ............................................................................................................................ 97
Logaritmikus keress .................................................................................................................... 98
8. FEJEZET.......................................................................................................................................... 99
Rendezsek .................................................................................................................................... 99
9. FEJEZET........................................................................................................................................ 100
sszefsls ................................................................................................................................ 100
Vegyes feladatok ......................................................................................................................... 101
10. FEJEZET...................................................................................................................................... 106
Mtrix.......................................................................................................................................... 106
Szveg ......................................................................................................................................... 107
14. FEJEZET...................................................................................................................................... 108
Vegyes feladatok ......................................................................................................................... 108
TARTALOMJEGYZK................................................................................................................... 112

You might also like