programozás i. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/prog1/progi01.pdf · tartalom 1...

51
Programoz´ as I. 1. el˝ oad´ as Sergy´ an Szabolcs [email protected] ´ Obudai Egyetem Neumann J´ anos Informatikai Kar 2012. szeptember 10. Sergy´ an (OE NIK) Programoz´ as I. 2012. szeptember 10. 1 / 50

Upload: others

Post on 02-Feb-2020

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Programozas I.1. eloadas

Sergyan [email protected]

Obudai EgyetemNeumann Janos Informatikai Kar

2012. szeptember 10.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 1 / 50

Page 2: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Tartalom

1 Algoritmus

2 Vezerlesi szerkezetek

3 Algoritmus leıro eszkozokBlokkdiagramStruktogramPszeudokod

4 Strukturalt programozas

5 Algoritmusok hatekonysaga

6 Feladatok

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 2 / 50

Page 3: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Tartalom

1 Algoritmus

2 Vezerlesi szerkezetek

3 Algoritmus leıro eszkozokBlokkdiagramStruktogramPszeudokod

4 Strukturalt programozas

5 Algoritmusok hatekonysaga

6 Feladatok

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 3 / 50

Page 4: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Mi az az algoritmus?

1957 elott nem lehetett megtalalni az algorithm szot a Webster’sszotarban.

Az algorism szo volt a szotarban, melynek jelentese: aritmetikaieljarasok elvegzese arab szamokkal.

Az elso algoritmus, amivel talalkozhatunk, az Euklideszi algoritmusvolt.

Mai definıcio

Jol meghatarozott utasıtasok veges sorozata, amelynek bemenete egybizonyos ertek vagy ertekhalmaz, es amely letrehoz valamilyen erteketvagy ertekhalmazt kimenetkent.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 4 / 50

Page 5: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Algoritmus keszıtesenek lepesei

A folyamatot elemi lepesekre bontjuk

Figyelembe vesszuk az osszes felmerulo lehetoseget

Ugyelunk, hogy az algoritmus veges sok lepesben veget erjen

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 5 / 50

Page 6: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Pelda (1)

Kaveautomata1 Valaszd ki, amit inni akarsz!

2 Dobj be penzt!

3 Ha nem eleg a bedobott pent, akkor menj a 2. lepesre!

4 Vard, amıg elkeszul a kave!

5 Vedd el a kavet!

6 Vedd el a visszajaro penzt!

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 6 / 50

Page 7: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Pelda (2)

Nem indul a motor1 Ellenorizd a benzintankot!

2 Ha nincs benne benzin, akkor toltsd tele!

3 Ha elindul a motor, akkor VEGE.

4 Ellenorizd az akkumulatort!

5 Ha nincs megfeleloen feltoltve, akkor toltsd fel!

6 Ha elindul a motor, akkor VEGE.

7 Ellenorizd a gyertyat!

8 Ha szukseges, csereld ki!

9 Ha elindul a motor, akkor VEGE.

10 Vidd el a szerelohoz!

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 7 / 50

Page 8: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Pelda (3)

Euklideszi algoritmus

Bemenet: Ket pozitıv egesz szam: m es n.Kimenet: A legnagyobb egesz szam, amely m-nekes n-nek is osztoja.Algoritmus

1 Osszuk el m-et n-nel es legyen r az osztasimaradek.

2 Ha r = 0, akkor veget er az algoritmus es n akimenet.

3 Egyebkent m← n es n← r .

4 Ugras az 1. lepesre.

m n r120 48 24

48 24 0

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 8 / 50

Page 9: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Pelda (4)

Adjuk meg egy szo szotarban torteno keresesenek algoritmusat!

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 9 / 50

Page 10: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Az algoritmusokkal szembeni elvarasok

Vegesseg: Veges szamu lepest kovetoen veget kell ernie azalgoritmusnak.

Meghatarozottsag: Az algoritmus minden egyes lepeset mindenlehetseges esetre precızen definialni kell.

Bemenet: Egy algoritmusnak nulla vagy annal tobb bemenete lehet,amik az algoritmus kezdetekor ismertek.

Kimenet: Egy algoritmusnak nulla vagy annal tobb kimenete van,amelyek meghatarozott viszonyban vannak az algoritmusbemeneteivel.

Hatekonysag: Egy szamıtogep altal vegrehajtott algoritmustol elvart,hogy gyorsabban mukodjon annal, mintha szamıtogep nelkulhajtottuk volna vegre.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 10 / 50

Page 11: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Tartalom

1 Algoritmus

2 Vezerlesi szerkezetek

3 Algoritmus leıro eszkozokBlokkdiagramStruktogramPszeudokod

4 Strukturalt programozas

