I. RÉSZ PROGRAMOZÁSI FOGALMAK
|
|
- Zsigmond Molnár
- 8 évvel ezelőtt
- Látták:
Átírás
1 I. RÉSZ PROGRAMOZÁSI FOGALMAK Azokat a gondolkodási formákat, alapelveket, valamint az érvényesítésükhöz szükséges eszközöket, amelyeket rendszeresen alkalmazunk a programozási feladatok megoldásánál, programozási módszereknek hívjuk. Egy programozási módszertan célja az, hogy összegyűjtse, rendszerezze azokat a módszereket, amelyek hathatós segítséget nyújtanak a feladatokat megoldó programok készítéséhez. Mivel azonban nem feltétlenül gondolkodunk egyformán, természetes, hogy különféle módszerekkel (vagy akár módszer nélkül) is lehet programozni. Ennek megfelelően többféle programozási módszertan létezik. Ebben a könyvben is felfedezhető egy sajátos programozási gondolkodásmód, amely az alábbi elvekre épül: A programtervezés a megoldandó problémára összpontosít, nem pedig az elkészítendő programra. A programtervezést egy olyan folyamatnak tekintjük, amely során a feladatot újabb és újabb, egyre részletesebb formában fogalmazzuk meg, miáltal egyre közelebb kerülünk ahhoz a számítógépes környezethez, amelyben majd a feladatot megoldó program működik. Ehhez azt vizsgáljuk, hogyan kell elemezni egy feladatot, hogyan kell felbontani részekre, majd a részeket továbbfinomítani egészen addig, amíg olyan egyszerű részfeladatokhoz jutunk, amelyekre már könnyen adhatók azokat megoldó programok. Ennek a könyvnek a gyakorlati jelentősége ezeknek a finomító (más szóval részletező, részekre bontó, idegen szóval dekomponáló) technikáknak a bemutatásában van. A programtervezés független a programozási környezettől. Elsősorban az emberi gondolkodáshoz illeszkedik, hiszen a programozás egy feladatmegoldó emberi tevékenység. Természetes azonban az, hogy a módszertannak gondoskodnia kell arról, hogy terméke, a program ne szakadjon el a valóságos programozási környezetektől, bármilyen számítógépre egyszerűen átvihető, alkalmazható legyen. Ezért a programtervezéshez olyan a valóságtól kellően elvonatkoztatott fogalmakat vezetünk be és használunk, amelyek jól modellezik a különféle számítógépes környezeteket. A programtervezésnél alkalmazott módszerek helyessége matematikai alapossággal igazolható. Ehhez egy sajátos eszköztárat, egy matematikai modellt állíthatunk fel, és ennek keretében vezetjük be a különféle programozási fogalmakat. Ennek a könyvnek nem célja a fent vázolt matematikai modellt ismertetni. Mi csak azt a technológiát mutatjuk be, amelynek helyessége a matematikai modell keretében igazolható. Ebben a részben csak ízelítőként mutatjuk meg, hogyan definiálja ez a modell a legfontosabb programozási fogalmakat. 3
2 1. Programozási alapfogalmak 1. Alapfogalmak Induljunk ki az előszó azon megállapításából, amely szerint a programozás egy olyan tevékenység, amikor egy feladat megoldására programot készítünk. Ennek értelmében a programozás három alapfogalomra épül: a feladat, a program és a megoldás fogalmaira. Mi az a feladat, mi az a program, mit jelent az, hogy egy program megold egy feladatot? Ebben a fejezetben erre adjuk meg a választ Az adatok típusa Egy feladat megoldása azzal kezdődik, hogy megismerkedünk azzal az információval, amelyet a probléma megfogalmazása tartalmaz. Nem újdonság, nemcsak a programozási feladatokra érvényes, hogy a megoldás kulcsa a feladat kitűzése során megjelenő információ értelmezésében, rendszerezésében és leírásában rejlik. Feladatokkal mindenki találkozott már. A továbbiakban felvetődő gondolatok szemléltetése kedvéért most egy iskolai feladatot tűzünk ki. Egy nyolc kilogrammos, zöld szemű sziámi macska sétálgat egy belvárosi bérház negyedik emeleti ablakpárkányán. Az eső zuhog, így az ablakpárkány síkos. A cica megcsúszik, majd a mintegy 12.8 méteres magasságból lezuhant. Szerencsére a talpára esik! Mekkora földet éréskor a (becsapódási) sebessége? A feladat által közvetített információ első pillantásra igen összetett. Vannak lényeges és lényegtelen elemei; szerepelnek közöttük konkrét értékeket hordozó adatok és az adatok közötti kapcsolatokat leíró összefüggések; van, ami közvetlenül a feladat szövegéből olvasható ki, de van, ami rejtett, és csak a szövegkörnyezetből következtethetünk rá. A macskás feladatban lényegtelen adat például a macska szemének színe, hiszen a kérdés megválaszolása, azaz a becsapódási sebesség kiszámolása szempontjából ez nem fontos. Lényeges, kezdetben megadandó, úgynevezett bemeneti adat viszont a magasság, ahonnan a cica leesett. A kinematikát jól ismerők számára nyilvánvaló, hogy egy zuhanó test becsapódási sebességének kiszámolásához nincs szükség a test tömegére sem. Feltételezve ugyanis azt, hogy a macskának pontszerű teste a Földön csapódik be, a becsapódás sebességét a feladatban közvetlenül nem említett, tehát rejtett számolhatjuk ki. v 2 g h képlet (h a magasság, g a nehézségi gyorsulás) segítségével Itt a nehézségi gyorsulás is egy rejtett adat, amelynek az értékét 2 állandóként10 m/ s -nek vehetjük, ennek megfelelően a fenti képlet v 20 h -ra módosul. Abban természetesen van némi szabadságunk, hogy a feladat szövegében nem pontosan leírt elemeket hogyan értelmezzük. Például a nehézségi gyorsulást is kezelhetnénk bemeneti adatként ugyanúgy, mint a magasságot. Sőt magát a becsapódási sebesség kiszámításának képletét is be lehetne adatként kérni annak minden paraméterével (pl. nehézségi gyorsulással, súrlódási együtthatóval, stb.) együtt, ha a problémát nemcsak a fent leírt egyszerűsítés (pontszerű test) feltételezése mellett akarnánk megoldani Ezek és az ehhez hasonló eldöntendő kérdések teszik a feladat megértését már egy ilyen viszonylag egyszerű példánál is bonyolulttá. A feladat elemzését a benne szereplő lényeges adatok összegyűjtésével kezdjük, és az adatokat a tulajdonságaikkal jellemezzük. Egy adatnak igen fontos tulajdonsága az értéke. A példában szereplő 4
3 1.1. Az adatok típusa magasságnak az értéke 12.8 méter. Ez egy úgynevezett bemeneti (input) adat, amelynek értékét feltétlenül ismerni kell ahhoz, hogy a feltett kérdésre válaszolhassunk. Sokszor kézenfekvő a kitűzött feladatnak egy olyan általánosítása, amikor a bemeneti adathoz nem egy konkrét értéket rendelünk, hanem egy tetszőlegesen rögzített kezdeti értéket. Ehhez fontos tudni azt, hogy milyen értékek jöhetnek egyáltalán szóba; melyek lehetnek a bemeneti adatnak a kezdőértékei. A példánkban szereplő magasság adat egy nem-negatív valós szám. Furcsának tűnhet, de adatnak tekintjük az eredményt is, azaz a feladatban megfogalmazott kérdésre adható választ. Ennek konkrét értékét nem ismerjük előre, hiszen éppen ennek az értéknek a meghatározása a célunk. A példában a becsapódási sebesség egy ilyen az eredményt megjelenítő úgynevezett kimeneti (output) adat, amelynek értéke kezdetben definiálatlan (tetszőleges), ezért csak a lehetséges értékeinek halmazát adhatjuk meg. A becsapódási sebesség lehetséges értékei is (nem-negatív) valós számok lehetnek. Az adatok másik jellemző tulajdonsága az, hogy az értékeikkel műveleteket lehet végezni. A példánkban a valós számokhoz kapcsolódó műveletek a szokásos aritmetikai műveletek, a feladat megoldásánál ezek közül a szorzásra és a négyzetgyökvonásra lesz szükségünk. Az adatokról további jellemzőket is össze lehetne gyűjteni (mértékegység, irány stb.), de a programozás szempontjából ezek nem lényegesek. Egy adat típusát az adat által felvehető lehetséges értékek halmaza, az úgynevezett típusérték-halmaz, és az ezen értelmezett műveletek, az úgynevezett típusműveletek együttesen határozzák meg, más szóval specifikálják 1. Tekintsünk most néhány nevezetes adattípust, amelyeket a továbbiakban gyakran fogunk használni. A típus és annak típusérték-halmazát többnyire ugyanazzal a szimbólummal jelöljük. Ez nem okoz később zavart, hiszen a szövegkörnyezetből mindig kiderül, hogy pontosan melyik jelentésre is gondolunk. Természetes szám típus. Típusérték-halmaza a természetes számokat (pozitív egész számokat és a nullát) tartalmazza, jele: N (N + a nullát nem tartalmazó természetes számok halmaza); típusműveletei az összeadás (+), kivonás ( ), szorzás (*), az egész osztás (div), az osztási maradékot előállító művelet (mod), esetleg a hatványozás, valamint megengedett két természetes szám összehasonlítása (,,,,, ). Egész szám típus. Típusérték-halmaza (jele: Z) az egész számokat tartalmazza (Z + a pozitív, Z a negatív egész számok halmaza), típusműveletei a természetes számoknál bevezetett műveletek. Valós szám típus. Típusérték-halmaza (jele: R) a valós számokat tartalmazza (R + a pozitív, R a negatív valós számok halmaza, R 0 + a pozitív valós számokat és a nullát tartalmazó halmaz), típusműveletei az összeadás (+), kivonás ( ), szorzás (*), osztás (/), a hatványozás, valamint megengedett két valós szám összehasonlítása (,,,,, ) is. 1 A típus korszerű definíciója ennél jóval árnyaltabb, de egyelőre ez a szűkített változat is elegendő lesz az alapfogalmak bevezetésénél. A részletesebb meghatározással a 7. fejezetben találkozunk majd. 5
4 1. Programozási alapfogalmak Logikai típus. Típusérték-halmaza (jele: L) a logikai értékeket tartalmazza, típusműveletei a logikai és (), logikai vagy (), a logikai tagadás () és logikai egyenlőség () illetve nem-egyenlőség (). Karakter típus. Típusérték-halmaza (jele: K) a karaktereket (a nagy és kisbetűk, számjegyek, írásjelek, stb.) tartalmazza, típusműveletei a két karakter összehasonlításai (,,,,, ). Halmaz típus. Típusértékei olyan véges elemszámú halmazok, amelyek egy meghatározott alaphalmaz részei. E alaphalmaz esetén a jele: 2 E. Típusműveletek a szokásos elemi halmazműveletek: halmaz ürességének vizsgálata, elem kiválasztása halmazból, elem kivétele halmazból (kivonás), elem berakása a halmazba (unió). Sorozat típus. Típusértékei olyan véges hosszúságú sorozatok, amelyek egy meghatározott alaphalmaz elemeiből állnak. E alaphalmaz esetén a jele: E *. Típusműveletei: egy sorozat hosszának (elemszámának) lekérdezése ( s ); sorozat adott sorszámú elemére történő hivatkozás (s i ), azaz az elem kiolvasása illetve megváltozatása; sorozatba új elem beillesztése; adott elem kitörlése. Vektor típus. (Egydimenziós tömb) Típusértékei olyan véges, azonos hosszúságú sorozatok, más néven vektorok, amelyek egy meghatározott alaphalmaz elemeiből állnak. A sorozatokat m-től n-ig terjedő egész számokkal számozzuk meg, más néven indexeljük. Ezeknek halmazát E alaphalmaz esetén az E m..n jelöli, m 1 esetén egyszerűen E n. Típusművelete egy adott indexű elemre történő hivatkozás, azaz az elem kiolvasása illetve megváltozatása. A vektor első és utolsó eleme indexének (az m és az n értékének) lekérdezése is lényegében egy-egy típusművelet. Mátrix típus. (Kétdimenziós tömb) Vektorokat tartalmazó vektor. Speciális esetben azonos módon indexelt E l..m -beli vektoroknak (úgynevezett soroknak) a vektora (E l..m ) k..n vagy másképp E l..m k..n, ahol E az elemi értékek halmazát jelöli), amelyet k=l=1 esetén egyszerűen E nm -mel is jelölhetünk. Típusművelete egy adott sorbeli adott elemre (oszlopra) történő hivatkozás, azaz az elem kiolvasása, illetve megváltoztatása. Típusművelet még a mátrix egy teljes sorára történő hivatkozás, valamint a sorokat tartalmazó vektor indextartományának illetve az egyes sorok indextartományának lekérdezése Állapottér Amikor egy feladat minden lényeges adata felvesz egy-egy értéket, akkor ezt az érték-együttest a feladat egy állapotának nevezzük. A macskás példa egy állapota az, amikor a magasság értéke 12.8, a sebességé 16. Vezessünk be két címkét: a h-t a magasság, a v-t a sebesség jelölésére, és ekkor az előző állapotot a rövidített (h:12.8, v:16) formában is kiírhatjuk. Az itt bevezetett címkékre azért van szükség, hogy meg tudjuk különböztetni egy állapot azonos típusú értékeit. A (12.8, 16) jelölés ugyanis nem lenne egyértelmű: nem tudnánk, hogy melyik érték a magasság, melyik a sebesség. Ugyanennek a feladatnak állapota a (h:5, v:10), vagy a (h:0, v:10). Sőt mivel az adatok között kezdetben semmiféle összefüggést nem tételezünk fel, csak a típusérték-halmazaikat ismerjük a (h:0, v:10.68) és a (h:25, v:0)-t is 6
5 1.3. Feladat fogalma állapotoknak tekintjük, noha ez utóbbiak a feladat szempontjából értelmetlenek, fizikai értelemben nem megvalósuló állapotok. Az összes lehetséges állapot alkotja az állapotteret. Az állapotteret megadhatjuk úgy, hogy felsoroljuk a komponenseit, azaz az állapottér lényeges adatainak típusérték-halmazait egyedi címkékkel ellátva. Az állapottér címkéit a továbbiakban az állapottér változóinak nevezzük. Mivel a változó egyértelműen azonosítja az állapottér egy komponensét, alkalmas arra is, hogy egy konkrét állapotban megmutassa az állapot adott komponensének értékét. Ezért a továbbiakban az állapottér egy komponensét summásan az állapottér változójának, egy állapot komponensét pedig a változó értékének is hívjuk majd. A macskás példában az állapottér a (h:r 0 +, v:r0 + ). Tekintsük ennek a (h:12.8, v:16) állapotát. Ha megkérdezzük, hogy mi itt a h értéke, akkor világos, hogy ez a Ha előírjuk, hogy változzon meg az állapot v komponense 31-re, akkor a (h:12.8, v:31) állapotot kapjuk. Egy állapot komponenseinek értékét a megfelelő változó nevének segítségével kérdezhetjük le vagy változtathatjuk meg. Ez utóbbi esetben egy másik állapotot kapunk. Állapottere nemcsak egy feladatnak lehet. Minden olyan esetben bevezethetjük ezt a fogalmat, ahol adatokkal, pontosabban adattípusokkal van dolgunk, így például egy kifejezés vagy egy program esetében is Feladat fogalma Amikor a macskás feladatot meg akarjuk oldani, akkor a feladatnak egy olyan állapotából indulunk ki, ahol a magasságkomponens 12.8, a sebesség komponense pedig ismeretlen. Ilyen kezdőállapot több is van az állapottérben, ezeket (h:12.8, v: * )-gal jelölhetjük, ami azt fejezi ki, hogy a második komponens definiálatlan, tehát tetszőleges. A feladatot akkor oldottuk meg, ha megtaláltuk azt a célállapotot, amelyiknek sebességkomponense a 16. Egy fizikus számára a logikus célállapot a (h:0, v:16) lenne, de a feladat megoldásához nem kell a valódi fizikai célállapot megtalálnunk. Az informatikus számára a magasság-komponens egy bemenő adat, amelyre előírhatjuk, hogy őrizze meg a kezdőértéket a célállapotban. Ebben az esetben a (h:12.8, v:16) tekinthető célállapotnak. Egyébként viszont minden (h: *, v:16) alakú állapot célállapotnak tekinthető. Állapodjunk meg ennél a példánál abban, hogy megőrizzük a magasság-komponens értékét, tehát csak egy célállapotot fogadunk el: (h:12.8, v:16). Más magasság-értékű kezdőállapotokhoz természetesen más célállapot tartozik. (Megjegyezzük, hogy ha az állapottér felírásánál nem zártuk volna ki a negatív valós számokat, akkor most ki kellene kötni, hogy a feladatnak nincs értelme olyan kezdőállapotokon, amelyek magasság komponense negatív, például (h:-1, v: * ), hiszen ekkor a becsapódási sebességet kiszámoló képletben negatív számnak kellene valós négyzetgyökét kiszámolni.). Általánosan leírva az értelmes kezdő- és célállapot kapcsolatokat, a következőt mondhatjuk. A feladat egy (h: h 0, v: * ) kezdőállapothoz, ahol h 0 egy tetszőlegesen rögzített (nem-negatív valós) szám, a * pedig egy tetszőleges nem-definiált érték, a (h: h0, v : 20 h0 ) célállapotot rendeli. Tekintsünk most egy másik feladatot! Adjuk meg egy összetett szám egyik valódi osztóját! Ennek a feladatnak két lényeges adata van: az adott természetes szám (címkéje legyen n) és a válaszként megadandó osztó (címkéje: d). Mindkét adat természetes szám típusú. A feladat állapottere 7
6 1. Programozási alapfogalmak tehát: (n:n, d:n). Rögzítsük az állapottér komponenseinek sorrendjét: megállapodás szerint az állapotok jelölésénél elsőként mindig az n, másodikként a d változó értékét adjuk meg, így használhatjuk az (n:6, d:1) állapot-jelölés helyett a rövidebb (6,1) alakot. A feladat kezdőállapotai között találjuk például a (6, * ) alakúakat. Ezekhez több célállapot is tartozik: (6,2) és (6,3), hiszen a 6- nak több valódi osztója is van. Nincs értelme a feladatnak viszont a (3, * ) alakú kezdőállapotokban, hiszen a 3 nem összetett szám, azaz nincs valódi osztója. A feladat általában az (x, * ) kezdőállapothoz, ahol x egy összetett természetes szám, azt az (x,k) állapotot rendeli, ahol k az x egyik valódi osztója. A feladat egy olyan kapcsolat (leképezés), amelyik bizonyos állapotokhoz (kezdőállapotokhoz) állapotokat (célállapotokat) rendel. Ez a leképezés általában nem egyértelmű, más szóval nemdeterminisztikus, hiszen egy kezdőállapothoz több célállapot is tartozhat. (Az ilyen leképezést a matematikában relációnak hívják.) Érdekes tanulságokkal jár a következő feladat: Adjuk meg egy nem-nulla természetes szám legnagyobb valódi osztóját! Itt bemeneti adat az a természetes szám, aminek a legnagyobb valódi osztóját keressük. Tudjuk, hogy a kérdésre adott válasz is adatnak számít, de azt már nehéz észrevenni, hogy a válasz itt két részből áll. A feladat megfogalmazásából következik, hogy nemcsak egy összetett szám esetén várunk választ, hanem egy prímszám vagy az 1, esetleg a nulla esetén is. De ilyenkor nincs értelme legnagyobb valódi osztót keresni! A számszerű válaszon kívül tehát szükségünk van egy logikai értékű adatra, amely megmutatja, hogy van-e egyáltalán számszerű megoldása a problémának. A feladat állapottere: (n:n, l:l, d:n). A feladat bármelyik állapotra értelmezhető. Az olyan (x, *, * ) állapotokhoz (itt is az n,l,d sorrendre épülő rövid alakot használjuk), ahol x nem összetett szám vagy nulla, a feladat az (x, hamis, * ) alakú célállapotokat rendeli; ha x összetett, akkor az (x, igaz, k) célállapotokat, ahol k a legnagyobb valódi osztója az x nek. A feladatok változóit megkülönböztethetjük aszerint, hogy azok a feladat megoldásához felhasználható kezdő értékeket tartalmazzák-e (bemenő, kezdő vagy input változók), vagy a feladat megoldásának eredményeit (kimenő, eredmény vagy output változók). A bemenő változók sokszor megőrzik a kezdőértéküket a célállapotban is, de ez nem alapkövetelmény. A kimenő változók kezdőállapotbeli értéke közömbös, tetszőleges, célállapotbeli értékük megfogalmazása viszont a feladat lényegi része. Azt is látni kell, hogy számos olyan feladat van, ahol egy változó lehet bemenő és kimenő is egyszerre, sőt lehetnek olyan (segéd) változók is, amelyek csak a feltételek könnyebb megfogalmazásához nyújtanak segítséget Program fogalma A szakkönyvek többsége a programot utasítások sorozataként definiálja. Nyilvánvaló azonban, hogy egy utasítássorozat csak a program leírására képes, és önmagában semmit sem árul el a program természetéről. Ehhez egyfelől definiálnunk kellene azt a számítógépet, amely az utasításokat értelmezi, másfelől meg kell adni, hogy az utasítások végrehajtásakor mi történik, azaz lényegében egy programozási nyelvet kell megadnunk. A program fogalmának ilyen bevezetése még akkor is hosszadalmas, ha programjainkat egy absztrakt számítógép számára egy absztrakt programozási nyelven írjuk le. A program fogalmának bevezetésére ezért mi nem ezt az utat követjük, hiszen könyvünk bevezetőjében éppen azt emeltük ki, hogy milyen fontos elválasztani a programtervezési ismereteket a számítógépeknek és a programozási nyelveknek a megismerésétől. A fenti érvek ellenére időzzünk el egy pillanatra annál a meghatározásnál, hogy a program utasítások sorozata, és vegyük szemügyre egy így megadott program működését! (Ez a példa egy absztrakt gép és absztrakt nyelv ismeretét feltételezi, ám az utasítások megértése itt remélhetőleg nem 8
7 1.4. A program fogalma okoz majd senkinek sem gondot.) A program két természetes szám típusú adattal dolgozik: az első címkéje n, a másodiké d, azaz a program (adatainak) állapottere az (n:n, d:n). A program az alábbi utasításokból áll: 1. Legyen d értéke vagy az n-1 vagy a Ha d értéke megegyezik 2-vel akkor amíg d nem osztja n-t addig növeljük d értékét 1-gyel, különben amíg d nem osztja n-t addig csökkentsük d értékét 1-gyel. Vizsgáljuk meg, mi történik az állapottérben, ha ezt a programot végrehajtjuk! Mindenekelőtt vegyük észre, hogy a program bármelyik állapotból elindulhat. Például a (6,8) kiinduló állapot esetén (itt is alkalmazzuk a rövidebb, az n,d sorrendjét kihasználó alakot az állapot jelölésére) a program első utasítása vagy a (6,2), vagy a (6,5) állapotba vezet el. Az első utasítás ugyanis nem egyértelmű, ettől a program működése nem determinisztikus lesz. Természetesen egyszerre csak az egyik végrehajtás következhet be, de hogy melyik, az nem számítható ki előre. Ha az első utasítás a d-t 2-re állítja be, akkor a második utasítás elkezdi növelni, különben pedig csökkenti a d értékét addig, amíg az nem lesz osztója az n-nek. Ezért az egyik esetben amikor d értéke 2 rögtön meg is áll a program, a másik esetben pedig érintve a (6,5), (6,4) állapotokat a (6,3) állapotban terminál. Bármelyik olyan kiinduló állapotból elindulva, ahol az első komponens 6, az előzőekhez hasonló végrehajtási sorozatokat kapunk: a program a működése során egy (6, * ) alakú állapotból elindulva vagy a (6, * ) (6,2) állapotsorozatot, vagy a (6, * ) (6,5) (6,4), (6,3) állapotsorozatot futja be. Ezek a sorozatok csak a legelső állapotukban különböznek egymástól, hiszen egy végrehajtási sorozat első állapota mindig a kiinduló állapot. Induljunk el most egy (5, * ) alakú állapotból. Ekkor az első utasítás eredményétől függően vagy a (5, * ) (5,2) (5,3) (5,4) (5,5), vagy a (5, * ) (5,4) (5,3) (5,2) (5,1) végrehajtás következik be. A (4, * ) alakú állapotból is két végrehajtás indulhat, de mindkettő ugyanabban az állapotban áll meg: (4, * ) (4,2), (4, * ) (4,3) (4,2) Érdekes végrehajtások indulnak az (1, * ) alakú állapotokból. Az első utasítás hatására vagy az (1,2), vagy az (1,0) állapotba kerülünk. Az előbbi esetben a második utasítás elkezdi a d értékét növelni, és mivel az 1-nek nincs 2-nél nagyobb osztója, ez a folyamat soha nem áll le. Azt mondjuk, hogy a program (1, * ) (1,2) (1,3) (1,4) végrehajtása végtelen ciklusba esik. A másik esetben viszont értelmetlenné válik a második utasítás, hiszen azt kell vizsgálni, hogy a nulla értékű d osztja-e az n értékét, pedig a nullával való osztás nem értelmezhető. Ez az utasítás tehát itt illegális, abnormális lépést eredményez. Ilyenkor a program abnormálisan működik tovább, amit az (1, * ) (1,0) (1,0) végtelen végrehajtási sorozattal modellezhetünk. Ez azt fejezi ki, mintha a program megpróbálná újra és újra végrehajtani az illegális lépést, majd mindig visszatér az utolsó legális állapothoz. 2 Hasonló a helyzet a (0, * ) kiinduló állapotokkal is, amelyekre az első utasítás megkísérli a d értékét (ennek tetszőleges értékék rögzítsük és jelöljük y-nal) -1-re állítani. A (0,-1) ugyanis nem tartozik bele az állapottérbe, így az első utasítás a program abnormális működését eredményezheti, 2 Valóságos programozási környezetben az operációs rendszer feladata az ilyen abnormális működés felismerése, és egy alkalmas hibaüzenet kíséretében a program futásának megszakítása (abortálása). 9
8 1. Programozási alapfogalmak amelyet a (0,y) (0,y) (0,y) végtelen sorozattal jellemezhetünk. Mintha újra és újra megpróbálnánk a hibás utasítás végrehajtását, de a (0,-1) illegális állapot helyett mindig visszatérünk a (0,y) kiinduló állapothoz.. Természetesen itt lehetséges egy másik végrehajtás is, amikor az első lépésben a (0,2) állapotba kerülünk, ahol a program rögtön le is áll, hiszen a 2 osztja a nullát. A program által egy állapothoz rendelt állapotsorozatot végrehajtásnak, működésnek, a program futásának hívunk. A végrehajtások lehetnek végesek vagy végtelenek; a végtelen működések lehetnek normálisak (végtelen ciklus) vagy abnormálisak (abortálás). Ha a végrehajtás véges, akkor azt mondjuk, hogy a program végrehajtása megáll, azaz terminál. A normális végtelen működést nem lehet biztonsággal felismerni, csak abból lehet sejteni, ha a program már régóta fut. Az abnormális működés akkor következik be, amikor a végrehajtás során egy értelmezhetetlen utasítást (például nullával való osztás) kellene végrehajtani. Ezt a programunkat futtató környezet (operációs rendszer) fel szokta ismerni, és erőszakkal leállítja a működést. Innen származik az abortálás kifejezés. A modellünkben azonban nincs futtató környezet, ezért az abnormális működést olyan végtelen állapotsorozattal ábrázoljuk, amelyik az értelmetlen utasítás végrehajtásakor fennálló állapotot ismétli meg végtelen sokszor. A későbbiekben bennünket egy programnak csak a véges működései fognak érdekelni, és mind a normális, mind az abnormális végtelen végrehajtásokat megpróbáljuk majd elkerülni. Egy program minden állapotból indít végrehajtást, sőt egy állapotból akár több különbözőt is. Az, hogy ezek közül éppen melyik végrehajtás következik be, nem definiált, azaz a program nemdeterminisztikus. Vegyünk szemügyre egy másik programot! Legyen ennek az állapottere az (a:n, b:n, c:n). Rögzítsük ezt a sorrendet a továbbiakban. 1. Vezessünk be egy újabb változót (i:n) és adjuk neki értékül az 1-gyet. 2. Legyen c értéke kezdetben Amíg az i értéke nem haladja meg az a értékét addig adjuk a c értékéhez az b értékét, majd növeljük meg i értékét 1-gyel. Ez a program kiindulva például a (2, 3, 2009) állapotból az alábbi állapotsorozatot futja be: (2, 3, 2009), (2, 3, 2009, 1962), (2, 3, 2009, 1), (2, 3, 0, 1), (2, 3, 3, 1), (2, 3, 3, 2), (2, 3, 6, 2), (2, 3, 6, 3), (2, 3, 6). Jól látható, hogy a sorozat első lépése bevezeti az i segédváltozót egy előre nem definiált értékkel, az állapottér tehát egy újabb komponenssel bővült. Ez a komponens megszűnik a terminálás előtt, ezt mutatja a végrehajtás legutolsó lépése. Ennek a programnak az állapottere dinamikusan változik a végrehajtás során, hiszen végrehajtásának vannak olyan lépései, amikor egy állapotból attól eltérő komponens számú (eltérő dimenziójú) állapotba kerülünk. Az új állapot lehet bővebb, mert a megelőző állapothoz képest extra komponenseket is tartalmaz (lásd az i:n megjelenését előidéző lépést), de lehet szűkebb is, amikor elhagyunk korábban létrehozott segédváltozókat (lásd utolsó lépést). Megjegyezzük azonban, hogy a végrehajtás kezdetén létező komponensek végig megmaradnak, nem szűnhetnek meg. Kikötjük azt is, hogy a termináló végrehajtások a kiinduló állapot állapotterében végződnek, azaz ha egy végrehajtás során létrejönnek segédváltozók, akkor azok ha korábban nem a termináláskor mindenképpen megszűnnek egy speciális utolsó utáni lépés keretében. 10
9 1.4. A program fogalma A program kiinduló állapotainak terét a program alap-állapotterének nevezzük, változói az alapváltozók. A működés során megjelenő újabb komponenseket segédváltozóknak fogjuk hívni. Egy új segédváltozó nevének különböznie kell a többi változó nevétől, kezdő értéke a megjelenésekor nem-definiált (tetszőleges). A program az általa befutható összes lehetséges végrehajtás együttese. Alap-állapotterének bármelyik állapotából el tud indulni, és ahhoz olyan végrehajtási sorozatokat rendel, amelyik első állapota a kiinduló állapot. Ugyanahhoz a kiinduló állapothoz akár több végrehajtási sorozat is tartozhat. Egy végrehajtási sorozat további állapotai az alap-állapottér komponensein kívül segéd komponenseket is tartalmazhatnak, de ezek a véges hosszú végrehajtások esetén legkésőbb az utolsó lépésében megszűnnek, így ezek a végrehajtások az alap-állapottérben terminálnak. Egy program működése nem változik meg attól, ha módosítjuk az alap-állapoterét. Egy alapváltozó könnyen olyan segédváltozóvá alakítható (alap-állapottér leszűkítése), ha kijelentjük róla, hogy csak a program elindulásakor jön létre, és a program befejeződésekor megszűnik. A segédváltozóból pedig úgy lesz alapváltozó (alap-állapottér kiterjesztése), ha már eleve létezőnek tekintjük, ezért nem kell létrehozni és termináláskor nem kell megszűntetni. A program alapállapotterét tehát megállapodás alapján jelöljük ki. Az alapváltozók a tulajdonképpen a program környezetével teremtenek kapcsolatot. Egy alapváltozónak tudunk kívülről kezdőértéket adni, és egy alapváltozóból tudjuk a terminálás után az eredményt lekérdezni. Ahhoz, hogy egy feladatot oldjunk meg egy programmal, a program alapváltozóinak a feladat (bemenő és eredmény) változóit kell választanunk. Ezzel azonban el is érkeztünk ennek a fejezetnek a legizgalmasabb fogalmához Megoldás fogalma Mivel mind a feladat fogalmát, mind a program fogalmát az állapottér segítségével fogalmaztuk meg, ez lehetővé teszi, hogy egyszerű meghatározást adjunk arra, mikor old meg egy program egy feladatot. Tekintsük újra azt a feladatot, amelyben egy összetett természetes szám egyik valódi osztóját keressük. A feladat állapottere: (n:n, d:n), egy (x, * ) kezdőállapothoz (ahol x összetett) azokat az (x,y) célállapotokat rendeli, ahol a y értéke osztja az x-et, nem 1 és nem x. Az előző alfejezet első programjának állapottere megegyezik e feladatéval. A feladat kezdőállapotaiból indulva a program mindig terminál, és olyan állapotban áll meg, ahol a d értéke vagy a legkisebb, vagy a legnagyobb valódi osztója az n kezdőértékének. Például a (12,8) kiinduló állapotból elindulva nemdeterminisztikus módon vagy a (12,2), vagy a (12,6) végállapotban áll meg, míg a feladat a (12,8) kezdőállapothoz a (12,2), (12,3), (12,4), (12,6) célállapotokat jelöli ki. A programnak ez közül kell valamelyiket megtalálnia, és ezt is teszi. A vizsgált program megoldja a kitűzött feladatot. Tehát egy program akkor old meg egy feladatot, ha a feladat bármelyik kezdőállapotából elindulva biztosan terminál, és olyan állapotban áll meg, amelyet célállapotként a feladat az adott kezdőállapothoz rendel. 3 Hangsúlyozzuk, hogy ahhoz, hogy a program megoldjon egy feladatot, nem 3 Ismert a megoldásnak ennél gyengébb változata is, amelyik nem követeli meg a leállást, csak azt, hogy ha a program leáll, akkor egy megfelelő célállapotban tegye azt. 11
10 1. Programozási alapfogalmak szükséges egy adott kezdőállapothoz tartozó összes célállapotot megtalálnia, elég csak egyet. A feladat ugyanis, amikor egy kezdőállapotra kijelöli az ahhoz tartozó célállapotokat, azt mondja, hogy a megadott célállapotok bármelyikének elérése elegendő, ezért a megoldó program végrehajtásainak a célállapotok valamelyikében kell megállnia. A fenti vizsgálat szempontjából nem lényeges, hogy a program a működése közben mit csinál, mely állapotokat érint, milyen segédváltozókat hoz létre; csak az számít, hogy honnan indulva hová érkezik meg, azaz a feladat kezdőállapotaiból indulva megáll-e, és hol. Ezért fontos viszont az, hogy a program kiinduló- és a végállapota a feladat állapotteréhez tartozzon, mert csak így tudjuk összevetni azokat a feladat egymáshoz tartozó kezdő- és célállapotával. A (4, * ) alakú állapotokból két különböző végrehajtás is indul, de mindkettő a (4,2) állapotban áll meg, hiszen a 2 a 4-nek egyszerre a legkisebb és legnagyobb valódi osztója. A (6, * ) alakú állapotokból is két végrehajtás indul, de ezeknek a végpontja is különbözik. Az, hogy milyen közbeeső állapotokon keresztül érjük el a végállapotokat, a megoldás szempontjából a program belügye, az a lényeg, hogy a végállapotok a 6 valódi osztóit adják meg. A megoldás tényét nem befolyásolja az sem, hogy azokból az állapotokból indulva, amelyek nem kezdőállapotai a feladatnak, hogyan működik a program. Ilyenkor még az sem fontos, hogy termináljon. Ezért nem baj, hogy a (0, * ) és az (1, * ) alakú állapotokból indulva a fenti program nem is biztos, hogy terminál. Az is közömbös, hogy egy olyan (x, * ) állapotból indulva, ahol x egy prímszám, a program vagy az x-et, vagy az 1-et találja meg. Nem oldaná meg viszont a program a feladatot akkor, ha egy kezdőállapotából egy célállapotba vezető működés mellett indulna egy másik, nem célállapotban megálló vagy egyáltalán nem termináló végrehajtása is. A programnak azt a tulajdonságát, amely azt mutatja meg, hogy mely állapotokból indulva fog biztosan terminálni, és ezen állapotokból indulva mely állapotokban áll meg, a program hatásának nevezzük. Ekvivalensnek mondunk két programot, ha a hatásuk megegyezik. A megoldás definíciójában feltételeztük, hogy a feladat állapottere megegyezik a program alapállapotterével. A programozási gyakorlatban sokszor előfordul, hogy egy feladatot egy olyan programmal akarjuk megoldani, amelyik állapottere nem azonos a feladatéval, bővebb vagy szűkebb annál. 4 A megoldás fogalmát ezekben az esetekben úgy ellenőrizzük, hogy a program alap-állapotterét a feladatéhoz igazítjuk, vagy kiterjesztjük, vagy leszűkítjük (esetleg egyszerre mindkettőt) a feladat állapotterére. Abban az esetben, amikor a program alap-állapottere bővebb, mint feladaté, azaz van a programnak olyan alapváltozója, amellyel nem kommunikál a feladat (nem ad neki kezdő értéket, nem vár tőle eredményt), egyszerű a teendő. A szóban forgó változót segédváltozóvá minősítjük, amitől a program működése nyilván nem változik meg. Jó példa erre az, amikor rendelkezünk egy programmal, amely egy napon keresztül óránként mért hőmérsékleti adatokból ki tudja számolni a napi átlaghőmérsékletet és a legnagyobb hőingadozást, ugyanakkor a megoldandó feladat csak az átlaghőmérséklet kiszámolását kéri. A program alap-állapottere tehát olyan komponenst tartalmaz, amely a feladatban nem szerepel (ez a legnagyobb hőingadozás), ez a feladat szempontjából érdektelen. A program első lépésében hozzáveszi a feladat egy kezdőállapotához a legnagyobb 4 Később, a 7. fejezetben, tovább általánosítjuk a megoldás fogalmát úgy, hogy megengedjük, hogy a feladat állapotterének egy vagy több komponensét a program alap-állapotterének egy vagy több komponense helyettesíthesse. 12
11 1.4. A program fogalma hőingadozást, ugyanúgy számol vele, mint eredetileg, de a megállás előtt elhagyja ezt a komponenst, hiszen a feladat célállapotában ennek nincs helye; a legnagyobb hőingadozás tehát segédváltozó lesz. A másik esetben amikor a feladat állapottere bővebb a program alap-állapotterénél a program állapotterét kiegészítjük a feladat állapotterének azon komponenseivel, amelyek a program állapotterében nem szerepelnek. Ha egy ilyen új komponens segédváltozóként szerepelt az eredeti programban, akkor ez a kiegészítés a segédváltozót a program alapváltozójává emeli. Ha az új változó segédváltozóként sem szerepelt eddig a programban, akkor ez a változó a program által nem használt új alapváltozó lesz, azaz kezdeti értéke végig megőrződik egy végrehajtás során. Az már más kérdés, hogy van-e olyan feladat, amelyet így meg lehet oldani. Ilyen az, amikor egy összetett feladat olyan részének a megoldásával foglalkozunk, ahol az összetett feladat bizonyos komponenseit ideiglenesen figyelmen kívül hagyhatjuk, de attól még azok a részfeladat állapotterének komponensei maradnak, és éppen azt szeretnénk, ha az értékük ne változna meg a részfeladatot megoldó program működése során. 13
12 1. Programozási alapfogalmak 1.6. Feladatok 1.1. Mi az állapottere, kezdőállapotai, adott kezdőállapothoz tartozó célállapotai az alábbi feladatnak? Egy egyenes vonalú egyenletesen haladó piros Opel s kilométert t idő alatt tesz meg. Mekkora az átlagsebessége? 1.2. Mi az állapottere, kezdőállapotai, adott kezdőállapothoz tartozó célállapotai az alábbi feladatnak? Adjuk meg egy természetes számnak egy valódi prím osztóját! 1.3. Tekintsük az A = (n:z, f:z) állapottéren az alábbi programot! 1. Legyen f értéke 1 2. Amíg n értéke nem 1 addig 2.a. Legyen f értéke f * n 2.b. Csökkentsük n értékét 1-gyel! Írjuk fel e program néhány végrehajtását! Hogyan lehetne a végrehajtásokat általánosan jellemezni? Megoldja-e a fenti program azt a feladatot, amikor egy egész számnak kell a faktoriálisát kiszámolni? 1.4. Tekintsük az A = (x:z, y:z) állapottéren az alábbi programot! 1. Legyen x értéke x-y 2. Legyen y értéke x+y 3. Legyen x értéke y-x Írjuk fel e program néhány végrehajtását! Hogyan lehetne a végrehajtásokat általánosan jellemezni? Megoldja-e a fenti program azt a feladatot, amikor két, egész típusú változó értékét kell kicserélni? 1.5. Tekintsük az alábbi két feladatot: 1) Adjuk meg egy 1-nél nagyobb egész szám egyik osztóját! 2) Adjuk meg egy összetett természetes szám egyik valódi osztóját! Tekintsük az alábbi három programot az A = (n:n, d:n ) állapottéren: 1) Legyen a d értéke 1 2) Legyen a d értéke n 3) Legyen a d értéke n-1. Amíg a d nem osztja n-t addig csökkentsük a d-t. Melyik program melyik feladatot oldja meg? Válaszát indokolja! 14
13 1.6. Feladatok 1.6. Tekintsük az A=(m:N +, n:n +, x:z) állapottéren működő alábbi programokat! 1) Ha m<n, akkor legyen az x értéke először a (-1) m, majd adjuk hozzá a (-1) m+1 -t, és így tovább, végül a (-1) n -t! Ha m=n, akkor legyen az x értéke a (-1) n! Ha m>n, akkor legyen az x értéke először a (-1) n, majd adjuk hozzá a (-1) n+1 -t, és így tovább, végül a (-1) m -t! 2) Legyen az x értéke a ((-1) m + (-1) n )/2! Írjuk fel e programok néhány végrehajtását! Lássuk be, hogy mindkét program megoldja az alábbi feladatot: Két adott nem nulla természetes számhoz az alábbiak szerint rendelünk egész számot: ha mindkettő páros, adjunk válaszul 1-et; ha páratlanok, akkor -1-et; ha paritásuk eltérő, akkor 0-át! 1.7. Tekintsük az A 1,2,3,4,5 állapottéren az alábbi fiktív programot. Az alábbi jelöléssel egy programot adunk meg, amelyből kiolvasható, hogy az egyes állapotokból indulva milyen végrehajtási sorozatot fut be. 1 1,2,4,5 2 2,1 S 4 4,1,5,1,4 5 5,2,4 1 1,4,3,5,2 2 2,4 4 4,3,1,2,5,1 5 5,3,4 1 1,3,2, ,3, ,1,5,4,2 5 5,2,3,4 Az F feladat az alábbi kezdő-célállapot párokból áll: {(2,1) (4,1) (4,2) (4,4) (4,5)}. Megoldja-e az S program az F feladatot? 1.8. Legyen S olyan program, amely megoldja az F feladatot! Igaz-e, hogy a) ha F nem determinisztikus, akkor S sem az? b) ha F determinisztikus, akkor S is az? 1.9. Az S 1 szélesebb, mint az S 2, ha S 2 minden végrehajtását tartalmazza. Igaz-e, hogy ha az S 1 program megoldja az F feladatot, akkor azt megoldja az S 2 is Az F 1 szélesebb, mint az F 2, ha F 2 minden kezdő-célállapot párját tartalmazza. Igaz-e, hogy ha egy S program megoldja az F 1 feladatot, akkor megoldja az F 2 -t is. 15
PROGRAMOZÁS 1. kötet TERVEZÉS
Gregorics Tibor PROGRAMOZÁS 1. kötet TERVEZÉS egyetemi jegyzet 2011 1 ELŐSZÓ TARTALOM ELŐSZÓ... 4 BEVEZETÉS... 6 I. RÉSZ PROGRAMOZÁSI FOGALMAK... 9 1. ALAPFOGALMAK... 10 1.1. Az adatok típusa... 10 1.2.
RészletesebbenPROGRAMOZÁS VISSZAVEZETÉSSEL
Gregorics Tibor PROGRAMOZÁS VISSZAVEZETÉSSEL egyetemi jegyzet 1 2011 1 A jegyzet tananyagának kialakítása az Európai Unió támogatásával, az Európai Szociális Alap társfinanszírozásával valósult meg (a
RészletesebbenBevezetés az informatikába
Bevezetés az informatikába 6. előadás Dr. Istenes Zoltán Eötvös Loránd Tudományegyetem Informatikai Kar Programozáselmélet és Szoftvertechnológiai Tanszék Matematikus BSc - I. félév / 2008 / Budapest Dr.
RészletesebbenPROGRAM STATIKUS FOGALMA DINAMIKUSAN VÁLTOZÓ ÁLLAPOTTÉRBEN 1
PROGRAM STATIKUS FOGALMA DINAMIKUSAN VÁLTOZÓ ÁLLAPOTTÉRBEN 1 Az ELTE IK programozó informatikus képzésében egy statikus szemléletű, matematikai relációk fogalmára épülő modell keretében tanítjuk a programozást.
RészletesebbenALAPFOGALMAK 1. A reláció az program programfüggvénye, ha. Azt mondjuk, hogy az feladat szigorúbb, mint az feladat, ha
ALAPFOGALMAK 1 Á l l a p o t t é r Legyen I egy véges halmaz és legyenek A i, i I tetszőleges véges vagy megszámlálható, nem üres halmazok Ekkor az A= A i halmazt állapottérnek, az A i halmazokat pedig
RészletesebbenProgramozási Módszertan definíciók, stb.
Programozási Módszertan definíciók, stb. 1. Bevezetés Egy adat típusát az adat által felvehető lehetséges értékek halmaza (típusérték halmaz, TÉH), és az ezen értelmezett műveletek (típusműveletek) együttesen
RészletesebbenKOVÁCS BÉLA, MATEMATIKA I.
KOVÁCS BÉLA MATEmATIkA I 6 VI KOmPLEX SZÁmOk 1 A komplex SZÁmOk HALmAZA A komplex számok olyan halmazt alkotnak amelyekben elvégezhető az összeadás és a szorzás azaz két komplex szám összege és szorzata
RészletesebbenBrósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.
Számelmélet I. DEFINÍCIÓ: (Osztó, többszörös) Ha egy a szám felírható egy b szám és egy másik egész szám szorzataként, akkor a b számot az a osztójának, az a számot a b többszörösének nevezzük. Megjegyzés:
Részletesebben3. 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
A változó fogalma Definíció Legyen A = A 1 A 2... A n állapottér. A pr Ai projekciós függvényeket változóknak nevezzük: : A A i pr Ai (a) = a i ( a = (a 1, a 2,..., a n ) A). A változók jelölése: v i =
RészletesebbenProgramozási módszertan
1 Programozási módszertan 1. Alapfogalmak Feldhoffer Gergely 2012 Féléves tananyag terve 2 Program helyességének bizonyítása Reprezentáció Logikai-matematikai eszköztár Programozási tételek bizonyítása
Részletesebben1. előadás. Lineáris algebra numerikus módszerei. Hibaszámítás Számábrázolás Kerekítés, levágás Klasszikus hibaanalízis Abszolút hiba Relatív hiba
Hibaforrások Hiba A feladatok megoldása során különféle hibaforrásokkal találkozunk: Modellhiba, amikor a valóságnak egy közelítését használjuk a feladat matematikai alakjának felírásához. (Pl. egy fizikai
RészletesebbenKOVÁCS BÉLA, MATEMATIKA I.
KOVÁCS BÉLA, MATEmATIkA I. 1 I. HALmAZOk 1. JELÖLÉSEk A halmaz fogalmát tulajdonságait gyakran használjuk a matematikában. A halmazt nem definiáljuk, ezt alapfogalomnak tekintjük. Ez nem szokatlan, hiszen
RészletesebbenProgramozási segédlet
Programozási segédlet Programozási tételek Az alábbiakban leírtam néhány alap algoritmust, amit ismernie kell annak, aki programozásra adja a fejét. A lista korántsem teljes, ám ennyi elég kell legyen
RészletesebbenAz R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.
2. A VALÓS SZÁMOK 2.1 A valós számok aximómarendszere Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit. 1.Testaxiómák R-ben két művelet van értelmezve, az
Részletesebben5. előadás. Programozás-elmélet. Programozás-elmélet 5. előadás
Elemi programok Definíció Az S A A program elemi, ha a A : S(a) { a, a, a, a,..., a, b b a}. A definíció alapján könnyen látható, hogy egy elemi program tényleg program. Speciális elemi programok a kövekezők:
RészletesebbenHalmazelmélet. 1. előadás. Farkas István. DE ATC Gazdaságelemzési és Statisztikai Tanszék. Halmazelmélet p. 1/1
Halmazelmélet 1. előadás Farkas István DE ATC Gazdaságelemzési és Statisztikai Tanszék Halmazelmélet p. 1/1 A halmaz fogalma, jelölések A halmaz fogalmát a matematikában nem definiáljuk, tulajdonságaival
RészletesebbenI. Egyenlet fogalma, algebrai megoldása
11 modul: EGYENLETEK, EGYENLŐTLENSÉGEK MEGOLDÁSA 6 I Egyenlet fogalma, algebrai megoldása Módszertani megjegyzés: Az egyenletek alaphalmazát, értelmezési tartományát később vezetjük be, a törtes egyenletekkel
RészletesebbenOSZTHATÓSÁG. Osztók és többszörösök : a 3 többszörösei : a 4 többszörösei Ahol mindkét jel megtalálható a 12 többszöröseit találjuk.
Osztók és többszörösök 1783. A megadott számok elsõ tíz többszöröse: 3: 3 6 9 12 15 18 21 24 27 30 4: 4 8 12 16 20 24 28 32 36 40 5: 5 10 15 20 25 30 35 40 45 50 6: 6 12 18 24 30 36 42 48 54 60 1784. :
Részletesebben15. LINEÁRIS EGYENLETRENDSZEREK
15 LINEÁRIS EGYENLETRENDSZEREK 151 Lineáris egyenletrendszer, Gauss elimináció 1 Definíció Lineáris egyenletrendszernek nevezzük az (1) a 11 x 1 + a 12 x 2 + + a 1n x n = b 1 a 21 x 1 + a 22 x 2 + + a
RészletesebbenElőfeltétel: legalább elégséges jegy Diszkrét matematika II. (GEMAK122B) tárgyból
ÜTEMTERV Programozás-elmélet c. tárgyhoz (GEMAK233B, GEMAK233-B) BSc gazdaságinformatikus, programtervező informatikus alapszakok számára Óraszám: heti 2+0, (aláírás+kollokvium, 3 kredit) 2019/20-es tanév
RészletesebbenStruktúra nélküli adatszerkezetek
Struktúra nélküli adatszerkezetek Homogén adatszerkezetek (minden adatelem azonos típusú) osztályozása Struktúra nélküli (Nincs kapcsolat az adatelemek között.) Halmaz Multihalmaz Asszociatív 20:24 1 A
RészletesebbenDiszkrét matematika II., 8. előadás. Vektorterek
1 Diszkrét matematika II., 8. előadás Vektorterek Dr. Takách Géza NyME FMK Informatikai Intézet takach@inf.nyme.hu http://inf.nyme.hu/ takach/ 2007.??? Vektorterek Legyen T egy test (pl. R, Q, F p ). Definíció.
RészletesebbenWebprogramozás szakkör
Webprogramozás szakkör Előadás 5 (2012.04.09) Programozás alapok Eddig amit láttunk: Programozás lépései o Feladat leírása (specifikáció) o Algoritmizálás, tervezés (folyamatábra, pszeudokód) o Programozás
RészletesebbenLINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL
LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL x 1-2x 2 6 -x 1-3x 3 = -7 x 1 - x 2-3x 3-2 3x 1-2x 2-2x 3 4 4x 1-2x 2 + x 3 max Alapfogalmak: feltételrendszer (narancs színnel jelölve), célfüggvény
Részletesebbenút hosszát. Ha a két várost nem köti össze út, akkor legyen c ij = W, ahol W már az előzőekben is alkalmazott megfelelően nagy szám.
1 Az utazó ügynök problémája Utazó ügynök feladat Adott n számú város és a városokat összekötő utak, amelyeknek ismert a hossza. Adott továbbá egy ügynök, akinek adott városból kiindulva, minden várost
Részletesebben2014. szeptember 24. és 26. Dr. Vincze Szilvia
2014. szeptember 24. és 26. Dr. Vincze Szilvia Mind a hétköznapi, mind a tudományos életben gyakran előfordul, hogy bizonyos halmazok elemei között kapcsolat figyelhető meg. A kapcsolat fogalmának matematikai
Részletesebbenf(x) vagy f(x) a (x x 0 )-t használjuk. lim melyekre Mivel itt ɛ > 0 tetszőlegesen kicsi, így a a = 0, a = a, ami ellentmondás, bizonyítva
6. FÜGGVÉNYEK HATÁRÉRTÉKE ÉS FOLYTONOSSÁGA 6.1 Függvény határértéke Egy D R halmaz torlódási pontjainak halmazát D -vel fogjuk jelölni. Definíció. Legyen f : D R R és legyen x 0 D (a D halmaz torlódási
RészletesebbenHatványozás. A hatványozás azonosságai
Hatványozás Definíció: a 0 = 1, ahol a R, azaz bármely szám nulladik hatványa mindig 1. a 1 = a, ahol a R, azaz bármely szám első hatványa önmaga a n = a a a, ahol a R, n N + n darab 3 4 = 3 3 3 3 = 84
RészletesebbenDiszkrét matematika I.
Diszkrét matematika I. középszint 2014. ősz 1. Diszkrét matematika I. középszint 10. előadás Mérai László diái alapján Komputeralgebra Tanszék 2014. ősz Felhívás Diszkrét matematika I. középszint 2014.
RészletesebbenSZÁMÍTÁSOK A TÁBLÁZATBAN
SZÁMÍTÁSOK A TÁBLÁZATBAN Az Excelben az egyszerű adatok bevitelén kívül számításokat is végezhetünk. Ezeket a cellákba beírt képletek segítségével oldjuk meg. A képlet: olyan egyenlet, amely a munkalapon
RészletesebbenEllenőrző kérdések. 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t
Ellenőrző kérdések 2. Kis dolgozat kérdései 36. Ha t szintű indexet használunk, mennyi a keresési költség blokkműveletek számában mérve? (1 pont) log 2 (B(I (t) )) + t 37. Ha t szintű indexet használunk,
RészletesebbenAmit a törtekről tudni kell Minimum követelményszint
Amit a törtekről tudni kell Minimum követelményszint Fontos megjegyzés: A szabályoknak nem a pontos matematikai meghatározását adtuk. Helyettük a gyakorlatban használható, egyszerű megfogalmazásokat írtunk.
RészletesebbenKlasszikus algebra előadás. Waldhauser Tamás április 28.
Klasszikus algebra előadás Waldhauser Tamás 2014. április 28. 5. Számelmélet integritástartományokban Oszthatóság Mostantól R mindig tetszőleges integritástartományt jelöl. 5.1. Definíció. Azt mondjuk,
Részletesebben1. előadás: Halmazelmélet, számfogalom, teljes
1. előadás: Halmazelmélet, számfogalom, teljes indukció Szabó Szilárd Halmazok Halmaz: alapfogalom, bizonyos elemek (matematikai objektumok) összessége. Egy halmaz akkor adott, ha minden objektumról eldönthető,
Részletesebben1. Generátorrendszer. Házi feladat (fizikából tudjuk) Ha v és w nem párhuzamos síkvektorok, akkor generátorrendszert alkotnak a sík vektorainak
1. Generátorrendszer Generátorrendszer. Tétel (Freud, 4.3.4. Tétel) Legyen V vektortér a T test fölött és v 1,v 2,...,v m V. Ekkor a λ 1 v 1 + λ 2 v 2 +... + λ m v m alakú vektorok, ahol λ 1,λ 2,...,λ
Részletesebben22. GRÁFOK ÁBRÁZOLÁSA
22. GRÁFOK ÁBRÁZOLÁSA A megoldandó feladatok, problémák modellezése során sokszor gráfokat alkalmazunk. A gráf fogalmát a matematikából ismertnek vehetjük. A modellezés során a gráfok több változata is
RészletesebbenAutomaták és formális nyelvek
Automaták és formális nyelvek Bevezetés a számítástudomány alapjaiba 1. Formális nyelvek 2006.11.13. 1 Automaták és formális nyelvek - bevezetés Automaták elmélete: információs gépek általános absztrakt
RészletesebbenTypotex Kiadó. Bevezetés
Bevezetés A bennünket körülvevő világ leírásához ősidők óta számokat is alkalmazunk. Tekintsük át a számfogalom kiépülésének logikai-történeti folyamatát, amely minden valószínűség szerint a legkorábban
RészletesebbenSzámelmélet (2017. február 8.) Bogya Norbert, Kátai-Urbán Kamilla
Számelmélet (2017 február 8) Bogya Norbert, Kátai-Urbán Kamilla 1 Oszthatóság 1 Definíció Legyen a, b Z Az a osztója b-nek, ha létezik olyan c Z egész szám, melyre ac = b Jelölése: a b 2 Példa 3 12, 2
RészletesebbenBevezetés a programozásba
Bevezetés a programozásba 1. Előadás Bevezetés, kifejezések http://digitus.itk.ppke.hu/~flugi/ Egyre precízebb A programozás természete Hozzál krumplit! Hozzál egy kiló krumplit! Hozzál egy kiló krumplit
Részletesebben26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA
26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA Az előző két fejezetben tárgyalt feladat általánosításaként a gráfban található összes csúcspárra szeretnénk meghatározni a legkisebb költségű utat. A probléma
RészletesebbenMatematika 8. osztály
ELTE Apáczai Csere János Gyakorló Gimnázium és Kollégium Hat évfolyamos Matematika 8. osztály I. rész: Algebra Készítette: Balázs Ádám Budapest, 2018 2. Tartalomjegyzék Tartalomjegyzék I. rész: Algebra................................
RészletesebbenAdatszerkezetek Tömb, sor, verem. Dr. Iványi Péter
Adatszerkezetek Tömb, sor, verem Dr. Iványi Péter 1 Adat Adat minden, amit a számítógépünkben tárolunk és a külvilágból jön Az adatnak két fontos tulajdonsága van: Értéke Típusa 2 Adat típusa Az adatot
RészletesebbenA valós számok halmaza 5. I. rész MATEMATIKAI ANALÍZIS
A valós számok halmaza 5 I rész MATEMATIKAI ANALÍZIS 6 A valós számok halmaza A valós számok halmaza 7 I A valós számok halmaza A valós számokra vonatkozó axiómák A matematika lépten-nyomon felhasználja
RészletesebbenDiszkrét matematika I., 12. előadás Dr. Takách Géza NyME FMK Informatikai Intézet takach november 30.
1 Diszkrét matematika I, 12 előadás Dr Takách Géza NyME FMK Informatikai Intézet takach@infnymehu http://infnymehu/ takach 2005 november 30 Vektorok Definíció Egy tetszőleges n pozitív egész számra n-komponensű
Részletesebben3. Strukturált programok
Ha egy S program egyszerű, akkor nem lehet túl nehéz eldönteni róla, hogy megold-e egy (A,Ef,Uf) specifikációval megadott feladatot, azaz Ef-ből (Ef által leírt állapotból indulva) Uf-ben (Uf által leírt
RészletesebbenAnalízis előadás és gyakorlat vázlat
Analízis előadás és gyakorlat vázlat Készült a PTE TTK GI szakos hallgatóinak Király Balázs 2010-11. I. Félév 2 1. fejezet Számhalmazok és tulajdonságaik 1.1. Nevezetes számhalmazok ➀ a) jelölése: N b)
RészletesebbenKOVÁCS BÉLA, MATEMATIKA I.
KOVÁCS BÉLA, MATEmATIkA I. 4 IV. FÜGGVÉNYEk 1. LEkÉPEZÉSEk, függvények Definíció Legyen és két halmaz. Egy függvény -ből -ba egy olyan szabály, amely minden elemhez pontosan egy elemet rendel hozzá. Az
RészletesebbenA programozás alapfogalmai
A programozás alapfogalmai Ahhoz, hogy a programozásról beszélhessünk, definiálnunk kell, hogy mit értünk a programozás egyes fogalmain. Ha belegondolunk, nem is olyan könnyű megfogalmazni, mi is az a
RészletesebbenGy ur uk aprilis 11.
Gyűrűk 2014. április 11. 1. Hányadostest 2. Karakterisztika, prímtest 3. Egyszerű gyűrűk [F] III/8 Tétel Minden integritástartomány beágyazható testbe. Legyen R integritástartomány, és értelmezzünk az
Részletesebben9. 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 tételek Programozási feladatok megoldásakor a top-down (strukturált) programtervezés esetén három vezérlési szerkezetet használunk: - szekvencia - elágazás - ciklus Eddig megismertük az alábbi
RészletesebbenAmit a törtekről tudni kell 5. osztály végéig Minimum követelményszint
Amit a törtekről tudni kell. osztály végéig Minimum követelményszint Fontos megjegyzés: A szabályoknak nem a pontos matematikai meghatározását adtuk. Helyettük a gyakorlatban használható, egyszerű megfogalmazásokat
Részletesebben3. Fuzzy aritmetika. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI
3. Fuzzy aritmetika Gépi intelligencia I. Fodor János BMF NIK IMRI NIMGI1MIEM Tartalomjegyzék I 1 Intervallum-aritmetika 2 Fuzzy intervallumok és fuzzy számok Fuzzy intervallumok LR fuzzy intervallumok
RészletesebbenAlgoritmusok helyességének bizonyítása. A Floyd-módszer
Algoritmusok helyességének bizonyítása A Floyd-módszer Algoritmusok végrehajtása Egy A algoritmus esetében a változókat három változótípusról beszélhetünk, melyeket az X, Y és Z vektorokba csoportosítjuk
RészletesebbenMátrixjátékok tiszta nyeregponttal
1 Mátrixjátékok tiszta nyeregponttal 1. Példa. Két játékos Aladár és Bendegúz rendelkeznek egy-egy tetraéderrel, melyek lapjaira rendre az 1, 2, 3, 4 számokat írták. Egy megadott jelre egyszerre felmutatják
Részletesebben17. előadás: Vektorok a térben
17. előadás: Vektorok a térben Szabó Szilárd A vektor fogalma A mai előadásban n 1 tetszőleges egész szám lehet, de az egyszerűség kedvéért a képletek az n = 2 esetben szerepelnek. Vektorok: rendezett
RészletesebbenMatematikai logika és halmazelmélet
Matematikai logika és halmazelmélet Wettl Ferenc előadása alapján 2015-09-07 Wettl Ferenc előadása alapján Matematikai logika és halmazelmélet 2015-09-07 1 / 21 Tartalom 1 Matematikai kijelentések szerkezete
RészletesebbenRekurzió. Dr. Iványi Péter
Rekurzió Dr. Iványi Péter 1 Függvényhívás void f3(int a3) { printf( %d,a3); } void f2(int a2) { f3(a2); a2 = (a2+1); } void f1() { int a1 = 1; int b1; b1 = f2(a1); } 2 Függvényhívás void f3(int a3) { printf(
Részletesebben9. Előadás. Megyesi László: Lineáris algebra, oldal. 9. előadás Mátrix inverze, Leontyev-modell
9. Előadás Megyesi László: Lineáris algebra, 75. 84. oldal. Gondolkodnivalók Mátrix rangja 1. Gondolkodnivaló Tegyük fel, hogy egy elemi bázistranszformáció kezdetekor a sor- és oszlopindexek sorban helyezkednek
RészletesebbenA számítógépes nyelvészet elmélete és gyakorlata. Automaták
A számítógépes nyelvészet elmélete és gyakorlata Automaták Nyelvek és automaták A nyelvek automatákkal is jellemezhetőek Automaták hierarchiája Chomsky-féle hierarchia Automata: új eszköz a nyelvek komplexitásának
RészletesebbenM. 33. Határozza meg az összes olyan kétjegyű szám összegét, amelyek 4-gyel osztva maradékul 3-at adnak!
Magyar Ifjúság 6 V SOROZATOK a) Három szám összege 76 E három számot tekinthetjük egy mértani sorozat három egymás után következő elemének vagy pedig egy számtani sorozat első, negyedik és hatodik elemének
RészletesebbenNEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere
Szekvenciális programok kategóriái strukturálatlan strukturált NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE Hoare-Dijkstra-Gries módszere determinisztikus valódi korai nem-determinisztikus általános fejlett
RészletesebbenEgész számok. pozitív egész számok: 1; 2; 3; 4;... negatív egész számok: 1; 2; 3; 4;...
Egész számok természetes számok ( ) pozitív egész számok: 1; 2; 3; 4;... 0 negatív egész számok: 1; 2; 3; 4;... egész számok ( ) 1. Írd a következõ számokat a halmazábra megfelelõ helyére! 3; 7; +6 ; (
RészletesebbenSorozatok, sorok, függvények határértéke és folytonossága Leindler Schipp - Analízis I. könyve + jegyzetek, kidolgozások alapján
Sorozatok, sorok, függvények határértéke és folytonossága Leindler Schipp - Analízis I. könyve + jegyzetek, kidolgozások alapján Számsorozatok, vektorsorozatok konvergenciája Def.: Számsorozatok értelmezése:
RészletesebbenRelációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!
függvények RE 1 Relációk Függvények függvények RE 2 Definíció Ha A, B és ρ A B, akkor azt mondjuk, hogy ρ reláció A és B között, vagy azt, hogy ρ leképezés A-ból B-be. Ha speciálisan A=B, azaz ρ A A, akkor
RészletesebbenSzámsorozatok (1) First Prev Next Last Go Back Full Screen Close Quit
Számsorozatok (1) First Prev Next Last Go Back Full Screen Close Quit 1. Valós számsorozaton valós számok meghatározott sorrendű végtelen listáját értjük. A hangsúly az egymásután következés rendjén van.
RészletesebbenMinden egész szám osztója önmagának, azaz a a minden egész a-ra.
1. Számelmélet Definíció: Az a egész szám osztója a egész számnak, ha létezik olyan c egész szám, melyre = ac. Ezt a következőképpen jelöljük: a Tulajdonságok: Minden egész szám osztója önmagának, azaz
RészletesebbenVéges automaták, reguláris nyelvek
Véges automaták, reguláris nyelvek Kiegészítő anyag az lgoritmuselmélet tárgyhoz (a Rónyai Ivanyos Szabó: lgoritmusok könyv mellé) Friedl Katalin BME SZIT friedl@cs.bme.hu 27. augusztus 3. véges automata
RészletesebbenEgészrészes feladatok
Kitűzött feladatok Egészrészes feladatok Győry Ákos Miskolc, Földes Ferenc Gimnázium 1. feladat. Oldjuk meg a valós számok halmazán a { } 3x 1 x+1 7 egyenletet!. feladat. Bizonyítsuk be, hogy tetszőleges
RészletesebbenBBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga
BABEȘ BOLYAI TUDOMÁNYEGYETEM MATEMATIKA ÉS INFORMATIKA KAR A. tételsor (30 pont) 1. (5p) Tekintsük a következő alprogramot: Alprogram f(a): Ha a!= 0, akkor visszatérít: a + f(a - 1) különben visszatérít
RészletesebbenEgyenletek, egyenlőtlenségek X.
Egyenletek, egyenlőtlenségek X. DEFINÍCIÓ: (Logaritmus) Ha egy pozitív valós számot adott, 1 - től különböző pozitív alapú hatvány alakban írunk fel, akkor ennek a hatványnak a kitevőjét logaritmusnak
RészletesebbenFelvételi tematika INFORMATIKA
Felvételi tematika INFORMATIKA 2016 FEJEZETEK 1. Természetes számok feldolgozása számjegyenként. 2. Számsorozatok feldolgozása elemenként. Egydimenziós tömbök. 3. Mátrixok feldolgozása elemenként/soronként/oszloponként.
RészletesebbenProgramozás I. 1. előadás: Algoritmusok alapjai. Sergyán Szabolcs
Programozás I. 1. előadás: Algoritmusok alapjai Sergyán Szabolcs sergyan.szabolcs@nik.uni-obuda.hu Óbudai Egyetem Neumann János Informatikai Kar Alkalmazott Informatikai Intézet 2015. szeptember 7. Sergyán
RészletesebbenAlgoritmuselmélet 18. előadás
Algoritmuselmélet 18. előadás Katona Gyula Y. Budapesti Műszaki és Gazdaságtudományi Egyetem Számítástudományi Tsz. I. B. 137/b kiskat@cs.bme.hu 2002 Május 7. ALGORITMUSELMÉLET 18. ELŐADÁS 1 Közelítő algoritmusok
RészletesebbenBevezetés a programozásba I.
Bevezetés a programozásba I. 3. gyakorlat Tömbök, programozási tételek Surányi Márton PPKE-ITK 2010.09.21. ZH! PlanG-ból papír alapú zárthelyit írunk el reláthatólag október 5-én! Tömbök Tömbök Eddig egy-egy
Részletesebben1. Részcsoportok (1) C + R + Q + Z +. (2) C R Q. (3) Q nem részcsoportja C + -nak, mert más a művelet!
1. Részcsoportok A részcsoport fogalma. 2.2.15. Definíció Legyen G csoport. A H G részhalmaz részcsoport, ha maga is csoport G műveleteire nézve. Jele: H G. Az altér fogalmához hasonlít. Példák (1) C +
RészletesebbenHALMAZOK. A racionális számok halmazát olyan számok alkotják, amelyek felírhatók b. jele:. A racionális számok halmazának végtelen sok eleme van.
HALMAZOK Tanulási cél Halmazok megadása, halmazműveletek megismerése és alkalmazása, halmazok ábrázolása Venn diagramon. Motivációs példa Egy fogyasztó 80 000 pénzegység jövedelmet fordít két termék, x
RészletesebbenKinematika szeptember Vonatkoztatási rendszerek, koordinátarendszerek
Kinematika 2014. szeptember 28. 1. Vonatkoztatási rendszerek, koordinátarendszerek 1.1. Vonatkoztatási rendszerek A test mozgásának leírása kezdetén ki kell választani azt a viszonyítási rendszert, amelyből
RészletesebbenProgramozási tételek. Dr. Iványi Péter
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,
RészletesebbenA 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
Oktatási Hivatal 2015/2016 tanévi Országos Középiskolai Tanulmányi Verseny első forduló javítási-értékelési útmutató INFORMTIK II. (programozás) kategória Kérjük a tisztelt tanár kollégákat, hogy a dolgozatokat
RészletesebbenMindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1
Halmazok 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 2 A fejezet legfontosabb elemei Halmaz megadási módjai Halmazok közti műveletek (metszet,
RészletesebbenMindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.
HA 1 Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) HA 2 Halmazok HA 3 Megjegyzések A halmaz, az elem és az eleme fogalmakat nem definiáljuk, hanem alapfogalmaknak
RészletesebbenHORVÁTH ZSÓFIA 1. Beadandó feladat (HOZSAAI.ELTE) ápr 7. 8-as csoport
10-es Keressünk egy egész számokat tartalmazó négyzetes mátrixban olyan oszlopot, ahol a főátló alatti elemek mind nullák! Megolda si terv: Specifika cio : A = (mat: Z n m,ind: N, l: L) Ef =(mat = mat`)
RészletesebbenMegoldott feladatok IX. osztály 7 MEGOLDOTT FELADATOK A IX. OSZTÁLY SZÁMÁRA
Megoldott eladatok IX. osztály 7 MEGOLDOTT FELADATOK A IX. OSZTÁLY SZÁMÁRA. Az : R R üggvény teljesíti az ( + y) = ( a y) + ( y) ( a ) összeüggést bármely,y R esetén (a egy rögzített valós szám). Bizonyítsd
RészletesebbenDiszkrét matematika I. gyakorlat
Vizsgafeladatok megoldása 2012. december 5. Tartalom Teljes feladatsor #1 1 Teljes feladatsor #1 2 Teljes feladatsor #2 3 Teljes feladatsor #3 4 Teljes feladatsor #4 5 Válogatott feladatok 6 Végső bölcsesség
RészletesebbenÉrdemes egy n*n-es táblázatban (sorok-lányok, oszlopok-fiúk) ábrázolni a két színnel, mely éleket húztuk be (pirossal, kékkel)
Kombi/2 Egy bizonyos bulin n lány és n fiú vesz részt. Minden fiú pontosan a darab lányt és minden lány pontosan b darab fiút kedvel. Milyen (a,b) számpárok esetén létezik biztosan olyan fiúlány pár, akik
Részletesebben4. Fuzzy relációk. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI
4. Fuzzy relációk Gépi intelligencia I. Fodor János BMF NIK IMRI NIMGI1MIEM Tartalomjegyzék I 1 Klasszikus relációk Halmazok Descartes-szorzata Relációk 2 Fuzzy relációk Fuzzy relációk véges alaphalmazok
RészletesebbenOccam 1. Készítette: Szabó Éva
Occam 1. Készítette: Szabó Éva Párhuzamos programozás Egyes folyamatok (processzek) párhuzamosan futnak. Több processzor -> tényleges párhuzamosság Egy processzor -> Időosztásos szimuláció Folyamatok közötti
Részletesebben1. A komplex számok definíciója
1. A komplex számok definíciója A számkör bővítése Tétel Nincs olyan n természetes szám, melyre n + 3 = 1. Bizonyítás Ha n természetes szám, akkor n+3 3. Ezért bevezettük a negatív számokat, közöttük van
RészletesebbenMegoldások 9. osztály
XXV. Nemzetközi Magyar Matematikaverseny Budapest, 2016. március 1115. Megoldások 9. osztály 1. feladat Nevezzünk egy számot prímösszeg nek, ha a tízes számrendszerben felírt szám számjegyeinek összege
RészletesebbenSzámelméleti alapfogalmak
1 Számelméleti alapfogalmak 1 Definíció Az a IN szám osztója a b IN számnak ha létezik c IN melyre a c = b Jelölése: a b 2 Példa a 0 bármely a számra teljesül, mivel c = 0 univerzálisan megfelel: a 0 =
RészletesebbenRE 1. Relációk Függvények. A diákon megjelenő szövegek és képek csak a szerző (Kocsis Imre, DE MFK) engedélyével használhatók fel!
RE 1 Relációk Függvények RE 2 Definíció: Ha A, B és ρ A B, akkor azt mondjuk, hogy ρ reláció A és B között, vagy azt, hogy ρ leképezés A-ból B-be. Ha speciálisan A=B, azaz ρ A A, akkor azt mondjuk, hogy
RészletesebbenLogika es sz am ıt aselm elet I. r esz Logika 1/36
1/36 Logika és számításelmélet I. rész Logika 2/36 Elérhetőségek Tejfel Máté Déli épület, 2.606 matej@inf.elte.hu http://matej.web.elte.hu Tankönyv 3/36 Tartalom 4/36 Bevezető fogalmak Ítéletlogika Ítéletlogika
Részletesebben0,424 0,576. f) P (X 2 = 3) g) P (X 3 = 1) h) P (X 4 = 1 vagy 2 X 2 = 2) i) P (X 7 = 3, X 4 = 1, X 2 = 2 X 0 = 2) j) P (X 7 = 3, X 4 = 1, X 2 = 2)
Legyen adott a P átmenetvalószín ség mátrix és a ϕ 0 kezdeti eloszlás Kérdés, hogy miként lehetne meghatározni az egyes állapotokban való tartózkodás valószín ségét az n-edik lépés múlva Deniáljuk az n-lépéses
RészletesebbenMatematika (mesterképzés)
Matematika (mesterképzés) Környezet- és Településmérnököknek Debreceni Egyetem Műszaki Kar, Műszaki Alaptárgyi Tanszék Vinczéné Varga A. Környezet- és Településmérnököknek 2016/2017/I 1 / 29 Lineáris tér,
Részletesebben5. feladatsor megoldása
megoldása I. rész ( ) = 1. x x, azaz C) a helyes válasz, mivel a négyzetgyökvonás eredménye csak nemnegatív szám lehet.. A húrnégyszögek tétele szerint bármely húrnégyszög szemközti szögeinek összege 180.
RészletesebbenNUMERIKUS SOROK I. A feladat ekvivalens átfogalmazása a következő végtelen sok tagú összegnek a meghatározása ) 1 21
NUMERIKUS SOROK I. Ha az {a n } (n N) sorozat elemeiből egy új {s n } (n N) sorozatot képezünk olyan módon, hogy s = a, s 2 = a + a 2,, s n = a + a 2 + + a n,, akkor ezt numerikus sornak (vagy csak simán
RészletesebbenKOVÁCS BÉLA, MATEMATIKA I.
KOVÁCS BÉLA MATEmATIkA I 8 VIII VEkTOROk 1 VEkTOR Vektoron irányított szakaszt értünk Jelölése: stb Vektorok hossza A vektor abszolút értéke az irányított szakasz hossza Ha a vektor hossza egységnyi akkor
RészletesebbenEgyenletek, egyenlőtlenségek VII.
Egyenletek, egyenlőtlenségek VII. Magasabbfokú egyenletek: A 3, vagy annál nagyobb fokú egyenleteket magasabb fokú egyenleteknek nevezzük. Megjegyzés: Egy n - ed fokú egyenletnek legfeljebb n darab valós
RészletesebbenFüggvények növekedési korlátainak jellemzése
17 Függvények növekedési korlátainak jellemzése A jellemzés jól bevált eszközei az Ω, O, Θ, o és ω jelölések. Mivel az igények általában nemnegatívak, ezért az alábbi meghatározásokban mindenütt feltesszük,
Részletesebben