Programozás I. - 9. gyakorlat



Hasonló dokumentumok
Programozás I gyakorlat

Osztály szint tagok. Krizsán Zoltán 1 [2012. március 12.] Objektumorientált programozás C# alapokon tananyag

Lineáris algebra gyakorlat

Párhuzamos programozás

EPER E-KATA integráció

A táblázatkezelő felépítése

A C programozási nyelv VI. Parancssori argumentumok File kezelés

Egyszerű áramkörök vizsgálata

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

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

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

Bevezetés a C++ programozási nyelvbe

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

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

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

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

Shared IMAP beállítása magyar nyelvű webmailes felületen

MATEMATIKA ÉRETTSÉGI TÍPUSFELADATOK MEGOLDÁSAI KÖZÉPSZINT Trigonometria

KOVÁCS BÉLA, MATEMATIKA I.

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

Mágneses szuszceptibilitás vizsgálata

Kérjük, hogy mielőtt elkezdené használni a Csavarhat webáruházat, gondosan olvassa végig ezt a segédletet.

A Közbeszerzések Tanácsa (Szerkesztőbizottsága) tölti ki A hirdetmény kézhezvételének dátuma KÉ nyilvántartási szám

Programozás 5. Dr. Iványi Péter

Ablakok használata. 1. ábra Programablak

Amit a Hőátbocsátási tényezőről tudni kell

Csoportosított adatok megjelenítése sorhalmaz függvények használatával

Programozás I ZH, Név:... EHA:... A. csoport. 25 pont. Gyakorlatvezető:...

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

Minta programterv a 1. házi feladathoz

Mikrokontrollerek. Tihanyi Attila május 8

Digitális technika (VIMIAA01) Laboratórium 1

Segítünk online ügyféllé válni Kisokos

Kép részlet kivágás útvonalak létrehozása és szerkesztése útvonalak kijelöléssé alakítása Kijelölés > Lágy szél

DLookup függvény 1. (5)

Ipari és vasúti szénkefék

1. Metrótörténet. A feladat folytatása a következő oldalon található. Informatika emelt szint. m2_blaha.jpg, m3_nagyvaradter.jpg és m4_furopajzs.jpg.

I. 4.) Az ajánlatkéra más ajánlatkérak nevében folytatja-e le a közbeszerzési eljárást? nem X

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

AWP TELEPÍTÉSE- WINDOWS7 64 OPERÁCIÓS RENDSZEREN

Bár a digitális technológia nagyon sokat fejlődött, van még olyan dolog, amit a digitális fényképezőgépek nem tudnak: minden körülmények között

MINTA. Fizetendô összeg: ,00 HUF. Telefonon: / ben: Interneten:

VHDL szimuláció. Tervezés. Labor II. Dr. Hidvégi Timót

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

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

Az éves statisztikai összegezés STATISZTIKAI ÖSSZEGEZÉS AZ ÉVES KÖZBESZERZÉSEKRŐL A KLASSZIKUS AJÁNLATKÉRŐK VONATKOZÁSÁBAN

2000 db speciális komposztláda, 0,3 m3 térfogatú

Vodafone ReadyPay. Használati útmutató

Laborgyakorlat Logikai áramkörök számítógéppel segített tervezése (CAD)

Információs Technológia

[MECHANIKA- HAJLÍTÁS]

ELŐTERJESZTÉS a Veszprém Megyei Önkormányzat Közgyűlésének április 19-ei ülésére

xdsl Optika Kábelnet Mért érték (2012. II. félév): SL24: 79,12% SL72: 98,78%

A szerzõrõl... xi Bevezetés... xiii

Vodafone GPRS Kapcsolat létrehozása Win2000 alatt a Connect Me használata nélkül

Programozás I gyakorlat

INFORMATIKAI ALAPISMERETEK

M4.1. KISFESZÜLTSÉGŰ ÁRAMVÁLTÓ MŰSZAKI SPECIFIKÁCIÓ:


C programozás. 2 óra A C nyelv típusai

Hőszivattyúk Makk Árpád Viessmann Akadémia. Viessmann Werke Hőszivattyúk. Chart 1

