Professional Documents
Culture Documents
Spis treci
Przykadowy rozdzia
Katalog ksiek
C++. wiczenia
praktyczne. Wydanie III
Autor: Andrzej Stasiewicz
ISBN: 978-83-246-3336-4
Format: 140208, stron: 160
Katalog online
Zamw drukowany
katalog
Twj koszyk
Dodaj do koszyka
Cennik i informacje
Zamw informacje
o nowociach
Zamw cennik
Czytelnia
Fragmenty ksiek
online
Kontakt
Helion SA
ul. Kociuszki 1c
44-100 Gliwice
tel. 32 230 98 63
e-mail: helion@helion.pl
Helion 19912011
Spis treci
Wprowadzenie
Dlaczego jzyk C++ jest tak wany?
Co da Czytelnikowi ta ksika?
Co bdzie potrzebne do korzystania z ksiki?
Jak uczy si jzyka z tej ksiki?
7
7
8
9
10
11
15
Czy to dziaa?
Sposb na znikanie okienka konsoli
Podsumowanie
15
18
22
23
23
24
25
29
31
31
34
36
41
42
42
Rozdzia 6. Algorytmy
Zwrotnica if() else
Zwrotnica switch{...}
Ptla for( ...; ...; ...)
Ptla while(...)
Ptla do {...} while(...)
Instrukcje break i continue
Podsumowanie
Rozdzia 7. Funkcje
Deklarowanie funkcji
Definiowanie funkcji
Argumenty funkcji i referencja
Troch zabawy z dwikiem
Podsumowanie
Rozdzia 8. Dane
Typy danych
Deklarowanie oraz inicjowanie prostych danych
Deklarowanie oraz inicjowanie danych tablicowych
Deklarowanie oraz inicjowanie danych wskanikowych
Operacje na danych
Podsumowanie
45
45
47
48
50
53
54
57
57
63
69
75
78
80
85
87
87
88
96
101
102
103
103
106
108
113
119
126
127
127
129
133
137
145
147
Podsumowanie
157
Zakoczenie
159
7
Funkcje
Wydzielone i odpowiednio zatytuowane skrawki algorytmw
nazwiemy funkcjami. Przykadem takich wydzielonych algorytmw s powszechnie znane i ju wielokrotnie tutaj przywoywane funkcje sin(), cos() czy rand().
Z jedn funkcj spotykamy si od samego pocztku to funkcja main(),
wbudowana na stae w jzyk C++. Czy moemy jednak wprowadza
do gry swoje wasne funkcje, czy te jestemy ograniczeni do uytkowania funkcji bibliotecznych dostarczonych wraz ze rodowiskiem?
Oczywicie, e moemy deklarowa i definiowa wasne funkcje. Jest
to jeden z najwaniejszych elementw umiejtnoci programowania.
Deklarowanie funkcji
Kada funkcja musi by zadeklarowana (zapowiedziana) przed jej
pojawieniem si w programie. W rozdziale 5. (porwnaj wiczenie 5.8)
zwracalimy uwag, e w prostych (jednoplikowych) programach funkcje naley deklarowa w przestrzeni midzy fraz doczania algorytmw biblioteki standardowej a nagwkiem funkcji main().
W I C Z E N I E
7.1
88
Definiowanie funkcji
W I C Z E N I E
7.2
Rozdzia 7. Funkcje
89
90
7.3
Rozdzia 7. Funkcje
91
Funkcja parabola() przyjmuje 4 argumenty, wylicza matematyczn warto i oddaje j programowi gwnemu za pomoc frazy return. Wynik
na rysunku 7.3.
Rysunek 7.3.
Oto wyniki
tego programu
Nie wszystkie funkcje musz mie argumenty wczeniej spotkalimy si z bezargumentow funkcj rand()(porwnaj wiczenie 6.18).
Nie wszystkie funkcje musz te wylicza i oddawa programowi jakiekolwiek wartoci.
Czsty bd: niezgodno typu danej, oddawanej za pomoc frazy return,
z typem zapowiedzianym w deklaracji.
W I C Z E N I E
7.4
92
Funkcje wyodrbniamy te wtedy, gdy za pomoc tego samego algorytmu wyliczamy wiele rnych wartoci.
W I C Z E N I E
7.5
Zadeklaruj, zdefiniuj i wywoaj funkcj wyliczajc redni arytmetyczn dwch podanych liczb:
#include <iostream>
using namespace std;
double srednia( double a, double b);
//----------------------------------------------int main()
{
double q, w;
cout << "Podaj dwie liczby: ";
cin >> q >> w;
cout << "Srednia arytmetyczna = " << srednia( q, w) << endl << endl;
cout << "Podaj dwie inne liczby: ";
cin >> q >> w;
cout << "Srednia arytmetyczna = " << srednia( q, w);
char c;
cin >> c;
}
//----------------------------------------------double srednia( double a, double b)
{
return (a + b) / 2;
}
Rozdzia 7. Funkcje
93
Rysunek 7.5.
Oto ekran
wyjciowy
W I C Z E N I E
7.6
Funkcja okrelajca pe
Zadeklaruj, zdefiniuj i wywoaj funkcj okrelajc pe osoby o podanym imieniu (porwnaj wiczenie 6.5):
#include <iostream>
#include <string>
using namespace std;
bool czy_dziewczyna( string imie);
//----------------------------------------------int main()
{
string txt;
cout << "Jak masz na imie? ";
cin >> txt;
if( czy_dziewczyna( txt))
{
cout << "Jestes dziewczyna!";
}
else
{
cout << "Jestes chlopakiem?";
}
char c;
cin >> c;
}
//----------------------------------------------bool czy_dziewczyna( string imie)
{
char ostatni_znak = imie[ imie.size() - 1];
if( ostatni_znak == 'a')
return true;
// dziewczyna
else
return false;
// chlopak
}
94
Rysunek 7.6.
Oto ekran
wyjciowy
7.7
Rozdzia 7. Funkcje
95
Dwie widoczne w powyszym fragmencie kodu funkcje prawdopodobnie wyodrbniono tylko po to, by podnie czytelno zapisu we
wntrzu funkcji main(). Zamiast definiowa funkcje, mona by po prostu
przytoczy ich ciaa bezporednio w funkcji main().
W I C Z E N I E
7.8
Zadeklaruj, zdefiniuj i wywoaj funkcj o nazwie stop(), ktra poradzi sobie z problemem znikajcej konsoli, opisanym w wiczeniach
2.2 i 2.3:
void stop( void);
//----------------------------------------------int main()
{
cout << "Funkcja stop() zatrzyma konsole na ekranie...";
stop();
}
//----------------------------------------------void stop( void)
{
char c;
cin >> c;
}
Rysunek 7.8.
Oto wynik dziaania
programu
96
7.9
Rozdzia 7. Funkcje
97
Rysunek 7.9.
Oto wynik
dziaania
programu
7.10
98
Rysunek 7.10.
Oto wynik
dziaania
programu
7.11
Rozdzia 7. Funkcje
99
znajduj si po prostu mieci. W nastpnej linii zmienne te s przekazywane przez referencj do wntrza funkcji. Oznacza to, e funkcja
pracuje na oryginaach zmiennych, a nie na ich kopiach, i e wyzerowanie wartoci ma szerszy zasig ni tylko ciao funkcji.
Przykad ten ilustruje, do czego zazwyczaj uywa si referencyjnego
przekazu argumentw do modyfikowania wikszej ich liczby za
pomoc jednej funkcji.
atwo te si domyli, e referencja take jest szybsza ni kopiowanie,
chocia zazwyczaj rnica jest na tyle maa, i dotyczy ekstremalnych
zastosowa programowania.
W I C Z E N I E
7.12
100
Rysunek 7.12.
Wynik dziaania
programu
W I C Z E N I E
7.13
Napisz funkcj kwadrat(), ktra otrzyma argument rzeczywisty i w naturalny sposb zwrci warto drugiej potgi swojego argumentu:
double kwadrat( double a);
//----------------------------------------------int main()
{
double a;
cout << "Podaj liczbe: ";
cin >> a;
cout << "Kwadrat Twojej liczby wynosi " << kwadrat( a);
char c;
cin >> c;
}
//----------------------------------------------double kwadrat( double a)
{
return a * a;
}
Rysunek 7.13.
Wynik dziaania
programu