Transcript Programmod

Algoritmusok
és
adatszerkezetek
Mi is a számítógép?
Olyan elektronikus berendezés,
amely utasítások egy pontosan
meghatározott csoportjának
végrehajtására képes.
Olyan elektronikus berendezés, amely
az azt vezérlő utasítások hatására
adatok feldolgozását képes elvégezni.
A számítógépes
feladatmegoldás feltételei
Hardver
A számítógép
fizikai
alkotóelemei.
Szoftver
Programok,
adatok,
dokumentációk.
A program
A program
Olyan,
a
számítógép
által
közvetve,
vagy
közvetlenül
végrehajtható utasításcsoport,
amely egy probléma megoldása
során
felmerülő
kiinduló
állapotból
meghatározott
végeredményt állít elő.
Kiinduló állapot:
INPUT R
T=R*R*3,14
Feldolgozás
PRINT T
Végeredmény
Az algoritmus
Az algoritmus
Egy probléma véges számú lépésben történő,
egyértelmű és teljes megoldása.
Az elemi
lépések
végrehajthatók!
Nincs
kidolgozatlan
eset!
A Norbi automata algoritmusa
(elavult)
Egymást követő utasítások:
SZEKVENCIA
Készíts elő 50 Ft-os
érméket!
Ismételd meg 3x azt, hogy
bedobsz egy érmét!
Nyomd meg a kiválasztott
Coca Cola gombját!
Ha az automata kiadja az
Colat, akkor
idd meg!
különben
vágd oldalba a gépet!
Utasítások ismétlése:
ITERRÁCIÓ
Elágazás valamilyen
feltétel szerint:
SZELEKCIÓ
Az algoritmusok elemei
Szekvencia
Iteráció
Szelekció
Algoritmus leíró eszközök
Élő beszéd, írott szöveg
• Végy egy liter tejet,
egy bögrényi
búzadarát, 10dkg
cukrot.
• Forrald föl a tejet!
• Öntsd hozzá a
búzadarát!
• Gyakori kevergetés
mellett főzd készre!
• Keverd hozzá a cukrot!
• Edd meg amit főztél!
Grafikus szimbólumok
Algoritmus leíró eszközök
az informatikában
Folyamatábra
(blokkdiagramm)
Mondatszerű
leírás
Start
Be: A
Struktogramm
Be: A
A<0
N:=A*A
Ki: N
Stop
i
Ki:
„Negatív”
n
Ki:
„Pozitív”
Be: A
Be:B
Ha A>B akkor
Ki: A
különben
Ki: B
Ha vége
Ami minden eszközre jellemező
• Az adatok változókban tárolódnak
Az eszköz valahogyan ábrázolja:
• az algoritmus elejét, végét,
• adatok beolvasását, kiírását,
• egyéb lépéseket (pl. értékadás),
• a lépések sorrendjét (szekvencia),
• elágazásokat (szelekció),
• ismétléseket (iteráció)
Folyamatábra
Folyamatábra
Start
Be: R
D:=R*2
K:=D*3,14
Ki: K
i
Stop
• Az egyes lépéseket
síkidomokkal írják le.
• A végrehajtás sorrendjét
nyilakkal ábrázolja.
• Kisebb algoritmusok
leírására alkalmas
• Jól áttekinthető, könnyen
érthető
• Ciklusok leírása nehezebb
Algoritmus eleje, vége
Start
• Szimbólum: Ovális
• Csak egy START és
egy STOP
Start
Be: A,B
Stop
A>B
Ki: A
Ki: B
Stop
Algoritmus eleje, vége
Start
• Szimbólum: Ovális
• Csak egy START és
egy STOP
Start
Be: A,B
Stop
A>B
Ki: A
Ki: B
Stop
Stop
Beolvasás, kiírás
Start
Be: A
Ki: A*A
Stop
•
•
•
•
Szimbólum: paralelogramma
Ki: kifejezés
Be: változó
Be: vált1, vált2
Start
Be: A,B
Ki: A+B
Stop
Elemi műveletek, értékadás
Start
Be: R
D:=R*2
K:=D*3,14
Ki: K
Stop
• Szimbólum: téglalap
• Értékadás:
változó := kifejezés
pl: A:=3
• Műveleti jelek:
összeadás: +
kivonás:
szorzás:
*
osztás:
/
Példák
Start
Start
Start
Be: Netto
Be: A
Be: R
Brutto:=Netto*1,25
N:=A*A
T:=R*R*3,14
Ki: Brutto
Ki: N
Ki: T
Stop
Stop
Stop
Elágazás (szelekció)
• Szimbólum: rombusz
• Belépés egy irány, kilépés két
irány
• Benne logikai kifejezés
• balkif össz.oper. jobbkif
Start
Be: A,B
I
N
A>B
Ki: A
Ki: B
Stop
• Összehasonlító
operátorok:
=,<>,<=,>=
Feladatok
•Számolja ki egy ‘A’ oldalú
kocka térfogatát!
•Döntsük el egy beolvasott
számról, hogy pozitív, vagy
negatív!
•Olvassunk be két számot és a
két szám összegét! Döntsük el,
hogy helyes -e az összeg!
•Olvassunk be két számot és
írjuk ki a hányadosukat!
•Olvassunk be két számot és
egy műveleti jelet! Végezzük el
a műveletet, írjuk ki az
eredményt!
Iteráció, ciklus
Start
Ismétlés
kezdete
A:=1
Ismételt
utasítások
Ki: A
Ismétlés
vége
A:=A+1
Végtelen
ciklus
Iteráció, ciklus
• Ciklus eleje
• Ciklus vége
• Ismételt
utasítások
• Teszt
=>
=>
Ciklusfej
Ciklusvég
=>
=>
Ciklusmag
Tesztkifejezés
Iteráció, ciklus
Start
Ciklusfej
A:=1
Ciklusmag
Ki: A
Hátul
tesztelő
ciklus
A:=A+1
Ciklusvég
n
Tesztkifejezés
A>10
i
Stop
Iteráció, ciklus
Start
Tesztkifejezés
Stop
Ciklusfej
Ciklusmag
A:=1
i
A>10
n
Ki: A
A:=A+1
Ciklus
-vég
Elől
tesztelő
ciklus
Iteráció, ciklus
Start
Elől
tesztelő
ciklus
A:=1
A:=A+1
Ki: A
A>10
n
i
Stop
Feladatok
•Írjuk ki az 1-10 közötti egész
számokat.
•Írjuk ki 20-tól 2 ig visszafelé
haladva az összes páros
számot!
•Ismételjük egy szám
beolvasását mindaddig, amíg az
<=, mint 0. 0-nál nagyobb szám
esetén fejezzük be a beolvasást,
és írjuk ki a beolvasott szám
négyzetét!
Struktogram
Struktogram
• Az egész algoritmus egy
téglalapba kerül
• A további lépéseket a
téglalapba ágyazott további
téglalapok írják le
• A lépések sorrendjét az
egymás alatti téglalapok
sorrendje adja meg.
• Kis algoritmusok,
algoritmus részletek
ábrázolására alkalmas.
• Használata, nehézkes, de jól
ábrázolja az algoritmus
egységét.
Be: A
Be: B
Be: A
B=0
C:=A/B
Ki: C
Struktogram
Elemi lépés
Logikai kif.
i
n
Logikai kifejezés
Teljes algoritmus
Ciklusmag
Ciklusmag
Logikai kifejezés
Elemei lépések,
szekvenciák
Elemei lépések, szekvenciák
• Az elemi lépéseket
beágyazott
téglalapokban
ábrázoljuk.
• A szekvenciát a
téglalapok sorrendje
határozza meg.
• A beolvasás, kiírás,
értékadás elemi
lépés.
Elemi lépés
Be: változó
Ki: kifejezés
Változó := kifejezés
Elemi lépések, szekvencia
Olvassuk be az apa és az anya keresetét, valamint
a családtagok számát! Számoljuk ki az egy főre jutó
átlagkeresetet!
Be: ApaJov
Be: AnyaJov
Be: ApaJov, AnyaJov, Cstag
Be: Cstag
Atlag:=(ApaJov+AnyaJov)/ Cstag
Atlag:=(ApaJov+AnyaJov)/ Cstag
Ki:Atlag
Ki:Atlag
Szelekció
Szelekció
• A szelekciót két
részre osztott
téglalap ábrázolja
• A felső részben a
logikai kifejezés
található
• Az alsó rész további
téglalapokra bomlik,
és az igaz, hamis
ágakat írja le.
Logikai kif.
n
i
Nem
utasítások
Igen
utasítások
A>=B
i
n
Ki: A
Ki: B
Szelekció
Olvassunk be egy fizetést és döntjük
el eléri –e a minimálbér összegét.
Be: Ber
MinBer:=50000
Ber>=MinBer
i
Ki: „Eléri”
n
Ki:”Nem éri el”
Iteráció, ciklus (ismétlés)
Iteráció, ciklus a
folyamatábrában
Start
Start
A:=1
A:=1
Ki: A
Stop
i
A>10
n
A:=A+1
Ki: A
n
A>10
i
Stop
A:=A+1
Iteráció
• A ciklust egy téglalap
írja le
• A téglalapot egy
fektetett ‘L’ betűvel
osztjuk ketté
• A ‘L’ vízszintes szára a
tesztkifejezést
tartalmazza
• Az így leválasztott
téglalaprész a
ciklusmag.
• Megvalósítható az elől
és a hátul tesztelő
ciklus is.
Teszt kifejezés
Ciklusmag
Ciklusmag
Teszt kifejezés
A ciklusok addig folytatódnak, amíg a
tesztkifejezés értéke igaz!
Ciklusok
A:=1
A<=10
Ki: A
A:=A+1
A:=1
Ki: A
A:=A+1
A<=10
Feladatok
•Olvassunk be egy számot, írjuk ki a reciprokát.
•Egy beolvasott számról döntsük el, hogy van –e reciproka!
•Olvassunk be három számot! Döntsük el, hogy lehetnek -e egy
háromszög oldalai!
•Írjuk ki az első 10 négyzetszámot!
•Írjuk ki az első 10 páratlan szám köbét!
•Olvassunk be számokat mindaddig, amíg a beolvasott szám
nem 0. Határozzuk meg a számok összegét!
•Legyen egy TITOK nevű változónk, amelyben a „kukucsi”
szöveget tároljuk. Olvassuk be egy JELSZO nevű változó
értékét. Ismételjük mindaddig a beolvasást, amíg a JELSZO
változó más értéket tartalmaz, mint a TITOK!
A mondatszerű leírás
Mondatszerű leírás
•Utasításként működő magyar
szavakkal írja le az algoritmust.
Algoritmus
Be:A
•Az algoritmus elemi lépésekből és
Ismétlés
összetett utasításokból áll.
Be: B
amíg B=0
•Az összetett utasítások blokkokat
Ismétlés vége
alkotnak, amelyek egymásba
H:=A/B
ágyazhatók.
Ki: H
•A blokkoknak jelöljük az elejét,
Algoritmus vége
végét.
Mielőtt elkezdenénk
• NAGY NYOMTATOTT betűk
• dőlt kisbetűk
• [szöveg szögletes zárójelben]
• és anélkül
• | jel
• …
CIKLUS AMÍG|KILÉPÉS log.kif
[ciklus mag]
CIKLUS VÉGE
Algoritmus eleje, vége
ALGORITMUS
utasítások
ALGORITMUS VÉGE
Algoritmus
Be:A
Ismétlés
Be: B
amíg B=0
Ismétlés vége
H:=A/B
Ki: H
Algoritmus vége
Értékadás, beolvasás, kiírás
változónév:=kifejezés
BE: változó1 [,változó2…]
KI: kif1 [,|; kif2…]
Algoritmus
Be: SZÁM
N:=SZÁM*SZÁM
Ki: N
Algoritmus vége
Feladatok
• Olvassunk be két számot, számoljuk ki,
hogy a második hány %-a az elsőnek!
• Beolvasott bruttó összegből számoljuk ki a
nettó árat és az ÁFA-t.
• Olvassuk be egy autó fogyasztását, a
használt benzin literenkénti árát és egy
tervezett útvonal hosszát! Számoljuk ki
mennyibe kerül az út!
• Olvassunk be két számot és cseréljük meg
őket!
• Számoljuk ki a BMI-t!
Mit csinál?
ALGORITMUS
Be: A, B
SZAZALEK:=(B/A)*100
KI: SZAZALEK
ALGORITMUS VÉGE
Mit csinál?
ALGORITMUS
BE: NETTO
BE: AFA
AFA := AFA /100
BRUTTO := NETTO*(1 + AFA)
KI: BRUTTO
ALGORITMUS VÉGE
Olvassuk be egy autó fogyasztását, a használt
benzin literenkénti árát és egy tervezett útvonal
hosszát! Számoljuk ki mennyibe kerül az út!
Pl. 6,5l/100 km; 245 Ft; 1560 km
ALGORITMUS
BE:FOGYI, BENZAR, UT
KM_FOGYI:=FOGYI/100
OSSZ_FOGYI:=KM_FOGYI * UT
OSSZ_AR:= OSSZ_FOGYI * BENZAR
KI:OSSZ_AR
ALGORITMUS VEGE
Olvassunk be két számot és cseréljük meg
őket!
ALGORITMUS
BE:
C:=
A:=
B:=
A, B
A
B
C
ALGORITMUS VEGE
Számoljuk ki a BMI-t.
ALGORITMUS
BE: TS, TM_M
TMN:= TM_N * TM_N
BMI:= TS/TMN
Ki: BMI
ALGORITMUS VEGE
Elágazás
ALGORITMUS
BE: TS, TM_M
TMN:= TM_N * TM_N
BMI:= TS/TMN
HA BMI <= 25 AKKOR
KI: „MINDEN OK”
KÜLÖNBEN
KI: „VALAMI NINCS RENDBEN”
HA VÉGE
ALGORITMUS VEGE
Elágazás
HA logikai kifejezés AKKOR
utasítások
[ KÜLÖNBEN
utasítások ] Algoritmus
HA VÉGE
Be: FIZ
Algoritmus
Ha
akkor
Be: FIZ<50000
FIZ
SZOV:= akkor
„Ez kevés!”
Ha FIZ<50000
KI: „Ez kevés!”
különben
Ha vége
SZOV:=„Ez se sok...!”
Ki:
AZ ADATOT”
Ha „KÖSZÖNÖM
vége
Algoritmus
vége
Ki: SZOV
Algoritmus vége
Elágazás
HA logikai kifejezés AKKOR utasítások
Algoritmus
Be: A, B
Ha B=0 akkor B=1
Algoritmus
Ki: A
/B
Be: FIZ
Algoritmus végeHa FIZ<50000 AKKOR KI: „Ez kevés!”
Ki: „KÖSZÖNÖM AZ ADATOT”
Algoritmus vége
Feladatok
• Két szám közül írjuk ki a nagyobbat?
• Számoljuk ki két szám hányadosát!
• Számoljuk ki és értékeljük a beolvasott
testmagasság és testsúly alapján a BMI-t!
• Olvassunk be egy pont két koordinátáját! Írjuk
ki melyik sík negyedben van a pont.
II
I
X<0, Y>0
X>0, Y>0
III
IV
X<0, Y<0
X>0, Y<0
ALGORITMUS
BE: A, B
HA A<>B AKKOR
HA A>B AKKOR
KI: A, „A NAGYOBB”
KÜLÖNBEN
KI: B, „A NAGYOBB”
HA VÉGE
KÜLÖNBEN
KI „A két szám egyenlő!”
HA VÉGE
ALGORITMUS VÉGE
ALGORITMUS
BE: A, B
HA B<>0 AKKOR
HANYADOS:= A/B
KI: HANYADOS
KÜLÖNBEN
KI: „0-VAN NEM MEGY!”
HA VÉGE
ALGORITMUS VÉGE
ALGORITMUS
BE: TS, TM
BMI:= TS/(TM*TM)
HA BMI<=25 AKKOR AKKOR
KI: „EGÉSZSÉG”
KÜLÖNBEN
HA BMI<=30 AKKOR
KI: „FIGYELEM”
KÜLÖNBEN
HA BMI<=40 AKKOR
KI: „BETEGSÉG”
KÜLÖNBEN
KI: NYOMÁS DOKIHOZ”
HA VÉGE
HA VÉGE
HA VÉGE
ALGORITMUS VEGE
ALGORITMUS
BE: X,Y
HA X>0 AKKOR AKKOR
HA Y>0 AKKOR
KI: „I. SÍKNEGYED”
KÜLÖNBEN
KI: „IV. SÍKNEGYED”
HA VÉGE
KÜLÖNBEN
HA Y>0 AKKOR
KI: „II. SÍKNEGYED”
KÜLÖNBEN
KI: „III. SÍKNEGYED”
HA VÉGE
HA VÉGE
ALGORITMUS VEGE
Többszörös elágazás
ALGORITMUS
BE: ORSZAG
HA ORSZAG=„MAGYAR” AKKOR KI: „BUDAPEST”
HA ORSZAG=„OLASZ” AKKOR KI: „RÓMA”
HA ORSZAG=„FRANCIA” AKKOR KI: „PÁRIZS”
...
ALGORITMUS VEGE
Többszörös elágazás
ALGORITMUS
BE: ORSZAG
ELÁGAZÁS ORSZAG SZERINT
ESET „MAGYAR”
KI: „BUDAPEST”
ESET „OLASZ”
KI: „RÓMA”
ESET „FRANCIA”
KI: „PÁRIZS”
...
ESET KÜLÖNBEN
KI: „MI VAGY VÁGÓ ISTVÁN?”
ELÁGAZÁS VÉGE
ALGORITMUS VEGE
Többszörös elágazás
ELÁGAZÁS kifejezés SZERINT
ESET konstans 1
Be:A,B,MUV
utasítások
Elágazás MUV szerint
[ESET konstans 2
Eset „+”
utasítások
c:=a+b: Ki:c
….]
Eset „-”
[ESET KÜLÖNBEN
c:=a-b: Ki:c
utasítások]
Eset „*”
ELÁGAZÁS VÉGE
c:=a*b: Ki: c
Eset „/”
c:=a/b: Ki c
Eset különben
Ki: „Ismeretlen…”
Elágazás vége
Olvassunk be egy 1 és 10 közötti egész számot és
írjuk ki római számmal!
ALGORITMUS
BE:SZAM
ELÁGAZÁS SZÁM SZERINT
ESET 1
RSZ:=„I”
ESET 2
RSZ:=„II”
…
ESET 9
RSZ:=„IX”
ESET 10
RSZ:=„X”
ESET KÜLÖNBEN
RSZ:=„NEM ISMEREM”
ELÁGAZÁS VÉGE
KI: RSZ
ALGORITMUS VÉGE
Elől tesztelő ciklus
ALGORITMUS
I:=1
CIKLUS AMÍG I<=10
KI: I
CIKLUS VÉGE
ALGORITMUS VÉGE
ALGORITMUS
I:=1
CIKLUS KILÉPÉS I>10
KI: I
CIKLUS VÉGE
ALGORITMUS VÉGE
Elől tesztelő ciklus
CIKLUS AMÍG|KILÉPÉS log.kif
ciklus mag
CIKLUS VÉGE
Be:A
Ciklus amíg A>=2
A:=A-2
Ciklus vége
Ha A>0 akkor
Ki: „xxxx”
Különben
Ki: „yyyy”
Ha vége
Hátul tesztelő ciklus
CIKLUS
ciklus mag
AMÍG|KILÉPÉS log.kif
CIKLUS VÉGE
Be:A
Ciklus
Be: B
Amíg B=0
Ciklus vége
C:=A/B
Ki: C
Feladatok
• Olvassunk be a felhasználótól egy jelszót.
Mindaddig folytassuk a beolvasást, míg az
„abrakadabra” szót be nem írja!
• Olvassunk be két számot, döntsük el, hogy a
második osztója -e az elsőnek!
• Döntsük el egy számról, hogy egész szám -e!
• Számoljuk ki két szám legkisebb közös
többszörösét!
ALGORITMUS
BE: A, B
CIKLUS AMIG A>0
A:=A-B
CIKLUS
VÉGE
ALGORITMUS
HA A=0 AKKOR
BE: A, B
KI:HA
B,”
OSZTÁJA
A , ”-NAK”
A<0
AKKOR„,A:=A*-1
KÜLÖNBEN
HA B<0 AKKOR B:=B*-1
KI:HA
B,”
NEMAKKOR
OSZTÁJA „, A , ”-NAK”
B<>0
HA VÉGE
CIKLUS AMIG A>0
ALGORITMUS VÉGE
A:=A-B
CIKLUS VÉGE
HA A=0 AKKOR
KI: B,” OSZTÁJA „, A , ”-NAK”
KÜLÖNBEN
KI: B,” NEM OSZTÁJA „, A , ”-NAK”
HA VÉGE
KÜLÖNBEN
KI: „0-VAL NEM OSZTUNK!”
HA VÉGE
ALGORITMUS VÉGE
ALGORITMUS
CIKLUS
BE: JELSZO
KILÉPÉS JELSZÓ=„ABRAKADABRA”
CIKLUS VÉGE
KI: „BELÉPÉS SIKERES”
ALGORITMUS VÉGE
ALGORITMUS
BE: A, B
AT := A
BT := B
CIKLUS AMIG AT<>BT
HA AT<BT AKKOR
AT:=AT+A
KÜLÖNBEN
BT:=BT+B
HA VÉGE
CIKLUS VÉGE
KI: „A legkisebb közös többszörös: „ , AT
ALGORITMUS VÉGE
Ciklus másképpen
ALGORITMUS
I:=1
VEGERT:=10
CIKLUS KILÉPÉS I>VEGERT
I:=I+1
CIKLUS VÉGE
ALGORITMUS VÉGE
Számláló ciklus
ALGORITMUS
CIKLUS I:=1-TŐL 10-IG
...
CIKLUS VÉGE
ALGORITMUS VÉGE
Számláló ciklus
CIKLUS cvált:=kezd-TŐL vég-IG [lépésköz LÉPÉSENKÉNT]
ciklusmag
CIKLUS VÉGE
Ciklus I:=1-től 10-ig
Ki: I * I
Ciklus vége
Ciklus I:=1-től 10-ig
Ki: I, „. négyzetszám”, I*I
Ciklus vége
És most…
Feladatok
• Írjuk ki az 1-től 50-ig terjedő egész számokat!
• Írjuk ki az első tíz négyzetszámot!
• Írjuk ki 0-20 között az összes páros számot!
• Mit csinál?
OS:=0
Ciklus I:=1 -től 20-ig
Be:A
OS:=OS+A
Ciklus vége
B:=OS/20
Ki: B
Adattípusok
Adattípusok
1,2,3...
A ?
Abrakadabra
Értékkészlet
Igaz / Hamis
Szorzás
A ?
Gyökvonás
Elvégezhető műveletek
Összevonás
1 0 0 1 0 1 1 1
Helyfoglalás
H
e
l
l
o
Adattípusok
Egyszerű
Numerikus Karakter
Egész
Valós
Összetett
Logikai
Tömb
Szöveg Rekord
Numerikus
• Egész
– Előjeles ill. előjel nélküli egész
számok
• Valós
– Tört értékkel rendelkező számok
A:=123
B:=3.14
Karakter
• Olyan változó amelynek
értékkészletébe tetszőleges
karakterek tartoznak
• A változóban egyszerre csak egy
karakter tárolódhat
BETU:=„A”
JEL:=„+”
Logikai
• Logikai értékek tárolására
alkalmas típus
A:=11
B:=20
LOG:=A<B
A:=11
B:=20
LOG:=A=B
HA LOG AKKOR
KI:”IGAZ VOLT”
KÜLÖNBEN
KI:”HAMIS VOLT”
HA VÉGE
HA LOG AKKOR
KI:”IGAZ VOLT”
KÜLÖNBEN
KI:”HAMIS VOLT”
HA VÉGE
A tömb típus
123
32
A
B
C:=A+B
155
C
Összetett típusok
Tömb típus
34
12
1
2
21
48
3
4
55
5
A
C:=A(1)+A(2)
56
C
Tömb típus
34
1
12
21
2
48
3
4
A
Ciklus I:=1-től 5-ig
Ki: A(I)
Ciklus vége
55
5
A tömbök jellemzői
• Egy tömb változónak több eleme
lehet
• Az elemekre az indexükkel lehet
hivatkozni
• Egy tömb minden eleme azonos
típusú kell legyen
Feladatok
• Olvassuk be az A(10) tömb elemeinek értékét!
• Olvassuk be a felhasználótól az A(10) tömb egy
elemének indexét, majd írjuk ki a tömbelem
értékét!
• Írjuk ki az A(10) tömb elemeinek összegét!
• Olvassuk be az A(10) tömb két elemének
indexét! Cseréljük meg a két elem értékét!
Szöveg
M
U
1
2
N
K
3
4
A
KI: A(1)
KI: A(5)
A
5
Szöveg
• Olyan tömb, amelynek elemei
karakterek
Feladatok
• Írjuk ki egy szöveg összes
betűjét!
• Írjuk ki egy szöveg
mássalhangzóit!
• Írjunk egy szöveg páratlan betűit!
• Írjunk ki egy szöveget fordítva!
Rekord adattípus
Varga
Gábor
Név
Angol
Szak
3
Évfolyam
Hallgató
Ki: Hallgató.Név
Férfi
Neme
4,5
Átlag
A rekord adattípus
• Egy rekord típusú változónak
több eleme/mezője lehet
• A mezőkre a mezőnevekkel
hivatkozhatunk
rekordnév.mezőnév
• Az egyes mezők eltérő típusúak
lehetnek
Adatszerkezetek
Adatszerkezetek
Verem
Sor
Lista
Verem
0
11
54
21
123
Verem
0
11
54
21
123
Verem
11
54
21
123
Verem
54
21
123
Verem
21
123
Verem
123
Verem
LIFO
32
123
A verem adatszerkezet
• Több adat tárolására alkalmas
adatszerkezet.
• A verembe be lehet tenni adatokat, és
ki lehet emelni onnan őket.
• Először mindig az utoljára berakott
adat vehető ki. (LIFO)
• Megvalósításához általában tömböt
használnak.
Sor
123
Sor
13
123
Sor
29
13
123
Sor
81
29
13
123
Sor
23
81
29
13
123
Sor
23
81
29
13
123
Sor
23
81
29
13
FIFO
Programozási tételek
Elemi algoritmusok
Start
Be: A
N:=A*A
Ki: N
Stop
Programozási tételek
• Sorozatból egy adat
• Sorozatból egy sorozat
• Sorozattokból egy sorozat
• Sorozatból sorozatok
Sorozatból egy adat
Összegzés tétele
Tevékenység
Bemenet
Eredmény
Kiszámolja egy tömb
elemeinek összegét
A( ), numerikus tömb
N az elemek száma
Az elemek összege
Algoritmus
S:=0
Ciklus i:=1-től N-ig
S:=S+A(I)
Ciklus vége
Ki:S
Algoritmus vége
Feladatok
• A HET( ) 7
HET
elemű
1
2
3
4
5
6
7
tömbben egy
14
12 13,8 15,2 13 19,4 13,3
bolt egy bolt
egy héten
keresztül
Algoritmus
regisztrált
BEVET:=0
Ciklus i:=1-től 7-ig
napi
BEVET:=BEVET+HET(i)
bevételeit
Ciklus vége
tároljuk.
Ki:BEVET
Mennyi volt a
heti bevétel? Algoritmus vége
Eldöntés tétele
Tevékenység
Bemenet
Eredmény
Eldönti, hogy egy tömbben
megtalálható –e egy bizonyos
adat
A( ) tömb
N az elemek száma
T a keresett adat
Logikai: Igen, Nem
Eldöntés tétele
Algoritmus
I:=1
Ciklus amíg I<=N és A(I)<>T
I:=I+1
Ciklus vége
VAN:=I<=N
Ki: VAN
Algoritmus vége
LOVES
Az LOVES(7)
tömb egy
lövész 7
lövésének
pontértékét
tartalmazza.
Döntsük el,
hogy volt e
telitalálat!
1
2
3
4
5
6
7
7
8
10
9
10
7
2
Algoritmus
T:=10
N:=7
I:=1
Ciklus amíg I<=N és LOVES(I)<>T
I:=I+1
Ciklus vége
VAN:=I<=N
Ki: VAN
Algoritmus vége
LOVES
Az LOVES(7)
tömb egy
lövész 7
lövésének
pontértékét
tartalmazza.
Döntsük el,
hogy volt e
telitalálat!
1
2
3
4
5
6
7
7
6
8
9
7
7
2
Algoritmus
T:=10
N:=7
I:=1
Ciklus amíg LOVES(I)<>T és I<=N
I:=I+1
Ciklus vége
VAN:=I<=N
Ki: VAN
Algoritmus vége
Kiválasztás tétele
Tevékenység
Bemenet
Eredmény
Megadja, hogy T adatot
biztosan tartalmazó egy többen
a T hányadik elemben fordul
elő először.
A( ) tömb, amely tartalmaz
legalább egy T adatot
N az elemek száma
T a keresett adat
Az első, T adatot tartalmazó
elem indexe
Kiválasztás tétele
Algoritmus
I:=1
Ciklus amíg A(I) <>T
I:=I+1
Ciklus vége
Ki: I
Algoritmus vége
Megszámlálás tétele
Tevékenység
Bemenet
Eredmény
Megszámolja, hogy egy tömbben
hány T tulajdonságú elem van
A( ), numerikus tömb
N az elemek száma, T tulajdonság
A T tulajdonságú elemek száma
Algoritmus
TSZ:=0
Ciklus I:=1-től N-ig
Ha A(I)=T akkor
TSZ:=TSZ+1
HA vége
Ciklus vége
Ki: TSZ
Algoritmus vége
Megszámlálás
Adott az A(N) sorozat. Adjuk meg a T tulajdonságú
elemek számát!
Algoritmus
TSZ:=0
Ciklus I:=1-től N-ig
Ha A(I)=T akkor
TSZ:=TSZ+1
HA vége
Ciklus vége
Ki: TSZ
Algoritmus vége
Feladat
Adott a BMI(100) tömb, amely 100 ember BMI-jét
tartalmazza. Számoljuk meg a beteg embereket!
(BMI>=40)
Algoritmus
TSZ:=0: T=40
Ciklus I:=1-től N-ig
Ha BMI(I)>=T akkor
TSZ:=TSZ+1
HA vége
Ciklus vége
Ki: TSZ
Algoritmus vége
Minimum, minimum
kiválasztás
Tevékenység Visszaadja egy tömb legkisebb, vagy
legnagyobb értékét
Bemenet
A( ), numerikus tömb N az elemek száma
Eredmény
A T tulajdonságú elemek száma
Algoritmus
MAX:=A(1)
Ciklus I:=2-től N-ig
Ha A(I)>MAX akkor
MAX:=A(I)
HA vége
Ciklus vége
Ki: MAX
Algoritmus vége
Feladat
Adott a BMI(100) tömb, amely 100 ember BMI-jét
tartalmazza. Válasszuk ki a legjobb BMI értéket!
Algoritmus
MIN:=BMI(1): N=100
Ciklus I:=2-től N-ig
Ha BMI(I)< MIN akkor
MIN:BMI(I)
HA vége
Ciklus vége
Ki: MIN
Algoritmus vége
Feladat
JAN
A JAN( ), 31
elemű tömb
2002
január hava
egyes napjainak
neveit
tartalmazza.
Hányadikán
volt először
péntek?
1
2
3
4
5
6
7
K
Sz
Cs
P
Szo
V
H
Algoritmus
N:=31
T:=„P”
I:=1
Ciklus amíg JAN(I) <>T
I:=I+1
Ciklus vége
Ki: I
Algoritmus vége
Keresés tételei
Tevékenység
Eldönti, hogy egy tömbben
megtalálható -e egy bizonyos
adat, és ha igen hányadik
elemben
Bemenet
A( ) tömb, amely
N az elemek száma
T a keresett adat
Eredmény
Logikai Nem, vagy a
T adatot tartalmazó elem
indexe
Lineáris keresés
Algoritmus
I:=1
Ciklus amíg I<=N és A(I)<>T
I:=I+1
Ciklus vége
VAN:=I<=N
Ha VAN akkor
Ki:I
Különben
Ki: HAMIS
Ha vége
Algoritmus vége
A tömb a T tulajdonság szempontjából rendezetlen!
Feladat
Rendelkezünk a TAN( ) 20 elemű tömbbel, amelyben
egy osztály tanulóinak nevei vannak felsorolva. Van
–e az osztályban, és ha igen hányadik tömbelemben
szerepel Gacsaj Pesta?
1
Tóth Piroska
2
Varga Anna
3
Tarjáni Áron
4
Kollár Ede
5
Gál Zoltán
6
Tabai Judit
7
Kávás Géza
…
20
Gacsaj Pesta
Algoritmus
I:=1: N:=20 : T:="Gacsaj Pesta"
Ciklus amíg I<=N és TAN(I)<>T
I:=I+1
Ciklus vége
VAN:=I<=N
Ha VAN akkor
Ki:I
Különben
Ki: HAMIS
Ha vége
Algoritmus vége
Feladat
Rendelkezünk a TAN( ) 20 elemű tömbbel, amelyben
egy osztály tanulóinak nevei vannak felsorolva. Van
–e az osztályban, és ha igen hányadik tömbelemben
szerepel Gacsaj Pesta?
1
Tóth Piroska
2
Varga Anna
3
Tarjáni Áron
4
Kollár Ede
5
Gál Zoltán
6
Tabai Judit
7
Kávás Géza
…
20
Zima Van
Algoritmus
I:=1: N:=20 : T:="Gacsaj Pesta"
Ciklus amíg és I<=N és TAN(I)<>T
I:=I+1
Ciklus vége
VAN:=I<=N
Ha VAN akkor
Ki:I
Különben
Ki: HAMIS
Ha vége
Algoritmus vége
Strázsás lineáris keresés
Algoritmus
I:=1
Ciklus amíg I<=N és A(I)<>T
I:=I+I
Ciklus vége
VAN:=I<=N
Ha VAN akkor
SORSZ:=I
Ki:I
Különben
Ki: HAMIS
Ha vége
Algoritmus vége
Algoritmus
I:=1: A(N+1):=T
Ciklus amíg A(I)<>T
I:=I+I
Ciklus vége
VAN:=I<=N
Ha VAN akkor
SORSZ:=I
Ki:I
Különben
Ki: HAMIS
Ha vége
Algoritmus vége
Logaritmikus keresés
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
28 ???
Lineáris keresés
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
10 lépés
28 ???
Logaritmikus keresés
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
28 ???
1. lépés
Logaritmikus keresés
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
28 ???
2. lépés
Logaritmikus keresés
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
28 ???
3. lépés
Logaritmikus keresés
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
28 ???
4. lépés
A logaritmikus keresés
• Csak rendezett sorozatokban
használható.
• Igen gyorsan keres!
• N elem esetén max LOG2 N+1
lépésben találja meg a keresett
elemet. => 2lépés=N
Pl. 128 elem esetén 8 lépés
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
1
2
3
4
5
6
7
8
9 10 11
1
3
5
6 11 13 16 19 21 28 32
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
A
F
1
2
3
4
5
6
7
8
9 10 11
1
3
5
6 11 13 16 19 21 28 32
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
A
K
5
6
F
1
2
3
4
7
8
9 10 11
1
3
5
6 11 13 16 19 21 28 32
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
5
K
A
6
7
F
1
2
3
4
8
9 10 11
1
3
5
6 11 13 16 19 21 28 32
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
A
5
6
7
K
8
F
1
2
3
4
9 10 11
1
3
5
6 11 13 16 19 21 28 32
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
K
5
6
7
8
A
F
1
2
3
4
9 10 11
1
3
5
6 11 13 16 19 21 28 32
1, 3, 5, 6, 11, 13, 16, 19, 21, 28, 32
K
A
5
6
7
8
F
1
2
3
4
9 10 11
1
3
5
6 11 13 16 19 21 28 32
Logaritmikus keresés
Algoritmus
A:=1: F:=N
Ciklus
Csak a T
K:=Egész((A+F)/2)
tulajdonság
Ha A(K)<T akkor A:=K+1
Ha A(K)>T akkor F:=K-1
szempontjából
amíg A<=F és A(K)<>T
rendezett
Ciklus vége
tömbben
VAN:=A<=F
működik!
Ha VAN akkor
Ki:K
különben
Ki: "Nincs ilyen elem"
Ha vége
Algoritmus vége
Feladat
Hányadik lépésben találjuk meg a T tulajdonságú
elemet?
T
0
8
K
A
F
1
8
4 15 1
3
2
A(K)
8
1
2
3
4
5
6
7
8
2
8 12 15 24 31 32 55
Algoritmus
A:=1: F:=N
Ciklus
K:=Egész((A+F)/2)
Ha A(K)<T akkor A:=K+1
Ha A(K)>T akkor F:=K-1
amíg A<=F és A(K)< >T
Ciklus vége
VAN:=A<=F
Ha VAN akkor
Ki:K
különben
Ki: "Nincs ilyen elem"
Ha vége
Algoritmus vége
T
0
12
K
A(K)
A
F
1
8
4 15 1
3
2
3
8
3 12
3
1
2
3
4
5
6
7
8
2
8 12 15 24 31 32 55
Algoritmus
A:=1: F:=N
Ciklus
K:=Egész((A+F)/2)
Ha A(K)<T akkor A:=K+1
Ha A(K)>T akkor F:=K-1
amíg A<=F és A(K)< >T
Ciklus vége
VAN:=A<=F
Ha VAN akkor
Ki:K
különben
Ki: "Nincs ilyen elem"
Ha vége
Algoritmus vége
T
0
56
K
A(K)
A
F
1
8
4 15 5
8
6 31 7
8
7 32 8
8
8 55 9
8
1
2
3
4
5
6
7
8
2
8 12 15 24 31 32 55
Algoritmus
A:=1: F:=N
Ciklus
K:=Egész((A+F)/2)
Ha A(K)<T akkor A:=K+1
Ha A(K)>T akkor F:=K-1
amíg A<=F és A(K)< >T
Ciklus vége
VAN:=A<=F
Ha VAN akkor
Ki:K
különben
Ki: "Nincs ilyen elem"
Ha vége
Algoritmus vége
Sorozatból sorozat
A kiválogatás tétele
Adott az A(N) tömb, amely adatokat tartalmaz és a B()
tömb, amely üres. Helyezzük el a B() tömbben az A(N)
T tulajdonságú elemeinek indexét.
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15
1
6
5
6 11 4 16 6 21 28 5
6 21 43 6
T=6
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15
A kiválogatás tétele
Adott az A(N) tömb, amely adatokat tartalmaz és a B()
tömb, amely üres. Helyezzük el a B() tömbben az A(N)
T tulajdonságú elemeinek indexét.
1
2
3
4
1
6
5
6 11 4 16 6 21 28 5
1
2
3
4
2
5
5
6
6
7
7
8
8
9 10 11 12 13 14 15
6 21 43 6
9 10 11 12 13 14 15
A kiválogatás tétele
Adott az A(N) tömb, amely adatokat tartalmaz és a B()
tömb, amely üres. Helyezzük el a B() tömbben az A(N)
T tulajdonságú elemeinek indexét.
1
2
3
4
5
1
6
5
6 11 4 16 6 21 28 5
1
2
3
4
2
4
5
6
6
7
7
8
8
9 10 11 12 13 14 15
6 21 43 6
9 10 11 12 13 14 15
A kiválogatás tétele
Adott az A(N) tömb, amely adatokat tartalmaz és a B()
tömb, amely üres. Helyezzük el a B() tömbben az A(N)
T tulajdonságú elemeinek indexét.
1
2
3
4
5
1
6
5
6 11 4 16 6 21 28 5
1
2
3
4
2
4
8
5
6
6
7
7
8
8
9 10 11 12 13 14 15
6 21 43 6
9 10 11 12 13 14 15
A kiválogatás tétele
Adott az A(N) tömb, amely adatokat tartalmaz és a B()
tömb, amely üres. Helyezzük el a B() tömbben az A(N)
T tulajdonságú elemeinek indexét.
1
2
3
4
5
1
6
5
6 11 4 16 6 21 28 5
1
2
3
4
2
4
8 12
5
6
6
7
7
8
8
9 10 11 12 13 14 15
6 21 43 6
9 10 11 12 13 14 15
A kiválogatás tétele
Adott az A(N) tömb, amely adatokat tartalmaz és a B()
tömb, amely üres. Helyezzük el a B() tömbben az A(N)
T tulajdonságú elemeinek indexét.
1
2
3
4
5
1
6
5
6 11 4 16 6 21 28 5
1
2
3
4
2
4
8 12 15
5
6
6
7
7
8
8
9 10 11 12 13 14 15
6 21 43 6
9 10 11 12 13 14 15
A kiválogatás tétele
I
1
2
3
4
5
6
7
8
9 10 11 12 13 14 15
1
6
5
6 11 4 16 6 21 28 5
2
3
4
6 21 43 6
J=0
1
5
6
7
8
9 10 11 12 13 14 15
A kiválogatás tétele
I
1
2
3
4
1
6
5
6 11 4 16 6 21 28 5
J:=J+1
1
2
2
5
6
7
8
9 10 11 12 13 14 15
6 21 43 6
B(J):=I
3
4
5
6
7
8
9 10 11 12 13 14 15
A kiválogatás tétele
I
1
2
3
4
1
6
5
6 11 4 16 6 21 28 5
J:=J+1
1
2
2
4
5
6
7
8
9 10 11 12 13 14 15
6 21 43 6
B(J):=I
3
4
5
6
7
8
9 10 11 12 13 14 15
Kiválogatás tétele
Algoritmus
J:=0
Ciklus I:=1-től N-ig
Ha A(I)=T akkor
J:=J+1
B(J):=I
Ha vége
Ciklus vége
Algoritmus vége
A kiválogatás tétele
Okés!!! Értem, csak haggyááá máááá!!!
Feladat
• Az A() tömbben adottak egy harmincegy napos
hónap napi legnagyobb kén-dioxid szintjei. A
határérték 0.023%. Helyezzük a B() tömbbe
azoknak a napoknak a számát, amikor a SO2
érték meghaladta a határértéket!
Algoritmus
T:=0.023
J:=0
Ciklus I:=1-től N-ig
Ha A(I)>T akkor
J:=J+1
B(J):=I
Ha vége
Ciklus vége
Algoritmus vége
Rendezési algoritmusok
1
2
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7 13 9 32
1
2
3
4
5
6
7
8
1
2
3
5
6
7
8
9 11 13 32
9 10 11
Rendezés közvetlen
kiválasztással
I
1
N-1
2
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7 13 9 32
Rendezés közvetlen
kiválasztással
J:=I+1
1
2
N
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7 13 9 32
Rendezés közvetlen
kiválasztással
I
J
1
2
3
4
5
6
7
8
3 11 2
6
1
5
8
7 13 9 32
A(J)<A(I)
9 10 11
Rendezés közvetlen
kiválasztással
I
1
J
2
3
4
5
6
7
8
2
3 11 3
2
6
1
5
8
7 13 9 32
C:=A(I)
C
A(I):=A(J)
3
A(J):=C
A(J)<A(I)
9 10 11
Rendezés közvetlen
kiválasztással
I
1
J
2
3
4
5
6
7
8
9 10 11
2 11 3
6
1
5
8
7 13 9 32
Rendezés közvetlen
kiválasztással
I
1
J
2
3
4
5
6
7
8
9 10 11
1
2 11 3
6
1
2
5
8
7 13 9 32
C:=A(I)
C
A(I):=A(J)
2
A(J):=C
A(J)<A(I)
Rendezés közvetlen
kiválasztással
I
1
J
2
3
4
5
6
7
8
9 10 11
1
2 11 3
6
1
2
5
8
7 13 9 32
Rendezés közvetlen
kiválasztással
I
1
N-1
2
3
4
5
6
7
8
9 10 11
1 11 3
6
2
5
8
7 13 9 32
Rendezés közvetlen
kiválasztással
I
1
2
3
4
5
6
7
8
9 10 11
1 11 3
6
2
5
8
7 13 9 32
Rendezés közvetlen
kiválasztással
I
J:=I+1
N
1
2
3
4
5
6
7
8
9 10 11
1 11 3
6
2
5
8
7 13 9 32
Rendezés közvetlen
kiválasztással
I
J
2
3
4
5
6
7
8
3 11
1 11
3
6
2
5
8
7 13 9 32
1
9 10 11
C:=A(I)
C
A(I):=A(J)
11
A(J):=C
A(J)<A(I)
Rendezés közvetlen
kiválasztással
I
J
1
2
3
4
5
6
7
8
1
3 11 6
2
5
8
7 13 9 32
A(J)<A(I)
9 10 11
Rendezés közvetlen
kiválasztással
I
J
1
2
3
4
5
6
7
8
9 10 11
1
2
3 11 6
2
3
5
8
7 13 9 32
C:=A(I)
C
A(I):=A(J)
3
A(J):=C
A(J)<A(I)
Rendezés közvetlen
kiválasztással
I
J
N
1
2
3
4
5
6
7
8
9 10 11
1
2 11 6
3
5
8
7 13 9 32
Rendezés közvetlen
kiválasztással
Algoritmus
Ciklus I:=1-től N-1-ig
Ciklus J:=I+1-től N-ig
Ha A(J)<A(I) akkor
C:=A(I)
A(I):=A(J)
A(J):=C
Ha vége
Ciklus vége
Ciklus vége
Algoritmus vége
A rendezés
egy menete.
Feladat
Töltsük ki a következő ábrát a közvetlen kiválasztás
egyes meneteinek megfelelő állapotokkal!
1
I
J A(i) A(j)
0
1
2
3
4
5
6
7
2
3
4
5
6
7
8
3 11 2
6
1
5
8
7
Buborék rendezés
Buborék rendezés
I
1
2
N
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7 13 9 32
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7 13 9 32
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7 13 9 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7 13 9 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
8
7
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
6
1
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
1
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 2
1
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
1
2
J
3
4
5
6
7
8
9 10 11
3 11 1
2
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
J
2
3
4
5
6
7
8
9 10 11
3 11 1
2
6
5
7
8
9 13 32
1
A(J)<A(J-1)
Buborék rendezés
I
J
1
2
3
4
5
6
7
8
9 10 11
3
1 11 2
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I J
1
2
3
4
5
6
7
8
9 10 11
3
1 11 2
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I J
1
2
3
4
5
6
7
8
9 10 11
1
3 11 2
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
3
J
1
2
4
5
6
7
8
9 10 11
1
3 11 2
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
3
J
1
2
4
5
6
7
8
9 10 11
1
3 11 2
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
3
J
1
2
4
5
6
7
8
9 10 11
1
3 11 2
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
3
J
1
2
4
5
6
7
8
9 10 11
1
3 11 2
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
3
J
1
2
4
5
6
7
8
9 10 11
1
3 11 2
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
3
J
1
2
4
5
6
7
8
9 10 11
1
3 11 2
6
5
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
3
J
1
2
4
5
6
7
8
9 10 11
1
3 11 2
5
6
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
3
J
1
2
4
5
6
7
8
9 10 11
1
3 11 2
5
6
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
J
3
1
2
4
5
6
7
8
9 10 11
1
3 11 2
5
6
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
J
4
1
2
3
5
6
7
8
9 10 11
1
3
2 11 5
6
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I J
1
2
3
4
5
6
7
8
9 10 11
1
3
2 11 5
6
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I J
1
2
3
4
5
6
7
8
9 10 11
1
2
3 11 5
6
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I J
1
2
3
4
5
6
7
8
9 10 11
1
2
3 11 5
6
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
I
4
J
1
2
3
5
6
7
8
9 10 11
1
2
3 11 5
6
7
8
9 13 32
A(J)<A(J-1)
Buborék rendezés
Algoritmus
Ciklus I:=2-től N-ig
Ciklus J:=N-től I-ig -1 Lépésenként
Ha A(J)<A(J-1) akkor
C:=A(J)
A(J):=A(J-1)
A(J-1):=C
Ha vége
Ciklus vége
Ciklus vége
Algoritmus vége
1
2
3
4
5
6
7
8
9 10 11
3
6
8 11 15 16 21 22 1 33 45
Algoritmus
Ciklus I:=2-től N-ig
Ciklus J:=N-től I-ig -1 Lépésenként
Ha A(J)<A(J-1) akkor
C:=A(J)
A(J):=A(J-1)
A(J-1):=C
Ha vége
Ciklus vége
Ciklus vége
Algoritmus vége
Módosított buborék rendezés
Módosított buborék rendezés
1
2
3
4
5
6
7
8
9
10 11
2
3
5
6
7
8
9 11 13 32
1
Algoritmus
Ciklus I:=2-től N-ig
Ciklus J:=N-től I-ig -1 Lépésenként
Ha A(J)<A(J-1) akkor
C:=A(J)
A(J):=A(J-1)
A(J-1):=C
Ha vége
Ciklus vége
Ciklus vége
Algoritmus vége
Algoritmus
CSERE:=IGAZ: I:=2
Ciklus amíg I<=N és CSERE:=IGAZ
CSERE:=HAMIS
Ciklus J:=N-től I-ig -1 Lépésenként
Ha A(J)<A(J-1) akkor
C:=A(J)
A(J):=A(J-1)
A(J-1):=C
CSERE:=IGAZ
Ha vége
Ciklus vége
I:=I+1
Ciklus vége
Algoritmus vége
Feladat
Töltsük ki a következő ábrát a buborék rendezés
egyes meneteinek megfelelő állapotokkal!
1
I
J A(i) A(j)
0
1
2
3
4
5
6
7
2
3
4
5
6
7
8
3 11 2
6
1
5
8
7
Több sorozatból egy
sorozat
Metszetképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban és B()-ben is
megtalálhatók
Metszetképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban és B()-ben is
megtalálhatók
Metszetképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban és B()-ben is
megtalálhatók
Metszetképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban és B()-ben is
megtalálhatók
Metszetképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban és B()-ben is
megtalálhatók
Metszetképzés tétele
I
I
N
1
2
3
4
5
6
7
8
9 10 11 12
1
6
5
7 11 4 42 0 21 28 53 31
1
2
3
4
5
6
7
8
9 10 11 12
1
2
3
4
5
6
7
8
9 10 11 12
A(N)
CN :=0
C( )
J
6 11 45 8
4 53 42 43 1 28 31 7
B(M)
Metszetképzés tétele
I
1
2
3
4
1
6
5
7 11 4 42 0 21 28 53 31
CN:=CN+1
1
2
3
5
6
7
8
9 10 11 12
A(N)
C(CN):=A(I)
4
5
6
7
8
9 10 11 12
1
C( )
J
1
2
3
4
6 11 45 8
5
6
7
8
9 10 11 12
4 53 42 43 1 28 31 7
B(M)
Metszetképzés tétele
I
1
2
3
4
1
6
5
7 11 4 42 0 21 28 53 31
1
2
3
4
5
6
7
8
9 10 11 12
1
2
3
4
5
6
7
8
9 10 11 12
6 11 45 8
5
6
7
8
9 10 11 12
4 53 42 43 1 28 31 7
Metszetképzés tétele
I
1
2
3
4
1
6
5
7 11 4 42 0 21 28 53 31
CN:=CN+1
1
2
1
6
3
5
6
7
8
9 10 11 12
A(N)
C(CN):=A(I)
4
5
6
7
8
9 10 11 12
C( )
J
1
2
3
4
6 11 45 8
5
6
7
8
9 10 11 12
4 53 42 43 1 28 31 7
B(M)
Metszetképzés tétele
I
1
2
3
4
1
6
5
7 11 4 42 0 21 28 53 31
1
2
3
4
5
6
7
8
9 10 11 12
1
6
1
2
3
4
5
6
7
8
9 10 11 12
6 11 45 8
5
6
7
8
9 10 11 12
4 53 42 43 1 28 31 7
Metszetképzés tétele
I
1
2
3
4
1
6
5
7 11 4 42 0 21 28 53 31
1
2
3
4
5
6
7
8
9 10 11 12
1
6
1
2
3
4
5
6
7
8
9 10 11 12
6 11 45 8
5
6
7
8
9 10 11 12
4 53 42 43 1 28 31 7
Metszetképzés tétele
I
1
2
3
4
1
6
5
7 11 4 42 0 21 28 53 31
CN:=CN+1
1
2
3
1
6
7
5
6
7
8
9 10 11 12
A(N)
C(CN):=A(I)
4
5
6
7
8
9 10 11 12
C( )
J
1
2
3
4
6 11 45 8
5
6
7
8
9 10 11 12
4 53 42 43 1 28 31 7
B(M)
Metszetképzés tétele
I
1
2
3
4
1
6
5
7 11 4 42 0 21 28 53 31
1
2
3
4
5
6
7
8
9 10 11 12
1
6
1
2
3
4
5
6
7
8
9 10 11 12
6 11 45 8
4
5
6
7
8
9 10 11 12
4 53 42 43 1 28 31 7
Metszetképzés tétele
I
1
2
3
4
1
6
5
7 11 4 42 0 21 28 53 31
CN:=CN+1
5
6
7
8
9 10 11 12
A(N)
C(CN):=A(I)
1
2
3
4
1
6
7 11
5
6
7
8
9 10 11 12
C( )
J
1
2
3
4
6 11 45 8
5
6
7
8
9 10 11 12
4 53 42 43 1 28 31 7
B(M)
Metszetképzés tétele
Algoritmus
CN:=0
Ciklus I:=1-től N-ig
J:=1
Ciklus amíg J<=M és A(I)<>B(J)
J:=J+1
Ciklus vége
Ha J<=M, akkor
CN:=CN+1
C(CN):=A(I)
Ha vége
Ciklus vége
Algoritmus vége
Unióképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben
megtalálhatók!
Unióképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben
megtalálhatók!
Unióképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben
megtalálhatók!
Unióképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben
megtalálhatók!
Unióképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben
megtalálhatók!
Unióképzés tétele
Adott egy A(N) és egy B(M) tömb helyezzük a C() tömbbe
azokat a tömbelemeket, amelyek A()-ban VAGY B()-ben
megtalálhatók!
Unióképzés tétele
1
2
3
4
5
6
1
6
5 10 11 4
1
2
3
4
5
1
2
3
4
5
6 12 4
8
4
6
A(N)
7
8
9 10 11 12
C()
B(M)
Unióképzés tétele
CN:=N
J:=1
1
2
3
4
1
6
5 10 11 4
1
2
3
1
6
5 10 11 4
1
2
3
4
5
6 12 4
8
4
4
5
5
6
6
A(N)
7
8
9 10 11 12
C
B(M)
Unióképzés tétele
1
2
3
4
5
6
1
6
5 10 11 4
A(N)
CN:=CN+1: C(CN):=B(J)
J:=J+1
1
2
3
4
5
6
7
1
6
5 10 11 4 12
1
2
3
4
5
6 12 4
8
4
8
9 10 11 12
C
B(M)
Unióképzés tétele
1
2
3
4
5
6
1
6
5 10 11 4
A(N)
CN:=CN+1: C(CN):=B(J)
J:=J+1
1
2
3
4
5
6
7
1
6
5 10 11 4 12
1
2
3
4
5
6 12 4
8
4
8
9 10 11 12
C
B(M)
Unióképzés tétele
1
2
3
4
5
6
1
6
5 10 11 4
A(N)
CN:=CN+1: C(CN):=B(J)
J:=J+1
1
2
3
4
5
6
7
8
1
6
5 10 11 4 12 8
1
2
3
4
5
6 12 4
8
4
9 10 11 12
C
B(M)
Unióképzés tétele
1
2
3
4
5
6
1
6
5 10 11 4
A(N)
CN:=CN+1: C(CN):=B(J)
J:=J+1
1
2
3
4
5
6
7
8
1
6
5 10 11 4 12 8
1
2
3
4
5
6 12 4
8
4
9 10 11 12
C
B(M)
Unióképzés tétele
Algoritmus
Ciklus I:=1-től N-ig
C(I)=A(I)
Ciklus vége
CN:=N
Ciklus J:=1-től M-ig
I:=1
Ciklus amíg I<=N és A(I)<>B(J)
I:=I+1
Ciklus vége
Ha I>N akkor
CN:=CN+1: C(CN):=B(J)
Ha vége
Ciklus vége
Algoritmus vége