5 Algoritmusok hatekonysaga

6 Feladatok

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 11 / 50

Page 12: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Megengedett vezerlesi szerkezetek

Szekvencia: Egy utasıtast kozvetlenul egy masik utan vegzunk el.

Elagazas: Adott (legalabb) 2 darab feltetel-program paros. Ateljesulo feltetelhez tartozo programresz (utasıtasok) vegrehajtasa.

Ciklus: Megadott feltetel teljesulese eseten egy programresz(ciklusmag) tobbszori vegrehajtasa.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 12 / 50

Page 13: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Tartalom

1 Algoritmus

2 Vezerlesi szerkezetek

3 Algoritmus leıro eszkozokBlokkdiagramStruktogramPszeudokod

4 Strukturalt programozas

5 Algoritmusok hatekonysaga

6 Feladatok

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 13 / 50

Page 14: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Algoritmus leıro eszkozok

Mondatok

Blokkdiagram

Struktogram

Jackson abra

Pszeudokod

Programnyelv

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 14 / 50

Page 15: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Algoritmus leıro eszkozok

Mondatok

Blokkdiagram

Struktogram

Jackson abra

Pszeudokod

Programnyelv

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 14 / 50

Page 16: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

BlokkdiagramTeendok es kerdesek osszekotese nyilakkal

Euklideszi algoritmus

Be: m, n

r ← m mod n

r = 0m ← nn ← r

Ki: n

ni

MegjegyzesFontos kulonbseg van az ertekadas jele es az osszehasonlıto egyenloseg jele kozott

← Ertekadast jeloljuk vele. A bal oldalon mindig egy valtozo all, ami ertekulkapja a jobb oldali kifejezes aktualis erteket.

= Osszehasonlıto egyenloseget jelolunk vele. Igaz ha a ket oldalan kifejezesmegegyezik egymassal, egyebkent pedig hamis.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 15 / 50

Page 17: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Szekvencia abrazolasa blokkdiagramon

Utasıtas1

Utasıtas2

Utasıtas3

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 16 / 50

Page 18: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Elagazas abrazolasa blokkdiagramon

Feltetel

Utasıtas1 Utasıtas2

i n

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 17 / 50

Page 19: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Ciklus abrazolasa blokkdiagramon

Nincs kulon jeloles a ciklusra, elagazassal viszont abrazolhato.

FeltetelUtasıtasi

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 18 / 50

Page 20: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Problemak a blokkdiagrammal

Nyilak es vonalak kesze-kusza rendszere

Teljesen ad-hoc elrendezesu, ket ugyanolyan algoritmus leırasa arajzolo kenye-kedve szerint akar teljesen mas elrendezesu is lehet

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 19 / 50

Page 21: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Struktogram

Teendok es kerdesek strukturaltan kotott, mindig teglalap alaku kepireprezentacioja

Euklideszi algoritmus

Be: m, n

r ← m mod n

Amıg r 6= 0

m← n

n← r

r ← m mod n

Ki: n

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 20 / 50

Page 22: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Szekvencia abrazolasa struktogramon

Utasıtas1

Utasıtas2

Utasıtas3

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 21 / 50

Page 23: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Elagazas abrazolasa struktogramon

AAFeltetel

��

Utasıtas1 Utasıtas2

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 22 / 50

Page 24: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Ciklus abrazolasa struktogramon

Feltetel

Utasıtas

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 23 / 50

Page 25: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Problemak a struktogrammal

Nehezen modosıthato

Az elkeszıtese es az ertelmezese olykor nehezkes

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 24 / 50

Page 26: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Pszeudokod

Teendok es kerdesek kotott kifejezesekkel valo szoveges leırasa

Nagy merteku hasonlosagot mutat a programnyelvek sturkturajahoz

Euklideszi algoritmus

Be: m, nr ← m mod nCiklus amıg r 6= 0

m← nn← rr ← m mod n

Ciklus vegeKi: n

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 25 / 50

Page 27: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Szekvencia megadasa pszeudokoddal

Utasıtas1Utasıtas2Utasıtas3

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 26 / 50

Page 28: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Elagazas megadasa pszeudokoddal

Ha feltetel akkorUtasıtas1

kulonbenUtasıtas2

Elagazas vege

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 27 / 50

Page 29: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Tobbiranyu elagazas megadasa pszeudokoddal

ElagazasFeltetel1 eseten

Utasıtas1Feltetel2 eseten

Utasıtas2Feltetel3 eseten

Utasıtas3kulonben

Utasıtas4Elagazas vege

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 28 / 50

Page 30: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Ciklus megadasa pszeudokoddal

Eloltesztelos ciklus

Ciklus amıg feltetelUtasıtas

Ciklus vege

