Introduction To Ruby
Performing Calculations
Example Programs
Enter and test the following program,
# Sum Of Two Numbers
print "Enter first number: "
a = gets.chomp
print "Enter second number: "
b = gets.chomp
answer = a + b
puts "a + b = #{answer}"
gets
When you run this program, you don't get the result that you expect. We've already seen a trick that could help us work out why. Change the code so that it reads as follows,
# Sum Of Two Numbers
print "Enter first number: "
a = gets.chomp
print "Enter second number: "
b = gets.chomp
answer = a + b
puts "a + b = #{answer}"
puts a.class
puts b.class
puts answer.class
gets
The extra lines tell us how Ruby is treating the numeric values that we entered. Ruby assumes that the user input will be a string. The addition operator that we used is actually a concatenation (adding strings) operator. Our two strings are joined together and we end up with something like 1 + 2 = 12.
In order to get Ruby to understand the user input as numeric, we will need to use a conversion method. Here is one way that we could rewrite the program,
# Sum Of Two Numbers
print "Enter first number: "
a = gets.chomp
print "Enter second number: "
b = gets.chomp
a = a.to_i
b = b.to_i
answer = a + b
puts "a + b = #{answer.to_s}"
gets
The two extra lines convert the input to integers. If the variables a and b store integers then the variable answer will automatically become an integer too.
The following conversions may also prove helpful,
a = a.to_s # convert to string
a = a.to_i # convert to integer
a = a.to_f # convert to float
a = a.to_c # convert to complex
a = a.to_r # convert to rational
Challenges
- Test the example program by typing in decimal numbers. Adapt it so that you can add together numbers with decimals.
- Adapt the example program so that it, (a) subtracts the second number from the first, (b) multiplies the numbers together, and (c) divides the first number by the second.
- Change the program so that it performs all of the operations in one program, displaying the results in a useful way.
- Write a program that uses integer division and the modulus operator to convert a number of seconds to minutes and seconds.
- Write a program that allows the user to input the radius of a circle and get the area and circumference. Create a constant for the value of PI and look up the formulas if you need to.
- A class has four exams in one term. Write a program that reads in these scores and returns the student's average mark.
- A temperature in degrees Celsius can be converted to degrees Fahrenheit using the formula F = (9/5) * C + 32. Write a program that allows the user to input a temperature in Celsius and output the equivalent in degrees Fahrenheit.
- Write a program that converts temperatures from degrees Fahrenheit to degrees Celsius.
- Freda is paid £4.80 and hour. This rate is for the first 35 hours that she works. Any overtime she works is paid at time and a half. Input the number of hours worked and calculate the wage due. Assume that she works more than 35 hours each week.
- Write a program that converts a fraction to a percentage (the user can enter the numerator and denominator separately).
- Write a program that calculates x% of a quantity y where x and y are values input by the user.