Archiv rubriky „Ruby“
Ruby - metody 2.díl: proměnný počet argumentů
V předcházejícím díle jsme měli možnost seznámit se se základy tvorby metod v jazyku Ruby. Nyní samozřejmě naše znalosti budeme prohlubovat. V dnešním článku bychom si měli říci něco málo k proměnnému počtu argumentů funkce. Tak tedy pojďme na to:
13. 2. 2010 | gisat_cz | 1
Ruby - metody: 1. díl Úvod do metod
Na delší dobu jsem se odmlčel, za což se velmi omlouvám. Bohužel pro pracovní vytížení nebyl čas na napsání dalšího článku. Po 14 článcích věnovaných jazyku Ruby následuje jeho další pokračování, tentokrát se na několik dílů ponoříme za taji vytváření, volání a dalším nakládání s metodami.
1. 2. 2010 | gisat_cz | 5
Ruby - break, redo a next v cyklech
Již nějakou dobu se zabýváme v našem povídání o jazyku Ruby cykly. Pokud jste četli předchozí články, jistě jste zjistili, že práce s cykly je mnohdy v Ruby mírně odlišná od aplikace cyklů v jiných programovacích jazycích.
Dnes bychom si měli něco říct o další možné součásti cyklů, jsou to příkazy break, redo a next. Tyto předchozí příkazy jsou využívány ve spojení cyklů, u kterých se vyskytují tzv. iterátory.
23. 8. 2009 | gisat_cz | 0
Ruby - cyklus for a iterátory
Již několik dílů povídání o jazyku Ruby jsme se zabývali cykly. Dnes bychom si měli představit cyklus for. Umožňuje nám iterovat, neboli procházet nějakými hodnotami, ale jeho užití je odlišné od používání v jiných programovacích jazycích, ale o tom si povíme za chvilku.
Pokračování příspěvku » »
3. 8. 2009 | gisat_cz | 1
Ruby - cyklus while a until

CYKLUS WHILE:
Dalším hojně využívaným cyklem v jazyku Ruby je cyklus while.
Je velmi využívanou formou cyklu. Opět si vše ukážeme na příkladu: Představte si, že budete chtít opakovat nšjaký text až do doby než uživatel zmáčkne na klávesnici počítače písmeno k:
while($_!= “k”)
puts “Nezmáčkli jste písmeno k”
puts “Tento příklad ukončíte stiskem písmena k”
gets
chomp
end
Tady vidíte že konstrukce cyklu while je podobná například konstrukci if. Stejný význam jako má cyklus while má i cyklus for, o kterém si řekneme v dalším článku.
CYKLUS UNTIL:
Opět tu je jeden příkaz Ruby, který se mi zdá poněkud zbytečný, pokud jste se v některém mém předchozím článku setkali s cyklem unless tak cyklus until má podobnou funkci. Jednoduše se provede tehdy, když daný jev není pravdou. Podívejte se na příklad:
until($_== “k”)
puts “Nezmáčkli jste písmeno k”
puts “Tento příklad ukončíte stiskem písmena k”
gets
chomp
end
Jak vidíte výsledek příkladu s until vykonává přesný opak, vykoná kód tehdy pokud jste nezmáčkli na klávesnici počítače písmeno k. V dalším díle se budeme věnovat cyklu for.
30. 7. 2009 | gisat_cz | 1
Ruby - příkaz case a ternární operátor

Ruby disponuje příkazem case, který se do jisté míry odpovídá příkazu switch. Prakticky se jedná o vícecestný příkaz if, a to velmi silný příkaz.
Dejme tomu, že byste měli proměnou, která vyžaduje větší množství instrukcí, a u nějaké se na základě rozhodnutí potřebujete zastavit a u jiné ne. Tak právě pro tyto případy je výhodnější než používat sadu if a elsif používat příkaz case.
Opět se radši podívejme na příklad:
prikaz=”pátek”
case prikaz
when “pondělí”
puts “Cože zase začátek pracovního týdne?”
when “úterý”
puts “sláva jeden den za sebou”
when “středa”
puts “půlka týdne pryč”
when “čtvrtek”
puts “blíží se pátek”
when “pátek”
puts “sláva bude víkend”
else “Tak to je opravdu nějaká chyba”
end
Pokud bychom to takto nenapsali, museli bychom vytvořit kód, který by byl směsicí příkazů if a elsif. Takto se celé konstrukci vyhneme nádherným příkazem case.
TERNÁRNÍ OPERÁTOR:
Jedná se opět o jednoduchou konstrukci, pomocí níž můžeme zpracovávat nějakou podmínku. Jeho syntaxe je následná:
podmínka ? pravdivá hodnota : nepravdivá hodnota
podívejte se na příklad:
den=”pátek”
vysledek=den!=”čtvrtek” ? “je jiný den” : “je pátek”
puts vysledek
29. 7. 2009 | gisat_cz | 2
Ruby - příkaz unless

