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



Hasonló dokumentumok
Bánsághi Anna 2014 Bánsághi Anna 1 of 68

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

Egyszerű programozási tételek

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

PROGRAMOZÁSI TÉTELEK

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ás I. Egyszerű programozási tételek. Sergyán Szabolcs

ELEMI PROGRAMOZÁSI TÉTELEK

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

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

Ö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.

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

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

Programozási segédlet

Összetett programozási tételek

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

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

Adatbázis rendszerek Gy: Algoritmusok C-ben

Bevezetés a programozásba I.

Alkalmazott modul: Programozás. Programozási tételek, rendezések Giachetta Roberto

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

6. gyakorlat Egydimenziós numerikus tömbök kezelése, tömbi algoritmusok

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

Objektum Orientált Programozás VII.

AAO 3. Csink László 2007

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

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

Térinformatikai algoritmusok Elemi algoritmusok

Programozási tételek. Jegyzet. Összeállította: Faludi Anita 2012.

Rendezések. Sergyán Szabolcs Óbudai Egyetem Neumann János Informatikai Kar október 24.

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés. Szekvenciális fájlkezelés Fájlok használata

A 2015/2016 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

Térinformatikai algoritmusok Elemi algoritmusok

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

Közismereti informatika I. 4. előadás

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

A 2013/2014 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

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

Bevezetés a programozásba

Bevezetés a programozásba I 4. gyakorlat. PLanG: Szekvenciális fájlkezelés

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

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

Informatikai tehetséggondozás:

Felvételi tematika INFORMATIKA

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

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

Programozási tételek feladatok

A 2011/2012 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Programozás I. házi feladat

Informatikai tehetséggondozás:

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

Egyszerű programozási tételek

Programozási alapismeretek 11. előadás

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

Programozás Minta programterv a 2. házi feladathoz 1.

Visszalépéses kiválogatás

Próbaérettségi feladatsor_a NÉV: osztály Elért pont:

Műveletek mátrixokkal. Kalkulus. 2018/2019 ősz

Rendezések. A rendezési probléma: Bemenet: Kimenet: n számot tartalmazó (a 1,a 2,,a n ) sorozat

Programozás alapjai 9. előadás. Wagner György Általános Informatikai Tanszék

1. Jelölje meg az összes igaz állítást a következők közül!

A 2016/2017 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató. INFORMATIKA II. (programozás) kategória

A 2008/2009 tanévi Országos Középiskolai Tanulmányi Verseny első forduló feladatainak megoldása. INFORMATIKÁBÓL II. (programozás) kategóriában

Gyakorló feladatok az 1. nagy zárthelyire

Rekurzív algoritmusok

Informatikai tehetséggondozás:

Egész számok. pozitív egész számok: 1; 2; 3; 4;... negatív egész számok: 1; 2; 3; 4;...

Informatikai tehetséggondozás:

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

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

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

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

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

Informatikai tehetséggondozás:

ALGORITMUSOK ÉS PROBLÉMAOSZTÁLYOK (1. előadás)

PROGRAMOZÁSI NYELVEK (GYAKORLAT)

Szövegek C++ -ban, a string osztály

Struktúra nélküli adatszerkezetek

Felvételi vizsga mintatételsor Informatika írásbeli vizsga

HORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport

Egyszerű programozási tételek

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

Programozás I. zárthelyi dolgozat

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

Mohó stratégia. Feladat: Megoldás:

Tartalom. Programozási alapismeretek. 11. előadás

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

Adatszerkezetek II. 6. előadás

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

Edényrendezés. Futási idő: Tegyük fel, hogy m = n, ekkor: legjobb eset Θ(n), legrosszabb eset Θ(n 2 ), átlagos eset Θ(n).

RENDEZÉSEK, TOVÁBBI PROGRAMOZÁSI TÉTELEK

Informatikai tehetséggondozás:

Programozás Minta programterv a 1. házi feladathoz 1.

Web-programozó Web-programozó

Informatikai tehetséggondozás:

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

Programozás alapjai (ANSI C)

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

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

