Znajdz blad Sztuka analizowania kodu.pdf

(463 KB) Pobierz
Znajdź błąd. Sztuka analizowania kodu
IDZ DO
PRZYK£ADOW Y ROZDZIA£
Znajd b³¹d. Sztuka
SPIS TRECI
analizowania kodu
KATALOG KSI¥¯EK
Autor: Adam Barr
T³umaczenie: Bart³omiej Garbacz
ISBN: 83-7361-855-4
Format: B5, stron: 288
KATALOG ONLINE
ZAMÓW DRUKOWANY KATALOG
TWÓJ KOSZYK
DODAJ DO KOSZYKA
Wyszukiwanie b³êdów w kodzie to czynnoæ, któr¹ programici wykonuj¹ niemal
równie czêsto, jak pisanie kodu. Narzêdzia do wykrywania i poprawiania b³êdów tylko
czêciowo rozwi¹zuj¹ problem. W wielu przypadkach b³¹d nie tkwi w nieprawid³owo
sformu³owanym poleceniu lub le zdefiniowanej zmiennej, ale w miejscu, którego nawet
najlepsze narzêdzie nie znajdzie. Programista musi siê nauczyæ samemu broniæ przed
ukrytymi pomy³kami i nieprzyjemnymi niespodziankami. B³êdy trzeba znaleæ, zanim
one znajd¹ nas.
Ksi¹¿ka „Znajd b³¹d. Sztuka analizowania kodu” to zbiór 50 programów napisanych
w jêzykach Perl, C, Java, Python i asembler x86. Ka¿dy z nich zawiera jeden, trudny
do znalezienia, ale jak najbardziej realistyczny b³¹d. Wykrycie go wymaga przewidzenia
sposobu, w jaki program bêdzie wykonywany, i przeledzenia krok po kroku jego
dzia³ania. Ka¿dy przyk³ad opatrzony jest wskazówkami pomocnymi przy wyszukiwaniu
b³êdów. Ksi¹¿ka przedstawia sposoby analizowania programów i przewidywania miejsc,
w których mo¿e wyst¹piæ b³¹d.
• Klasyfikacja b³êdów
• Metody analizy kodu
• B³êdy w programach w jêzyku C
• Analiza aplikacji napisanych w jêzyku Python
• Wyszukiwanie b³êdów w programach w jêzyku Java
• Programy w jêzyku Perl i asembler x86
Wykonuj¹c zadania zawarte w tej ksi¹¿ce, nie tylko nauczysz siê odnajdywaæ b³êdy,
ale tak¿e udoskonalisz swoje umiejêtnoci w zakresie pisania aplikacji
CENNIK I INFORMACJE
ZAMÓW INFORMACJE
O NOWOCIACH
ZAMÓW CENNIK
CZYTELNIA
FRAGMENTY KSI¥¯EK ONLINE
Wydawnictwo Helion
ul. Chopina 6
44-100 Gliwice
tel. (32)230-98-63
e-mail: helion@helion.pl
319815136.002.png 319815136.003.png 319815136.004.png 319815136.005.png
Spis treci
O Autorze .........................................................................................9
Wstp ............................................................................................11
Rozdział 1. Klasyfikacja błdów ........................................................................17
Rozdział 2. Wskazówki dotycz"ce analizy kodu .................................................19
Podział kodu na sekcje o okrelonych celach działania ..................................................20
Identyfikacja sekcji w kodzie ...................................................................................21
Identyfikacja celów działania kadej sekcji .............................................................22
Komentarze ..............................................................................................................23
Identyfikacja znaczenia kadej zmiennej .......................................................................24
Nazwy zmiennych ....................................................................................................24
Okrelenie sposobów uycia kadej zmiennej .........................................................24
Zmienne ograniczone ...............................................................................................26
Warunki niezmiennicze ............................................................................................27
,ledzenie zmian zmiennych ograniczonych .............................................................28
Wyszukanie znanych pułapek ........................................................................................28
Liczniki p/tli ............................................................................................................28
Wyraenia wyst/puj0ce po lewej oraz po prawej stronie instrukcji przypisania ........30
Sprawdzenie operacji sprz/onych ...........................................................................30
Wywołania funkcji ...................................................................................................31
Wartoci zwracane ...................................................................................................32
Kod podobny do istniej0cego bł/du .........................................................................33
Wybór danych wejciowych dla celów analizy działania ...............................................33
Pokrycie kodu ..........................................................................................................35
Puste dane wejciowe ...............................................................................................36
Banalne dane wejciowe ..........................................................................................37
Gotowe dane wejciowe ...........................................................................................38
Bł/dne dane wejciowe ............................................................................................38
P/tle .........................................................................................................................39
Liczby losowe ..........................................................................................................39
Analiza działania kadej sekcji kodu ..............................................................................40
,ledzenie wartoci zmiennych .................................................................................41
Układ kodu ...............................................................................................................41
P/tle .........................................................................................................................43
Podsumowanie ...............................................................................................................44
319815136.001.png
6
Spis treci
Rozdział 3. C ....................................................................................................45
Krótkie omówienie j/zyka C ..........................................................................................45
Typy danych i zmienne ............................................................................................45
Ci0gi znaków ............................................................................................................47
Wska:niki ................................................................................................................47
Struktury ..................................................................................................................48
Instrukcje warunkowe ..............................................................................................49
P/tle .........................................................................................................................50
Funkcje .....................................................................................................................51
Sortowanie przez wybieranie ..........................................................................................51
Wstawianie pozycji na licie jednokierunkowej .............................................................54
Usuwanie pozycji z listy jednokierunkowej ...................................................................57
Kopiowanie obszaru pami/ci ..........................................................................................60
Rozkład ci0gu znaków na podci0gi ................................................................................63
Mechanizm przydzielania pami/ci .................................................................................66
Zwalnianie pami/ci ........................................................................................................69
Rekurencyjne odwracanie zdania ...................................................................................72
Okrelanie wszystkich moliwych tras ...........................................................................76
Znak cofania w alfabecie Kanji ......................................................................................78
Rozdział 4. Python ...........................................................................................83
Krótkie omówienie j/zyka Python .................................................................................83
Typy danych i zmienne ............................................................................................83
Ci0gi znaków ............................................................................................................84
Listy i krotki .............................................................................................................85
Słowniki ...................................................................................................................87
Instrukcje warunkowe ..............................................................................................88
P/tle .........................................................................................................................88
Funkcje .....................................................................................................................89
Klasy ........................................................................................................................89
Wyj0tki .....................................................................................................................90
Importowanie kodu ..................................................................................................91
Dane wyjciowe .......................................................................................................91
Okrelanie liczby pierwszej ............................................................................................91
Znajdowanie podci0gu ...................................................................................................93
Sortowanie alfabetyczne wyrazów .................................................................................95
Kodowanie ci0gów znaków za pomoc0 tablicy znaków .................................................97
Wywietlanie miesi0ca i dnia .......................................................................................100
Gra „Go Fish”, cz/B I: pobieranie karty z talii ............................................................102
Gra „Go Fish”, cz/B II: sprawdzenie posiadania karty przez drug0 r/k/ ....................105
Gra „Go Fish”, cz/B III: pełna gra ..............................................................................108
Analiza składniowa liczb zapisanych w j/zyku angielskim ..........................................112
Przypisywanie prezentów do obdarowywanych ...........................................................115
Rozdział 5. Java .............................................................................................119
Krótkie omówienie j/zyka Java ....................................................................................119
Typy danych i zmienne ..........................................................................................119
Ci0gi znaków (i obiekty) ........................................................................................120
Tablice ....................................................................................................................122
Instrukcje warunkowe ............................................................................................124
P/tle .......................................................................................................................124
Klasy ......................................................................................................................125
Wyj0tki ...................................................................................................................127
Importowanie kodu ................................................................................................128
Aplikacje wiersza poleceH i aplety .........................................................................129
Spis treci
7
Okrelanie roku przest/pnego ......................................................................................129
Konwersja liczby na tekst .............................................................................................132
Rysowanie trójk0ta na ekranie, cz/B I .........................................................................135
Rysowanie trójk0ta na ekranie, cz/B II ........................................................................139
Odwracanie listy jednokierunkowej .............................................................................141
Sprawdzenie, czy lista zawiera p/tl/ ............................................................................143
Sortowanie szybkie .......................................................................................................146
Gra Pong, cz/B I ..........................................................................................................149
Gra Pong, cz/B II ........................................................................................................153
Obliczanie wyników w grze w kr/gle ............................................................................156
Rozdział 6. Perl ..............................................................................................161
Krótkie omówienie j/zyka Perl ....................................................................................161
Typy danych i zmienne ..........................................................................................161
Ci0gi znaków ..........................................................................................................162
Listy .......................................................................................................................163
Skróty .....................................................................................................................165
Warunki logiczne ...................................................................................................165
P/tle .......................................................................................................................167
Podprogramy ..........................................................................................................168
Kontekst skalarny i listowy ....................................................................................168
Uchwyty plików .....................................................................................................169
Wyraenia regularne ..............................................................................................170
Dane wyjciowe .....................................................................................................171
Parametry wywołania z wiersza poleceH ................................................................171
Sortowanie pliku według długoci wierszy ..................................................................172
Wywietlanie czynników pierwszych liczby ................................................................174
Rozwijanie znaków tabulacji ........................................................................................176
Prosta baza danych .......................................................................................................178
Znajdowanie powtarzaj0cej si/ cz/ci ułamka ..............................................................181
Rozszerzanie listy plików z wci/ciami na pełne cieki dost/pu .................................183
Sortowanie wszystkich plików w drzewie struktury katalogów ...................................186
Obliczanie rednich ocen z testów ................................................................................189
Sortowanie przez scalanie wielu plików .......................................................................192
Gra Mastermind ............................................................................................................195
Rozdział 7. Jzyk asemblera x86 ....................................................................201
Krótkie omówienie j/zyka asemblera x86 ....................................................................201
Typy danych i zmienne ..........................................................................................201
Operacje arytmetyczne ...........................................................................................204
Znaczniki, warunki i skoki .....................................................................................206
P/tle .......................................................................................................................208
Procedury ...............................................................................................................210
Wyjcie ..................................................................................................................213
Reszta z dolara .............................................................................................................213
Mnoenie dwóch liczb przy uyciu operacji przesuni/cia ............................................215
Zł0czanie ci0gów znaków z separatorem ......................................................................217
Obliczanie wartoci ci0gu Fibonacciego ......................................................................220
Sprawdzanie, czy dwa wyrazy s0 anagramami .............................................................222
Konwersja 64-bitowej liczby na ci0g znaków z jej zapisem dziesi/tnym .....................226
Suma wartoci w tablicy liczb ze znakiem ...................................................................230
Gra symulacyjna Kycie .................................................................................................234
Sprawdzenie dopasowania nawiasów w kodzie :ródłowym .........................................238
Sortowanie przez zamian/ w podstawie .......................................................................242
8
Spis treci
Dodatek A Klasyfikacja błdów ......................................................................247
Składnia a semantyka ...................................................................................................248
Klasyfikacja uywana w ksi0ce ..................................................................................249
A — Algorytm .............................................................................................................251
A.przesuni/cie-o-jeden ...........................................................................................251
A.logika ..................................................................................................................252
A.walidacja ............................................................................................................253
A.wydajnoB ...........................................................................................................255
D — Dane ....................................................................................................................255
D.indeks .................................................................................................................255
D.limit ....................................................................................................................256
D.liczba ..................................................................................................................257
D.pami/B ................................................................................................................259
Z — Zapomniane .........................................................................................................261
Z.inicjalizacja .........................................................................................................261
Z.pomini/cie ..........................................................................................................262
Z.lokalizacja ...........................................................................................................263
P — Pomyłka ...............................................................................................................264
P.zmienna ...............................................................................................................264
P.wyraenie ............................................................................................................265
P.j/zyk ....................................................................................................................266
Podsumowanie .............................................................................................................267
Dodatek B Indeks błdów według typu ...........................................................269
Dodatek C Materiały 6ródłowe ........................................................................273
Klasyfikacja bł/dów .....................................................................................................273
Ogólne pozycje powi/cone typom bł/dów .................................................................274
C ...................................................................................................................................274
Python ..........................................................................................................................275
Java ...............................................................................................................................275
Perl ...............................................................................................................................275
J/zyk asemblera x86 .....................................................................................................275
Skorowidz .....................................................................................277
Zgłoś jeśli naruszono regulamin