Ruby/Proste przykłady: Różnice pomiędzy wersjami

Usunięta treść Dodana treść
Szymon wro (dyskusja | edycje)
Szymon wro (dyskusja | edycje)
Nie podano opisu zmian
Linia 1:
== Proste przykłady ==
 
Napiszmy funkcję obliczającą silnię. Matematyczna definicja silni <tt>n</tt> to:
 
<pre>
n! = 1 (gdy n==0)
= n * (n-1)! (w innym przypadku)
</pre>
 
W Rubim możemy ją napisać w następujący sposób<ref>Aby ułatwić zrozumienie, kod źródłowy we wszystkich przykładach został przetłumaczony na język polski (identyfikatory, łańcuchy znakowe, komentarze). Ponieważ Ruby w wersji stabilnej nie obsługuje jeszcze w pełni standardu Unicode, polskie znaki diaktryczne zostały zamienione na ich łacińskie odpowiedniki (''ś'' na ''s'', ''ł'' na ''l'', itd...). Należy jednak wspomnieć, że powszechnie przyjęte i zalecane jest stosowanie języka angielskiego przy tworzeniu kodu niemalże w każdym języku programowania.</ref>:
 
<source lang="ruby">
<pre>
def silnia(n)
if n == 0
1
else
n * silnia(n-1)
end
end
</presource>
 
Warto zauważyć powtarzające się wyrażenie <tt>end</tt>. Ruby nazywany jest przez to "algolopodobnym" językiem programowania. Właściwie, składnia Rubiego bardziej przypomina inny język - Eiffel. Można także zauważyć brak wyrażeń <tt>return</tt>. Nie są one potrzebne, ponieważ funkcja w Rubim zwraca ostatnią wartość, która była w niej liczona. Używanie wyrażenia <tt>return</tt> jest dozwolone, lecz niepotrzebne.
Linia 24 ⟶ 23:
Wypróbujmy naszą funkcję silni. Dodanie jednej linii kodu daje nam działający program:
 
<source lang="ruby">
<pre>
# Program, który liczy wartość silni z danej liczby
# Zapisz go jako silnia.rb
 
def silnia(n)
if n == 0
1
else
n * silnia(n-1)
end
end
 
puts silnia(ARGV[0].to_i)
</presource>
 
<tt>ARGV</tt> jest tutaj tablicą zawierającą argumenty linii poleceń, a <tt>to_i</tt> konwertuje łańcuch na liczbę całkowitą.
 
<pre>
% ruby silnia.rb 1
1
% ruby silnia.rb 5
120
</pre>
 
Linia 51 ⟶ 50:
 
<pre>
% ruby silnia.rb 40
815915283247897734345611269596115894272000000000
</pre>
 
Linia 58 ⟶ 57:
 
<pre>
% ruby silnia.rb 400
64034522846623895262347970319503005850702583026002959458684
44594280239716918683143627847864746326467629435057503585681
08482981628835174352289619886468029979373416541508381624264
61942352307046244325015114448670890662773914918117331955996
44070954967134529047702032243491121079759328079510154537266
72516278778900093497637657103263503315339653498683868313393
52024373788157786791506311858702618270169819740062983025308
59129834616227230455833952075961150530223608681043329725519
48526744322324386699484224042325998055516106359423769613992
31917134063858996537970147827206606320217379472010321356624
61380907794230459736069956759583609615871512991382228657857
95493616176544804532220078258184008484364155912294542753848
03558374518022675900061399560145595206127211192918105032491
00800000000000000000000000000000000000000000000000000000000
0000000000000000000000000000000000000000000
</pre>
 
Linia 83 ⟶ 82:
 
<pre>
% ruby
puts "witaj swiecie"
puts "zegnaj swiecie"
^D
witaj swiecie
zegnaj swiecie
</pre>
 
Linia 98 ⟶ 97:
 
<pre>
% ruby eval.rb
ruby> puts "Witaj, swiecie."
Witaj, swiecie.
nil
ruby> exit
</pre>