This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 5 years have passed since last update.

Rubyでやるプログラミングのドリル

Last updated at Posted at 2019-02-07

問題1

実行結果を考えて下さい。

a = 1
b = 2
c = a + b
c = c + 1

puts c

問題2

実行結果を考えて下さい。

a = 8
b = 2
c = a - b
puts c

c = c / b
puts c

問題3

実行結果を考えて下さい。

a = 6
b = 2
c = a * b
puts c

c = c + 1
puts c

問題4

実行結果を考えて下さい。

a = 6
b = 2
c = a * b
puts c

c = c / a
puts c

問題5

実行結果を考えて下さい。

a = 6
b = 2
c = a * b
puts c

c = c / (a - b) 
puts c

問題6

実行結果を考えて下さい。

age = 0
price = 0

if age == 0
  price = 100
else
  price = 500
end

puts price

問題7

実行結果を考えて下さい。

age = 5
price = 0

if age == 0
  price = 100
else
  price = 500
end

puts price

問8

実行結果を考えて下さい。

age = 5
price = 0

if age == 0
  price = 100
end

puts price

問題9

実行結果を考えて下さい。

age = 1
price = 0

if age == 0
  price = 100
elsif age == 1
  price = 300
else
  price = 500
end

puts price

問題10

実行結果を考えて下さい。

age = 0
price = 0

if age > 0
  price = 100
else
  price = 500
end

puts price

問題11

実行結果を考えて下さい。

age = 0
price = 0

if age >= 0
  price = 100
else
  price = 500
end

puts price

問題12

実行結果を考えて下さい。

age = 0
price = 0

if age < 1
  price = 100
else
  price = 500
end

puts price

問題13

実行結果を考えて下さい。

age = 2
price = 0

if age <= 1
  price = 100
else
  price = 500
end

puts price

問題14

実行結果を考えて下さい。

age = 2
birth = 2000
price = 0

if age == 2 && birth == 2001
  price = 100
else
  price = 500
end

puts price

問題15

実行結果を考えて下さい。

age = 2
birth = 2000
price = 0

if age == 2 || birth == 2001
  price = 100
else
  price = 500
end

puts price

問題16

実行結果を考えて下さい。

age = 2
birth = 2000
price = 0

if age == 2 && birth == 2000
  price = 100
else
  price = 500
end

puts price

問題17

実行結果を考えて下さい。

age = 2
birth = 2000
price = 0

if age == 2 || birth == 2000
  price = 100
else
  price = 500
end

puts price

問題18

実行結果を考えて下さい。

age = 2
birth = 2000
price = 0

if age == 2
  if birth == 2001
    price = 100
  else
    price = 300
  end
else
  price = 500
end

puts price

問題19

実行結果を考えて下さい。
電卓を使ってもいいです。

money = 1000
money = money * 1.1
money = money * 1.1
money = money * 1.1

puts money.to_i

問題20

実行結果を考えて下さい。
電卓を使ってもいいです。

money = 1000
1.upto(3) do
  money = money * 1.1
end
puts money.to_i

問題21

実行結果を考えて下さい。
電卓を使ってもいいです。

money = 1000
rate = 1.1
1.upto(4) do
  money = money * rate
end
puts money.to_i

問題22

実行結果を考えて下さい。
電卓を使ってもいいです。

money = 1000
rate = 1.1
2001.upto(2004) do
  money = money * rate
end
puts money.to_i

問題23

実行結果を考えて下さい。
電卓を使ってもいいです。

money = 1000
rate = 1.1
(2001..2010).step(2) do
  money = money * rate
end
puts money.to_i

問題24

実行結果を考えて下さい。

money = 1000
rate = 1.1
(2001..2010).step(3) do
  money = money * rate
end
puts money.to_i

問題25

実行結果を考えて下さい。

money = 1000
(1..10).each do
  (1..10).each do
    money = money + 1
  end
end

puts money

問題26

実行結果を考えて下さい。

val = "cebu"
puts "Hello #{val} welcome"

問題27

実行結果を考えて下さい。

val = 1
puts "Hello #{1 * 10} welcome"

問題28

実行結果を考えて下さい。

money = 1000
rate = 1.1
2001.upto(2004) do |i|
  money = money * rate
  puts "I got #{money.to_i} in #{i}."
end

問題29

実行結果を考えて下さい。

(1..10).each do |i|
  (1..10).each do |v|
    puts "i = #{i}"
    puts "v = #{v}"
  end
end

問題30

実行結果を考えて下さい。

(1..10).each do |i|
  (1..10).each do |v|
    puts "i = #{i}" if i % 2 == 0
    puts "v = #{v}" if v % 2 == 1
  end
end

問題31

実行結果を考えて下さい。

def print_hello(v)
  puts "hello, #{v}"
end

(1..10).each do |i|
  print_hello(i)
end

問題32

実行結果を考えて下さい。

a = 0
b = 0

(1..10).each do
  if a > b
    b = b + 1
    puts "1; a = #{a}, b = #{b}"
  else
    a = a + 1
    puts "2; a = #{a}, b = #{b}"
  end
end

問題33

実行結果を考えて下さい。

def display_price(price)
  case price
  when 100 then
    size = "small"
  when 200 then
    size = "mid"
  when 300 then
    size = "large"
  else
    size = "LL"
  end

  print "size is #{size}"
end

display_price(100)
display_price(200)
display_price(300)
display_price(400)

問題34

実行結果を考えて下さい。

def display_price(price)
  size = case price
    when 100 then
      "small"
    when 200 then
      "mid"
    when 300 then
      "large"
    else
      "LL"
   end

  print "size is #{size}"
end

display_price(100)
display_price(200)
display_price(300)
display_price(400)

問題35

実行結果を考えて下さい。

def cal_bmi(height, weight)
  if height > 180
    bmi = weight / (height * 0.01) ** 2
    puts "You are tall. This is your #{bmi}"
  elsif weight > 80
    bmi = weight / (height * 0.01) ** 2
    puts "You are big. This is your #{bmi}"
  elsif height < 160 && weight < 50
    bmi = weight / (height * 0.01) ** 2
    puts "You are small. This is your #{bmi}"
  else
    bmi = weight / (height * 0.01) ** 2
    puts "You are normal. This is your #{bmi}"
  end  
end

cal_bmi(187, 65)
cal_bmi(180, 90)
cal_bmi(159, 49)
cal_bmi(159, 60)

問題36

実行結果を考えて下さい。

def cal_bmi(height, weight)
  bmi = weight / (height * 0.01) ** 2
  message = 
    if height > 180
      "You are tall. This is your #{bmi}"
    elsif weight > 80
      "You are big. This is your #{bmi}"
    elsif height < 160 && weight < 50
      "You are small. This is your #{bmi}"
    else
      "You are normal. This is your #{bmi}"
    end
  puts message
end

cal_bmi(187, 65)
cal_bmi(180, 90)
cal_bmi(159, 49)
cal_bmi(159, 60)

問題37

実行結果を考えて下さい。

def cal_bmi(height, weight)
  bmi = weight / (height * 0.01) ** 2
  message = 
    if height > 180
      "tall"
    elsif weight > 80
      "big"
    elsif height < 160 && weight < 50
      "small"
    else
      "normal"
    end
  puts "You are #{message}. This is your #{bmi}"
end

cal_bmi(187, 65)
cal_bmi(180, 90)
cal_bmi(159, 49)
cal_bmi(159, 60)
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up