Zábava s textem
Pojďme se podívat na text a možnosti jeho výstupu. Nejprve však trocha té zábavy. Metoda reverse
vám totiž umožní otočit vstupní řetězec.
var1 = 'radar'
var2 = 'mississippi'
var3 = 'Dokazete rict tuto vetu pozpatku?'
puts var1.reverse
puts var2.reverse
puts var3.reverse
puts var1
puts var2
puts var3
zobrazí
radar
ippississim
?uktapzop utev otut tcir etezakoD
radar
mississippi
Dokazete rict tuto vetu pozpatku?
Metoda reverse
si nerozumí s češtinou, takže ji nepoužívejte na slova obsahující diakritiku.
Další metodou pracující s řetězci je metoda length
, která vrátí délku řetězce včetně mezer.
puts 'Jaké je vaše celé jméno?'
jmeno = gets.chomp
puts 'Věděli jste, že je vaše jméno \'' + jmeno + '\' dlouhé ' + jmeno.length.to_s + ' znaků?'
zobrazí
Jaké je vaše celé jméno?
Martin Sin
Věděli jste, že je vaše jméno 'Martin Sin' dlouhé 10 znaků?
Opět pozor na češtinu, znak obsahující diakritiku se počítá jako znaky dva.
Mezi další metody patří např. upcase
(změna písma na velké), downcase
(změna písma na malé), swapcase
(inverze velikosti písma dle zadaného slova), capitalize
(první písmeno bude velké).
slovo = 'ABBrakaDaBRa'
puts slovo
puts slovo.upcase
puts slovo.downcase
puts slovo.swapcase
puts slovo.capitalize
zobrazí
ABBrakaDaBRa
ABBRAKADABRA
abbrakadabra
abbRAKAdAbrA
Abbrakadabra
Na závěr se ještě podívejme na možnosti formátování textu. Pro umístění textu na střed obrazovky se používá metoda center
. Použití metody je stejné jako v následujícím příkladu.
sirka = 80
puts('Přišel jsem,'.center(sirka))
puts('viděl jsem,'.center(sirka))
puts('zvítězil jsem.'.center(sirka))
zobrazí
Přišel jsem,
viděl jsem,
zvítězil jsem.
80 znaků na řádek je jakýmsi standardem, můžete samozřejmě zvolit i nižší hodnotu. Pokud však nastavíte hodnotu vyšší, nemusí se to správně zobrazovat na všech terminálech.
Pokud vám vadí přílišný počet závorek, pak můžete za metodu center
umístit místo závorky mezeru. Význam je stejný, viz dále.
Pro zarovnání textu vlevo a vpravo se používají metody ljust
a rjust
. Za použití mezery místo závorky bude příkaz puts
vypadat takto:
sirka = 40
text = '--> Text <--'
puts text.ljust sirka
puts text.center sirka
puts text.rjust sirka
puts text.ljust (sirka/2) + text.rjust (sirka/2)
zobrazí
--> Text <--
--> Text <--
--> Text <--
--> Text <-- --> Text <--
Poslední příkaz vlastně vytvoří textový řetězec o šířce 20 znaků a vloží do něj text zarovnaný vlevo a další textový řetězec o šířce 20 znaků, do kterého vloží text zarovnaný vpravo. Nakonec oba řetězce spojí dohromady a vypíše je na obrazovku.
Více matematiky
Pojďme se nejprve podívat na takové matematické operace, jako je mocnina (**) či odmocnina. Možná znáte také zbytek po celočíselném dělení (%) (modulo).
puts 5**2
puts 5**0.5
puts 7/3
puts 7%3
puts 365%7
zobrazí
25
2.23606797749979
2
1
1
Zatímco 5**2 znamená "5 na druhou", 5**0.5 je "druhá odmocnina z pěti", neboli "5 na jednu polovinu". 7%3 (sedm modulo třemi) je pak jedna, protože: 7 = 3 * 2 + 1.
(Ne)jen pro zajímavost můžete zkusit také metodu abs
, která se stará o výpočet absolutní hodnoty daného čísla.
puts ((5-2).abs) puts ((2-5).abs)
zobrazí podle očekávání
3
3
Náhodná čísla
Čas od času je potřeba vygenerovat nějaké náhodné číslo. K tomu slouží funkce rand
. Zavoláte-li funkci rand
bez dalších parametrů, vrátí reálné číslo mezi 0 a 1. Bude-li za číslem následovat celočíselná hodnota, vrátí číslo ležící mezi číslem 0 a touto hodnotou - 1.
puts rand
puts rand
puts rand
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts(rand(1))
puts(rand(1))
puts(rand(1))
puts(rand(9999999999999999999999999999999999999999999))
puts('Podle předpovědi bude pršet na '+rand(101).to_s+'%.')
zobrazí
0.594956941672168
0.181544980290849
0.0925772999883406
58
19
75
0
0
0
1736081969982182829578483532624843944677161
Podle předpovědi bude pršet na 47%.
Ještě jednou a jen pro jistotu - funkce rand(číslo)
zobrazí náhodné číslo v rozmezí od 0 po hodnotu číslo - 1.
Někdy můžete požadovat, aby program použil náhodně generovaná čísla znova (např. při vytvoření dočasných souborů a jejich opětovném otevření). Pak můžete použít funkci srand
.
srand 1776
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts ''
srand 1776
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts(rand(100))
puts(rand(100))
zobrazí
24
35
36
58
70
24
35
36
58
70
Objekt Math
Objekt Math
obsahuje celou řadu matematických funkcí, ukažme si alespoň následující.
puts(Math::PI)
puts(Math::E)
puts(Math.cos(Math::PI/3))
puts(Math.tan(Math::PI/4))
puts(Math.log(Math::E**2))
puts((1 + Math.sqrt(5))/2)
zobrazí
3.14159265358979
2.71828182845905
0.5
1.0
2.0
1.61803398874989
Co se myslí objektem? Objektem může být dům, auto, matematika nebo pěkná slečna (jinými slovy - snad cokoliv vás napadne). Důležité je si uvědomit, že objekt zastřešuje určitou sadu metod a vlastností, které jsou jeho nedílnou součástí. Stejně jako součástí matematiky je výše uvedená konstanta pí, Eulerovo číslo e, odmocnina atd.
Příklady 5
- Napište program, který nahradí vašeho šéfa. Program se vás zeptá, co chcete a jako odpověď vám napíše Cože to chcete? CHCI PŘIDAT !! Máte padáka!. Tedy převede váš text na velká písmena a zareaguje jako sám velký šéf…
- Napište program, který vytvoří obsah. Tedy tuto strukturu:
Obsah
Kapitola 1: Čísla strana 1
Kapitola 2: Písmena strana 10
Kapitola 3: Proměnné strana 25
- Napište matematickou sadu programů, které vám spočítají obsah a obvod čtverce a obdélníku, přeponu a velikosti zbývajících úhlů v pravoúhlém trojúhelníku a konečně také obvod a obsah kruhu.
Protože toho už umíme docela dost, příště se podíváme na řízení běhu programu, tzn. budeme učit program "se rozhodovat" a také se naučíme používat cykly.