Programozási tételek. PPT 2007/2008 tavasz.

Hasonló dokumentumok
Egyszerű programozási tételek

Objektum Orientált Programozás VII.

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Programozás I. Egyszerű programozási tételek. Sergyán Szabolcs

Összetett programozási tételek

Előfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból

Egyszerű programozási tételek

Összetett programozási tételek Rendezések Keresések PT egymásra építése. 10. előadás. Programozás-elmélet. Programozás-elmélet 10.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum.

Programozási Paradigmák

Bánsághi Anna 2014 Bánsághi Anna 1 of 68

5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás

Bevezetés az informatikába

Programozási Módszertan definíciók, stb.

ELEMI PROGRAMOZÁSI TÉTELEK

Programozás I. Metódusok C#-ban Egyszerű programozási tételek. Sergyán Szabolcs

Haladó rendezések. PPT 2007/2008 tavasz.

PROGRAMOZÁSI TÉTELEK

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Algoritmizálás, adatmodellezés tanítása 1. előadás

Programozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs

Egyszerű programozási tételek

Térinformatikai algoritmusok Elemi algoritmusok

Programozás I. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar szeptember 10.

Az összetett programozási tételek is egy tőről fakadnak

Programozás II. előadás

Térinformatikai algoritmusok Elemi algoritmusok

Programozási tételek. Dr. Iványi Péter

Pásztor Attila. Algoritmizálás és programozás tankönyv az emeltszintű érettségihez

Adatbázis és szoftverfejlesztés elmélet. Programozási tételek

Algoritmusok, adatszerkezetek, objektumok

23. Fa adatszerkezetek, piros-fekete fa adatszerkezet (forgatások, új elem felvétele, törlés)(shagreen)

Láncolt listák Témakörök. Lista alapfogalmak

Programozás I. Matematikai lehetőségek Műveletek tömbökkel Egyszerű programozási tételek & gyakorlás V 1.0 OE-NIK,

Programozási segédlet

Visszalépéses keresés

Algoritmizálás, adatmodellezés tanítása 7. előadás

Algoritmizálás, adatmodellezés tanítása 1. előadás

1. Alapfogalmak Algoritmus Számítási probléma Specifikáció Algoritmusok futási ideje

Bevezetés a programozásba I 3. gyakorlat. PLanG: Programozási tételek. Programozási tételek Algoritmusok

Algoritmizálás és adatmodellezés tanítása 2. előadás

Hatékonyság 1. előadás

Adatszerkezetek. Nevezetes algoritmusok (Keresések, rendezések)

Készítette: Nagy Tibor István Felhasznált irodalom: Kotsis Domokos: OOP diasor Zsakó L., Szlávi P.: Mikrológia 19.

Algoritmizálás, adatmodellezés tanítása 2. előadás

Programozás alapjai (ANSI C)

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Algoritmizálás. Horváth Gyula Szegedi Tudományegyetem Természettudományi és Informatikai Kar

PROGRAMOZÁS tantárgy. Gregorics Tibor egyetemi docens ELTE Informatikai Kar

Algoritmizálás, adatmodellezés tanítása 2. előadás

Programozási módszertan

Objektumorientált Programozás VI.

Programkonstrukciók A programkonstrukciók programfüggvényei Levezetési szabályok. 6. előadás. Programozás-elmélet. Programozás-elmélet 6.

Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása

Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.

Már megismert fogalmak áttekintése

B-fa. Felépítés, alapvető műveletek. Programozás II. előadás. Szénási Sándor.

Rekurzió. (Horváth Gyula és Szlávi Péter előadásai felhasználásával)

Bevezetés a programozásba I.

Algoritmusok Tervezése. 6. Előadás Algoritmusok 101 Dr. Bécsi Tamás

Algoritmizálás és adatmodellezés tanítása 3. előadás

Adatbázis rendszerek Gy: Algoritmusok C-ben

Informatikai tehetséggondozás:

Rekurzió. Témakörök. Rekurzió alapelve. Rekurzió alapjai Rekurzív algoritmusok végrehajtása Visszalépéses keresés Programtranszformációk

Változók. Mennyiség, érték (v. objektum) szimbolikus jelölése, jelentése Tulajdonságai (attribútumai):

Láncolt listák. PPT 2007/2008 tavasz.

Java programozási nyelv

