I. RÉSZ PROGRAMOZÁSI FOGALMAK

Méret: px
Mutatás kezdődik a ... oldaltól:

Download "I. RÉSZ PROGRAMOZÁSI FOGALMAK"

Á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

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észletesebben

PROGRAMOZÁS VISSZAVEZETÉSSEL

PROGRAMOZÁ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észletesebben

Bevezetés az informatikába

Bevezeté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észletesebben

PROGRAM STATIKUS FOGALMA DINAMIKUSAN VÁLTOZÓ ÁLLAPOTTÉRBEN 1

PROGRAM 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észletesebben

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

ALAPFOGALMAK 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észletesebben

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

Programozá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észletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁ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észletesebben

Brósch Zoltán (Debreceni Egyetem Kossuth Lajos Gyakorló Gimnáziuma) Számelmélet I.

Bró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észletesebben

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

3. előadás. Programozás-elmélet. A változó fogalma Kiterjesztések A feladat kiterjesztése A program kiterjesztése Kiterjesztési tételek Példa 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észletesebben

Programozási módszertan

Programozá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észletesebben

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

1. 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észletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁ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észletesebben

Programozási segédlet

Programozá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észletesebben

Az R halmazt a valós számok halmazának nevezzük, ha teljesíti az alábbi 3 axiómacsoport axiómáit.

Az 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észletesebben

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

5. 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észletesebben

Halmazelmé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 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észletesebben

I. Egyenlet fogalma, algebrai megoldása

I. 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észletesebben

OSZTHATÓ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.

OSZTHATÓ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észletesebben

15. LINEÁRIS EGYENLETRENDSZEREK

15. 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észletesebben

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

Elő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észletesebben

Struktúra nélküli adatszerkezetek

Struktú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észletesebben

Diszkrét matematika II., 8. előadás. Vektorterek

Diszkré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észletesebben

Webprogramozás szakkör

Webprogramozá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észletesebben

LINEÁRIS PROGRAMOZÁSI FELADATOK MEGOLDÁSA SZIMPLEX MÓDSZERREL

LINEÁ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.

ú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észletesebben

2014. szeptember 24. és 26. Dr. Vincze Szilvia

2014. 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észletesebben

f(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

f(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észletesebben

Hatványozás. A hatványozás azonosságai

Hatvá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észletesebben

Diszkrét matematika I.

Diszkré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észletesebben

SZÁMÍTÁSOK A TÁBLÁZATBAN

SZÁ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észletesebben

Ellenő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. 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észletesebben

Amit a törtekről tudni kell Minimum követelményszint

Amit 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észletesebben

Klasszikus algebra előadás. Waldhauser Tamás április 28.

Klasszikus 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észletesebben

1. előadás: Halmazelmélet, számfogalom, teljes

1. 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észletesebben

1. 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. 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észletesebben

22. GRÁFOK ÁBRÁZOLÁSA

22. 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észletesebben

Automaták és formális nyelvek

Automatá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észletesebben

Typotex Kiadó. Bevezetés

Typotex 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észletesebben

Szá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 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észletesebben

Bevezetés a programozásba

Bevezeté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észletesebben

26. MINIMÁLIS KÖLTSÉGŰ UTAK MINDEN CSÚCSPÁRRA

26. 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észletesebben

Matematika 8. osztály

Matematika 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észletesebben

Adatszerkezetek Tömb, sor, verem. Dr. Iványi Péter

Adatszerkezetek 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észletesebben

A 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 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észletesebben

Diszkrét matematika I., 12. előadás Dr. Takách Géza NyME FMK Informatikai Intézet takach november 30.

Diszkré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észletesebben

3. Strukturált programok

3. 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észletesebben

Analízis előadás és gyakorlat vázlat

Analí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észletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁ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észletesebben

A programozás alapfogalmai

A 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észletesebben

Gy ur uk aprilis 11.

Gy 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észletesebben

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.

9. előadás. Programozás-elmélet. Programozási tételek Elemi prog. Sorozatszámítás Eldöntés Kiválasztás Lin. keresés Megszámolás Maximum. Programozási 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észletesebben

Amit a törtekről tudni kell 5. osztály végéig Minimum követelményszint

Amit 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észletesebben

3. Fuzzy aritmetika. Gépi intelligencia I. Fodor János NIMGI1MIEM BMF NIK IMRI

3. 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észletesebben

Algoritmusok helyességének bizonyítása. A Floyd-módszer

Algoritmusok 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észletesebben

Mátrixjátékok tiszta nyeregponttal

Má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észletesebben

17. előadás: Vektorok a térben

17. 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észletesebben

Matematikai logika és halmazelmélet

Matematikai 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észletesebben

Rekurzió. Dr. Iványi Péter

Rekurzió. 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észletesebben

9. 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, 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észletesebben

A 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 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észletesebben

M. 33. Határozza meg az összes olyan kétjegyű szám összegét, amelyek 4-gyel osztva maradékul 3-at adnak!

M. 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észletesebben

NEM-DETERMINISZTIKUS PROGRAMOK HELYESSÉGE. Szekvenciális programok kategóriái. Hoare-Dijkstra-Gries módszere

NEM-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észletesebben

Egé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. 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észletesebben

Sorozatok, 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 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észletesebben

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!

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! 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észletesebben

Szá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 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észletesebben

Minden egész szám osztója önmagának, azaz a a minden egész a-ra.

Minden 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észletesebben

Véges automaták, reguláris nyelvek

Vé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észletesebben

Egészrészes feladatok

Egé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észletesebben

BBTE Matek-Infó verseny mintatételsor Informatika írásbeli vizsga

BBTE 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észletesebben

Egyenletek, egyenlőtlenségek X.

Egyenletek, 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észletesebben

Felvételi tematika INFORMATIKA

Felvé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észletesebben

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

Programozá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észletesebben

Algoritmuselmélet 18. előadás

Algoritmuselmé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észletesebben

Bevezetés a programozásba I.

Bevezeté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észletesebben

1. 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 (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észletesebben

HALMAZOK. 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. 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észletesebben

Kinematika szeptember Vonatkoztatási rendszerek, koordinátarendszerek

Kinematika 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észletesebben

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

Programozá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észletesebben

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

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 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észletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Mindent 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észletesebben

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Mindent 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észletesebben

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

HORVÁ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észletesebben

Megoldott feladatok IX. osztály 7 MEGOLDOTT FELADATOK A IX. OSZTÁLY SZÁMÁRA

Megoldott 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észletesebben

Diszkrét matematika I. gyakorlat

Diszkré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)

É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észletesebben

4. 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 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észletesebben

Occam 1. Készítette: Szabó Éva

Occam 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észletesebben

1. A komplex számok definíciója

1. 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észletesebben

Megoldások 9. osztály

Megoldá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észletesebben

Számelméleti alapfogalmak

Szá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észletesebben

RE 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. 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észletesebben

Logika es sz am ıt aselm elet I. r esz Logika 1/36

Logika 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észletesebben

0,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)

0,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észletesebben

Matematika (mesterképzés)

Matematika (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észletesebben

5. feladatsor megoldása

5. 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észletesebben

NUMERIKUS SOROK I. A feladat ekvivalens átfogalmazása a következő végtelen sok tagú összegnek a meghatározása ) 1 21

NUMERIKUS 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észletesebben

KOVÁCS BÉLA, MATEMATIKA I.

KOVÁ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észletesebben

Egyenletek, egyenlőtlenségek VII.

Egyenletek, 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észletesebben

Függvények növekedési korlátainak jellemzése

Fü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