Programozási alapismeretek 10. előadás

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

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

Párhuzamos programozás

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

Lineáris algebra gyakorlat

Érettségi feladatok Algoritmusok egydimenziós tömbökkel (vektorokkal) 1/6. Alapműveletek

Programozás I gyakorlat

Programozási tételek

Egyszerű programozási tételek

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

1. forduló. MEGOLDÁSOK Pontszerző Matematikaverseny 2015/2016-os tanév

A Hozzárendelési feladat megoldása Magyar-módszerrel

Minta programterv a 1. házi feladathoz

Diszkrét matematika I. gyakorlat

KOVÁCS BÉLA, MATEMATIKA I.

Emelt szintű érettségi feladatsorok és megoldásaik Összeállította: Szászné Simon Judit; dátum: november. I. rész

MATLAB. 4. gyakorlat. Lineáris egyenletrendszerek, leképezések

GAZDASÁGMATEMATIKA KÖZÉPHALADÓ SZINTEN

1. Nyomásmérővel mérjük egy gőzvezeték nyomását. A hőmérő méréstartománya 0,00 250,00 kpa,

Programozás. A programkészítés lépései. Program = egy feladat megoldására szolgáló, a számítógép számára értelmezhető utasítássorozat.

INFORMATIKAI ALAPISMERETEK

Digitális technika (VIMIAA01) Laboratórium 1

Bevezetés a lágy számítás módszereibe

Vektoros elemzés végrehajtása QGIS GRASS moduljával 1.7 dr. Siki Zoltán

Bevezetés az ökonometriába

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

[GVMGS11MNC] Gazdaságstatisztika

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

PROGRAMOZÁSI NYELVEK (GYAKORLAT)

G Szabályfelismerés feladatcsomag

A döntő feladatai. valós számok!

Arany Dániel Matematikai Tanulóverseny 2011/2012-es tanév első (iskolai) forduló haladók I. kategória

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

Analízis elo adások. Vajda István október 3. Neumann János Informatika Kar Óbudai Egyetem. Vajda István (Óbudai Egyetem)

MATEMATIKA HETI 3 ÓRA