Alkalmazott modul: Programozás. Programozási tételek, rendezések. Programozási tételek Algoritmusok és programozási tételek

ALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha

Algoritmizálás és adatmodellezés tanítása 6. előadás

Optimalizációs stratégiák 2.

Objektumorientált Programozás VI.

A félév során előkerülő témakörök

Gráfok 2. Legrövidebb utak, feszítőfák. Szoftvertervezés és -fejlesztés II. előadás. Szénási Sándor

15. tétel. Adatszerkezetek és algoritmusok vizsga Frissült: január 30.

Algoritmizálás és adatmodellezés 2. előadás

Informatika tanítási módszerek

A programozás alapjai előadás. Amiről szólesz: A tárgy címe: A programozás alapjai

Láncolt listák. Egyszerű, rendezett és speciális láncolt listák. Programozás II. előadás. Szénási Sándor

Programozási módszertan. Mohó algoritmusok

Algoritmizálás, adatmodellezés 1. előadás

AZ ALGORITMUS. az eredményt szolgáltatja

3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa

Adatszerkezetek I. 7. előadás. (Horváth Gyula anyagai felhasználásával)

Programozási nyelvek a közoktatásban alapfogalmak I. előadás

Informatikai tehetséggondozás:

Multihalmaz, intervallumhalmaz

Bevezetés a programozáshoz I. Feladatok

Összetett programozási tételek 2.

Algoritmusok és adatszerkezetek I. 4. előadás

Interfészek. PPT 2007/2008 tavasz.

Sorozat érték típusú programozási tételek

Gyakorló feladatok az 1. nagy zárthelyire

Programozás alapjai 1.Gy: Algoritmizálás P R O

Algoritmizálás, adatmodellezés tanítása 6. előadás

Optimalizációs stratégiák 1.

Algoritmusok és adatszerkezetek I. 1. előadás

Fák Témakörök. Fa definíciója. Rekurzív típusok, fa adatszerkezet Bináris keresőfa, bejárások Bináris keresőfa, módosítás B-fa

Adatszerkezetek I. 8. előadás. (Horváth Gyula anyagai felhasználásával)

PROGRAMOZÁSI NYELVEK (GYAKORLAT)

Átírás:

Programozási tételek szenasi.sandor@nik.bmf.hu PPT 2007/2008 tavasz http://nik.bmf.hu/ppt 1

Témakörök Strukturált programozás paradigma Alapvető programozási tételek Összetett programozási tételek Programozási tételek összeépítése Feladatok megoldása tételek segítségével 2

Programfejlesztés folyamata A PPT tárgy keretein belül a programfejlesztés folyamatából csak a tervezés lépéseivel foglalkozunk Ennek célja a kitűzött feladatot megoldó algoritmus (program) megtervezése Ezen a szinten implementációs kérdésekkel nem foglalkozunk, így konkrét nyelvi megvalósítás sem kerül szóba (bár értelemszerűen olyan megoldást részesítünk előnyben, ami illeszkedik a fejlesztés későbbi fázisaihoz) További szintekre bontható előzetes tervezés architektúra finom tervezés algoritmusok Analízis Tervezés Implementáció Tesztelés 3

Relációalapú modell Állapottér Elemei tartalmazzák a lehetséges állapotokat Ezek komponensei a modellezni kívánt jellemzők Feladat Az állapottér minden pontjához hozzárendel egy vagy több pontot Példáinkban általában azt feltételezzük, hogy csak egy pontot rendelünk hozzá Nem feltétlenül determinisztikus, bár a gyakorlatban általában ezt feltételezzük (1, 4, 1) (1, 4, 2) (1, 4, 3) (1, 5, 1) (1, 5, 2) (1, 5, 3) (2, 4, 1) (2, 4, 2) (2, 4, 3) (2, 5, 1) (2, 5, 2) (,, ) 4

Relációalapú modell Program Időben dinamikus folyamat Futását állapotok sorozataként tudjuk egyszerűen leírni Az állapottér minden pontjához hozzárendel egy ilyen sorozatot Működése nem feltétlenül determinisztikus (1, 4, 1) (1, 4, 2) (1, 4, 3) (1, 5, 1) (1, 5, 2) (1, 5, 3) Programfüggvény A gyakorlatban a program futásának menete lényegtelen, csak a kiinduló és a vég állapot lényeges számunkra Egy program programfüggvénye hozzárendeli a kiinduló állapothoz a vég állapotot (ha van ilyen) (2, 4, 1) (2, 4, 3) (2, 5, 2) (2, 4, 2) (2, 5, 1) (,, ) 5

