Magnum opus C++ 11. Программирование на C++.

Товар

6 958  ₽
Magnum opus C++ 11. Программирование на C++.

Доставка

  • Почта России

    от 990 ₽

  • Курьерская доставка EMS

    от 1290 ₽

Характеристики

Артикул
16252256818
Состояние
Новый
Język publikacji
polski
Okładka
miękka
Nośnik
książka papierowa
Rok wydania
2020
Tematyka
C++
Tytuł
Opus magnum C++
Autor
Jerzy Grębosz
Wydawnictwo
Helion
Liczba stron
1648

Описание

Opus magnum C++ 11. Programowanie w języku C++.

Rok wydania: 2020

Oprawa: miękka

Ilość stron: 1648

Format: 168x237

"Opus magnum C++ 11. Programowanie w języku C++. Wydanie II poprawione" – zestaw obejmuje 3 tomy.

Jedno C i same plusy!

Dawno, dawno temu, w głębokich latach osiemdziesiątych ubiegłego wieku pewien duński informatyk zainspirowany językiem C opracował jeden z najważniejszych, najbardziej elastycznych i do dziś niezastąpionych języków programowania - C++. Dziś ten język jest wykorzystywany do tworzenia gier komputerowych, obliczeń naukowych, technicznych, w medycynie, przemyśle i bankowości. NASA posługuje się nim w naziemnej kontroli lotów. Duża część oprogramowania Międzynarodowej Stacji Kosmicznej została napisana w tym języku. Nawet w marsjańskim łaziku Curiosity pracuje program w C++, który analizuje obraz z kamer i planuje dalszą trasę.

Autor tej książki - wybitny specjalista pracujący nad wieloma znaczącymi projektami we francuskich, niemieckich i włoskich instytutach fizyki jądrowej, znany czytelnikom m.in. z genialnej Symfonii C++ - postawił sobie za cel napisanie nowej, przekrojowej książki o tym języku, która w prostym, wręcz przyjacielskim stylu wprowadza czytelnika w fascynujący świat programowania zorientowanego obiektowo. Zobacz, jak potężny jest dzisiaj C++ 11.

Jeżeli chcesz nauczyć się tego języka w łatwy, pogodny, przyjazny sposób, ta książka jest właśnie dla Ciebie.

Dzięki tej książce poznasz:

  • Proste i złożone typy danych
  • Instrukcje sterujące
  • Funkcje i operatory
  • Wskaźniki
  • Klasy i dziedziczenie
  • Obsługę wyjątków
  • Wyrażenia lambda
  • Operacje wejścia-wyjścia
  • Projektowanie orientowane obiektowo
  • Szablony

O autorze

Dr hab. Jerzy Grębosz – autor książek o języku C++, fizyk, popularyzator, podróżnik-antropolog. Pracownik Instytutu Fizyki Jądrowej imienia Henryka Niewodniczańskiego Polskiej Akademii Nauk (IFJ PAN). Popularyzator nauki – wszechświat wyjaśnia w sposób kreatywny i niekonwencjonalny, między innymi poprzez widowiska artystyczne, animacje komputerowe, czy też autorskie spektakle i filmy popularnonaukowe (nagradzane na przeglądach i festiwalach filmów naukowych i edukacyjnych, wykorzystywane do nauki w szkołach). Autor publikacji z zakresu fizyki jądrowej i języka C++. Jego książki – „Symfonia C++ Standard” oraz „Pasja C++” – są podręcznikami na wielu polskich uniwersytetach. Z zamiłowania podróżnik – antropolog. W swoich podróżach na wyspy Oceanii poznaje pierwotne plemiona i ich kulturę.

Spis treści

0. Proszę tego nie czytać! (1)

  • 0.1. Zaprzyjaźnijmy się! (1)

1. Startujemy! (8)

  • 1.1. Pierwszy program (8)
  • 1.2. Drugi program (13)
  • 1.3. Ćwiczenia (18)

