Informatika2-2013/Gyakorlat04
A MathWikiből
(Változatok közti eltérés)
97. sor: | 97. sor: | ||
== Pointerek == | == Pointerek == | ||
− | Próbáljátok ki az alábbi kódot: | + | * Próbáljátok ki az alábbi kódot: |
<c> | <c> | ||
116. sor: | 116. sor: | ||
} | } | ||
</c> | </c> | ||
+ | |||
+ | * Miért nem változott meg az értéke ''x''-nek? | ||
+ | |||
+ | * Válasz: nem az ''x'' mint változó lett átadva a függvénynek, hanem csak az értéke. Így amikor a függvény megváltoztatja 5-re, valójában csak egy lokális változó értéke változik 5-re, nem a main-ben szereplõ ''x''-é. |
A lap 2013. március 5., 03:28-kori változata
Tartalomjegyzék |
Ismétlés
- Típusok, ezek megjelenítése és beolvasása.
- Nem hétköznapi vezérlési szerkezetek, break, continue.
- Tömbök létrehozása:
int t[30];
- Tömb elemnek értékadás:
t[6] = 54;
- Természetesen változókat is lehet használni a tömb indexénél (ami 0-tól n-1-ig megy, ahol n a tömb mérete):
int i; for(i = 0; i < 30; i++){ t[i] = 0; }
Függvények
- A következõképpen definiálhatunk egy függvényt:
v_ért fv_név(p_típus1 p_név1, p_típus2 p_név2){ /* */ return érték; }
- Ahol v_ért a visszatérési érték típusa, fv_név a függvény neve (ezzel tudjuk majd meghívni), p_típus1 az elsõ paraméter típusa, p_név1 az elsõ paraméter neve, stb. A függvénynek mindenképpen olyan típusú adatot kell visszaadnia, mint a visszatérési értéke.
- Egy függvény visszatérési értéke lehet void, ekkor nem kell visszaadnia értéket, valamint nem feltétlen kell, hogy legyen paramétere, ekkor a zárójelek közé írhatunk void-ot, vagy hagyhatjuk üresen.
- Példa egy függvényre:
double atlag(double a, int b){ double x; x = a / b; return x;
- Ez a függvény az elsõként beadott double típusú számnak és a másodikként adott int-nek az átlagát adja vissza. Egy hívásra példa:
int g = 5; double er; er = atlag(5.4, g);
- Amint már korábban is láttuk függvényhívásokban használhatunk változókat, de konstansokat is.
- Az elõzõ függvényt írhattuk volna ilyen egyszerûbb alakban is:
double atlag(double a, int b){ return a / b;
- Függvényhívást használhatunk egy függvény argumentumaként is (hisz valójában egy érték) pl:
printf("%lf", atlag(3.2, 6));
Feladatok 1
1. Hatványozó függvény
Írjatok függvényt, ami hatványoz. Bemenete két int a és n, visszatérési értéke pedig az a^n (a az n-ediken).
Használjátok a következõ main-t hozzá (a megírandó függvényt az include és a main közé írjátok):
#include <stdio.h> int main(void){ int x; int y; scanf("%d %d", &x, &y); printf("%d\n", /* Ide jon a fuggvenyetek hivasa x es y-al */); return 0; }
2. Intervallumba esõk kiírása
Írjatok függvényt, ami bemenetként kap egy double tömböt és két int-et és kiírja printf-el a tömb azon elemeit amik beleesnek az adott int-ek által meghatározott intervallumba.
Függvényeknek tömböt a következõ módon (is) átadhattok (az elsõ paraméter a tömb):
void fv(int t[], int v){...}
A main függvényetek megírásában használjátok a következõ tömböt az egyszerûség kedvéért (így lehet egyszerre megadni egy tömb elemeit, a []-be nem is kell feltétlen beleírni az elemszámot):
double tomb[10] = { 2.5, 7.6, 1.2, -8.9, 4.6, -4.8, 12.4, 1.1, 3.5, -6.7 };
A main-ben ne felejtsétek el letesztelni a függvényeteket!
Pointerek
- Próbáljátok ki az alábbi kódot:
#include <stdio.h> void atir(int a){ a = 5; } int main(void){ int x = 8; printf("eredeti: %d\n", x); atir(x); printf("atir utan: %d\n", x); return 0; }
- Miért nem változott meg az értéke x-nek?
- Válasz: nem az x mint változó lett átadva a függvénynek, hanem csak az értéke. Így amikor a függvény megváltoztatja 5-re, valójában csak egy lokális változó értéke változik 5-re, nem a main-ben szereplõ x-é.