Relációalapú modell Feladat programfüggvény Látjuk, hogy a programfüggvény ugyanolyan típusú reláció, mint a feladat volt (az állapottér egy pontjához hozzárendelik az állapottér egy vagy több pontját) Ennek segítségével egyszerű kapcsolatot teremthetünk egy adott feladat és egy adott program között Megoldás Egy programot egy feladat megoldásának tekintjük, ha bármelyik lehetséges bemenethez a programfüggvény a feladat által meghatározott állapotokat rendeli (vagy annál szűkebb halmazt) (1, 4, 1) (1, 4, 2) (1, 4, 3) (1, 5, 1) (1, 5, 2) (1, 5, 3) (2, 4, 1) (2, 4, 2) (2, 4, 3) (2, 5, 1) (2, 5, 2) (,, ) 6

Struktúrált programozás paradigma Struktúrált programnak tekintjük azokat a programokat, amelyek csak a megengedett elemi programokat tartalmazzák a megengedett programkonstrukciók alkalmazásával Elemi programok üres program hibás program/törlődés értékadás (állapot változtatás) Megengedett konstrukciók szekvencia elágazás ciklus Bizonyítható, hogy a fenti szabályok megtartásával minden algoritmussal megoldható feladatra adható megoldás 7

Szekvencia Egy programot közvetlenül egy másik után végzünk el S (, ) 1 S (, ) 2 (, ) Jelölése struktogramban S 1 S 2 Általunk használt pszeudokód S 1 S 2 8

Elágazás Adott N darab feltétel program páros, az igaz feltételekhez tartozó programok végrehajtása (, ) Gyakorlatban ennek csak egy egyszerűsítésével foglalkozunk, ahol N=2, és a feltételek diszjunktak Jelölése struktogramban L S 1 S 1 (, ) (, ) Általunk használt pszeudokód Ha L akkor S 1 különben S 2 Elágazás vége (, ) S 2 (, ) (, ) (, ) S 2 S 2 (, ) S 1 (, ) (, ) (, ) (, ) 9

Ciklus Megadott feltétel teljesülése esetén egy program (ciklusmag) végrehajtása (L?) S (L?) S (L?) S (L?) S (, ) (, ) (, ) Jelölése struktogramban L S A programozási nyelvek általában többféle ciklust ismernek, ennek megfelelően a pszeudokódban is többfélét használunk: Ciklus amíg L S Ciklus vége Ciklus S Ciklus amíg L (, ) Ciklus i i 0 -től i 1 -ig S(i) Ciklus vége Mindhárom egyszerűen helyettesíthető az elsővel 10

Összetett feladatok megoldása Funkció-orientált programtervezés Levezetés Analóg programozás Moduláris programozás Analóg levezetés Visszavezetés Levezetés A levezetés egy olyan módszer, amelyik a feladat megoldó programját lépésről lépésre alakítja át megengedett megoldássá, és ehhez a nevezetes programszerkezeteket használja fel A feladat triviális megoldásából indulunk ki, és folyamatosan felbontjuk a strukturált programozásnál megismert szerkezetek segítségével. Véget ér, ha egy megengedett programhoz érünk A levezetés menete biztosítja, hogy ez a program helyes lesz 11

Összetett feladatok megoldása Funkció-orientált programtervezés Levezetés Analóg programozás Moduláris programozás Analóg levezetés Visszavezetés Analóg programozás A gyakorlatban általánosan használt technika Alapja, hogy ha olyan feladatot kell megoldanunk, amelyhez hasonlóhoz rendelkezünk már megoldással, akkor az előző megoldás módosításával próbáljuk előállítani a programot Ez nyilván számos megoldott feladat ismeretét igényli és nagy tapasztalatot, szakértelmet (gyakorlást) 12

Összetett feladatok megoldása Funkció-orientált programtervezés Levezetés Analóg programozás Moduláris programozás Analóg levezetés Visszavezetés Analóg levezetés Az analóg programozási technikák jelentősen eltérhetnek egymástól aszerint, hogy milyen mértékben hagyatkoznak a már ismert megoldás levezetésére Az analóg levezetés alapelve, hogy a megoldandó feladat levezetését átvizsgáljuk, és az ott hozott döntéseket az új levezetés során felülvizsgáljuk, esetenként átvesszük 13

