Programozás I gyakorlat

Hasonló dokumentumok
Programozás I gyakorlat

Programozás I gyakorlat

Programozás I gyakorlat. 10. Stringek, mutatók

Programozás C nyelven (10a. ELŐADÁS) Sapientia EMTE

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

A C programozási nyelv III. Pointerek és tömbök.

Programozás C nyelven (10. ELŐADÁS) Sapientia EMTE

A C programozási nyelv III. Pointerek és tömbök.

A C programozási nyelv V. Struktúra Dinamikus memóriakezelés

C programozási nyelv Pointerek, tömbök, pointer aritmetika

8. gyakorlat Pointerek, dinamikus memóriakezelés

Programozás C- és Matlab nyelven C programozás kurzus BMEKOKAM603 Mutatók. Dr. Bécsi Tamás 7. Előadás

Programozás II. 2. Dr. Iványi Péter

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós augusztus 29. Széchenyi István Egyetem, Gy r

Programozás I gyakorlat

Programozás I gyakorlat

Szövegek C++ -ban, a string osztály

Tartalom Keresés és rendezés. Vektoralgoritmusok. 1. fejezet. Keresés adatvektorban. A programozás alapjai I.

Programozás alapjai C nyelv 8. gyakorlat. Mutatók és címek (ism.) Indirekció (ism)

Keresés és rendezés. A programozás alapjai I. Hálózati Rendszerek és Szolgáltatások Tanszék Farkas Balázs, Fiala Péter, Vitéz András, Zsóka Zoltán

Programozás alapjai gyakorlat. 4. gyakorlat Konstansok, tömbök, stringek

Programozás alapjai C nyelv 7. gyakorlat. Függvények. Függvények(2)

Függvények. Programozás alapjai C nyelv 7. gyakorlat. LNKO függvény. Függvények(2) LNKO függvény (2) LNKO függvény (3)

Programozás I gyakorlat

Mutatók és címek (ism.) Programozás alapjai C nyelv 8. gyakorlat. Indirekció (ism) Néhány dolog érthetőbb (ism.) Változók a memóriában

Járműfedélzeti rendszerek II. 3. előadás Dr. Bécsi Tamás

C memóriakezelés. Mutató típusú változót egy típus és a változó neve elé írt csillag karakterrel hozhatjuk létre.

A C programozási nyelv I. Bevezetés

A C programozási nyelv I. Bevezetés

C string műveletek (string.h alkalmazása)

10. gyakorlat Struktúrák, uniók, típusdefiníciók

Java II. I A Java programozási nyelv alapelemei

Programozás II. 4. Dr. Iványi Péter

Struktúrák (struct) A struktúra szerkezetét meghatározó deklaráció általános formája:

Bevezetés a programozásba I.

Mutatók és mutató-aritmetika C-ben március 19.

Programozás alapjai gyakorlat. 2. gyakorlat C alapok

Pénzügyi algoritmusok

1. Alapok. Programozás II

Programozási Nyelvek: C++

Programozás C nyelven FELÜLNÉZETBŐL elhullatott MORZSÁK. Sapientia EMTE

Programozási nyelvek Java

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 15. Széchenyi István Egyetem, Gy r

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

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós október 11. Széchenyi István Egyetem, Gy r

5. gyakorlat. Konstansok Tömbök Stringek

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Készítette: Nagy Tibor István

Java II. I A Java programozási nyelv alapelemei

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

7. fejezet: Mutatók és tömbök

Programozás alapjai. 5. előadás

3. Osztályok II. Programozás II

Programozás alapjai. 10. előadás

és az instanceof operátor

Programozás C és C++ -ban

OOP #14 (referencia-elv)

Java VIII. Az interfacei. és az instanceof operátor. Az interfészről általában. Interfészek JAVA-ban. Krizsán Zoltán

Sztringkezelő függvények. A string típusú változók kezelése, használata és szerepük a feldolgozás során

Programozás C++ -ban 2007/1

Bevezetés a C++ programozási nyelvbe

7/8. gyakorlat Karaktertömbök és sztringkezelés

C++ programozási nyelv Konstruktorok-destruktorok

Programozás alapjai. (GKxB_INTM023) Dr. Hatwágner F. Miklós szeptember 27. Széchenyi István Egyetem, Gy r

HTML ÉS PHP ŐSZI FÉLÉV

C++ referencia. Izsó Tamás február 17. A C++ nyelvben nagyon sok félreértés van a referenciával kapcsolatban. A Legyakoribb hibák:

1. Template (sablon) 1.1. Függvénysablon Függvénysablon példányosítás Osztálysablon

Programozási nyelvek II.: JAVA, 4. gyakorlat

Vezérlési szerkezetek

Bevezetés a programozásba I 10. gyakorlat. C++: alprogramok deklarációja és paraméterátadása

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

1. Egyszerű (primitív) típusok. 2. Referencia típusok

Bevezetés a programozásba I.

Programozás C nyelven (9. ELŐADÁS) Sapientia EMTE

Bevezetés a Python programozási nyelvbe

Írjon olyan programot a standard könyvtár alkalmazásával, amely konzolról megadott valós adatokból meghatározza és kiírja a minimális értékűt!

5. Gyakorlat. struct diak {

Cekla. Készítette Doxygen Tue Sep :13:44

Bevezetés a programozásba. 8. Előadás: Függvények 2.

Kifejezések. A programozás alapjai előadás. Operátorok. Kifejezések. Operátorok precedenciája. Operátorok precedenciája

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

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

A C# programozási nyelv alapjai

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

Adatszerkezetek és algoritmusok

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

10. gyakorlat. Pointerek Tárolási osztályok

Programozás alapjai C nyelv 5. gyakorlat. Írjunk ki fordítva! Írjunk ki fordítva! (3)

Bevezetés a programozásba. 9. Előadás: Rekordok

Programozás II. 2. gyakorlat Áttérés C-ről C++-ra

11. gyakorlat Sturktúrák használata. 1. Definiáljon dátum típust. Olvasson be két dátumot, és határozza meg melyik a régebbi.

Programozas 1. Strukturak, mutatok

Bevezetés a programozásba II. 5. Előadás: Másoló konstruktor, túlterhelés, operátorok

Programozás I. gyakorlat

Kifejezések. Kozsik Tamás. December 11, 2016

Programozási nyelvek II.: JAVA, 4. gyakorlat

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

Bevezetés a programozásba I.

Apple Swift kurzus 3. gyakorlat

3. ZH-ban a minimum pontszám 15

Átírás:

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

1 Sztringek Deníció Értékadás és karakterhivatkozás 2 Sztringkezel függvények Bekérés és kiírás Fontosabb m veletek 3 Mutatók Deníció, alapok Mutatók és mutatott értékek Többszörös indirekció Mutató aritmetika 4 Cím szerinti paraméterátadás 5 Feladatok Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 2 / 25

Sztringeek - ismétlés Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 3 / 25

Sztringek Deníció A sztring olyan karaktertömb, amelyben a karakterek sorozatát a 0 érték karakter zárja. Tárolás char s[]; char s[10]={'a','b','c','\0'}; char s[]="abcde"; char* sp="mutatott sztring"; //Eltér az el z ekt l Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 4 / 25

Stringek értékadása Tömb esetén char s[]="abc"; s="cba" //Hibás szintaxis Az értékadás sztringkezel függvények segítségével valósítható meg. Mutató esetén char* sp="egyik"; sp="masik"; //Helyes értékadás Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 5 / 25

String literálok összef zése, karakterekre hivatkozás Literálok összef zése char s[]="abc" "def"; //char s[]="abcdef"; Ekvivalens a két szintaktika, a literálok között bármilyen whitespace lehet. A sztringekben lév vezérl karakterek csak a részsztringben érvényesek! Karakterre hivatkozás char s[]="abcdef"; A harmadik karakter tömb szintaktikával: s[2] A harmadik karakter mutató szintaktikával: *(s+2) Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 6 / 25

Sztringkezel függvények Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 7 / 25

Sztringkezel függvények A sztringek kezelésére alkalmas függvények a sztring.h header le-ban találhatók. Minden sztringkezel függvény használatakor be kell tölteni (#include<>). Ebben az állományban számos függvény található sztringek összehasonlítására és módosítására. Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 8 / 25

Bekérés, kiírás I. char* gets(char* s) Sor bekérésére alkalmas függvény A kapott char* által mutatott címre egy sort olvas be Visszatérési értéke a buer címe int puts(const char* s) Sor kiírására alkalmas függvény A kapott sztringet kiírja a képerny re Visszatérési értéke a kiírt karakterek száma Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 9 / 25

Bekérés, kiírás II. int sscanf(char* in,const char* format[, arguments]) String bekérésére alkalmas függvény A kapott char* in tömbb l olvas A formázó sztring megadása megegyezik a scanf-nél tanultakkal int sprintf(char* out,const char* format[, arguments]) String kiírására alkalmas függvény A kapott char* out tömbbe történik a kiírás A formázó sztring megadása megegyezik a printf-nél tanultakkal Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 10 / 25

Másolás, összef zés, hossz meghatározása char* strcpy(char* dest,const char* src) Az src sztringet a dest-be másolja Visszatérési értéke a dest mutatója char* strcat(char* dest,const char* src) Az src sztringet a dest-hez f zi Visszatérési értéke a dest mutatója size_t strlen(const char* src) Visszaadja a sztring hosszát a karakterek számában Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 11 / 25

Keresés, összehasonlítás char* strchr(const char* src, int c) Megkeresi src-ben a c karakter els el furdulási helyét, erre mutató pointert ad vissza char* strcmp(const char* str1,const char* str2) Összehasonlítja a két sztringet: str1<str2 A visszatérési érték negatív str1=str2 A visszatérési érték nulla str1>str2 A visszatérési érték pozitív char* strspn(const char* str1,const char* str2) str1 els olyan pozíciójával tér vissza, amely str2-ben nem található char* strstr(const char* str1,const char* str2) str2 els el fordulását keresi meg str1-ben található. Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 12 / 25

Egyéb sztringkezelé függvények Számos más sztringkezel függvény is létezik, illetve az el bbiek módosításai. Ezek egy része megtalálható az el adásanyagban, a teljes lista a referenciakönyvekben, vagy a weben. Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 13 / 25

Mutatók Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 14 / 25

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 2, 2009 15 / 25

Mutatók létrehozása Szintaxis [tárolási osztály] mutatotttípus* pnev=null; További jellemz k A mutatott érték típusa el re meghatározott Létrehozáskor a mutatókat mindig célszr inicializálni Deklarációnál minden mutató el tt szerepelnie kell a * karakternek A * a mutató neve és típusa között bárhol szerepelhet Univerzális mutató (void*) Bármire mutathat, használat el tt a megfelel típusúra kell konvertálni. Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 16 / 25

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. Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 17 / 25

Mutatók értékadása Címképzés A mutatók értékeként bármely változó címét megadhatjuk a & operátor segítségével. Veszélyek A használaton kívüli mutatókat mindig állítsuk NULL értékre Egy mutató használata el tt ellen rizzük, hogy NULL érték -e Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 18 / 25

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 2, 2009 19 / 25

Mutató aritmetika M veletek mutatókkal pointer + int = pointer A hivatkozott memóriacím után elhelyezked objektumok címét adja meg pointer - int = pointer A hivatkozott memóriacím elött elhelyezked objektumok címét adja meg pointer - pointer = int Két azonos típusú mutató esetén, a köztük elhelyezked objektumok számát adja meg Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 20 / 25

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 2, 2009 21 / 25

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 2, 2009 22 / 25

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

1 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 2 Kérjünk be négy számot Készítsünk egy valtoztat nevü függvényt, amely egy számot véletlenszer en vagy eggyel növel, vagy eggyel csökkent Készítsünk egy mindet_valtoztat nevü függvényt, amely mind a négy számot változtatja Készítsünk egy függvényt, ami addig változtatja a számokat, míg az egyik 0 nem lesz (minden lépésben írjuk ki az aktuális értékeket) Használjunk cím szerinti paraméterátadást, ahol lehetséges Tar Péter (PE-MIK-DCS) Programozás I. - 9. gyakorlat November 2, 2009 24 / 25