Ahoj Kubi, tady máš další příklad v ruby. Jedná se o operace, kde jsou dvě čísla. Program načte požadovaný operand, a následně se dotazuje na dvě celá čísla.
# metoda, vrati pouze cislo, vyzaduje hlasku k napsani def get_cislo(hlaska) print "#{hlaska}: " # opakujeme dokud budeme dostavat nejaky text a urizneme "enter" od konce retezce while a=STDIN.gets.chop do # a je-li to cislo (obsahuje jen znaky 0-9 od zacatku "^" do konce "$"), tak vyskocime z while break if a =~ /^[0-9]*$/ # nebo vypiseme chybovou hlasku puts 'neni cislo' end # a prevedeme retezec na cislo, a vysledek vratime a.to_i end # definice pole operaci operace = ['+','-','/','*'] # vytiskneme popis, a pole operandu, oddelene carkou printf "vyberte operaci: (%s)", operace.join(',') # vynulujeme 'op' op = nil # nacteme znaky while op=STDIN.gets.chop do # a ukoncime, pokud je operand soucasti pole (include?) break if operace.include?(op) puts "spatna operace!" end # nacteme promenne cislo1 = get_cislo('vloz cislo 1') cislo2 = get_cislo('vloz cislo 2') # a podle typu operace udelame vysledek case op when '+': vysledek = cislo1+cislo2 when '-': vysledek = cislo1-cislo2 when '*': vysledek = cislo1*cislo2 when '/': vysledek = cislo1/cislo2 end # vypiseme printf "vysledek:\n %d %s %d = %d\n", cislo1, op, cislo2, vysledek
až se pak dostaneme v ruby dál, uvidíš, že třeba ta část s “case” by šla napsat jako
vysledek = cislo1.send(op,cislo2)
:) ale to až jindy