Obsah

  1. Základy jazyka ruby
  2. Práce s čísly v ruby
  3. Práce s řetězci ruby
  4. Ukládání dat v proměnných
  5. Vytváření konstant
  6. Nahrazování proměnných v řetězcích vymyzených uvozovkami
  7. Čtení textu na příkazovém řádku
  8. Čtení textu
  9. Vytváření symbolů v Ruby
  10. Práce s operátory
  11. Přednosti operátorů
  12. Práce s poli
  13. Práce se dvěma indexy pole
  14. Práce s asociacemi
  15. Práce s rozsahy

Základy jazyka Ruby


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 line
Zpět k obsahu

Práce s čísly v Ruby

Ruby 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 Fixnum
puts 44.564- Desetinné číslo Float
Zpět k obsahu

Práce s řetězci v ruby

Ř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"

Zpět k obsahu

Ukládání dat v proměných

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
Zpět k obsahu

Práce s proměnnými

teplota=36
puts "Teplota je" + String(teplota) + "." #NEBO
teplota=36
puts "Teplota je" + teplota.to_s + "."

Zpět k obsahu

Vytváření Konstant

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=2
Zpět k obsahu

Nahrazování proměnných v řetězcích vymyzených uvozovkami

Uvedený příklad u Práce s proměnnými by se dal přepsat i takto

teplota=36
puts "Teplota je #{teplota}"

Zpět k obsahu

Nahrazování proměnných

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
Zpět k obsahu

Čtení textu na příkazovém řádku

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


Čtení textu

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

Vytváření symbolů v Ruby

Doplnit viz kapitola 3


Práce s operátory

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átory
OperátorPopis
[]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
notLogický zápor
andLogický AND
orLogický OR
Modifikátory příkazů
ifpodmínka
unlesskdyž je něco nepravda, je to výraz vyhodnocen jako pravda
untilDOPLNIT
begin,endBlokový výraz

Zpět k obsahu

Přednosti operátorů

Jazyk ruby má stejné priority operátorů jako v matematice, tudíž příklad

puts 5 + 3 * 2 - bude výsledek 11, nikoliv 16
puts (5 + 3) * 2 - závorky mají větší prioritu než násobení, výsledek bue tedy 16
Zpět k obsahu

Práce s poli

S 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

Práce s poli

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

Jak to funguje?

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

Zpět k obsahu

Práce se dvěma indexy 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]

Zpět k obsahu

Práce s asociacemi

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

Zpět k obsahu

Práce s rozsahy

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

Práce s rozsahy

# 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

Podmíněné výra zy, cykly, metody a bloky

Příkaz if

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á.

Příkaz elsif

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

Práce s příkazem unless

Jedná se o příkaz negace

teplota=25
unless teplota < 20 || teplota > 30
puts "Cas na piknik"
else
puts "Pardon, dnes zadny piknik"
end

Použití příkazu case

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

Použití ternálního operátoru

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


Využívání cyklů

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

Práce s cyklem while

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

Práces cyklem until

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