Összetett feladatok megoldása Funkció-orientált programtervezés Levezetés Analóg programozás Moduláris programozás Analóg levezetés Visszavezetés Visszavezetés Az analóg levezetéshez képest jelentős különbséget jelent, hogy ebben az esetben nem a mintaprogram előállítási folyamatait ismételjük meg, hanem magát a mintaprogramot adaptáljuk az új feladatnak megfelelően Ez a technika kellő elővigyázatossággal a gyakorlatban jól használható Ehhez természetesen szükség van már levezett mintaprogramok gyűjteményére programozási tételek 14

Összetett feladatok megoldása Funkció-orientált programtervezés Levezetés Analóg programozás Moduláris programozás Analóg levezetés Visszavezetés Moduláris programozás Összetett problémák esetén gyakran van arra szükség, hogy több programozási tételt használjunk A teljes feladatot részekre bontjuk, majd ezeket a visszavezetés módszerével megoldjuk Pl. programozási tételek egymásbaágyazása, egyéb program átalakítások 15

Témakörök Strukturált programozás paradigma Alapvető programozási tételek Összetett programozási tételek Programozási tételek összeépítése Feladatok megoldása tételek segítségével 16

Programozási tételek A programozási tételek jól megválasztott, egyszerű feladatok megoldásai segítségükkel a gyakorlatban szükséges feladatok jelentős része megoldható helyességük egyszerűen bizonyítható használatuk célszerű, hiszen (mások által is) jól áttekinthető kódot eredményeznek Egy lehetséges csoportosításuk egy sorozathoz egy értéket rendelő feladatok egy sorozathoz egy sorozatot rendelő feladatok egy sorozathoz több sorozatot rendelő feladatok több sorozathoz egy sorozatot rendelő feladatok Feldolgozandó intervallum alapján megkülönböztetünk rögzített intervallumos programozási tételeket feltételig tartó programozási tételeket (ezeket a változatokat nem tárgyaljuk) 17

Sorozatszámítás A tétel pszeudokódja Eljárás Sorozatszámítás(A, N, R) R R 0 Ciklus i 1-től N-ig R R művelet A[i] Ciklus vége Eljárás vége Megjegyzések adatok sorozatához egy értéket rendelő függvényt helyettesít minden olyan esetben használható, ha ezt a függvényt felbonthatjuk értékpárokon kiszámított függvények sorozatára az induláskor használt nullértéket értelemszerűen a kérdéses függvény (esetleg a feladat) alapján kell megválasztani R 0 művelet összegzés 0 R R + A[i] faktoriális 1 R R * A[i] elemek uniója { } R R A[i] 18

Eldöntés A tétel pszeudokódja Eljárás Eldöntés(A, N, VAN) i 1 Ciklus amíg (i N) és (A[i] teljesíti T-t) i i + 1 Ciklus vége VAN (i N) Eljárás vége Megjegyzések a T tulajdonság helyes megválasztásával a tétel sokféle szituációban alkalmazható a minden elem T tulajdonságú feladatot egyszerűen visszavezethetjük az eldöntésre a T tulajdonság tagadásával a sorozatszámításnál megismert módszerrel ellentétben ez az algoritmus az első T tulajdonságú elem megtalálása után már nem folytatja a keresést 19

Kiválasztás A tétel pszeudokódja Eljárás Kiválasztás(A, N, SORSZ) i 1 Ciklus amíg (A[i] teljesíti T-t) i i + 1 Ciklus vége SORSZ i Eljárás vége Megjegyzések az eldöntéssel ellentétben ez visszaadja az első T tulajdonságú elem sorszámát a tétel feltételezi, hogy biztosan van legalább egy ilyen tulajdonságú elem! sorszám helyett visszaadhatjuk az elem értékét is, de célszerűbb a sorszám használata (ez alapján az elem is azonnal meghatározható) 20