2. Instrukcje sterujące (20)

  • 2.1. Prawda - fałsz, czyli o warunkach (20)

    2.1.1. Wyrażenie logiczne (20)

    2.1.2. Zmienna logiczna bool w roli warunku (21)

    2.1.3. Stare dobre sposoby z dawnego C++ (21)

  • 2.2. Instrukcja warunkowa if (22)
  • 2.3. Pętla while (26)
  • 2.4. Pętla do...while. (27)
  • 2.5. Pętla for (28)
  • 2.6. Instrukcja switch (31)
  • 2.7. Co wybrać: switch czy if...else? (33)
  • 2.8. Instrukcja break (36)
  • 2.9. Instrukcja goto (37)
  • 2.10. Instrukcja continue (39)
  • 2.11. Klamry w instrukcjach sterujących (40)
  • 2.12. Ćwiczenia (41)

3. Typy (44)

  • 3.1. Deklaracje typu (44)
  • 3.2. Systematyka typów z języka C++ (45)
  • 3.3. Typy fundamentalne (46)

    3.3.1. Typy przeznaczone do pracy z liczbami całkowitymi (46)

    3.3.2. Typy do przechowywania znaków alfanumerycznych (47)

    3.3.3. Typy reprezentujące liczby zmiennoprzecinkowe (47)

    3.3.4. bool - typ do reprezentacji obiektów logicznych (48)

    3.3.5. Kwestia dokładności (49)

    3.3.6. Jak poznać limity (ograniczenia) typów wbudowanych (51)

  • 3.4. Typy o precyzyjnie żądanej szerokości (55)
  • 3.5. InicjaLIZAcja, czyli nadanie wartości w momencie narodzin (59)
  • 3.6. Definiowanie obiektów "w biegu" (60)
  • 3.7. Stałe dosłowne (62)

    3.7.1. Stałe dosłowne typu bool (63)

    3.7.2. Stałe będące liczbami całkowitymi (63)

    3.7.3. Stałe reprezentujące liczby zmiennoprzecinkowe (66)

    3.7.4. Stała dosłowna nullptr - dla wskaźników (67)

    3.7.5. Stałe znakowe (68)

    3.7.6. Stałe tekstowe, napisy, albo po prostu stringi (71)

    3.7.7. Surowe stałe tekstowe (napisy, stringi) (73)

  • 3.8. Typy złożone (76)
  • 3.9. Typ void (77)
  • 3.10. Zakres ważności nazwy obiektu a czas życia obiektu (78)

    3.10.1. Zakres: lokalny (78)

    3.10.2. Zakres: instrukcja (79)

    3.10.3. Zakres: blok funkcji (79)

    3.10.4. Zakres: obszar pliku (80)

    3.10.5. Zakres: obszar klasy (80)

    3.10.6. Zakres określony przez przestrzeń nazw (80)

  • 3.11. Zasłanianie nazw (85)
  • 3.12. Specyfikator (przydomek) const (87)
  • 3.13. Specyfikator (przydomek) constexpr (88)
  • 3.14. Obiekty register (92)
  • 3.15. Specyfikator volatile (92)
  • 3.16. using oraz typedef - tworzenie dodatkowej nazwy typu (93)
  • 3.17. Typy wyliczeniowe enum (96)

    3.17.1. Dawne zwykłe enum a nowe zakresowe enum class (103)

    3.17.2. Kilka uwag dla wtajemniczonych (105)

  • 3.18. auto, czyli automatyczne rozpoznawanie typu definiowanego obiektu (106)
  • 3.19. decltype - operator do określania typu zadanego wyrażenia (109)
  • 3.20. Inicjalizacja z pustą klamrą { }, czyli wartością domniemaną (111)
  • 3.21. Przydomek alignas - adresy równe i równiejsze (113)
  • 3.22. Ćwiczenia (115)

