LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> 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 5101×

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

puts "Hello 'World'"

Výstup


Hello 'World'

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


2
3
120

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


2
11
1 + 1

Další příklad

puts 1 * 1
puts "1" * 4
puts "1 * 1"

Výstup


1
1111
1 * 1

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


Error

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


puts "Hello \"World\""

Výstup


Hello "World"

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


HelloWorld
15
16
17
21

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


1
1

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


10
55

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


23
23.6

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


56
0
56.0

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


5.0
5.16

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

pridej.cz

 

DISKUZE

Typi premenných 24.12.2011 14:07 Oliver Kriška




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

13.9.2017 8:00 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

15.4.2017 15:20 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě IoT a radiokomunikace? Přijď na sraz spolku OpenAlt, který se bude konat ve středu 19. dubna od 18:30 v Šenkovně (Sokolská 60, Praha 2).
Přidat komentář

5.3.2017 19:12 /Redakce Linuxsoft.cz
PR: 23. března proběhne v Praze konferenci na téma Cloud computing v praxi. Hlavními tématy jsou: Nejžhavější trendy v oblasti cloudu a cloudových řešení, Moderní cloudové služby, Infrastruktura současných cloudů, Efektivní využití cloudu, Nástrahy cloudových řešení a jak se jim vyhnout.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

31.8.2017 12:11 / Jaromir Obr
Re: ukůládání dat ze souboru

30.7.2017 11:12 / Jaromir Obr
Národní znaky

27.7.2017 12:24 / Jaromir Obr
Cteni/zapis

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze