Ruby选择结构实战

在这里插入图片描述

文章目录

  • 一、Ruby选择结构实战概述
  • 二、Ruby选择结构实战案例
    • (一)闰年判断
      • 1、编写程序,实现功能
      • 2、程序的解释说明
      • 3、运行程序,查看结果
    • (二)求解一元二次方程
      • 1、编写程序,实现功能
      • 2、程序的解释说明
        • (1)输入部分
        • (2)处理部分
        • (3)输出部分
      • 3、运行程序,查看结果
  • 三、Ruby选择结构实战总结

一、Ruby选择结构实战概述

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

二、Ruby选择结构实战案例

(一)闰年判断

1、编写程序,实现功能

  • 编写程序 - JudgeLeapYear.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
    在这里插入图片描述
=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有了更深入的了解和实践。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/480844.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

界面控件DevExpress ASP.NET Ribbon组件 - 完美复刻Office 365体验!

无论用户是喜欢传统工具栏菜单外观、样式,还是想在下一个项目中复制Office 365 web UI,DevExpress ASP.NET都提供了所需要的工具,帮助用户打造更好的应用程序界面。 P.S:DevExpress ASP.NET Web Forms Controls拥有针对Web表单&a…

ky10.aarch64安装Jenkins

参考地址:《安装部署 Jenkins》 前言 有war包和rpm两种安装方式,如果是长期使用更加推荐rpm的安装方式,可以更好的管理Jenkins; 我此次安装jenkins主要用于测试和简单的个人使用,所以选择更轻便的war安装。 1 下载J…

如何用java使用es

添加依赖 如何连接es客户端 RestHighLevelClient 代表是高级客户端 其中hostname:es的服务器地址,prot端口号 ,scheme:http还是https 如果不在使用es可以进行关闭,可以防止浪费一些资源 java如何创建索引&#xff1…

Python RPA简单开发实践(selenium登陆浏览器自动输入密码登陆)

打开csdn博客,简单版 class BS:def __init__(self, url):self.url url# self.password password# self.username usernamedef login_url(self):from selenium import webdriver# 不自动关闭浏览器option webdriver.ChromeOptions()option.add_experimental_opt…

每日OJ题_牛客_QQ2 微信红包

