přejít na obsah přejít na navigaci

Linux E X P R E S, Naučte se Ruby 5 - Další metody formátování textu, matematika

Naučte se Ruby 5 - Další metody formátování textu, matematika

ruby.jpg

V minulém díle jsme se setkali s několika metodami určenými k převodu textu na číslo, čísla na text a také k úpravě vstupu uživatele. V dnešní části se podíváme na některé vcelku zábavné možnosti formátování textu a také si rozšíříme své znalosti matematiky v Ruby.


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

Nahoru

Přidat téma diskuse

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz