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