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+
Przechodzimy do kolejnego rozdziału i będziemy rozmawiać o zaawansowanych
typach danych tablice która już nam się pojawiły są po prostu sekwencją
elementów jest to w ogóle jeden z najczęściej używanych typów danych jeżeli
byśmy chcieli sobie stworzyć jakąś tablicę musi ona mieć nawias kwadratowy i
zamykający drugi kwadratowy w ten sposób stworzymy po prostu pustą
tablice możemy zresztą sprawdzić też typ array
sprawdzę i klasę zapiszę wykonam i
rzeczywiście zobaczę że to jest klasa array mogę też sprawdzić
że jest ona po prostu pusta p array kropka empty
znak zapytania wykonam zapiszę faktycznie
jest to pusta tablica kolejną rzeczą w tablicy
powinny mieć z zasady wiele elementów bo po co nam tworzyć pustą tablicę stworzę sobie
tablicę może hobbitów i
zobaczę ilu ich tam pamiętam na pewno był sobie frodo będzie
pippin sam jeszcze
merry mamy hobbitów do
damy sobie może jeszcze jakąś drugą tablicę niech to będzie tablica z ocenami great
i mamy w naszym systemie oceny od 1
do 6 więc tak też sobie zapiszę to
są kolejne elementy mojej tablicy i mogę sprawdzić że obie te tablice
mi powstały czyli wezmę sobie hobbits i od razu sprawdzę też greats
wyświetlmy je i tu widzimy
za pomocą p które od razu pokazuje nam jaki ma charakter dany obiekt że
powstały nam dwie tablice jedna ze stringami czyli
wartościami tekstowymi frodo pippin sam merry oraz wartościami
liczbowymi możemy dwie tablice połączyć znanym
już operatorem plus czyli jeśli mamy 2 takie same typy to mogę
hobbitów i greats połączyć w jedną tablicę i
zobaczmy rzeczywiście pojawiają nam się tutaj klamerka otwierająca
i dopiero za szóstką klamerka zamykająca co
sprawia że mamy po prostu nową tablicę która powstała jeżeli
byśmy chcieli sobie na przykład dwie tablice od siebie odjąć to musiałyby
one zawierać przynajmniej gdzieś tam mieć wspólne typy które od siebie
można odjąć czyli jeżeli stworzę sobie tablicę 1 2 czy 1 3
2 4 i drugą 1 2 3
to po odjęciu tych dwóch tablic zostanie nam element 4
ponieważ wszystkie te elementy udało się tutaj odjąć 1 od drugiej
możemy też dwie tablice na przykład sprawdzić
co jest ich częścią wspólną czyli może wezmę ten sam przykład i
korzystając z operatora and sprawdzę że
dwie tablice mają coś ze sobą wspólnego może tych wspólnych elementów trochę potem
jeszcze żeby były jakieś inne które nie występują tu wystąpi szóstka tu wystąpi
sobie ósemka czyli teraz częścią wspólną będzie jedynka dwójka trójka no
to zobaczymy i rzeczywiście zwróciło
nam się tak w takiej kolejności jak w tej pierwszej tablicy czyli 1 3 2 jeżeli
byśmy chcieli mieć ten wynik a po kolei to oczywiście trzeba by te elementy ze sobą
posortować to zobaczmy może kolejną rzecz
którą daje nam tablica na przykład możemy podstawiać elementy jeżeli
sobie stworzę tablicę names i będę miała takie elementy jak ada
julia ruby
czyli imiona jednocześnie nazwy języków programowania jeżeli
wezmę sobie na przykład names i element od danego
indeksu czyli mam 0 1 2 wezmę sobie na przykład julia i podstawię
w to miejsce python a następnie wyświetlę
names to element o indeksie
jeden czyli drugi nasz element na liście został podmieniony na python co
więcej możemy nasze tablice sortować czyli
jeżeli bym sobie stworzyła jakąś tablicy number i dała 1 2 3 4
to jest po kolei więc muszę powstawiać jakieś jeszcze nie po kolei niech będzie 7 12
54 tu sobie coś jeszcze postawię może
8 niech będzie po prostu bo bałagan ale nie było go ze spacją
więc je posprzątam i teraz wyświetlę
sobie number a pod spodem wyświetlę sobie number ale sort i
teraz kiedy wykonam ten kod pierwsza tablica będzie
nie posortowana będzie druga będzie posortowana a jak pewnie się domyślacie
kiedy wezmę znowu number to jest nie posortowana ponieważ
nie wykorzystałam wykrzyknika jak wykorzystam wykrzyknik
wykonam to tutaj zostaje napisane i number
już jest posortowana na stałe jeżeli byśmy chcieli na przykład
odwrócić nasze wartości w tablicy to możemy skorzystać z metody reverse
reverse dla zadanej tablicy po
prostu odwróci wszystkie elementy czyli jeżeli wykonam ten kod to pojawi
się 4 3 8 2 54 i tak dalej
czyli dokładnie odwrotnie niż są podane gdybyśmy chcieli je po prostu posortować
i odwrócić możemy dać sort i skorzystać z tego że jedną mamy na drugiej
i w tym momencie najpierw je posortujemy a potem ich kolejność odwrócimy
możemy też skorzystać z wycinania za pomocą zakresu czyli
chciałabym wyciąć sobie jakieś elementy powiedzmy od elementu trzeciego
czyli od drugiego indeksu do piątego i
wykonam wytnie mi 12 54 2 i 8 czyli
od tutaj dwunastki do ósemki włącznie a
kolejną rzeczą którą warto wiedzieć to to że elementy nie muszą być tego
samego typu czyli możemy stworzyć tablice z różnymi typami oczywiście dobrze
byłoby były one logiczne połączone ale nie ma takiego wymogu więc jeżeli
stworzę sobie jakąś przykładową tablicę powiedzmy 3 i 4 to
mogę do niej dodać jakiś dowolny element którym będzie jednak tekstem txt
tutaj sobie stworzę aby dodać kolejny element w
tablicy wykorzystam metodę push czyli wepchnij
dosłownie na tablicę jeżeli więc zrobię array kropka push
no i dodam tutaj jakiś ciąg znaków jakiś element nowy
a teraz tą tablicę wyświetlę zapiszę
wykonam to pojawi mi się 3 4 ta zmienna tekst
i a którą właśnie dorzuciłam inną metodą
które robi dokładnie to samo jest dosłownie aliasem metody push jest
metoda append append pojawia się też w innych językach programowania więc jest to
pewne ułatwienie dla programistów którzy przechodzą z jednego języka na drugi więc
mogę również wykonać array append podać
element na przykład bbb żebyśmy widzieli że one po kolei
się pojawiają i znowu wyświetlić naszą tablicę czyli
teraz tablica też ma ten ostatni element innym sposobem na
dodawanie elementów jest operator taka podwójna strzałka
czyli mam array 2 strzałki mogę
dodać mój element ccc na przykład i wyświetlić
p array jak zapisze to
tutaj widać może sobie przesunę albo nie przesunę tej
konsoli tutaj ale widać że mamy aa bb i pojawiło nam się właśnie
nowe cc kolejna rzecz która jest dosyć przydatna
to usuwanie elementów z tablicy możemy na przykład skorzystać z metody pop
która zdejmuje element z tablicy ostatni element czyli na przykład jeśli
wezmę sobie tutaj jakaś wartość niech będzie po
prostu może wezmę sobie zmienną a nie jest zbyt wiele mówiąca ale
na chwilę nam się tutaj przyda czyli zdejmuje z naszej tablicy dokładnie
jeden element i sobie ten element
mogę wyświetlić za pomocą p i zobaczę
co się stało z moją całą tablicą
czy zapisałam okej zapisałam czyli
zdjęliśmy ostatni element element c i tego elementu już nie ma
czyli w pewien sposób usunęliśmy element z tablicy ale go nie straciliśmy
bo zapisaliśmy jego wartość do nowej zmiennej jeżeli byśmy chcieli
tych elementów zdjąć więcej od końca możemy podać po prostu
ile elementów od końca chcemy zabrać z naszej tablicy czyli wykonuję
i teraz w nasza nowa zmienna a przechowuje wartość bbc i ccc a
nasza tablica już po prostu tych wartości nie zawiera innym
sposobem na usunięcie jest metoda delete i
zobaczmy jak ona zadziała czyli na array wykonam sobie delete
zapiszę wykonam i teraz widzę że nie zniknął żaden element ponieważ
jedynki nie ma na liście jeżeli bym ją tutaj dodała gdzieś że jest wartość
1 na naszej liście na chwilę to po usunięciu
jedynka zniknie tak tu cały czas była bo ją dodałam i
usunęłam element o takiej wartości może tą
jedynkę usunę a spróbuję usnąć na przykład tekst czyli podam
tu dokładnie wartość jako delete ma usunąć czyli wartość tekst teraz
z naszej tablicy zniknie element o wartości tekst inną metodą
którą na pewno warto znać jest metoda delete at ona
działa tak że jeżeli tu podam jakiś indeks czyli zamiast
tego delete wartość podam powiedzmy
index 0 to z naszej tablicy zostanie usunięty element
o indeksie 0 na indeksie 0 mamy trójkę więc trójka
znika z naszej tablicy tablice dostarczają
nam też cały szereg przydatnych metod możemy na przykład stworzyć
sobie string na podstawie danej tablicy czyli
wezmę sobie może w ten sposób że wyświetlę array kropka
metoda join która łączy i za pomocą czego ma połączyć elementy mojej
tablicy wykonam i
zapiszę wykonam widzę że wykonało się a b
c połączone myślnikiem mogę też po prostu wykonać
array kropka join bez żadnego elementu w tym momencie powstanie
mi abc połączone w nowy string bez elementu
łączącego po prostu domyślnie wartość jest pusta mogę też sprawdzić
czy jakiś element jest zawarty więc na przykład array include
znak zapytania literówka
bym miała i mogę sprawdzić czy dana tablica
zawiera na przykład literkę b jeżeli prawda no to zwróci nam
prawdę znak zapytania znowu nam przypomnę już to będzie metoda zwracająca prawda
fałsz mogę też sprawdzić co jest pierwszym elementem tablicy p
array kropka first i
zobaczmy a to jest dokładnie to samo no i jak byśmy sobie wzięli
wzięli po prostu pierwszy element na podstawie indeksu
czyli array od 0 i
zobaczymy że no to są to jest dokładnie ten sam element możemy też
wziąć element który jest ostatni czyli array kropka last
jeżeli nie wiemy jaki on ma indeks bo jest ich bardzo dużo to jest to bardzo wygodne
i to będzie dokładnie to samo co array minus
1 i zobaczmy rzeczywiście last
to jest to samo co array minus 1 ostatnią rzeczą którą
chcę wam pokazać przy okazji tablic to tworzenie tablicy która ma dwa wymiary czyli tablicy
dwuwymiarowej mogę utworzyć sobie tablicę nazwę ją
2d która będzie zawierała w środku kolejną
tablicę na przykład będzie miała elementy 0 0 przecinek
0 1 czyli kolejne liczby dziesiętne
ja ja sobie tak stworzyłam że 0 będzie mi odpowiadało za wiersz i drugie 0
za kolumnę w ten sposób 0 0 wiem że znajduje się na pozycji 0 0 w mojej tablicy i
teraz drugie będzie miało 1 0 bo
to drugi wiersz tou będziemy mieć 1 1
1 2 no i analogicznie
ostatni będzie wiersz zaczyna się od 2 0 2 1
2.2 czyli widzimy że w środku tablicy dwuwymiarowej
kolejne nasze tablice są
wymieniane po przecinku ostatnia nie zawiera tego przecinka mogę
sobie tą tablicę tab 2d wyświetlić ona zostanie niestety
spłaszczona przez naszego rubiego więc tu mamy wszystkie elementy po kolei
jednak myślę że ten zapis wizualnie jest przyjemniejszy dla was i
mogę dostać się do na przykład środkowego elementu żeby dostać się do niego
muszę podać po prostu środkowy index wiersza i kolumny mam
3 na 3 indeksujemy od zera 0 1 i tu też będzie 0 1
czyli tablice 1 1 zobaczę ten element wyświetli
mi się element 1.1 właśnie po to stworzyłam sobie w ten sposób
żeby było wizualnie widać że ta kropka to liczba dziesiętna od razu podpowiada
gdzie jesteśmy mogę też sprawdzić element w pierwszym wierszu
na ostatniej pozycji czyli dwójce i zobaczysz
czy rzeczywiście w pierwszy wierszu na ostatnim w ostatniej kolumnie mam 0 2 kolejna rzecz która
się czasem przydaje na przykład do szybkiego generowania pól załóżmy
że chcielibyśmy stworzyć sobie grę w statki i stworzyć tablice która by miała 10
wierszy i 10 kolumn to
mogę utworzyć taką bardzo szybką tablicę dwuwymiarową właściwie w jednej linii
jak będzie to wyglądało czyli moja nowa tablica jakieś tam array
będzie wypełniona na starcie zerami będzie
miała tyle kolumn a następnie muszę
to jeszcze pomnożyć razy tyle wierszy czyli
kolumn czyli teraz jak zapiszę mogę
wyświetlić moją tablicę ona będzie składała się z samych zer
będzie ich bardzo dużo widzimy tablicę 10 na 10 nam powstała
remove_elem · 4 min
a = arr.pop(2)
p a
p arr
arr.delete(1)
arr.delete_at(0)
p arradd_elem · 3 min
arr = [3,4, "txt"]
arr.push("aaa")
p arr
arr.append('bbb')
p arr
arr << "ccc"
p arrsort · 2 min
num = [1,7,12,54,2,8,3,4]
p num
p num.sort
p num
p num.reverse
p num
p num.sort.reversetablice 2D · 6 min
tab2D = [
[0.0, 0.1, 0.2],
[1.0, 1.1, 1.2],
[2.0, 2.1, 2.2]
]
p tab2D[0][2]
row = 10
col = 10
arr = [[0] * col] * row
p arr[0]intro
hobbits = ["Frodo", "Pippin", "Sam", "Merry"]
grades = [1,2,3,4,5,6]
p hobbits
p grades
p hobbits + grades
p [1, 3, 2, 4] - [1, 2, 3]
p [1, 3, 2, 4, 6] & [1, 2, 3, 8]
p arr = ([1, 3, 2, 4, 6] & [1, 2, 3, 8]).sortmetody · 5 min
arr = ["a", "b", "c"]
p arr.join("-")
p arr.join
p arr.include?("b")
p arr.first
p arr.first == arr[0]
p arr.last
p arr.last == arr[-1]podstawienie elementu · 1 min
names = ["Ada", "Julia", "Ruby"]
names[1] = "Python"
p names