Spis treści - Helion Edukacja
Transkrypt
Spis treści - Helion Edukacja
Spis treści Wstęp 7 Rozdział 1. Wprowadzenie do algorytmiki 9 1.1. Pojęcie algorytmu 9 1.2. Etapy rozwiązywania zadań za pomocą komputera 10 1.3. Sposoby reprezentowania algorytmów 1.3.1. Lista kroków algorytmu 1.3.2. Schemat blokowy algorytmu 1.3.3. Drzewo algorytmu 1.3.4. Program w języku programowania wysokiego poziomu 11 11 13 14 15 1.4. Algorytmy liniowe i z warunkami 1.4.1. Algorytmy liniowe 1.4.2. Algorytmy z warunkami 1.4.3. Rozwiązywanie równania kwadratowego 16 16 18 21 1.5. Iteracja 28 1.6. Rekurencja 1.6.1. Obliczanie silni liczby naturalnej 1.6.2. Wyznaczanie wyrazów ciągu Fibonacciego 1.6.3. Wieże Hanoi 36 37 39 43 1.7. Metoda „dziel i zwyciężaj” 1.7.1. Przeszukiwanie binarne ciągu uporządkowanego 47 47 1.8. Programowanie zachłanne 1.8.1. Minimalizacja łączenia par 50 50 1.9. Kryptografia i kryptoanaliza. Metody szyfrowania 53 1.10. Własności algorytmów 1.10.1. Złożoność obliczeniowa i efektywność algorytmów 1.10.2. Poprawność i skończoność algorytmów 1.10.3. Optymalność algorytmów 55 55 57 58 Rozdział 2. Algorytmy i ich zastosowanie 61 2.1. Algorytmy badające własności geometryczne 61 2.2. Wyznaczanie największego wspólnego dzielnika i najmniejszej wspólnej wielokrotności dwóch liczb naturalnych 2.2.1. Algorytm Euklidesa 2.2.2. Obliczanie najmniejszej wspólnej wielokrotności 66 66 71 Spis treści 3 2.3. Wyznaczanie wartości wielomianu, pozycyjne systemy liczbowe i reprezentacja danych liczbowych w komputerze 2.3.1. Systemy liczbowe 2.3.2. Konwersje pozycyjnych systemów liczbowych 2.3.3. Operacje arytmetyczne wykonywane w różnych systemach liczbowych 2.3.4. Wyznaczanie wartości wielomianu za pomocą schematu Hornera 2.3.5. Zamiana liczb z dowolnego pozycyjnego systemu liczbowego na system dziesiętny z zastosowaniem schematu Hornera 2.3.6. Reprezentacja danych liczbowych w komputerze 2.3.7. Błędy w obliczeniach 4 72 72 74 80 84 87 89 94 2.4. Generowanie liczb pierwszych i badanie, czy liczba jest pierwsza 2.4.1. Badanie, czy liczba jest pierwsza 2.4.2. Sito Eratostenesa 98 98 100 2.5. Przeszukiwanie ciągu liczbowego — metody liniowe 2.5.1. Liniowe przeszukiwanie ciągu liczbowego 2.5.2. Liniowe przeszukiwanie ciągu liczbowego z wartownikiem 104 104 108 2.6. Znajdowanie minimalnego lub maksymalnego elementu 110 2.7. Znajdowanie lidera w zbiorze 113 2.8. Sprawdzanie monotoniczności ciągu liczbowego 117 2.9. Sortowanie ciągu liczbowego 2.9.1. Metody sortowania przez porównania 2.9.2. Sortowanie w czasie liniowym 119 121 130 2.10. Zastosowanie metody „dziel i zwyciężaj” 2.10.1. Jednoczesne znajdowanie minimalnego i maksymalnego elementu 2.10.2. Sortowanie przez scalanie 2.10.3. Sortowanie szybkie 135 135 140 145 2.11. Metody numeryczne i obliczenia przybliżone 2.11.1. Obliczanie wartości pierwiastka kwadratowego z liczby nieujemnej — algorytm Newtona-Raphsona 2.11.2. Obliczanie pola obszaru ograniczonego wykresem funkcji 2.11.3. Znajdowanie przybliżonej wartości miejsca zerowego funkcji — metoda połowienia przedziałów 149 2.12. Zastosowanie programowania zachłannego 2.12.1. Problem plecakowy 2.12.2. Algorytm wydawania reszty 164 164 173 Spis treści 149 152 160 2.13. Algorytmy na tekstach 2.13.1. Palindromy 2.13.2. Sortowanie tekstu 2.13.3. Anagramy 2.13.4. Wyszukiwanie wzorca w tekście 2.13.5. Wyznaczanie wartości wyrażenia zapisanego w odwrotnej notacji polskiej ONP 175 175 177 179 182 2.14. Wybrane algorytmy kryptograficzne 2.14.1. Szyfrowanie symetryczne 2.14.2. Szyfrowanie asymetryczne 189 189 200 Rozdział 3. Programowanie w języku C++ 186 203 3.1. Języki programowania — pojęcia, klasyfikacja, przykłady 203 3.2. Wprowadzenie do programowania 3.2.1. Struktura programu 3.2.2. Operacje wejścia-wyjścia 3.2.3. Zmienne, stałe, wskaźniki i referencje 3.2.4. Wyrażenia arytmetyczne, relacje i operatory logiczne 3.2.5. Priorytety relacji i działań 3.2.6. Funkcje matematyczne 3.2.7. Liczby losowe 3.2.8. Komentarze 205 206 209 214 217 223 224 225 226 3.3. Podstawowe konstrukcje algorytmiczne 3.3.1. Instrukcja przypisania 3.3.2. Instrukcja złożona 3.3.3. Instrukcje warunkowe 3.3.4. Instrukcja wyboru 3.3.5. Instrukcje iteracyjne 3.3.6. Instrukcje sterujące 226 226 227 227 230 233 238 3.4. Proste typy danych 240 3.5. Strukturalizacja programu 3.5.1. Struktura funkcji 3.5.2. Zmienne lokalne i globalne 3.5.3. Przekazywanie parametrów w funkcjach 3.5.4. Przeładowanie funkcji 241 241 244 245 252 3.6. Strukturalne typy danych 3.6.1. Tablice 3.6.2. Łańcuchy 3.6.3. Struktury 257 257 265 271 Spis treści 5 3.7. Dynamiczne struktury danych 3.7.1. Stos 3.7.2. Kolejka 3.7.3. Lista 3.7.4. Drzewo binarne 276 277 278 279 282 3.8. Plikowe operacje wejścia-wyjścia 285 Rozdział 4. Projekt programistyczny 4.1. Inżynieria oprogramowania Model kaskadowy Agile Scrum 291 291 292 293 4.2. Projekt programistyczny 293 Bibliografia 295 CD-ROM 296 Skorowidz 6 291 Spis treści 297