Lineáris keresés A tétel pszeudokódja Eljárás Keresés(A, N, VAN, SORSZ) i 1 Ciklus amíg (i N) és (A[i] teljesíti T-t) i i + 1 Ciklus vége VAN (i N) Ha VAN akkor SORSZ i Eljárás vége Megjegyzések tekinthető az eldöntés és a keresés tétel ötvözetének is: választ ad arra, hogy van-e T tulajdonságú elem a sorozatban, és ha van, akkor visszaadja a sorszámát is értelemszerűen így nem feltételezi, hogy biztosan van ilyen elem a listában. ha nincs, akkor a VAN változó értéke hamis, ilyenkor a SORSZ mező nem kap értéket rendezett lista esetén használható a már ismert logaritmikus keresés 21

Megszámlálás A tétel pszeudokódja Eljárás Megszámlálás(A, N, DB) DB 0 Ciklus i 1-től N-ig Ha (A[i] teljesíti T-t) akkor DB DB + 1 Elágazás vége i i + 1 Ciklus vége Eljárás vége Megjegyzések amennyiben nincs T tulajdonságú elem a listában, akkor értelemszerűen 0 kerül a DB változóba valójában egy sorozatszámítás, amely minden T tulajdonságú elem esetén 1-et hozzáad a DB értékéhez 22

Maximumkiválasztás A tétel pszeudokódja Eljárás Maximumkiválasztás(A, N, MAX) MAX 1 Ciklus i 2-től N-ig Ha A[i] > A[MAX] akkor MAX i Elágazás vége Ciklus vége Eljárás vége Megjegyzések reláció megfordításával értelemszerűen minimumkiválasztás lesz a tétel célja sorszám helyett visszaadhatjuk az elem értékét is, de célszerűbb a sorszám használata (ez alapján az elem is azonnal meghatározható) feltételezzük, hogy legalább egy elem létezik a listában több maximális elem esetén az elsőt adja vissza 23

Témakörök Strukturált programozás paradigma Alapvető programozási tételek Összetett programozási tételek Programozási tételek összeépítése Feladatok megoldása tételek segítségével 24

Másolás A tétel pszeudokódja Eljárás Másolás(X, N, Y) Ciklus i 1-től N-ig Y[i] művelet X[i] Ciklus vége Eljárás vége Megjegyzések az eredmény mindig ugyanannyi elemszámú, mint a bemenet a művelet segítségével az egyszerű másoláson túl az egyes elemekkel egy-egy elemi műveletet is el lehet végezni (pl. másoljuk át az abszolútértéküket) nincs azonban lehetőség az elemek közötti összefüggésekre építeni 25

Kiválogatás A tétel pszeudokódja Eljárás Kiválogatás(X, N, Y, DB) DB 0 Ciklus i 1-től N-ig Ha (X[i] teljesíti T-t) akkor DB DB + 1 Y[DB] X[i] Elágazás vége Ciklus vége Eljárás vége Megjegyzések az X[i] helyett néha csak az i index értékét másoljuk az Y-ba egyszerű módosítással megoldható, hogy nem másik listába, hanem az eredeti elemeket tartalmazó X lista elejére gyűjtjük a megfelelő elemeket szintén gyakran használatos változat, ha csak megjelöljük az eredeti listában a megfelelő elemeket 26

Szétválogatás A tétel pszeudokódja Eljárás Szétválogatás(X, N, Y, DBY, Z, DBZ) DBY 0; DBZ 0 Ciklus i 1-től N-ig Ha (X[i] teljesíti T-t) akkor DBY DBY + 1 Y[DBY] X[i] különben DBZ DBZ + 1 Z[DBZ] X[i] Elágazás vége Ciklus vége Eljárás vége Megjegyzések egyszerűen megoldható, hogy csak egy sorozatba helyezzük át az elemeket (a T tulajdonságú elemek kerüljenek az elejére, a nem T tulajdonságúak pedig a végére) érdemes átgondolni, hogyan lehetne egyszerűen megoldani a szétválogatást az eredeti sorozatban 27

Metszet A tétel pszeudokódja Eljárás Metszet(X, N, Y, M, Z, DB) DB 0 Ciklus i 1-től N-ig j 1 Ciklus amíg (j M) és (X[i] Y[j]) j j + 1 Ciklus vége Ha j M akkor DB DB + 1 Z[DB] X[i] Elágazás vége Ciklus vége Eljárás vége Megjegyzések felismerhető benne egy kiválogatás tételbe ágyazott eldöntés tétel kódja gyakran nincs szükség az összes metszetbeli elemre, csak egy elemről kell eldönteni, hogy az benne van-e a metszetben 28

