Język C++. Owoce programowania

87,52

Opis

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 wektorywyrażenia lambda, wskaźniki i przeciążanie operatorówdziedziczenie i polimorfizmstosy, kolejki i rekurencja- drzewa binarne: tworzenie i operacje na drzewachIdź i programuj w C++!Spis treści:Przedmowa 15Rozdział 1. Wprowadzenie do komputerów i programowania 291.1. Dlaczego tworzymy oprogramowanie? 291.2. Systemy komputerowe: sprzęt i oprogramowanie 311.3. Programy i języki programowania 371.4. Z czego składa się program? 431.5. Przyjmowanie danych, ich przetwarzanie i wynik 471.6. Proces programowania 481.7. Programowanie proceduralne i obiektowe 52Pytania i ćwiczenia kontrolne 54Rozdział 2. Wprowadzenie do języka C++ 572.1. Elementy programu w języku C++ 572.2. Obiekt cout 612.3. Dyrektywa #include 662.4. Zmienne, literały i wyrażenia przypisania 672.5. Identyfikatory 712.6. Typy danych liczb całkowitych 732.7. Typ char 782.8. Klasa string w C++ 822.9. Typy danych liczb zmiennoprzecinkowych 842.10. Typ danych bool 872.11. Określanie rozmiaru typu danych 882.12. Więcej o inicjowaniu zmiennych i przypisywaniu wartości 902.13. Zasięg zmiennych 922.14. Operatory arytmetyczne 932.15. Komentarze 1002.16. Stałe nazwane 1022.17. Styl programowania 105Pytania i ćwiczenia kontrolne 107Wyzwania programistyczne 111Rozdział 3. Wyrażenia i interaktywność 1153.1. Obiekt cin 1153.2. Wyrażenia matematyczne 1213.3. Gdy pomylisz jabłka z pomarańczami: konwersja typów 1293.4. Przepełnienie i zaniżenie 1323.5. Rzutowanie typów 1333.6. Wielokrotne przypisania i przypisania łączone 1363.7. Formatowanie wyjścia 1403.8. Operacje na znakach i obiekcie string 1493.9. Więcej matematycznych funkcji bibliotecznych 1553.10. Rzecz o debugowaniu: ręczne śledzenie programu 1613.11. Rozwiązywanie problemu: analiza przypadku 162Pytania i ćwiczenia kontrolne 166Wyzwania programistyczne 172Rozdział 4. Podejmowanie decyzji 1814.1. Operatory relacji 1814.2. Instrukcja if 1864.3. Rozszerzanie instrukcji if 1944.4. Instrukcja if/else 1974.5. Zagnieżdżone struktury warunkowe 2004.6. Instrukcja if/else if 2074.7. Flagi 2124.8. Operatory logiczne 2134.9. Sprawdzanie przedziału liczbowego za pomocą operatorów logicznych 2204.10. Menu 2224.11. Rzecz o inżynierii oprogramowania: walidacja wejścia użytkownika 2244.12. Porównywanie typów char i string 2264.13. Operator warunkowy 2304.14. Instrukcja switch 2334.15. Więcej o blokach i zasięgu zmiennych 241Pytania i ćwiczenia kontrolne 244Wyzwania programistyczne 250Rozdział 5. Pętle i pliki 2615.1. Operatory inkrementacji i dekrementacji 2615.2. Wprowadzenie do pętli: pętla while 2665.3. Walidacja wejścia za pomocą pętli while 2735.4. Liczniki 2755.5. Pętla do-while 2765.6. Pętla for 2815.7. Obliczanie sumy bieżącej 2915.8. Wartownik 2935.9. Rzecz o inżynierii oprogramowania: której pętli użyć? 2955.10. Pętle zagnieżdżone 2965.11. Zastosowanie plików do przechowywania danych 2985.12. Temat dodatkowy: przerywanie i kontynuowanie pętli 318Pytania i ćwiczenia kontrolne 322Wyzwania programistyczne 327Rozdział 6. Funkcje 3356.1. Rzecz o inżynierii oprogramowania: programowanie modułowe 3356.2. Definicja i wywoływanie funkcji 3366.3. Prototypy funkcji 3446.4. Przekazywanie danych do funkcji 3466.5. Przekazywanie danych przez wartość 3506.6. Rzecz o inżynierii oprogramowania: zastosowanie funkcji w programie sterowanym przez menu 3526.7. Instrukcja return 3566.8. Zwracanie wartości z funkcji 3576.9. Zwracanie wartości boolowskiej 3656.10. Zmienne lokalne i globalne 3676.11. Statyczne zmienne lokalne 3746.12. Argumenty domyślne 3786.13. Zastosowanie wskaźników jako parametrów 3816.14. Przeciążanie funkcji 3866.15. Funkcja exit() 3906.16. Funkcje wirtualne i sterowniki 392Pytania i ćwiczenia kontrolne 394Wyzwania programistyczne 398Projekt grupowy 406Rozdział 7. Tablice i wektory 4097.1. Tablica jako zbiór wartości 4097.2. Dostęp do elementów tablicy 4117.3. Brak kontroli zakresów w języku C++ 4227.4. Zakresowa pętla for 4257.5. Przetwarzanie zawartości tablicy 4297.6. Rozwiązywanie problemu i projektowanie programu: tablice równoległe 4377.7. Tablice w argumentach funkcji 4407.8. Tablice dwuwymiarowe 4507.9. Tablice o trzech i większej liczbie wymiarów 4577.10. Rozwiązywanie problemu i projektowanie programu: analiza przypadku 4597.11. Wprowadzenie do typu STL vector 461Pytania i ćwiczenia kontrolne 474Wyzwania programistyczne 480Rozdział 8. Przeszukiwanie i sortowanie tablic 4898.1. Rozwiązywanie problemu i projektowanie programu: wprowadzenie do algorytmów wyszukiwania danych 4898.2. Rozwiązywanie problemu i projektowanie programu: analiza przypadku 4968.3. Rozwiązywanie problemu i projektowanie programu: wprowadzenie do algorytmów sortowania 5028.4. Rozwiązywanie problemu i projektowanie programu: analiza przypadku 5128.5. Sortowanie i przeszukiwanie wektorów (kontynuacja podrozdziału 7.11) 520Pytania i ćwiczenia kontrolne 523Wyzwania programistyczne 524Rozdział 9. Wskaźniki 5299.1. Uzyskiwanie adresu zmiennej 5299.2. Zmienne wskaźnikowe 5319.3. Relacja pomiędzy tablicą a wskaźnikiem 5389.4. Działania na wskaźnikach 5429.5. Inicjowanie wskaźników 5439.6. Porównywanie wskaźników 5459.7. Wskaźniki jako argumenty funkcji 5469.8. Dynamiczne przydzielanie pamięci 5549.9. Wskaźniki jako wyniki funkcji 5589.10. Inteligentne wskaźniki i zapobieganie wyciekom pamięci 5659.11. Rozwiązywanie problemu i projektowanie programu: analiza przypadku 569Pytania i ćwiczenia kontrolne 574Wyzwania programistyczne 578Rozdział 10. O znakach, C-ciągach i więcej o klasie string 58110.1. Sprawdzanie znaków 58110.2. Zmiana wielkości liter 58510.3. C-ciągi 58810.4. Standardowe funkcje przetwarzające C-ciągi 59210.5. Funkcje konwertujące ciągi i liczby 60210.6. Rozwiązywanie problemu i projektowanie programu: tworzenie własnych funkcji przetwarzających C-ciągi 60910.7. Więcej o klasie string 61410.8. Rozwiązywanie problemu i projektowanie programu: analiza przypadku 627Pytania i ćwiczenia kontrolne 628Wyzwania programistyczne 631Rozdział 11. Dane strukturalne 63711.1. Typy abstrakcyjne 63711.2. Struktury 63911.3. Dostęp do składników struktury 64211.4. Inicjowanie struktury 64511.5. Tablice struktur 64811.6. Inżynieria oprogramowania: struktury zagnieżdżone 65111.7. Struktury jako argumenty funkcji 65411.8. Struktury jako wyniki funkcji 65711.9. Wskaźniki do struktur 65911.10. Inżynieria oprogramowania: kiedy stosować kropkę, strzałkę i gwiazdkę? 66211.11. Typy wyliczeniowe 664Pytania i ćwiczenia kontrolne 675Wyzwania programistyczne 680Rozdział 12. Zaawansowane operacje na plikach 68712.1. Operacje na plikach 68712.2. Formatowanie danych wyjściowych 69312.3. Umieszczanie obiektów plikowych w argumentach funkcji 69512.4. Dokładniejsze sprawdzanie błędów 69712.5. Funkcje do odczytywania i zapisywania danych 70012.6. Inżynieria oprogramowania: praca z wieloma plikami 70712.7. Pliki binarne 70912.8. Tworzenie rekordów danych za pomocą struktur 71412.9. Swobodny dostęp do plików 71812.10. Otwieranie pliku w trybach wejściowym i wyjściowym jednocześnie 725Pytania i ćwiczenia kontrolne 730Wyzwania programistyczne 734Rozdział 13. Wprowadzenie do klas 73913.1. Programowanie proceduralne i obiektowe 73913.2. Wprowadzenie do klas 74613.3. Definiowanie instancji klasy 75113.4. Po co są prywatne elementy? 76313.5. Inżynieria oprogramowania: rozdzielenie specyfikacji i implementacji klasy 76413.6. Metody śródwierszowe 77013.7. Konstruktory 77213.8. Umieszczanie wartości w argumentach konstruktorów 77813.9. Destruktory 78413.10. Przeciążanie konstruktora 78813.11. Metody prywatne 79313.12. Tablice obiektów 79413.13. Rozwiązywanie problemu i projektowanie programu: przykład programowania obiektowego 79813.14. Programowanie obiektowe: symulowanie rzutów kostką za pomocą obiektów 80513.15. Projektowanie kodu obiektowego: język UML 80813.16. Projektowanie kodu obiektowego: dobór klas i określanie ich przeznaczenia 811Pytania i ćwiczenia kontrolne 820Wyzwania programistyczne 825Rozdział 14. Więcej o klasach 83714.1. Instancje klasy i statyczne elementy członkowskie 83714.2. Klasy zaprzyjaźnione 84414.3. Przypisanie obiektowe 84914.4. Konstruktor kopiujący 85014.5. Przeciążanie operatorów 85614.6. Konwersja typów 88214.7. Agregacja obiektów 88414.8. Projektowanie kodu obiektowego: współpraca klas 88914.9. Programowanie obiektowe: symulacja gry Cho-Han 89314.10. Referencje do r-wartości i przenoszenie danych 903Pytania i ćwiczenia kontrolne 912Wyzwania programistyczne 917Rozdział 15. Dziedziczenie klas, polimorfizm i funkcje wirtualne 92515.1. Co to jest dziedziczenie klas? 92515.2. Chronione elementy członkowskie i dostęp do klasy 93315.3. Konstruktory i destruktory w klasach bazowych i pochodnych 94015.4. Redefiniowanie funkcji klasy bazowej 95215.5. Hierarchia klas 95615.6. Polimorfizm i metody wirtualne 96215.7. Abstrakcyjne klasy bazowe i funkcje czysto wirtualne 97715.8. Wielodziedziczenie klas 984Pytania i ćwiczenia kontrolne 990Wyzwania programistyczne 995Rozdział 16. Wyjątki i szablony 100316.1. Wyjątki 100316.2. Szablony funkcji 102116.3. Inżynieria oprogramowania: od czego zacząć definiowanie szablonów funkcji? 102716.4. Szablony klas 1027Pytania i ćwiczenia kontrolne 1036Wyzwania programistyczne 1039Rozdział 17. Biblioteka STL 104117.1. Wprowadzenie do biblioteki STL 104117.2. Podstawowe informacje o kontenerach i iteratorach STL 104217.3. Klasa vector 105317.4. Klasy map, multimap i unordered_map 106617.5. Klasy set, multiset i unordered_set 109117.6. Algorytmy 109917.7. Wprowadzenie do obiektów funkcyjnych i wyrażeń lambda 1120Pytania i ćwiczenia kontrolne 1126Wyzwania programistyczne 1131Rozdział 18.Listy łączone 113718.1. Wprowadzenie do list łączonych 113718.2. Operacje na listach łączonych 113918.3. Szablon listy łączonej 115518.4. Odmiany listy łączonej 116618.5. Standardowe kontenery list i forward_list 1166Pytania i ćwiczenia kontrolne 1172Wyzwania programistyczne 1174Rozdział 19. Stosy i kolejki 117719.1. Wprowadzenie do stosów 117719.2. Stosy dynamiczne 119319.3. Kontener stack 120319.4. Wprowadzenie do kolejek 120519.5. Kolejki dynamiczne 121619.6. Kontenery deque i queue 1223Pytania i ćwiczenia kontrolne 1226Wyzwania programistyczne 1228Rozdział 20. Rekurencja 123120.1. Wprowadzenie do rekurencji 123120.2. Rozwiązywanie problemów za pomocą rekurencji 123520.3. Rozwiązywanie problemu i projektowanie programu: rekurencyjna funkcja gcd() 124220.4. Rozwiązywanie problemu i projektowanie programu: zadania rekurencyjne 124320.5. Rozwiązywanie problemu i projektowanie programu: rekurencyjne operacje na listach łączonych 124520.6. Rozwiązywanie problemu i projektowanie programu: rekurencyjna funkcja wyszukiwania binarnego 124820.7. Rozwiązywanie problemu i projektowanie programu: Wieże Hanoi 125020.8. Rozwiązywanie problemu i projektowanie programu: algorytm sortowania szybkiego 125420.9. Rozwiązywanie problemu i projektowanie programu: algorytm wyszukiwania wyczerpującego 125820.10. Rozwiązywanie problemu i projektowanie programu: rekurencja a iteracja 1260Pytania i ćwiczenia kontrolne 1261Wyzwania programistyczne 1263Rozdział 21. Drzewa binarne 126521.1. Definicja i zastosowanie drzew binarnych 126521.2. Operacje przeszukiwania drzewa binarnego 126921.3. Szablon klasy do obsługi drzewa binarnego 1285Pytania i ćwiczenia kontrolne 1290Wyzwania programistyczne 1291Dodatek A. Zestaw znaków ASCII 1295Dodatek B. Hierarchia operatorów 1299Dodatek C. Odpowiedzi do punktów kontrolnych 1307Dodatek D. Odpowiedzi do pytań i ćwiczeń kontrolnych 1343Skorowidz 1397O autorze: Tony Gaddis od ponad dwudziestu lat prowadzi kursy informatyczne, głównie w Haywood Community College. Jego talent dydaktyczny był niejednokrotnie doceniany i nagradzany. Gaddis otrzymał między innymi tytuł Nauczyciela Roku na North Carolina Community College oraz nagrodę Teaching Excellence przyznaną przez National Institute for Staff and Organizational Development. Jest autorem i współautorem bardzo cenionych książek dotyczących nauki języków C++, Java, Microsoft

Podręczniki szkolne

mstudio łódź, średniowiecze czas trwania, ue wroc akademik, tabelka czasowników nieregularnych, jak wygląda 1, rafał aleksandrowicz, fce english, justyna janiszewska, artlantis wizualizacje

yyyyy