Przejdź do treści

Centrum Kształcenia Zawodowego i Ustawicznego w Mrągowie

Hello Ruby!

czwartek,

Hello Ruby!

W materiale zaprezentowano podstawy programowania w języku Ruby, od instalacji środowiska poprzez ćwiczenia w interaktywnej konsoli po napisanie i uruchomienie pierwszego programu.

Prawdopodobnie nie masz zamiaru kompilować Ruby z kodu źródłowego, dlatego możesz posłużyć się gotowymi pakietami. Dla systemów Windows dobra opcja to narzędzie RubyInstaller. Jeśli jesteś początkujący, podczas instalacji zachowaj wszystkie opcje domyślne. Pierwsze kroki w języku Ruby najłatwiej wykonać w interaktywnej konsoli Ruby, w systemie Windows znajdziesz ją w menu Start, w zakładce „Ruby” kliknij skrót „Interactive Ruby”.

W dużych dystrybucjach Linuksa Ruby można zainstalować za pomocą systemowego menedżera pakietów. Poniżej znajdziesz odpowiednie polecenie dla systemów Debian/Ubuntu, w innych dystrybucjach wygląda to podobnie, główna różnica to inny menedżer pakietów. Interaktywną konsolę Ruby można uruchomić wydając w polecenie irb w konsoli.

sudo apt install ruby

W systemach firmy Apple (macOS, OS X) Ruby jest instalowany fabrycznie. Aby uruchomić interaktywną konsolę Ruby, w konsoli wpisz polecenie irb.

Prezentowane przykłady będą działać niezależnie od systemu operacyjnego. Tradycyjnym początkowym elementem kursów programowania jest program „Hello World!”. Uruchom konsolę Ruby i wpisz swoje pierwsze polecenie w tym języku.

irb(main):001:0> puts "Hello CKZiU!"
Hello CKZiU!
=> nil

W powyższym przykładzie pierwsza linia to wprowadzone polecenie, ostatnia to informacja o jego wyniku. Polecenie puts nie zwraca żadnej wartości, dlatego wyświetlono nil, co oznacza brak wartości. Ruby doskonale radzi sobie z matematyką, poniżej znajdziesz kilka prostych działań.

irb(main):002:0> 3+2
=> 5
irb(main):003:0> 3*2
=> 6
irb(main):004:0> 3**2
=> 9

Operator dzielenia wymaga dodatkowego wyjaśnienia, bo dla początkujących jego działanie może być zaskoczeniem.

irb(main):005:0> 5/2
=> 2

Wynik został „obcięty” do liczby całkowitej, ponieważ argumentami działania były liczby całkowite. Aby otrzymać prawidłowy wynik, wystarczy jedną z nich zapisać jako liczbę zmiennoprzecinkową.

irb(main):006:0> 5.0/2
=> 2.5

Dużo więcej możliwości matematycznych daje moduł Math.

irb(main):007:0> Math.sin(90)
=> 0.8939966636005579

Jeśli trochę kojarzysz trygonometrię, to zauważysz, że wynik jest nieoczekiwany, stało się tak, bo metoda sin() jako parametru oczekuje wartości wyrażonej w radianach. Wiedząc o tym, łatwo dokonać odpowiedniej konwersji, przy tej okazji wykorzystano zdefiniowaną w module Math stałą PI.

irb(main):008:0> Math.sin(90 * Math::PI/180)
=> 1.0

Jeśli chcesz zapamiętać wynik obliczeń, możesz przypisać go do zmiennej.

irb(main):009:0>  a = 2 + 3
=> 5
irb(main):010:0> 2 * a
=> 10

Oczywiście w języku Ruby w zmiennej można zapisać dane od użytkownika.

irb(main):011:0> name = gets
Andrzej
=> "Andrzej\n"

Wprowadzenie danych zatwierdzono klawiszem Enter, dlatego w zmiennej znalazł się także znak nowego wiersza (\n). Aby tego uniknąć, można zastosować metodę chomp.

irb(main):012:0> name = gets.chomp
Andrzej
=> "Andrzej"

Próba wykonywania obliczeń operujących na wprowadzonych przez użytkownika danych zakończy się niepowodzeniem.

irb(main):013:0> x = gets.chomp
2
=> "2"
irb(main):014:0> x * 2
=> "22"
irb(main):015:0> x.class
=> String

Pobrana wartość jest traktowana jako łańcuch znaków, dlatego próba mnożenia przez dwa zakończyła się nieoczekiwanym wynikiem. Aby dane były traktowane jak liczby, wymagana jest konwersja typów. Metoda to_i konwertuje wartość na liczbę całkowitą, metoda to_f na liczbę zmiennoprzecinkową.

irb(main):016:0> x = gets.to_i
2
=> 2
irb(main):017:0> x * 2
=> 4

Deklarowanie metod daje możliwość wykorzystywania ich wielokrotnie, docenisz to, kiedy zaczniesz programować na poważnie. Deklaracja metody rozpoczyna się słowem kluczowym def, po którym następuje nazwa metody. W nawiasie zawarte są parametry metody. Deklarację kończy słowo kluczowe end.

irb(main):018:1* def suma(a, b)
irb(main):019:1*   puts a+b
irb(main):020:0> end
=> :suma
irb(main):021:0> suma(4, 5)
9
=> nil

Zadeklarowana powyżej metoda wypisuje obliczony wynik działania, będzie ona bardziej uniwersalna, jedynie zwracając wartość, można wtedy wykorzystać wynik w innym celu, np. zapisać do zmiennej lub użyć go do kolejnych obliczeń. Do tego typu konstrukcji używa się słowa kluczowego return.

irb(main):022:1* def suma(a, b)
irb(main):023:1*   return a+b
irb(main):024:0> end
=> :suma
irb(main):025:0> suma(4, 5) *2
=> 18

Po solidnym przygotowaniu w interaktywnej konsoli Ruby nastał czas, żeby napisać jakiś program. Można to zrobić w zwykłym edytorze tekstu, np. windowsowym Notatniku. W systemie Windows po instalacji środowiska z pomocą RubyInstaller wystarczy wpisać kod do pliku i zapisać go z rozszerzeniem rb, np. jako hello.rb. Program wywołasz, klikając dwukrotnie jego ikonę. Żeby okno programu nie zniknęło natychmiast po wykonaniu kodu, na końcu pliku dołącz wywołanie systemowej funkcji pause (system "pause").

W systemach innych niż Windows, rozszerzenie pliku ma tylko informacyjny charakter i jest opcjonalne. Program zapisany w pliku można wywołać w konsoli, przykład przedstawiono poniżej. Nie prezentujemy innych sposobów uruchamiania programów w języku Ruby, jednak warto wiedzieć, że są one dostępne.

ruby hello.rb

Prezentowany program oblicza pole prostokąta na podstawie wprowadzonych przez użytkownika danych. Wykorzystano w nim przedstawione poprzednio możliwości języka. Podczas wprowadzania danych, pamiętaj, że część całkowitą od części ułamkowej w zapisie liczby oddziela się kropką. Ostatni wiersz programu to przykład połączenia łańcucha znaków z wyrażeniem w języku Ruby, stosuje się do tego znak hash oraz nawiasy klamrowe.

puts "-------------------------------"
puts "Program oblicza pole prostokąta"
puts "-------------------------------"
puts "Wprowadź długość boku a: "
a = gets.to_f
puts "Wprowadź długość boku b: "
b = gets.to_f
puts "Pole prostokąta wynosi: #{a*b}"
Artykuł: Harmonogram egzaminów maturalnych

Harmonogram egzaminów maturalnych

Artykuł: Staże w Hiszpanii

Staże w Hiszpanii

Artykuł: Conformité Européenne

Conformité Européenne

Artykuł: Display Stream Compression

Display Stream Compression

Artykuł: High Dynamic Range

High Dynamic Range

Nasze technikum

Technik informatyk

Szkoły dla dorosłych

Nasza szkoła

Pełna oferta edukacyjna

Oferta szkoły