Programowanie w j - Helion

ebook
Autor: BogusTĹumaczenie: Krzysztof Kapustka, Wojciech Fenrich
ISBN: 9788301229061
stron: 732, Format: ebook
Data wydania: 2023-03-15
KsiÄgarnia: Helion
Cena ksiÄ Ĺźki: 111,20 zĹ (poprzednio: 139,00 zĹ)
OszczÄdzasz: 20% (-27,80 zĹ)
Osoby ktĂłre kupowaĹy "Programowanie w j", wybieraĹy takĹźe:
- Windows Media Center. Domowe centrum rozrywki 66,67 zĹ, (8,00 zĹ -88%)
- PodrÄcznik startupu. Budowa wielkiej firmy krok po kroku 93,13 zĹ, (14,90 zĹ -84%)
- Ruby on Rails. Äwiczenia 18,75 zĹ, (3,00 zĹ -84%)
- Scrum. O zwinnym zarz 78,42 zĹ, (14,90 zĹ -81%)
- Prawa ludzkiej natury 74,50 zĹ, (14,90 zĹ -80%)
Spis treĹci
Programowanie w języku C++ eBook -- spis treści
- Okładka
- Strona tytułowa
- Strona redakcyjna
- Spis treści
- Przedmowa
- Podziękowania
- Podziękowania do wydania polskiego
- Wykaz skrótów
- 1. Wprowadzenie
- 1.1. Struktura książki
- 1.2. Konwencje formatowania
- 1.3. O kodzie i projektach
- 2. Wprowadzenie do programowania
- 2.1. Model sprzętowy
- 2.2. Ekosystem tworzenia oprogramowania
- 2.3. Etapy tworzenia oprogramowania
- 2.4. Reprezentacja i uruchamianie algorytmów
- 2.4.1. Reprezentowanie algorytmów
- 2.4.2. Korzystanie z kompilatorów dostępnych w Internecie
- 2.4.3. Struktura programu w C++
- 2.4.4. Analiza kodu
- 2.4.5. Budowa linuksowej postaci wykonywalnej
- 2.5. Przykładowy projekt kalkulator procentu składanego
- 2.5.1. Analiza procentu składanego
- 2.5.2. Implementacja kalkulatora procentu składanego
- 2.5.3. Budowanie i uruchamianie oprogramowania
- 2.6. Przykładowy projekt zliczanie wystąpień znaków w tekście
- 2.6.1. Analiza problemu i implementacja
- 2.6.2. Uruchomienie kodu C++ za pomocą kompilatora dostępnego w Internecie
- 2.6.3. Kod histogramu wyjaśnienie
- 2.7. Podsumowanie
- Pytania i ćwiczenia
- 3. Podstawy C++
- 3.1. Stałe i zmienne wbudowane typy danych, ich zakres oraz inicjalizacja
- 3.2. Przykładowy projekt zbieranie ocen studentów
- 3.3. Nasz przyjaciel debugger
- 3.4. Podstawowa struktura danych std::vector
- 3.5. Przykładowy projekt implementowanie macierzy w postaci wektora wektorów
- 3.6. Specjalny wektor do przechowywania tekstu std::string
- 3.7. Słowo kluczowe auto oraz decltype do automatycznej dedukcji typu
- 3.8. Popularne algorytmy standardowe
- 3.9. Struktury: zbieranie obiektów różnego typu
- 3.10. Tablice o stałym rozmiarze
- 3.10.1. Wielowymiarowe tablice o stałym rozmiarze
- 3.11. Referencje
- 3.12. Wskaźniki
- 3.12.1. Dostęp do obiektów za pomocą wskaźników
- 3.13. Instrukcje
- 3.13.1. Bloki instrukcji oraz dostęp do zmiennych rola nawiasów klamrowych
- 3.13.2. Instrukcje C++
- 3.13.2.1. Instrukcje warunkowe
- 3.13.2.2. Instrukcje pętli
- 3.13.2.3. Instrukcje pomocnicze continue oraz break
- 3.13.2.4. Instrukcja goto
- 3.13.2.5. Strukturalna obsługa wyjątków instrukcja try-catch
- 3.14. Funkcje
- 3.14.1. Anatomia funkcji w C++
- 3.14.2. Przekazywanie argumentów do i z funkcji
- 3.14.2.1. Przekazywanie argumentów przez kopię (semantyka wartości)
- 3.14.2.2. Pośrednie przekazywanie argumentów przez referencję
- 3.14.2.3. Przekazywanie przez wskaźnik
- 3.14.3. Mechanizm wywoływania funkcji i funkcje wbudowane
- 3.14.4. Funkcje rekurencyjne i stos wywołań
- 3.14.5. Przeciążanie funkcji rozwiązywanie widoczności za pomocą przestrzeni nazw
- 3.14.6. Funkcje lambda
- 3.14.7. Więcej na temat funkcji lambda
- 3.14.8. Wskaźniki do funkcji
- 3.14.9. Funkcje w środowisku obiektowym
- 3.15. Przykładowy projekt opakowywanie obiektów strukturą z konstruktorem
- 3.15.1. EMatrix w środowisku obiektowym
- 3.15.2. Podstawowe operacje z użyciem EMatrix
- 3.15.3. Operacje wejścia i wyjścia na EMatrix
- 3.15.4. Proste operacje matematyczne na macierzy EMatrix
- 3.15.5. Organizowanie plików projektu i uruchamianie aplikacji
- 3.15.6. Rozszerzanie inicjalizacji macierzy za pomocą prostego generatora liczb losowych
- 3.16. Przykładowy projekt reprezentowanie równań kwadratowych
- 3.16.1. Definicja klasy do reprezentowania wielomianów kwadratowych
- 3.16.2. Implementacja składowych TQuadEq
- 3.16.3. TQuadEq w akcji
- 3.17. Przykładowy projekt krotki i powiązania strukturalne do konwertowania liczb rzymskich
- 3.17.1. Więcej o std::tuple i powiązaniu strukturalnym
- 3.17.2. Jak napisać test jednostkowy oprogramowania
- 3.17.3. Automatyzowanie testów jednostkowych z użyciem standardowej biblioteki liczb losowych
- 3.18. Projekt przykładowy tworzenie komponentu kalkulatora walutowego
- 3.18.1. Analiza problemu wymiany walut
- 3.18.2. Projekt oprogramowania CurrencyCalc 219
- 3.18.3. Klasa TCurrency reprezentująca rekordy walut
- 3.18.3.1. Manipulatory wejścia/wyjścia C++
- 3.18.4. Klasa TCurrencyExchanger do wymiany walut
- 3.18.5. Łączenie wszystkiego w całość kompletny program wymiany walut
- 3.19. Operatory
- 3.19.1. Podsumowanie operatorów C++
- 3.19.2. Dalsze uwagi na temat operatorów
- 3.20. Podsumowanie
- Pytania i ćwiczenia
- 4. Zgłębianie programowania obiektowego
- 4.1. Podstawowe reguły oraz filozofia projektowania i programowania obiektowego
- 4.2. Anatomia klasy
- 4.2.1. Konwencja nazewnictwa i samodokumentujący się kod
- 4.3. Reguły uzyskiwania dostępu do składowych klasy
- 4.4. Przykładowy projekt klasa TComplex do przeciążania operatorów
- 4.4.1. Definicja klasy TComplex
- 4.4.2. Definicja składowych klasy TComplex
- 4.4.3. Funkcje testujące dla klasy TComplex
- 4.5. Więcej o referencjach
- 4.5.1. Referencje prawostronne i przekazywania
- 4.5.2. Referencje kontra wskaźniki
- 4.5.3. Pułapki z referencjami
- 4.6. Przykładowy projekt opanowywanie składowych klasy z użyciem klasy TheCube
- 4.6.1. Automatyczna kontra jawna definicja konstruktorów
- 4.6.2. Układ i semantyka obiektu TheCube
- 4.6.3. Semantyka kopiowania płytkiego i głębokiego
- 4.6.4. Semantyka konstruktora przenoszącego i przypisania przenoszącego
- 4.6.5. Implementacja operatorów strumieniowania dla TheCube
- 4.6.6. Sprawdzanie TheCube
- 4.7. Projekt przykładowy przenoszenie EMatrix do klasy
- 4.7.1. Definicja klasy EMatrix
- 4.7.2. Implementacja operatorów strumieniowania klasy
- 4.7.3. Implementacja operatorów arytmetycznych
- 4.7.4. Testowanie operacji na macierzach
- 4.8. Wprowadzenie do szablonów i programowania uogólnionego
- 4.8.1. Uogólnianie klasy przy użyciu szablonów
- 4.8.2. span class="c-10"> Specjalizacje szablonów
- 4.8.3. Funkcje szablonowe i sprawdzanie typu
- 4.8.4. Przykładowy projekt projektowanie klas szablonowych przy użyciu TStack
- 4.8.4.1. Projekt i implementacja klasy TStackFor
- 4.8.4.2. Testowanie TStack
- 4.8.5. Szablonowe funkcje składowe
- 4.9. Relacje między klasami zna, ma oraz jest
- 4.10. Przykładowy projekt rozszerzanie funkcjonalności poprzez dziedziczenie klas z użyciem TComplexQuadEq
- 4.11. Funkcje wirtualne i polimorfizm
- 4.12. Więcej na temat mechanizmu wirtualnego
- 4.13. Ciekawie rekurencyjny wzorzec szablonu i statyczny polimorfizm
- 4.14. Klasy domieszki
- 4.15. Przykładowy projekt klasa TLongNumberFor do wydajnego przechowywania liczb o dowolnej długości
- 4.15.1. Reprezentacja Binary-Coded Decimal
- 4.15.2. Kolejność bajtów
- 4.15.3. Definicja klasy TLongNumberFor
- 4.15.3.1. Operacje konwersji typu
- 4.15.3.2. Funkcja testująca TLongNumberFor
- 4.15.4. Projektowanie klas dla numeru PESEL
- 4.15.4.1. Agregowanie klasy PESEL
- 4.15.4.2. Odziedziczona klasa PESEL
- 4.15.4.3. Organizacja projektu LongNumber
- 4.15.5. Rozszerzanie funkcjonalności klasy TLongNumberFor z użyciem wzorca pełnomocnika
- 4.15.5.1. Definicja klasy Proxy
- 4.15.5.2. Testowanie funkcjonalności klasy TLongNumberFor z użyciem wzorca pełnomocnika
- 4.16. Silne typy
- 4.17. Podsumowanie
- Pytania i ćwiczenia
- 5. Zarządzanie pamięcią
- 5.1. Rodzaje magazynów danych
- 5.2. Dynamiczny przydział pamięci jak unikać wycieków pamięci
- 5.2.1. Wprowadzenie do inteligentnych wskaźników i zarządzania zasobami
- 5.2.1.1. RAII i odwijanie stosu
- 5.2.1. Wprowadzenie do inteligentnych wskaźników i zarządzania zasobami
- 5.3. Inteligentne wskaźniki omówienie z przykładami
- 5.3.1. Więcej o std::unique_ptr
- 5.3.1.1. Kontekst użycia std::unique_ptr
- 5.3.1.2. Wzorzec projektowy metody wytwórczej
- 5.3.1.3. Niestandardowe usuwanie unique_ptr
- 5.3.1.4. Konstrukcje do unikania podczas korzystania z unique_ptr
- 5.3.2. Więcej o shared_ptr i weak_ptr
- 5.3.1. Więcej o std::unique_ptr
- 5.4. Podsumowanie
- Pytania i ćwiczenia
- 6. Zaawansowane programowanie obiektowe
- 6.1. Obiekty funkcyjne
- 6.2. Projekt przykładowy rozszerzanie o wyszukiwanie walut w plikach XML oraz korzystanie z maszyny stanów i wyrażeń regularnych za pomocą biblioteki regex
- 6.2.1. Dopasowywanie do wzorca za pomocą biblioteki wyrażeń regularnych
- 6.2.2. Wzorzec maszyny stanów
- 6.2.3. Implementowanie klasy rozszerzonej
- 6.2.4. Rozszerzenie projektu wczytywanie informacji o walutach z internetu
- 6.2.5. Uruchamianie rozszerzonej wersji CurrencyCalc
- 6.2.6. Tworzenie biblioteki statycznej
- 6.2.7. System plików C++
- 6.2.8. Interfejs użytkownika
- 6.2.8.1. Definicja klasy CC_GUI
- 6.2.8.2. Definicje składowych klasy CC_GUI i mechanizm wywołania zwrotnego
- 6.2.8.3. Uruchamianie aplikacji z GUI
- 6.3. Zegary systemowe i pomiar czasu
- 6.4. Mierzenie czasu wykonywania funkcji
- 6.5. Klasa Range
- 6.5.1. Programowanie funkcyjne i biblioteka std::ranges
- 6.6. Przykładowy projekt parsowanie wyrażeń
- 6.6.1. Definiowanie wyrażeń języka i zasad gramatyki formalnej
- 6.6.2. Projektowanie biblioteki przetwarzania wyrażeń
- 6.6.3. Pierwszy interpreter poleceń
- 6.6.4. Budowanie drzewa składniowego z użyciem wzorca projektowego kompozytu
- 6.6.4.1. Wzorzec projektowy kompozytu do definiowania węzłów drzewa
- 6.6.4.2. Implementacja hierarchii TNode i współpraca z wizytatorami
- 6.6.4.3. Implementacja klasy ValueLeafNode
- 6.6.4.4. Implementacja klasy BinOperator
- 6.6.4.5. Implementacja klasy PlusOperator
- 6.6.4.6. Głębokie kopiowanie obiektów węzła mechanizm prototypowania
- 6.6.5. Interpreter do budowy drzew składniowych
- 6.6.6. Stos dla inteligentnych wskaźników
- 6.6.7. Przechodzenie po drzewach za pomocą wzorca projektowego wizytatora
- 6.6.7.1. Wizytator ewaluujący wyrażenie
- 6.6.7.2. Wizytator wypisujący wyrażenie
- 6.6.8. Testowanie interpreterów
- 6.6.9. Reprezentowanie wyrażeń na stosie w odwrotnej notacji polskiej
- 6.6.9.1. Odwrócona notacja polska
- 6.6.9.2. Algorytm do ewaluowania wyrażenia RPN
- 6.7. Podsumowanie
- Pytania i ćwiczenia
- 7. Arytmetyka komputerowa
- 7.1. Reprezentacja wartości całkowitej
- 7.1.1. Algorytm konwersji podstawy
- 7.1.2. Reprezentacje szesnastkowe i ósemkowe
- 7.1.3. Dodawanie binarne
- 7.1.4. Wartości ujemne i odejmowanie
- 7.2. Operacje przesunięcia binarnego
- 7.1.5. Flagi kontroli arytmetycznej
- 7.1.6. Reprezentowanie ułamków
- 7.2. Operacje przesunięcia binarnego
- 7.3. Przykładowy projekt model programowy dla reprezentacji stałoprzecinkowej
- 7.3.1. Liczby stałoprzecinkowe i ich arytmetyka
- 7.3.2. Definicja klasy FxFor 579
- 7.3.3. Wybrane metody klasy FxFor 587
- 7.3.4. Zastosowania dla FxFor
- 7.4. Reprezentacje liczb zmiennoprzecinkowych
- 7.4.1. Reprezentacja liczb w formacie zmiennoprzecinkowym
- 7.4.2. Rozkład liczb zmiennoprzecinkowych i konsekwencje obliczeniowe
- 7.4.3. Błąd przybliżenia wartości rzeczywistej przy użyciu reprezentacji zmiennoprzecinkowej
- 7.4.4. Standard IEEE 754 dla arytmetyki zmiennoprzecinkowej
- 7.4.5. Standardowy model operacji zmiennoprzecinkowych
- 7.4.6. Obliczenia ze świadomością o błędach numerycznych
- 7.4.7. Przykładowy projekt ewaluacja algorytmów sumujących
- 7.4.8. Przykładowy projekt metoda Newtona do znajdywania miejsc zerowych funkcji
- 7.4.8.1. Funkcja do obliczania pierwiastka kwadratowego na podstawie iteracji Newtona
- 7.5. Podsumowanie
- Pytania i ćwiczenia
- 7.1. Reprezentacja wartości całkowitej
- 8. Podstawy programowania równoległego
- 8.1. Podstawowe zagadnienia związane z obliczeniami równoległymi
- 8.2. Dodawanie równoległości do algorytmów standardowych
- 8.3. Uruchamianie zadań asynchronicznych
- 8.4. Zrównoleglanie za pomocą biblioteki OpenMP
- 8.4.1. Uruchamianie zespołu wątków i zapewnianie ochrony wyłącznego dostępu
- 8.4.2. Równoległa pętla for i operacje redukcji
- 8.4.3. Równoległość dla dużych ilości danych
- 8.5. Podsumowanie
- Pytania i ćwiczenia
- Dodatek
- A.1. Dyrektywy preprocesora
- A.2. Krótkie wprowadzenie do języka C
- A.2.1. Tablice wbudowane
- A.2.1.1. Wielowymiarowe tablice o stałym rozmiarze
- A.2.2. Przekazywanie tablic do funkcji funkcja main
- A.2.3. Struktury C
- A.2.4. Funkcje i operacje wejścia/wyjścia w C
- A.2.5. Unie
- A.2.6. Operacje wykonywane na pamięci i ciągach znaków
- A.2.7. Łączenie kodu C i C++
- A.2.1. Tablice wbudowane
- A.3. Łączenie i organizacja binarna obiektów C/C++
- A.4. Graficzny interfejs użytkownika i interfejs sieci Web dla projektów C++
- A.5. Konwertowanie wartości bin, oct, dec i hex za pomocą FixBinCalc
- A.6. Zestaw narzędzi programistycznych
- A.6.1. Narzędzie do generowania projektów (CMake)
- A.6.2. Systemy kontroli wersji i repozytoria
- A.6.3. Profiler
- A.7. Testowanie oprogramowania
- A.8. Podsumowanie
- Pytania i ćwiczenia
- Bibliografia
- O Autorze
- Przypisy