"0x80 zadań z C i C++" jest podręcznikiem programowania w językach ISO C '99 oraz ISO C++ '03 w formie zbioru zadań. 0x80 oznacza w tych językach liczbę 128 w zapisie szesnastkowym. Z tylu właśnie problemów programistycznych (zadań) składa się podręcznik. Rozwiązanie każdego zadania jest bardzo obszernie omówione, niejednokrotnie dyskutuje się kilka różnych strategii rozwiązania problemu, porównując na przykład algorytm szybszy, ale o większym zapotrzebowaniu na pamięć komputera, z rozwiązaniem o większej złożoności obliczeniowej, ale mniejszej pamięciowej. Podręcznik powstał na bazie wieloletniego doświadczenia autora w nauczaniu programowania w Instytucie Matematyki Uniwersytu Śląskiego.
Warto zwrócić uwagę na kilka cech odróżniających ten podręcznik od innych dostępnych na rynku. Po pierwsze, książka omawia najbardziej aktualne (w chwili wydania) wersje języków programowania, zgodne ze standardami międzynarodowymi, to jest ISO C '99 oraz ISO C++ '03. Po drugie, podręcznik obejmuje bardzo szeroki zakres materiału — nie ogranicza się jedynie do podstaw omawianych języków, ale zahacza też o bardziej zaawansowane zagadnienia, takie jak: dynamiczne struktury danych, hermetyzacja, zarządzanie pamięcią, liczniki referencji, wykorzystanie wzorców, metaprogramowanie i wiele innych. Zadania w zbiorze występują na czterech różnych poziomach. Oprócz zadań standardowych, pojawiają się zadania łatwiejsze przeznaczone dla początkujących programistów; zadania bardziej zaawansowane w których czytelnik zetknie się m.in. z takimi zagadnieniami jak L-systemy, boidy czy filtry splotowe. Czwartą kategorią są zadania "hackerskie", które eksploatują niestandardowe, mało znane (i często niezalecane, co jest wyraźnie podkreślone w tekście książki) aspekty języków C i C++. Kolejną unikalną cechą tego podręcznika jest to, iż poszczególne zadania są ze sobą powiązane, i tak przykładowo w zadaniu 0x1A omawiana jest implementacja liczb całkowitych 256-bitowych w C, w zadaniu 0x29 problem jest rozszerzony na arytmetykę wielomianową (nadal w C), po to by w zadaniu 0x50 zaimplementować (teraz już w C++) arytmetykę dowolnej precyzji zaś w 0x56 dowolne wyrażenia arytmetyczne. Warto też nadmienić, że zadania nie ograniczają się jedynie do napisania programu lub funkcji. W części zadań należy uzupełnić podany kod nie naruszając istniejącej struktury (czyli zrobić dokładnie to z czym programiści wielokrotnie zetkną się w pracy zawodowej funkcjonując w ramach zespołu). W innych zadaniach należy przeprowadzić analizę programu, bądź też znaleźć i poprawić błędy w gotowym kodzie.
Spis treści | i |
Przedmowa | iii |
I ISO C 99 Zadania | 1 |
---|---|
1 Początki | 3 |
2 Zmienne, operatory i sterowanie | 5 |
3 Tablice i wskaźniki | 9 |
4 Struktury, unie, tablice | 13 |
5 Dynamiczne struktury danych | 17 |
6 Zadania różne | 21 |
II ISO C 99 Rozwiązania | 25 |
1 Początki | 27 |
2 Zmienne, operatory i sterowanie | 39 |
3 Tablice i wskaźniki | 55 |
4 Struktury, unie, tablice | 73 |
5 Dynamiczne struktury danych | 97 |
6 Zadania różne | 123 |
III ISO C++ 03 Zadania | 165 |
1 Klasy i operatory | 167 |
2 Konstrukcja i destrukcja | 173 |
3 Dziedziczenie i wzorce | 179 |
4 Biblioteka standardowa: kontenery | 183 |
5 Biblioteka standardowa: algorytmy | 187 |
6 Zadania różne | 193 |
IV ISO C++ 03 Rozwiązania | 201 |
1 Klasy i operatory | 203 |
2 Konstrukcja i destrukcja | 229 |
3 Dziedziczenie i wzorce | 271 |
4 Biblioteka standardowa: kontenery | 307 |
5 Biblioteka standardowa: algorytmy | 337 |
6 Zadania różne | 359 |
Bibliografia | 393 |
Książka jest dostępna bezpośrednio w wydawnictwie Exit jak także w wybranych księgarniach interentowych.