1 of 48

Funkcija ir jos prototipas

2 of 48

3 of 48

✅ Funkcija:

Funkcija – tai atskirai aprašytas programos blokas, kuris atlieka tam tikrą veiksmą. Ji leidžia:

  • padalinti programą į logiškas dalis,
  • pakartotinai naudoti kodą,
  • padidinti programos aiškumą ir tvarką.

Funkcijos yra pagrindinis C++ programavimo kalbos komponentas, leidžiantis suskaidyti kodą į mažesnes, pakartotinai naudojamas dalis.

4 of 48

Funkcija – tai programos dalis, kuri atlieka tam tikrą veiksmą.

Ji gali:

  • priimti duomenis (parametrus),
  • atlikti skaičiavimus,
  • išvesti duomenis,
  • grąžinti rezultatą (arba negrąžinti nieko).

Funkcijas naudoti verta, kai:

  • kartojasi tas pats veiksmas (pvz., skaičiavimas),
  • norime padalinti programą į dalis,
  • norime padidinti aiškumą ir tvarką,
  • norime pakartotinai naudoti kodą

5 of 48

Kodėl rašyti funkciją virš main() nėra visada geriausia?

  • Sutrinka logikamain() turėtų būti programos pradžia, o ne viduryje.
  • Sunku skaityti – kai funkcijų daug, main() pasimeta tarp jų.
  • Nepraktiška didesnėse programose – kai kodas išskaidytas į modulius, funkcijos dažnai būna atskiruose failuose.

Kur rašoma funkcija?

6 of 48

Galima funkcija, kuri nieko negrąžina (void)

  • Naudojama, kai reikia atlikti veiksmą, bet nereikia grąžinti rezultato.
  • Pvz., išvesti tekstą į ekraną.

7 of 48

Funkcijos grąžinančios vieną reikšmę

(return) per vardą

8 of 48

✅ Funkcija:

Funkcija – tai atskirai aprašytas programos blokas, kuris atlieka tam tikrą veiksmą. Ji leidžia:

  • padalinti programą į logiškas dalis,
  • pakartotinai naudoti kodą,
  • padidinti programos aiškumą ir tvarką.

✅ Funkcijos prototipas:

Funkcijos prototipas – tai funkcijos aprašymo santrauka, pateikiama prieš main() funkciją, kad kompiliatorius žinotų apie jos egzistavimą.

Įsivaizduokite, kad rašote receptą.

Viršuje parašote:

  • „Naudosime padažo gaminimo instrukciją (prototipas)“,
  • aprašote, kaip gaminamas patiekalas su padažu (pagrindinė funkcija)
  • vėliau paaiškinate, kaip gaminti padažą (funkcija).

Taip programa „žino“, kad tokia instrukcija egzistuoja, ir ją galės panaudoti, kai reikės.

9 of 48

10 of 48

1. Funkcija, kuri grąžina 1 reikšmę (return)

  • Naudojama, kai reikia apskaičiuoti ir gauti rezultatą.
  • Funkcijos tipas nurodo grąžinamos reikšmės tipą (pvz., int, double).

Jei funkcijos realizavimo aprašas pateikiamas prieš main(), tuomet funkcijos prototipo nereikia

11 of 48

Funkcijos prototipas nurodo naudotojui:

• kuria tvarka duomenys perduodami funkcijai;

• kaip gaunamas rezultatas

Funkcijos prototipas rašomas prieš funkciją main() ir baigiamas kabliataškiu

12 of 48

#1 Grąžinamos reikšmės tipas.

Jei funkcija negrąžina jokios reikšmės, vietoj rezultatoTipas

rašomas bazinis žodis void.

#2 Funkcijos Vardas parenkamas pagal tas pačias taisykles, kaip ir

kintamųjų vardai (prasmingas)

#3 Formalieji parametrai.

• Parametrai apibrėžiami kaip kintamieji, nurodant jų tipą ir vardą.

• Parametrai vienas nuo kito atskiriami kableliais.

• Jei funkcija neturi parametrų, rašomi tušti skliaustai ()

Funkcija

