Funkcje

Funkcja jest to fragment programu, któremu nadano nazwę i który możemy wykonać poprzez podanie jego nazwy oraz ewentualnych argumentów. Argumentami są dane przekazywane do funkcji.
  • z argumentami
  • bezargumentowe

Przykład interaktywny 1.


Definiowanie funkcji


typ_wartości nazwa_funkcji( typ_argumentu argument [,...] )
{
return wartość;
}


lub

void nazwa_funkcji()
{
//kod funkcji
}

Wywołanie funkcji

nazwa_funkcji( argument [,...], wartosc_argumentu );

lub

nazwa_funkcji()

Przykład 2.


#include <iostream>
float P(float x, float y{
return x * y;
}
int main() {
float a,b,c;
std::cout << "Wprowadz liczby a, b, c" << std::endl;
std::cin >> a;
std::cin >> b; 
std::cin >> c;
float wynik = (P(a,b)+P(a,c)+P(b,c))*2;
std::cout << "Pole prostopadloscianu wynosi: " << wynik;
return 0;
}

Przykład 3.


#include <iostream>
using namespace std;
void f() {
cout << "*******************";
}
int main() {
f();
return 0;
}


Rekurencja

Rekurencja, zwana także rekursją (ang. recursion, z łac. recurrere, przybiec z powrotem) – odwoływanie się np. funkcji lub definicji do samej siebie.

np. definicja n!
0!=1
1!=1
n!=n(n-1)! <=> n!=1*2*3*...*n


#include <iostream>
using namespace std;
long silnia(int n) {
 if(n<2) return 1;
 return n*silnia(n-1);
}
int main() {
 int n;
 cout << "Wpisz liczbę\n";
 cin >> n;
 cout << n << "! = " << silnia(n);
 return 0;
}


Zasięg zmiennych

Każda zmienna ma swój zasięg, w którym jest widoczna. Zasięg ten określa instrukcja bloku
{ ... }.

Sposoby przekazywania parametrów 

  • zmienne globalne (zły)
  • argumenty funkcji
  • wartości funkcji

Problem

Rozwiązywanie układów równań metodą wyznaczników

Rozwiązanie

#include <iostream>
using namespace std;
float w(float A1, float A2, float B1, float B2) {
 return   A1*B2-B1*A2 ;
}
int main() {
    float a1, b1, a2, b2, c1, c2, W, Wx, Wy, x, y;
    cout << "Podaj a1: ";
    cin >> a1;
    cout << "Podaj a2: ";
    cin >> a2;
    cout << "Podaj b1: ";
    cin >> b1;
    cout << "Podaj b2: ";
    cin >> b2;
    cout << "Podaj c1: ";
    cin >> c1;
    cout << "Podaj c2: ";
    cin >> c2;
    W=w(a1, a2, b1,b2);
    Wx=w(b1, b2, c1, c2);
    Wy=w(a1, a2, c1, c2);
    cout <<"W = " << W << endl;
    cout <<"Wx = " << Wx << endl;
    cout <<"Wy = " << Wy << endl;
    if(W != 0) {
      x=Wx/W;
      y=Wy/W;
      cout << "x= "<< x << endl;
      cout << "y= "<< y;
    }
    if(W == 0 && Wx != 0 && Wy != 0) {    
     cout <<"Uklad rownan jest sprzeczny, nie ma rozwiazan!";
    }
    if(W == 0 && Wx == 0 && Wy == 0) {
     cout << "Uklad jest nieoznaczony, nieskonczenie wiele rozwiazan";
    }
 return 0;
}