V předchozím díle jste poznali příkaz if. Jazyk Ruby však disponuje také příkazem, který znamená právě opak příkazu if. Smysl příkazu unless bychom mohli přirovnat českému pokud není. Prostě se vykoná podmínka jestliže se vyhodnotí jako nepravdivá.
Vše si jako obvykle vysvětlíme na příkladu:
cast_dne=”noc”
unless (cast_dne==”den” )
puts “Dobrou noc”
end
Prostě se příkaz vykoná tehdy, není-li splněna podmínka, konkrétně tedy příkaz unless se vypíše tehdy pokud proměná cast_dne se nebude rovnat hodnotě den.
U příkazu unless nemůžeme používat příkaz elsif, také neexistuje opačný příkaz k příkazu elsif. Velmi často se příkaz unless používá s příkazem if:
jmeno==”Jirka”
if(jmeno==”Jirka”)
puts “To je Jirka”
end
unless(jmeno==”Petr”)
puts LTo je jiný člověk”
end
26. 7. 2009 | gisat_cz | 6
Ruby - podmíněný operátor if a else

Prozatím jsme se zabývali Jazykem Ruby jen povrchně. Nyní bychom se měli ponořit do větších hloubek. Abychom mohli psát své skripty, musí se náš skript umět rozhodnout mezi nějakými možnostmi. Podmíněné operátory tak zvyšují použitelnost programových skriptů.
Díky nim můžeme plnohodnotně programovat. Jazyk Ruby ostatně jako ostatní programovací jazyky obsahuje prvky pracující s určitou podmínkou. My si dnes povíme o jedné z nich. Jmenuje se if.
Konstrukce podmíněného operátoru if je mírně odlišná od jiných programovacích jazyků, například PHP nebo Java mají úplně jinou syntaxi.
Nejlépe bude, když si ukážeme úvodem nějaký příklad:
jmeno=”Jirka”
if(jmeno==”Jirka”)
puts “Jméno je: Jirka”
end
Jak vidíte celá syntaxe příkladu je tak trochu neobvyklá. Například když jsem se já učil příkazu if, bylo to pro mne tak trošku netradiční, byl jsem zvyklý z Javy, PHP a jiných jazyků na lepší srozumitelnější syntaxi.
Prostě celý příkaz začíná deklarací if, do závorek dáte Vaše podmínky, pak následuje to co se má vykonat na základě podmínek a celý příkaz je ukoncen výrazem end.
Do podmínek samozřejmě můžeme použít také operátory && a || což znamená a zároveň , nebo, opět si to ukážeme na příkladu:
cena=500
if(cena==500 && cena !=550)
puts “Správná cena”
end
Vysvětlení celého příkladu je prosté, jestlliže cena je rovna 500 a zároveň se cena nerovná 550 vypiš větu správná cena. Jak vidíte operátor if není nic složitého.
Pokud máte zkušenost z nějakého jiného programovacího jazyka, tak Vám tady něco chybí. Jakási klausule jinak, tedy else, i jazyk Ruby takovouto klauzulí disponuje. Ukažme si to tedy na příkladě:
cena=500
if(cena==500 && cena !=550)
puts “Správná cena”
else
puts “Špatná cena”
end
Jak vidíte klausule else se vkládá za vykonanou podmínku operátoru if, těsně před ukončení příkazu slůvkem end. Značí zhruba toto: jestliže cena se bude rovnat 500 a zárověň se nebude rovnat 550 vypiš větu Správná cena, jinak(v jiných případech, tedy že cena nebude 500 a bude se rovnat 550) napiš větu Špatná cena.
Mnohdy však příkaz else potřebujete více specifikovat. Například jestliže se cena bude rovnat 600, prostě pokud budete chtít vykonat reakci na nějakou událost, která není podchycena v podmínce if, podívejme se na příklad:
cena=500
if(cena==500 && cena !=550)
puts “Správná cena”
elsif(cena!=400)
puts “Krásná cena”
else
puts “Špatná cena”
end
Výklad celého příkladu je následující: pokud bude cena rovna 500 a zároveň se nebude rovnat 550 vypiš větu Správná cena, jestliže ale cena nebude rovna 400 vypiš větu Krásná cena a v ostatních případech vypiš větu Špatná cena
Prostě si zapamatujte následující:
po zadání podmíněného operátoru if a jeho vykonání můžete mezi jeho vykonání a ukkončovací znak end vložit klausuli else nebo elsif, pozor: tady se nepoužívá elseif nebo else if jako v ostatních jazycích!
V příštím povídání budeme pokračovat v dalších podmíněných operátorech jazyka Ruby.
23. 7. 2009 | gisat_cz | 0
Ruby - práce s asociacemi a rozsahy
ASOCIACE
Pole jsou velmi silnými prvky, ale jedna vada na nich je ta, že nemůžete používat jiné indexy než v číselné podobě. Abychom mohli používat i indexy ve slovním tvaru je nutné použít asociace.
Ostatní programovací jazyky, například PHP mají podobné druhy proměnných, nesou tam pojmenování asociovaná pole, v Ruby jim říkáme asociace ale můžeme použít i PHP slovní označení a možná i označení slovem heš.
Asociace vytváříme jiným způsobem než pole Ruby, vytváříme je pomocí složené závorky {} , podívejte se na příklad:
asociace={”prvni”=>”hodnota1″,”druhy”=>”hodnota2,”treti”=>hodnota3″}
Klíčem je v tomto případě slovo prvni, druhy a treti. Hodnotami je hodnota1 až hodnota3.
K jednotlivým částem asociací přístupujeme takto:
puts asociace["prvni"] vypíše se slovo hodnota1
Jako klíče můžeme používat klidně i čísla:
asociace2={1=>”ahoj”,2=>”jazyku”,3=>”Ruby”}
puts asociace2[1] výsledkem bude slovo ahoj
ROZSAHY
Při studiu Ruby byly rozsahy pro mě velmi prapodivnou součástí tohoto jazyka. S trochou nadsázky by se dalo říci že rozsahy jsou něco jako když napíšete pondělí až pátek, pokud to napíšete tak výsledkem je pondělí, úterý, středa, čtvrtek, pátek. je to takový rozsah, prakticky je to tak, že vy si zadáte odkud dokud se má něco dělat a ono se to provede, většinou vypíše.
Podívejte se na příklad:
rozsah_cisel=1..4
puts rozsah_cisel.to_a
výrazem to_a jsme rozsah převedli na pole a vytiskli, výsledek bude 1 2 3 4
To samé můžete provádět také s písmenky:
rozsah_pismen=”a”..”d”
puts rozsah_pismen.to_a výsledek bude a b c d
puts rozsah_pismen.max výsledek bude d
puts rozsah_pismen.min výsledek bude a
18. 7. 2009 | gisat_cz | 1
Ruby - práce s polem

