Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.

Slides:



Advertisements
Hasonló előadás
Koordináták, függvények
Advertisements

Összetett adattípusok 8/b tétel
Tömbök C#-ban.
Kifejezések 2+3 Egy egyszerű kifejezés… © Pasztuhov Dániel, www.programozas-oktatas.hu.
LEgyméretű tömbök, vektorok Alkalmazott Informatikai Tanszék SZÁMÍTÁSTECHNIKA I. dr.Dudás László 17./0. lVektorok definiálása lVektorok definiálása kezdőértékekkel.
LFüggvények Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 20./0. lFüggvények deklarációja és prototípusa lA függvénydefiníció lHivatkozás.
1 Hernyák Zoltán Programozási Nyelvek II. Eszterházy Károly Főiskola Számítástudományi tsz.
8. előadás (2005. április 19.) Pozicionálás fájlban (folyt.) I/O mechanizmus váltás Hibakezelő függvények Változók tárolási osztályai Parancssor-argumentumok.
Dinamikus tömbök.
Csala Péter ANDN #4. 2 Tartalom  C# - ban előre definiált típusok  Változók  Változókkal műveletek  Elágazás  Ciklus.
Bevezetés a Java programozásba
10. előadás (2004. április 20.) A C előfordító (folytatás) Néhány hasznos compiler opció Egy tanulságos könyvtári függvény Változó hosszúságú argumentum.
1 Programozás alapjai GEIAL312B (ANSI C) BSc (Bachelor of Science) / Alap képzés 2005/2006. őszi félév Miskolci Egyetem Általános Informatikai Tanszék.
6. előadás (2005. április 5.) Struktúrák Úniók Új adattípus definíálása Dinamikus memória foglalás 1.
7. előadás (2005. április 12.) Láncolt lista File kezelés 1.
5. előadás (2005. március 22.) Függvények definíciója, deklarációja, hívása Enumerációs adattípus 1.
4. előadás (2005. március 8.) Pointerek Pointer aritmetika
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 6. Gyakorlat const, static, dinamikus 2D.
Parancssori argumentumok Primitív típusok Operátorok Vezérlési szerkezetek Tömbök Ürmös Beáta, 2011.
Tömbök ismétlés Osztályok Java-ban Garbage collection
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Függvények, mutatók Csernoch Mária.
Mutatók, tömbök, függvények
Borland C/C++ mintapéldák
Borland C/C++ mintapéldák függvényekre. 1. példa Írjunk olyan függvényt amely egy számot kiirat.
A C++ programozási nyelvSoós Sándor 1/15 C++ programozási nyelv Gyakorlat hét Nyugat-Magyarországi Egyetem Faipari Mérnöki Kar Informatikai Intézet.
LDinamikus tömbök, kétdimenziós tömbök Alkalmazott Informatikai Tanszék MŰSZAKI INFORMATIKA dr.Dudás László 21./0. lVektorok létrehozása futásidőben, dinamikusan.
C++ Alapok, első óra Elemi típusok Vezérlési szerkezetek
Programozás I Függvények általános jellemzői
A JAVA TECHNOLÓGIA LÉNYEGE Többlépcsős fordítás A JAVA TECHNOLÓGIA LÉNYEGE Platformfüggetlenség.
Ficsor Lajos Template-ek CPP8/ 1 Template-ek. Ficsor Lajos Template-ek CPP8/ 2 A template fogalma Kiindulási probléma: tetszőleges típusokon kellene ugyanolyan.
C nyelv utasításai.
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Táblázatkezelés alapjai MS Excel, OpenOffice Calc
Tömbök Csernoch Mária.
Összetett adattípusok
Programozási Nyelvek (C++) Gyakorlat Gyak 02.
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
VI. Konténerek 18. Tömbök 19. Rendezés, keresés, karbantartás
Készítette: Csíki Gyula
Hernyák Zoltán Programozási Nyelvek II.
1 Hernyák Zoltán Web: Magasszintű Programozási Nyelvek I. Eszterházy.
Java programozási nyelv Metódusok
UNIVERSITY OF SZEGED D epartment of Software Engineering UNIVERSITAS SCIENTIARUM SZEGEDIENSIS Programozás II. 4. Gyakorlat Függvény paraméterek, dinamikus.
Objektum orientált programozás 3. Függvények Nagy Szilvia.
Objektum orientált programozás
Objektum orientált programozás
A Visual Basic nyelvi elemei
Függvények a C nyelvben 1 Függvényeket a következő esetekben szokás írni: Ha ugyanazt a tevékenységet többször is el kell végeznünk ugyanolyan típusú,
C Programozási alapok.
CUDA C/C++ programozás CUDA C bevezetés A segédanyag készítése a TÁMOP A/ Nemzeti Kiválóság Program című kiemelt projekt keretében.
2012. március 21. Paulik Áron.  Ha a függvényünk feladata olyan, hogy nem lenne értelme a visszatérési értéknek, vagy csak nincs rá szükség, void típusúként.
1. feladat  Készíts olyan függvényt, mely paraméterül kapja két egész típusú változó címét, s hívása után a két változó értéke helyet cserél.
Ficsor Lajos A C++ programozási nyelv I. CPP1/ 1 Osztály és objektum fogalma.
A 2. géptermi beszámoló VBA anyagának összefoglalása
Excel programozás (makró)
Programtervezés, programozás I. 2.5 tömbök,stringek
Objektum orientált programozás 4. Mutatók, típusok és struktúrák Nagy Szilvia.
Struktúrák a C nyelvben 1 Akkor használjuk, ha az egy egyedre jellemző különböző típusú adatokat együtt akarjuk tárolni. Lényegében típusdeklaráció. A.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
Függvények, mutatók Csernoch Mária. Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési.
TÁMOP /1-2F JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam Osztályok, objektumok definiálása és alkalmazása. Saját.
a programegységek között
Kifejezések C#-ban.
Hernyák Zoltán Magasszintű Programozási Nyelvek I.
JAVA programozási nyelv NetBeans fejlesztőkörnyezetben I/13. évfolyam
A struct, az union és az enum típus
Konverziós operátorok
Az objektum-orientáltság
Előadás másolata:

