Kod jest wykonywany wiersz po wierszu, od góry do dołu
W lekcji 3 zamieniłeś miejsca dwóch wierszy puts i wynik również uległ zamianie. Być może pomyślałeś, że to zbieg okoliczności lub że po prostu tak się złożyło w tym konkretnym przykładzie.
To nie był zbieg okoliczności. Jest to jedna z najważniejszych zasad działania języka Ruby. Będzie się on zachowywał dokładnie tak samo w każdym programie, jaki napiszesz, nawet w takim, który ma sto wierszy.
Po tej lekcji będziesz dokładnie wiedzieć, w jakiej kolejności Ruby wykonuje twój kod. Zasada ta wydaje się oczywista - dopóki przypadkowo jej nie złamiesz, na przykład wklejając fragment kodu w niewłaściwym miejscu. Ruby nie wyświetli wtedy błędu. Po prostu wykona coś innego niż to, czego oczekiwałeś.
Ruby odczytuje kod od góry do dołu, wiersz po wierszu. Zanim przejdzie do następnego wiersza, całkowicie przetwarza bieżący.
Nie ma znaczenia, który wiersz wydaje się ważniejszy, dłuższy czy bardziej skomplikowany. Liczy się tylko jedno: jego położenie w pliku. Wiersz znajdujący się wyżej jest zawsze wykonywany przed wierszem znajdującym się niżej.
Przykłady
puts "Bierzesz dwie kromki chleba"
puts "Smarujesz je masłem"
puts "Kładziesz na nie szynkę"
Wynik:
Bierzesz dwie kromki chleba
Smarujesz je masłem
Kładziesz na nich szynkę
Ruby wykonał każdą linię dokładnie w kolejności, w jakiej została napisana. Najpierw pierwszą, potem drugą, a następnie trzecią.
Zobacz, co się dzieje, gdy pomieszasz kroki, które mają sens tylko w określonej kolejności:
puts "Pijesz herbatę"
puts "Zalewasz herbatę wrzątkiem"
puts "Zagotowujesz wodę"
Wynik:
Pijesz herbatę
Zalewasz herbatę wrzątkiem
Zagotowujesz wodę
Kod uruchomił się bez żadnych błędów. Ruby nie sprawdza, czy picie herbaty przed zagotowaniem wody ma sens. Po prostu wykonuje linie po kolei, od góry do dołu. To Twoim zadaniem jest zadbać o sens, a nie Ruby’ego.
Wyjaśnienie
Może się to wydawać zbyt oczywiste, by poświęcać temu całą lekcję. Przy trzech wierszach łatwo to odgadnąć. Problem pojawia się w programie liczącym sto wierszy, gdzie przesunięcie jednego wiersza nieco wyżej lub niżej ma realne znaczenie, a nie da się tego dostrzec na pierwszy rzut oka.
Warto o tym pamiętać na przyszłość: obecnie Ruby nie ma innego wyboru, jak tylko wykonywać kod po kolei, od góry do dołu, bez wyjątków. Później poznasz polecenia, które w kontrolowany sposób łamią tę zasadę, takie jak if w sekcji 6 lub pętle w sekcji 7. Będzie to jednak celowe złamanie zasady, której się teraz uczysz. Do tego czasu zasada brzmi: od góry do dołu, bez wyjątków.
Ćwiczenie
Zadanie programistyczne
Wróć do listy kroków, które zapisałeś w ramach ćwiczenia z lekcji 1 (na przykład „przygotowanie kanapki” lub „wyjście z domu rano”). Przekształć każdy krok w osobny wiersz z funkcją puts, zachowując prawidłową kolejność, a następnie uruchom kod.
Następnie zamień dowolne dwa kroki miejscami i uruchom kod ponownie. Sprawdź co zmieniło się w wyniku, oraz czy Ruby wyświetlił jakiś błąd.
Tutaj pojawi się wynik działania Twojego programu.