Ruby选择结构实战

文章目录

一、Ruby选择结构实战概述

  • 程序编出来是用于判断决策的,因此在编程语言中,如何使用判断也就理所当然成为其核心思想,它影响我们用这门语言编码和思维的方式。Ruby的判断语句和其他大部分面向对象或过程式语言大同小异。
  • 当你使用if或unless时,既可选用块形式(ifcondition,statements,end),也可选用单行形式(statements if condition)。也许在某些人看来,if的单行形式令人作呕,但我却觉得,它仅仅用了一行代码,就清楚地表达了思想。

二、Ruby选择结构实战案例

(一)闰年判断

1、编写程序,实现功能

  • 编写程序 - JudgeLeapYear.rb
rb 复制代码
=begin
功能:闰年判断
作者:华卫
日期:2024年3月22日
=end

print "输入一个年份:"
input = gets.chomp
year = input.to_i

if year % 4 == 0 && year % 100 !=0 || year % 400 == 0
    puts "#{year}是闰年。"
else
    puts "#{year}是平年。"
end

2、程序的解释说明

  • 这段 Ruby 程序实现了一个功能:判断输入的年份是否是闰年。

    1. 首先,通过 gets.chomp 方法获取用户输入的年份,并将其转换为整数类型,存储在变量 year 中。

    2. 然后,使用条件语句 if 进行判断。条件判断的逻辑:

      • 如果年份能被 4 整除,但不能被 100 整除,或者能被 400 整除,那么就是闰年。
      • 否则,就是平年。
    3. 最后,根据条件判断的结果,使用 puts 方法输出相应的信息,告诉用户输入的年份是闰年还是平年。

  • 值得注意的是,程序中使用了逻辑运算符 &&|| 来组合多个条件,其中 && 表示逻辑与(and),|| 表示逻辑或(or)。这样的逻辑组合确保了按照闰年的定义来正确判断年份。

3、运行程序,查看结果

  • 执行命令:ruby JudgeLeapYear.rb

(二)求解一元二次方程

1、编写程序,实现功能

  • 编写程序 - SolveQuadraticEquation.rb
rb 复制代码
=begin
功能:求解一元二次方程
作者:华卫
日期:2024年3月22日
=end

# 输入部分
print "a = "
input = gets.chomp
a = input.to_f
print "b = "
input = gets.chomp
b = input.to_f
print "c = "
input = gets.chomp
c = input.to_f

# 处理部分
delta = b**2 - 4 * a * c
if delta > 0 
	x1 = (-b + Math.sqrt(delta)) / (2 * a)
	x2 = (-b - Math.sqrt(delta)) / (2 * a)
	# 输出部分
	puts "方程有两个不等实根"
	puts "x1 = #{x1}"
	puts "x2 = #{x2}"
elsif delta == 0
    x1 = x2 = -b / (2 * a)
    # 输出部分
	puts "方程有两个相等实根"
	puts "x1 = #{x1}"
	puts "x2 = #{x2}"
else
	realPart = -b / (2 * a) # 实部
	imageryPart = Math.sqrt(-delta) / (2 * a) # 虚部
	# 输出部分
	puts "方程有两个不等复根"
	puts "x1 = #{realPart} + #{imageryPart}i"
	puts "x2 = #{realPart} - #{imageryPart}i"	
end

2、程序的解释说明

  • 这段 Ruby 程序是一个用于求解一元二次方程的简单程序,它包含了输入、处理和输出三个部分,并根据方程根的类型输出不同的结果。
(1)输入部分
  • 程序首先提示用户输入方程的系数 abc,然后通过 gets.chomp 方法获取用户输入的字符串,并使用 to_f 方法将其转换为浮点数类型。
(2)处理部分
  1. 计算判别式 delta = b**2 - 4 * a * c,用以确定方程的根的类型。
  2. 如果判别式 delta 大于 0,则方程有两个不等实根,使用求根公式计算实根 x1x2
  3. 如果判别式 delta 等于 0,则方程有两个相等实根,实根为 -b / (2 * a)
  4. 如果判别式 delta 小于 0,则方程有两个不等复根,使用复数的实部和虚部计算复根。
(3)输出部分
  • 根据方程的根的类型,分别输出不同的结果
    • 如果方程有两个不等实根,则输出两个实根 x1x2
    • 如果方程有两个相等实根,则输出相同的实根 x1x2
    • 如果方程有两个不等复根,则输出两个复根,使用形如 realPart + imageryParti 的形式表示。

3、运行程序,查看结果

  • 执行命令:ruby SolveQuadraticEquation.rb

三、Ruby选择结构实战总结

  • 通过这两个Ruby编程实例,我深入理解了Ruby的选择结构。第一个实例是判断闰年的程序,它展示了如何使用if语句进行条件判断。第二个实例是求解一元二次方程的程序,它不仅包含了条件判断,还涉及到了复数的计算。这两个实例都体现了Ruby语言简洁明了的特点,使我对Ruby有了更深入的了解和实践。
相关推荐
alonewolf_9921 小时前
RabbitMQ高级功能全面解析:队列选型、死信队列与消息分片实战指南
分布式·消息队列·rabbitmq·ruby
m0_748252385 天前
Ruby 模块(Module)的基本概念
开发语言·python·ruby
子非衣5 天前
CenOS7安装RabbitMQ(含延迟队列插件)
分布式·rabbitmq·ruby
m0_748252385 天前
Ruby 数据类型概述
开发语言·mysql·ruby
你好龙卷风!!!8 天前
rabbitMQ入门 (mac)
macos·rabbitmq·ruby
南行*9 天前
MSF安全开发
安全·网络安全·系统安全·ruby
maozexijr10 天前
Rabbit MQ中@Exchange(durable = “true“) 和 @Queue(durable = “true“) 有什么区别
开发语言·后端·ruby
开开心心_Every15 天前
多功能抽奖软件:游戏化互动体验
数据库·游戏·微信·pdf·excel·语音识别·ruby
C++chaofan17 天前
JUC 中 synchronized 的底层实现原理解析——Monitor
java·开发语言·c++·rust·ruby·juc·字节码
linux修理工17 天前
vagrant vmware
运维·ruby·vagrant