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.
typ_wartości nazwa_funkcji( typ_argumentu argument [,...] )
{
return wartość;
}
lub
void nazwa_funkcji()
{
//kod funkcji
}
lub
nazwa_funkcji()
#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;
}
#include <iostream>
using namespace std;
void f() {
cout << "*******************";
}
int main() {
f();
return 0;
}
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;
}
{ ... }.
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;
}
- 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ówRozwią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;
}