Nowoczesny C++. Zbiór praktycznych zadań dla przyszłych ekspertów - ebook
Nowoczesny C++. Zbiór praktycznych zadań dla przyszłych ekspertów - ebook
C++ jest dojrzałym językiem programowania, od wielu lat wykorzystywanym przez profesjonalnych programistów do wielu różnych zastosowań, włączając w to pisanie gier, programowanie GUI czy tworzenie złożonych aplikacji użytkowych. Zaprojektowano go pod kątem maksymalizowania wydajności, jest więc najczęściej wybieranym językiem w sytuacjach, w których najważniejsza jest efektywność działania kodu. Aby jednak wykorzystać te zalety C++, trzeba nauczyć się nim posługiwać. A biegłość w posługiwaniu się językiem programowania przychodzi dzięki regularnym ćwiczeniom i ciągłemu testowaniu nabytych umiejętności. Innymi słowy, trzeba rozwiązywać jak najwięcej różnorodnych, rzeczywistych i praktycznych zadań problemowych.
W tej książce zawarto zestaw 100 zadań o różnym poziomie trudności, ułożonych w taki sposób, aby podczas rozwiązywania móc skorzystać z bogactwa standardowej biblioteki C++ oraz z wielu zewnętrznych bibliotek wieloplatformowych. Zadania rozmieszczono w 12 rozdziałach, z których każdy dotyczy określonego tematu. Są to problemy, których odpowiednie rozwiązanie warunkuje poprawne działanie aplikacji, takie jak bezpieczna komunikacja, szyfrowanie i autoryzacja danych, korzystanie z wątków i funkcji asynchronicznych czy implementacja algorytmów współbieżnych. Proponowane zagadnienia zostały dokładnie opisane, uwzględniono również szereg zaleceń, wyjaśnień i wskazówek. Na wypadek gdyby wykonanie któregoś zadania sprawiało trudności, do książki dołączono kod źródłowy przykładowych rozwiązań.
Ważniejsze zagadnienia ujęte w książce:
- serializacja i deserializacja danych JSON i XML
- praca z bazą danych SQLite
- implementacja takich struktur jak bufor cykliczny i kolejka priorytetowa
- usługi REST i HTTP
- wzorce projektowe w rozwiązywaniu problemów
Oto C++. Podejmiesz wyzwanie i napiszesz kod!
Spis treści
O autorze 9
O recenzentach 10
Przedmowa 11
Rozdział 1. Zadania matematyczne 19
- Zadania 19
- 1. Suma liczb naturalnych podzielnych przez 3 lub 5 19
- 2. Największy wspólny dzielnik 19
- 3. Najmniejsza wspólna wielokrotność 19
- 4. Największa liczba pierwsza mniejsza od podanej 19
- 5. Liczby pierwsze szóstkowe 19
- 6. Liczby obfite 20
- 7. Liczby zaprzyjaźnione 20
- 8. Liczby Armstronga 20
- 9. Czynniki pierwsze liczby 20
- 10. Kod Graya 20
- 11. Przekształcanie liczb arabskich na rzymskie 20
- 12. Najdłuższy ciąg Collatza 20
- 13. Wyznaczanie liczby Pi 20
- 14. Sprawdzanie numerów ISBN 20
- Rozwiązania 21
- 1. Suma liczb naturalnych podzielnych przez 3 lub 5 21
- 2. Największy wspólny dzielnik 21
- 3. Najmniejsza wspólna wielokrotność 22
- 4. Największa liczba pierwsza mniejsza od podanej 23
- 5. Liczby pierwsze szóstkowe 24
- 6. Liczby obfite 24
- 7. Liczby zaprzyjaźnione 25
- 8. Liczby Armstronga 26
- 9. Czynniki pierwsze liczby 27
- 10. Kod Graya 28
- 11. Przekształcanie liczb arabskich na rzymskie 29
- 12. Najdłuższy ciąg Collatza 31
- 13. Wyznaczanie liczby Pi 32
- 14. Sprawdzanie numerów ISBN 33
Rozdział 2. Funkcje języka 35
- Zadania 35
- 15. Typ danych IPv4 35
- 16. Wyliczanie zakresu adresów IPv4 35
- 17. Utworzenie dwuwymiarowej tablicy z podstawowymi operacjami 35
- 18. Funkcja wyznaczająca minimum dla dowolnej liczby argumentów 36
- 19. Dodawanie zakresu wartości do kontenera 36
- 20. Dowolny, wszystkie lub żaden argument w kontenerze 36
- 21. Klasa opakowująca dla uchwytu systemowego 36
- 22. Wyświetlanie różnych skal temperatur 36
- Rozwiązania 37
- 15. Typ danych IPv4 37
- 16. Wyliczanie zakresu adresów IPv4 38
- 17. Utworzenie dwuwymiarowej tablicy z podstawowymi operacjami 40
- 18. Funkcja wyznaczająca minimum dla dowolnej liczby argumentów 42
- 19. Dodawanie zakresu wartości do kontenera 43
- 20. Dowolny, wszystkie lub żaden argument w kontenerze 44
- 21. Klasa opakowująca dla uchwytu systemowego 45
- 22. Wyświetlanie różnych skal temperatur 49
Rozdział 3. Łańcuchy i wyrażenia regularne 53
- Zadania 53
- 23. Zamiana typu binarnego na łańcuch 53
- 24. Zamiana typu łańcuchowego na binarny 53
- 25. Wielkie litery w tytule artykułu 54
- 26. Łączenie łańcuchów oddzielanych separatorem 54
- 27. Dzielenie łańcucha na tokeny z listą możliwych separatorów 54
- 28. Najdłuższy podciąg palindromiczny 54
- 29. Sprawdzanie tablic rejestracyjnych 54
- 30. Wyodrębnianie elementów adresu URL 55
- 31. Przekształcanie dat w łańcuchach 55
- Rozwiązania 56
- 23. Zamiana typu binarnego na łańcuch 56
- 24. Zamiana typu łańcuchowego na binarny 57
- 25. Wielkie litery w tytule artykułu 58
- 26. Łączenie łańcuchów oddzielanych separatorem 59
- 27. Dzielenie łańcucha na tokeny z listą możliwych separatorów 60
- 28. Najdłuższy podciąg palindromiczny 61
- 29. Sprawdzanie tablic rejestracyjnych 63
- 30. Wyodrębnianie elementów adresu URL 64
- 31. Przekształcanie dat w łańcuchach 65
Rozdział 4. Strumienie i systemy plików 67
- Zadania 67
- 32. Trójkąt Pascala 67
- 33. Lista procesów w postaci tabeli 67
- 34. Usuwanie pustych wierszy z pliku tekstowego 68
- 35. Obliczanie rozmiaru katalogu 68
- 36. Usuwanie plików starszych od określonej daty 68
- 37. Wyszukiwanie w katalogu plików, które pasują do wyrażenia regularnego 68
- 38. Tymczasowe pliki logów 68
- Rozwiązania 69
- 32. Trójkąt Pascala 69
- 33. Lista procesów w postaci tabeli 70
- 34. Usuwanie pustych wierszy z pliku tekstowego 72
- 35. Obliczanie rozmiaru katalogu 73
- 36. Usuwanie plików starszych od określonej daty 73
- 37. Wyszukiwanie w katalogu plików, które pasują do wyrażenia regularnego 75
- 38. Tymczasowe pliki logów 76
Rozdział 5. Data i czas 79
- Zadania 79
- 39. Pomiar czasu wykonania funkcji 79
- 40. Liczba dni zawartych między dwiema datami 79
- 41. Dzień tygodnia 79
- 42. Numer dnia i tygodnia w roku 79
- 43. Czasy spotkań dla wielu stref czasowych 80
- 44. Kalendarz miesięczny 80
- Rozwiązania 81
- 39. Pomiar czasu wykonania funkcji 81
- 40. Liczba dni zawartych między dwiema datami 82
- 41. Dzień tygodnia 83
- 42. Numer dnia i tygodnia w roku 83
- 43. Czasy spotkań dla wielu stref czasowych 84
- 44. Kalendarz miesięczny 86
Rozdział 6. Algorytmy i struktury danych 89
- Zadania 89
- 45. Kolejka priorytetowa 89
- 46. Bufor cykliczny 90
- 47. Podwójne buforowanie 90
- 48. Najczęściej występujący element w zbiorze danych 90
- 49. Histogram tekstu 90
- 50. Filtrowanie listy numerów telefonów 91
- 51. Przekształcanie listy numerów telefonów 91
- 52. Generowanie wszystkich permutacji ciągu znaków 91
- 53. Średnia ocena filmów 91
- 54. Algorytm tworzenia par 91
- 55. Algorytm scalania 92
- 56. Algorytm wyboru 92
- 57. Algorytm sortowania 92
- 58. Najkrótsza ścieżka między węzłami 92
- 59. Program Weasel 93
- 60. Gra w życie 93
- Rozwiązania 95
- 45. Kolejka priorytetowa 95
- 46. Bufor cykliczny 97
- 47. Podwójne buforowanie 100
- 48. Najczęściej występujący element w zbiorze danych 102
- 49. Histogram tekstu 103
- 50. Filtrowanie listy numerów telefonów 105
- 51. Przekształcanie listy numerów telefonów 106
- 52. Generowanie wszystkich permutacji ciągu znaków 107
- 53. Średnia ocena filmów 109
- 54. Algorytm tworzenia par 110
- 55. Algorytm scalania 111
- 56. Algorytm wyboru 112
- 57. Algorytm sortowania 113
- 58. Najkrótsza ścieżka między węzłami 116
- 59. Program Weasel 120
- 60. Gra w życie 122
Rozdział 7. Współbieżność 127
- Zadania 127
- 61. Algorytm przekształcania współbieżnego 127
- 62. Algorytmy wyszukiwania współbieżnego minimalnych i maksymalnych elementów w zbiorze przy użyciu wątków 127
- 63. Algorytmy wyszukiwania współbieżnego minimalnych i maksymalnych elementów w zbiorze przy użyciu funkcji asynchronicznych 128
- 64. Algorytm sortowania współbieżnego 128
- 65. Wyświetlanie komunikatów w konsoli w sposób bezpieczny dla wątków 128
- 66. System obsługi klienta 128
- Rozwiązania 129
- 61. Algorytm przekształcania współbieżnego 129
- 62. Algorytmy wyszukiwania współbieżnego minimalnych i maksymalnych elementów w zbiorze przy użyciu wątków 130
- 63. Algorytmy wyszukiwania współbieżnego minimalnych i maksymalnych elementów w zbiorze przy użyciu funkcji asynchronicznych 132
- 64. Algorytm sortowania współbieżnego 134
- 65. Wyświetlanie komunikatów w konsoli w sposób bezpieczny dla wątków 136
- 66. System obsługi klienta 137
Rozdział 8. Wzorce projektowe 141
- Zadania 141
- 67. Sprawdzanie poprawności haseł 141
- 68. Generowanie losowych haseł 141
- 69. Generowanie numerów ubezpieczenia socjalnego 141
- 70. System zatwierdzania 142
- 71. Obserwowany kontener typu wektorowego 142
- 72. Obliczanie ceny zamówienia z rabatami 143
- Rozwiązania 144
- 67. Sprawdzanie poprawności haseł 144
- 68. Generowanie losowych haseł 147
- 69. Generowanie numerów ubezpieczenia socjalnego 151
- 70. System zatwierdzania 155
- 71. Obserwowany kontener typu wektorowego 158
- 72. Obliczanie ceny zamówienia z rabatami 163
Rozdział 9. Serializacja danych 169
- Zadania 169
- 73. Serializacja danych do pliku XML i deserializacja ich z niego 169
- 74. Pobieranie danych z pliku XML przy użyciu języka XPath 170
- 75. Serializacja danych do formatu JSON 170
- 76. Deserializacja danych z formatu JSON 170
- 77. Tworzenie pliku PDF z listą filmów 171
- 78. Tworzenie pliku PDF na podstawie zbioru obrazów 171
- Rozwiązania 172
- 73. Serializacja danych do pliku XML i deserializacja ich z niego 172
- 74. Pobieranie danych z pliku XML przy użyciu języka XPath 175
- 75. Serializacja danych do formatu JSON 177
- 76. Deserializacja danych z formatu JSON 178
- 77. Tworzenie pliku PDF z listą filmów 180
- 78. Tworzenie pliku PDF na podstawie zbioru obrazów 183
Rozdział 10. Archiwa, obrazy i bazy danych 187
- Zadania 187
- 79. Wyszukiwanie plików w archiwum ZIP 187
- 80. Pakowanie plików do archiwum ZIP i wypakowywanie ich z tego archiwum 187
- 81. Pakowanie plików do archiwum ZIP i wypakowywanie ich z tego archiwum z zastosowaniem hasła 188
- 82. Tworzenie pliku PNG z flagą narodową 188
- 83. Tworzenie obrazu PNG zawierającego tekst weryfikacyjny 188
- 84. Generator kodów kreskowych EAN-13 189
- 85. Odczytywanie informacji o filmach z bazy SQLite 189
- 86. Wstawianie w sposób transakcyjny informacji o filmach do bazy danych SQLite 189
- 87. Obsługa multimediów w bazie danych SQLite 190
- Rozwiązania 191
- 79. Wyszukiwanie plików w archiwum ZIP 191
- 80. Pakowanie plików do archiwum ZIP i wypakowywanie ich z tego archiwum 192
- 81. Pakowanie plików do archiwum ZIP i wypakowywanie ich z tego archiwum z zastosowaniem hasła 196
- 82. Tworzenie pliku PNG z flagą narodową 198
- 83. Tworzenie obrazu PNG zawierającego tekst weryfikacyjny 199
- 84. Generator kodów kreskowych EAN-13 202
- 85. Odczytywanie informacji o filmach z bazy SQLite 207
- 86. Wstawianie w sposób transakcyjny informacji o filmach do bazy danych SQLite 212
- 87. Obsługa multimediów w bazie danych SQLite 216
Rozdział 11. Kryptografia 225
- Zadania 225
- 88. Szyfr Cezara 225
- 89. Szyfr Vigenere'a 225
- 90. Kodowanie i dekodowanie base64 225
- 91. Sprawdzanie poprawności uwierzytelniania użytkowników 226
- 92. Wyznaczanie skrótów dla plików 226
- 93. Szyfrowanie i deszyfrowanie plików 226
- 94. Podpisywanie plików 226
- Rozwiązania 227
- 88. Szyfr Cezara 227
- 89. Szyfr Vigenere'a 228
- 90. Kodowanie i dekodowanie base64 231
- 91. Sprawdzanie poprawności uwierzytelniania użytkowników 236
- 92. Wyznaczanie skrótów dla plików 239
- 93. Szyfrowanie i deszyfrowanie plików 240
- 94. Podpisywanie plików 242
Rozdział 12. Praca w sieci i usługi 247
- Zadania 247
- 95. Znajdowanie adresu IP dla hosta 247
- 96. Gra Fizz-Buzz klient-serwer 247
- 97. Kursy wymiany bitcoinów 248
- 98. Pobieranie wiadomości e-mailowych przy użyciu protokołu IMAP 248
- 99. Tłumaczenie tekstu na dowolny język 248
- 100. Wykrywanie twarzy na obrazie 248
- Rozwiązania 249
- 95. Znajdowanie adresu IP dla hosta 249
- 96. Gra Fizz-Buzz klient-serwer 250
- 97. Kursy wymiany bitcoinów 255
- 98. Pobieranie wiadomości e-mailowych przy użyciu protokołu IMAP 258
- 99. Tłumaczenie tekstu na dowolny język 263
- 100. Wykrywanie twarzy na obrazie 267
Bibliografia 277
Skorowidz 281
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-283-5212-4 |
Rozmiar pliku: | 4,2 MB |