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%)
- Ruby on Rails. 膯wiczenia 18,75 z艂, (3,00 z艂 -84%)
- Przyw贸dztwo w 艣wiecie VUCA. Jak by膰 skutecznym liderem w niepewnym 艣rodowisku 58,64 z艂, (12,90 z艂 -78%)
- Scrum. O zwinnym zarz膮dzaniu projektami. Wydanie II rozszerzone 58,64 z艂, (12,90 z艂 -78%)
- Od hierarchii do turkusu, czyli jak zarz膮dza膰 w XXI wieku 58,64 z艂, (12,90 z艂 -78%)
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