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