4. Operatory (119)

  • 4.1. Operatory arytmetyczne (119)

    4.1.1. Operator %, czyli reszta z dzielenia (modulo) (120)

    4.1.2. Jednoargumentowe operatory + i (121)

    4.1.3. Operatory inkrementacji i dekrementacji (121)

    4.1.4. Operator przypisania = (123)

  • 4.2. Operatory logiczne (124)

    4.2.1. Operatory relacji (124)

    4.2.2. Operatory sumy logicznej || oraz iloczynu logicznego && (125)

    4.2.3. Wykrzyknik !, czyli operator negacji (126)

  • 4.3. Operatory bitowe (127)

    4.3.1. Przesunięcie w lewo << (128)

    4.3.2. Przesunięcie w prawo >> (129)

    4.3.3. Bitowe operatory sumy, iloczynu, negacji, różnicy symetrycznej (130)

  • 4.4. Różnica między operatorami logicznymi a operatorami bitowymi (130)
  • 4.5. Pozostałe operatory przypisania (132)
  • 4.6. Operator uzyskiwania adresu (operator &) (133)
  • 4.7. Wyrażenie warunkowe (134)
  • 4.8. Operator sizeof (135)
  • 4.9. Operator noexcept (137)
  • 4.10. Deklaracja static_assert (137)
  • 4.11. Operator alignof informujący o najkorzystniejszym wyrównaniu adresu (139)
  • 4.12. Operatory rzutowania (141)

    4.12.1. Rzutowanie według tradycyjnych (niezalecanych) sposobów (141)

    4.12.2. Rzutowanie za pomocą nowych operatorów rzutowania (142)

    4.12.3. Operator static_cast (143)

    4.12.4. Operator const_cast (145)

    4.12.5. Operator dynamic_cast (146)

    4.12.6. Operator reinterpret_cast (147)

  • 4.13. Operator: przecinek (148)
  • 4.14. Priorytety operatorów (148)
  • 4.15. Łączność operatorów (151)
  • 4.16. Ćwiczenia (152)

5. Typ string i typ vector - pierwsza wzmianka (156)

  • 5.1. Typ std::string do pracy z tekstami (156)
  • 5.2. Typ vector - długi rząd obiektów (161)
  • 5.3. Zakresowe for (169)
  • 5.4. Ćwiczenia (172)

6. Funkcje (174)

  • 6.1. Definicja funkcji i jej wywołanie (174)
  • 6.2. Deklaracja funkcji (175)
  • 6.3. Funkcja często wywołuje inną funkcję (177)
  • 6.4. Zwracanie przez funkcję rezultatu (177)

    6.4.1. Obiekt tworzony za pomocą auto, a inicjalizowany rezultatem funkcji (179)

    6.4.2. O zwracaniu (lub niezwracaniu) rezultatu przez funkcję main (180)

  • 6.5. Nowy, alternatywny sposób deklaracji funkcji (181)
  • 6.6. Stos (183)
  • 6.7. Przesyłanie argumentów do funkcji przez wartość (184)
  • 6.8. Przesyłanie argumentów przez referencję (185)
  • 6.9. Pożyteczne określenia: l-wartość i r-wartość (188)
  • 6.10. Referencje do l-wartości i referencje do r-wartości jako argumenty funkcji (190)

    6.10.1. Który sposób przesyłania argumentu do funkcji wybrać? (197)

  • 6.11. Kiedy deklaracja funkcji nie jest konieczna? (198)
  • 6.12. Argumenty domniemane (199)

    6.12.1. Ciekawostki na temat argumentów domniemanych (202)

  • 6.13. Nienazwany argument (207)
  • 6.14. Funkcje inline (w linii) (208)
  • 6.15. Przypomnienie o zakresie ważności nazw deklarowanych wewnątrz funkcji (212)
  • 6.16. Wybór zakresu ważności nazwy i czasu życia obiektu (212)

    6.16.1. Obiekty globalne (212)

    6.16.2. Obiekty automatyczne (213)

    6.16.3. Obiekty lokalne statyczne (214)

  • 6.17. Funkcje w programie składającym się z kilku plików (218)

    6.17.1. Nazwy statyczne globalne (222)

  • 6.18. Funkcja zwracająca rezultat będący referencją l-wartości (223)
  • 6.19. Funkcje rekurencyjne (228)
  • 6.20. Funkcje biblioteczne (237)
  • 6.21. Funkcje constexpr (240)

    6.21.1. Wymogi, które musi spełniać funkcja constexpr (w standardzie C++11) (242)

    6.21.2. Przykład pokazujący aspekty funkcji constexpr (243)

    6.21.3. Argumenty funkcji constexpr będące referencjami (252)

  • 6.22. Definiowanie referencji przy użyciu słowa auto (253)

    6.22.1. Gdy inicjalizatorem jest wywołanie funkcji zwracającej referencję (260)

  • 6.23. Ćwiczenia (263)