Függvények, mutatók Csernoch Mária

Függvények függvény definíciója az értelmezési tartomány tetszőleges eleméhez hozzárendel egy értéket –függvény helyettesítési értéke –x  f(x) –D f  R f definíció szerint egy értéket adnak vissza C-ben –értéket nem adnak vissza –egy értéket adnak vissza –több értéket adnak vissza

Függvények a függvény definícióban szereplő tárolók –formális paraméterek –formális argumentumok –paraméterek a függvényhívás során megadott értékek –aktuális paraméter –aktuális argumentumok –argumentumok

Függvények paraméterezése és a függvényérték a paraméterek deklarációs sorrendje követi a pareméterek sorrendjét semmilyen összevonás sem lehetséges a deklarált paramétereket a függvényen belül a függvény lokális változóként használja, a függvényen kívülről nem érhetők el a visszaadott érték az utasításban szereplő kifejezés értéke –return kifejezés;

Függvények paraméterezése és a függvényérték ha a függvény definíciójában nem adjuk meg a visszatérési típust, akkor alapértelmezés szerint int típusú lesz a függvény a void típus felhasználásával olyan függvényeket készíthetünk, amelyek nem adnak vissza értéket

Függvényhívás a függvényhívás olyan kifejezés, amely átadja a vezérlést és az argumentumokat az aktualizált függvénynek a C, C++ nyelveken az argumentumok érték szerint adódnak át –az argumentumok másolatát veszi fel a megfelelő paraméter értékként –következmény a függvényen belül a paraméteren bármilyen műveletet végezhetünk, annak nincs kihatása a híváskor megadott argumentumra –átadott érték változónak a címe függvényből „kihivatkozva” megváltoztathatjuk a változó értékét

Pointerek, mutatók minden változónak van címe annak a memóriarekesznek a címe, amellyel kezdődően hely van foglalva számára a memóriában változó címe tárolható címtípusú változókban tárolhatók a címek pointerek, mutatók

Pointerek definiálása * pl. –int *p; egy int típusú változó címét tartalmazhatja –double *q; egy double típusú változó címét tartalmazhatja

Pointer operátorok & –a változó címére hivatkozunk –& * –a pointeren keresztül arra a változóra hivatkozunk, amelyre mutat (a pointer által mutatott objektum, a mutatott érték előállítása) –* pl. –int a=5, *p; p = &a; // p pointer az ‘a’ változóra mutat printf(”%d\t%d\t%d\n”,p, a,*p); printf(”%X\t%X\t%X\n”,p, a,*p);

Mit csinál? int k1=1, k2=2, k3=3, k4=4, k5=5; int *p; p=&k1; printf("%X\t%d\n",p,*p); printf("%X\t%X\t%X\t%X\t%X\n",p,p+1,p+2,p+3, p+4);

Tárolás címértéknév 22FF6C1k1 pointer p

Tárolás címértéknév 22FF6C1k1 22FF70 pointer p p+1

Tárolás címértéknév 22FF6C1k1 22FF70 22FF74 pointer p p+1 p+2

Tárolás címértéknév 22FF6C1k1 22FF70 22FF74 22FF78 pointer p p+1 p+2 p+3

Tárolás címértéknév 22FF6C1k1 22FF70 22FF74 22FF78 22FF7C pointer p p+1 p+2 p+3 p+4

Mit csinál? int i; int k[5]; int *kt; kt=k; for (i=0; i<5; i++){ k[i]=i; printf("%d\t",k[i]); printf("%d\n",kt); printf("%d\n",kt+i); }

