X


[ Pobierz całość w formacie PDF ]

wartości, nazywane kodami wyjścia. Typowo przyjmuje się, że zerowy kod wyjścia oznacza pra-
widłowe działanie programu, zaś wartość niezerowa oznacza jakiś błąd. Można zatem zdefinio-
wać program C++ tak, aby zwracał niezerową wartość, jeśli na przykład nie uda mu się otworzyć
pliku. Można pózniej zbudować skrypt powłoki lub plik wsadowy, który uruchomi program i po-
dejmie środki zaradcze w przypadku pojawienia się błędu.
S�owa kluczowe
S�owa kluczowe to s�ownik j�zyka komputerowego. W niniejszym rozdziale u�yliSmy czte-
rech s�ów kluczowych C++: int, void, return oraz double. S�owa te maj� dla kompi-
latora C++ specjalne znaczenie, wi�c nie nale�y u�ywa� ich do niczego innego. Nie mo�na
zatem u�y� return jako nazwy zmiennej, a double jako nazwy funkcji. Mo�na jednak
oczywiScie u�ywa� nazw zawieraj�cych s�owa kluczowe, jak inteligencja (gdzie za-
szyte jest s�owo int) czy return_of_the_king. W dodatku B podano pe�n� list�
58
Funkcje
s�ów kluczowych C++. S�owo main nie jest s�owem kluczowym, gdy� nie jest to cz�S� j�zyka,
ale nazwa funkcji obowi�zkowej. Mo�na zatem zdefiniowa� zmienn� o nazwie main (cho�
w pewnych, doS� wyj�tkowych, sytuacjach mo�e to spowodowa� k�opoty, wi�c lepiej tak zmien-
nych nie nazywa�). Tak samo inne nazwy funkcji i obiektów nie s� s�owami kluczowymi, ale
u�ycie na przyk�ad s�owa cout do nazwania obiektu i zmiennej b�dzie powodem nieporozu-
mie�. Mo�na u�y� cout jako nazwy zmiennej w funkcji, która nie u�ywa obiektu cout, ale
w tej samej funkcji nie mo�na b�dzie u�y� ju� zwyk�ego cout.
Funkcje u�ytkownika zwracaj�ce wartoS�
Teraz pójdzmy krok dalej i napiszmy funkcję mającą instrukcję return. Funkcja main() po-
kazała nam już, jak to zrobić: podajemy w nagłówku typ zwracanej wartości, a w treści funkcji
używamy instrukcji return. Tego typu konstrukcji możemy użyć do rozwiązania problemu
wielu gości przebywających w Wielkiej Brytanii  wiele wag łazienkowych wyskalowanych
jest tam w kamieniach zamiast w amerykańskich funtach czy międzynarodowych kilogramach.
Jeden kamień to 14 funtów (niecałe 6,5 kg); program z listingu 2.6 zawiera funkcję zamieniającą
kamienie na funty.
Listing 2.6. convert.cpp
// convert.cpp  zamiana kamieni na funty
#include
int stonetolb(int); // prototyp funkcji
int main()
{
using namespace std;
int stone;
cout
cin >> stone;
int pounds = stonetolb(stone);
cout
cout
return 0;
}
int stonetolb(int sts)
{
return 14 * sts;
}
Oto przykład uruchomienia programu z listingu 2.6:
Podaj wagę w kamieniach: 14
14 kamieni = 196 funtów.
W funkcji main() program wykorzystuje obiekt cin do wczytania wartości zmiennej całkowi-
toliczbowej stone. Wartość ta jest przekazywana do funkcji stonetolb() jako parametr,
59
Rozdzia� 2 - Pierwszy program w C++
a w tej funkcji jest przypisywana zmiennej sts. Dzięki temu widać, że return nie musi ogra-
niczać się do przekazywania gotowej liczby. W tym wypadku, kiedy mamy bardziej złożone wy-
rażenie, unikamy konieczności tworzenia nowej zmiennej na wynik, który zwrócimy. Program
wylicza wartość wyrażenia (w tym przykładzie 196) i zwraca tę wartość. Jeśli ktoś nie chce mieć
takich skrótów, może zrobić wszystko po kolei:
int stonetolb(int sts)
{
int pounds = 14 * sts;
return pounds;
}
Obie wersje funkcji działają tak samo, tyle że druga jest nieco dłuższa.
Tak w ogóle funkcji zwracającej wartość można użyć wszędzie tam, gdzie można byłoby użyć
stałej danego typu. Na przykład funkcja stonetolb() zwraca wartość typu int, więc można
byłoby użyć jej następująco:
int aunt = stonetolb(20);
int aunts = aunt + stonetolb(10);
cout
endl;
W tym wypadku program wylicza wartość zwracaną, a następnie z wartości tej korzysta w wyra-
żeniach.
Jak widać w pokazanych przykładach, prototyp funkcji opisuje jej interfejs, czyli sposób interak-
cji funkcji z resztą programu. Lista parametrów pokazuje, jakie informacje przechodzą do funk-
cji; typ funkcji mówi, co funkcja zwraca. Czasami programiści opisują funkcje jako czarne skrzynki
(termin pochodzi z elektroniki) w pełni opisane przez przepływ informacji do nich i z nich. Prototyp
funkcji dokładnie opisuje taki właśnie sposób interpretacji (rysunek 2.9).
Rysunek 2.9. Prototyp funkcji i funkcja jako czarna skrzynka
60
Funkcje [ Pobierz całość w formacie PDF ]

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • pantheraa90.xlx.pl