7. Preprocesor (269)

  • 7.1. Dyrektywa pusta # (269)
  • 7.2. Dyrektywa #define (269)
  • 7.3. Dyrektywa #undef (271)
  • 7.4. Makrodefinicje (272)
  • 7.5. Sklejacz nazw argumentów, czyli operator ## (274)
  • 7.6. Parametr aktualny makrodefinicji - w postaci tekstu (275)
  • 7.7. Dyrektywy kompilacji warunkowej (275)
  • 7.8. Dyrektywa #error (279)
  • 7.9. Dyrektywa #line (280)
  • 7.10. Wstawianie treści innych plików do tekstu kompilowanego właśnie pliku (280)
  • 7.11. Dyrektywy zależne od implementacji (282)
  • 7.12. Nazwy predefiniowane (282)
  • 7.13. Ćwiczenia (285)

8. Tablice (288)

  • 8.1. Co to jest tablica (288)
  • 8.2. Elementy tablicy (289)
  • 8.3. Inicjalizacja tablic (291)
  • 8.4. Przekazywanie tablicy do funkcji (292)
  • 8.5. Przykład z tablicą elementów typu enum (296)
  • 8.6. Tablice znakowe (298)
  • 8.7. Ćwiczenia (306)

9. Tablice wielowymiarowe (311)

  • 9.1. Tablica tablic (311)
  • 9.2. Przykład programu pracującego z tablicą dwuwymiarową (313)
  • 9.3. Gdzie w pamięci jest dany element tablicy (315)
  • 9.4. Typ wyrażeń związanych z tablicą wielowymiarową (315)
  • 9.5. Przesyłanie tablic wielowymiarowych do funkcji (317)
  • 9.6. Ćwiczenia (319)

10. Wektory wielowymiarowe (321)

  • 10.1. Najpierw przypomnienie istotnych tu cech klasy vector (321)
  • 10.2. Jak za pomocą klasy vector budować tablice wielowymiarowe (322)
  • 10.3. Funkcja pokazująca zawartość wektora dwuwymiarowego (323)
  • 10.4. Definicja dwuwymiarowego wektora - pustego (325)
  • 10.5. Definicja wektora dwuwymiarowego z listą inicjalizatorów (326)
  • 10.6. Wektor dwuwymiarowy o żądanych rozmiarach, choć bez inicjalizacji (327)
  • 10.7. Zmiana rozmiaru wektora 2D funkcją resize (328)
  • 10.8. Zmiany rozmiaru wektora 2D funkcjami push_back, pop_back (329)
  • 10.9. Zmniejszanie rozmiaru wektora dwuwymiarowego funkcją pop_back (332)
  • 10.10. Funkcje mogące modyfikować treść wektora 2D (332)
  • 10.11. Wysłanie rzędu wektora 2D do funkcji pracującej z wektorem 1D (334)
  • 10.12. Całość przykładu definiującego wektory dwuwymiarowe (335)
  • 10.13. Po co są dwuwymiarowe wektory nieprostokątne (335)
  • 10.14. Wektory trójwymiarowe (337)
  • 10.15. Sposoby definicji wektora 3D o ustalonych rozmiarach (340)
  • 10.16. Nadawanie pustemu wektorowi 3D wymaganych rozmiarów (344)

    10.16.1. Zmiana rozmiarów wektora 3D funkcjami resize (344)

    10.16.2. Zmiana rozmiarów wektora 3D funkcjami push_back (346)

  • 10.17. Trójwymiarowe wektory 3D - nieprostopadłościenne (347)
  • 10.18. Ćwiczenia (351)

11. Wskaźniki - wiadomości wstępne (353)

  • 11.1. Wskaźniki mogą bardzo ułatwić życie (353)
  • 11.2. Definiowanie wskaźników (355)
  • 11.3. Praca ze wskaźnikiem (356)
  • 11.4. Definiowanie wskaźnika z użyciem auto (359)
  • 11.5. Wyrażenie *wskaźnik jest l-wartością (360)
  • 11.6. Operator rzutowania reinterpret_cast a wskaźniki (360)
  • 11.7. Wskaźniki typu void* (363)
  • 11.8. Strzał na oślep - wskaźnik zawsze na coś wskazuje (365)

    11.8.1. Wskaźnik wolno porównać z adresem zero - nullptr (367)

  • 11.9. Ćwiczenia (367)

