If you use variables and puts, you can do some basic calculations and output to the screen. However, it is also a fact that it is not enough as a program. The processing that only executes the various processing described in the program in that order, It is called sequential processing.
However, programs cannot be created by sequential processing alone. Different things have to be done in different situations. For example, if you are making a game program, you need to branch the process according to the conditions, such as "If you hit an enemy, the game is over". Processing that changes the processing flow under certain conditions like this is called branch processing.
In the Ruby language, an instruction called if is provided as an instruction for describing branch processing. Here, I will explain it.
Sample program Let's start by learning about the if statement, which is the most basic process of conditional branching. The if statement is a word that means "what if" in English, and is used to perform processing such as "if ...". First, take a look at the program below.
1-1.rb
def calculation
puts "Enter a number"
a = gets.to_i
if(a > 0)
puts "The value you enter is a positive number.\n" #Execute if it is a positive number
end
end
When I run the program, "Enter a number:" is displayed on the console screen, The cursor will appear next to it, and it will shift to the input mode from the keyboard. Now enter a positive number from the keyboard.
Execution result 1.(The day when you entered a positive loss)
Enter a number:5
The value you enter is a positive number.
Then, as shown above, "The value you entered is a positive number." Is displayed, and the program ends. Also, even in the same program, if you enter 0 and a negative number, nothing will be displayed as follows.
Execution result 2.(If you enter 0 and a negative number)
Enter a number:-
Next, the format of the if statement used in conditional branching is explained. The if woman has the following format.
if statement format
if(#Conditional expression)
#processing
end
When the conditional expression in () is satisfied, the if statement executes the process enclosed in {}. In 1-1.rb, a> 0, that is, a When it is greater than 0, the condition is satisfied and the puts statement in {} is executed. > Is called a comparison operator. The comparison operators are as follows.
operator | meaning | Example of use |
---|---|---|
> | Greater | a > 0 |
>= | that's all | a >= 0 |
< | Smaller | a < 0 |
<= | Less than | a <= 0 |
== | equal | a == 0 |
!= | Not equal | a != 0 |
From the above, If this program says that the number entered from the keyboard is a positive integer, "The value entered is a positive number." Is displayed, otherwise nothing is displayed. However, if possible, I would like to display some message even when a value other than a positive number is entered. So, let's introduce the mechanism that can do it next.
・ Sample program First of all, please see the following program.
1-2.rb
def calculation
puts "Enter a number"
a = gets.to_i
if(a > 0)
puts "The value you enter is a positive number.\n" #Execute if it is a positive number
else
puts "The value you enter is not a positive number.\n" #Run if 0 or negative number
end
end
The execution result of this program does not change if you enter a positive integer after execution. However, if you enter a negative number, the execution result will be as follows.
Execution result 3.(If you enter 0 and a negative number)
Enter a number:-1
The value you enter is not a positive number.
The if ~ else statement that appears here has the following format. if ~ else statement format
if(Conditional expression)
#Processing ①
else
#Processing ②
end
When the conditional expression in () of the if statement is satisfied, process (1) is executed in the same way as when the if statement is used alone. However, in other cases, that is, if the conditional expression is not satisfied, the process (2) below the else statement is executed. Therefore, this program will output "The value you entered is not a positive number" if a is not a positive integer, that is, 0 or a negative value. Flow chart below
Sample program When using if and else, I was able to write the processing when a certain condition is satisfied and when it is not. However, in reality, there are many cases where the condition consists of multiple conditions. What should I do in such a case? At that time, elsif is useful. First, let's take a look at the following sample.
1-3.rb
def math
puts "1~Please enter a value of 3:"
num = gets.to_i
if(num == 1)
puts "one\n" #Processing when num is 1
elsif(num == 2)
puts "two\n" #Processing when num is 2
elsif(num == 3)
puts "three\n" #Processing when num is 3
else
puts "Inappropriate value.\n" #Processing when other values are entered
end
end
Execution result 1(If a value from 1 to 3 is entered)
Please enter a value from 1 to 3:1
one
Execution fruit delivery 2(If a value other than that is entered)
Please enter a value from 1 to 3:4
Inappropriate value.
As a result of execution, if you enter 1, it will be displayed as one, if you enter 2, it will be displayed as two, and if you enter 3, it will be displayed as three. If you enter any other value, "Please enter a value from 1 to 3" with this if and else alone You can only execute processing when one condition is met and when it is not. With elsif, it is possible to separate cases for multiple conditions. The format of the if statement including elsif is as follows.
if ~ elsif ~ else statement format
if(Conditional expression ①)
Processing ①
elsif(Conditional expression ②)
Processing ②
else
Processing ③
end
If the conditional expression (1) is satisfied, the process (1) is executed. If the conditional expression (2) is satisfied, the process (2) is executed. If neither of the conditions is satisfied, the process (3) is executed. You can add any number </ font> of elsif after if. So you can add as many conditions as you like. for that reason. The processing flow of 1-3.rb is as follows.
Next, let's combine this knowledge to create a more complicated if syntax. First, take a look at the sample below.
list1-4.rb
def main
#Enter the dice roll
puts "Please enter a number from 1 to 6:"
dice = gets.to_i
#Find out if the value is within the dice roll
if(1 <= dice && dice <= 6)
if(dice == 2 || dice == 4 || dice == 6)
#Divide the processing according to whether the dice roll is even or odd
puts "Ding (a butterfly)\n" #If it is an even number, it is a butterfly.
else
puts "Half (Han)\n" #If it is odd, half (han)
end
else
puts "It is a number outside the range.\n"
end
end
The execution result of this program can be roughly divided into three types. The first is an even number between 1 and 6, That is, if you enter a value such as 2,4,6. As shown below, "It's a butterfly" is displayed and the program ends.
Execution result 1.(2,4,If 6 is entered)
Please enter a number from 1 to 6:2
Ding(Butterfly)is.
Next, also between 1 and 6, if you enter an odd number such as 1,3,5 this time, "Half (Han)." Is displayed and Pro Gram ends.
Execution result 2.(1,3 of,If 5 is entered)
Please enter a number from 1 to 6:5
Ding(Butterfly)is.
Finally, if you enter an integer other than 1 to 6, that is, a number that does not correspond to the dice, "It is a number outside the range." Is displayed and the program ends.
Execution result 3.(When a number outside the range is entered)
Please enter a number from 1 to 6: 10
It is a number outside the range.
Recommended Posts