Testowanie i poprawianie programu
Znajdź błąd w cudzym programie i wytłumacz, dlaczego twój działa.
Dziury w dętce nie znajduje się wzrokiem. Zanurza się ją w wodzie i patrzy, skąd lecą bąbelki — bo usterka sama z siebie nie jest widoczna, widoczny jest dopiero jej skutek, i to w dobrze dobranych warunkach.
Program ma tak samo. Prawie każdy działa przy danych, które wymyślił jego autor, i prawie każdy psuje się gdzie indziej. Ta lekcja jest o czterech rzeczach: jak powiedzieć z góry, co ma się stać; jak dobrać dane, żeby program pękł; jak znaleźć miejsce usterki, gdy już pęknie; i jak wytłumaczyć, dlaczego twój własny program działa.

Plan tej lekcji
- 01Haczyk5 min
- 02Ćwiczenie5 min
- 03Debugowanie6 min
- 04Wyjaśnienie5 min
- 05Zadanie praktyczne8 min
Powiedz, co ma się stać

Koło narysowano przed strzałem. Dlatego nie da się powiedzieć „no przecież o to mi chodziło”.
Z programem jest tak samo. Jeżeli powiesz, co ma się stać, dopiero po uruchomieniu, twoja głowa dopasuje oczekiwanie do tego, co zobaczyła. W tym bloku najpierw postawisz swój cel na scenie, a dopiero potem klikniesz flagę.
Program 1 z 3 — Rozgrzewka
postaw bladego kota tam, gdzie skończy
Zamiar autora: Kot ma przejść kawałek w prawo, przystanąć i przejść jeszcze raz tyle samo.
Przeczytaj klocki i powiedz z góry, gdzie kot stanie na końcu. Blady kot na scenie to twoja odpowiedź — możesz go przestawiać, dopóki nie uruchomisz programu.
Złam ten program
Autor tego programu mówi: „u mnie działa”. Jego obietnica brzmi: kot przechodzi dokładnie tyle kroków, ile wpiszesz, i melduje, że jest na miejscu. Sprawdził to na stu krokach i uznał, że skończył.
Twoje zadanie jest odwrotne niż zwykle: złam ten program. Znajdź 2 różne liczby, przy których obietnica przestaje być prawdziwa.
Tabela testów
| kroki | miał stanąć | stanął | zgadza się? |
|---|---|---|---|
| 100autor | x: -50 | x: -50 | tak |
Złamane obietnice: 0 z 2.
Gdzie siedzi usterka
Z daleka widać tylko tyle, że coś jest nie tak. Żeby wskazać, która żarówka zawiniła, trzeba przejść sznur lampka po lampce. Program da się przejść dokładnie tak samo — klocek po klocku, z zatrzymaniem po każdym. Tylko że w programie jest coś jeszcze: zmiany, po których na scenie nie widać nic.

Usterka 1 z 2 — Kot na głowie
nie poprawiaj — najpierw znajdź
Plan autora: Kot ma przejść w prawo, zawrócić i pójść w lewo — i przez cały czas iść normalnie, na łapach.
x
-150
y
0
kierunek
90
styl obrotu
lewo-prawo
krok 1 z 8
Przewijaj program klocek po klocku i po każdym porównuj scenę z planem. Zatrzymaj się w pierwszym miejscu, w którym coś się nie zgadza.
Po co jest ten klocek

Jest tylko jeden pewny sposób, żeby sprawdzić, czy klocek trzyma wieżę.
Wyjąć go i popatrzeć. W programie to kosztuje jeszcze mniej niż tutaj — zawsze możesz wstawić klocek z powrotem. A odpowiedź, którą dostajesz, jest dokładnie tą, o którą pyta nauczyciel, mówiąc „wytłumacz, jak działa twój program”.
Ten skrypt działa. Kot chodzi tam i z powrotem po scenie i nic mu nie dolega. Pytanie brzmi inaczej: skąd wiesz, po co jest w nim każdy klocek?
Jest na to sposób, z którego programiści korzystają codziennie: wyjmij jeden klocek i zobacz, co przestanie działać. Niżej są trzy obietnice tego programu — udowodnij każdą z nich, łamiąc ją.
wyjęty klocek
Stuknij w klocek, żeby go wyjąć — jeden na raz. Doświadczenie, w którym zmieniło się kilka rzeczy naraz, nie mówi, która z nich zawiniła.
Trzy obietnice tego programu
Kot zawraca przy krawędzi sceny, zamiast się o nią oprzeć.
jeszcze nie udowodnioneKot nigdy nie idzie głową w dół.
jeszcze nie udowodnionePo każdym kliknięciu flagi kot zaczyna tak samo: z tego samego miejsca i zwrócony w tę samą stronę.
jeszcze nie udowodnione
Zadanie: program, który działa za każdym razem
Świeże jajko leży na dnie, stare staje na sztorc. Jeden prosty test, jedna jasna odpowiedź — i każde jajko sprawdza się osobno. Twoje zamówienie ma sześć takich testów. Dostajesz je z góry, bo tak właśnie wygląda uczciwa umowa: wiesz, z czym twój program będzie porównany, zanim zaczniesz go budować.

Zrób kota-listonosza. Po kliknięciu zielonej flagi kot rusza z lewej strony sceny, przechodzi na prawą — tak, żeby było widać, jak idzie — i na koniec się melduje, że dotarł.
I jeden warunek, o który chodzi w całej lekcji: ma to zrobić tak samo za każdym razem. Za pierwszym kliknięciem flagi, za drugim i za dziesiątym.
Nie podaję ci gotowego skryptu — klocki dobierz sam/sama. Podaję coś innego: testy, które twój program ma przejść. Uruchomię go u ciebie dwa razy pod rząd i porównam oba przebiegi.
Naciśnij flagę dwa razy — tak ma to wyglądać.
Liczba kroków i słowa w dymku będą u ciebie własne. Liczy się to, że za drugim razem jest identycznie jak za pierwszym.
Czego będę szukać w twojej pracy
- Test 1: jest skrypt pod zieloną flagą, a w nim ruch kota
- Test 2: pierwszy klocek skryptu ustawia miejsce startu
- Test 3: kot przechodzi na drugą stronę sceny
- Test 4: widać, jak idzie — droga nie jest jednym przeskokiem
- Test 5: po ostatnim kroku kot się odzywa — melduje, że dotarł
- Test 6: drugie uruchomienie kończy się tak samo jak pierwsze
Ułóż skrypt i uruchom go zieloną flagą. Potem kliknij flagę jeszcze raz — bez stawiania kota na starcie — i sprawdź sam/sama, czy za drugim razem wyszło to samo.
Przeciągnij klocek do skryptu albo kliknij — dołączy na końcu.
Pusto. Każdy skrypt zaczyna się kapeluszem z zieloną flagą.
kot stoi w x: -150, y: 0
Zrobione: 0 z 5 bloków
Przejdź wszystkie bloki i zrób to, co w nich jest do zrobienia — pasek u góry pokaże 100%.