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+
Kolejny rozdział którym się zajmujemy to metody metody są tak
jakby subalgorytmami czy kawałkami kodu które możemy
wydzielić z większej całości aby nasz kod był czytelniejszy dało się dany kod
wykorzystać ponownie i przykładowo do tej pory korzystaliśmy z
metod wbudowanych czyli jeżeli chciałam sobie stworzyć jakiś powiedzmy
string abrakadabra i
następnie go zmienić na uppercase czy tam
upcase to korzystam z metody na typie string
upcase i po wykonaniu mogłam zobaczyć
rzeczywiście ta metoda się wykonała chociaż ja jej zupełnie nie pisałam
tylko ona już była dostępna w ruby teraz możemy sobie stworzyć własne
metody które są jakimś wyodrębnionym blokiem kodu mają
nazwę i będziemy je ponownie wykorzystywać metody
definiujemy za pomocą słowa def nazwa metody na przykład
ja zrobięnie zrobię greet oczywiście musi być and że
koniec tutaj metody następnie w tej metodzie po
prostu wyświetlę coś czyli zrobię sobie puts i podam po
prostu hello teraz żeby tą metodę wyświetlić czy
wywołać muszę użyć jej nazwę czyli zrobię sobie greet
i zapisuje wykonuję pojawia mi się hello czyli
samo greet jest zdefiniowane i
zwraca napis hello metody mogą przyjmować parametry czyli
na przykład mogę podać jakiś parametr name i teraz powitać
konkretną osobę name gdybym teraz uruchomiła kod
nie podając żadnego parametru z resztą sprawdźmy sobie to dostaję błąd że
mam złą liczbę argumentów ponieważ metoda oczekuję argumentu jednego
a dostała zero no to dajmy jej jakąś wartość
niech będzie rzeczywiście ruby teraz parametr
zostaje przekazany do tej metody jako name
wyświetli nam się hello ruby mogę też utworzyć sobie zmienną
na przykład n jej przypisać wartość
ruby i tu użytyć tej zmiennej czyli
tu ta zmienna n może się znajdować będzie
pod inną nazwą a w metodzie zostanie zrozumiana od razu
że pod name mamy podstawić to co zostało przekazane
wcześniej czyli nasze ruby zresztą wykonam i
nadal mamy hello ruby kolejną rzeczą możemy
sobie na przykład wykorzystać fakt że przekażemy jakąś odpowiedź
użytkownika najpierw sobie zdefiniuję metodę mood która
przyjmie parametr answer i
tutaj zamykam oczywiście stworzę sobie też jakiś bardzo
prosty przykład kodu na razie też na wyświetlanie czyli puts zrobimy
sobie my mood today
i na przykład puts answer
użytkownika którą tu przekażemy
teraz możemy zrobić puts how
are you poczekać na odpowiedź użytkownika
czyli na przykład jakiś input od użytkownika oczywiście na to gets
usuniemy też enter chomp i
wywołamy metodę mood z naszym parametrem gdzie
tu będzie szła nasza zmienna input zobaczmy jak ten kod zadziała pyta
mnie how are you ja odpowiem i'm fine enter
i rzeczywiście pojawi mi się my mood today i'm fine stworzymy
sobie kolejną metodę teraz tworzę sobie metodę która będzie
prostym menu nazwę ją menu tutaj
chcę mieć jakiś choice jakiś parametr od użytkownika i
wykorzystamy sobie naszą instrukcję sterujące case którą
poznaliśmy już wcześniej czyli kiedy uzyskam ten
parametr choice chcę żeby się różne rzeczy wykonały więc na przykład when
1 wtedy mogę użyć tutaj then i zapisać to w jednej
linii then zwróć mi napis start jeżeli
będzie dwójka then niech zwróci mi na przykład
new game wtedy będzie
trójka może na przykład save
game jeśli to jest menu gry i na
końcu else nothing
to do here czyli jeżeli to nie będzie ani jedynka
ani dwójka ani trójka chcemy żeby się wykonał taki
else oczywiście case musi być zamknięty
z endem i teraz możemy wykonać tą
metodę po pierwsze weźmiemy sobie jakiś puts pokażemy dla
naszego użytkownika niech wybierze no tam choose
jeden dwa trzy no tu powinnam mieć od razu
1 żeby zacząć 2 żeby stworzyć nową grę
3 żeby zapisać ale tutaj sobie troszkę krócej zapiszę i
pod spodem zrobię jakąś wartość znowu input
od użytkownika gets chomp
no i musimy pamiętać żeby znowu użyć rzutowania skonwertować
naszą wartość od użytkownika na liczbę całkowitą i możemy spokojnie
w naszym menu wywołać za
pomocą metody menu podając parametr input
tutaj oczywiście muszę mieć przypisanie które połknęłam i
jeszcze ponieważ tutaj zwracamy tylko stringi żadnego puta nie mamy
żadnego p nie mamy żadnej innej metody wyświetlania nie korzystamy więc tu chcemy
użyć puts i ten string który nam zostanie zwrócony przez
nasze menu zobaczmy sobie wybierz
123 wybiorę trójkę pojawi mi się save the game to
jeszcze raz uruchomię wybiorę jedynkę pojawi
mi się start to na koniec jeszcze raz wybiorę jakąś inną
wartość powiedzmy dziewiątkę nothing to do here nasza metoda
menu działa prawidłowo w zależności od tego co wybierzemy pokazuje
nam się nowy tekst kolejna rzecz o
której warto powiedzieć to słowo kluczowe return zaczniemy
może jednak od przykładu stworzymy sobie znowu prostą metodę niech to będzie metoda
hi przyjmująca parameter name i zwracająca
jakiś prosty tekst będzie witaj name
i wykrzyknik czyli po prostu zwracamy tekst
wyświetlający powitanie następnie
stworzymy sobie tablicę people nasza tablica będzie
zawiera listę imion może być to julia ada
możemy mieć jakiegoś marka i może
taka prosta tablica na razie wystarczy teraz dla każdej osoby na
liście chcemy wyświetlić powitanie no to zrobimy sobie
each który już znamy do każdy element będzie pod zmienną
p i będziemy sobie robić puts hi
od elementu p czy od każdego człowieka który jest na liście jeszcze
może jakieś puts next
one no i and zobaczmy
sobie jak ta metoda się wykona po kolei powita każdą osobę
julię adę marka na naszej tablicy pojawiłaby się wartość
nil na przykład przed markiem jeszcze pojawi się wartość nil
zobaczmy pojawiła
się tutaj pusta no nie jest to coś co byśmy się spodziewali
chcielibyśmy żeby jednak jakieś imię się pojawiło zresztą gdybym chciała
skorzystać z konkatenacji no bo przecież tu są po prostu stringi więc najłatwiej by nam
było sobie połączyć to w ten sposób to
tutaj pojawiłby się już błąd ponieważ nie możemy do witaj dodać
imienia kiedy jest nil i dlatego wtedy przyda
nam się zarówno unless jak i metoda
która nam zwróci czy słowo kluczowe które nam zwróci return i
teraz zróbmy sobie najpierw taki przypadek że najpierw
sprawdzimy czy w ogóle imię zostało podane czyli
jeżeli imię jest nilem chcemy żeby nam po prostu wróciło zróbmy
tak return jeśli
czyli jakiś tam może coś tu chcemy najpierw zwrócić jakieś hello jeśli
nie mamy podanego i tutaj jeśli nie ma wartości czy mogą być if
name equals nil ale
możemy po prostu zrobić o wiele prościej unless nasz guard clause
unless name czyli jeśli name nie
istnieje czyli jeśli imię nie istnieje zwróć
hello co się stanie kiedy tutaj wywołamy naszą
metodę z nilem przejdzie do return unless
sprawdzi że imię nie istnieje to return przerwie wykonywanie
tego kodu w naszej metodzie i zwróci tą wartość do miejsca w którym była
wywołana ta metoda czyli tam gdzie się znajduje
z aktualnym wynikiem aktualnym wynikiem będzie hello sprawdźmy to czyli
teraz nie powinnampojawił nam się żaden błąd ponieważ name z nilem nie
trafiło tutaj najpierw trafiła julia potem ada potem
nil kiedy trafił nil to ominął tą linijkę która jest pod spodem
bo return wcześniej przerwało wykonywanie
naszej metody możemy też napisać sobie własną
metodę obliczającą wartość bezwzględną mimo że w ruby mamy taką metodę
jak abs która od razu oblicza nam możemy
lepiej zrozumieć działanie return pisząc własny kod zacznijmy od tego def absolute
value które
przyjmuje jakąś tam wartość liczbową number end
i sprawdzimy jeśli number jest większe
od zera to musimy zwrócić nam number
po prostu a w przeciwnym wypadku else zwracamy
minus number i end to właściwe cała
nasza metoda dosyć krótka nie ma żadnego return możemy
ją przetestować przezczyli zrobimy absolute value i podamy 8
i na przykład tutaj sobie od razu żeby wyświetlanie a pod spodem zrobię
sobie absolute value podając minus 10
i kiedy ten kod uruchamię to obie wartości mam pozytywne
czyli mam 8 i 10 mogłabym jednak
ten kod skrócić robiąc go w ten sposób że ma się wykonać return
czyli już zwrócić wartość jeśli value jest większe od zera
zróbmy tak czyli tutaj zwracam po prostu number
jeżeli number jest większe od zera a
pod spodem dodaje minus number ponieważ do tego kodu
przejedziemy tylko jeśli ten warunek nie będzie spełniony jeszcze
raz wykonamy sprawdzimy że metoda działa i teraz
dla osób bardziej spostrzegawczych na pewno zauważycie
że można ten kod jeszcze uprościć to znaczy wykonać po prostu argument
operator trójargumentowy czyli zrobilibyśmy sobie
tak number większe od zera znak zapytania
zwróć number a w przeciwnym wypadku zwróć minus number teraz
ten kod jest zupełnie prosty i czytelny zobaczmy w ten
sposób udało nam się dosyć wyraźnie skrócić naszą metodę żeby była
przyjemna jednocześnie nie straciliśmy na czytelności możemy
też stworzyć metodę która będzie zwracała wiele wartości na raz stworzę
sobie create a b c która
przyjmuje albo nie przyjmuje nic może a
która nam zwróci trzy różne wartości stworzę sobie
a 10 b równa
się 12 i c równa się na przykład 20
i wszystkie te wartości chcę zwrócić to jakbym tutaj zostawiła
tą metodę w ten sposób to pojawi nam się tylko jedna
wartość i nie będziemy mogli w ogóle pozostałych
uzyskać dlatego możemy skorzystać z return a
b i c i
teraz jeżeli zrobię create abc
i wyświetlę to zobaczę że ruby
zwrócił mi tablicę zawierającą wartości a b i c na
zakończenie możemy jeszcze sprawdzić jedną rzecz wróćmy do naszego jednego
z pierwszych kodów jeśli nie pierwszego nawet przyjmującego
name i wyświetlającego po prostu jakąś wartość
czyli puts hello
name i wyświetlmy
wynik po prostu wykonując te metody z
jakimś parametrem parametr ruby kiedy ona
się wykona to po prostu tylko wyświetla ale gdybyśmy użyli
metody p i wykonali metodę greet ponownie
pojawi nam się dwa razy hello i nil ponieważ ta metoda nie zwraca
zupełnie niczego wykonuje się wyświetla a efektem
jest po prostu nil dlatego należy bardzo zwracać uwagęcoś że jeżeli
coś wyświetlamy w danej metodzie to już tej metody nie wyświetlamy ponownie
nie chcemy mieć wyświetlania w wyświetlaniu
mood · 2 min
def mood(answer)
puts "My mood today:"
puts answer
end
puts "How are you?"
input = gets.chomp
mood(input)menu · 3 min
def menu(choice)
case choice
when 1 then "Start"
when 2 then "New Game"
when 3 then "Save Game"
else
"Nothing to do here"
end
end
puts "Choose: 1, 2, 3"
input = gets.chomp.to_i
menu(input)return · 4 min
def hi(name)
return 'Hello!' unless name
"Witaj" + name + "!"
end
people = ["Julia", "Ada", nil, "Mark"]
people.each do |p|
puts hi(p)
puts 'Next one'
endabsolute_value · 5 min
def absolute_value(num)
if num > 0
num
else
-num
end
end
def absolute_value(num)
return num if num > 0
-num
end
def absolute_value(num)
num > 0 ? num : -num
end
p absolute_value(8)
p absolute_value(-10)greet · 1 min
def greet(name)
puts "Hello #{name}"
end
n = "Ruby"
greet(n)