Egyesítés (unió) A tétel pszeudokódja Eljárás Egyesítés(X, N, Y, M, Z, DB) Z X; DB N Ciklus i 1-től M-ig j 1 Ciklus amíg (j N) és (X[j] Y[i]) j j + 1 Ciklus vége Ha j > N akkor DB DB + 1 Z[DB] Y[i] Elágazás vége Ciklus vége Eljárás vége Megjegyzések amennyiben a két lista rendezett, lehetőségünk van jóval hatékonyabb algoritmusok készítésére (összefuttatás, összefésülés) 29

Témakörök Strukturált programozás paradigma Alapvető programozási tételek Összetett programozási tételek Programozási tételek összeépítése Feladatok megoldása tételek segítségével 30

Programozási tételek összeépítése Összetettebb programok esetén szintén használhatjuk a programozási tételeket, ilyenkor gyakran szükség van az egymásbaépítésükre Gyakori megvalósítások tételek egymás után tételek egymásba ágyazva egyéb (optimalizált) megoldások Egy példa az összeépítésre (megszámolás-eldöntés) Eljárás SzámolásÉsEldöntés(N, X, K, VAN) i 1; DB 0 Ciklus amíg (i N) és (DB < K) Ha (A[i] teljesíti T-t) akkor DB DB + 1 Elágazás vége i i + 1 Ciklus vége VAN (DB = K) Eljárás vége 31

Példák tételek összeépítésére Megszámolás-eldöntés pl. egy N elemű sorozatban van-e legalább K darab T tulajdonságú elem? Megszámolás-kiválasztás pl. hol van a K-adik T tulajdonságú elem? Megszámolás-keresés pl. van-e K darab T tulajdonságú elem, és ha igen, hol található a sorozatban a K-adik? Maximumkiválasztás-megszámlálás pl. hány darab maximális elem van a listában? Maximumkiválasztás-kiválogatás pl. melyek a maximális elemek a listában? (értelemszerűen az indexeket várjuk) 32

Példák tételek összeépítésére Kiválogatás-sorozatszámítás pl. adjuk össze az összes T tulajdonságú elemet! Kiválogatás-maximumkiválasztás pl. keressük meg a T tulajdonságú elemek közül a maximálisat! Kiválogatás-másolás pl. másoljuk le a sorozat T tulajdonságú elemeit (esetleg végezzünk rajtuk valamilyen elemi műveletet is)! Másolás-sorozatszámítás pl. adjuk meg a sorozat elemeinek négyzetösszegét! Másolás-maximumkiválasztás pl. adjuk meg a sorozat elemei közül azt, amelyiknek maximális az abszolútértéke! Egyéb összeépítések 33

Témakörök Strukturált programozás paradigma Alapvető programozási tételek Összetett programozási tételek Programozási tételek összeépítése Feladatok megoldása tételek segítségével 34

Néhány egyszerű példa Egy N elemű sorozat K min és K max közötti számokat tartalmaz, határozzuk meg, hogy van-e olyan szám, amelyik többször szerepel a sorozatban? hány szám szerepel többször is a sorozatban? melyik számból van a legtöbb a sorozatban? hány elemből áll a leghosszabb azonos számokból álló részsorozat? adjon megoldást a fentiekre, amennyiben a sorozat rendezett! adjon megoldást a fentiekre, amennyiben tetszőleges számok szerepelhetnek a sorozatban (K min, K max ismeretlen)! Egy NxM-es mátrix számokat tartalmaz, határozzuk meg, hogy melyik sorban van a legtöbb 0? van-e olyan sor, amelyik csak 0-t tartalmaz? van-e két olyan sor, amelyek azonos számú 0-t tartalmaznak? a legtöbb nullát tartalmazó sorok közül adjuk meg azt, ahol a 0-tól eltérő számok összege a legnagyobb! 35

Javasolt/felhasznált irodalom Fóthi Á.: Bevezetés a programozáshoz ELTE Eötvös Kiadó, 2005 Pap, Szlávi, Zsakó: µlógia19 Módszeres programozás: Programozási tételek ELTE TTK, 2002 Gregorics Tibor: A programozás alapjai - Tervezés http://people.inf.elte.hu/gt 36