07.06.2015 Views

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

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!