| ELTE-OTK-IT jegyzetek

Programozási alapismeretek

Függvények

Tartalom

Függvények értelme

Függvény vs. eljárás

Specifikációban és algoritmusban

Kódban

További linkek

Források

Függvények értelme

Függvényeket nagyon leegyszerűsítve azért használunk, mert lusták vagyunk.

Van egy kód ami pl. öt helyen olvas be egy-egy számot bemenet ellenőrzéssel és hibaüzenettel. Ahelyett, hogy írnánk 5 db do while ciklust, írunk egy beolvasó függvényt, amit 5 helyen meghívunk, különböző paraméterekkel (~eseti adatokkal)

Máris ötödakkor a kódunk, mint amúgy lenne.

Függvény vs. eljárás

Az eljárások egy olyan magyar nyelvű megkülönböztetés, ami (egy kissé fölösleges) logikai szétbontás.

Specifikációban és algoritmusban


            Be: 
            Ki: 
            Fv: fv_neve: T1 x T2->T3, fv_neve(p1, p2)=/...
            Fv: elj_neve: T1 x T2->T1, elj_neve(p1, p2)=/...
            Ef: 
            Uf: 
        

            Függvény Fv_neve(p1:T1, p2:T2):T3
                ...
                ...
                fv_neve := érték
            Függvény vége

            Eljárás Elj_neve(p1:T1, p2:T2)
                ...
                ...
                ...
            Eljárás vége
        

Kódban


        namespace projekt_neve
        {
            internal class Program
            {
                // Függvények a MAIN-EN KÍVÜL HELYEZKEDNEK EL!!!

                static T3 Fv_neve(T1 p1, T2 p2)
                {
                    T3 valami; // helyi (lokális) változó
                    // ... ...
                    return valami;          // !! return-ölünk egy a static után megadott típusú (jelen esetben T3) változót
                }

                static void Elj_neve(ref T1 p1, T2 p2)      // "ref" esetén a megadott változót közvetlenül módosít(hat)ja az eljárás
                {                                           // "ref" helyett "out" esetén a megadott változót közvetlenül módosítania kell az eljárásnak
                    // ... ...                              // !! tömb és mátrix esetén "ref" nélkül is közvetlenül hivatkozik a tömbre, vagyis ha az eljáráson/függvények belül módosítod, akkor az eredeti tömb/mátrix is módosul
                    // ... ...
                }

                static void Main(string[] args)
                {
                    T1 v1 = //...;
                    T2 v2 = //...;

                    T3 valtozo = Fv_neve(v1, v2);   // valahova "érkezik" a visszatérési érték, pl. elmentjük egy változóba
                    Elj_neve(v1, v2;)
                }
            }
        }
    

FONTOS: Nem kaphatnak azonos nevet változók, függvények (ahogy két változó sem lehet azonos nevű)!

További linkek

Gyakran használat függvények (C#) ELTE specifikáció szerkesztője

Források

Horváth Győző, Horváth Gyula, Szlávi Péter, Törley Gábor: Programozási alapismeretek 5. előadás (ppt) (előadó: Törley Gábor)