Info 2, Nyolcadik heti előadás: ruby bevezetés

Utolsó módosítás: 2009. április 2.

A ruby nyelv honlapja a http://www.ruby-lang.org/. Innen a ‚Download Ruby’ feliratnál letöltheti a ruby nyelv értelmezőjét a számítógépére. (Lehet használni az 1.8.5, 1.8.6, 1.8.7, vagy 1.9.1 verziókat, az elsőnél régebbit nem ajánlom.)

A C nyelvben az alapvető műveletek olyanok, amiket a számítógép processzora könnyen (egy-két lépésben) végre tud hajtani, ezért a C nyelvű forráskódot fordítóval közvetlenül futtatható gépi kóddá alakítjuk. Bonyolultabb műveleteket a C nyelvben függvényhívásokkal érünk el. Ezzel szemben a ruby nyelv egyszerű műveletei bonyolultabbak, így a ruby nyelvű programot az értelmező (interpreter) futtatja.

Egy ruby programot úgy futtathatunk le, hogy a forráskódot egy .rb kiterjesztésű fájlba mentjük le, majd a ruby parancsot meghívjuk, parancssori argumentumként a forrásfájl nevét átadva. (Érdemes a program neve előtt a -w argumentumot is átadni, hogy az értelmező figyelmeztessen bizonyos hibákra.)

Nézzünk egy példát. Mentsük le a következő két soros programot h8g0.rb néven.

x = 8
puts(6 * x)
Majd írjuk be a parancssorba a következő parancsot:

ruby -w h8g0.rb

Ekkor a program kiírja, hogy

48

Használhatjuk a ruby-t interaktív módon is, ehhez az irb programot kell elindítani. Nézzünk egy példát.

$ irb
irb(main):001:0> a = 8
=> 8
irb(main):002:0> 6 * a
=> 48
irb(main):003:0> puts(6 * a)
48
=> nil
irb(main):004:0> exit
$ 

Nézzünk egy bonyolultabb példát. A h8g1.rb program forráskódja a következő.

regi = [1]
n = 1;
while n < 10;
        uj = [];
        k = 0;
        while k <= n;
                s = 0;
                if 0 < k;
                        s += regi[k - 1];        
                end;
                if k < n;
                        s += regi[k];
                end;
                uj[k] = s;
                k += 1;
        end;
        p uj;
        regi = uj;
        n += 1;
end;

Kimenete pedig a következő, ha a ruby -w code/h8g1.rb paranccsal futtatjuk.

[1, 1]
[1, 2, 1]
[1, 3, 3, 1]
[1, 4, 6, 4, 1]
[1, 5, 10, 10, 5, 1]
[1, 6, 15, 20, 15, 6, 1]
[1, 7, 21, 35, 35, 21, 7, 1]
[1, 8, 28, 56, 70, 56, 28, 8, 1]
[1, 9, 36, 84, 126, 126, 84, 36, 9, 1]