ELLENÁLLÁSOK PÁRHUZAMOS KAPCSOLÁSA, KIRCHHOFF I. TÖRVÉNYE, A CSOMÓPONTI TÖRVÉNY ELLENÁLLÁSOK PÁRHUZAMOS KAPCSOLÁSA. 1. ábra

MELLÉKLET. A parancsikonok használata: Fıkomponens- és faktorelemzés. I : A fıkomponens- és a faktorelemzés indítása.

tartalmazó becsült értékek októbertől a lakáscélú és szabad felhasználású jelzáloghitelek új szerződéses összege tartalmazza a

ELEKTRONIKAI ALAPISMERETEK

QGIS tanfolyam (ver.2.0)

FORTE MAP 5.0 Felhasználói tájékoztató

ELEKTRONIKAI ALAPISMERETEK

Javítóvizsga témakörei matematika tantárgyból

Webes adatbázis-kezelés MySQL és PHP használatával

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

Vektorok összeadása, kivonása, szorzás számmal, koordináták, lineáris függetlenség

Egyszeri ébresztő: Az ébresztő napi egyszeri beállításra alkalmas, hang demonstráló funkció

KOVÁCS BÉLA, MATEMATIKA I.

Elektronikus öltözőszekrényzárak

Azonosító jel: Matematika emelt szint

Programozás. (GKxB_INTM021) Dr. Hatwágner F. Miklós április 4. Széchenyi István Egyetem, Gy r

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

FALON KÍVÜLI ÉS SÜLLYESZTETT KISELOSZTÓK dinbox. verzió 2.2 TERMÉKKATALÓGUS MŰSZAKI RÉSZ

Elemi adatszerkezetek

PÁLYÁZATI FELHÍVÁS - JELENTKEZÉSI LAP

FTP-kapcsolat létrehozása FlashFXP alatt

IDE64 dokumentáció. A merevlemez előkészítése az első használatra. 1. Előkészítés. 2. Csatlakoztatás. 3. Segédprogram másolás

Áramlástechnikai gépek soros és párhuzamos üzeme, grafikus és numerikus megoldási módszerek (13. fejezet)

Erste MobilBank Felhasználói kézikönyv

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

Jelentkezési lap egyéni terápiás kutyáért

Tartalomjegyzék. Tartalom 1/16

Conjoint-analízis példa (egyszerűsített)

JELENTKEZÉSI LAP MOZGÁSSÉRÜLT SEGÍTŐKUTYÁÉRT

G Szabályfelismerés feladatcsomag

Pályázati Hirdetmény. nyilvános pályázati felhívás

HENYIR felhasználói dokumentáció

Programozas 1. Strukturak, mutatok

Az éves statisztikai összegezés STATISZTIKAI ÖSSZEGEZÉS AZ ÉVES KÖZBESZERZÉSEKRŐL A KLASSZIKUS AJÁNLATKÉRŐK VONATKOZÁSÁBAN

Vegyes tételek könyvelése felhasználói dokumentum Lezárva:

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

ELEKTRONIKAI ALAPISMERETEK

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

1. BB Megoldó Béla BB 1.

Átírás:

Programozás I. - 9. gyakorlat Mutatók, dinamikus memóriakezelés Tar Péter 1 Pannon Egyetem M szaki Informatikai Kar Rendszer- és Számítástudományi Tanszék Utolsó frissítés: November 9, 2009 1 tar@dcs.vein.hu Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 1 / 1

Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 2 / 1

Mutatók - ismétlés Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 3 / 1

Mutatók (Pointerek) Deníció A mutatók olyan változók, melyek más változók, vagy objektumok címét tárolják. Jellemz i Hossza 4 bájt (Ekkora egy memóriacím) Használatához az indirekció operátora (*) szükséges A memóriában bármire mutathat A NULL érték logikailag hamisat jelent. Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 4 / 1

Mutatók és mutatott értékek Mutató értéke A mutató értéke egy memóriacím. Mutatott érték A mutatott értéket a mutató típusa alapján a * operátorral olvashatjuk ki. Az eredmény a mutató értékében tárolt memóriacímen lév adat értéke lesz. Mutatók értékadása A mutatók értékeként bármely változó címét megadhatjuk a & operátor segítségével. Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 5 / 1