Játékok (domináns stratégia, alkalmazása

Adatbázis-kezelés. 7. SQL Táblák összekapcsolása

Rendezési algoritmusok belső rendezés külső rendezés

Azonosító jel: Matematika emelt szint

Jelek tanulmányozása

Egyre nagyobb profitot generálnak a mobiltelefonnal végzett vásárlások, és egyre többet hezitálunk vásárlás előtt

Prop-Tech. Vázmérő. Telepítési és eltávolítási útmutató

Fordítóprogramok Készítette: Nagy Krisztián

FEGYVERNEKI SÁNDOR, Valószínűség-sZÁMÍTÁs És MATEMATIKAI

EPER E-KATA integráció

Differenciál egyenletek (rövid áttekintés) d x 2

Lineáris algebra és a rang fogalma (el adásvázlat, május 29.) Maróti Miklós

Beszámoló: a kompetenciamérés eredményének javítását célzó intézkedési tervben foglaltak megvalósításáról. Őcsény, november 20.

BOLYAI MATEMATIKA CSAPATVERSENY DÖNTŐ osztály

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

Vodafone ReadyPay. Használati útmutató

[MECHANIKA- HAJLÍTÁS]

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK KÖZÉPSZINT Függvények

Mágneses szuszceptibilitás vizsgálata

IV.5. GARÁZS 1. A feladatsor jellemzői

Igazgató: Szabó Győzőné

Operációkutatás. 2. konzultáció: Lineáris programozás (2. rész) Feladattípusok

2004. december 1. Irodalom

Nevezetes függvények

Lineáris algebra jegyzet

BOLYAI MATEMATIKA CSAPATVERSENY FŐVÁROSI DÖNTŐ SZÓBELI (2005. NOVEMBER 26.) 5. osztály

Számelmélet I. 1. A tantárgy általános célja és specifikus célkitűzései

MATEMATIKA ÍRÁSBELI VIZSGA május 3.

Művesekezelés anyagainak beszerzése a Semmelweis Egyetem Transzplantációs és Sebészeti Klinika részére

BOLYAI MATEMATIKA CSAPATVERSENY ORSZÁGOS DÖNTŐ SZÓBELI (2012. NOVEMBER 24.) 3. osztály

Fábián Zoltán Hálózatok elmélet

Autóipari beágyazott rendszerek. Fedélzeti elektromos rendszer

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

Útmutató a vízumkérő lap kitöltéséhez

MATEMATIKA JAVÍTÁSI-ÉRTÉKELÉSI ÚTMUTATÓ

Statisztika március 11. A csoport Neptun kód

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

Informatikai tehetséggondozás:

MBLK12: Relációk és műveletek (levelező) (előadásvázlat) Maróti Miklós, Kátai-Urbán Kamilla

Adatgyőjtés, mérési alapok, a környezetgazdálkodás fontosabb mőszerei

Felvételi 2013 Felvételi tájékoztató 2013

Lécgerenda. 1. ábra. 2. ábra

Programozási alapismeretek beadandó feladat: ProgAlap beadandó feladatok téma 99. feladat 1

Időzített rendszerek és az UPPAAL

Házi dolgozat. Minta a házi dolgozat formai és tartalmi követelményeihez. Készítette: (név+osztály) Iskola: (az iskola teljes neve)

Dr. Balogh Albert: A statisztikai adatfeldolgozás néhány érdekessége

Többfelhasználós adatbázis környezetek, tranzakciók, internetes megoldások

Jarabin Kinga LÁBNYOMOK

Az aktiválódásoknak azonban itt még nincs vége, ugyanis az aktiválódások 30 évenként ismétlődnek!

Tájékoztató a szerződés módosításáról_munkaruházati termékek szállítása (5. rész)

Active watch MT849. Használati útmutató

KOVÁCS BÉLA, MATEMATIKA I.

MATEMATIKA PRÓBAÉRETTSÉGI MEGOLDÓKULCS EMELT SZINT

ÁFA felhasználói dokumentum Lezárva:

Számítógépes vírusok

Dr. Schuster György február 21. Real-time operációs rendszerek RTOS

V. Kétszemélyes játékok

Földrajzi helymeghatározás

SZÁMÍTÓGÉPES NYELVI ADATBÁZISOK

ORSZÁGOS KÖRNYEZETEGÉSZSÉGÜGYI INTÉZET

ingyenes tanulmány GOOGLE INSIGHTS FOR SEARCH

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

ÚTMUTATÓ A KONTROLL ADATSZOLGÁLTATÁS ELKÉSZÍTÉSÉHEZ (2012-TŐL)

Gépi forgácsoló Gépi forgácsoló

Adatok ábrázolása, adattípusok. Összefoglalás

Átírás:

Programozási alapismeretek 10. előadás

Tartalom Kiválogatás + összegzés Kiválogatás + maximumkiválasztás Maximumkiválasztás + kiválogatás Eldöntés + megszámolás Eldöntés + eldöntés Sorozatszámítás mátrixra Eldöntés mátrixra Tesztek előállítása 2/49

Kiválogatás + összegzés Feladat: Adott tulajdonságú elemek összege feltételes összegzés. Specifikáció: Bemenet: Egész, XTömb[1..:Egész] Kimenet: SEgész Előfeltétel: 0 Utófeltétel: S= i1 T(X[i]) X[i] 3/49

Kiválogatás + összegzés Specifikáció a : Utófeltétel a : és S= Specifikáció b : Utófeltétel b : és S= Db i1 Db i1 X[Y[i]] Y[i] Db,Y Db,Y Kiválogat T Kiválogat i T X i1 Xi 1 i i Xi 4/49

Kiválogatás + összegzés 1. megoldási ötlet a : Válogassuk ki az adott tulajdonságúakat, majd utána adjuk össze őket! Db:=0 i=1.. T(X[i]) I Db:=Db+1 Y[Db]:=i S:=0 i=1..db S:=S+X[Y[i]] Változó i:egész 5/49

Kiválogatás + összegzés 1. megoldási ötlet b : Válogassuk ki az adott tulajdonságúakat, majd utána adjuk össze őket! Db:=0 i=1.. T(X[i]) I Db:=Db+1 Y[Db]:=X[i] S:=0 i=1..db S:=S+Y[i] Változó i:egész 6/49

Kiválogatás + összegzés 2. megoldási ötlet: Kiválogatás helyett azonnal adjuk össze a megfelelő elemeket! nincs elem-/indexfeljegyzés (Y-ban) + nincs számlálás (Db-ben) S:=0 i=1.. I T(X[i]) S:=S+X[i] Változ i:eg 7/49

Kiválogatás + maximumkiválasztás Feladat: Adott tulajdonságú elemek maximuma feltételes maximumkeresés. Specifikáció: Bemenet: :Egész, X:Tömb[1..:Valami] Kimenet: MaxI:Egész, Van:Logikai Előfeltétel: 0 Utófeltétel: Van=i (1 i ): T(X[i]) és Van( 1 MaxI és T(X[MaxI]) és i(1 i ): T(X[i])X[MaxI] X[i] ) 8/49

Kiválogatás + maximumkiválasztás Specifikáció 2 : Utófeltétel 2 : Van, MaxI MaxInd i T X 1 i Xi 9/49

Kiválogatás + maximumkiválasztás A megoldás felé: Specifikáció : Utófeltétel : és Db,Y Van=Db>0 és Van( 1 MaxI és T(X[MaxI]) és Db Kiválogat Kiolvasható az algoritmikus ötlet: Válogassuk ki az adott tulajdonságúakat, majd keressünk maximumot, ha van értelme! MaxI MaxInd i1 i T X 1 i X Y i i 10/49

Kiválogatás + maximumkiválasztás 1. megoldás algoritmusa: Válogassuk ki az adott tulajdonságúakat, majd! Db:=0 i=1.. T(X[i]) I Db:=Db+1 Y[Db]:=i Van:=Db>0 Változó i:egész 11/49

Kiválogatás + maximumkiválasztás 1. megoldása algoritmusa:, majd keressünk maximumot, ha van értelme! Van MaxI:=Y[1] i=2..db X[Y[i]]>X[MaxI] I MaxI:=Y[i] I 12/49

Kiválogatás + maximumkiválasztás 2. megoldási ötlet (és algoritmusa): Induljunk ki a specifikációban észrevett tételekből: a kiválogatás helyett keressük meg az első T-tulajdonságút, i:=1 i és T(X[i]) i:=i+1 Van:=i Változó i:egész 13/49

Kiválogatás + maximumkiválasztás 2. megoldási ötlet (és algoritmusa): majd válasszuk ki az ilyenek maximumát! Van MaxI:=i i=i+1.. I T(X[i]) és X[i]>X[MaxI] MaxI:=i I 14/49

Kiválogatás + maximumkiválasztás 3. megoldási ötlet (és algoritmusa): Kiválogatás, ill. keresés helyett azonnal válasszuk ki a maximumot! Kell egy fiktív 0. elem a maximumkiválasztáshoz, ami kisebb minden normál elemnél. X[0]:=- MaxI:=0 i=1.. I T(X[i]) és X[i]>X[MaxI] MaxI:=i Van:=MaxI>0 Változó i:egész 15/49

Maximumkiválasztás + kiválogatás Feladat: Összes maximális elem kiválogatása. Specifikáció: Bemenet: Egész,X Tömb[1..:Valami] Kimenet: DbEgész, MaxITömb[1..Db:Egész] Előfeltétel: >0 Utófeltétel: Db = i1 1 X[i] Max és Max=X[MaxI[1]] és i(1 i Db): j(1 j ): X[MaxI[i]] X[j] és MaxI(1,2,,) 16/49

Maximumkiválasztás + kiválogatás Feladat: Összes maximális elem kiválogatása. Specifikáció: Bemenet: Egész, XTömb[1..:Valami] Kimenet: DbEgész, MaxITömb[1..Db:Egész] Előfeltétel: >0 Utófeltétel: Max= MaxÉrt X[i] Db, MaxI i=1 Kiválogat X i1 i Max és i 17/49

Maximumkiválasztás + kiválogatás 1. megoldási ötlet: Határozzuk meg a maximumot, majd válogassuk ki a vele egyenlőeket! Max:=X[1] i=2.. X[i]>Max I Max:=X[i] Változó Max:Valami i:egész 18/49

Maximumkiválasztás + kiválogatás 1. megoldási ötlet: Határozzuk meg a maximumot, majd válogassuk ki a vele egyenlőeket! Db:=0 I Db:=Db+1 MaxI[Db]:=i i=1.. X[i]=Max 19/49

Maximumkiválasztás + kiválogatás 2. megoldási ötlet: A pillanatnyi maximálissal egyenlőeket azonnal válogassuk ki! Db:=1 MaxI[1]:=1 Max:=X[1] i=2.. I X[i]>Max X[i]=Max I Db:=1 Db:=Db+1 MaxI[1]:=i MaxI[Db]:=i Max:=X[i] Változó Max:Valami i:egész 20/49

Eldöntés + megszámolás Feladat: Van-e egy sorozatban legalább K darab adott tulajdonságú elem? Specifikáció: Bemenet:,KEgész, XTömb[1..:Valami] Kimenet: VanLogikai Előfeltétel: 0 [és K>0] Utófeltétel: db= 1 i1 T(X[i]) és Van=db K 21/49

Eldöntés + megszámolás 1. megoldási ötlet: Számoljuk meg, hogy hány adott tulajdonságú van, majd nézzük meg, hogy ez legalább K-e! (Azaz valójában nincs: eldöntés tétel!) db:=0 i=1.. T(X[i]) I db:=db+1 Van:=db K Változó i:egész 22/49

Eldöntés + megszámolás 2. megoldási ötlet: Ha már találtunk K darab adott tulajdonságút, akkor ne nézzük tovább! db:=0 i:=1 i és db<k T(X[i]) I db:=db+1 i:=i+1 Van:=db=K Változó i:egész 23/49

Keresés + megszámolás Feladat: Melyik egy sorozatban a K. adott tulajdonságú elem (ha van egyáltalán)? Specifikáció: Bemenet:,KEgész, XTömb[1..:Valami] Kimenet: VanLogikai, KIEgész Előfeltétel: 0 és K>0 Utófeltétel: Van=i(1i): Van 1KI és KI j1 T(X[j]) 1 i j1 T(X[j]) 1 =K és =K és T(X[KI]) 24/49

Keresés + megszámolás 1. megoldási ötlet: Az előbbi ötlet: számoljuk meg, hogy hány adott tulajdonságú van, majd nézzük meg, hogy ez legalább K-e kevés, még hátra van a K. újbóli megkeresése A működőnek látszó ötlet: a megszámolás helyett kiválogatás kell és a keresésre nincs szükség de ez is túl hosszadalmas! 25/49

Keresés + megszámolás 2. megoldási ötlet: Ha már találtunk K darab adott tulajdonságút, akkor ne nézzük tovább: keresés a K.-ig. db:=0 i:=1 i és db<k T(X[i]) I db:=db+1 i:=i+1 Van:=db=K Változó i:egész 26/49

Keresés + megszámolás 2. megoldási ötlet: Ha megtaláltunk a K.-kat, akkor jegyezzük föl az indexét! I Van KI:=i-1 27/49

Eldöntés + eldöntés Feladat: Van-e két sorozatnak közös eleme? Specifikáció: Bemenet:,MEgész, XTömb[1..:Valami], YTömb[1..M:Valami] Kimenet: VanLogikai Előfeltétel: 0 és M0 Utófeltétel: Van=i(1 i ), j(1 j M): X[i]=Y[j] Utófeltétel : Van i1 M j1 X i Yj 28/49

Eldöntés + eldöntés 1. megoldási ötlet: Határozzuk meg a két sorozat közös elemeit (metszet), s ha ennek elemszáma legalább 1, akkor van közös elem! Specifikáció: Az utófeltétel igazítása : a metszet részeredménye volt: DbEgész a módosított utófeltétel: metszet utófeltétele és Van=Db>0. Megjegyzés: A metszet = kiválogatás + eldöntés 29/49

Eldöntés + eldöntés 2. megoldási ötlet: Ha már találtunk 1 darab közös elemet, akkor ne nézzük tovább! i:=0 Van:=Hamis i< és nem Van i:=i+1 j:=1 j M és X[i] Y[j] j:=j+1 Van:=j M Változó i,j:egész 31/49

Összegzés mátrixra Feladat: Egy mátrix elemeinek összege. Specifikáció: Bemenet:,MEgész, XTömb[1..,1..M:Egész] Kimenet: SEgész Előfeltétel:,M0 Utófeltétel: S= X[i, j] i1 M j1 32/49

Összegzés mátrixra Algoritmus: A megoldás lényegében csak abban különbözik az alapváltozattól, hogy a mátrix miatt két egymásba ágyazott ciklusra van szükség. S:=0 i=1.. j=1..m S:=S+X[i,j] Változó i,j:egész 33/49

Eldöntés mátrixra Feladat: Van-e egy mátrixban adott tulajdonságú elem? Specifikáció: Bemenet:,MEgész, XTömb[1..,1..M:Valami] Kimenet: VanLogikai Előfeltétel:,M0 Utófeltétel: Van=i(1 i ), j(1 j M): T(X[i,j]) 34/49

Eldöntés mátrixra Algoritmus: Az alapváltozathoz képest itt meg kell fogalmazni a mátrix elemein való nem feltétlenül végighaladást, soronként, balról jobbra! i:=1 j:=1 I i és nem T(X[i,j]) j<m j:=j+1 Van:= i j:=1 i:=i+1 Változó i,j:egész 35/49

Eldöntés mátrixra Algoritmus: Az alapváltozathoz képest itt meg kell fogalmazni a mátrix elemein való nem feltétlenül végighaladást, soronként, balról jobbra! i:=1 j:=1 I i és nem T(X[i,j]) j<m j:=j+1 Van:= i j:=1 i:=i+1 Változó i,j:egész 36/49

Eldöntés mátrixra Algoritmus: Az alapváltozathoz képest itt meg kell fogalmazni a mátrix elemein való nem feltétlenül végighaladást, soronként, balról jobbra! i:=1 j:=1 I i és nem T(X[i,j]) j<m j:=j+1 Van:= i j:=1 i:=i+1 Változó i,j:egész 37/49

Eldöntés mátrixra Algoritmus: Az alapváltozathoz képest itt meg kell fogalmazni a mátrix elemein való nem feltétlenül végighaladást, soronként, balról jobbra! i:=1 j:=1 I i és nem T(X[i,j]) j<m j:=j+1 Van:= i j:=1 i:=i+1 Változó i,j:egész 38/49

11 13 15 17 19 21 23 25 27 29 31 33 35 37 39 41 43 45 47 49 Tesztek előállítása Feladat (teszteléshez): Egy repülőgéppel Európából Amerikába repültünk. Az út során X kilométerenként mértük a felszín tengerszint feletti magasságát (0). 0 magasságot ott mértünk, ahol tenger van, >0-t pedig ott, ahol szárazföld. Adjuk meg a szigeteket! 120 100 80 60 40 20 0 1 3 5 7 9 39/49

Tesztek előállítása Specifikáció Bemenet: Egész, MagTömb[1..:Egész] Kimenet: DbEgész, K,VTömb[1..Db:Egész] Kis teszteket készíthetünk a tesztelési elveknek megfelelően, például: =3, Mag=(1,0,1) nincs sziget =5, Mag=(1,0,1,0,1) egy sziget =7, Mag=(1,0,1,0,1,0,1) több sziget =7, Mag=(1,0,1,1,1,0,1) hosszabb sziget Hogyan készítünk nagy teszteket? 40/49

Szabályos tesztek Készíthetünk szabályos teszteket egyszerű ciklusokkal. Például így: :=1000 i=1..10 Mag[i]:=11 i i=11..900 Mag[i]:=0 i=901.. Mag[i]:=i 900 Változó i:egész Európa tenger Amerika 41/49

Véletlen tesztek (alapok véletlenszámok) A véletlenszámokat a számítógép egy algoritmussal állítja elő egy kezdőszámból kiindulva. x 0 f(x 0 )=x 1 f(x 1 )=x 2 A véletlenszerűséghez megfelelő függvény és jó kezdőszám szükséges. Kezdőszám: (pl.) a belső órából vett érték. Függvény (az ún. lineáris kongruencia módszernél): f(x) = (A*x+B) Mod M, ahol A, B és M a függvény belső konstansai. 42/49

Véletlen tesztek (alapok C++) C++: rand() véletlen egész számot ad 0 és egy maximális érték (RAD_MAX) között. srand(szám) kezdőértéket állít be. Véletlen(a..b){a,,b} v=rand() % (b-a+1)+a Véletlen(){1,,} v=rand() % +1 véletlenszám[0,1)valós A generátor használata kockadobásra: v=rand()/(rad_max+1.0) #include <time.h> srand(time(ull)); i=rand() % 6 +1; 43/49

Véletlen tesztek Véletlen tesztekhez használjunk véletlenszámokat! Például így: :=1000 M:=Véletlen(10) i=1..m Mag[i]:=Véletlen(5..10) i=m+1..900 véletlenszám<0.5 I Mag[i]:=0 Mag[i]:=1 i=901.. Mag[i]:=Véletlen(3..8) Változó i:egész Európa tenger és szigetek Amerika 44/49

Specifikációs komment: Az előbbi algoritmus általánosítása! Kód: Véletlen tesztek (Példa C++) Fájlkezeléshez 45/49

Függvényprototípusok Kód: Véletlen tesztek (Példa C++) Főprogram 46/49

A lényegi eljárás Kód: Véletlen tesztek (Példa C++) 47/49

Alprogramok implementációja Kód: Véletlen tesztek (Példa C++) Kód jegyzetként 48/49

Véletlen tesztek (Példa C++) Az eredményfájl és elemzése: Adatfájl jegyzetként 49/49

Programozási alapismeretek 10. előadás vége