A számítógép programozásáról. A számítógép felépítésének elvi szerkezeti vázlata. A memória
|
|
- Aurél Csonka
- 5 évvel ezelőtt
- Látták:
Átírás
1 Programtervezési ismeretek A számítógép programozásáról A számítógép felépítésének elvi szerkezeti vázlata Rendszeróra CPU Vezérlő egység CPU=Central Processor Unit (Központi Vezérlő Egység) ALU=Arithmetical-Logical Unit (Aritmetikai-Logikai Egység ALU Központi memória Winchester Nyomtató Regiszterek Sin (busz) vezérlőjel, cím, adat A memória A számítógép központi memóriája tulajdonképpen byte-ok sorozata. A byte-ok elhelyezkedése logikailag a meóriában lineáris, azaz egymást követik. A byte-ok azonosítása a címükkel történik. Minden byte-nak van egy rá és csak rá vonatkozó fizikai címe, ami nem más, mint a byte sorszáma. A memória kezdőbyte-jának a sorszáma (címe) zérus és a továbbiaké egyesével növekszik, ahogy haladunk tovább a memóriában. Egy b byte címének jelölésére jelölést fogjuk alkalmazni. Nem témánk annak tárgyalása, hogy ezt a címet fizikailag hogyan valósítják meg, milyen összetevőkből alakul ki. A memória méretét, nagyságát, memória-kapacitását a byte mellett kényelmesebb nagyobb egységben megadni. Ilyenek a kilobyte (Kb), 1Kb=1024byte, a megabyte (Mb), 1Mb=1024Kb, a gigabyte (Gb), 1 Gb=1024Mb, a terrabyte (Tb), 1Tb=1024Gb. A mai PC-ken 32-bites címmel számolva (32 eres címvezeték) 4 gigabyte méretű memórák is lehetnek, amely kb. 4 milliárd byte-ot jelent. A byte mellett fontos fogalom a rekesz, amely fogalom azonban már absztrakció következménye, mivel a memória fizikailag nem különböztet meg rekeszeket. A rekesz egymást követő byte-ok egy véges sorozata, amelynek méretét, bitjeinek, byte-jainak belső szerkezetét mi írjuk elő akkor, amikor a benne tárolt adat típusát megadjuk. Mivel a rekesz a memória egy logikai egysége, ezért van címe, ezzel hivatkozunk rá, és ez a rekeszt alkotó byte-ok közül a legelső (a legalacsonyabb című), a kezdőbyte címével egyezik meg. Például egy négybyte-os egész számot tartalmazó rekesz címe a négy byte közül a kezdőbyte címe lesz. A magasszintű programozási nyelvekben nekünk nem kell a címekkel törődnünk, mivel a rekeszeknek nevet adunk és majd a program fordítása során a név címmel helyettesítődik. A memória egy passzív tároló. Csak arra képes, hogy a beleírt információt, biteket, byte-okat tárolja, és igény esetén engedje kiolvasni, vagy átírni, megváltoztatni. A kiolvasás nem változtatja meg a memóriát, az ott tárolt információ megmarad. A beíráskor az előző tartalom elvész és az új helyettesíti. A memória minden byte-jában a gép üzemelése során mindig van valami, legfeljebb számunkra érdektelen. Még akkor is van a byte-oknak tartalma, ha mi oda nem tettünk semmit. Ekkor az előző programok, vagy az operációs rendszer által otthagyott információt találjuk ott, de hogy az mi, nem tudhatjuk. A memória azért fontos, mert egy feladat megoldása közben a megoldás lebonyolítására készített program is, és a műveletek végzéséhez szükséges adatok is legalább a feldolgozás egy szakasza alatt a memóriában vannak. Egy program logikailag három fő részből áll: a kódterület, az adatterület és a veremterület. (Fizikailag a programterület is és az adatterület is állhat több területdarabból.)
2 Programtervezési ismeretek Ezen területeket szegmenseknek nevezzük. A kódszegmensben a feladat megoldásához alkotott parancsok, utasítások állnak, amelyek a processzornak szólnak. A processzor ezeket olvassa egymás után és hajtja őket végre, tehát a processzor az utasításokat a memóriából veszi. Az adatszegmensben helyezkednek el az adatok, amelyeken az utasítások végrehajtják az előírt műveleteket. A veremszegmens, amely szintén a memóriában helyezkedik el, hasznosan használható fel a hatékony programvégrehajtáshoz. A veremben átmenetileg tárolunk fontos információkat, vagy átmeneti időre segédtárolóként használjuk. Szerepét később világítjuk meg. A program szegmensei a memóriában nem feltétlen egymás mellett helyezkednek el. Sematikusan ábrázolva: kódszegmens Adatszegmens Veremszegmens x x x x x x x x x x x x x x A számítógép lelke a Rendszeróra (System clock), amely megadott ütemben (frekvenciával) impulzusokat bocsát ki. Ezek az impulzusok vezérlik a kapuáramköröket és ezáltal az processzor munkáját az utasítások végrehajtására. Az utasítás végrehajtása mindig óraütésre indul, de lehet, hogy több óraütés idejéig tart. A CPU fontos egysége az Aritmetikai-Logikai Egység, amely azokat az aritmetikai, logikai műveleteket hajtja végre, amelyekkel a Vezérlő egység megbízza. A műveletek elvégzéséhez szükség van a Regiszterblokkra, amely a memóriához hasonló szervezésű rekeszeket tartalmaz, de a memóriától elkülönülten, más (jóval drágább) fizikai felépítéssel, és ami lényeges, lényegesen gyorsabb elérhetőséggel, mint a memória. Mérete kicsi, néhány (tucat) tárolóregiszterből áll. Ezek egy részét a programutasítások (azaz a program készítője) elérheti, míg más részüket nem, hanem a hardver kezeli az utasításoknak megfelelően. A legfőbb regiszterek az alábbiak szoktak lenni. - IP regiszter (Instruction Pointer, utasításmutató). A processzor számára mutatja a következő végrehajtandó utasítás memóriabeli címét. - IR regiszter (Instruction Register, utasítás regiszter). A memóriából kiolvasott utasítást a processzor itt tárolja és elemzi. - Akkumulátor regiszter. Az aritmetikai-logikai műveletek eredményét tárolja (összeadás, kivonás, szorzás, osztás, VAGY, ÉS, NEM, KIZÁRÓ VAGY, eltolások, bitműveletek stb.) - Bázisregiszter. Valamely memóriabyte címét tárolja. Rajta keresztül is elérhetjük a memóriabyte-ot. - Indexregiszter. Egy bytecímhez képesti eltolódást ad meg. - Szegmensregiszterek. Az egyes szegmensek (program, adat, verem) kezdőcímét adják meg. - Bázis Pointer regiszter. A veremben történő adatelérést könnyíti meg. - SP regiszter (Stack Pointer). A verem tetejének a címét tartalmazza. - FR Flag regiszter. Jelzőbitek regisztere. Minden bitjének van valamilyen szerepe, jelez valamit. Az utasítások és a műveletek beállíthatják ezen bitek értékét és ezáltal mód nyílik a program utasításainak a végrehajtásában eltérni a sorrendtől (elágaztatni) a jelzőbít (flag) értékétől függően (ugró utasítások). Egyes bitek a számítógép üzemmódját határozzák meg. A processzor a rá jellemző, az áramköreibe beépített utasításokat tudja csak végrehajtani, ezeket gépi kódú utasításoknak nevezzük. A gépi kódú utasítások típusai: általában regiszterregiszter, regiszter-memória, vagy memória-memória. Ez a besorolás azt jellemzi, hogy a műveletek milyen kiinduló és célrekeszek között zajlanak. A memória-memória típus nagyon ritka, mivel lassú (kétszer is ki kell nyúlni a memóriába az utasítás végrehajtása közben).
3 Programtervezési ismeretek Az utasításokat a műveletek szerint is csoportosíthatjuk. Így beszélhetünk - adatmozgató utasításokról, - egyszerű aritmetikai utasításokról, - logikai utasításokról, - shiftelő és rotáló (eltoló és forgató) utasításokról, - összehasonlító utasításokról, - feltétel nélküli és feltételes ugró utasításokról, - sztringkezelő utasításokról, - veremkezelő utasításokról, - procedúrakezelő (hívó és visszatérő) utasításokról, - megszakításkezelő utasításokról, - koprocesszor utasításokról, (társprocesszor, amely főként a lebegőpontos műveletek elvégzésére készült, ma már a processzorral egy tokban helyezkedik el), - Fizikai szintű I/O (Input/Output, Bemeneti/Kimeneti) utasításokról, stb. A processzor működési sémája A processzor megadott lépések sorát végzi ciklikusan, míg csak ki nem kapcsolják a gépet. Ezek a lépések sematikusan: 1. Utasítás kiolvasása a memóriából arról a címről, amit az utasításmutató regiszter (IP) mutat. 2. Az utasításmutató regiszter (IP) módosítása az utasítás hossza alapján (növelés). 3. Az utasítás dekódolása, értelmezése, mit kell csinálnia a processzornak, és honnan vegye hozzá az adatokat (adatok címei). 4. Az utasítás végrehajtása. Egy ilyen ciklus után az egész kezdődik elölről. A számítógépes programozás területéről több fogalomra lesz szükségünk annak ellenére, hogy igazán egyetlen programozási nyelv mellett sem kötelezzük el magunkat. A számításaink, adatokon végzett tevékenységeink elvégzéséhez gépi utasítások, parancsok rögzített sorozatára lesz szükségünk. Ezeket összefogva programnak fogjuk nevezni. A programot valamilyen magas szintű programozási nyelven (az ember gondolkodásmódjához közel álló nyelven) írjuk meg, majd azt a gép nyelvére egy fordítóprogram (compiler) segítségével fordítjuk le (remélhetően jól). Ezt a lefordított, úgynevezett gépi kódban lévő programot fogja a processzor végrehajtani. Ha van interpreter programunk, akkor azzal is megoldható a feladatvégzésnek a gépre történő átvitele. Ebben az esetben az interpreter program (ami maga gépi kódban van) fogja olvasni a mi programunk szövegét, értelmezni és végre is hajtani az ott leírtakat. Nyilvánvaló, hogy ez az utóbbi lelassítja a programunk végrehajtását, hiszen újra és újra értelmezni kell az utasításokat. A kétféle munkamenetet az alábbi ábra szemlélteti. Forrásprogram Adatok Fordítóprogram Gépi kódú program Program eredményei Forrásprogram Adatok Interpreter Program eredményei
4 Programtervezési ismeretek Főprogram, - eljárások, procedúrák - - saját - - könyvtári (beépített, vagy külső) - - operációs rendszer szolgáltatásai Egy program felépítése Egy program indításakor a főprogram indul el a logikailag kezdő utasításával, működés közben pedig procedúrák is meghívódhatnak általa, vagy akár ezek egymást is hívogathatják. Definíció: Procedúra A procedúra logikailag önálló, zárt programegység, amely egy specializált részfeladatot old meg. A procedúra egy aktivizáló (hívó) utasítás hatására kezd el működni. Addig működik, amíg egy befejező utasításhoz nem ér, amikor a hívás helyét követő helyre (a hívó utasítást követő utasításra) visszaadja a vezérlést. A procedúra a többi eljárással, a főprogrammal a softvare interface-en (programozói csatoló felületen) keresztül tartja a kapcsolatot. Ez a gyakorlatban általában paraméterlistát és/vagy globális változó(ka)t jelent. Input paraméterek Procedúra Output paraméterek Definíció: Globális változó Olyan adatrekesz, amely a program futása, munkája alatt mindvégig létezik, és a programból mindenhonnan (főprogram, procedúrák) látható, elérhető. Definíció: Lokális változó Olyan adatrekesz, amely csak az adott programegységben (procedúra) létezik, míg az aktív. Máshonnan nem látható, nem érhető el. Megszűnik, mihelyst a procedúra befejezi a minkáját. Általában a veremben található. Definíció: Dinamikus változó Olyan adatrekesz, amely a program futása közben jön létre (a programozó általi) extra memória igénylésével és futás közben meg is szüntethető az általa lefoglalt memória felszabadításásval. A heap (kupac) területen helyezkedik el, az adat- és veremszegmensen kívül. Procedúrák paraméterlistája szerepel a procedúra leírásakor (deklarációjakor), és a procedúra hívási utasításában is. A deklarációban szereplő neve formális paraméterlista, a hívásban szereplőé aktuális paraméterlista. A paraméterlistát jellemzi a benne felsorolt elemek darabszáma, típusa és sorrendje. A listaelemek lehetnek értékük szerint megadva érték szerinti hívás és lehetnek cím szerint megadva cím szerinti hívás. A jelentésük benne van a neveikben. Az érték szerinti paraméter átadáskor a procedúra értéket kap, amivel ugyan számolni tud, de nem tudja, hogy az érték honnan jött, ezért ha meg is változtatja, az eredeti helyén az adat változatlan marad, mivel rejtve van, a változás csak a másolatként átadott értéken történik meg, ami a visszatérés során elvész.
5 Programtervezési ismeretek A cím szerint paraméter átadáskor az adatot tartalmazó memóriarekesz címét adjuk át, ami alapján a procedúra megtalálja az adatot a memóriában, számol vele és akár az erdeti helyén a cím birtokában meg is változtathatja azt. A procedúrahívás (eljáráshívás) mechanizmusa Hívó programegység végzi Hívott programegység (procedúra) végzi Hívó programegység végzi 1. Paraméterek lerakása a verembe. 2. Visszatérési cím lerakása a verembe és elugrás a procedúra kezdő utasítására. 3. Ha kell, a lokális változók számára helyfoglalás a veremben. 4. Számolás, az eljárásra bízott feladat elvégzése. 5. Lokális változók törlése a veremből. 6. Visszatérési cím ürítése a veremből és visszatérés a visszatérési cím szerinti helyen lévő utasításhoz. 7. Paraméterek ürítése a veremből. A programok általában procedúrák (eljárások) sokaságát tartalmazzák. Ezek a zárt programegységek egy-egy kisebb feladat elvégzésére specializáltak. A program többi részével csak a paramétereik révén tartják a kapcsolatot. Fekete doboznak kell őket tekintenünk, amin azt értjük, hogy nem ismerjük a belső szerkezetüket. A dobozra rá van írva, hogy miből mit csinál. Vannak (lehetnek) bemenő (input) és vannak (lehetnek) kimenő (output) paraméterei. A bemenetet alakítják át a kimenetté. Ha ismerjük a procedúra belső szerkezetét, mert mondjuk mi készítettük, akkor fehér doboz a neve, ha nem ismerjük, mert nem vagyunk kíváncsiak rá, vagy másoktól kaptuk, akkor fekete doboz szerkezet a neve. Például készíthetünk olyan procedúrát, amely bekéri (input) az a, b, c három valós számot, melyeket egy ax 2 +bx+c kifejezés (itt x valós szám, változó) konstans együtthatóinak tekint, majd eredményül (output) meghatározza a kifejezés valós gyökeinek a számát és ha van(nak) gyök(ök), akkor az(oka)t is megadja. Példa egy lehetséges másik procedúrára: egy file nevének ismeretében a procedúra a file rekordjait valamilyen szempont szerint megfelelő sorrendbe rakja (rendezi), például neveket ábécé szerinti sorrendbe rak. A procedúrák által használt memóriarekeszek a paramétereket és a globálisakat kivéve a zártságnak köszönhetően lokálisak a procedúrára nézve. Csak addig foglaltak, míg a procedúra dolgozik, aktív. A procedúrát munkára fogni az aktivizáló utasítással lehet. Ezt eljáráshívásnak is nevezik. Az aktivizált procedúra lehet saját maga az aktivizáló is, ekkor rekurzív hívásról beszélünk, a procedúrát pedig rekurzív procedúrának nevezzük. A procedúra munkája végén a vezérlés visszaadódik az aktivizáló utasítást követő utasításra. Ezt a mechanizmust a verem (stack) révén valósítjuk meg. A verem a memóriának a programfutás idejére egy erre a célra kiválasztott része. A procedúra aktivizálásakor ide kerülnek beírásra a procedúra paraméterei és a visszatérési cím (az aktivizáló utasítást követő utasítás címe). A procedúrából való visszatéréskor ezen cím és információk alapján tudjuk folytatni a munkát, a programot. A visszatéréskor a veremből az aktivizálási információk törlődnek. Ha a procedúra aktivizál egy másik procedúrát, akkor a verembe a korábbiakat követően az új aktivizálási információk is bekerülnek, azt mondjuk, hogy a verem mélyül, a veremmélység szintszáma eggyel nő. Kezdetben a verem üres, a szintszám zérus, procedúrahíváskor a szintszám nő eggyel, visszatéréskor csökken eggyel. Az egyes szintek nem feltétlenül jelentenek ugyanolyan mennyiségű területfoglalást a veremből. A dolog pikantériájához tartozik továbbá, hogy a procedúra a lokális változóit is a verembe szokta helyezni, csak ezt közvetlenül nem érzékeljük, mivel a visszatéréskor ezek onnan törlődnek, a helyük felszabadul. Időnként azonban a hatás sajnálatosan látványos, amikor verem túlcsordulás (stack overflow) miatt hibajelzést kapunk és a program futása, a feladat megoldásának menete megszakad. Adódhat
6 Programtervezési ismeretek azonban úgy is, hogy mindenféle hibajelzés nélkül lefagy a gép. A veremnek a valóságban van egy felső mérethatára, amelyet nagyon nem tanácsos túllépni. Ugyanilyen veszélyes a verem alulcsordulás (stack underflow) hiba is, amikor az üres veremből akarunk valamit eltávolítani, kivenni. Nézzünk egy példát a veremhasználatra. Tegyük fel, hogy össze kell adni 5 egész számot és erre programot készítünk. Ugyanakkor óvatosak vagyunk, mert sejtjük, hogy más alkalommal esetleg nem öt, hanem hat, hét, stb. számot kell majd összeadni, ezért úgy írjuk meg, hogy a programot egy bizonyos határig, mondjuk, 20 számig lehessen használni. A program kérje be az összeadandó számok számát, majd a számokat, végezze el az összegzést, és írja ki a végösszeget! Az összegzés gyakran előforduló részfeladat, ezért rá külön procedúrát készítünk, hogy esetleg más programokban is felhasználhassuk. Először az összegző procedúrát készítjük el például az alábbi módon. A procedúra neve legyen Summa és legyen paramétere egy A tömb (vektor) címe. A tömb részére 20 memóriarekeszt foglalunk le. Legyen továbbá paramétere az n szám, amely azt mutatja meg, hogy a tömb egyes indexű elemével kezdve, az n-essel bezárólag kell összegezni a tömbelemeket. Paraméterként (output paraméter) kell megadnunk azt is, hogy hova kerüljön az összeg. Ennek a rekesznek a neve legyen s. Valójában nekünk a kell. A név formális, mert csak szimbolizálja, hogy a procedúra hívásakor a konkrét rekeszcímet kell megadnunk. Kirészletezzük egy kissé a procedúra teendőit. Szükség lesz továbbá egy lokális számlálóra, legyen a neve k, amellyel egytől egyesével elszámolunk n-ig és minden egyes k-ra az s-hez a számlálás közben hozzáadjuk az a k számot. Az s-et a munka kezdetén természetesen ki kell nullázni, hiszen nem tudjuk, hogy mi van benne az induláskor. Ezek után egy kissé rendezettebb alakban is írjuk le a tudnivalókat, teendőket. Összefoglaló adatok a procedúráról: A Summa procedúra leírása A procedúra neve: Bemenő paraméter: Bemenő paraméter: Kijövő paraméter: Lokális változó: ahol A Z 20, tömb, amely tartalmazza az összeadandó számokat. n {1,2,, 20}, megadja, hogy az egyes indexű elemmel kezdve meddig kell az összeadást elvégezni. Tulajdonképpen lehet ahol s Z, tartalmazza az összeget a végén. k {1,2,, 20}, számláló, amellyel egytől elszámolunk n-ig egyesével. A procedúra tevékenysége: 0. lépés: lokálisan helyet készíteni a k rekesznek. 1. lépés: s kinullázása 2. lépés: k beállítása 1-re, innen indul a számlálás 3. lépés: s megnövelése a k -val (s-hez hozzáadjuk a k -t és az eredmény s-ben marad. 4. lépés: Eggyel megnöveljük a k számláló értékét 5. lépés: Ellenőrizzük, hogy a k számláló nem lépett-e túl az n-nen, a végértéken. Ha még nem, akkor folytatjuk a munkát a 3. lépésnél. Ha igen, akkor pedig a 6. lépéshez megyünk. 6. lépés: Készen vagyunk, az eredmény az s-ben található. A főprogram, amely használja ezt a procedúrát, legyen a következő.
7 Programtervezési ismeretek Az összeadandó számokat egy X nevű globális tömbben fogja tárolni. (A főprogram írója nem biztos, hogy látja a procedúra szövegét, lehet, hogy csak annyit tud, hogy hogyan kell meghívni azt. Általában ez szokott lenni a helyzet.) Az összeadandó számok darabszámát egy darab nevű globális rekeszben tárolja. Az eredményt pedig egy végösszeg nevű globális rekeszben szeretné látni, és majd onnan kiíratni. Összefoglaló adatok a főprogramról: A program neve: Globális változó: Globális változó: Globális változó: Szummázó. X Z 20, tömb, amely tartalmazza az összeadandó számokat. darab {1,2,, 20}, megadja, hogy az egyes indexű elemmel kezdve meddig kell az összeadást elvégezni. végösszeg Z, tartalmazza az összeget a végén. A főprogram tevékenysége: 0. lépés: Globálisan helyet készíteni az X, darab, és végösszeg rekeszeknek. (Változók deklarációja) 1. lépés: A darab és az x 1, x 2,,x darab bekérése. 2. lépés: A Summa procedúra meghívása darab paraméterekkel 3. lépés: Az eredmény kiíratása a végösszeg rekeszből. 4. lépés: STOP Egy kis szimbolikát használva még tömöríthetünk a leírtakon. Summa procedúra 1. Input ahol A Z 20, 2. n {1,2,, 20} 3. Output ahol s Z. 4. Lokális változó: k {1,2,, 20}, 5. k 1 6. s s+a k 7. k k+1 8. Ha k n akkor vissza 6-os sorhoz, egyébként folytatás a 9-es sornál 9. Kész. Visszatérés. Szummázó főprogram 1. Globális változók: X Z 20, 2. darab {1,2,, 20} 3. végösszeg Z 4. Bekérni darab-ot és az x 1, x 2,,x darab -ot. (Input utasítások.) 5. Meghívni a Summa procedúrát: CALL Summa(@X, 6. Kiírni végösszeg-et. (Output végösszeg). 7. STOP Ezután, ha szükségünk van, mondjuk, az x 1 =3, x 2 =-4,,x 3 =2, x 4 =8, x 5 =-1 számok összegére, a főprogram elindítása után darab=5 lesz, az x-ek beállnak a fentebbi értékekre, a CALL révén a verembe bekerül az
8 Programtervezési ismeretek X tömb címe 5 végösszeg címe főprogram 6. sor visszatérési cím információ. Kezdetben üres volt a verem, most egy szint került bele bejegyzésre. Amikor a procedúra munkája véget ér, akkor ez a bejegyzés a veremből törlődik, így az újra üres lesz. (Tulajdonképpen a k számláló számára lefoglalt helyet is fel kellett volna tüntetni a bejegyzésben, de ez a számunkra most nem fontos.) Megjegyezzük, hogy kissé pazarolnánk a vermet, ha helyett csak X-et írtunk volna, mivel ekkor a teljes tömb is bekerült volna oda és az sok helyet foglalt volna el. (Persze ekkor a procedúrában helyett A állna.) A tömb elemei a címen keresztül is elérhetők és a cím csak pár byte-ot foglal el függetlenül a tömb méretétől. A fenti procedúrát iteratív procedúrának nevezzük, mert egy ismétlés (iteráció) található benne, ugyanis a 6-os, 7-es sorok ismétlődnek mindaddig, míg az összeg el nem készül. Az elkészültét pedig egy vizsgálat figyeli a 8-as sorban. Más módon is megoldható azonban az összegzés. A feladatot vissza is vezethetjük kisebb méretű feladatokra. Az n szám összege képezhető úgy is, hogy az n szám első felének az összegéhez hozzáadjuk az n szám második felének az összegét. Viszont ez a két kisebb méretű feladat is tovább felezhető. Meddig? Egészen addig, míg már csak egyetlen elem marad a felezés után. Ennek az egyetlen számnak pedig már tudjuk az összegét saját maga. Ezután készíthetünk a Summa procedúra helyett egy másikat, mondjuk Rekurzív_Summa néven. (A rekurzió szó visszavezetést jelent). A tömör formájú változat valahogy így nézhet ki. Rekurzív_Summa procedúra 1. Input ahol A Z 20, 2. m,n {1,2,, 20}és m n, 3. Output ahol s Z 4. Lokális változók: u,v Z 5. Ha m=n akkor s a m és folytatás a 9. sornál. 6. m + n egyébként CALL Rekurzív_Summa(@A, m, 7. m + n CALL Rekurzív_Summa(@A, + 1 2, 8. s u+v és folytatás a 9. sornál. 9. Kész. Visszatérés. Szummázó főprogram 1. Globális változók: X Z 20, 2. darab {1,2,, 20} 3. végösszeg Z 4. Bekérni darab-ot és az x 1, x 2,,x darab -ot. (Input utasítások.) 5. Meghívni a Summa procedúrát: CALL Summa(@X, 1, 6. Kiírni végösszeg-et. (Output végösszeg, kiíró, output utasítás). 7. STOP Az 1-3. sorok úgynevezett deklarációs sorok, amelyben megadjuk a használt globális változóink nevét, típusát, méretét. A deklarációban leírtakat a fordítóprogram használja fel
9 Programtervezési ismeretek információként a fordításhoz, a memória kiosztáshoz. A 4. sorral kezdődnek a végrehajtható sorok, amelyek már ténylegesen csinálnak is valamit (belőlük processzor utasítás, gépi kódú utasítás keletkezik). A 4. sor végrehajtása után a memória a fentebb megadott input adatok esetén az alábbi módon épül fel, legalább ís elvileg. A? jelzi, hogy az adott rekeszeknek a tartalma ismeretlen. darab X végösszeg x 1 x 2 x 3 x 4 x 5 x 6 x 7 x 8 x 18 x 19 x ??????? Hogyan alakul a verem sorsa ezután ebben az esetben? A főprogram 5. sora aktivizálja a procedúrát először, melyre a hívás hatására a verem: Miután m n, ezért ezután következik a procedúra 6. sorában a CALL hívás. A procedúra meghívja saját magát. A hatása: m=1 procedúra 7. sorra u=? v=? Miután a veremben a procedúra minden meghívása során létrehozza az u és v lokális változókat az újabb szinten új példányként, ezért az Output paraméter oszlopban az u és v neve után zárójelben feltüntettük, hogy melyik szinten lévő példányról van szó. Az új hívás után újra a procedúra 5. sora jön. A hatás: m=1 procedúra 7. sorra u=? v=? m=1 procedúra 7. sorra u=? v=? Ez megint nem számolható közvetlenül, újra az 5. sor jön, mire a verem új képe: m=1 procedúra 7. sorra u=? v=? m=1 procedúra 7. sorra u=? v=? m=1 procedúra 7. sorra u=? v=? Itt már van eredmény, mert m=n és így átmenetileg nincs több rekurzív hívás. Az eredmény u(3)=a 1 =3. m=1 procedúra 7. sorra u=? v=? m=1 procedúra 7. sorra u=3 v=? m=1 procedúra 7. sorra u=? v=? A hívás befejezte után a veremből kiürül a legutolsó bejegyzés, visszatérünk a procedúra 7. sorához, amely azonban egy újabb rekurzív hívás. Hatására a verem képe:
10 Programtervezési ismeretek m=1 procedúra 7. sorra u=? v=? m=1 procedúra 7. sorra u=3 v=? m=2 procedúra 8. sorra u=? v=? Az innen történő visszatérés után a verem képe: m=1 procedúra 7. sorra u=? v=? m=1 procedúra 7. sorra u=3 v=-4 A 8. sorban elvégezve az összeadást az eredmény u(1)=3+(-4)=-1. m=1 procedúra 7. sorra u=-1 v=? Visszatérés után újra a 7. sor jön: m=1 procedúra 7. sorra u=-1 v=? m=3 procedúra 8. sorra u v Visszatérés után az eredmény v(1)=x 3 =2 és a verem: m=1 procedúra 7. sorra u=-1 v=2 A 8. sor szerinti összeg u(0)=-1+2=1 és jön. m=1 főprogram 6. sorra u=1 v=? m=1 procedúra 7. sorra u=-1 v=2 Visszatérés a 7.sorra, ahol újabb hívás van: m=1 főprogram 6. sorra u=1 v=? m=4 procedúra 8. sorra u=? v=? Mivel m n, ezért újabb hívás, mélyül a verem: m=1 főprogram 6. sorra u=1 v=? m=4 procedúra 8. sorra u=? v=? m=4 procedúra 7. sorra u=? v=?
11 Programtervezési ismeretek Itt van eredmény: u(0)=x 4 =8. m=1 főprogram 6. sorra u=1 v=? m=4 procedúra 8. sorra u=8 v=? m=4 procedúra 7. sorra u=? v=? Visszatérés után a 7. sorban újabb hívás: m=1 főprogram 6. sorra u=1 v=? m=4 procedúra 8. sorra u=8 v=? m=5 procedúra 8. sorra u=? v=? Van eredmény: v(1)=x 5 =-1. m=1 főprogram 6. sorra u=1 v=? m=4 procedúra 8. sorra u=8 v=-1 m=5 procedúra 8. sorra u=? v=? Visszatérés után a először v(0)=8+(-1)=7. m=1 főprogram 6. sorra u=1 v=7 m=4 procedúra 8. sorra u=8 v=-1 Újabb visszatérés után végösszeg=u+v=1+7=8. majd a verem kiürül. Visszatérünk a főprogram 6. sorára, ahol kiíratjuk az eredményt a végösszeg rekeszből és ezután a STOP miatt a program befejezi a munkáját, a vezérlést visszaadja az operációs rendszernek. Láthattuk, hogy négy veremszint alakult ki a program futása során. Mivel a szintek számozása zérusról indul és a maximális veremmélység definíció szerint a legmagasabb számú szint száma, ezért a feladat megoldásához szükséges maximális veremmélység most három volt. A rekurzív hívások száma eggyel kevesebb, mint az összes hívásszám, mivel az első aktivizáló hívás még nem számít rekurzív hívásnak. Konkrétan a rekurzív hívások száma nyolc volt, ha utána számolunk. Ebben a rekurzióban minden hívás, kivéve a legalsóbb szinten levőket két újabbat eredményezett, de ezek a veremnek ugyanazon szintjét használták. A hívások szerkezetét egy úgynevezett hívási fa sémával tudjuk ábrázolni, melyben most csak az m, n paraméter értékeket tüntetjük fel. Íme: 0. szint 1. szint (1,3) (1,5) (4,5) Az ábrán jól látszik a verem négy szintje. A legfelső szint kivételével a többi szinten lévő hívások rekurzívak. Az azonos szinten lévő hívások a verem azonos szintjét használják csak eltérő időben. 2. szint (1,2) (3,3) (4,4) (5,5) 3. szint (1,1) (2,2)
12 Programtervezési ismeretek A fenti Rekurzív_Summa procedúra matematikai formula (egy RSum nevű függvény) formájában is megfogalmazható az alábbi módon például: RSum ( m, n) am, = m + n m + n RSum m, + + RSum 1, n, 2 2 ha m = n ha m < n. Nézzük meg, hogy hogyan is számol ez a ravasz függvény a mi speciális s=rsum(1;5) esetünkben, ahol m=1, n=5 és a 1 =3, a 2 =-4, a 3 =2, a 4 =8, a 5 =-1. s=rsum(1;5) =RSum(1;3) + RSum(4;5) =(RSum(1;2) + RSum(3;3)) + (RSum(4;4) + RSum(5;5)) =((RSum(1;1) + RSum(2;2)) + 2) + (8 + (-1))) =((3 + (-4)) + 2) + (8 + (-1))) =((-1) + 2) + (8 + (-1)) =(1 + 7) =8
13 Programtervezési ismeretek FELADATOK 1. Az n! (n faktoriális) fogalmát pozitív egész számokra az alábbi rekurzív formulával definiáljuk: 1, ha n = 1 n! = n ( n 1 )!, ha n > 1 Procedúrahívással kiszámítottuk a 7! értékét. Hogyan alakult a verem felépítése, mélysége? Rajzoljuk meg a hívási fát! Mekkora a minimális méretű verem, amely a feladat elvégzéséhez szükséges? Hány rekurzív hívás volt a számolás során? 2. Definiáljunk egy P ( m, n) függvényt, amely pozitív egész m és n argumentumokra van definiálva és m n fenn kell, hogy álljon. m, ha m = n P( m, n) = m + n m + n P m, + P 1, n, ha m n 2 2 Világos (de azért lássuk is be), hogy n! ezzel a függvénnyel kiszámítható a P ( 1, n) paraméterezéssel. Procedúrahívással számíttassuk ki a 7! számot! Hogyan alakul a verem felépítése, mélysége? Rajzoljuk meg a hívási fát! Mekkora a minimális méretű verem, amely a feladat elvégzéséhez szükséges? Hány rekurzív hívás lesz a számolás során? 3. n def n! A binomiális együttható szimbólum definíciója: =. A szimbólum k k!( n k)! kiolvasása n alatt a k. A szimbólumot nemnegativ egész n és k értékekre definiáljuk, ahol 0 k n fönn kell, hogy álljon, továbbá megegyezés szerint! = 1. Bizonyítsuk n n 1 n 1 n be, hogy = +. Ezt felhasználva adjunk rekurzív módszert k k 1 k k 7 kiszámítására. Konkrétan határozzuk meg értékét rekurzívan! Hogyan alakul a 3 verem felépítése, mélysége? Rajzoljuk meg a hívási fát! Mekkora a minimális méretű verem, amely a feladat elvégzéséhez szükséges? Hány rekurzív hívás lesz a számolás során? Tudnánk-e ugyanezen kérdésekre általános választ is adni? 4. A nemnegatív egész számokon értelmezzük a következő függvényt rekurzív módon: 0, ha n = 0 F ( n) = 1, ha n = 1 F( n 1) + F( n 2), ha n > 1 Procedúrahívással számíttassuk ki az F(7) számot! Rajzoljuk meg a hívási fát! Hogyan alakul a verem felépítése, mélysége? Mekkora a minimális méretű verem, amely a feladat elvégzéséhez szükséges? Hány rekurzív hívás lesz a számolás során? 5. Legyen az alábbi kétváltozós függvényünk, amelyet nemnegatív egész argumentumokra értelmezünk rekurzívan: 0, ha b = 0 P( a, b) = P( 2a, b div 2), ha b > 0 és b páros a + P( a, b 1 ), egyébként Procedúrahívással számíttassuk ki a P(2,5) számot! Hogyan alakul a verem felépítése, mélysége? Rajzoljuk meg a hívási fát! Mekkora a minimális méretű verem, amely a feladat elvégzéséhez szükséges? Hány rekurzív hívás lesz a számolás során? 0 def
Programozás alapjai. 10. előadás
10. előadás Wagner György Általános Informatikai Tanszék Pointerek, dinamikus memóriakezelés A PC-s Pascal (is) az IBM PC memóriáját 4 fő részre osztja: kódszegmens adatszegmens stackszegmens heap Alapja:
találhatók. A memória-szervezési modell mondja meg azt, hogy miként
Memória címzési módok Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről) a program utasításai illetve egy utasítás argumentumai a memóriában találhatók. A memória-szervezési
Számítógépek felépítése
Számítógépek felépítése Emil Vatai 2014-2015 Emil Vatai Számítógépek felépítése 2014-2015 1 / 14 Outline 1 Alap fogalmak Bit, Byte, Word 2 Számítógép részei A processzor részei Processzor architektúrák
A 32 bites x86-os architektúra regiszterei
Memória címzési módok Jelen nayagrészben az Intel x86-os architektúrára alapuló 32 bites processzorok programozását tekintjük. Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről)
A mikroprocesszor felépítése és működése
A mikroprocesszor felépítése és működése + az egyes részegységek feladata! Információtartalom vázlata A mikroprocesszor feladatai A mikroprocesszor részegységei A mikroprocesszor működése A mikroprocesszor
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
Programozás alapjai. 7. előadás
7. előadás Wagner György Általános Informatikai Tanszék Jótanács (1) Tipikus hiba a feladat elkészítésekor: Jótanács (2) Szintén tipikus hiba: a file-ból való törléskor, illetve a file-nak új elemmel való
Számítógép felépítése
Alaplap, processzor Számítógép felépítése Az alaplap A számítógép teljesítményét alapvetően a CPU és belső busz sebessége (a belső kommunikáció sebessége), a memória mérete és típusa, a merevlemez sebessége
Adatelérés és memóriakezelés
Adatelérés és memóriakezelés Jelen nayagrészben az Intel x86-os architektúrára alapuló 32 bites processzorok programozását tekintjük. Egy program futása során (legyen szó a program vezérléséről vagy adatkezelésről)
Központi vezérlőegység
Központi vezérlőegység A számítógép agya a központi vezérlőegység (CPU: Central Processing Unit). Két fő része a vezérlőegység (CU: Controll Unit), ami a memóriában tárolt program dekódolását és végrehajtását
elektronikus adattárolást memóriacím
MEMÓRIA Feladata A memória elektronikus adattárolást valósít meg. A számítógép csak olyan műveletek elvégzésére és csak olyan adatok feldolgozására képes, melyek a memóriájában vannak. Az információ tárolása
Paraméter átadás regisztereken keresztül
Eljárások paramétereinek átadási módjai Az eljárások deklarációjánál nincs mód arra, hogy paramétereket adjunk meg, ezért más, közvetett módon tudunk átadni paramétereket az eljárásoknak. Emlékeztetőül:
Memóriagazdálkodás. Kódgenerálás. Kódoptimalizálás
Kódgenerálás Memóriagazdálkodás Kódgenerálás program prológus és epilógus értékadások fordítása kifejezések fordítása vezérlési szerkezetek fordítása Kódoptimalizálás L ATG E > TE' E' > + @StPushAX T @StPopBX
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(
A programozás alapjai
A programozás alapjai Változók A számítógép az adatokat változókban tárolja A változókat alfanumerikus karakterlánc jelöli. A változóhoz tartozó adat tipikusan a számítógép memóriájában tárolódik, szekvenciálisan,
Programozási nyelvek Java
statikus programszerkezet Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 2. előadás csomag könyvtárak könyvtárak forrásfájlok bájtkódok (.java) (.class) primitív osztály
A verem (stack) A verem egy olyan struktúra, aminek a tetejéről kivehetünk egy (vagy sorban több) elemet. A verem felhasználása
A verem (stack) A verem egy olyan struktúra, aminek a tetejére betehetünk egy új (vagy sorban több) elemet a tetejéről kivehetünk egy (vagy sorban több) elemet A verem felhasználása Függvény visszatérési
Processzor (CPU - Central Processing Unit)
Készíts saját kódolású WEBOLDALT az alábbi ismeretanyag felhasználásával! A lap alján lábjegyzetben hivatkozz a fenti oldalra! Processzor (CPU - Central Processing Unit) A központi feldolgozó egység a
5-6. ea Created by mrjrm & Pogácsa, frissítette: Félix
2. Adattípusonként különböző regisztertér Célja: az adatfeldolgozás gyorsítása - különös tekintettel a lebegőpontos adatábrázolásra. Szorzás esetén karakterisztika összeadódik, mantissza összeszorzódik.
ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK
ALGORITMIKUS SZERKEZETEK ELÁGAZÁSOK, CIKLUSOK, FÜGGVÉNYEK 1. ELÁGAZÁSOK ÉS CIKLUSOK SZERVEZÉSE Az adatszerkezetek mellett a programok másik alapvető fontosságú építőkövei az ún. algoritmikus szerkezetek.
7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II.
7. Laboratóriumi gyakorlat: Vezérlési szerkezetek II. A gyakorlat célja: 1. A shell vezérlő szerkezetei használatának gyakorlása. A használt vezérlő szerkezetek: if/else/fi, for, while while, select, case,
A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg.
Mikroprocesszor A mikroprocesszor egy RISC felépítésű (LOAD/STORE), Neumann architektúrájú 32 bites soft processzor, amelyet FPGA val valósítunk meg. A mikroprocesszor részei A mikroprocesszor a szokásos
Adatszerkezetek 1. Dr. Iványi Péter
Adatszerkezetek 1. 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 kódoltan tároljuk
Informatika érettségi vizsga
Informatika 11/L/BJ Informatika érettségi vizsga ÍRÁSBELI GYAKORLATI VIZSGA (180 PERC - 120 PONT) SZÓBELI SZÓBELI VIZSGA (30 PERC FELKÉSZÜLÉS 10 PERC FELELET - 30 PONT) Szövegszerkesztés (40 pont) Prezentáció-készítés
SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1
INFORMATIKAI RENDSZEREK ALAPJAI (INFORMATIKA I.) 1 NEUMANN ARCHITEKTÚRÁJÚ GÉPEK MŰKÖDÉSE SZÁMÍTÓGÉPEK BELSŐ FELÉPÍTÉSE - 1 Ebben a feladatban a következőket fogjuk áttekinteni: Neumann rendszerű számítógép
Adatstruktúrák és algoritmusok
Adatstruktúrák és algoritmusok Attila Házy, Ferenc Nagy 2011. április 6. 2 Tartalomjegyzék 1. Bevezetés 7 1.1. A tárgyról............................. 7 1.2. Alapvető fogalmak, definíciók..................
Eljárások és függvények
Eljárások és függvények Jegyzet Összeállította: Faludi Anita 2012. Bevezetés Ez a jegyzet elsősorban azoknak a diákoknak készült, akiket tanítok, ezért a jegyzet erőteljesen hiányos. Az olvasó egy percig
Aritmetikai utasítások I.
Aritmetikai utasítások I. Az értékadó és aritmetikai utasítások során a címzési módok különböző típusaira látunk példákat. A 8086/8088-as mikroprocesszor memóriája és regiszterei a little endian tárolást
1. Az utasítás beolvasása a processzorba
A MIKROPROCESSZOR A mikroprocesszor olyan nagy bonyolultságú félvezető eszköz, amely a digitális számítógép központi egységének a feladatait végzi el. Dekódolja az uatasításokat, vezérli a műveletek elvégzéséhez
sallang avagy Fordítótervezés dióhéjban Sallai Gyula
sallang avagy Fordítótervezés dióhéjban Sallai Gyula Az előadás egy kis példaprogramon keresztül mutatja be fordítók belső lelki világát De mit is jelent, az hogy fordítóprogram? Mit csinál egy fordító?
Mutatók és mutató-aritmetika C-ben március 19.
Mutatók és mutató-aritmetika C-ben 2018 március 19 Memória a Neumann-architektúrában Neumann-architektúra: a memória egységes a címzéshez a természetes számokat használjuk Ugyanabban a memóriában van:
A programozás alapjai 1 Rekurzió
A programozás alapjai Rekurzió. előadás Híradástechnikai Tanszék - preorder (gyökér bal gyerek jobb gyerek) mentés - visszaállítás - inorder (bal gyerek gyökér jobb gyerek) rendezés 4 5 6 4 6 7 5 7 - posztorder
8. gyakorlat Pointerek, dinamikus memóriakezelés
8. gyakorlat Pointerek, dinamikus memóriakezelés Házi ellenőrzés Egy számtani sorozat első két tagja A1 és A2. Számítsa ki a sorozat N- dik tagját! (f0051) Egy mértani sorozat első két tagja A1 és A2.
2017/12/16 21:33 1/7 Hardver alapok
2017/12/16 21:33 1/7 Hardver alapok < Hardver Hardver alapok Szerző: Sallai András Copyright Sallai András, 2011, 2013, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu Bevezetés A számítógépet
Az interrupt Benesóczky Zoltán 2004
Az interrupt Benesóczky Zoltán 2004 1 Az interrupt (program megszakítás) órajel generátor cím busz környezet RESET áramkör CPU ROM RAM PERIF. adat busz vezérlõ busz A periféria kezelés során információt
Bevezetés az informatikába
Bevezetés az informatikába 3. 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.
Mikroprocesszor CPU. C Central Központi. P Processing Számító. U Unit Egység
Mikroprocesszor CPU C Central Központi P Processing Számító U Unit Egység A mikroprocesszor általános belső felépítése 1-1 BUSZ Utasítás dekóder 1-1 BUSZ Az utasítás regiszterben levő utasítás értelmezését
A C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
Bevezetés a programozásba. 8. Előadás: Függvények 2.
Bevezetés a programozásba 8. Előadás: Függvények 2. ISMÉTLÉS Helló #include using namespace std; int main() cout
Ismerkedjünk tovább a számítógéppel. Alaplap és a processzeor
Ismerkedjünk tovább a számítógéppel Alaplap és a processzeor Neumann-elvű számítógépek főbb egységei A részek feladatai: Központi egység: Feladata a számítógép vezérlése, és a számítások elvégzése. Operatív
Számítógép architektúra
Budapesti Műszaki Főiskola Regionális Oktatási és Innovációs Központ Székesfehérvár Számítógép architektúra Dr. Seebauer Márta főiskolai tanár seebauer.marta@roik.bmf.hu Irodalmi források Cserny L.: Számítógépek
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`)
Programozási nyelvek (ADA)
Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 1. előadás Hasznos weboldal http://kto.web.elte.hu Program felépítése Programegységek (program unit) eljárások (procedure)
2016/08/31 02:45 1/6 Hardver alapok
2016/08/31 02:45 1/6 Hardver alapok < Hardver Hardver alapok Szerző: Sallai András Copyright Sallai András, 2011, 2013, 2014 Licenc: GNU Free Documentation License 1.3 Web: http://szit.hu Bevezetés A számítógépet
Bonyolultságelmélet. Monday 26 th September, 2016, 18:50
Bonyolultságelmélet Monday 26 th September, 2016, 18:50 A kiszámítás modelljei 2 De milyen architektúrán polinom? A kiszámításnak számos (matematikai) modellje létezik: Általános rekurzív függvények λ-kalkulus
A C programozási nyelv III. Pointerek és tömbök.
A C programozási nyelv III. Pointerek és tömbök. Miskolci Egyetem Általános Informatikai Tanszék A C programozási nyelv III. (Pointerek, tömbök) CBEV3 / 1 Mutató (pointer) fogalma A mutató olyan változó,
Alkalmazott modul: Programozás 4. előadás. Procedurális programozás: iteratív és rekurzív alprogramok. Alprogramok. Alprogramok.
Eötvös Loránd Tudományegyetem Informatikai Kar Alkalmazott modul: Programozás 4. előadás Procedurális programozás: iteratív és rekurzív alprogramok Giachetta Roberto groberto@inf.elte.hu http://people.inf.elte.hu/groberto
2. Számítógépek működési elve. Bevezetés az informatikába. Vezérlés elve. Külső programvezérlés... Memória. Belső programvezérlés
. Számítógépek működési elve Bevezetés az informatikába. előadás Dudásné Nagy Marianna Az általánosan használt számítógépek a belső programvezérlés elvén működnek Külső programvezérlés... Vezérlés elve
7. fejezet: Mutatók és tömbök
7. fejezet: Mutatók és tömbök Minden komolyabb programozási nyelvben vannak tömbök, amelyek gondos kezekben komoly fegyvert jelenthetnek. Először is tanuljunk meg tömböt deklarálni! //Tömbök használata
A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem)
65-67 A processzor hajtja végre a műveleteket. összeadás, szorzás, logikai műveletek (és, vagy, nem) Két fő része: a vezérlőegység, ami a memóriában tárolt program dekódolását és végrehajtását végzi, az
A számítógép egységei
A számítógép egységei A számítógépes rendszer két alapvető részből áll: Hardver (a fizikai eszközök összessége) Szoftver (a fizikai eszközöket működtető programok összessége) 1.) Hardver a) Alaplap: Kommunikációt
Digitális rendszerek. Utasításarchitektúra szintje
Digitális rendszerek Utasításarchitektúra szintje Utasításarchitektúra Jellemzők Mikroarchitektúra és az operációs rendszer közötti réteg Eredetileg ez jelent meg először Sokszor az assembly nyelvvel keverik
VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK
VI. SZOFTVERES PROGRAMOZÁSÚ VLSI ÁRAMKÖRÖK 1 Az adatok feldolgozását végezhetjük olyan általános rendeltetésű digitális eszközökkel, amelyeket megfelelő szoftverrel (programmal) vezérelünk. A mai digitális
Adatok ábrázolása, adattípusok
Adatok ábrázolása, adattípusok Összefoglalás Adatok ábrázolása, adattípusok Számítógépes rendszerek működés: információfeldolgozás IPO: input-process-output modell információ tárolása adatok formájában
C programozási nyelv Pointerek, tömbök, pointer aritmetika
C programozási nyelv Pointerek, tömbök, pointer aritmetika Dr. Schuster György 2011. június 16. C programozási nyelv Pointerek, tömbök, pointer aritmetika 2011. június 16. 1 / 15 Pointerek (mutatók) Pointerek
Assembly programozás levelező tagozat
Assembly programozás levelező tagozat Szegedi Tudományegyetem Képfeldolgozás és Számítógépes Grafika Tanszék 2011-2012-2 Tematika Assembly nyelvi szint. Az Intel 8086/88 regiszter készlete, társzervezése,
Architektúra, megszakítási rendszerek
Architektúra, megszakítási ek Mirıl lesz szó? Megszakítás fogalma Megszakítás folyamata Többszintű megszakítási ek Koschek Vilmos Példa: Intel Pentium vkoschek@vonalkodhu Koschek Vilmos Fogalom A számítógép
A függvény kód szekvenciáját kapcsos zárójelek közt definiáljuk, a { } -ek közti részt a Bash héj kód blokknak (code block) nevezi.
Függvények 1.Függvények...1 1.1.A függvény deníció szintaxisa... 1..Függvények érték visszatérítése...3 1.3.Környezettel kapcsolatos kérdések...4 1.4.Lokális változók használata...4 1.5.Rekurzív hívások...5.kód
Programozási nyelvek 6. előadás
Programozási nyelvek 6. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig) Számítási modell (hogyan
10. gyakorlat Struktúrák, uniók, típusdefiníciók
10. gyakorlat Struktúrák, uniók, típusdefiníciók Házi - (f0218) Olvass be 5 darab maximum 99 karakter hosszú szót úgy, hogy mindegyiknek pontosan annyi helyet foglalsz, amennyi kell! A sztringeket írasd
Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek
Programozás alapjai gyakorlat 4. gyakorlat Konstansok, tömbök, stringek Házi ellenőrzés (f0069) Valósítsd meg a linuxos seq parancs egy egyszerűbb változatát, ami beolvas két egész számot, majd a kettő
4. Programozási nyelvek osztályozása. Amatőr és professzionális
4. Programozási nyelvek osztályozása. Amatőr és professzionális programozási nyelvek. Számítási modellek (Neumann-elvű, automataelvű, funkcionális, logikai). Programozási nyelvekkel kapcsolatos fogalmak
Programozási nyelvek (ADA)
Programozási nyelvek (ADA) Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 3. előadás Programozási nyelv felépítése szabályok megadása Lexika Milyen egységek építik fel? Szintaktikus szabályok
Adatszerkezetek Adatszerkezet fogalma. Az értékhalmaz struktúrája
Adatszerkezetek Összetett adattípus Meghatározói: A felvehető értékek halmaza Az értékhalmaz struktúrája Az ábrázolás módja Műveletei Adatszerkezet fogalma Direkt szorzat Minden eleme a T i halmazokból
Balaton Marcell Balázs. Assembly jegyzet. Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született.
Balaton Marcell Balázs Assembly jegyzet Az Assembly egy alacsony szintű nyelv, mely a gépi kódú programozás egyszerűsítésére született. 1. Regiszterek Regiszterek fajtái a. Szegmensregiszterek cs (code):
Máté: Számítógép architektúrák
Az GOTO offset utasítás. P relatív: P értékéhez hozzá kell adni a két bájtos, előjeles offset értékét. Mic 1 program: Main1 P = P + 1; fetch; goto() goto1 OP=P 1 // Main1 nél : P=P+1 1. bájt goto P=P+1;
Számítógépek felépítése, alapfogalmak
2. előadás Számítógépek felépítése, alapfogalmak Lovas Szilárd, Krankovits Melinda SZE MTK MSZT kmelinda@sze.hu B607 szoba Nem reprezentatív felmérés kinek van ilyen számítógépe? 2 Nem reprezentatív felmérés
8. Előadás. Megyesi László: Lineáris algebra, , oldal. 8. előadás Mátrix rangja, Homogén lineáris egyenletrendszer
8. Előadás Megyesi László: Lineáris algebra, 51. 56., 70. 74. oldal. Gondolkodnivalók Elemi bázistranszformáció 1. Gondolkodnivaló Most ne vegyük figyelembe, hogy az elemi bázistranszformáció során ez
A Számítógépek felépítése, mőködési módjai
Mechatronika, Optika és Gépészeti Informatika Tanszék Kovács Endre tud. Mts. A Számítógépek felépítése, mőködési módjai Mikroprocesszoros Rendszerek Felépítése Buszrendszer CPU OPERATÍV TÁR µ processzor
C++ programozási nyelv
C++ programozási nyelv Gyakorlat - 8. hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet Soós Sándor 2004. november A C++ programozási nyelv Soós Sándor 1/12 Tartalomjegyzék Miért
Operandus típusok Bevezetés: Az utasítás-feldolgozás menete
Operandus típusok Bevezetés: Az utasítás-feldolgozás menete Egy gépi kódú utasítás általános formája: MK Címrész MK = műveleti kód Mit? Mivel? Az utasítás-feldolgozás általános folyamatábrája: Megszakítás?
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
A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai. INFORMATIKA II. (programozás) kategória
Oktatási Hivatal A 2017/2018 tanévi Országos Középiskolai Tanulmányi Verseny első fordulójának feladatai 1. feladat: Repülők (20 pont) INFORMATIKA II. (programozás) kategória Ismerünk városok közötti repülőjáratokat.
SzA19. Az elágazások vizsgálata
SzA19. Az elágazások vizsgálata (Az elágazások csoportosítása, a feltételes utasítások használata, a műveletek eredményének vizsgálata az állapottér módszerrel és közvetlen adatvizsgálattal, az elágazási
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
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
Rekurzió. Működése, programtranszformációk. Programozás II. előadás. Szénási Sándor.
Rekurzió Működése, programtranszformációk előadás http://nik.uni-obuda.hu/prog2 Szénási Sándor szenasi.sandor@nik.uni-obuda.hu Óbudai Egyetem,Neumann János Informatikai Kar Rekurzió Rekurzió alapjai Rekurzív
Információk. Ismétlés II. Ismétlés. Ismétlés III. A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin. Algoritmus. Algoritmus ábrázolása
1 Információk 2 A PROGRAMOZÁS ALAPJAI 2. Készítette: Vénné Meskó Katalin Elérhetőség mesko.katalin@tfk.kefo.hu Fogadóóra: szerda 9:50-10:35 Számonkérés időpontok Április 25. 9 00 Május 17. 9 00 Június
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
Programozás alapjai. 6. gyakorlat Futásidő, rekurzió, feladatmegoldás
Programozás alapjai 6. gyakorlat Futásidő, rekurzió, feladatmegoldás Háziellenőrzés Egészítsd ki úgy a simplemaths.c programot, hogy megfelelően működjön. A program feladata az inputon soronként megadott
Aritmetikai kifejezések lengyelformára hozása
Aritmetikai kifejezések lengyelformára hozása Készítették: Santák Csaba és Kovács Péter, 2005 ELTE IK programtervező matematikus szak Aritmetikai kifejezések kiértékelése - Gyakran felmerülő programozási
Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós március 3. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. március 3. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja Miért
Irányítástechnika 1. 9. Elıadás. PLC-k programozása
Irányítástechnika 1 9. Elıadás PLC-k programozása Irodalom - Helmich József: Irányítástechnika I, 2005 - Zalotay Péter: PLC tanfolyam - Jancskárné Anweiler Ildikó: PLC programozás az IEC 1131-3 szabvány
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
Programozási nyelvek a közoktatásban alapfogalmak I. előadás
Programozási nyelvek a közoktatásban alapfogalmak I. előadás Szempontok Programozási nyelvek osztályozása Felhasználói kör (amatőr, professzionális) Emberközelség (gépi nyelvektől a természetes nyelvekig)
A Számítógépek hardver elemei
Mechatronika, Optika és Gépészeti Informatika Tanszék Kovács Endre tud. Mts. A Számítógépek hardver elemei Korszerő perifériák és rendszercsatolásuk A µ processzoros rendszer regiszter modellje A µp gépi
A félév során előkerülő témakörök
A félév során előkerülő témakörök rekurzív algoritmusok rendező algoritmusok alapvető adattípusok, adatszerkezetek, és kapcsolódó algoritmusok dinamikus programozás mohó algoritmusok gráf algoritmusok
Programozás alapjai gyakorlat. 2. gyakorlat C alapok
Programozás alapjai gyakorlat 2. gyakorlat C alapok 2016-2017 Bordé Sándor 2 Forráskód, fordító, futtatható állomány Először megírjuk a programunk kódját (forráskód) Egyszerű szövegszerkesztőben vagy fejlesztőkörnyezettel
Gregorics Tibor Tanácsok modularizált programok készítéséhez 1
Gregorics Tibor Tanácsok modularizált programok készítéséhez 1 Modularizált programon azt értjük, amely több, jól körülhatárolható részfeladat megoldásaiból épül fel. Egy-egy részfeladat gyakran szabványos
Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r
Programozás alapjai (GKxB_INTM023) Széchenyi István Egyetem, Gy r 2018. október 11. Függvények Mi az a függvény (function)? Programkód egy konkrét, azonosítható, paraméterezhet, újrahasznosítható blokkja
Programozas 1. Strukturak, mutatok
Programozas 1 Strukturak, mutatok Strukturak Tömb: több egyforma típusú változó együttese Struktúra: több különböző típusú de logikailag egybetartozó változó együttese, amelyet az egyszerű kezelhetőség
C programozás. 6 óra Függvények, függvényszerű makrók, globális és
C programozás 6 óra Függvények, függvényszerű makrók, globális és lokális változók 1.Azonosítók A program bizonyos összetevőire névvel (azonosító) hivatkozunk Első karakter: _ vagy betű (csak ez lehet,
Programozás alapjai (ANSI C)
Programozás alapjai (ANSI C) 1. Előadás vázlat A számítógép és programozása Dr. Baksáné dr. Varga Erika adjunktus Miskolci Egyetem, Informatikai Intézet Általános Informatikai Intézeti Tanszék www.iit.uni-miskolc.hu
Programozás alapjai Bevezetés
Programozás alapjai Bevezetés Miskolci Egyetem Általános Informatikai Tanszék Programozás alapjai Bevezetés SWF1 / 1 Tartalom A gépi kódú programozás és hátrányai A magas szintÿ programozási nyelv fogalma
Készítette: Nagy Tibor István
Készítette: Nagy Tibor István A változó Egy memóriában elhelyezkedő rekesz Egy értéket tárol Van azonosítója (vagyis neve) Van típusa (milyen értéket tárolhat) Az értéke értékadással módosítható Az értéke
Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)
Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD) Bevezetés A laborgyakorlatok alapvető célja a tárgy későbbi laborgyakorlataihoz szükséges ismeretek átadása, az azokban szereplő
Programozási nyelvek Java
-en objektumot tárolunk. Automatikus változók Programozási nyelvek Java Kozsik Tamás előadása alapján Készítette: Nagy Krisztián 3. előadás - végrehajtási vermen (execution stack) jönnek létre - alprogramok
Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r
Programozás (GKxB_INTM021) Széchenyi István Egyetem, Gy r 2018. április 4. Számok rendezése Feladat: Fejlesszük tovább úgy a buborék rendez algoritmust bemutató példát, hogy a felhasználó adhassa meg a
Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj. Nagy
Algoritmusok és adatszerkezetek gyakorlat 03 Oszd meg és uralkodj Divide & Conquer (,,Oszd meg és uralkodj ) paradigma Divide: Osszuk fel az adott problémát kisebb problémákra. Conquer: Oldjuk meg a kisebb
MPLAB IDE - SIM - - Rövid ismertető a használathoz - Kincses Levente 3E22 89/ November 14. Szabadka
MPLAB IDE - SIM - - Rövid ismertető a használathoz - 3E22 89/2004 2006. November 14 Szabadka - 2 - Tartalomjegyzék TARTALOMJEGYZÉK 3 SIMULATOR I/O 4 SIMULATOR STIMULUS 4 STIMULUS VEZÉRLŐ (CONTROLLER) 5