Átírás:

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

Programozási tételek A programozási tételek olyan általános algoritmusok, melyekkel programozás során gyakran találkozunk. Az algoritmusok általában számsorozatokkal, tömbökkel foglalkoznak, legyen tehát T egy N elemű tömb (1..N) 2

Összegzés Elmúlt hónap bevásárlásai, pl. 30-szor vásároltunk Mennyit költöttünk? Számológép segítségével Lenullázom a számológépet Következő lépéseket 30-szor végezzük Előveszem a számlát Hozzáadom az összeghez Számológép kijelzi az összeget 3

Összegzés, megoldás Változók: i, összeg /* gép nullázása*/ Összeg = 0 /* 30-szor hajtsuk végre */ Ciklus i = 1-től 30-ig /* számla hozzáadás az összeghez */ összeg = összeg + számla(i) /* összeg kijelzése */ Ki: összeg 4

Bejövő adatok: Összegzés, adatok Hány adat van? (Számlák száma) Maguk az adatok (Számlán szereplő értékek) Végzendő művelet (számlák összeadása) Kimenő adat összeg 5

Összegzés, formálisan Adott egy "N" elemű "T" sorozat. Ezen sorozat elemeinek összegét, szorzatát, unióját stb. kell előállítani. s:= F0 Ciklus i:=1...n s:=f(s,t[i]) Ki: s 6

Összegzés, feladatok Egy tömb elemeinek összegzése s:=0 Ciklus i:=1...n s:=s+t[i] Ki: s 7

Összegzés, feladatok Számoljuk ki az első N szám összegét s:=0 Ciklus i:=1...n s:=s+i Ki: s 8

Összegzés, feladatok Számoljuk ki az első N szám szorzatát s:=1 Ciklus i:=1...n s:=s*i Ki: s 9

Összegzés, feladatok Számoljuk ki egy tanuló év végi átlagát, az osztályzatai ismeretében Osztályzatok egy tömbben vannak s:=0 Ciklus i:=1...n s:=s+t[i] atlag:=s/n Ki: atlag 10

Számlálás Egy 20 betűs mondatban hány darab e betű van? Kezdetben egy e betű sincs Minden karaktert megnézünk Ha találunk egy e betűt, húzzunk egy vonalat egy lapra 11

Számlálás, megoldás Változók: i, db db := 0 Ciklus i := 1-től 20-ig ha mondat[i] == e db := db + 1 Ki: db 12

Bemenő adatok Mondat betűinek száma Számlálás, adatok A betűket tartalmazó tömb Műveletek A feltétel, milyen betűket számlálunk Művelet ami a feltételt kielégítő tömb elemekhez 1-et, a többihez 0-át rendel Kimenő adat A darabszám 13

Számlálás, formálisan Rendelkezésünkre áll egy N elemű sorozat és egy, a sorozat elemein értelmezett F tulajdonság. Az a feladatunk, hogy az F tulajdonsággal rendelkező elemeket számoljuk meg. db:= 0 Ciklus i:=1...n ha F(T[i]) akkor db = db + 1 Ki: db 14

Számlálás, feladatok Megszámolja, hogy a tömbben hány negatív szám van s:=0 Ciklus i:=1..n Ha T[i]<0 akkor s:=s+1 Ki: s 15

Számlálás, feladatok A múlt hónapban minden nap vásároltam. Hányszor vásároltam 5000 Ft felett? db:=0 Ciklus i:=1..30 /* 30 nap */ Ha ár[i]>5000 akkor db:=db+1 Ki: db 16

Számlálás, feladatok Egy kutyaversenyen kizárják azokat a kutyákat, akik a verseny első fordulójában 20 pont alatt teljesítettek. Hány ilyen kutya volt? db:=0 Ciklus i:=1..n Ha kutya[i]<20 akkor db:=db+1 Ki: db 17

Számlálás, feladatok Számoljuk meg, hogy hány B betűvel kezdődő szó van egy szavakból álló listában! db:=0 Ciklus i:=1..n szó = szavak(i) Ha szó[1]== B akkor db:=db+1 Ki: db 18

