Żeby wyświetlić na STDOut dane mamy do dyspozycji:
p
puts
W tym skrypcie będziemy wyświetlali string:
str="jestem wyswietlany przez: "
Są duże różnice w tych wywołaniach, ale są widoczne na pierwszy rzut oka.
Cały skrypt wygląda tak:
str="jestem wyswietlany przez: " p "#{str} p" puts "#{str} puts" print "#{str} print" puts "--=to jest koniec skryptu==--" |
puts od print, różni się dodaniem znaku EOL na końcu wyświetlanych danych. Czyli puts zakończy nam linijkę, a print nie, czyli, żęby estetycznie wyglądało musiałem na końcu dodać puts. Inaczej prompt konsolowy “zlałby się” z wynikiem skryptu.
Wykonanie skryptu:
$ ruby1.9.1 ruby.rb "jestem wyswietlany przez: p" jestem wyswietlany przez: puts jestem wyswietlany przez: print--=to jest koniec skryptu==-
Widać ładnie ;)
Poza tymi standardowymi metodami są jeszcze inne, ale w tym momencie odsyłam do dokumentacji.
Pobieranie danych.
Robimy to za pomocą wartości gets. Pierwszą linijkę skryptu zamieniamy na:
str=gets |
Jest to najbardziej tradycyjna metoda. Ma jednak wadę. Przy wczytywaniu danych wczytuje też ostatni znak podany z klawiatury, czyli EOL.
Przy tej metodzie należy się uciąć ten ostatni znak ze stringu przy użyciu .chomp. Skrypt wygląda teraz tak:
str=gets.chomp p "#{str} p" |
puts
“#{str} puts”
print “#{str} print”
puts “–=to
jest koniec skryptu==–”
A jego wykonanie tak:
$ ruby1.9.1 ruby.rb sagasgasg "sagasgasg p" sagasgasg puts sagasgasg print--=to jest koniec skryptu==--
Jako drobną poprawkę, bardziej estetyczną, przed ostatnią linijkę zamieniamy na:
print "#{str} printn" |
Da nam to taki wynik:
$ ruby1.9.1 ruby.rb wehWWaehae "wehWWaehae p" wehWWaehae puts wehWWaehae print --=to jest koniec skryptu==--
Czyli jakby zamieni print w puts.
gets pobiera dane wejściowe jako stringi. Konwersja do innego typu wygląda tak:
str.to_i przekształca do integera
str.to_s przekształca w łańcuch znaków
str.to_f przekształca do liczby zmiennoprzecinkowej
Pobranie danych i przekonwertowanie ich “w locie” tak:
print "podaj pierwsza liczbe: " liczba1=gets.chomp.to_i print "podaj druga liczbe: " liczba2=gets.chomp.to_i puts "po dodaniu: #{liczba1+liczba2}" |
Wykonanie skryptu to:
$ ruby1.9.1 ruby.rb
podaj pierwsza liczbe: 2
podaj druga liczbe: 2
po dodaniu: 4
A teraz zobaczmy co się stanie gdy ze skryptu usunę to_i
$ ruby1.9.1 ruby.rb
podaj pierwsza liczbe: 432
podaj druga liczbe: 3
po dodaniu: 4323
Stało się tyle, że interpreter Ruby dodał do siebie stringi. Nie liczby, bo liczb tam nie było.
Teraz przyjrzyjmy się ciekawostce konwertera liczb:
Jak łatwo zmienić zapis liczbowy:
liczba.to_i(podstawa) |
oznacza tylko co, przekształć podaną w liczbę tak by podać jej wynik w podanym systemie liczbowym podstawie podanej w nawiasie.
liczba="1010101110101" for i in 2..10 puts "wartosc w #{i} systemie liczbowym to: "+liczba.to_i(i).to_s end |
Skrypt da taki wynik:
wartosc w 2 systemie liczbowym to: 5493 wartosc w 3 systemie liczbowym to: 598114 wartosc w 4 systemie liczbowym to: 17896721 wartosc w 5 systemie liczbowym to: 254316276 wartosc w 6 systemie liczbowym to: 2238983893 wartosc w 7 systemie liczbowym to: 14129664158 wartosc w 8 systemie liczbowym to: 69810294849 wartosc w 9 systemie liczbowym to: 285959964736 wartosc w 10 systemie liczbowym to: 1010101110101
Należy dodać, że wartość podstawy to zakres liczbowy 2..32.
Zakresy były pokazane w dziale z pętlami.*