12. Cztery domeny zastosowania wskaźników (369)

  • 12.1. Zastosowanie wskaźników wobec tablic (369)

    12.1.1. Ćwiczenia z mechaniki ruchu wskaźnika (369)

    12.1.2. Użycie wskaźnika w pracy z tablicą (373)

    12.1.3. Arytmetyka wskaźników (377)

    12.1.4. Porównywanie wskaźników (379)

  • 12.2. Zastosowanie wskaźników w argumentach funkcji (380)

    12.2.1. Jeszcze raz o przesyłaniu tablic do funkcji (384)

    12.2.2. Odbieranie tablicy jako wskaźnika (384)

    12.2.3. Argument formalny będący wskaźnikiem do obiektu const (386)

  • 12.3. Zastosowanie wskaźników przy dostępie do konkretnych komórek pamięci (389)
  • 12.4. Rezerwacja obszarów pamięci (390)

    12.4.1. Operatory new i delete albo Oratorium Stworzenie Świata (391)

    12.4.2. Operator new a słowo kluczowe auto (395)

    12.4.3. Inicjalizacja obiektu tworzonego operatorem new (395)

    12.4.4. Operatorem new możemy także tworzyć obiekty stałe (396)

    12.4.5. Dynamiczna alokacja tablicy (397)

    12.4.6. Tablice wielowymiarowe tworzone operatorem new (398)

    12.4.7. Umiejscawiający operator new (401)

    12.4.8. "Przychodzimy, odchodzimy - cichuteńko, na..." (406)

    12.4.9. Zapas pamięci to nie studnia bez dna (408)

    12.4.10. Nowy sposób powiadomienia: rzucenie wyjątku std::bad_alloc (409)

    12.4.11. Funkcja set_new_handler (411)

  • 12.5. Ćwiczenia (413)

13. Wskaźniki - runda trzecia (417)

  • 13.1. Stałe wskaźniki (417)
  • 13.2. Stałe wskaźniki a wskaźniki do stałych (418)

    13.2.1. Wierzch i głębia (419)

  • 13.3. Definiowanie wskaźnika z użyciem auto (420)

    13.3.1. Symbol zastępczy auto a opuszczanie gwiazdki przy definiowaniu wskaźnika (423)

  • 13.4. Sposoby ustawiania wskaźników (425)
  • 13.5. Parada kłamców, czyli o rzutowaniu const_cast (427)
  • 13.6. Tablice wskaźników (431)
  • 13.7. Wariacje na temat C-stringów (433)
  • 13.8. Argumenty z linii wywołania programu (440)
  • 13.9. Ćwiczenia (443)

14. Wskaźniki do funkcji (445)

  • 14.1. Wskaźnik, który może wskazywać na funkcję (445)
  • 14.2. Ćwiczenia z definiowania wskaźników do funkcji (448)
  • 14.3. Wskaźnik do funkcji jako argument innej funkcji (454)
  • 14.4. Tablica wskaźników do funkcji (458)
  • 14.5. Użycie deklaracji using i typedef w świecie wskaźników (463)

    14.5.1. Alias przydatny w argumencie funkcji (463)

    14.5.2. Alias przydatny w definicji tablicy wskaźników do funkcji (464)

  • 14.6. Użycie auto lub decltype do automatycznego rozpoznania potrzebnego typu (465)
  • 14.7. Ćwiczenia (467)

Skorowidz (1603)

Гарантии

  • Гарантии

    Мы работаем по договору оферты и предоставляем все необходимые документы.

  • Лёгкий возврат

    Если товар не подошёл или не соответсвует описанию, мы поможем вернуть его.

  • Безопасная оплата

    Банковской картой, электронными деньгами, наличными в офисе или на расчётный счёт.

Отзывы о товаре

Рейтинг товара 4.96 / 5

149 отзывов

Russian English Polish