od Podstaw
5 godz. 10 min · Ruby · Full-stack i Programowanie
Małgorzata ŁyczywekSoftware engineerW pierwszych lekcjach Kursu przejdziemy do omówienia konfiguracji środowiska, by następnie poznać tryb interaktywny Rubiego. Stworzymy pierwsze programy oraz poznamy składnię języka. Dowiesz się między innymi tego, czym są zmienne, jakie istnieją typy danych, jak przekazywać własne dane do programu i jak na nich operować.
Programy oraz instrukcje potrafią w znaczny sposób przyspieszyć i ułatwić pracę w Ruby. Mogą wykonywać za nas powtarzające się czynności i podejmować decyzje. Dlatego też kolejnym, naturalnym krokiem nauki języka Ruby jest poznanie struktur sterujących kodem, takich jak instrukcje warunkowe if, case, pętle while, until, for, each czy inne iteratory.
W kolejnych lekcjach poznasz następne, bardziej rozbudowane zagadnienia. Będziemy korzystać z zaawansowanych struktur danych i metod, jakie możemy na nich wykonywać. Są to metody wbudowane, a więc dostępne domyślnie w Ruby. Przejdziemy do pisania własnych metod dbając, by nasz kod był zgodny z regułą DRY. Poznamy zagadnienia związane ze strukturami specyficznymi dla języka Ruby a także praktykami, jakie są w tym języku stosowane.
Dane do programów najczęściej dotaczane są z zewnętrznego źródła, jak na przykład pobierane z pliku. Przekonasz się jak wykonywać operację na plikach w Ruby - odczytywać, zapisywać, a także w jaki sposób radzić sobie z dużymi plikami w wydajny sposób. Dowiemy się również co zrobić, gdy nasz program spotka niespodziewany błąd. Zajmiemy się przewidywaniem i zapobieganiem błędów w kodzie.
Kolejna, najbardziej obszerna część kursu to dokładne omówienie podstaw paradygmatu programowania obiektowego. Nawet jeżeli wydaje Ci się to bardzo skomplikowane - niedługo wszystko stanie się jasne. Programowanie obiektowe pozwala nam na lepsze odwzorowanie rzeczywistości, czyli tworzenie bardziej praktycznego kodu. Przyjrzymy się jak obiektowość jest realizowana w Ruby oraz jak tworzyć obiekty, klasy i jakich zasad warto przestrzegać. Na koniec dowiemy się jak rozszerzać funkcjonalność istniejących klas za pomocą modułów.
Ten kurs został przygotowany z myślą o wszystkich, którzy chcą zacząć naukę programowania Ruby od podstaw. Stworzono go szczególnie dla osób, które z pisaniem kodu nie miały jeszcze styczności. Nie jest wymagana żadna wcześniejsza wiedza na temat programowania. Jeśli chcesz szybko nauczyć się programowania i myślisz, że twoim kierunkiem jest tworzenie aplikacji webowych, to Ruby jest świetnym wyborem na start.
2.6+
Teraz przejdziemy do kolejnego rozdziału czyli do instrukcji warunkowych zaczniemy
sobie od prostego zadania na pełnoletność zapytamy naszego użytkownika
o jego imię może najpierw powiększę trochę puts your
name trochę z tym powiększeniem przesadziłam okej i
teraz oczywiście muszę zapytać użytkownika może od razu przejdziemy do age
co będziemy go grzecznie pytać jak masz na imię jak możemy od razu zapytać o
wiek więc pytamy i przypiszemy do age wynik
gets pamiętamy o chomp no i
dodajemy tu i bo chcemy mieć raczej wiek
w formie liczby całkowitej jeżeli to mamy to
potrzebujemy teraz sprawdzić czy użytkownik i zróbmy if age
jest większe od 18 jeżeli
jest pamiętamy muszę dać jeszcze end jeżeli
jest to wyświetlę jakiś komunikat dla użytkownika typu
witam w programie tutaj welcome in our script
i załóżmy jakąś tam informację jeszcze
bym dodała tutaj puts hello
hello dosyć ten kod wygląda naturalnie mamy if wiek
co ma się wykonać i kiedy ma się skończyć wykonywać no to sprawdźmy czy zadziała ja
wyświetlam uruchamiam mój kod ach
i zapomniałam że przecież mój kod na mnie czekał to sprawdzimy jeszcze
raz spyta się your age ja podaję tam jakiś wiek większy
od 18 20 ponieważ 20
jest większe od 18 wyświetli się welcome in our script ten
test coś mi nie wyszedł bo na 18 to musiało być większe równe 18
18 to już pełnoletność jeszcze raz wykonam żeby przetestować
command czy tam control
do zapisu dalej uruchamiam i tutaj podaję
znowu jakiś kod niech będzie 20 no i witam
w naszym skrypcie i tak dalej i tak dalej mogę tu parę razy sprawdzić
z jeszcze jakąś liczbą rzeczywiście z tą 18 przecież po to dodałam tutaj
muszę w tej części konsoli wpisać 18 ten skrypt się wykona
a jeżeli go jeszcze raz wykonam dla wieku 7 to mnie do welcome
in our script nie wpuści to teraz skoro wiemy
jak ten if wygląda omówmy go sobie dokładniej
taki przykład czy mogę
sobie kupić kawę w kawiarni więc tworzę sobie zmienną balance to
będzie stan mojego tam jakoś portfela o wartości 7 jeżeli
czyli if balance czyli
ta moja wartość jest większa od 5 wyświetle puts
can buy coffee
i zakończę end tu
oczywiście kod dość oczywisty wykonało się mogę mogę
zamówić kawę co by było gdyby jednak warunek nie był spełniony czyli
gdybym nie miała odpowiedniej kwoty na koncie mogę dodać else mogę
wykonać else i puts can't
buy coffee i
teraz jeżeli bym na przykład zmieniła tą wartość na dwójkę i wykonała to
wyświetli mi się to co jest w else czyli can't buy coffee nie mogę kupić
kawy co by było gdybym chciała mieć jakieś
warunki pośrednie załóżmy że jest jakaś kawa w drugiej sieciówce
załóżmy w starbarsie żeby nie było blokowania produktu
a robię jakiś dodatkowy else if
i na przykład jeżeli mój balance jest
większy od 7 to załóżmy że mogę
kupić kawę w jakimś tam w
sklepie więc niech będzie can buy coffee
niech tam będzie jakaś nazwa już bez wymyślania gdzie
i co się stanie w przeciwnym wypadku czyli teraz jeżeli
ta wartość jest załóżmy 13
czyli będzie za mała żeby dostać się can buy coffee
in starbars to powinno nam trafić do kolejnego
warunku czyli trochę tak jak w naszym angielskim mamy if jeśli coś
zostanie spełnione else if czyli jeśli nie zostanie spełnione
a spełni inny warunek i co jeżeli nie będzie pasował
do żadnego z powyższych no to sprawdźmy uruchamiam
i pojawia się can buy coffee trzy kropki po prostu mogę kupić
kawę kolejna rzecz to zadanie
w którym wykonamy wiele else ifów zróbmy
sobie coś takiego załóżmy że ktoś ma nam podać temperaturę jaka
jest na dworze czy piszę sobie temperatura
dwukropek niech ktoś tam podaje nam coś oczywiście musimy temperaturę
od użytkownika przyjąć metodą gets i
zamienić tutaj bym powiedziała na float bo temperatura może być jednak z przecinkiem
i na przykład jeżeli temperatura będzie wyższa
niż 30 to chcemy użytkownika
poinformować że jest zbyt gorąco too hot else if
jeśli w przeciwnym
wypadku niech będzie jakieś tam okej okej
no i oczywiście musimy pamiętać o end czyli zamknąć nasz blok
który tutaj się wykonuje dodałabym jednak jakieś temperatury pośrednie
więc możemy skorzystać z naszego else if
i na przykład sprawdzić czy wystarczy jak temperatura jest
większa niż 20 możemy wyświetlić jakąś
informację niech będzie że just
hot dodajmy może jeszcze więcej przykładów czemu by się ograniczać
dajmy sobie else if na temperaturę powyżej
15 to jest jakaś temperatura
która jest znośna wiosenna przyjemna więc dam
sobie komentarz i like it no i
temperaturę może else if która
będzie else if oczywiście która będzie poniżej
0 a ja jestem zmarźlakiem i sobie
napiszę to cold teraz
kiedy wykonam ten kod czeka w pierwszym momencie ruby na
to bym podała wartość więc podaję wartość na przykład 34
zatwierdzam enterem wykonuje się too hot
i nie wchodzi do żadnego z po kolei else ifów ponieważ pierwszy warunek
się wykonała a kolejne by się wykonały tylko jeżeli w pierwszym
by nie trafiło no to spróbuję wykonać i jeszcze raz ten sam kod dam
sobie temperaturę 17 i 17 znajduje
się w przedziale między 15 a 20 więc idealnie trafiło do i
like it to jest pogoda przy której będzie bardzo odpowiednio dla mnie
jeżeli wezmę jakąś liczbę która znajduje się poza tym zakresem czyli
nie jest powyżej 15 nie jest poniżej
zera taką liczbą będzie na przykład 10
jest poniżej 15 a jest powyżej zera i
teraz wyświetli mi się else else odpowiada ok czyli kiedy
trafi mi się liczba która znajduje się w tym
przedziale nieopisanym przez moje przypadki w przypadku gdy będę miała
jakąś tam temperaturę minus tutaj
w tym okienku minus 20 stopni no to już ewidentnie jest dla mnie za
zimno to zobaczmy co by się stało gdybym usunęła sobie tutaj else
if w jednym czyli chciałabym sprawdzić oba te warunki kiedy
zapisze i wykonam pojawia mi się syntax error to
dlatego że ruby mi nie pozwala nam na taki zapis jeżeli
chcemy sprawdzić dwa warunki które są od siebie niezależne chciałby żebym dała
mu end czyje pierwszy warunek jest sprawdzony a tu już
dalsza część kodu z kolejnymi else if czy
nie możemy sobie tworzyć takiej struktury w której mamy kolejne
ify jeżeli nie damy dla ruby jasno znać że to są kolejne
osobne fragmenty kodu czyli tu bym nawet mogła zrobić jakiś puts dodatkowo
może jakiś taki sobie string składający się z samych
myślników żebyśmy wiedzieli w którym momencie wchodzi do nowego nowej struktury
ifów i teraz jak to wykonam podam mu temperaturę na
przykład 34 czyli jest to temperatura powyżej 30 jeśli
się powyżej 30 too hot a następnie wyświetli się just hot
i reszta struktury tak jak była poprzednio czyli
warto zapamiętać że mamy po pierwsze if czyli
instrukcja warunkowa która mówi nam że jeśli coś jest prawdą ma
się wykonać to co jest w środku od if do end następnie mamy
elsif który jest skrótem od else if i tam
w tej klauzuli wykonuje się ona tylko wtedy kiedy pierwsze if
jest nieprawdą zawsze potrzebuję ifa tak czyli jeśli if jest nieprawdą
a else będzie prawdą to else się wykona i mamy na
końcu else jako osobne słowo zupełnie i else jako instrukcja mówi
nam że jeśli wszystko co było powyżej się nie wykona
to znaczy że chcemy uzyskać to co jest w środku jeżeli
zwracaliście uwagę na to jak pisze kod na pewno widzieliście że mam tutaj
wcięcia otóż w ruby te wcięcia nie są nam konieczne czyli jeżeli
bym je usunęła to kod nadal by się wykonywał prawidłowo
ale nie chcę tak robić ponieważ zależy mi na tym żeby kod
który pisze był czytelny nie był tak zwanym kodem spaghetti tylko był on zarówno
zrozumiały przez komputer jak i przez człowieka
który będzie czytał ten kod
zadanie_if_else · 10 min
puts "Temp: "
temp = gets.chomp.to_f
if temp > 30
puts "Too hot"
if temp > 20
puts "Just hot"
elsif temp > 15
puts "I like it"
elsif temp < 0
puts "Too cold"
else
puts "OK"
endinstrukcja_if
balance = 13
if balance > 15
puts "Can buy coffee Starbars"
elsif balance > 7
puts "Can buy coffee ..."
else
puts "Can't buy coffee"
end