Po zakończeniu tej lekcji będziesz w stanie zacząć pisać prosty kod – a nie tylko edytować istniejący kod.
Najpierw jednak trochę więcej informacji.
Co robią dobrzy programiści (zamiast zapamiętywania)
Doświadczony programista będzie robił notatki w kodzie, które w zasadzie nie są częścią programu, ale komentarzami na temat tego, co zrobił lub dlaczego to zrobił. Po uruchomieniu programu komentarze te są ignorowane, ale uwagi programisty, zwane komentarzami do kodu lub po prostu komentarzami, pozostają w kodzie.
Komentarze do kodu
Ogólnie rzecz biorąc, pisanie komentarzy do kodu jest dobrą praktyką, ale jest szczególnie przydatne, gdy dopiero zaczynasz programować i na bieżąco rozgryzasz pewne rzeczy. Te komentarze mogą okazać się naprawdę pomocne, gdy próbujesz zrozumieć, dlaczego ty lub ktoś inny coś zrobił.
Najprostszym sposobem na zapisanie komentarza do kodu jest umieszczenie # przed komentarzem, ale są też inne sposoby:
|
Komentarz jednowierszowy: Wszystko, co pojawia się między # a końcem wiersza, jest częścią komentarza do kodu. |
|
Wbudowany komentarz blokowy: Wszystko, co pojawia się między <# a #>, jest częścią komentarza do kodu. Wbudowane komentarze blokowe mogą znajdować się między wyrażeniami w jednym wierszu i nie powodują zmiany tych wyrażeń. |
|
Wielowierszowy komentarz blokowy: Wszystko, co pojawia się między <# a #>, jest częścią komentarza do kodu. Wielowierszowe komentarze blokowe mogą obejmować wiele wierszy. |
|
Zagnieżdżony komentarz blokowy: Wszystko, co pojawia się między <# a #>, jest częścią komentarza do kodu i może być zagnieżdżane. Może to być pomocne, gdy chcesz skomentować niektóre wyrażenia w wierszu do przetestowania i debugowania, bez zmiany istniejącego komentarza do kodu. |
|
Komentarz wcięty: Wszystko, co pojawia się w nowych wierszach po <#> i jest wcięte o cztery spacje, jest częścią komentarza do kodu. Pierwszy wiersz, który nie jest wcięty o cztery spacje, nie jest częścią komentarza do kodu i kończy komentarz do kodu. |
Używanie wyrażeń warunkowych do podejmowania decyzji w kodzie
Pamiętasz wyrażenia if .. else, które poznaliśmy w lekcji 2? Są to tak zwane wyrażenia warunkowe.
Wyrażenia warunkowe określają sposób, w jaki każesz swojemu programowi podejmować decyzje.
Wyrażenie if służy do przetestowania, czy coś zakończyło się powodzeniem czy niepowodzeniem. W przypadku powodzenia może zostać uruchomiony określony kod. Z kolei w przypadku niepowodzenia uruchomiony zostanie inny kod.
Można to traktować jako sposób na zadanie programowi pytania zamkniętego, wymagającego odpowiedzi tak lub nie.
W prawdziwym życiu cały czas podejmujesz decyzje w oparciu o odpowiedź na takie pytania. Na przykład: chce ci się spać? Jeśli odpowiedź jest twierdząca, idziesz spać. Jeśli odpowiedź jest przecząca, nie idziesz spać i oglądasz kreskówki.
Jeśli chcielibyśmy zaprogramować to zachowanie, mogłoby ono wyglądać następująco:
var Tired: logic = false
var WhatToWatch: string = "nic"
if (Tired?):
set WhatToWatch = "własne powieki od spodu"
else:
set WhatToWatch = "kreskówki"
Print("Obejrzyj {WhatToWatch}")
# Obejrzyj kreskówki
Widzisz ten znak zapytania ? w wyrażeniu if? W ten sposób program Verse sprawdza, czy typ logic ma wartość true czy false.
Zagnieżdżanie
Gdy kod jest zagnieżdżony, oznacza to, że jest wcięty pod wyrażeniem kluczowym, takim jak if lub else. Te wyrażenia tworzą nowy zakres.
Zakres odnosi się do fragmentu kodu, w którym można używać nazw i powiązanych z nimi wartości. Zakres jest zawarty w bloku kodu, który jest wcięty.
Na przykład:
if (Tired?):
set WhatToWatch = "własne powieki od spodu"
else:
set WhatToWatch = "kreskówki"
Wiersz set WhatToWatch = "własne powieki od spodu" jest wcięty pod wierszem if (Tired?):. Ten sam wzór powtarza się w przypadku wiersza else:.
Zagnieżdżać można pojedynczy wiersz kodu lub blok (wiele wierszy) kodu.
Oznacza to, że gdy kod zostanie uruchomiony, zagnieżdżony kod zostanie wykonany tylko w kontekście kodu, pod którym został zagnieżdżony.
Używanie wielu warunków
Czasami przed podjęciem decyzji trzeba zadać więcej niż jedno pytanie. W Verse robi się to za pomocą operatorów and oraz or. Są to tak zwane operatory decyzyjne.
Podczas używania and warunki po obu stronach operatora muszą mieć wartość true lub zakończyć się powodzeniem, aby całe wyrażenie zakończyło się powodzeniem.
Podczas używania or tylko jeden warunek musi mieć wartość true lub zakończyć się powodzeniem, aby całe wyrażenie zakończyło się powodzeniem.
| Pierwszy warunek | Operator | Drugi warunek | Całe wyrażenie |
|---|---|---|---|
| powodzenie | and | powodzenie | powodzenie |
| powodzenie | and | niepowodzenie | niepowodzenie |
| niepowodzenie | and | niepowodzenie | niepowodzenie |
| powodzenie | or | powodzenie | powodzenie |
| powodzenie | or | niepowodzenie | powodzenie |
| niepowodzenie | or | niepowodzenie | niepowodzenie |
Aby sprawdzić, jak działają te operatory, poprawmy kod.
Nawet jeśli nie chce ci się spać, to warto się przespać, jeśli jutro masz szkołę. Sprawdźmy to, tworząc zmienną o nazwie SchoolTomorrow i używając operatora or do sprawdzenia obu zmiennych logic.
var Tired: logic = false
var SchoolTomorrow: logic = true
var WhatToWatch: string = "nic"
if (Tired? or SchoolTomorrow?):
set WhatToWatch = "własne powieki od spodu"
else:
set WhatToWatch = "kreskówki"
Print("Obejrzyj {WhatToWatch}")
# Lepiej obejrzyj własne powieki od spodu
Zmienna Tired jest nadal ustawiona na false, ale ponieważ SchoolTomorrow jest ustawione na true, całe wyrażenie zakończy się powodzeniem, a WhatToWatch zostanie ustawione na "własne powieki od spodu".
Istnieje jeszcze jeden sposób na sprawdzenie wielu warunków.
Wyrażenie if ... else if ... else nadaje kolejność rzeczom, które sprawdzasz. Oznacza to, że jeśli sprawdzasz pierwszy warunek, musisz sprawdzić następny warunek tylko wtedy, gdy poprzedni warunek zakończy się niepowodzeniem.
Co jeśli jutro nie ma szkoły i nie chce ci się spać? Możesz wybrać się ze znajomymi do kina. Zmieńmy kod jeszcze raz, aby zobaczyć, jak to działa.
Zaktualizuj wartość zmiennej SchoolTomorrow i zadeklaruj nową zmienną FriendsAvailable.
var FriendsAvailable : logic = true
set SchoolTomorrow = false
Następnie zaktualizuj kod, aby sprawdzić, czy znajomi są dostępni – ale tylko wtedy, gdy nie chce ci się spać lub nie masz jutro szkoły.
if (Tired? or SchoolTomorrow?):
set WhatToWatch = "własne powieki od spodu"
else if (FriendsAvailable?):
set WhatToWatch = "film ze znajomymi"
else:
set WhatToWatch = "kreskówki"
Doskonale! Teraz pójdziesz spać tylko wtedy, gdy chce ci się spać lub następnego dnia masz szkołę. Jeśli odpowiedź na którekolwiek z pytań jest przecząca, to albo obejrzysz film ze znajomymi, albo zostaniesz w domu i obejrzysz kreskówki, jeśli znajomi nie będą dostępni.
Planowanie wieczorów właśnie stało się o wiele łatwiejsze – dzięki Verse.
Rozwiązywanie problemów
W lekcji 1 powiedzieliśmy sobie o błędach kompilatora, pamiętasz?
Innym problemem, który możesz napotkać podczas pisania kodu, są bugi.
Bugi
Bug (z ang. robak, pluskwa) to błąd w programie komputerowym, który powoduje, że generuje on nieprawidłowy lub nieoczekiwany wynik. Skutki takiego błędu mogą być niewielkie, jak zmiana koloru tekstu w komunikacie, lub bardziej drastyczne, jak wysłanie wiadomości tekstowej na ekran w niewłaściwym czasie, a nawet spowodowanie awarii programu.
Termin ten został spopularyzowany przez Grace Hopper, pionierkę w dziedzinie informatyki, kiedy znalazła w komputerze ćmę i przykleiła ją w swoim odręcznym dzienniku rozwiązywania problemów z komentarzem „Pierwszy rzeczywisty przypadek znalezienia buga”.
Błędy kompilatora uniemożliwiają kompilację programu, natomiast bug pojawia się dopiero po uruchomieniu programu.
Proces identyfikowania i usuwania bugów nazywany jest debugowaniem, a narzędzie, które pomaga znaleźć błędy to debugger.
Podsumowanie
- Używaj komentarzy do kodu, aby pamiętać, dlaczego dany kod został napisany w określony sposób, i aby pomóc innym programistom zrozumieć, co i dlaczego się dzieje.
- Używaj stałych dla wartości, które powinny pozostać stałe w całym programie.
- Używaj zmiennych dla wartości, które powinny się zmieniać w zależności od danych wejściowych.
- Bugi i błędy kompilatora są spowodowane błędami w kodzie.