Příklady v ruby – operace s čísly

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

Leave a Reply

Your email address will not be published. Required fields are marked *

80 + = 84