Többszörös indirekció A mutató is egy változó, az is egy memóriacímen helyezkedik el, így annak a címére is hivatkozhatunk egy mutatóval. Szintaxis int x=1; int* px=&x; int** ppx=&px; Tulajdonságai Az indirekció tetsz leges mélységig növelhet A mutatott értékre való hivatkozásnál minden * operátor egyel csökkenti az indirekció mélységét Használata: pl.: Több dimenziós tömbök kezelése Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 6 / 1

Függvények Paraméter átadási módok Érték szerinti paraméterátadás - A paraméterek értékei lemásolódnak Cím szerinti paraméterátadás - A paraméterek mutatók! Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 7 / 1

Cím szerinti paraméterátadás Tulajdonságok Az indirekció segítségével megcímezhetünk változókat Helyes használat esetén módosíthatjuk a függvényen kívüli változók értékeit Eddig visszatérési értékként egy értéket tudtunk csak adni, ez most is igaz, de a függvény több küls változóra is hatást gyakorolhat. Figyelni kell rá, hogy mindig memóriacímet adjunk át, ha cím szerinti paraméterátadást szeretnénk használni. Ellen rizzük hogy a mutató értékünk nem NULL-e, egyébként hibát kaphatunk. Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 8 / 1

Dinamikus változók Deníció Olyan változó, amely tárolásához szükséges helyet futás közben foglaljuk le, és azt mutató segítségével érjük el. Használatuk Nagy méret tömbök és rekordok esetén: hasznos Azokban az esetekben, amikor futási id ben derül ki, hogy mekkora helyre lesz szükségünk: szükséges A már nem használt, lefoglalt megmóriaterületeket fel kell szabadítani, és a mutatójukat le kell nullázni! Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 9 / 1

Terület lefoglalása és felszabadítása Foglalás Általánosan: void* malloc(int byteokszama); Konkrét esetben: int* p; p=(int*)malloc(10*sizeof(int)); Ellen rizzük hogy sikerült-e a foglalás: if (p!=null) Felszabadítás free(p); p=null; Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 10 / 1

Dinamikus tömbök Jellemz k Foglalásuk malloc-al történik Elegend futási id ben megtudni a tömb méretét A statikus tömb címe egy mutató A dinamikus tömb címe a tömbre mutató mutatónak a címe A statikus többdimenziós tömb sorfolytonasan tárolt A dinamikus többdimenziós tömb többszörös indirekciót használ (általában) Indexelés Mindig fel kell szabadítani a lefoglalt megmóriát! Legyen egy 4*5-ös mátrixunk, ekkor: Statikus tömb esetén: M[2][3]==*(M+2*5+3); Dinamikus tömb esetén: M[2][3]==*(*(M+2)+3); Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 11 / 1

Konstans mutatók A mutató értéke konstans int const *p; A mutatott érték nem változtatható *p=2; hiba aa mutatott érték konstans int* const p; A mutató nem változtatható p=null; hiba Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 12 / 1

Egyéb memóriakezel utasítások void* calloc(int elemszam,int elemmeret) A lefoglalt terültetet nullákkal inicializálja void memcpy(void* dest, void* src, int meret) Memóriában másol src-r l dest-re A memory.h betöltése szükséges void memset(void* dest, char c, int meret) Memóriában ír dest-re A feltöltött terültet c karakterrel tölti ki A memory.h betöltése szükséges Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 13 / 1

1 Minden pontot külön valósíts meg és szabadítsd fel mindíg a memóriát! Hozz létre egy 10 elem tömböt, töltsük fel és írjuk ki az elemeket Foglald le a tömböt dinamikusan Tedd meg ugyanezt egy 'n' méret tömbbel Tedd meg ugyanezt egy 'n'x'm' méret tömbbel 2 Kérjünk be egy 5x5-ös tömböt Készítsünk csere függvényt, amely megcserél két elemet Rendezzük soronként az elemeit Írjuk ki az egyes oszlopokban az elemek maximumát Használjunk cím szerinti paraméterátadást, ahol lehetséges 3 Kérjünk be két egész számot 1 és 10 között, legyenek A és B. Készítsünk AxB méret, dinamikus szorzótáblát. Ehhez kérjük be a szükséges mennyiség számot. Írjuk ki az eredményt. Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 9, 2009 14 / 1