Myśl jak programista. Techniki kreatywnego rozwiązywania problemów - ebook
Myśl jak programista. Techniki kreatywnego rozwiązywania problemów - ebook
Znajdź wyjście z najtrudniejszych sytuacji!
Nauka programowania to tak naprawdę nauka sposobu myślenia. Jako programista musisz biegle analizować problemy, dzielić je na części oraz starać się je rozwiązać w optymalny sposób. Składnia języka i środowisko programistyczne to tylko podstawowe narzędzia, których obsługi nauczyć się może każdy. Jednak nie każdy potrafi myśleć jak programista.
Recenzja książki na Forbot.pl >>
Dzięki tej książce masz szansę zostać profesjonalistą! W trakcie lektury poznasz najlepsze sposoby rozwiązywania problemów, opanujesz rekurencję i przekonasz się, że wcale nie jest ona taka straszna. Zobaczysz również, jak tworzyć kod nadający się do ponownego użycia, i opanujesz zagadnienia z obszaru programowania obiektowego. Przykłady w tej książce zostały napisane w języku C++, ale nie stanowi to bariery, żeby przenieść te idee na inne języki programowania. Warto poświęcić tej książce parę wieczorów i zmienić swój sposób patrzenia na programowanie!
Poznaj:
- strategie rozwiązywania problemów
- sposoby rozwiązywania problemów za pomocą rekurencji
- korzyści z wykorzystania wskaźników i pamięci dynamicznej
- metody zdobywania nowych umiejętności programistycznych
Opanuj sztukę myślenia jak programista!
Spis treści
Podziękowania (7)
Wstęp (9)
- O książce (11)
- Wymagania wstępne (11)
- Wybrane zagadnienia (12)
- Styl programowania (12)
- Ćwiczenia (12)
- Dlaczego C++? (13)
1. Strategie rozwiązywania problemów (15)
- Klasyczne łamigłówki (17)
- Lis, gęś i kukurydza (17)
- Łamigłówki z przesuwanymi elementami (22)
- Sudoku (26)
- Zamek Quarrasi (30)
- Ogólne techniki rozwiązywania problemów (32)
- Miej zawsze jakiś plan (32)
- Ponownie zaprezentuj problem (33)
- Podziel problem (34)
- Rozpocznij z wiedzą, którą posiadasz (35)
- Uprość problem (36)
- Szukaj analogii (37)
- Eksperymentuj (38)
- Nie popadaj we frustrację (38)
- Ćwiczenia (40)
2. Prawdziwe łamigłówki (41)
- Elementy języka C++ wykorzystywane w tym rozdziale (42)
- Tworzenie wzorów na wyjściu (42)
- Przetwarzanie danych wejściowych (48)
- Analiza problemu (49)
- Łączenie wszystkich elementów w całość (58)
- Śledzenie stanu (60)
- Podsumowanie (73)
- Ćwiczenia (74)
3. Rozwiązywanie problemów za pomocą tablic (77)
- Podstawowe informacje o tablicach (78)
- Przechowywanie danych (79)
- Kopiowanie (79)
- Odczytywanie i przeszukiwanie (80)
- Sortowanie (81)
- Obliczenia statystyczne (84)
- Rozwiązywanie problemów za pomocą tablic (85)
- Optymalizacja (89)
- Tablice ze stałymi wartościami (91)
- Tablice z wartościami nieskalarnymi (94)
- Tablice wielowymiarowe (96)
- Kiedy należy używać tablic (99)
- Ćwiczenia (104)
4. Rozwiązywanie problemów za pomocą wskaźników i pamięci dynamicznej (107)
- Podstawowe informacje o wskaźnikach (108)
- Korzyści z używania wskaźników (109)
- Struktury danych o wielkości definiowanej w trakcie działania programu (109)
- Struktury danych o zmiennych rozmiarach (110)
- Współdzielenie pamięci (110)
- Kiedy należy używać wskaźników? (111)
- Pamięć ma znaczenie (112)
- Stos i sterta (113)
- Rozmiar pamięci (116)
- Czas życia (118)
- Rozwiązywanie problemów za pomocą wskaźników (119)
- Łańcuchy o zmiennej długości (119)
- Listy powiązane (130)
- Wnioski i następne działania (139)
- Ćwiczenia (139)
5. Rozwiązywanie problemów za pomocą klas (143)
- Przegląd podstawowych informacji o klasach (144)
- Cele użycia klas (146)
- Enkapsulacja (146)
- Ponowne użycie kodu (147)
- Dzielenie problemu (147)
- Hermetyzacja (148)
- Czytelność (150)
- Wyrazistość (150)
- Tworzenie przykładowej klasy (151)
- Podstawowy schemat klasy (152)
- Metody wspierające (156)
- Klasy z danymi dynamicznymi (160)
- Dodawanie węzła (162)
- Reorganizacja listy (165)
- Destruktor (169)
- Kopiowanie głębokie (170)
- Obraz całości dla klas z pamięcią dynamiczną (175)
- Błędy, jakich należy unikać (176)
- Klasa fikcyjna (176)
- Jednozadaniowce (177)
- Ćwiczenia (178)
6. Rozwiązywanie problemów za pomocą rekurencji (181)
- Przegląd podstawowych informacji o rekurencji (182)
- Rekurencja nieogonowa i ogonowa (182)
- Wielki Pomysł Rekurencyjny (191)
- Często popełniane błędy (194)
- Zbyt wiele parametrów (195)
- Zmienne globalne (196)
- Używanie rekurencji w dynamicznych strukturach danych (198)
- Rekurencja i listy powiązane (198)
- Rekurencja i drzewa binarne (201)
- Funkcje opakowujące (204)
- Kiedy należy wybierać rekurencję? (207)
- Argumenty przeciwko rekurencji (207)
- Ćwiczenia (211)
7. Rozwiązywanie problemów za pomocą ponownego wykorzystania kodu (213)
- Poprawne i niewłaściwe wykorzystanie kodu (214)
- Przegląd podstawowych informacji o komponentach (215)
- Blok kodu (215)
- Algorytmy (216)
- Wzorce (216)
- Abstrakcyjne typy danych (217)
- Biblioteki (218)
- Zdobywanie wiedzy o komponentach (219)
- Eksploracyjne zdobywanie wiedzy (219)
- Zdobywanie wiedzy w razie potrzeby (223)
- Wybór typu komponentu (232)
- Wybór komponentu w praktyce (234)
- Porównanie wyników (238)
- Ćwiczenia (239)
8. Myślenie jak programista (241)
- Tworzenie własnego planu głównego (242)
- Uwzględnienie mocnych i słabych stron (242)
- Budowanie planu głównego (248)
- Rozwiązywanie każdego problemu (250)
- Opracowywanie metody oszukiwania (252)
- Wymagane podzadania dla metody oszukiwania w grze wisielec (254)
- Wstępny projekt (256)
- Kodowanie wstępne (257)
- Analiza wstępnych wyników (266)
- Sztuka rozwiązywania problemów (267)
- Zdobywanie nowych umiejętności programistycznych (268)
- Nowe języki (269)
- Zdobywanie nowych umiejętności w języku, który już znasz (271)
- Nowe biblioteki (272)
- Bierz udział w szkoleniach (273)
- Podsumowanie (274)
- Ćwiczenia (275)
Skorowidz (276)
Kategoria: | Programowanie |
Zabezpieczenie: |
Watermark
|
ISBN: | 978-83-246-7286-8 |
Rozmiar pliku: | 3,6 MB |