C++ funkcje

Tworzenie i wywoływanie funkcji w C++

Funkcja to blok kodu, który działa tylko wtedy, gdy jest wywoływana.
Do funkcji można przekazywać dane, zwane parametrami.
Funkcje służą do wykonywania określonych czynności i są ważne przy ponownym użyciu kodu.
Zdefiniuj kod raz i używaj go wiele razy.
Aby utworzyć funkcję, podaj: zwracany typ, nazwę funkcji, po niej nawiasy ().
typ mojaFunkcja() {
  // kod funkcji do wykonania
}
gdzie:
  • mojaFunkcja() to nazwa funkcji, w nawiasach możemy przekazywać argumenty funkcji
  • typ: void oznacza, że ​​funkcja nie ma wartości zwracanej, inne zgodne są z definicją typów zmiennych.
  • wewnątrz funkcji (treści) dodajemy kod do wykonania

Funkcje w C++ możemy tworzyć na kilka sposobów:

Sposób I

Między bibliotekami a funkcją main().

Wszystkie definicje funkcji wraz z ich instrukcjami tworzymy przed główną funkcją main()

#include <iostream>
using namespace std;

//definicja funkcji wraz z jej ciałem

typ_funkcji nazwa_funkcji(lista argumentów)
{
	//ciało funkcji
	return wartość; 
}

int main()
{
	//instrukcje funkcji main

	return 0;
}

Sposób II

Deklaracje prototypów (typów, nazw) funkcji umieszczamy przed główną funkcją main()

Definicje funkcji umieszczamy pod główną funkcją main()

Taki sposób tworzenia funkcji jest wygodny, w przypadku dużej ich ilości.

#include <iostream>
using namespace std;

//definicja funkcji wraz z jej ciałem
//przy tworzeniu prototypów wstawiamy
//średnik na końcu funkcji

typ_funkcji1 nazwa_funkcji(lista argumentów);
typ_funkcji2 nazwa_funkcji_drugiej(lista argumentów); 
...

int main()
{
	//instrukcje funkcji main
	return 0;
}

//implementacje funkcji zadeklarowanych powyżej
typ_funkcji1 nazwa_funkcji(lista argumentów)
{
	//instrukcje funkcji
	return wartość; 
}

//implementacja funkcji zadeklarowanej powyżej
typ_funkcji2 nazwa_funkcji_drugiej(lista argumentów)
{
	//instrukcje funkcji
	return wartość; 
}

Wywoływanie funkcji

Aby wywołać funkcję w C++, należy podać jej nazwę oraz argumenty (jeśli takie posiada), zwracając uwagę, na zgodność typów argumentów:

jeśli funkcja o nazwie "f" pobiera następujące typy f(int a, char b), oznacza to, że przy uruchomieniu tej funkcji pierwszym argumentem musi być liczba typu int, a drugim argumentem musi być znak np.:

//wywołanie funkcji f

f(123,'a');

lub

int a = 3;

char znak = 'p';

//wywołanie funkcji f

f(a,znak);

Funkcje niezwracające wartości wywołujemy podając tylko ich nazwę, natomiast funkcje z wartością zwrotną przypisujemy do odpowiednich zmiennych lub kierujemy na wyjście do pliku lub na ekran (wypisujemy wynik na ekranie).

Podprogramy (funkcje) możemy wywoływać w głównej funkcji main() lub z wnętrza innych funkcji, metod, itd..

Przeanalizujmy przykłady:

Stworzymy dwie funkcje:

  • void sumaA(int, int) - wyświetlająca sumę dwóch liczb całkowitych
  • int sumaB(int, int) - zwracającą sumę dwóch liczb całkowitych
#include <iostream>
using namespace std;

void sumaA(int a, int b)
{
	cout<<"Suma liczb "<<a<<" i "<<b<<" wynosi: "<<a+b<<endl;
}

int sumaB(int a,int b)
{
	return a+b;
}

int main()
{
	setlocale(LC_CTYPE, ".1250"); // polskie litery
	//wywołanie funkcji typu void - bez zwróconej wartosci
	sumaA(2,3);

	//wywołanie funkcji z informacją zwrotna zapisaną w zmiennej suma
	int suma = sumaB(3,6);

	cout<<"Suma liczb 3 i 6 wynosi: "<<suma<<endl;

	return 0;
}

Przykład

Stworzymy dwie funkcje:

  • float max(float, float) - wyznaczającą wartość maksymalną, z podanych dwóch liczb rzeczywistych
  • void hello() - wyświetlającą na ekranie treść: "Witaj programisto!!!"

sposobami omówionymi powyżej.

Sposób I

#include <iostream>
using namespace std;

float max(float a,float b)
{
	if(a>b)
		return a;
	return b;
}

void hello()
{	
	cout<<"Witaj programisto!!!";
}

int main()
{
	setlocale(LC_CTYPE, ".1250"); // polskie litery
	//wywołanie funkcji max
	cout<<"Wartość maksymalna z liczb 5.2 i 7.3 wynosi: "<<max(5.2, 7.3)<<endl;

	//wywołanie funkcji hello
	hello();

	cout<<endl;
	
	return 0;
}

Sposób II

#include <iostream>
using namespace std;

//definicja prototypów funkcji max i hello

//zauważmy, że wystarczy podać typy argumentów bez ich nazw
float max(float, float); 
void hello();

int main()
{
	setlocale(LC_CTYPE, ".1250"); // polskie litery
	//wywołanie funkcji max
	cout<<"Wartość maksymalna z liczb 5.2 i 7.3 wynosi: "<<max(5.2, 7.3)<<endl;

	//wywołanie funkcji hello
	hello();

	cout<<endl;

	return 0;
}

//pełne definicje funkcji
float max(float a, float b)
{
	if(a>b)
		return a;
	else
		return b;
}

void hello()
{
	cout<<"Witaj programisto!!!";
}

Zadania

  1. Samolot z Warszawy do Rzymu pokonuje odległość 1320 km.
    Zdefiniuj funkcję jak_szybko, której parametrem jest czas przelotu, wynikiem średnia prędkość.
  2. Mila lądowa równa jest 1,609 km.
    Napisz funkcję zamiana, której parametrem jest odległość w milach, wynikiem odległość w kilometrach.
Projekt i wykonanie: Ryszard Rogacz© 1999−2024