Funkcje
Jeśli wiemy, że pewien fragment algorytmu będziemy musieli wykorzystać w naszym kodzie więcej niż raz, zamiast robić tego w następujący sposób:
int a, b, c, d;
cin >> a >> b >> c >> d;
a = a /2;
b = b/3;
c = c /2;
d = d/3;
cout << " Suma: " << a + b << "\n";
cout << " Suma: " << c + d << "\n";
Możemy napisać funkcję, która usprawni zapis i działanie kodu. Funkcje deklarujemy przed funkcją main():
rodzaj_funkcji nazwa_funkcji (typ_argumentu nazwa, ... )
{
//instrukcje
}
//int funkcja( int a, int b, …)
#include<iostream>
using namespace std;
int main()
{
//instrukcje
}
Rodzaj funkcji zależy przede wszystkim od tego, co będzie zwracać funkcja. Jej wynik będzie można wykorzystać w dalszej części programu. Do zwracania informacji służy instrukcja return.
Jeżeli funkcja, zwraca wartość to jej rodzaj będzie dokładnie taki jak typ zwracanej wartości np. jeśli zwracamy wartość jakiegoś działania arytmetycznego to rodzaj funkcji to int, jeśli zwracamy ciąg znaków funkcja będzie typu string, jeśli chcemy zwrócić prawdę lub fałsz to funkcja będzie typu bool itd.
Funkcje nie muszą przyjmować żadnych argumentów. Jeżeli funkcja nie zwraca żadnej wartości to jest to funkcja void: w niej nie używamy komendy return, możemy używać jedynie cout, aby wypisywała coś na ekranie. Od pozostałych typów funkcji, funkcja void różni się także wypisywaniem jej w funkcji main (głównej części programu).
Wywołanie normalnej funkcji:
funkcja();
Wywołanie funkcji void:
cout<<funkcja();
void funkcja(argumenty)
{
//instrukcje
}
Jeżeli chcielibyśmy nasz przykładowy, wcześniejszy program napisać za pomocą funkcji możemy zrobić to w taki sposób:
#include<iostream>
using namespace std;
int funkcja( int x, int y)
/*argumentami funkcji są 2 dowolnie nazywające się zmienne, na których
będziemy wykonywać operację, funkcja ma typ int, ponieważ chcemy zwrócić
liczbę, na której będziemy mogli potem jeszcze wykonywać operacje.*/
{
x = x/2;
y = y/3;
return x + y;
}
int main()
{
int a, b, c, d; //deklarujemy potrzebne nam zmienne
cin >> a >> b >> c >> d;
//wczytujemy wartości zmiennych z klawiatury
cout << "Suma: " << funkcja(a, b) << "\n";
/*w taki właśnie sposób wygląda późniejsze wywoływanie funkcji
w naszym kodzie*/
cout<< "Suma: " << funkcja(c, d) << "\n";
int wynik = funkcja(a, b);
/* możemy również zmiennej przypisać wartość, którą zwraca nasza
funkcja, w ten sposób przy kolejnym wypisaniu danej zmiennej
będzie ona miała wartość wykonanej funkcji*/
}
Zapisanie tego samego programu za pomocą funkcji void:
#include<iostream>
using namespace std;
void funkcja( int x, int y)
{
x = x/2;
y = y/3;
cout << "Suma: " << x + y << "\n";
}
int main()
{
int a, b, c, d;
cin >> a >> b >> c >> d;
funkcja(a, b);
//w taki sposób wygląda wywoływanie funkcji void
funkcja(c, d);
}
Działanie dwóch powyższych programów jest praktycznie takie same, jednakże w przypadku funkcji void, nie możemy przypisać wyniku działania funkcji zmiennej.
Różnicą między zastosowaniem w programie funkcji a naszym pierwszym zapisem za pomocą zwykłych operacji na zmiennych, jest to, iż pierwszy kod zmieniał wartości zmiennych a, b, c i d (a = a / 2, b = b / 3, …), natomiast w programach z funkcją, ta zmiana nie zachodzi na stałe – jeśli na końcu naszego programu dopisalibyśmy:
cout << a << b << c << d;
To w przypadku wykorzystania funkcji otrzymalibyśmy: 1234, natomiast w przypadku operacji na zmiennych byłoby to: 0011.
ZADANIE: Używając funkcji napisz program, który obliczy sumę pięciu podanych liczb.
ZADANIE: Używając funkcji napisz program, który obliczy kwadrat podanej liczby.
Idealne miejsce aby zacząć swoją przygodę z programowaniem.
Copyright © 2024 return help;