Eldöntés Egy tanuló érdemjegyei alapján szeretnénk eldönteni, hogy kitűnő-e, vagy sem. Kétféle megoldás: 1. Ha a jegyei közt van olyan, ami nem ötös, akkor nem kitűnő. 2. Ha minden jegye ötös, akkor kitűnő. 19

Eldöntés 1. Nézzük végig a jegyeket, először az elsőt, majd sorra a többit és ellenőrizzűk, hogy ötös-e. Ha találtunk olyat, ami nem ötös, akkor nem kell megnézni a további jegyeket, mert van nem ötös osztályzat, azaz nem kitűnő 20

Eldöntés 1., megoldás van=nem i:=1 /* első jeggyel kezdjük */ Ciklus amíg i <= tantárgy és jegy[i] == 5 i:=i+1 /* végignézzük a jegyeket */ van = (i<=n) ki: van 21

Bemeneti adat: Eldöntés, adatok A tantárgyak száma Jegyek tömbje Egy tulajdonság a döntéshez Kimeneti adat: Egy logikai változó, hogy van-e 22

Eldöntés 1., formálisan Adott egy N elemű sorozat és egy, a sorozat elemein értelmezett Ftulajdonság.A feladat annak az eldöntése, hogy létezik-e ilyen (Ftulajdonságú) elem. 23

Eldöntés 1., formálisan i:= 1 Ciklus amíg i<=n és nem F(T[i]) i = i + 1 van = (i<=n) ki: van Fontos feltételek sorrendje!! 24

Eldöntés 2. Nézzük végig a jegyeket, először az elsőt, majd sorra a többit és ellenőrizzűk, hogy ötös-e. Ha minden elemet megvizsgáltunk akkor kitűnő 25

Eldöntés 2., megoldás mind=nem i:=1 /* első jeggyel kezdjük */ Ciklus amíg i <= tantárgy és jegy[i] == 5 i:=i+1 /* végignézzük a jegyeket */ mind = (i>n) ki: mind 26

Eldöntés 2., formálisan i:= 1 Ciklus amíg i<=n és nem F(T[i]) i = i + 1 mind = (i>n) ki: mind 27

Eldöntés, feladatok A múlt hónapban minden nap megmértük a Duna hőmérsékletét. Döntsük el, hogy a víz hőmérséklete folyamatosan emelkedett-e? i:= 1 Ciklus amíg i<n és ho[i] < ho[i+1] i = i + 1 mind = (i >= N) ki: mind 28

Eldöntés, feladatok A múlt héten minden nap vásároltunk. Volt-e olyan nap, hogy pontosan 2000 Ft-t fizettünk? i:= 1 Ciklus amíg i<=n és nem ar[i] == 2000 i = i + 1 van = (i <= N) ki: van 29

Kiválasztás Egy osztály matematika dolgozatai közül válasszuk ki az egyik ötös dolgozatot. Nézzük végig a dolgozatokat, először az elsőt, majd sorra a többit, amíg nem találunk ötös dolgozatot Amikor megtaláltunk egy ötöst, akkor ő lesz a kiválasztott. 30

Kiválasztás, megoldás i:=1 /* első jeggyel kezdjük */ Ciklus amíg i <= dolgozatok és jegy[i]!= 5 i:=i+1 /* végignézzük a jegyeket */ sorszám = i 31

Bemeneti adatok: Kiválasztás, adatok Dolgozatok száma A jegyek tömbje Egy tulajdonság, mely minden dolgozatra alkalmazható FONTOS: van legalább egy 5-ös dolgozat!!! Kimenet A dolgozat sorszáma 32

Kiválasztás, formálisan Adott egy N elemű sorozat és egy, a sorozat elemein értelmezett Ftulajdonság. Azt is tudjuk, hogy a sorozatban van legalább egy Ftulajdonságú elem. A feladat ezen elem sorszámának meghatározása. 33