13 of 48

  • Veiksmai, kuriuos turi atlikti funkcija aprašomi jos dalyje funkcijosKamienas.

  • Jei funkcija skirta kokiai nors reikšmei grąžinti, turi būti bent vienas sakinys, kuriuo apskaičiuota reikšmė grąžinama į programą-

return Reiškinys.

Funkcija

14 of 48

15 of 48

Kreipinys į funkciją (1)

• Į funkciją kreipiamasi jos vardu, už skliaustų pateikiami faktiniai parametrai (pradiniai duomenys).

  • Funkcija grąžina reikšmę (t. y. jos tipas ne void).�
  • Grąžinta reikšmė priskiriama kintamajam Y.

  • Y tipas turi sutapti (arba būti suderinamas) su funkcijos grąžinamu tipu.

16 of 48

Kreipinys į funkciją (2)

• Į funkciją kreipiamasi jos vardu, už skliaustų pateikiami faktiniai parametrai (pradiniai duomenys).

  • Funkcija grąžina reikšmę, bet ji nepriskiriama kintamajam;

  • Grąžinta reikšmė gali būti:
    • spausdinama (išvedama)
    • perduodama kitai funkcijai
    • naudojama sąlygoje
    • naudojama cikle

17 of 48

1 pavyzdys

kai x=5, y=4

ekrane matysime:

Plotas 20

pradinius duomenis galime skaityti iš failo:

18 of 48

1 pavyzdys kai pradinius duomenis skaitome iš failo

:

19 of 48

1 pavyzdys kai duota n stačiakampių ir pradinius duomenis skaitome iš failo

20 of 48

1 užduotis

atlikti jei vis dar labai neaišku

21 of 48

2 užduotis

atlikti jei vis dar neaišku

22 of 48

3 užduotis

atlikti jei vis dar labai neaišku

23 of 48

2 pavyzdys

Nurodyta seka: a1 = 1; a2 = -2; an = an-1 + an-2 , kai n > 2.

Parašykite programą n-tajam sekos nariui apskaičiuoti.

Pasitikrinkite. Jei n = 4, tai atsakymas yra -3, o jei n = 10, tai atsakymas yra -47

4 užduotis: pataisykite, kad duomenys būtų iš failo.

24 of 48

3 pavyzdys

25 of 48

4 pavyzdys

5 užduotis - sek nurodymus ir sukurk programą

26 of 48

27 of 48

28 of 48

29 of 48

30 of 48

duomenų failai gali būti aprašyti kaip konstantos

31 of 48

32 of 48

33 of 48

34 of 48

35 of 48

36 of 48

Pasitikrink žinias

37 of 48

38 of 48

39 of 48

40 of 48

#include <iostream>

using namespace std;

// Funkcijos prototipas

int f(int x);

int main()

{

int a = 5;

f(a);

cout << a;

return 0;

}

// Funkcijos realizacija

int f(int x)

{

x = x + 1;

return x;

}

Duota C++ programa

Ką išves programa? Paaiškinkite atsakymą.

Programa išves: 5

Paaiškinimas:

Funkcija f grąžina reikšmę x + 1, tačiau ši reikšmė nėra panaudojama, nes funkcijos iškvietimas f(a); nepriskiria grąžintos reikšmės jokiam kintamajam.

Be to, funkcijos parametras x perduodamas pagal reikšmę, todėl funkcijoje atliekami pakeitimai nekeičia kintamojo a reikšmės main funkcijoje.

41 of 48

#include <iostream>

using namespace std;

// Funkcijos prototipas

int f(int x);

int main()

{

int a = 5;

f(a);

cout << a;

return 0;

}

// Funkcijos realizacija

int f(int x)

{

x = x + 1;

return x;

}

Duota C++ programa išves: 5

Kaip būtų teisinga pakeisti, kad išvestų 6?

Panaudoti grąžinamą reikšmę

a = f(a);

42 of 48

Duota C++ programa

Ką išves programa? Paaiškinkite atsakymą.

43 of 48

Užduotys

44 of 48

45 of 48

Papildomos sunkesnės užduotys

46 of 48

47 of 48

48 of 48