- promocja
Język C++. Owoce programowania. Wydanie IX - ebook
Język C++. Owoce programowania. Wydanie IX - ebook
C++ powstał w 1979 roku. Od tej pory cały czas się rozwija. Mimo że wymaga od programisty pewnej dyscypliny i staranności w pracy, jest chętnie wykorzystywany, daje bowiem ogromne możliwości i cechuje się elastycznością. W języku tym zaimplementowano mechanizmy programowania obiektowego. Opanowanie C++ nie tylko pozwala programistom tworzyć aplikacje dla praktycznie wszystkich platform, komputerów, serwerów i urządzeń mobilnych, ale również ułatwia naukę innych języków programowania. Aby w pełni skorzystać z tych zalet, trzeba od początku przykładać się do nauki pisania kodu z poszanowaniem dobrych praktyk.
To kolejne wydanie lubianego podręcznika programowania w języku C++; książka przeznaczona dla osób, które dopiero rozpoczynają naukę kodowania, i tych, które mają już doświadczenie z innymi językami. Znalazło się tu przystępne wyjaśnienie podstaw działania komputera oraz wprowadzenie do samego języka, a także mnóstwo pożytecznych wskazówek dla początkujących. Bardziej zaawansowani programiści docenią szczegółowe opisy niuansów, zawiłości i źródeł możliwych problemów. Książka jest napisana prostym, zrozumiałym językiem i zawiera wiele świetnie dobranych przykładów ilustrujących nie tylko funkcje i konstrukcje języka C++, ale również przypadki i sposoby ich użycia.
Najważniejsze zagadnienia:
- przystępne wprowadzenie do C++
- funkcje i klasy, tablice i wektory
- wyrażenia lambda, wskaźniki i przeciążanie operatorów
- dziedziczenie i polimorfizm
- stosy, kolejki i rekurencja
- - drzewa binarne: tworzenie i operacje na drzewach
Idź i programuj w C++!
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
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-4681-9 |
Rozmiar pliku: | 10 MB |