Kiválasztás, formálisan Az algoritmus megadja, hogy a tömbben egy bizonyos elem hol (hányadik helyen) van. Csak akkor működik, ha biztosan van ilyen elem i:=1 Ciklus amíg nem F(T[i]) i:=i+1 ki: i 34

Kiválasztás, feladatok A múlt hónapban minden nap megmértük a Duna hőmérsékletét. Adjunk meg egy napot amikor a hőmérséklet nem érte el a 20 fokot! i:= 1 Ciklus amíg i<=n és ho[i] >= 20 i = i + 1 sorszam=i ki: sorszam Mi van ha nem volt ilyen nap? 35

Keresés Az előzőnél biztonságosabb algoritmus: megadja, hogy van-e olyan elem, és ha igen, hányadik. (többféle kereső algoritmus van) 36

Keresés Ismerjük egy üzlet januári napi bevételeit. Adjunk meg egy olyan napot -ha van-, amikor a bevétel több volt, mint 20000Ft. Nézzük végig a bevételeket, először az elsőt, majd sorra a többit, amíg nem találunk 20000Ft-nál nagyobbat. Ha találtunk ilyet, akkor van megoldás, és a megoldás a megtalált bevétel sorszáma különben nincs megoldás 37

Keresés, megoldás i:=1 Ciklus amíg i<=n_bevetel és bevetel[i]<=20000 i:=i+1 van=(i<=n_bevetel) Ha van sorszám = i ki: van, sorszám 38

Bemeneti adat: Keresés, adatok Bevételek száma A bevételek tömbje Egy tulajdonság a kereséshez Kimenet Van: logikai változó Sorszám: annak az elemnek a száma amit találtunk 39

Keresés, formálisan Lineáris keresés (keresés rendezetlen sorozatban) Adott egy N elemű sorozat és egy, a sorozaton értelmezett Ftulajdonság. A feladat : keressünk a sorozatban egy adott Ftulajdonságú elemet. (Nem biztos, hogy a sorozatban van ilyen elem.) 40

Keresés, formálisan i:=1 Ciklus amíg i<=n és nem( F(T[i]) ) i:=i+1 van = (i <= N) Ha van akkor sorszám = i 41

Keresés, formálisan Ha összetett a feltétel, akkor cikluson kívűl is számolhatjuk i := 0 felt := hamis Ciklus amíg i<=n és nem( felt ) i:=i+1 felt := F(T[i]) van := felt Ha van akkor sorszám := i 42

Keresés, feladatok Adjuk meg, hogy januárban mikor van, ha van, Mária nap! i:=1 Ciklus amíg i<=n és nevnap[i]!= Maria i:=i+1 van = (i <= N) Ha van akkor sorszám = i 43

Logaritmikus keresés Adott egy N elemű rendezett T() sorozat és egy keresett eleme (X). A feladat : keressünk a sorozatban az adott X elemet. (Nem biztos, hogy a sorozatban van ilyen elem.) 44

Logaritmikus keresés ah := 1 fh := N Ciklus k := (ah + fh)/2 egész része ha A(k) < X, akkor ah := k + 1 ha A(k) > X, akkor fh := k - 1 Ciklus amíg ah > fh vagy A(k)=X VAN := (A(k) == X) Ha VAN akkor SORSZÁM:=k 45

Maximum kiválasztás A térképről kiírtunk hegy magasságokat. Válasszuk ki a legmagasabb hegyet! Megjegyzem az első hegy magasságát. Ezt tekintem a legmagasabbnak. A többi hegyet sorra végignézem: Ha valamelyik magasabb, mint az eddigi legmagasabb, akkor az eddigi legmagasabbat elfelejtem, és az újat jegyzem meg. A végén pont a legmagasabb hegyet jegyeztük meg. 46

Maximum kiválasztás m := 1 maxert := magassag(m) Ciklus i:=2..n Ha magassag[i] > maxert akkor m:=i maxert:=magassag[i] Ki: m, maxert m: a pillanatnyilag talált legnagyobb elem helyét mutatja 47

