Untitled - Vitajte na stránkach www.einsty.hostujem.sk
Untitled - Vitajte na stránkach www.einsty.hostujem.sk
Untitled - Vitajte na stránkach www.einsty.hostujem.sk
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
Skriptovanie s Ruby<br />
V tomto èlánku by som vám rád predstavil ve¾mi zaujímavý <strong>sk</strong>riptovací programovací<br />
jazyk Ruby. Možno si práve hovoríte: Preèo niekto zaène vyvíja ïalší programovací<br />
jazyk, keï ich už je tak ve¾a (Perl, Python, PHP, Java, Smalltalk...)? Autor<br />
Ruby (Japonec Yukihiro Matsumoto) nebol spokojný ani s jedným jazykom. Ako<br />
fanúšikovi objektového programovania mu prekážalo, že niektoré jazyky majú<br />
objektové programovanie realizované ako <strong>na</strong>dstavbu (Perl, PHP), alebo hoci o sebe<br />
tvrdia, že sú úplne objektové (Python), nie je to úplne pravda, a keï sú <strong>na</strong>ozaj úplne<br />
objektové (Smalltalk), tak ich syntax nie je ve¾mi prívetivá. A tak zaèal vyvíja jazyk<br />
Ruby, ktorého prvá verzia uzrela svetlo sveta v roku 1995. Autor mu do vienka dal<br />
ešte jednu ve¾mi príjemnú vlastnos , ktorú <strong>na</strong>jlepšie vystihuje tento citát: „Verím,<br />
že zmyslom života je, teda aspoò sèasti, by š astný. Na základe tejto mojej viery je Ruby<br />
<strong>na</strong>vrhnutý tak, aby programovanie nebolo len ¾ahké, ale aj zábavné. Umožní vám<br />
sústredi sa <strong>na</strong> kreatívnu stránku programovania s èo <strong>na</strong>jmenším stresom. Ak mi<br />
neveríte, vy<strong>sk</strong>úšajte Ruby. Verím, že mi potom dáte za pravdu.“<br />
V tomto èlánku vám predstavím nieko¾ko jeho charakteristických vlastností.<br />
VLASTNOSTI<br />
Premenné. Prvý z<strong>na</strong>k premennej urèuje, o aký typ ide. Lokálne premenné,<br />
parametre metód a mená metód sa zaèí<strong>na</strong>jú malý písmenom alebo podèiarkovníkom.<br />
Pred globálne premenné sa píše dolár ($) a pred premenné inštancií<br />
sa píše zavináè (@). Pred premenné tried (takto sa v Ruby volajú statické premenné<br />
tried) sa píše dvakrát zavináè (@@). Mená tried a konštanty sa zaèí<strong>na</strong>jú<br />
ve¾kým písmenom. Tento spôsob oz<strong>na</strong>èovania premenných vám berie síce<br />
vo¾nos , ale vy<strong>na</strong>hradí to ve¾mi dobrou èitate¾nos ou kódu.<br />
Príklad premenných:<br />
Lokálne Globálne Inštancií Tried Konštanty a mená<br />
tried<br />
ryba $ryba @ryba @@ryba PI<br />
_medved $Medved @_medved @@Medved_velky String<br />
slon $SLON @Slon @@_SLON MojaTrieda<br />
PRIRADENIE. Priradenie v Ruby sa správa trocha i<strong>na</strong>k než vo väèšine jazykov.<br />
Ne<strong>sk</strong>opíruje hodnotu premennej z pravej strany do premennej <strong>na</strong> ¾avej<br />
S O F T W A R E<br />
strane (priradenie hodnotou), ale vytvorí odkaz <strong>na</strong> premennú <strong>na</strong> pravej strane<br />
(priradenie odkazom). V praxi sa môže sta , že sa nám „záhadne“ zmení obsah<br />
premennej, ak si neuvedomíme, že <strong>na</strong> òu môže ukazova aj iná premenná.<br />
a = b = c = “Zahad<strong>na</strong> zme<strong>na</strong>“<br />
b.concat(“aabbcc“)<br />
puts a<br />
puts b<br />
puts c<br />
Tento kúsok kódu zobrazí trikrát re azec “Zahad<strong>na</strong> zme<strong>na</strong>aabbcc“. Premenné<br />
a , b aj c obsahujú ten istý text, pritom sme modifikovali iba premennú<br />
b. To preto, že všetky premenné ukazujú <strong>na</strong> jeden a ten istý re azec.<br />
IF. Príkaz if má jednu príjemnú vlastnos , a síce tú, že je to zároveò výraz.<br />
To z<strong>na</strong>mená, že ho môžete použi vo výrazoch alebo priradi jeho hodnotu premennej.<br />
Oproti terárnemu operátoru ?:, ktorý je <strong>na</strong>pr. v C++, má toto riešenie<br />
výhodu v tom, že v if sa dá vola viacero príkazov a návratová hodnota<br />
(odkaz :) z if je to, èo vrátil posledný volaný príkaz v danej vetve. Lepšie to<br />
<strong>na</strong>z<strong>na</strong>èí príklad:<br />
puts “Na co mate chut?“<br />
puts “1. ba<strong>na</strong>novy kokteil“<br />
puts “2. jahodovy kokteil“<br />
kokteil = if (key = gets) == “1“<br />
suroviny = <strong>sk</strong>lad.zober(“ba<strong>na</strong>n“, “vanilkovy cukor“, “mlieko“)<br />
kokteil1 = mixer.mixuj(suroviny)<br />
kokteil1<br />
elsif key == “2“<br />
suroviny = <strong>sk</strong>lad.zober(“jahody“, “vanilkovy cukor“, “mlieko“)<br />
mixer.mixuj(suroviny)<br />
end<br />
osoba.vypi(kokteil)<br />
Premenná kokteil bude obsahova kokteil, ktorý vráti if výraz. V prvej<br />
vetve sme uložili kokteil do pomocnej premennej a jej hodnotu sme použili ako<br />
návratovú hodnotu príkazu/výrazu if. Toto však nie je jediný spôsob. Keïže<br />
výraz kokteil1 vráti objekt kokteil a samotný if výraz vráti poslednú návratovú<br />
hodnotu, teda hodnotu z mixer.mixuj, nemusíme vôbec pomocnú<br />
premennú použi . Toto je použité v druhej vetve.<br />
PLNE OBJEKTOVÝ. Z<strong>na</strong>mená to len to¾ko, že všetko je objekt. Ukážeme si<br />
to <strong>na</strong> jednoduchom príklade, kde porovnáme Javu a Ruby. Obidva príklady<br />
12/2001 PC REVUE 113