Akkor lepunk be,illetve addigmaradunk a ciklusban,amıg a feltetel igaz

Hatultesztelos ciklus

CiklusUtasıtas

Ciklus amıg feltetel

Addig maradunk aciklusban, amıg afeltetel igaz

Szamlalos ciklus

Ciklus i ← i0-tol i1-igUtasıtas

Ciklus vege

Az i ciklusvaltozoerteke mindenciklusban 1-gyelnovekszik. Akkorlepunk ki a ciklusbol,ha i erteke marmeghaladja az i1erteket.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 29 / 50

Page 31: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Tartalom

1 Algoritmus

2 Vezerlesi szerkezetek

3 Algoritmus leıro eszkozokBlokkdiagramStruktogramPszeudokod

4 Strukturalt programozas

5 Algoritmusok hatekonysaga

6 Feladatok

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 30 / 50

Page 32: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Strukturalt programozas

Strukturalt programnak tekintjuk azokat a programokat, amelyek csaka megengedett elemi programokat tartalmazzak a megengedettprogramkonstrukciok (vezerlesi szerkezetek) alkalmazasaval.

Elemi programok

ures programertekadas (allapot valtoztatas)jele: ←

Megengedett konstrukciok

szekvenciaelagazasciklus

Bizonyıthato, hogy a fenti szabalyok megtartasaval mindenalgoritmussal megoldhato feladatra adhato is megoldas.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 31 / 50

Page 33: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Modularis programozas

Az elkeszıtendo programot egyetlen utasıtassal szeretnenk megoldani.

Ha ez nem sikerul, akkor tobb utasıtassal probalkozunk, melyek egyesreszfeladatokat valosıtanak meg.

Addig folytatjuk ezt a reszfeladatokra bontast, mıg mindenreszfeladatot sikerul megvalosıtani elemi utasıtasok felhasznalasaval.

Osszefoglalva: A teljes feladatot reszekre bontjuk, majd ezeket avisszavezetes modszerevel megoldjuk.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 32 / 50

Page 34: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Modularis programozas

A modularis programozast az alabbi Jackson abra szemlelteti

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 33 / 50

Page 35: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Modularis programozas

A modularis programozas pl. fuggvenyek (illetve eljarasok) hıvasavaltudjuk megvalosıtani.

A fuggvenyek onallo reszprogramok, melyeknek

lehetnek bemenetei es

visszateresi ertekei.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 34 / 50

Page 36: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Valtozok

Az algoritmusok megvalosıtasahoz valtozokra van szuksegunk (ld.Euklideszi algoritmus).

Az egyes valtozoknak az algoritmusok szamıtogepesimplementaciojanal tıpust kell megfeleltetni.

Sok esetben az alkalmazott valtozo tıpustol fugg, hogy milyenalgoritmussal oldhato meg egy problema.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 35 / 50

Page 37: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Elemi valtozo tıpusok

Egesz tıpusok

Hany bajton abrazolva?Elojeles/elojel nelkuli?

Lebegopontos tıpusok

Hany bajton abrazolva?Vigyazat! Nem abrazolhato minden valos szam!

Karakter tıpus(ok)

Logikai tıpus

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 36 / 50

Page 38: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Osszetett tıpusok

Tombok

Stringek

Strukturak

Halmazok

Objektumok...

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 37 / 50

Page 39: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Valtozok jellemzoi

Elettartam

Statikus/dinamikus

Konstans/valtoztathato

Hatokor (lokalis/globalis)

Fuggveny parameterekent ertek/cım szerint atadott

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 38 / 50

Page 40: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Tartalom

1 Algoritmus

2 Vezerlesi szerkezetek

3 Algoritmus leıro eszkozokBlokkdiagramStruktogramPszeudokod

4 Strukturalt programozas

5 Algoritmusok hatekonysaga

6 Feladatok

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 39 / 50

Page 41: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Eloadasra jaro hallgatok szamanak meghatarozasa

Hanyan vannak itt a teremben?

Hogyan tudnank ezt hatekonyan megszamolni?

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 40 / 50

Page 42: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Algoritmus lepesszama

Egy algoritmus lepesszama alatt azt ertjuk, hogy hany elemimuveletet (ertekadas, osszehasonlıtas, beolvasas, kiiratas, stb.) kellvegrehajtani adott bemenet mellett.

Egy algoritmus futasi ideje fugg az algoritmust megvalosıtoprogramtol, a programozasi nyelvtol, a szamıtogeptol, stb.

Algoritmuselmeletben a futasi idot a lepesszammal jellemezzuk.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 41 / 50

Page 43: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Sorozat rendezese

Bemenet: egy szamsorozat: < a1, a2, . . . , an >

