puts "Pozdrav jazyka ruby" - Jde o metodu jazyka ruby, která vypisuje data.puts \
"Jazyk ruby je flexibilní" - Instrukce se dají psát i na nový řádek.puts "Pozdrav od ruby" #Zobrazí text - Poznámky se v jazyce ruby tvoří znakem #irb - Tento příkaz nám umožní psát ruby přímo v command lineRuby ukládá čísla v různých typech. Celá čísla jako Fixnum, pokud je číslo příliš velké tak Bignum , desetinný čísla se v ruby ukládají jako typ Float.
puts 12345- Celé číslo Fixnumputs 44.564- Desetinné číslo FloatŘetězce můžeme uzavřít do apostrofů ('Ahoj jak je'), nebo do uvozovek ("Čau ne"). Nikdy nesmime použít v řetězci 2x apostrofy nebo uvozovky např.("Ahoj jak "je" ") nebo ('Čau 'ne''). Dají se ale kombinovat, např: ("Ahoj jak 'je' ") nebo ('Ahoj jak "je" '). Nebo se můžou vyescapovat zpětným lomítkem, např: ("Ahoj jak \"je\" ") nebo ('Čau \'ne'\ '). Řetězce je možné také spojovat a to znakem + např: ("Ahoj" + "jak je")
puts "Ahoj"
puts "Ahoj " + "tam"
puts 'Rad vas slyším'
puts "Ahoj ty jeden 'kluky'"
Dále tu je ještě příkaz PRINT, který nepřeskakuje na nový řádek, tudíž musíme použít znak nového řádku \n.
print "Takto vypada print"
print "Ahoj \n super"Ruby dokáže ukládat data do proměnných, což jsou pojmenvaní zástupci představujácá nějaká data. Proměnné se v ruby oznčují prostým slovem, tedy např: (promena="Ahoj")
zelenina="Meloun" puts zelenina #vypíše Meloun
teplota=36
puts "Teplota je" + String(teplota) + "."
#NEBO
teplota=36
puts "Teplota je" + teplota.to_s + "."
Konstanty se v RUBY označují velkým písmenem na začátku slova, tedy např: (KONSTANTA="Ahoj"), konstanty v ruby můžete kdykoliv inializovat znova narozdíl od jiných jazyků
KONST=1 KONST=2Uvedený příklad u Práce s proměnnými by se dal přepsat i takto
teplota=36
puts "Teplota je #{teplota}"teplota=36
puts "Teplota je #{teplota}"
teplota+=5
puts "Nyní je teplota #{teplota}"
- Proměnnou teplota zvětšíme o 5 a opět vypíšeme
teplota=36
puts "Teplota je #{teplota + 5}" - Zkrácená verze
Jak načíst text psaný uživatelem? Slouží k tomu funkce gets. Tato funkce vám dovolí číst text z příkazového řádku, jak jej uživatel zadá a standartně jej přiřazuje proměnou $_, která je rovněž vestavěná do Ruby.
Ovšem metoda gets zachvovává i ukončení nového řádku tedy \n, to se dá vyřešit použítím další metody chomp
print "Zadejte prosím teplotu:"
gets
chomp
puts "Teplota je #{$_}."Jak to funguje?
Uvedený kód zobrazí výzvu (příkazem print, aby jazyk ruby nepřeskočil v cmd na nový řádek) a pomocí gets
načte zadání uživatele. Metoda gets standartně vkládá přečtený text do předdefinované proměnné $_
Kdyby jste chteli použít jinou proměnnou než tu vestavěnou byl by kód takový
print "Zadejte prosím teplotu:"
teplota=gets
$_=teplota
chomp
teplota=$_
puts "Teplota je #{teplota}"
Zpět k obsahu
Doplnit viz kapitola 3
Práce s daty, je velmi důležitá věc. Ukážeme si jak na to.
hodnota=3
puts hodnota
hodnota+=3 # přičítání
puts hodnota #vypíše 6
hodnota/=2 # dělení
puts hodnota #vypíše 3
hodnota*=2 # Násobení
puts hodnota #vypíše 6
hodnota**=2 # Umcnování
puts hodnota #vypíše 36
| Operátor | Popis |
|---|---|
| [] | Odkaz na pole |
| []= | Nastavení elementu pole |
| ** | Umocňování |
| ! | Logický NOT, naopak |
| + | Unarní plus |
| - | Mínus |
| * | Násobení |
| / | Dělení |
| % | Modulo |
| & | And |
| | | OR |
| Porovnávající operátory | |
| <= | Menší nebo rovno |
| < | Menší než |
| > | Větší než |
| >= | Větší nebo rovno |
| Operátory shodnosti a shody se vzorem: | |
| <=> | Menší než, rovno, Větší než |
| == | Rovno |
| === | Testuje i typ |
| != | Není rovno |
| =~ | Shoda se vzorem regulárního výrazu |
| && | Logické AND |
| || | Logické OR |
| .. | Inkluzivní rozsah |
| ... | Exkluzivní obsah |
| ?,: | ternální If,Else |
| Přiřazení | |
| = | Přiřiřazení |
| %= | Modulo a přiřazení |
| /= | Dělení a přiřazení |
| -= | Odečtení a přiřazení |
| += | Přičtení a přiřazení |
| *= | Násobení a přiřazení |
| **= | Mocnina a přiřazení |
| defined? | Pravda, je-li symblol definovám |
| not | Logický zápor |
| and | Logický AND |
| or | Logický OR |
| Modifikátory příkazů | |
| if | podmínka |
| unless | když je něco nepravda, je to výraz vyhodnocen jako pravda |
| until | DOPLNIT |
| begin,end | Blokový výraz |
Jazyk ruby má stejné priority operátorů jako v matematice, tudíž příklad
puts 5 + 3 * 2 - bude výsledek 11, nikoliv 16puts (5 + 3) * 2 - závorky mají větší prioritu než násobení, výsledek bue tedy 16S daty ale v jazyce Ruby pracovat mnoha způsoby. Jedním z nich jsou pole.K vytvoření pole v ruby se používá operátor [] následujícím způsobem.
pole=[1,2,3] Tím vytvoříme 3 elementy, ke kterým pak přistupujem pomocí indexu.
puts pole[2] #vytiskne 3 První element začíná vždy od nuly !
Pole může obsahovat nejen čísla, ale i řetězce
pole=["Jak","jste","se","meli",1,3]
puts pole[1] # vytiskne jste
Dále je tu funkce length, která zjištuje počet elementů v poli
pole=["Sýr","mléko",2,"Rohlík"]
puts pole.length #vytiskne 4
pole=["Libam","te","milacku",1,2,3]
puts pole[0] # vytiskne Libam
puts pole[1] # vytiskne te
puts pole.length # vytiskne 6
pole2= Array.new # Vytvořili jsme nové pole pomocí metody new třídy array
puts pole2.length # vytiskne 0
pole[0]="Bananove"
pole[1]="rybicky"
puts pole[0] + "" + pole[1] # vytiskne Banabove rybicky
puts pole2.length # vytikne 2
Náš příklad vytvoří pole, naplní je daty, ta pak z pole zase převezme a zobrazí jeho délku. Příklad pak provádí něco nového, vytvoří pole 2.
Indexy polí nemusejí jít vzestupně po sobě, není žádný problém napsat toto
pole[0]="vlak"
pole[3]="Pes"
Dají se dokonce používat i záporné indexy polí.
pole["Jelen","koza","potkan","vačice"]
puts pole[-1] # vytiskne vačice
Kromě čísel, můžeme jako indexy použít i proměnné nebo konstanty
pole=["Nelez","na","ten","strom"]
promenna=1
puts pole[promenna] # vytiskne na
Pokud chcete vytisknout celé pole, stečí napsat jen
pole["Nejaka","data","v","poli"]
puts pole
Práce s dvěma indexy je v ruby odlišná od ostatních jazyků. Nepracujeme totiž s dvourozměrnýi poli, nýbrž s dvěma indexy, který představují začátek a pocet elementů. pole[zacatek, pocet]
pole["Libam","te","milacku",1,2,3]
#Element 1 můžeme tedy nahradit takto:
pole[1]="tebe"
#Pole pak bude mít následující tvar
["Libam","tebe","milacku",1,2,3]
#Totéž lze provést aplikací dvojitého indexu
pole["Libam","te","milacku",1,2,3]
pole[1,1]="tebe"
#Výsledek je stejný
["Libam","tebe","milacku",1,2,3]
Co kdyby jsme místo zadání pole[1,1] použili pole[1,2]?
pole["Libam","te","milacku",1,2,3]
pole[1,2]="tebe"
# výsledek ["Libam","tebe",1,2,3]
Jak by to bylo s počtem 0?
pole["Libam","te","milacku",1,2,3]
pole[3,0]="muj"
# vysledek pole["Libam","te","milacku","muj",1,2,3]
A když by byli 2 indey pole bylo by to takhle
pole=["Libam","te","muj","milacku",1,2,3]
pole[2,2]=["ma","lasko"]
# vytiskne pole["Libam","te","ma","lasko",1,2,3]
Nejedná se o nic jiného než o pole s textem, nikoliv s číslem. Místo hranatých závorek [], se používají závorky složené {}
kamaradi={"Jirka"=>"kamos ze skoly","Ivana"=>"kamaradka z fotbalu"}
puts kamaradi["Jirka"]
# vypíše kamos ze školy
pizza={"sunkova"=>"moc dobra","houbova","nic moc"}
puts pizza
# Vypíše sunkovamoc dobrahoubovanic moc
puts pizza.length
# vypíše 2
Další datovou konstrukcí jazyka ruby jsou rozsahy
muj_rozsah=1..4
Tím jsme vytvořili rozsah 1 až 4, mohli by jsme si tento rozsah převíst metodou to_a rozahu na pole a pak výstupní pole vytisknout.
muj_rozsah=1..4
puts muj_rozsah.to_a
Můžeme také pracovat s operátorem ..., který pracuje stejně, jen vypouští poslední položku
muj_rozsah=1...4
puts muj_rozsah.to_a
# vyzkoušejte
rozsah=1..5
puts rozsah.to_a
rozsah="a".."e"
puts rozsah.to_a
puts rozsah.min
puts rozsah.max
rozsah="aplha".."aplhe"
puts rozsah.to_a
Jak jste asi poznali, metody min a max vrací poslední respektivě první písmenko/ číslo
Rozsahy mohou být zapsány také tímto způsobem
(1..10).to_a
Jedná se o podmínku. Když je něco takhle, udělej tohle
teplota=30
if teplota < 20
puts "Je zima"
else
puts "Je pekny pocasi"
end
Znamená, jestli je teplota pod 20°C, vypíše Je zima, nám ale příklad vypíše Je pekny pocasi, protože podmínka nebyla pravdivá.
Jde o náhradní podmínku
teplota=25
if teplota==20
puts "Teplota je 20"
elsif teplota==25
puts "Teplota je 25"
else
puts "Teplota neni zmana"
end
Jedná se o příkaz negace
teplota=25
unless teplota < 20 || teplota > 30
puts "Cas na piknik"
else
puts "Pardon, dnes zadny piknik"
end
Něco jako v php příkaz switch
prikaz="Zastav"
case prikaz
when "Jdi"
puts "Jdu"
when "Cekej"
puts "Cekam"
when "Zastav"
puts "Zastavuji"
else
puts "Nerozumim ti"
end
V příkazu case se dají používat také rozsahy
teplota=25
case teplota
when 0...20
puts "chladno"
when 20...30
puts "Je pěkně"
end
Opět se jedná o to samé jako v php
dluzim=100
dej=dluzim > 100 ? 20 : 0
Znamená pokud dlužím víc jak 100, dej dvacku, jinak nedávej nic
Cyklus je pro programování nesmírně důležitou záležitostí. Zajištujě nám totiž kod, který se může libovelně opakovat
Znáým z jiných programovacích jazyků, vykonává v sobě obsažený kód, dokud zůstává vámi specifikovaná podmínka pravdivá.
while($_ != "w")
puts "Kod stále běží"
print "Ukoncete kod zadáním 'q':"
gets
chomp
end
Jedná se o cyklus který pokračuje v případě, že daná podmínka je nepravdivá
until($_=="q")
puts "Kod bezi"
print "Ukoncete zadanim 'q':"
gets
chomp
end