




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ru基础知识作业指导书TOC\o"1-2"\h\u9990第一章Ru概述 3320711.1Ru语言简介 3162641.2Ru安装与配置 322122第二章Ru语法基础 4129952.1变量与数据类型 4196902.1.1变量的定义与使用 4313072.1.2数据类型 487932.2控制结构 5283032.2.1条件语句 5322572.2.2循环语句 5286362.3运算符 611232.3.1算术运算符 6267452.3.2比较运算符 6305692.3.3逻辑运算符 730836第三章Ru数组与哈希 734373.1数组的基本操作 7248673.1.1创建数组 7238833.1.2访问数组元素 7136713.1.3修改数组元素 7286823.1.4添加和删除元素 7156553.2哈希的基本操作 8196963.2.1创建哈希 8116903.2.2访问哈希元素 8150873.2.3修改哈希元素 896523.2.4添加和删除键值对 827743.3数组与哈希的综合应用 950103.3.1使用数组存储多个哈希 960563.3.2使用哈希存储数组信息 97288第四章Ru方法与模块 9222754.1方法定义与调用 961104.2模块的定义与使用 10249694.3方法的高级特性 111731第五章Ru面向对象编程 12234495.1类的定义与使用 12281525.2继承与多态 13104705.3封装与解耦 1429673第六章Ru异常处理 15270516.1异常的基本概念 15259766.2异常的捕获与处理 16303436.3异常的抛出与自定义异常 178936第七章Ru文件操作 17307997.1文件读写基础 18155947.1.1文件打开与关闭 18254307.1.2读取文件内容 1828907.1.3写入文件内容 1966447.2目录操作 1945617.2.1创建目录 19226197.2.2删除目录 19279817.2.3列出目录内容 19235427.2.4改变当前工作目录 1945887.3文件与目录的高级操作 1927947.3.1文件复制与移动 20115867.3.2获取文件属性 20175207.3.3文件名与路径操作 2020919第八章Ru网络编程 2023318.1套接字编程基础 20323078.1.1套接字的概述 20251708.1.2Socket类的使用 20277018.1.3TCP客户端与服务器示例 21272598.2HTTP请求与响应 2181368.2.1HTTP协议概述 2191398.2.2使用HTTP类发送请求 22204618.2.3使用HTTP类处理响应 22309778.3网络编程综合应用 22131638.3.1网络爬虫 22262168.3.2网络聊天室 2323858第九章Ru多线程编程 24261809.1线程的创建与管理 24278199.1.1线程的创建 24304219.1.2线程的管理 24147609.2线程同步与通信 25248109.2.1互斥锁(Mutex) 2584149.2.2条件变量(Condition) 25289319.2.3信号量(Semaphore) 26320049.3线程安全与并发 2677809.3.1线程安全 26312439.3.2并发 2614323第十章Ru实践项目 26693110.1简单计算器程序 261148110.1.1项目概述 262074310.1.2设计思路 273051410.1.3实现代码 271203010.2数据库操作示例 28854310.2.1项目概述 282940510.2.2设计思路 282526210.2.3实现代码 28302010.3Web应用程序开发示例 293032110.3.1项目概述 292187510.3.2设计思路 291044010.3.3实现代码 29第一章Ru概述1.1Ru语言简介Ru是一种开源的、面向对象的脚本语言,由日本程序员松本行弘(YukihiroMatsumoto,简称Matz)于1993年设计,并于1995年首次发布。Ru旨在提供一种易于阅读、编写和理解的语言,同时具备强大的面向对象功能。Ru的语法简洁明了,支持多种编程范式,包括面向对象、函数式、命令式等。Ru在国际上拥有广泛的用户群体,特别是在Web开发领域,RuonRails(简称Rails)框架的推出,使得Ru语言的知名度迅速提升。在我国,Ru也逐渐受到越来越多的关注和应用。1.2Ru安装与配置Ru的安装与配置过程相对简单,以下是在Windows和Linux系统中安装Ru的方法:(1)Windows系统:(1)RuInstaller:访问RuInstaller官方网站(s:///),最新版本的RuInstaller。(2)安装Ru:双击的RuInstaller安装包,按照提示完成安装。安装过程中,建议勾选“AddRutoPATH”选项,以便在命令行中直接使用Ru命令。(3)验证安装:打开命令行窗口,输入以下命令,查看Ru版本:ruv若返回Ru版本信息,则表示安装成功。(2)Linux系统:(1)更新系统:在终端输入以下命令,保证系统软件包更新到最新版本:sudoaptgetupdate(2)安装Ru:输入以下命令,安装Ru:sudoaptgetinstallru(3)验证安装:打开终端,输入以下命令,查看Ru版本:ruv若返回Ru版本信息,则表示安装成功。在安装Ru后,可以根据需要安装Ru的扩展库。Ru的扩展库称为Gem,可以通过RuGems工具进行安装。以下为安装RuGems的方法:(1)Windows系统:在RuInstaller安装目录下,找到并运行`ridkinstall`命令。(2)Linux系统:输入以下命令,安装RuGems:sudoaptgetinstallrugems安装完成后,可以通过以下命令安装Ru扩展库:geminstall[gem_name]其中,[gem_name]为要安装的扩展库名称。第二章Ru语法基础2.1变量与数据类型2.1.1变量的定义与使用在Ru中,变量是用来存储数据的标识符。变量的命名规则遵循以下原则:以小写字母或下划线开头,后续字符可以是字母、数字或下划线。以下是几种常见的变量类型:局部变量:作用域限于当前方法或代码块内。实例变量:作用域限于当前对象的实例内,以符号开头。类变量:作用域限于当前类的所有实例内,以符号开头。全局变量:作用域贯穿整个程序,以$符号开头。2.1.2数据类型Ru中的数据类型主要包括以下几种:数字(Numeric):包括整数(Integer)和浮点数(Float)。字符串(String):由字符序列组成的不可变序列。布尔值(Boolean):包括true和false两种值。数组(Array):一系列元素的集合,元素类型可以不同。哈希(Hash):键值对的集合,键和值可以是任意类型。2.2控制结构2.2.1条件语句Ru中的条件语句包括if、unless、case等。以下是几种常用的条件语句:if语句:根据条件表达式判断是否执行代码块。ruifcondition条件为真时执行的代码块endunless语句:与if语句相反,当条件为假时执行代码块。ruunlesscondition条件为假时执行的代码块endcase语句:根据条件匹配执行相应的代码块。rucasevariablewhenvalue1当variable等于value1时执行的代码块whenvalue2当variable等于value2时执行的代码块else当以上条件都不满足时执行的代码块end2.2.2循环语句Ru中的循环语句包括for、while、until等。以下是几种常用的循环语句:for循环:遍历数组或范围内的元素。ruforelementinarray对每个元素执行的代码块endwhile循环:当条件为真时,重复执行代码块。ruwhilecondition条件为真时执行的代码块enduntil循环:当条件为假时,重复执行代码块。ruuntilcondition条件为假时执行的代码块end2.3运算符2.3.1算术运算符Ru中的算术运算符包括以下几种:加法()减法()乘法()除法(/)取模(%)幂运算()2.3.2比较运算符Ru中的比较运算符包括以下几种:等于(==)不等于(!=)大于(>)小于(<)大于等于(>=)小于等于(<=)2.3.3逻辑运算符Ru中的逻辑运算符包括以下几种:逻辑与(&&)逻辑或()逻辑非(!)第三章Ru数组与哈希3.1数组的基本操作数组是Ru中一种用于存储一系列元素的集合,这些元素可以是不同类型的。以下是数组的基本操作:3.1.1创建数组在Ru中,可以使用方括号``或`Array`类来创建数组:ruarr1=[1,2,3,4,5]arr2=Array.new([1,2,3,4,5])3.1.2访问数组元素可以通过索引来访问数组中的元素,索引从0开始:ruputsarr1[0]输出1putsarr1[1]输出23.1.3修改数组元素可以直接通过索引修改数组中的元素:ruarr1[1]=10putsarr1输出[1,10,3,4,5]3.1.4添加和删除元素可以使用`<<`运算符向数组末尾添加元素,使用`pop`和`shift`方法删除元素:ruarr1<<6putsarr1输出[1,10,3,4,5,6]arr(1)popputsarr1输出[1,10,3,4,5]arr(1)shiftputsarr1输出[10,3,4,5]3.2哈希的基本操作哈希是Ru中一种用于存储键值对的数据结构。以下是哈希的基本操作:3.2.1创建哈希在Ru中,可以使用花括号`{}`或`Hash`类来创建哈希:ruhash1={'a'=>1,'b'=>2,'c'=>3}hash2=Hash.new({'a'=>1,'b'=>2,'c'=>3})3.2.2访问哈希元素可以通过键来访问哈希中的值:ruputshash1['a']输出1putshash1['b']输出23.2.3修改哈希元素可以直接通过键修改哈希中的值:ruhash1['a']=10putshash1输出{"a"=>10,"b"=>2,"c"=>3}3.2.4添加和删除键值对可以使用``运算符向哈希中添加键值对,使用`delete`方法删除键值对:ruhash1['d']=4putshash1输出{"a"=>10,"b"=>2,"c"=>3,"d"=>4}hash(1)delete('b')putshash1输出{"a"=>10,"c"=>3,"d"=>4}3.3数组与哈希的综合应用在实际编程中,数组与哈希经常结合使用,以下是一些综合应用示例:3.3.1使用数组存储多个哈希ruhash_array=[{'name'=>'Alice','age'=>25},{'name'=>'Bob','age'=>30},{'name'=>'Charlie','age'=>35}]hash_array.eachdohashputs"{hash['name']}is{hash['age']}yearsold."end3.3.2使用哈希存储数组信息ruhash={'numbers'=>[1,2,3,4,5],'letters'=>['a','b','c','d','e']}hash.eachdokey,valueputs"{key}:{value}"end第四章Ru方法与模块4.1方法定义与调用在Ru中,方法是执行特定任务的代码块,它是对象的一部分。每个方法都包含返回值,这个值通常是通过方法体中的最后一条表达式得到的。方法的定义使用`def`关键字开始,后跟方法名和参数列表(如果有的话),然后是大括号`{}`或关键字`do`和`end`来包围方法体。以下是方法定义的基本结构:rudef方法名(参数列表)方法体end或者使用`do`和`end`:rudef方法名(参数列表)do方法体endendRu中的方法调用相对简单,通过对象后跟点号`.`和方法名来实现。如果方法是类方法,则通过类名调用。ru对象.方法名(参数列表)若是类方法,则:ru类名.方法名(参数列表)4.2模块的定义与使用模块(Module)是Ru中用于分组方法和常量的容器。它可以被视为一个没有实例的类,不能被实例化。模块主要用于混合(Mixin)功能,即将模块的方法和属性添加到其他对象中。模块定义使用`module`关键字,后跟模块名,然后是大括号`{}`或`do`和`end`以及模块体:rumodule模块名模块体end模块的使用主要有两种方式:引入(`include`)和扩展(`extend`)。通过`include`可以将模块的方法混入到类中,成为类实例的一部分:ruclass类名include模块名end通过`extend`可以将模块的方法混入到类本身,成为类方法:ruclass类名extend模块名end4.3方法的高级特性Ru方法具有一些高级特性,包括默认参数、可变参数、参数的展开以及方法的链式调用等。默认参数允许在定义方法时为参数指定默认值,如果调用方法时没有提供对应的参数值,则使用默认值:rudef方法名(参数1,参数2=默认值)方法体end可变参数使用``前缀标记,它允许方法接收任意数量的参数,这些参数在方法内部以数组的形式出现:rudef方法名(参数列表)方法体end参数的展开允许将数组或散列的元素作为独立的参数传递给方法:rudef方法名(参数1,参数列表)方法体end调用时数组.方法名(数组)方法的链式调用是Ru面向对象编程的一个特性,它允许方法的返回值作为下一个方法的调用对象,形成链式表达:ru对象.方法(1)方法(2)方法3这些高级特性使得Ru的方法定义和使用更加灵活和强大。第五章Ru面向对象编程5.1类的定义与使用在Ru中,类是面向对象编程的基础。类定义了对象的属性和行为。以下是定义和使用类的基本步骤。定义类:在Ru中,类通过关键字`class`定义,后跟类名,类名通常使用驼峰式命名规则。类体内可以定义属性、方法和常量。ruclassMyClass类体end类属性:类属性是类级别的变量,属于类本身,而非类的实例。通过`class<<self`或在类定义中直接定义。ruclassMyClassclass_variable='Thisisaclassvariable'class<<selfattr_accessor:another_class_variableendend实例变量和方法:实例变量是属于类的实例的变量,通过`attr_accessor`等访问器方法进行访问。实例方法则是定义在类体内的普通方法。ruclassMyClassattr_accessor:instance_variabledefinitialize(value)instance_variable=valueenddefinstance_method方法体endend创建实例:使用`new`方法创建类的实例。rumy_instance=MyClass.new('example')5.2继承与多态继承是面向对象编程中的一种机制,允许一个类继承另一个类的特性。Ru中的继承通过`<`运算符实现。ruclassParentClassdefparent_method父类方法endendclassChildClass<ParentClassdefchild_method子类方法endend子类会继承父类的方法和属性。如果子类中定义了与父类同名的方法,则会覆盖父类的方法,这称为方法重写。多态指的是不同类的对象可以响应相同的消息(方法调用),并根据各自类的定义执行不同的行为。ruclassAnimaldefspeakraiseNotImplementedError,"Subclassesmustimplementthismethod"endendclassDog<Animaldefspeak'Woof!'endendclassCat<Animaldefspeak'Meow!'endendanimals=[Dog.new,Cat.new]animals.eachdoanimalputsanimal.speakend5.3封装与解耦封装是面向对象编程的另一个基本原则,意味着将对象的实现细节隐藏起来,仅对外暴露必要的接口。在Ru中,方法默认是公开的,但可以通过使用`private`和`protected`关键字来限制方法的访问级别。ruclassMyClassdefpublic_method公开方法endprivatedefprivate_method私有方法endend解耦是指减少不同模块或组件之间的依赖关系,提高代码的可维护性和可扩展性。在Ru中,可以通过模块来实现解耦。模块是一种类似类的结构,但不能被实例化。它们通常用于组织和共享代码。rumoduleMyModuledefshared_method共享方法endendclassMyClassincludeMyModuleend通过`include`关键字,可以将模块的方法作为类的方法。这种方式促进了代码的复用,同时也保持了模块和类的独立性。第六章Ru异常处理6.1异常的基本概念在程序执行过程中,可能会遇到各种不可预测的错误,例如文件不存在、类型不匹配等,这些错误可能导致程序异常终止。Ru提供了异常处理机制,使得程序能够在出现错误时进行相应的处理,保证程序能够正常运行。异常(Exception)是Ru中用于处理错误的对象。在Ru中,所有的异常都继承自基类Exception。Exception类及其子类定义了多种异常类型,以应对不同的错误情况。6.2异常的捕获与处理异常的捕获与处理是通过beginend语句块来实现的。在beginend语句块中,可以编写可能引发异常的代码,并通过rescue子句来捕获和处理异常。以下是异常捕获的基本语法:rubegin可能引发异常的代码rescue=>e处理异常的代码end其中,`rescue`关键字用于捕获异常,`e`是异常对象的实例。在捕获异常后,可以访问异常对象的属性和方法,以便对异常进行进一步处理。如果需要对多种异常进行处理,可以使用多个rescue子句:rubegin可能引发异常的代码rescueStandardError=>e1处理StandardError异常的代码rescueTimeoutError=>e2处理TimeoutError异常的代码end在处理异常时,还可以使用else子句来执行没有异常发生时的代码,以及ensure子句来保证某些代码无论是否发生异常都会执行:rubegin可能引发异常的代码rescue=>e处理异常的代码else没有异常发生时执行的代码ensure无论是否发生异常都要执行的代码end6.3异常的抛出与自定义异常除了捕获和处理异常外,Ru还允许抛出(raise)异常。抛出异常可以使用raise关键字,后跟异常对象或异常类的名称。ruraise"出现错误"或者,抛出一个特定的异常类:ruraiseStandardError,"出现标准错误"在开发过程中,有时需要自定义异常类以满足特定需求。自定义异常类通常继承自Exception或其子类。以下是一个自定义异常类的示例:ruclassCustomError<StandardErrordefinitialize(message)super(message)endend在代码中,可以使用自定义异常类来抛出异常:ruraiseCustomError,"出现自定义错误"通过自定义异常类,可以使异常处理更加清晰、具体,有助于维护和调试程序。第七章Ru文件操作7.1文件读写基础7.1.1文件打开与关闭在Ru中,文件操作通常需要先打开文件,然后进行读写操作,最后关闭文件。以下为打开和关闭文件的常用方法:ru打开文件file=File.open("example.txt","r")读写操作关闭文件file.close其中,`"r"`表示以只读模式打开文件。除此之外,还有`"r"`(读写模式)、`"w"`(只写模式,若文件不存在则创建)等不同的模式。7.1.2读取文件内容读取文件内容有多种方法,以下列举几种常用的读取方式:ru读取整个文件内容content=File.read("example.txt")按行读取文件内容File.open("example.txt","r")dofilefile.each_linedolineputslineendend逐字符读取文件内容File.open("example.txt","r")dofilefile.each_chardocharputscharendend7.1.3写入文件内容写入文件内容的方法有以下几种:ru向文件写入内容,若文件不存在则创建File.write("example.txt","Hello,world!")追加内容到文件末尾File.open("example.txt","a")dofilefile.write("\nThisisanewline.")end7.2目录操作7.2.1创建目录创建目录可以使用`Dir.mkdir`方法:ruDir.mkdir("new_directory")7.2.2删除目录删除目录可以使用`Dir.rmdir`方法,但需要注意目录必须为空:ruDir.rmdir("new_directory")7.2.3列出目录内容列出目录内容可以使用`Dir.entries`方法:ruDir.entries("new_directory").eachdoentryputsentryend7.2.4改变当前工作目录改变当前工作目录可以使用`Dir.chdir`方法:ruDir.chdir("new_directory")7.3文件与目录的高级操作7.3.1文件复制与移动文件复制可以使用`File.copy`方法:ruFile.copy("source.txt","destination.txt")文件移动可以使用`File.rename`方法:ruFile.rename("source.txt","destination.txt")7.3.2获取文件属性获取文件属性可以使用`File.stat`方法:rufile_stat=File.stat("example.txt")获取文件大小putsfile_stat.size获取文件修改时间putsfile_stat.mtime7.3.3文件名与路径操作文件名与路径操作可以使用`File.basename`和`File.dirname`方法:rufilename=File.basename("/path/to/example.txt")putsfilename输出:example.txtdirectory=File.dirname("/path/to/example.txt")putsdirectory输出:/path/to第八章Ru网络编程8.1套接字编程基础8.1.1套接字的概述套接字是计算机网络通信的基本单元,它允许应用程序通过不同的网络协议进行数据交换。在Ru中,套接字编程是通过内置的Socket类实现的。Socket类提供了创建、连接、监听、发送和接收数据等操作。8.1.2Socket类的使用在Ru中,使用Socket类创建套接字的基本步骤如下:(1)导入Socket库:`require'socket'`(2)创建Socket对象:`socket=Socket.new(AF_INET,SOCK_STREAM,nil)`(3)连接到服务器:`socket.connect(server_address,server_port)`(4)发送数据:`socket.send(data,0)`(5)接收数据:`socket.recv(buffer_size)`(6)关闭套接字:`socket.close`8.1.3TCP客户端与服务器示例以下是一个简单的TCP客户端与服务器通信的示例:服务器端代码:rurequire'socket'server=TCPServer.new()loopdoclient=server.acceptputs"Clientconnected:{client.peeraddr[2]}"client.puts"Hello,client!"client.closeend客户端代码:rurequire'socket'socket=TCPSocket.new('localhost',)putssocket.getssocket.close8.2HTTP请求与响应8.2.1HTTP协议概述HTTP(超文本传输协议)是互联网上应用最为广泛的网络协议之一,用于在Web浏览器和服务器之间传输数据。HTTP协议基于请求响应模式,包括请求方法和响应状态码等。8.2.2使用HTTP类发送请求在Ru中,可以使用Net::HTTP类发送HTTP请求。以下是一个简单的GET请求示例:rurequire'net/'uri=URI('://example.')response=Net::HTTP.get(uri)putsresponse8.2.3使用HTTP类处理响应Net::HTTP类提供了多种方法来处理HTTP响应。以下是一个处理响应的示例:rurequire'net/'uri=URI('://example.')request=Net::HTTP::Get.new(uri.request_uri)response=.request(request)puts"Response:{response.}"puts"Responsebody:{response.body}"8.3网络编程综合应用8.3.1网络爬虫网络爬虫是一种自动化程序,用于从互联网上收集信息。以下是一个简单的网络爬虫示例,使用Socket类和HTTP类实现:rurequire'socket'require'net/'require'uri'deffetch_()uri=URI()request=Net::HTTP::Get.new(uri.request_uri)response=.request(request)response.bodyenddefcrawl()puts"Fetching:{}"page_content=fetch_()puts"Fetched:{}"page_contentendcrawl('://example.')8.3.2网络聊天室以下是一个基于TCP套接字的简单网络聊天室示例:服务器端代码:rurequire'socket'server=TCPServer.new()loopdoclient=server.acceptputs"Clientconnected:{client.peeraddr[2]}"Thread.new(client)docloopdomessage=c.getsbreakifmessage.nil?puts"Received:{message}"endc.closeendend客户端代码:rurequire'socket'socket=TCPSocket.new('localhost',)loopdoprint"Entermessage:"message=getssocket.putsmessageresponse=socket.getsputs"Serverresponse:{response}"endsocket.close第九章Ru多线程编程9.1线程的创建与管理9.1.1线程的创建在Ru中,线程的创建可以通过Thread类来实现。以下是一个创建线程的基本示例:ruthread=Thread.newdo线程执行的代码end在上述代码中,Thread.new方法接收一个代码块,该代码块是线程需要执行的代码。当调用Thread.new时,Ru会创建一个新的线程,并在该线程中执行传入的代码块。9.1.2线程的管理Ru提供了多种方法用于管理线程,以下是一些常用的线程管理方法:`Threadjoin`:等待指定线程结束。调用此方法会阻塞当前线程,直到指定线程执行完毕。`Threadabort_on_exception`:设置线程在遇到异常时是否终止。默认情况下,子线程在遇到异常时会终止,但主线程不会受到影响。`Threadexit`:主动终止当前线程的执行。示例代码:ruthread=Thread.newdo线程执行的代码end等待线程结束thread.join设置子线程遇到异常时不终止Thread.abort_on_exception=false9.2线程同步与通信9.2.1互斥锁(Mutex)互斥锁(Mutex)是一种同步机制,用于保证多个线程在访问共享资源时不会产生冲突。在Ru中,可以通过Mutex类来实现互斥锁。以下是一个使用互斥锁的示例:rumutex=Mutex.newmutex.lock访问共享资源的代码mutex.unlock9.2.2条件变量(Condition)条件变量(Condition)用于在线程之间进行通信。当某个线程需要等待某个条件成立时,可以使用条件变量进行等待。以下是一个使用条件变量的示例:rucondition=Condition.newmutex=Mutex.newmutex.lock等待条件成立condition.wait(mutex)条件成立后执行的代码mutex.unlock9.2.3信号量(Semaphore)信号量(Semaphore)用于控制多个线程对共享资源的访问。在Ru中,可以通过Semaphore类来实现信号量。以下是一个使用信号量的示例:rusemaphore=Semaphore.new(1)semaphore.synchronizedo访问共享资源的代码end9.3线程安全与并发9.3.1线程安全线程安全是指在多线程环境下,代码块在执行时不会被其他线程干扰。为了保证线程安全,可以采取以下措施:使用互斥锁(Mutex)保护共享资源。避免在多线程环境中使用全局变量。使用线程安全的数据结构,如Queue。9.3.2并发并发是指在多线程环境中,多个线程同时执行。为了保证并发执行的正确性,可以采取以下措施:合理分配线程资源,避免创建过多线程。使用线程池(ThreadPool)来管理线程。使用线程同步机制,如互斥锁、条件变量和信号量。第十章Ru实践项目10.1简单计算器程序10.1.1项目概述本节将指导读者利用Ru语言开发一个简单的控制台计算器程序。该程序能够接收用户输入,并根据用户选择的操作执行加、减、乘、除等基本数学运算。10.1.2设计思路程序首先展示一个菜单,引导用户选择操作类型。用户输入两个数字和操作类型后,程序将执行相应的数学运算,并输出结果。10.1.3实现代码以下是一个简单计算器程序的基本实现代码。rudefadd(x,y)xyenddefsubtract(x,y)xyenddefmultiply(x,y)xyenddefdivide(x,y)x.to_f/yendputs"简单计算器"loopdoprint"请选择操作[1]加[2]减[3]乘[4]除[5]退出:"operation=gets.to_ibreakifoperation==5print"请输入第一个数字:"num1=gets.to_fprint"请输入第二个数字:"num2=gets.to_fcaseoperationwhen1puts"结果是:{add(num1,num2)}"when2puts"结果是:{subtr
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 衬衣制作笔试题及答案
- 软考软件设计师试题及答案迅速掌握
- 软件设计师考试案例剖析试题及答案
- 广西文综试题及答案
- 经济试题及答案高一
- 军犬专业考试题及答案
- 东营市重点中学2025届七年级数学第二学期期末监测试题含解析
- 2025年计算机二级VB考试的全景视野及试题及答案
- 2025届广东省茂名市电白区数学七下期末质量检测试题含解析
- 法学中的社会学视角试题及答案
- 视频监控介绍课件
- 2025年高考数学考前最后一课
- 跨学科实践制作微型密度计人教版物理八年级下学期
- 2025届高考语文作文备考之审题立意30道选择题训练(附答案)
- 21. 三黑和土地 课件
- 挖掘机理论试题及答案
- 2025年银行从业资格考试个人理财真题卷权威解读
- 兴安盟2025年兴安盟事业单位春季专项人才引进30人笔试历年参考题库附带答案详解
- 西部计划考试试题及答案
- 2023江苏南通轨道交通集团有限公司运营分公司公开社会招聘97名工作人员笔试参考题库附带答案详解
- 婴儿保姆协议书范本
评论
0/150
提交评论