Kimenet: novekvo modon rendezett sorozat: < a′1, a′2, . . . , a

′n >, ahol

a′1 ≤ a′2 ≤ . . . ≤ a′n

Javıtott beszuro rendezes pszeudokodja:

Ciklus j ← 2-tol n-igk ← A[j ]i ← j − 1Ciklus amıg i > 0 es A[i ] > k

A[i + 1]← A[i ]i ← i − 1

Ciklus vegeA[i + 1]← k

Ciklus vege

Szukseges lepesszam egy sorozat rendezesehez?

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 42 / 50

Page 44: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Sorozat rendezese

A futasi ido fugg a bemeneti sorozattol (rendezett, majdnemrendezett, fordıtva rendezett, stb.)

A futasi ido fugg a bemeneti sorozat meretetol

A futasi idot felulrol szeretnenk becsulni, tehat felso korlatot akarunkmeghatarozni

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 43 / 50

Page 45: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Futasi ido analızisenek fajtai

Legrosszab eset analızis

T (n): a maximalis futasi ido, amely barmely n elemu sorozat eseten arendezeshez legfeljebb szukseges

Atlagos eset analızis

T (n): a varhato futasi ido, amely az n elemu sorozatok rendezesehezszukseges

Legjobb eset analızis

Magunkat verjuk at, ha ezzel foglalkozunk

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 44 / 50

Page 46: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Sorozat rendezes

Lepesszam meghatarozasa

Rendezett eset: 3 · (n − 1) darab ertekadas es n − 2 darabosszehasonlıtas. Igy a lepesszam (n ≥ 2 eseten):

T (n) = 3 · (n − 1) + (n − 2) = 4n − 5

Fordıtva rendezett eset: (n+2)(n−1)2 + n(n−1)

2 darab osszehasonlıtas es

3 · (n − 1) + 2 · n(n−1)2 ertekadas. Igy a lepesszam:

T (n) =(2n + 2)(n − 1)

2+ (n + 3)(n − 1)

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 45 / 50

Page 47: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Sorozat rendezes

Megjegyzes

A pontos lepesszam meghatarozas persze fugg attol, hogy

a gep minden ertekadast ugyanannyi ido alatt (ugyanannyi elemilepessel) hajt vegre? (pl. i ← j − 1 vs. k ← A[j ])

a gep minden osszehasonlıtast ugyanannyi elemi lepessel valosıt meg?(pl. i > 0 vs. A[i ] > k)

egy ertekadas es egy osszehasonlıtas ugyanannyi elemi lepes?

Ezek viszont csak valamilyen konstans egyutthatoval valo szorzastjelentenek az egyes tagoknal. (Az egyutthato nem fugg n-tol!)

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 46 / 50

Page 48: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Nagy ordo jeloles

Legyenek f (x) es g(x) egyvaltozos fuggvenyek.

f (x) = O (g(x))

akkor es csak akkor, ha leteznek olyan M es x0 pozitıv valos szamok, hogyminden x > x0 eseten

|f (x)| ≤ M · |g(x)|

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 47 / 50

Page 49: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Szo keresese szotarban

Hogyan tudunk hatekonyan szot keresni egy szotarban?

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 48 / 50

Page 50: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Tartalom

1 Algoritmus

2 Vezerlesi szerkezetek

3 Algoritmus leıro eszkozokBlokkdiagramStruktogramPszeudokod

4 Strukturalt programozas

5 Algoritmusok hatekonysaga

6 Feladatok

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 49 / 50

Page 51: Programozás I. - 1. eloadásusers.nik.uni-obuda.hu/sergyan/Prog1/ProgI01.pdf · Tartalom 1 Algoritmus 2 Vez erl esi szerkezetek 3 Algoritmus le r o eszk oz ok Blokkdiagram Struktogram

Feladatok

1 Irjuk le a masodfoku egyenlet megoldasi algoritmusatfolyamatabraval, struktogrammal es pszeudokoddal!

2 Adott ket sıkbeli pont: P1(x1, y1) es P2(x2, y2). Keressuk a P1-en esP2-n athalado egyenesen az x0 abszcisszaju pont y0 koordinatajat.Adjon algoritmust a feladat megoldasara!

3 Keszıtsen algoritmust, mely eldonti, hogy egy adott ev szokoev-e vagysem!

4 Keszıtsen algoritmust, mely megadja, hogy egy adott ev adotthonapja hany napbol all.

5 Keszıtsen algoritmust, amely egy pozitıv egesz szamrol eldonti, hogyprım-e vagy sem!

6 Keszıtsen algoritmust, amely bekeri egy tankor zh eredmenyeit, majdkiszamıtja azok atlagat.

Sergyan (OE NIK) Programozas I. 2012. szeptember 10. 50 / 50