目录 牛客_QQ2 微信红包 解析代码 牛客_QQ2 微信红包 微信红包_牛客题霸_牛客网 解析代码 class Gift { public: int getValue(vector<int> gifts, int n) {int cnt 0, ret 0;// for(int i 0; i < n; i) // 摩尔投票法// {// if(cnt 0)// {// ret gifts[i];/…

STM32不使用中断实现定时器微秒级精确延时

我们在写代码的时候避免不了要使用延时函数&#xff0c;很多延时函数都是使用中断或者tick来实现的&#xff0c;tick的方式最大到毫秒ms级别&#xff0c;通过中断方式的通用定时器来实现&#xff0c;如果实现1us的延时那么每1us就来一次中断&#xff0c;很影响cpu的效率。 本文…

【webpack】----错误解决【Cannot read properties of undefined (reading ‘tap‘)】

1. 报错场景 安装 webpack-obfuscator 后&#xff0c;进行 js 代码混淆编译的时候报错。 2. 报错截图 3. 错误原因 通常是由于版本不兼容或配置错误引起的。 4. 查询本地 webpack 版本 4.1 查询命令 npm 查询 npm view webpack versionyarn 查询 yarn info webpack ver…

C++ —— 日期计算器

1. 头文件 #pragma once #include <iostream> using namespace std;class Date { public:Date(int year 1, int month 1, int day 1);int GetMonthDay();bool operator>(const Date& d) const;bool operator>(const Date& d)const;bool operator<(c…

opencv函数使用查找

opencv官方文档地址&#xff1a;https://docs.opencv.org/4.x/index.html 先选对应的版本opencv-python 以这个函数为例子 model cv2.face.LBPHFaceRecognizer.create() 点开后找face类的LBP里面就有create函数的用法

vue 安装脚手架报错 certificate has expired

vue 安装脚手架的时候报错&#xff0c;报错信息如下&#xff1a; 错误信息&#xff1a;npm ERR! request to https://registry.npm.taobao.org/vue%2fcli failed, reason: certificate has expired 翻译&#xff1a;npm ERR&#xff01;请求到https://registry.npm.taobao.org…

python的街道办管理系统flask-django-php-nodejs

随着世界经济信息化、全球化的到来和互联网的飞速发展&#xff0c;推动了各行业的改革。若想达到安全&#xff0c;快捷的目的&#xff0c;就需要拥有信息化的组织和管理模式&#xff0c;建立一套合理、动态的、交互友好的、高效的街道办管理系统。当前的信息管理存在工作效率低…

python的BBS论坛系统flask-django-nodejs-php

为了更好地发挥本系统的技术优势&#xff0c;根据BBS论坛系统的需求&#xff0c;本文尝试以B/S架构设计模式中的django/flask框架&#xff0c;python语言为基础&#xff0c;通过必要的编码处理、BBS论坛系统整体框架、功能服务多样化和有效性的高级经验和技术实现方法&#xff…

XS2186,八通道,兼容IEEE802.3at/af,以太网供电PSE控制器

XS2186是一个八通道、供电设备&#xff08;PSE&#xff09;电源 控制器&#xff0c;设计用于IEEE 802.3at/af兼容PSE。器 件提供用电设备&#xff08;PD&#xff09;检测、分级、限流以及负载 断开检测。器件支持全自动工作、软件编程和外挂 eeprom。器件还支持最新二事件分级。…

4核16G服务器租用优惠价格,26.52元1个月,半年149元

阿里云4核16G服务器优惠价格26.52元1个月、79.56元3个月、149.00元半年&#xff0c;配置为阿里云服务器ECS经济型e实例ecs.e-c1m4.xlarge&#xff0c;4核16G、按固定带宽 10Mbs、100GB ESSD Entry系统盘&#xff0c;活动链接 aliyunfuwuqi.com/go/aliyun 活动链接打开如下图&a…

C语言基础知识复习(考研)

&#xff08;1&#xff09;C语言文件操作 1 什么是文件 文件有不同的类型&#xff0c;在程序设计中&#xff0c;主要用到两种文件&#xff1a; (1)程序文件。包括源程序文件(后缀为.c)、目标文件(后缀为.obj)、可执行这种文件的内容是程序代码。 (2)数据文件。文件的内容不是…

win10下自由切换多版本JDK操作

1.在window 系统变量 path路径追加%JAVA_HOME%\bin;%JAVA_HOME%\jre\bin; 2.下载多版本jdk zip文件解压到到C:\Program Files\Java\目录下 3.定义切换Java版本的bat文件,内容如下 @echo off @echo -------------------welcome to use Java version switch service------------…

短剧分销cps推广很简单,短剧分销授权平台怎么搭建?

一、短剧分销是什么&#xff1f; 短剧分销&#xff0c;也被称为短剧CPS&#xff0c;是一种通过推广短剧并获得收益的方式。分销方会提供短剧片单&#xff0c;内容创作者可以根据这些片单剪辑成短视频内容进行分发。这样既能避免版权问题&#xff0c;又可以利用优质内容吸引用户…

vue3怎么使用reactive赋值

使用ref赋值&#xff1a; const list ref([]) const getList async () > {const res await axios.get(/list)list.value res.data } 如何使用reactive来替换呢&#xff1f; //const list ref([]) const list reactive([]) const getList async () > {const res…

LabVIEW焓差试验室流量计现场自动校准系统

LabVIEW焓差试验室流量计现场自动校准系统 在现代工业和科研领域&#xff0c;流量计的准确性对于保证生产过程的质量和效率非常重要。开发了一种基于LabVIEW的焓差试验室流量计现场自动校准系统&#xff0c;通过提高流量计校准的准确性和效率。 在空调器空气焓值法能效测量装…

3.22号arm

作业 实验现象&#xff0c;主函数每一秒循环字符m&#xff0c;当按下按键1&#xff0c;则串口输出1&#xff0c;按下按键2&#xff0c;串口输出2&#xff0c;按下按键3&#xff0c;串口输出3 main.c #include "uart4.h"#include "led.h"#include "k…