Mit csinál? int i; int k[5]; int *kt; kt=k; for (i=0; i<5; i++){ k[i]=i; printf("%d\t",k[i]); printf("%d\t",kt); printf("%d\n",kt+i); }

Mit csinál? int i; char c, *p1=&c; float *p2=(float *)&c; printf("%X\n%X\n\n",p1,p2); for (i=0; i<20; i++){ printf("%X\t%X\n",p1+i,p2+i); }

Mit csinál? int i; char c, *p1=&c; float *p2=(float *)&c; printf("%X\n%X\n\n",p1,p2); for (i=0; i<20; i++){ printf("%X\t%X\n",p1+i,p2+i); }

Lépésköz charfloatcímnév p1p222FF2Bc p1+122FF2C p1+222FF2D p1+322FF2E p1+4p2+122FF2F p1+522FF30 p1+622FF31 p1+722FF32 p1+8p2+222FF33

Egydimenziós tömbök egydimenziós tömbök (vektorok) deklarálása típus név[méret] méret –konstans –a tömbben tárolható elemek számát definiálja példák egydimenziós tömbök deklarálására –int a[5]; –float b[20]; –tömb méretének megadása makróval: char c[N]; #define N 100; char c[N];

Tömbök a tömb elemei azonos típusúak tömb elemeinek indexelése –0-tól (méret − 1)-ig hivatkozás tömb elemre –pl.: a[0], b[5] 0a[0] 1a[1] 4a[2] 9a[3] 16a[4] int a[5]tömb dekl. atömb neve a: a[0]a[1]a[2]a[3]a[4]

Egydimenziós tömbök inicializálása int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; char szo[15] = {‘a’, ‘l’, ‘m’, ‘a’}; –tárolási osztálytól függően 0 v. határozatlan float valosak[ ] = {23.5, 49.2, 3.45}; –a tömb automatikusan 3 eleműre definiálódik int a[5] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; –helytelen, túl sok a kezdőérték –C semmilyen ellenőrzést nem végez a tömb indexeire vonatkozóan –indexhatár átlépése veszélyes

Tömbök és pointerek egy tömb neve nulladik elemének címe (pointer konstans, amely a tömb 0-dik elemére mutat) int a[5]; int *p; p = &a[0]; // a mutatót a tömb első elemére irányítjuk p = a; vagy int a[5], *p = a; a: a[0]a[1]a[2]a[3]a[4] p: p+1p+2p+3p+4

Tömbök és pointerek A tömb 0-dik elemének a címe –a  &a[0] A tömb i-edik elemének címe –a + i  &a[ i ] –&p[ i ] –a + i –p + i Különbség ‘p’ és ‘a’ között, hogy ‘a’ konstans, ‘p’ változó –p = a; // helyes –p++; // helyes –a = p; // hibás –a++; // hibás

Tömbök és pointerek A tömb 0-dik eleme –a[0] –p[0] –*(a + 0) –*(p + 0) –*a –*p A tömb i-edik eleme –a[ i ] –p[ i ] –*(a + i) –*(p + i)

Többdimenziós tömbök Általános alak –típus név [méret1] [méret2] … [méretn]; Kétdimenziós tömbök (mátrixok) –típus név [méret1] [méret2] –méret1: tömb sorainak száma –méret2 tömb oszlopainak száma

Kétdimenziós tömbök inicializálása int matrix [3] [5] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15}; int matrix [3] [5] = {{1, 2, 3, 4, 5} {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15}};

Kétdimenziós tömbök elemeinek elérése matrix [2] [3] Sorok címe:s/o01234 matrix[0]  matrix[1]  matrix[2] 

Tömbök átadása paraméterként #define N 10 void tombolvas(int * a, int n); main(){ int i, m=5; int aa[N]; srand(time(NULL)); tombolvas(aa,m); for(i=0; i<m; i++){ printf("%d\t",aa[i]); } } void tombolvas(int * a, int n){ int i; for(i=0; i<n; i++){ a[i]=rand()%41+10; printf("%d\t",a[i]); } printf("\n"); }

Tömbök átadása paraméterként #define N 10 void tombolvas2(int a[ ], int n); main(){ int i, m=5; int aa[N]; srand(time(NULL)); tombolvas2(aa,m); for(i=0; i<m; i++){ printf("%d\t",aa[i]); } } void tombolvas2(int a[ ], int n){ int i; for(i=0; i<n; i++){ a[i]=rand()%41+10; printf("%d\t",a[i]); } printf("\n"); }

Tömbök átadása paraméterként #define N 10 typedef int i10vek[N]; void tombolvas3(i10vek a, int n); main(){ int i, m=5; i10vek vel; srand(time(NULL)); tombolvas3(vel,m); for(i=0; i<m; i++){ printf("%d\t",vel[i]); } } void tombolvas3(i10vek a, int n){ int i; for (i=0; i<n; i++){ a[i]=rand()%41+10; printf("%d\t",a[i]); } printf("\n"); }