A więc chciałbyś zostać programistą Kotlina?
Dobrze trafiłeś!
Ta książka pokaże Ci podstawy Kotlina, powoli wprowadzając Cię w kluczowe zagadnienia języka, aby pomóc Ci stać się biegłym programistą Kotlina. Nawet jeśli jesteś doświadczonym profesjonalistą, ważne jest by znać podstawy, aby zbudować solidny fundament, dzięki czemu nauka będzie bardziej skuteczna.
Twoja przygoda zaczyna się tu, w Rozdziale 1, z którego dowiesz się wszystkiego o zmiennych, wyrażeniach i typach.
Zaczynajmy!
Wprowadzenie do zmiennych
To jest okrąg.
Tysiące lat temu, greckiemu filozofowi o imieniu Archimedes udało się opisać jak w przybliżeniu policzyć długość tej linii, zwanej obwodem okręgu. Pewnie pamiętasz to równanie ze starych dobrych czasów podstawówki:
“Obwód okręgu jest równy 2 razy π razy promień okręgu”.
W powyższym równaniu litera r
nie jest liczbą. To litera, która reprezentuje promień — odległość między środkiem
okręgu a jego krawędzią.
r
nazywamy zmienną, ponieważ promień może się zmieniać, w zależności od rozmiaru okręgu. Innymi słowy, zmienna
r
nie jest liczbą samą w sobie; to raczej wiaderko, które zawiera liczbę — dowolną liczbę.
Zmienne są używane nie tylko w algebrze i geometrii. Są też bez przerwy używane w programowaniu, gdzie mają tę samą rolę: przechowywanie wartości. W Kotlinie możesz stworzyć zmienną i wpisać do niej liczbę w taki sposób:
var r = 5.2
Ten fragment kodu tak naprawdę robi dwie rzeczy w jednej linijce.
- Gdy piszemy
var r
, deklarujemy nową zmienną o nazwier
. Możesz sobie wyobrazić, że deklaracja zmiennej jest jak tworzenie wiaderka.- Gdy piszemy
r = 5.2
, przypisujemy wartość5.2
do zmiennejr
. Innymi słowy, wkładamy liczbę5.2
do wiaderka.Rozbijmy tę linię kodu na trzy główne części:
W tym kodzie…
var
jest słowem kluczowym, które mówi Kotlinowi, aby stworzył nową zmienną.r
jest nazwą zmiennej. Możesz się też spotkać z terminem identyfikator.- Liczba
5.2
jest wartością, która jest przypisywana.
var
jest jednym z wielu słów kluczowych, które zobaczymy podczas nauki Kotlina. Ważna rzecz do zapamiętania o
słowach kluczowych: nie mogą być użyte w nazwach czegoś, co sam tworzysz. Na przykład, nie możesz użyć var
jako nazwy
zmiennej:
var var = 5
BłądBędziemy mieli okazję poznać inne słowa kluczowe w kolejnych rozdziałach.
Zmienianie wartości zmiennych
Jak zaznaczyliśmy powyżej, we wzorze 2πr, zmienna
r
może reprezentować różne liczby w różnych przypadkach.W Kotlinie, jeśli zdecydujesz, że chcesz, aby
r
reprezentowało inną liczbę, możesz po prostu przypisać jej inną wartość, jak pokazano w drugiej linijce:var r = 5.2 r = 6.7
Gdy zmieniamy wartość tej zmiennej, nie musimy już używać słowa kluczowego
var
, bo zmienna została już zadeklarowana w poprzedniej linijce.Zmienne, które nie mogą zmieniać wartości
Spójrzmy jeszcze raz na wzór na obwód okręgu:
Grecka litera
π
(czytamy “pi”) różni się całkowicie od zmiennejr
. O iler
może przechowywać dowolną liczbę,π
zawsze oznacza jedną, bardzo konkretną liczbę, którą przybliżymy jako 3.14.W ten sam sposób, gdy programujemy w Kotlinie, są sytuacje, w których chcemy być pewni, że zmienna nigdy się nie zmieni.
W takich przypadkach, zamiast deklarowania jej z użyciem
var
, deklarujemy używającval
, w taki sposób:val π = 3.14
Gdy teraz spróbujesz zmienić wartość
π
, dostaniesz błąd:val π = 3.14 π = 1.23
BłądGdy raz coś włożysz do takiego wiaderka, nie możesz wsadzić już nic innego!
Deklarowanie zmiennych z użyciem
val
to świetny sposób, aby upewnić się, że przypadkowo nie zmienisz wartości czegoś, co nie powinno się zmieniać. Tak naprawdę to bardzo dobry pomysł, aby zawsze zaczynać odval
i zmieniać navar
gdy jest to absolutnie konieczne.Nazywanie zmiennych
Fajnie było używać litery
π
w naszym kodzie, lecz o ile nie mieszkasz w Grecji, zapewne nie masz jej na swojej klawiaturze. Od teraz ułatwimy sobie życie i będziemy nazywać zmiennąpi
, a zamiastr
-promien
. Dzięki temu inni deweloperzy, którzy zajrzą kiedyś do naszego kodu, będą dokładnie wiedzieć, co dana zmienna reprezentuje — nie chcemy, aby musieli zgadywać co oznaczar
!Niekiedy potrzebujemy więcej niż jednego słowa w identyfikatorze zmiennej. W Kotlinie zazwyczaj zaczynamy od pierwszego słowa pisanego małą literą, a kolejne słowa zaczynamy od wielkich liter, w taki sposób:
var promienOkregu = 5.2
Skoro omówiliśmy już sobie podstawy deklarowania zmiennych i przypisywania im wartości, możemy zacząć przypisywać coś więcej niż tylko proste liczby — możemy zacząć przypisywać wyniki bardziej skomplikowanych obliczeń, takich jak wartość ze wzoru na obwód okręgu! Przejdźmy do wyrażeń!
Wyrażenia i instrukcje w Kotlinie
Spójrzmy na ten wzór jeszcze raz:
Stworzyliśmy już zmienną dla
pi
i zmienną dlapromien
ia, więc musimy tylko powiedzieć Kotlinowi, aby użył ich, by coś dla nas policzyć, tak abyśmy mogli dostać obwód dowolnego okręgu, bez względu na jego wielkość.Wystarczy pomnożyć
2
,pi
ipromien
. W Kotlinie, tak jak w większości języków programowania, mnożenie nie jest reprezentowane przezx
, reprezentujemy je za pomocą gwiazdki:*
, więc nasz kod wygląda tak:var promien = 5.2 val pi = 3.14 val obwod = 2 * pi * promien
Jak na razie przypisywaliśmy tylko proste wartości — takie jak
5.2
czy3.14
. Tu mamy pierwszy raz przypisania czegoś bardziej złożonego:2 * pi * promien
.Gdy Kotlin to widzi, po prostu liczy dla nas wartość tego wyrażenia — mnoży
2
razypi
razypromien
, a następnie bierze wynik i przypisuje go do zmiennej o nazwieobwod
. W tym przypadku (dla promienia5.2
),obwod
będzie równy32.656
.Jako że z
2 * pi * radius
możemy dostać taką wartość, mówimy, że może być ewaluowane. Kod, który może być ewaluowany, nazywamy wyrażeniem. Oto kilka przykładów wyrażeń:
2 + 3
2 * pi * r
pi * r * r
Zmienne same w sobie też są wyrażeniami — ewaluują się do wartości, jaką przechowują:
promien
pi
Gdy wpisujesz liczbę z ręki (w przeciwieństwie do podawania zmiennej), nazywa się literałem (stałą dosłowną). Literały same w sobie też są wyrażeniami - ewaluują się do siebie samych! Oto kilka przykładów:
2
5.2
3.14
Wszystkie te przykłady ewaluują się do pewnej wartości. Z drugiej strony, jeśli jakiś fragment kodu nie ewaluuje się do żadnej wartości, nazywamy go instrukcją.
Oto praktyczna zasada aby rozróżnić wyrażenie od instrukcji:
Zasada: Jeśli możesz przypisać fragment kodu do zmiennej, jest to wyrażenie. W przeciwnym wypadku jest to instrukcja.
Zastosujmy tę regułę do pierwszego wyrażenia z każdej z trzech list powyżej (
2 + 3
,promien
i2
). Fragmenty zaznaczone poniżej to wyrażenia:val a = 2 + 3 val b = promien val c = 2
Skoro każdy z nich może być przypisany do zmiennej, wszystkie są wyrażeniami.
Jedyna instrukcja jaką do tej pory widzieliśmy to instrukcja przypisania, taka jak
val pi = 3.14
. Zastosowanie naszej reguły do instrukcji przypisania wydaje się dziwne, bo używamy przypisania w przypisaniu (ups!):val a = val pi = 3.14
BłądGdy spróbujesz to zrobić, Kotlin da Ci pomocny komunikat o błędzie: “Expecting an expression” (spodziewano się wyrażenia). Jeśli kiedykolwiek zobaczysz ten błąd, oznacza to, że próbowałeś użyć instrukcji tam, gdzie Kotlin potrzebował wyrażenia.
Rozróżnienie między instrukcjami i wyrażeniami jest ważne podczas nauki Kotlina; będziemy w tej książce często używać tych terminów.
Do tej pory, niezależnie czy używaliśmy literałów czy złożonych wyrażeń, cały czas przypisywaliśmy liczby do zmiennych. A w zmiennych można przechowywać wiele różnych rzeczy! Spójrzmy teraz na niektóre z tych rzeczy.
Typy: różne rodzaje wartości
W Kotlinie różne zmienne mogą przechowywać różne rodzaje wartości. Rodzaj wartości, jaki zmienna trzyma, nazywamy jej typem.
Spójrzmy raz jeszcze na zmienne
promien
ipi
:var promien = 5.2 val pi = 3.14
W tym przypadku, zarówno
promien
jak ipi
reprezentują liczby z częścią po przecinku, co jest typem w Kotlinie nazywanymDouble
. Jeśli chcesz, możesz sam podać Kotlinowi typ zmiennej, w taki sposób:var promien: Double = 5.2 val pi: Double = 3.14
W taki sposób jawnie podajemy typ.
Przeważnie nie musisz podawać typu zmiennej. W takim przypadku Kotlin postara się wywnioskować typ na podstawie tego, co przypisujesz do zmiennej. Ten proces nazywa się wnioskowaniem typu (ang. type inference).
Czyli gdy napiszemy tak…
var promien = 5.2
…wtedy Kotlin widzi, że
5.2
jest typuDouble
, a więc automatycznie używaDouble
jako typu zmiennejpromien
.Oprócz
Double
, są też inne podstawowe typy, o których warto wiedzieć! Spójrzmy teraz na niektóre z nich.Liczby całkowite
Dotychczas widzieliśmy tylko liczby z częścią po przecinku, takie jak
5.2
czy3.14
. Możesz też używać liczb bez przecinka, takie jak po prostu5
czy3
.Takie liczby nazywane są całkowitymi (ang. integers), a w Kotlinie typ dla takich liczb nazywa się
Int
. Oto przykład tworzenia zmiennej całkowitej:val liczbaPsow: Int = 3
Wartości logiczne
Czasami chciałbyś mieć zmienną do trzymania wartości typu włączone lub wyłączone, tak lub nie, prawda lub fałsz itd.
W takich przypadkach potrzebujesz zmienną typu logicznego:
Boolean
.val ziemiaJestOkragla: Boolean = true val ziemiaJestPlaska: Boolean = false
Dlaczego ten typ nazywa się on
Boolean
?Jego nazwa pochodzi od Brytyjczyka z XIX wieku, George’a Boole’a, który stworzył gałąź algebry operującą na wartościach typu prawda czy fałsz zamiast liczb.
Świetnie.
Ciągi znaków
Możesz też przechowywać tekst w zmiennych. Po angielsku nazywa się to string (z ang. sznurek, linka), bo pewien ciąg znaków — takich jak litery, liczby, symbole — jest połączony jak sznurkiem:
W Kotlinie odpowiadający mu typ nazywa się
String
, a zmienną typuString
możesz stworzyć tak:val tekst: String = "To jest ciąg znaków"
Inne typy
To są tylko pewne popularne typy zmiennych. W tej książce nauczymy się jak tworzyć własne typy — klasy — które budują na tym, co właśnie zobaczyliśmy.
Typy i zmiana wartości
W Kotlinie typ każdej zmiennej jest ustalony, gdy piszesz kod i ten typ nigdy się nie zmieni (chyba że zmienisz kod). Nazywa się to statycznym typowaniem. Gdy zmienna została zadeklarowana z danym typem, wartość innego typu nie może być w niej umieszczona. Na przykład, gdy stworzymy zmienną typu
Int
, nie możemy zmienić jej wartości by zawierała ciąg znaków typuString
:var liczbaPsow: Int = 5 liczbaPsow = "pięć"
BłądW kolejnych rozdziałach zobaczymy, jak statyczne typowanie ma znaczenie nie tylko przy zmianie wartości zmiennych. Zobaczymy też, że niektóre typy mogą mieć podtypy.
Ale nie wybiegajmy za bardzo w przyszłość — najpierw podsumujmy ten rozdział!
Podsumowanie
W tym rozdziale poznaliśmy:
- zmienne
- Używanie
var
dla zmiennych, których wartości możemy zmieniać.- Używanie
val
dla zmiennych tylko do odczytu.- wyrażenia i instrukcje
- Wyrażenia mogą być ewaluowane, tak by dostać wartość.
- Instrukcje nie ewaluują się i nie zwracają wartości.
- Możesz przypisać fragment kodu do zmiennej by sprawdzić, czy jest to instrukcja, czy wyrażenie.
- typy proste
- Typy liczbowe takie jak
Double
iInt
.- Typ logiczny
Boolean
dla wartościtrue
(prawda) ifalse
(fałsz).- Typ
String
przeznaczony dla wartości tekstowych.Teraz gdy dobrze rozumiemy zmienne, czas zacząć je używać w ciekawy sposób! Przygotuj się na Rozdział 2 gdzie nauczymy się o funkcjach w Kotlinie!
Podziękowania dla Matta McKenna, Jacoba Rakidzich i Douga Smitha za recenzję tego artykułu.