SPIS TREŚCI
Przedmowa 15
Rozdział 1. Wprowadzenie do komputerów i programowania 29
1.1. Dlaczego tworzymy oprogramowanie? 29
1.2. Systemy komputerowe: sprzęt i oprogramowanie 31
1.3. Programy i języki programowania 37
1.4. Z czego składa się program? 43
1.5. Przyjmowanie danych, ich przetwarzanie i wynik 47
1.6. Proces programowania 48
1.7. Programowanie proceduralne i obiektowe 52
Pytania i ćwiczenia kontrolne 54
Rozdział 2. Wprowadzenie do języka C++ 57
2.1. Elementy programu w języku C++ 57
2.2. Obiekt cout 61
2.3. Dyrektywa #include 66
2.4. Zmienne, literały i wyrażenia przypisania 67
2.5. Identyfikatory 71
2.6. Typy danych liczb całkowitych 73
2.7. Typ char 78
2.8. Klasa string w C++ 82
2.9. Typy danych liczb zmiennoprzecinkowych 84
2.10. Typ danych bool 87
2.11. Określanie rozmiaru typu danych 88
2.12. Więcej o inicjowaniu zmiennych i przypisywaniu wartości 90
2.13. Zasięg zmiennych 92
2.14. Operatory arytmetyczne 93
2.15. Komentarze 100
2.16. Stałe nazwane 102
2.17. Styl programowania 105
Pytania i ćwiczenia kontrolne 107
Wyzwania programistyczne 111
Rozdział 3. Wyrażenia i interaktywność 115
3.1. Obiekt cin 115
3.2. Wyrażenia matematyczne 121
3.3. Gdy pomylisz jabłka z pomarańczami: konwersja typów 129
3.4. Przepełnienie i zaniżenie 132
3.5. Rzutowanie typów 133
3.6. Wielokrotne przypisania i przypisania łączone 136
3.7. Formatowanie wyjścia 140
3.8. Operacje na znakach i obiekcie string 149
3.9. Więcej matematycznych funkcji bibliotecznych 155
3.10. Rzecz o debugowaniu: ręczne śledzenie programu 161
3.11. Rozwiązywanie problemu: analiza przypadku 162
Pytania i ćwiczenia kontrolne 166
Wyzwania programistyczne 172
Rozdział 4. Podejmowanie decyzji 181
4.1. Operatory relacji 181
4.2. Instrukcja if 186
4.3. Rozszerzanie instrukcji if 194
4.4. Instrukcja if/else 197
4.5. Zagnieżdżone struktury warunkowe 200
4.6. Instrukcja if/else if 207
4.7. Flagi 212
4.8. Operatory logiczne 213
4.9. Sprawdzanie przedziału liczbowego za pomocą operatorów logicznych 220
4.10. Menu 222
4.11. Rzecz o inżynierii oprogramowania: walidacja wejścia użytkownika 224
4.12. Porównywanie typów char i string 226
4.13. Operator warunkowy 230
4.14. Instrukcja switch 233
4.15. Więcej o blokach i zasięgu zmiennych 241
Pytania i ćwiczenia kontrolne 244
Wyzwania programistyczne 250
Rozdział 5. Pętle i pliki 261
5.1. Operatory inkrementacji i dekrementacji 261
5.2. Wprowadzenie do pętli: pętla while 266
5.3. Walidacja wejścia za pomocą pętli while 273
5.4. Liczniki 275
5.5. Pętla do-while 276
5.6. Pętla for 281
5.7. Obliczanie sumy bieżącej 291
5.8. Wartownik 293
5.9. Rzecz o inżynierii oprogramowania: której pętli użyć? 295
5.10. Pętle zagnieżdżone 296
5.11. Zastosowanie plików do przechowywania danych 298
5.12. Temat dodatkowy: przerywanie i kontynuowanie pętli 318
Pytania i ćwiczenia kontrolne 322
Wyzwania programistyczne 327
Rozdział 6. Funkcje 335
6.1. Rzecz o inżynierii oprogramowania: programowanie modułowe 335
6.2. Definicja i wywoływanie funkcji 336
6.3. Prototypy funkcji 344
6.4. Przekazywanie danych do funkcji 346
6.5. Przekazywanie danych przez wartość 350
6.6. Rzecz o inżynierii oprogramowania: zastosowanie funkcji w programie sterowanym przez menu 352
6.7. Instrukcja return 356
6.8. Zwracanie wartości z funkcji 357
6.9. Zwracanie wartości boolowskiej 365
6.10. Zmienne lokalne i globalne 367
6.11. Statyczne zmienne lokalne 374
6.12. Argumenty domyślne 378
6.13. Zastosowanie wskaźników jako parametrów 381
6.14. Przeciążanie funkcji 386
6.15. Funkcja exit() 390
6.16. Funkcje wirtualne i sterowniki 392
Pytania i ćwiczenia kontrolne 394
Wyzwania programistyczne 398
Projekt grupowy 406
Rozdział 7. Tablice i wektory 409
7.1. Tablica jako zbiór wartości 409
7.2. Dostęp do elementów tablicy 411
7.3. Brak kontroli zakresów w języku C++ 422
7.4. Zakresowa pętla for 425
7.5. Przetwarzanie zawartości tablicy 429
7.6. Rozwiązywanie problemu i projektowanie programu: tablice równoległe 437
7.7. Tablice w argumentach funkcji 440
7.8. Tablice dwuwymiarowe 450
7.9. Tablice o trzech i większej liczbie wymiarów 457
7.10. Rozwiązywanie problemu i projektowanie programu: analiza przypadku 459
7.11. Wprowadzenie do typu STL vector 461
Pytania i ćwiczenia kontrolne 474
Wyzwania programistyczne 480
Rozdział 8. Przeszukiwanie i sortowanie tablic 489
8.1. Rozwiązywanie problemu i projektowanie programu: wprowadzenie do algorytmów wyszukiwania danych 489
8.2. Rozwiązywanie problemu i projektowanie programu: analiza przypadku 496
8.3. Rozwiązywanie problemu i projektowanie programu: wprowadzenie do algorytmów sortowania 502
8.4. Rozwiązywanie problemu i projektowanie programu: analiza przypadku 512
8.5. Sortowanie i przeszukiwanie wektorów (kontynuacja podrozdziału 7.11) 520
Pytania i ćwiczenia kontrolne 523
Wyzwania programistyczne 524
Rozdział 9. Wskaźniki 529
9.1. Uzyskiwanie adresu zmiennej 529
9.2. Zmienne wskaźnikowe 531
9.3. Relacja pomiędzy tablicą a wskaźnikiem 538
9.4. Działania na wskaźnikach 542
9.5. Inicjowanie wskaźników 543
9.6. Porównywanie wskaźników 545
9.7. Wskaźniki jako argumenty funkcji 546
9.8. Dynamiczne przydzielanie pamięci 554
9.9. Wskaźniki jako wyniki funkcji 558
9.10. Inteligentne wskaźniki i zapobieganie wyciekom pamięci 565
9.11. Rozwiązywanie problemu i projektowanie programu: analiza przypadku 569
Pytania i ćwiczenia kontrolne 574
Wyzwania programistyczne 578
Rozdział 10. O znakach, C-ciągach i więcej o klasie string 581
10.1. Sprawdzanie znaków 581
10.2. Zmiana wielkości liter 585
10.3. C-ciągi 588
10.4. Standardowe funkcje przetwarzające C-ciągi 592
10.5. Funkcje konwertujące ciągi i liczby 602
10.6. Rozwiązywanie problemu i projektowanie programu: tworzenie własnych funkcji przetwarzających C-ciągi 609
10.7. Więcej o klasie string 614
10.8. Rozwiązywanie problemu i projektowanie programu: analiza przypadku 627
Pytania i ćwiczenia kontrolne 628
Wyzwania programistyczne 631
Rozdział 11. Dane strukturalne 637
11.1. Typy abstrakcyjne 637
11.2. Struktury 639
11.3. Dostęp do składników struktury 642
11.4. Inicjowanie struktury 645
11.5. Tablice struktur 648
11.6. Inżynieria oprogramowania: struktury zagnieżdżone 651
11.7. Struktury jako argumenty funkcji 654
11.8. Struktury jako wyniki funkcji 657
11.9. Wskaźniki do struktur 659
11.10. Inżynieria oprogramowania: kiedy stosować kropkę, strzałkę i gwiazdkę? 662
11.11. Typy wyliczeniowe 664
Pytania i ćwiczenia kontrolne 675
Wyzwania programistyczne 680
Rozdział 12. Zaawansowane operacje na plikach 687
12.1. Operacje na plikach 687
12.2. Formatowanie danych wyjściowych 693
12.3. Umieszczanie obiektów plikowych w argumentach funkcji 695
12.4. Dokładniejsze sprawdzanie błędów 697
12.5. Funkcje do odczytywania i zapisywania danych 700
12.6. Inżynieria oprogramowania: praca z wieloma plikami 707
12.7. Pliki binarne 709
12.8. Tworzenie rekordów danych za pomocą struktur 714
12.9. Swobodny dostęp do plików 718
12.10. Otwieranie pliku w trybach wejściowym i wyjściowym jednocześnie 725
Pytania i ćwiczenia kontrolne 730
Wyzwania programistyczne 734
Rozdział 13. Wprowadzenie do klas 739
13.1. Programowanie proceduralne i obiektowe 739
13.2. Wprowadzenie do klas 746
13.3. Definiowanie instancji klasy 751
13.4. Po co są prywatne elementy? 763
13.5. Inżynieria oprogramowania: rozdzielenie specyfikacji i implementacji klasy 764
13.6. Metody śródwierszowe 770
13.7. Konstruktory 772
13.8. Umieszczanie wartości w argumentach konstruktorów 778
13.9. Destruktory 784
13.10. Przeciążanie konstruktora 788
13.11. Metody prywatne 793
13.12. Tablice obiektów 794
13.13. Rozwiązywanie problemu i projektowanie programu: przykład programowania obiektowego 798
13.14. Programowanie obiektowe: symulowanie rzutów kostką za pomocą obiektów 805
13.15. Projektowanie kodu obiektowego: język UML 808
13.16. Projektowanie kodu obiektowego: dobór klas i określanie ich przeznaczenia 811
Pytania i ćwiczenia kontrolne 820
Wyzwania programistyczne 825
Rozdział 14. Więcej o klasach 837
14.1. Instancje klasy i statyczne elementy członkowskie 837
14.2. Klasy zaprzyjaźnione 844
14.3. Przypisanie obiektowe 849
14.4. Konstruktor kopiujący 850
14.5. Przeciążanie operatorów 856
14.6. Konwersja typów 882
14.7. Agregacja obiektów 884
14.8. Projektowanie kodu obiektowego: współpraca klas 889
14.9. Programowanie obiektowe: symulacja gry Cho-Han 893
14.10. Referencje do r-wartości i przenoszenie danych 903
Pytania i ćwiczenia kontrolne 912
Wyzwania programistyczne 917
Rozdział 15. Dziedziczenie klas, polimorfizm i funkcje wirtualne 925
15.1. Co to jest dziedziczenie klas? 925
15.2. Chronione elementy członkowskie i dostęp do klasy 933
15.3. Konstruktory i destruktory w klasach bazowych i pochodnych 940
15.4. Redefiniowanie funkcji klasy bazowej 952
15.5. Hierarchia klas 956
15.6. Polimorfizm i metody wirtualne 962
15.7. Abstrakcyjne klasy bazowe i funkcje czysto wirtualne 977
15.8. Wielodziedziczenie klas 984
Pytania i ćwiczenia kontrolne 990
Wyzwania programistyczne 995
Rozdział 16. Wyjątki i szablony 1003
16.1. Wyjątki 1003
16.2. Szablony funkcji 1021
16.3. Inżynieria oprogramowania: od czego zacząć definiowanie szablonów funkcji? 1027
16.4. Szablony klas 1027
Pytania i ćwiczenia kontrolne 1036
Wyzwania programistyczne 1039
Rozdział 17. Biblioteka STL 1041
17.1. Wprowadzenie do biblioteki STL 1041
17.2. Podstawowe informacje o kontenerach i iteratorach STL 1042
17.3. Klasa vector 1053
17.4. Klasy map, multimap i unordered_map 1066
17.5. Klasy set, multiset i unordered_set 1091
17.6. Algorytmy 1099
17.7. Wprowadzenie do obiektów funkcyjnych i wyrażeń lambda 1120
Pytania i ćwiczenia kontrolne 1126
Wyzwania programistyczne 1131
Rozdział 18.Listy łączone 1137
18.1. Wprowadzenie do list łączonych 1137
18.2. Operacje na listach łączonych 1139
18.3. Szablon listy łączonej 1155
18.4. Odmiany listy łączonej 1166
18.5. Standardowe kontenery list i forward_list 1166
Pytania i ćwiczenia kontrolne 1172
Wyzwania programistyczne 1174
Rozdział 19. Stosy i kolejki 1177
19.1. Wprowadzenie do stosów 1177
19.2. Stosy dynamiczne 1193
19.3. Kontener stack 1203
19.4. Wprowadzenie do kolejek 1205
19.5. Kolejki dynamiczne 1216
19.6. Kontenery deque i queue 1223
Pytania i ćwiczenia kontrolne 1226
Wyzwania programistyczne 1228
Rozdział 20. Rekurencja 1231
20.1. Wprowadzenie do rekurencji 1231
20.2. Rozwiązywanie problemów za pomocą rekurencji 1235
20.3. Rozwiązywanie problemu i projektowanie programu: rekurencyjna funkcja gcd() 1242
20.4. Rozwiązywanie problemu i projektowanie programu: zadania rekurencyjne 1243
20.5. Rozwiązywanie problemu i projektowanie programu: rekurencyjne operacje na listach łączonych 1245
20.6. Rozwiązywanie problemu i projektowanie programu: rekurencyjna funkcja wyszukiwania binarnego 1248
20.7. Rozwiązywanie problemu i projektowanie programu: Wieże Hanoi 1250
20.8. Rozwiązywanie problemu i projektowanie programu: algorytm sortowania szybkiego 1254
20.9. Rozwiązywanie problemu i projektowanie programu: algorytm wyszukiwania wyczerpującego 1258
20.10. Rozwiązywanie problemu i projektowanie programu: rekurencja a iteracja 1260
Pytania i ćwiczenia kontrolne 1261
Wyzwania programistyczne 1263
Rozdział 21. Drzewa binarne 1265
21.1. Definicja i zastosowanie drzew binarnych 1265
21.2. Operacje przeszukiwania drzewa binarnego 1269
21.3. Szablon klasy do obsługi drzewa binarnego 1285
Pytania i ćwiczenia kontrolne 1290
Wyzwania programistyczne 1291
Dodatek A. Zestaw znaków ASCII 1295
Dodatek B. Hierarchia operatorów 1299
Dodatek C. Odpowiedzi do punktów kontrolnych 1307
Dodatek D. Odpowiedzi do pytań i ćwiczeń kontrolnych 1343
Skorowidz 1397
Opinie
Na razie nie ma opinii o produkcie.