Historia wymaga pasterzy, nie rzeźników.

).
Dozwolone jest natomiast dublowanie nazw
istniejących już funkcji, ale dopóki nie zostanie
omówione, kiedy i w jaki sposób można
to wykorzystać, lepiej jest pozostać przy
unikalnych i oczywistych nazwach.
154
Definiowanie własnych funkcji
Pobieranie przez funkcję argumentów jest samo
w sobie dość skomplikowanym zagadnieniem
i zajmiemy się nim na następnych kilku stronach.
Tymczasem musimy pamiętać, że jeśli funkcja
nie pobiera argumentów, to nawiasy pozostawiamy
puste.
Mając na uwadze powyższe informacje,
utworzymy prototyp funkcji saysello
(ang. przywitaj się), która nie pobiera
argumentów i nie zwraca żadnej wartości:
void sayHello();
Drugim krokiem przy tworzeniu własnej funkcji
po zadeklarowaniu prototypu jest zdefiniowanie
jej. Nazywa się to implementowaniem funkcji.
Składnia przypomina deklarację prototypu, ale
kończy się zapisaniem ciała funkcji, w którym
znajduje się właściwa definicja wykonywanych
Tworzenie prostych funkcji
instrukcji.
void sayHello() {
std::cout << "Halo.";
}
Gdy mamy już za sobą zapisanie prototypu
i zdefiniowanie funkcji, możemy ją wywoływać
tak samo jak każdą inną:
sayHello();
Zanim przejdziemy do przykładowego programu,
warto powiedzieć, gdzie w pliku źródłowym
należałoby umieścić powyższy kod. Prototyp
funkcji zazwyczaj powinien znajdować się
przed definicją funkcji main(). Dzięki temu
kompilator zna składnię funkcji w momencie
jej wywołania w głównej funkcji programu.
Definicje zdefiniowanych przez użytkownika
funkcji umieszcza się za definicją funkcji main().
Szkielet kodu naszego programu mógłby więc
wyglądać następująco:
#include biblioteki
prototypy funkcji
int main() {
// Zrób coś.
// Wywołanie funkcji użytkownika.
}definicje funkcji
155
Rozdział 5.
Właściwym w tym miejscu pytaniem jest: „Kiedy
Listing 5.1. Zdefiniowana przez użytkownika funkcja
powinno się deklarować własne funkcje?”.
promptAndWait() obejmuje często wykorzystywany
Zazwyczaj sekwencję instrukcji zamienia się
fragment kodu. W razie potrzeby można ją wywołać
w funkcję wtedy, gdy chce się jej wielokrotnie
w funkcji main(), używając instrukcji promptAndWait()
używać lub gdy stanowi ona odrębną logicznie
całość. Jednocześnie nie należy definiować
1 // prompt.cpp - Listing 5.1
własnych funkcji, jeśli ich odpowiedniki istnieją
2
już w C++.
3 // Potrzebujemy pliku iostream, by móc
4 // korzystać z cout i cin.
W tym rozdziale stworzymy kilka funkcji.
5 #include
Pierwszy przykład będzie wykonywał to, co robią
6
prawie wszystkie programy w tej książce: wypisze
7 /* Prototyp funkcji.
komunikat i wstrzyma wykonanie programu
8 * Funkcja nie pobiera argumentów.
9 * Funkcja nie zwraca żadnej wartości.
do momentu naciśnięcia klawisza Enter lub
10 */
Return. Powtarzany już wielokrotnie kod
11 void promptAnd11it v
zamienimy tym razem w funkcję.
12
13 // Początek funkcji main().
Aby zdefiniować własne funkcje
14 int main() {
i używać ich:
15
16 // Zrób coś.
1. Utwórz nowy, pusty dokument tekstowy
17 std::cout << "Funkcja main()
Äwykonuje jakieś
w edytorze tekstu lub środowisku
Äinstrukcje...\n\n";
programistycznym (listing 5.1).
18
// prompt.cpp - Listing 5.1
19 // Wywołanie funkcji promptAndWait().
#include
20 promptAnd11it v
21
2. Dodaj prototyp funkcji.
22 // Zwrócenie wartości 0, by zaznaczyć
Äbrak problemów.
void promptvnddait();
23 return 0;
24
Definiowana funkcja nosi nazwę
25 }
promptAndWait
// Koniec funkcji main().
(ang. zgłoś i czekaj).
26
Nie pobiera argumentów (nawiasy są puste)
Tworzenie prostych funkcji
27
i nie zwraca żadnej wartości (co zaznacza
28 // Definicja funkcji promptAndWait().
się użyciem słowa void).
29 void promptAnd11it {
30
3. Rozpocznij definicję funkcji main().
31 // Oczekiwanie, aż użytkownik naciśnie
ÄEnter lub Return.
int main() {
32 std::cout << "N1ciśnij Enter lub
Pomimo że w aplikacji używamy utworzonych
ÄReturn, 1by kontynuow1ć.\n"v
33 std::cin.get v
przez siebie funkcji, to i tak musimy
34
zdefiniować funkcję main(). Powinno być już
35
} // Koniec funkcji promptAndWait().
utrwalone, że to właśnie ona jest wywoływana
automatycznie, gdy uruchamiany jest program.
W main() należy więc umieścić główne
instrukcje każdego programu.
4. Spraw, aby w funkcji main() wykonywane
były jakieś instrukcje.
std::cout << "Funkcja main() wykonuje
jakieś instrukcje...\n\n";
156
Definiowanie własnych funkcji
Ponieważ celem tej aplikacji jest
zademonstrowanie, w jaki sposób definiuje
się i wywołuje własne funkcje, to nie
skupiamy się w niej na niczym innym.
Jeśli zaszłaby taka potrzeba, można sprawić,
aby funkcja main() wykonywała coś
pożytecznego, np. zamieniała jednostki
pewnych wartości, wczytywała dane itd.
5. Wywołaj zdefiniowaną przez nas funkcję.
promptvnddait();
Do wywołania funkcji wystarczy zapisanie
jej nazwy, po której umieszcza się puste
nawiasy. Tak jak w przypadku wszystkich
instrukcji w języku C++, wiersz kończy się
średnikiem.
6.
Tworzenie prostych funkcji
Zakończ funkcję main().
return 0;
} // Koniec funkcji main().
Jeśli programy zawierają więcej niż jedną
funkcję, użyteczną konwencją jest zaznaczanie
komentarzem, gdzie się kończy każda z nich.
7. Za funkcją main() rozpocznij definicję
funkcji promptAndWait().
void promptvnddait() {
Definicja rozpoczyna się dokładnie tak samo