Maximum kiválasztás, adatok Bemeneti adat Ismerni kell az adatok számát Az adatok a magassag tömbben vannak Kimenő adat A legmagasabb hegy indexe A legmagasabb hegy magassága Gyakorlatban, lehet hogy csak az egyiket határozzuk meg 48

Maximum kiválasztás, formálisan Adott egy "N" elemű "T" sorozat és egy, a sorozat elemei közt értelmezett kisebb-nagyobb reláció. A feladat ezen sorozat legnagyobb eleme sorszámának meghatározása. (Néha az elem értékére, az úgynevezett maximumra is szükség lehet). 49

Maximum kiválasztás, formálisan m := 1 maxert := T(m) Ciklus i:=2..n Ha T[i] > maxert akkor m:=i maxert:=t[i] Ki: m, maxert m: a pillanatnyilag talált legnagyobb elem helyét mutatja 50

Összetett tételek 51

Kiválogatás Ez az algoritmus egy tömb bizonyos tulajdonságú elemeit teszi egy másik tömbbe. db változó számolja, hogy a másik tömbbe hány elem került válogassuk ki a negatív számokat. Az eredmény a B tömbben lesz deklarációnál a B tömböt N eleműre kell választani, hacsak nem tudjuk előre, hány negatív szám van T-ben 52

Kiválogatás db:=0 Ciklus i:=1..n Ha T[i]<0 akkor db:=db+1 B[db]:=T[i] Ha vége 53

Szétválogatás Kiválogatáshoz hasonló, de a nem megfelelő elemeket is tömbbe tesszük Szétválogatás két tömbbe, mindkét tömb mérete azonos dbb:=0 dbc:=0 Ciklus i:=1..n Ha T[i]<0 akkor dbb:=dbb+1, B[dbb]:=T[i] különben dbc:=dbc+1, C[dbc]:=T[i] 54

Metszet két tömb (A[1..N] és B [1..M]) azonos elemeinek kiválogatása C tömbbe Az algoritmus lényege: menjünk végik A tömb elemein, és válogassuk ki azokat (kiválogatás), melyek szerepelnek B-ben (eldöntés). Visszavezethető a korábbi feladatokra C maximális elemszáma N és M közül a kisebbik 55

Metszet db:=0 Ciklus i:=1..n j:=1 Ciklus amíg j<=m és B[j]<>A[i] j:=j+1 Ha j<=m akkor db:=db+1, C[db]:=A[i] 56

Unió A és B tömb összes elemét C tömbbe tenni Tegyük be C-be A összes elemét, majd B-ből azokat, melyek nem szerepelnek A-ban. C elemszáma legfeljebb N+M. 57

Unió Ciklus i:=1..n C[i]:=A[i] db:=n Ciklus j:=1..m i:=1 Ciklus amíg i<=n és B[j]<>A[i] i:=i+1 Ha i>n akkor db:=db+1, C[db]:=B[j] 58

Sokféle van Rendezés Különböző adatokra Különböző rendezettségre stb 59

Rendezés maximum kiválasztással Az elv: kiválasztjuk a tömb legnagyobb elemét, és berakjuk a tömb végére (vagyis kicseréljük az utolsó elemmel) Ezt az eljárást ismételjük a maradék tömbre i változó adja meg, hogy hányadik elem fog a helyére kerülni A Csere(i,m) eljárás kicseréli a tömb i. és m. elemét 60

Rendezés maximum kiválasztással Ciklus i:=n..2 m:=1 Ciklus j:=2..i Ha T[j]>T[m] akkor m:=j Csere(i,m) 61

Buborékos rendezés Végigmegy a tömbön, és ha szomszédos elemeknél rossz a sorrend, megcseréli őket. Ez a csere, mint egy buborék, végighalad a tömbön, és a legnagyobb elemet biztosan a tömb végére teszi. i változó ismét azt jelzi, hányadik elem kerül a helyére. 62

Buborékos rendezés Ciklus i:=n..2 Ciklus j:=1..i-1 Ha T[J]>T[J+1] akkor Csere(j,j+1) 63