4.2. Függvények
A függvények olyan alprogramok, amelyek nagyon hasonlítanak az eljárásokra, de van egy nagyon fontos, lényeges különbség.
A függvény definiálása során legyünk tekintettel a tiszta kód szabályaira. Célszerű a metódusok (függvények) definiálásánál figyelembe venni az alábbi ajánlásokat:
- minél kevesebb argumentumot tartalmazzon
- lehetőleg legyen rövid
- jól elkülönülő részekből álljon
- a sorok legyenek rövidek
- csak egy dolgot csináljon
- lépésenkénti haladás
- követhető legyen a szerkezet
- minél kevesebb behúzási szint legyen benne
A függvény minden esetben előállít egy értéket, és ezzel az értékkel tér vissza a főprogramba. Ezért mindig meg kell adni a függvény neve előtt a visszatérési érték típusát. Ezt a void helyett kell beírni a fejrészbe. A visszatérési értékkel rendelkező változó elé pedig a return kulcsszót kell írni. Ha viszont egy alprogramban több értéket szeretnénk előállítani, akkor a függvényt nem használhatjuk, mivel az csak egy értéket képes előállítani, és az lesz a visszatérési értéke.
Mint azt már korábban említettük, az alprogramokat – melyek lehetnek eljárások vagy függvények – a főprogram vagy más alprogram hívja meg, de egy eljárás vagy függvény meghívhat további eljárásokat vagy függvényeket is.
38. feladat
Állítson elő 8 egész számot a [0; 100]-ban, és írja ki őket egy sorba! Egy függvény segítségével számolja ki a számok átlagát és írja ki 2 tizedes pontossággal!
Név: Átlag
Megoldás:
namespace Atlag
{
class Program
{
static double atlagFuggveny(int[] a)
{
double osszeg = 0, atlag = 0;
for (int i = 0; i < 8; i++)
{
osszeg += a[i];
}
atlag = Convert.ToDouble(osszeg) / 8;
return atlag;
}
static void Main(string[] args)
{
int[] a = new int[8];
Random szamok = new Random();
for (int i = 0; i < 8; i++)
{
a[i] = szamok.Next(101);
Console.Write("{0,4}", a[i]);
}
Console.WriteLine();
Console.WriteLine(" A tömb elemeinek átlaga: {0:0.00}", atlagFuggveny(a));
Console.ReadKey();
}
}
}
A függvény az a tömböt kapja meg paraméterként, és az atlag értékével tér vissza a függvényhívás helyére. A függvény értékének típusa double, ezért az atlag változó típusának is ilyennek kell lenni. Mivel az elemek száma egész, ezért az osszeg / 8 (egész / egész) csak akkor lesz valós, ha a Convert.ToDouble segítségével azzá tesszük az osztandót.
39. feladat
Kérje be egy másodfokú egyenlet együtthatóit, és számolja ki a [-6, 6]-ban az egész x értékekhez tartozó függvényértékeket, és írja ki a képernyőre egy sorba az x értékeit, és alá a megfelelő y értékeket! Az együtthatók értéke a [-5, 5]-ben legyen! Használjon függvényeket az adatbekéréshez és a függvényérték számításához!
Név: Függvényérték
Megoldás:
namespace Fuggvenyertek
{
class Program
{
static double fuggveny(double a, double b, double c, double x)
{
double y = 0;
y = a * x * x + b * x + c;
return y;
}
static double beker()
{
double adat = 0;
do
{
adat = Convert.ToDouble(Console.ReadLine());
} while (adat > 5 || adat < -5);
return adat;
}
static void Main(string[] args)
{
double a = 0, b = 0, c = 0;
Console.Write(" Kérem az a értékét [-5, 5]: ");
a = beker();
Console.Write(" Kérem a b értékét [-5, 5]: ");
b = beker();
Console.Write(" Kérem a c értékét [-5, 5]: ");
c = beker();
Console.WriteLine();
// X értékek kiírása
for (int x = -6; x < 7; x++)
{
Console.Write("{0,6}", x);
}
Console.WriteLine();
// Y (függvény) értékek kiírása
for (int x = -6; x < 7; x++)
{
Console.Write("{0,6}", fuggveny(a, b, c, x));
}
Console.ReadKey();
}
}
}
Az adatbekérést a beker függvény segítségével végeztük el, ahol egy hátultesztelő ciklussal csak a helyes értéket fogadjuk el. A függvényérték kiszámítása a valós típusú fuggveny függvénnyel történik, ahová az együtthatók és az x értéke paraméterként kerül át.
A függvény visszatérési értéke pedig az y, amelynek értékét a második for ciklussal írjuk ki. Mint látható, a függvényekre is érvényes: mindegy, hogy a főprogram elé vagy után helyezzük el az alprogramokat. Ennél a feladatnál a program futtatása során célszerű, ha egész értékeket adunk meg az együtthatóknak a kiíratás miatt.
Gyakorló feladatok
- Írjunk olyan függvényt, amely egy gömb térfogatát számolja ki!
- Készítsünk függvényeket, amelyek téglalap területét és kerületét számítják ki!
- Készítsünk olyan függvényt, amely egy szám négyzetét, köbét, és negyedik hatványát adja vissza!
- Készítsünk függvényt, amely eldönti, hogy a paramétere páros vagy páratlan természetes szám!
- Írjunk olyan programot, amely bekér egy mondatot, és kiírja úgy, hogy minden szavának kezdőbetűjét nagybetűvé alakítja!
- Írjunk olyan programot, amely bekér egy mondatot, és kiírja minden második karakterét!
- Készítsünk olyan programot, amely bekér egy karaktersorozatot, és minden karakterét megduplázza!
- Írjunk olyan programot, amely bekér egy karaktersorozatot, és ha a hossza páratlan, akkor írja ki a középső karakterét, ha páros, akkor írja ki a karaktersorozatunk első felét!
- Kérjünk be egy karaktersorozatot a billentyűzetről és írjunk olyan függvényt, amely megszámolja és kiírja az előforduló 'e' és 'i' betűk számát!
- Kérjünk be egy karaktersorozatot a billentyűzetről, és írassuk ki magánhangzók nélkül egy függvény segítségével!
- Írjunk olyan programot, amely bekér egy karaktersorozatot, és írassuk ki annyiszor, ahány 'a' betű van benne!
- Írjunk olyan programot, amely bekér egy karaktersorozatot, és kiíratja az első előforduló "sz" karaktersorozattól kezdődően!