Ruby také obsahuje ve svém jazyce proměnou typu pole. Pole si můžete představit jako takový zásobník proměnných. K jednotlivým proměným v poli můžete přistupovat pomocí indexu.
K vytvoření pole musíte použít hranaté závorky []:
pole=[6,7,9]
Vytvořili jsme pole, které má v sobě uložena čísla 6,7 a 9. K vypsání jednotlivých čísel musíme použít jejich indexy. Indexy začínají vždy nulou, takže vše by mohlo vypadat například takto:
puts pole[0] vytiskne číslo 6
puts pole[1] vytiskne číslo 7
puts pole[2] vytiskne číslo 9
Pomocí indexů můžete také přiřazovat hodnoty:
pole[0]=12
pole[1]=123
pole[2]=”retezec”
Pole v jazyku Ruby nejsou tak striktní. Můžete do nich ukládat jak čísla, tak i řetězce.
Takto můžeme zjistit délku pole: puts pole.length
Pole také můžeme vytvářet pomocí operátoru new:
pole2=Array.new
Nemusíme tak naplnovat pole rovnou, to v tomto případě můžeme udělat později, dokonce další prvky můzeme do pole vkládat také postupně:
pole3=Array.new
pole3[9]=567
mimochodem se zamysleme také nad tím co mi vypíše pole3 pokud budu chtít vypsat prvek na pozici 1 když jsem žádný prvek 1 nedefinoval? Vypíše ji jako hodnotu nil, tedy, že se jedná o neexistující údaj.
Zkusme se také zamyslet nad tímto příkladem:
pole4=["auto","motorka",5,8,"x"]
puts pole4[-1]
Výsledek bude x, Pokud v Ruby zadáte záporný index, tak například zde při vypisování se začíná číst pole zprava, tedy od jeho konce. Číslování v rámci záporného indexu začíná od minus jedničky, pozor na to, tedy pokud bude index kladný tak začátek je od nuly ale pokud je záporný tak začíná od minus jedničky.
PRÁCE SE DVĚMA INDEXY POLE
Nenechte se mýlit. Pokud jste například programovali v jakémkoli jiném programovacím jazyce, tak dva indexy se používaly na dvourozměrná pole. V Ruby tomu tak není.
První index označuje počáteční umístění a druhý počet elementů, ke kterým chcete přistupovat . Podívejte se na příklad:
pole=[1, "letadlo","psik"]
puts pole[1,1] hodnota bude letadlo
puts pole[1,2] hodnota bude psik
puts pole[0,2] hodnota bude psik
Další příklad:
pole5=[1, "letadlo","psik"]
pole5[0,2]=”arktida”
puts pole5[0,2]
Výsledek bude anrktida, psik
18. 7. 2009 | gisat_cz | 0


