Ruby II.
Vítám Vás u dalšího dílu seriálu o Ruby. V minulém díle jsme si řekli co to Ruby je a ukázali jak vytvořit nový projekt, ve kterém budeme psát naše programy. Dnes si ukážeme základní syntaxe.
23.12.2011 14:00 |
Jakub Lares
| Články autora
| přečteno 7956×
Úvod
Ještě než začneme, nepoužívejte v ruby háčky a čárky, dělá to v Ruby neplechu.
Práce s čísly a textem
Když jste si založili nový projekt, vytvořil se Vám první super krátký program na vypsání řetězce Hello World. Vypsání nám umožňuje příkaz puts a za něj v uvozovkách text, číslo nebo proměnou. Tento příkaz vytiskne, co si zadáme a následně odřádkuje, kdybychom nechtěli odřádkovat, použijeme přikaz print.
print "Hello World"
puts "Hello World"
puts "Hello World"
Výstup
Hello WorldHello World
Hello World
Pokud budeme chtít i v řetězci vypsat uvozovky, použijeme jednoduché uvozovky.
Výstup
Matematické operace se v Ruby používají stejně jako v klasické matematice. To znamená, že násobení a dělení má přednost před odčítáním a sčítáním. Pokud si nejsme jisti, je lepší vždy závorkovat. Závorka má nejvyšší prioritu. Pokud za příkaz puts vypíšeme matematickou operaci, vypíše se nám pouze její výsledek.
Puts 1+1
Puts 3
Puts 12+13+(14-9)*19
Výstup
U řetězců můžeme také používat matematické operátory + a *. Operátor + nám spojí dva řetězce a * vypíše daný řetězec, podle čísla, kterým ho vynásobíme.
puts "Hello " + "World"
puts "Hello world" * 4
Výstup
Hello World
Hello worldHello worldHello worldHello world
Na uvozovky si musíme dát při programování pozor. V následujícím příkladu je vidět, jak mají uvozovky vliv na průběh.
puts 1 + 1
puts "1" + "1"
puts "1 + 1"
Výstup
Další příklad
puts 1 * 1
puts "1" * 4
puts "1 * 1"
Výstup
A mohou nastat také chyby, jelikož nemůžeme přičíst k řetězci číslo nebo jeden řetězec násobit druhým a podobně
puts "12" + 12
puts "2" * "2"
puts "Pepa" + 12
puts "Jarda" * "Standa"
Výstup
Pomocí kombinace znaků #{} můžeme vypsat proměnou nebo matematický výraz k vypočítání v řetězci.
puts "Vysledek operace 1 + 1 je #{1+1}"
Výstup
Vysledek operace 1 + 1 je 2
Ještě máme jeden způsob jak udělat uvozovky v řetězci a to znakem \.
Výstup
Proměnné a konstanty
Proměnné nemusíme v Ruby deklarovat, ale rovnou jim přiřazujeme hodnoty, Ruby samo rozpozná jaký má proměnná datový typ a přiřadí jí ho. Znak # označuje komentář na řádce.
#Přiřadíme proměnné 1 a vytiskneme
moje_promenna = 1
puts moje_promenna
#Proměnou můžeme kdykoliv přepsat
moje_promenna = 42
puts moje_promenna
#Jak uz jsem rikal, Ruby promenne
#automaticky priradi datovy typ
moje_promenna = "Jakub Lares"
puts moje_promenna
#Promenou muzeme tedy i vytisknout
#znaku #{} v retezci jak uz bylo
#zmineno
puts "Jmenuji se #{moje_promenna}"
Výstup
1
42
Jakub Lares
Jmenuji se Jakub Lares
Do proměnných můžeme ukládat v podstatě cokoliv. Čísla, řetězce, výsledky operací a podobně. Takže operace, které už známe, si můžeme uložit do proměnných.
var = "Hello" + "World"
puts var
#matematicka operace
var = 5 * (1+2)
puts var
#muzeme precist obsah promenne, zvetsit a ulozit
var = var + 1
puts var
#zkraceny zapis
var += 1
puts var
#muzeme take pracovat s jinymi promennymi
var2 = 2
var = var + var2 * 2
puts var
Výstup
Důležité je, že když uložíme hodnotu proměnné číslo 1 do proměnné číslo 2 a následně proměnou číslo 1 přepíšeme, hodnota proměnné číslo 2 zůstane zachována.
var = 1
#Ulozime do jedne promene hodnotu druhe promene. Do promenne var2 se tedy ulozi pouze
#hodnota promenne var ne ona samotna promenna
var2 = var
puts var2
#Tady prepiseme promenou var a vidime, ze hodnota var2 zustala nezmenena.
var = 3
puts var2
Výstup
Pokud napíšeme proměnou velkými písmeny, vytvoří se nám konstanta. Konstanty slouží k uložení informací, které nebudeme chtít změnit a Ruby nás upozorní, že děláme něco, co jsme pravděpodobně dělat nechtěli. Konkrétně měníme hodnotu konstanty.
PI = 3.14
puts PI
PI = 3.15
puts PI
Výstup
3.14
3.15
warning: already initialized constant PI
Datové typy
Ruby je dynamický typovaný jazyk, to nám umožňuje použít několikrát proměnou pro různé datové typy. Například jak u Javy nadeklarujeme proměnou, její datový typ už nezměníme. Ruby je silně typovaný, to znamená, že provádí kontrolu typů za běhu a zahlásí nám chybu, pokud se snažíme převést proměnou na něco, co daný typ nepodporuje. Pokud si vezmeme například PHP, je to jazyk slabě typovaný, takže se snaží při operacích nekompatibilních typů je zkonvertovat (přetypovat), aby mohla operace proběhnout.
var1 = 5
var2 = "5"
puts var1 + var2
Výstup
`+': String can't be coerced into Fixnum
Aby nám tato chyba nenastala, musíme přetypovat proměnou. K tomu nám slouží metoda .to_i(to integer) a .to_s(to string). Metodám se budeme podrobněji věnovat později.
var1 = 5
var2 = "5"
puts var1 + var2.to_i
puts var1.to_s + var2
Výstup
Poté zde máme metodu .to_f a ta se liší od metody .to_i tím, že nám převede číslo na desetinné číslo.
var = "23.60"
puts var.to_i
puts var.to_f
Výstup
Metoda .to_f a .to_i pracují tak, že projíždějí daný řetězec znak po znaku a zkoušejí, jestli je daný znak číslo. Pokud ne skončí a vypíší všechny čísla, které se jim podařilo převést.
a = "56 hoj"
b = "hoj 56"
c = "56 hoj 56"
puts a.to_i
puts b.to_i
puts c.to_f
Výstup
Pokud použijeme v matematickém výrazu desetinnou čárku, Ruby to vyhodnotí a rovnou nám počítá s výsledkem na desetinná místa.
puts 2.0 + 3.0
puts 2.16 + 3
Výstup
Dotázání se uživatele
Pokud chceme od uživatele nějaký vstup, použijeme metodu .gets. Jakmile Ruby narazí na tuto metodu, počká si na vstup od uživatele, který vstup potvrdí klávesou Enter. Pokud budeme chtít pracovat s číslem, rovnou vstup přetypujeme na integer pomocí metody .to_i, ale pokud budeme požadovat text, musíme ho ořezat pomocí další metody .strip, která ořízne poslední bílý znak. Je to kvůli potvrzování klávesou enter, Ruby to vyhodnotí enter jako součástí vstupu. Náš vstup píšeme na stejné místo, kde nám NetBeans vypisuje výstupy.
Jednoduché programy
Pozdrav
puts "Zadejte prosim vase jmeno"
name = gets.strip
puts "Dekuji, ted uz vim, ze vase jmeno je #{name}"
Výstup
Zadejte prosim vase jmeno
Jakub <<- Mnou zadaný vstup
Dekuji, ted uz vim, ze vase jmeno je Jakub
Sčítačka
puts "Vítejte u progmu Sčitacka"
puts "Zadejte 1.cislo:"
a = gets.to_i
puts "Zadejte 2.cislo:"
b = gets.to_i
c = a + b
puts "Dekuji, zde je vysledek: #{a} + #{b} = #{c}"
Výstup
VĂtejte u progmu SÄŤitacka <<- Ukazka toho jak Ruby špatně zpracovává čárky a háčky
Zadejte 1.cislo:
1
Zadejte 2.cislo:
2
Dekuji, zde je vysledek: 1 + 2 = 3
Samostatné úkoly
Na konci každého dílu, si pro Vás připravím program, který si můžete sami zpracovat. Každý následující díl, si ukážeme řešení. Budou to programy na procvičení věcí, co jsme se daný díl dozvěděli.
Krychle a koule
Napište program, který spočítá povrch a obsah krychle, a dále povrch a obsah stejně velké vepsané koule. Vzorce určitě naleznete na internetu. Výstup programu by měl být následující.
Výstup
Zadejte stranu a
2
Povrch krychle 24
Objem krychle 8
Povrch koule 12.56
Objem koule 4.18666666666667
Pravoúhlý trojúhelník
Napište program, který načte od uživatele délku obou odvěsen pravoúhlého trojúhelníka a spočítá délku přepony, obvod a obsah trojúhelníka. Vzorce znovu naleznete na internetu. Pro spočítání odmocniny použijte funkci Math.sqrt(x), kde x je libovolný výraz. Výstup by měl být následující.
Výstup
Zadejte stranu a
3
Zadejte stranu b
4
Delka přepony je 5.0
Obvod trojuhelniku je 12.0
Obsah trojuhelniku je 6.
Závěr
Toto je pro dnešek vše, příště si ukážeme práci s polem a slovníky a dotazování nad nimi.
Verze pro tisk
|
Příspívat do diskuze mohou pouze registrovaní uživatelé.
|
|

Vyhledávání software

Vyhledávání článků
28.11.2018 23:56 /František Kučera Prosincový sraz spolku OpenAlt se koná ve středu 5.12.2018 od 16:00 na adrese Zikova 1903/4, Praha 6. Tentokrát navštívíme organizaci CESNET. Na programu jsou dvě přednášky: Distribuované úložiště Ceph (Michal Strnad) a Plně šifrovaný disk na moderním systému (Ondřej Caletka). Následně se přesuneme do některé z nedalekých restaurací, kde budeme pokračovat v diskusi.
Komentářů: 1
12.11.2018 21:28 /Redakce Linuxsoft.cz 22. listopadu 2018 se koná v Praze na Karlově náměstí již pátý ročník konference s tématem Datová centra pro business, která nabídne odpovědi na aktuální a často řešené otázky: Jaké jsou aktuální trendy v oblasti datových center a jak je optimálně využít pro vlastní prospěch? Jak si zajistit odpovídající služby datových center? Podle jakých kritérií vybírat dodavatele služeb? Jak volit vhodné součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně datové centrum spravovat? Jak co nejlépe eliminovat možná rizika? apod. Příznivci LinuxSoftu mohou při registraci uplatnit kód LIN350, který jim přinese zvýhodněné vstupné s 50% slevou.
Přidat komentář
6.11.2018 2:04 /František Kučera Říjnový pražský sraz spolku OpenAlt se koná v listopadu – již tento čtvrtek – 8. 11. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma umění a technologie, IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
4.10.2018 21:30 /Ondřej Čečák LinuxDays 2018 již tento víkend, registrace je otevřená.
Přidat komentář
18.9.2018 23:30 /František Kučera Zářijový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 20. 9. 2018 od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5). Tentokrát bez oficiální přednášky, ale zato s dobrým jídlem a pivem – volná diskuse na téma IoT, CNC, svobodný software, hardware a další hračky.
Přidat komentář
9.9.2018 14:15 /Redakce Linuxsoft.cz 20.9.2018 proběhne v pražském Kongresovém centru Vavruška konference Mobilní řešení pro business.
Návštěvníci si vyslechnou mimo jiné přednášky na témata: Nejdůležitější aktuální trendy v oblasti mobilních technologií, správa a zabezpečení mobilních zařízení ve firmách, jak mobilně přistupovat k informačnímu systému firmy, kdy se vyplatí používat odolná mobilní zařízení nebo jak zabezpečit mobilní komunikaci.
Přidat komentář
12.8.2018 16:58 /František Kučera Srpnový pražský sraz spolku OpenAlt se koná ve čtvrtek – 16. 8. 2018 od 19:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát jsou tématem srazu databáze prezentaci svého projektu si pro nás připravil Standa Dzik. Dále bude prostor, abychom probrali nápady na využití IoT a sítě The Things Network, případně další témata.
Přidat komentář
16.7.2018 1:05 /František Kučera Červencový pražský sraz spolku OpenAlt se koná již tento čtvrtek – 19. 7. 2018 od 18:00 v Kavárně Ideál (Sázavská 30, Praha), kde máme rezervovaný salonek. Tentokrát bude přednáška na téma: automatizační nástroj Ansible, kterou si připravil Martin Vicián.
Přidat komentář
Více ...
Přidat zprávičku
 Poslední diskuze
31.7.2023 14:13 /
Linda Graham iPhone Services
30.11.2022 9:32 /
Kyle McDermott Hosting download unavailable
13.12.2018 10:57 /
Jan Mareš Re: zavináč
2.12.2018 23:56 /
František Kučera Sraz
5.10.2018 17:12 /
Jakub Kuljovsky Re: Jaký kurz a software by jste doporučili pro začínajcího kodéra?
Více ...
|