Chart type ruby-III (if, case, Array.each by leap year)
Conditional branching used in various languages as well as Ruby Basically with Python
if expression[then]
formula...
[elsif expression[then]
formula... ]
...
[else
formula... ]
end
Works with or without movements in []
Just note that else if is written as elsif
Writing example:
if a=20
b true
elsif c=30
b true
else
b false
end
A program that displays whether the number entered is a leap year
・ Years that are divisible by 4 are leap years ・ However, a year divisible by 100 is not a leap year ・ In addition, a year divisible by 400 is a leap year.
First of all, whether it is divisible by 4
[2004, 1999].each do |year|
p year
if year % 4 == 0
p true #True if divisible by 4(leap year)
else
p false #False if not divisible by 4(Not a leap year)
end
end
The first line puts 2004 and 1999 in each year
Next, put in the process of whether it is divisible by 100
[1900, 2004, 1999].each do |year|
p year
if year % 100 == 0
p false #False if divisible by 100
next
end
if year % 4 == 0
p true
else
p false
end
end
When next is executed, the process after next is not executed and it shifts to the next iteration. It is a little different from break which interrupts the iteration itself.
Finally, put in the process of whether it is divisible by 400
def leap?(year)
if year % 400 == 0
p true #True if divisible by 400
elsif year % 100 == 0
p false
elsif year % 4 == 0
p true
else
p false
end
end
[2000, 1900, 2004, 1999].each do |year|
p year
leap?(year)
end
By the way, I implemented it as a function leap?
EX
If you write neatly using case instead of if, it will be like this
def leap?(year)
case
when year % 400 ==0 ; p true
when year % 100 ==0 ; p false
when year % 4 ==0 ; p true
else ; p false
end
end
[2000, 1900, 2004, 1999].each do |year|
p year
leap?(year)
end
note
It is difficult to think about conditional branching in advance and implement it, but may it be better to implement it step by step?
Recommended Posts