Jezyk C++ Pierwsze starcie.pdf

(380 KB) Pobierz
Język C++. Pierwsze starcie
Pierwsze starcie
Autor: Zbigniew Koza
ISBN: 978-83-246-1481-3
Format: B5, stron: 288
Wydawnictwo Helion
ul. Koľciuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Poznaj tajniki programowania w C++
¤ Jak skonstruowany jest program w jķzyku C++?
¤ Na czym polega programowanie obiektowe?
¤ Jak korzystaě z bibliotek?
C++ to jeden z najpopularniejszych jķzykw programowania. Stosowany jest zarwno
przez profesjonalistw, jak i hobbystw. Wszyscy jego uŃytkownicy doceniajĴ
elastycznoľě, ogromne moŃliwoľci i szybkoľě dziaĀania napisanych w nim programw.
OgromnĴ zaletĴ C++ jest to, Ńe nie wymusza na programistach stosowania okreľlonego
stylu programowania. Z racji swoich moŃliwoľci jest to jķzyk bardzo zĀoŃony,
a efektywne programowanie w nim wymaga poznania wielu technik i pojķě
oraz umiejķtnoľci wykorzystania tej wiedzy w praktyce.
KsiĴŃka â C++. Pierwsze starcie Ò to podrķcznik, dziķki ktremu opanujesz zasady
programowania w tym jķzyku i zdobķdziesz solidne podstawy do dalszego rozwijania
swoich umiejķtnoľci. Znajdziesz w niej opis aktualnego standardu C++ oraz omwienia
narzķdzi programistycznych i bibliotek. Poznasz elementy jķzyka, zasady
programowania obiektowego i tworzenia zĀoŃonych aplikacji. Przeczytasz o szablonach,
bibliotece STL i obsĀudze bĀķdw. Dowiesz siķ, jak stosowaě biblioteki przy tworzeniu
aplikacji dla systemw Windows i Linux.
¤ Struktura programu w C++
¤ Elementy jķzyka
¤ Korzystanie z funkcji
¤ Programowanie obiektowe
¤ Dynamiczne struktury danych
¤ Stosowanie bibliotek
¤ Szablony
¤ Biblioteka STL
¤ ObsĀuga bĀķdw
Zrb pierwszy krok na drodze do profesjonalnego tworzenia oprogramowania
Jķzyk C++.
319877864.004.png 319877864.005.png 319877864.006.png 319877864.007.png
Spis tre•ci
Wst•p
9
1. Pierwszy program w C++
13
1.1. Dla kogo jest ta ksi !ka?
. . . . . . . . . . . . . . . . . . . . . . . . .
13
1.2. Rys historyczny
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
13
1.3. Zanim napiszesz swój pierwszy program
. . . . . . . . . . . . . . . .
16
1.4. Pierwszy program
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
18
1.5. Obiekt std::cout i literały
. . . . . . . . . . . . . . . . . . . . . . .
21
1.6. Deniowanie obiektów
. . . . . . . . . . . . . . . . . . . . . . . . . .
22
1.7. Identykatory, słowa kluczowe i dyrektywy
. . . . . . . . . . . . . . .
24
1.8. Zapis programu
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
24
1.9. Cztery działania matematyczne i typ double . . . . . . . . . . . . .
25
1.10. Jeszcze wi#cej matematyki
. . . . . . . . . . . . . . . . . . . . . . . .
26
1.11. Upraszczanie zapisu obiektów i funkcji biblioteki standardowej
. . .
28
1.12. $ródła informacji
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
28
1.13. Q&A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
29
1.14. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
30
1.15. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
30
2. Wyra enia i instrukcje
31
2.1. Instrukcje steruj ce
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
31
2.2. P#tle
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
33
2.3. Typy wbudowane
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
36
2.4. Wyra!enia arytmetyczne, promocje i konwersje standardowe
. . . .
41
2.5. Tworzenie obiektów stałych
. . . . . . . . . . . . . . . . . . . . . . .
43
2.6. Popularne typy standardowe
. . . . . . . . . . . . . . . . . . . . . . .
44
2.7. Obiekty lokalne i globalne. Zasi#g. Przesłanianie
. . . . . . . . . . .
50
2.8. Operatory
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
51
2.9. Wyra!enia i instrukcje
. . . . . . . . . . . . . . . . . . . . . . . . . .
57
2.10. Q&A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
2.11. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
58
2.12. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
58
3. Funkcje
61
3.1. Referencje
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
61
3.2. Funkcje swobodne
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
62
6
Spistre•ci
3.3. Po co s funkcje?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
64
3.4. Funkcje składowe – wprowadzenie
. . . . . . . . . . . . . . . . . . .
66
3.5. Argumenty funkcji
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
66
3.6. Funkcje zwracaj ce referencj#
. . . . . . . . . . . . . . . . . . . . . .
69
3.7. Operatory jako funkcje swobodne
. . . . . . . . . . . . . . . . . . . .
70
3.8. Stos funkcji
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
73
3.9. Funkcje otwarte (inline)
. . . . . . . . . . . . . . . . . . . . . . . .
75
3.10. Funkcje jako argumenty innych funkcji
. . . . . . . . . . . . . . . . .
77
3.11. Rekurencja
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
77
3.12. Argumenty domy•lne
. . . . . . . . . . . . . . . . . . . . . . . . . . .
78
3.13. Lokalne obiekty statyczne
. . . . . . . . . . . . . . . . . . . . . . . .
79
3.14. Funkcja main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
81
3.15. Polimorzm nazw funkcji
. . . . . . . . . . . . . . . . . . . . . . . . .
82
3.16. Deklaracja a denicja funkcji
. . . . . . . . . . . . . . . . . . . . . . .
82
3.17. Q&A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
3.18. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
83
3.19. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
83
4. Tablice i wska!niki
85
4.1. Wska%niki
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
85
4.2. Tablice
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
89
4.3. Pami#' wolna (sterta)
. . . . . . . . . . . . . . . . . . . . . . . . . . .
96
4.4. Q&A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
98
4.5. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
98
4.6. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
99
5. Klasy i obiekty
101
5.1. Struktury
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
101
5.2. Co to s klasy?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
104
5.3. Deniowanie klas
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
104
5.4. Funkcje składowe (metody)
. . . . . . . . . . . . . . . . . . . . . . . .
109
5.5. Udost#pnianie składowych
. . . . . . . . . . . . . . . . . . . . . . . .
115
5.6. Interfejs i implementacja
. . . . . . . . . . . . . . . . . . . . . . . . .
117
5.7. Kontrakty, niezmienniki i asercje
. . . . . . . . . . . . . . . . . . . . .
120
5.8. Hermetyzacja danych
. . . . . . . . . . . . . . . . . . . . . . . . . . .
122
5.9. Ró!nice mi#dzy klasami i strukturami
. . . . . . . . . . . . . . . . . .
122
5.10. Dygresja: składowe statyczne
. . . . . . . . . . . . . . . . . . . . . .
123
5.11. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
124
5.12. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
125
6. Dynamiczne struktury danych
127
6.1. Stos na bazie tablicy dynamicznej
. . . . . . . . . . . . . . . . . . . .
127
6.2. Stos na bazie listy pojedynczo wi zanej
. . . . . . . . . . . . . . . .
134
6.3. Dygresja: przestrzenie nazw i zagnie!d!anie denicji klas
. . . . . .
137
6.4. Q&A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
139
6.5. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
139
6.6. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
140
319877864.001.png
Spistre•ci
7
7. Dziedziczenie i polimorzm
141
7.1. Dziedziczenie
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
141
7.2. Polimorzm
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
151
7.3. Jak to si# robi w Qt?
. . . . . . . . . . . . . . . . . . . . . . . . . . .
157
7.4. Q&A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
161
7.5. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
161
7.6. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
162
8. Strumienie
163
8.1. Strumienie buforowane i niebuforowane
. . . . . . . . . . . . . . . .
163
8.2. Klawiatura, konsola, plik, strumie* napisowy
. . . . . . . . . . . . . .
164
8.3. Stan strumienia
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
166
8.4. Manipulatory i formatowanie strumienia
. . . . . . . . . . . . . . . .
167
8.5. Strumienie wyj•cia
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
169
8.6. Strumienie wej•cia
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
169
8.7. Przykład
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
171
8.8. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
173
8.9. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
174
9. Biblioteki
175
9.1. Podział programu na pliki
. . . . . . . . . . . . . . . . . . . . . . . .
175
9.2. U!ywanie gotowych bibliotek
. . . . . . . . . . . . . . . . . . . . . . .
184
9.3. Kompilacja i instalacja programów lub bibliotek
z plików %ródłowych
. . . . . . . . . . . . . . . . . . . . . . . . . . . .
188
9.4. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
190
9.5. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
190
10. Preprocesor i szablony
191
10.1. Preprocesor
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
191
10.2. Szablony
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
197
10.3. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
205
10.4. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
206
11. Wprowadzenie do STL
207
11.1. Co to jest STL?
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
207
11.2. Pojemniki
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
208
11.3. Iteratory
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
208
11.4. Algorytmy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
211
11.5. Wektory (std::vector)
. . . . . . . . . . . . . . . . . . . . . . . . .
218
11.6. Liczby zespolone
. . . . . . . . . . . . . . . . . . . . . . . . . . . . .
222
11.7. Napisy (std::string)
. . . . . . . . . . . . . . . . . . . . . . . . . .
223
11.8. Q&A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
224
11.9. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
225
11.10. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
225
12. Pojemniki i algorytmy
227
12.1. Przegl d pojemników STL
. . . . . . . . . . . . . . . . . . . . . . . .
227
319877864.002.png
8
Spistre•ci
12.2. Przegl d algorytmów swobodnych
. . . . . . . . . . . . . . . . . . . .
239
12.3. Kontrola poprawno•ci u!ycia STL
. . . . . . . . . . . . . . . . . . . .
246
12.4. Składniki dodatkowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
248
12.5. Q&A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
248
12.6. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
248
12.7. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
249
13. Obsługa bł•dów
251
13.1. Rodzaje bł#dów
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
251
13.2. Analiza bł#dów składniowych: koncepty
. . . . . . . . . . . . . . . .
252
13.3. Wykrywanie bł#dów logicznych: debuger
. . . . . . . . . . . . . . . .
254
13.4. Obsługa bł#dów czasu wykonania: wyj tki
. . . . . . . . . . . . . .
257
13.5. Q&A
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
267
13.6. Pytania przegl dowe
. . . . . . . . . . . . . . . . . . . . . . . . . . .
267
13.7. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
268
14. Co dalej?
271
14.1. Problemy
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .
272
A. Dodatki
273
A.1. Wybrane opcje kompilatora g++
. . . . . . . . . . . . . . . . . . . . .
273
A.2. Dodatkowe elementy j#zyka
. . . . . . . . . . . . . . . . . . . . . . .
275
A.3. Zgodno•' j#zyka C++ z j#zykiem C
. . . . . . . . . . . . . . . . . . .
276
A.4. Przyszło•' j#zyka C++
. . . . . . . . . . . . . . . . . . . . . . . . . .
277
A.5. $ródła informacji w internecie
. . . . . . . . . . . . . . . . . . . . . .
278
319877864.003.png
Zgłoś jeśli naruszono regulamin