实验二 Scala编程初级实践(内有附图)

1 实验目的

(1)掌握Scala语言的基本语法、数据结构和控制结构。

(2)掌握面向对象编程的基础知识,能够编写自定义类和特质。

(3)掌握函数式编程的基础知识,能够熟练定义匿名函数。熟悉Scala的容器类库的基本层次结构,熟练使用常用的容器类进行数据操作。

(4)熟练掌握Scala的 REPL运行模式和编译运行方法

2 实验平台

操作系统:Linux(推荐Ubuntu 16.04)。

JDK版本:1.7或以上版本。

Scala版本:2.12.17。

3 实验要求

1. 计算级数

请用脚本的方式编程计算并输出下列级数的前 n 项之和 Sn,直到 Sn 刚好大于或等于 q 为止,其中 q 为大于 0 的整数,其值通过键盘输入。

例 如 , 若 q 的 值 为 50.0 , 则 输 出 应 为 : Sn=50.416695 。 请 将 源 文 件 保 存 为 exercise2-1.scala,在REPL模式下测试运行,测试样例:q=1时,Sn=2;q=30时,Sn=30.891459; q=50 时,Sn=50.416695。

4 实验内容和步骤(操作结果要附图)

(方法不是唯一,以下内容的前提是安装scala,可以用此方法快速安装

sudo apt install scala)

cd /usr/local/scala    #转到scala目录下(以将scala装到了/usr/local 目录下为例)
 sudo mkdir mycode     #新建mycode目录
 cd mycode             #转到新建目录下
 sudo chmod -R 777 /usr/local/scala/mycode    #777权限是用户对相对应的文件进行写入读取和其他操作的权限,7就是表示所有的权限
vim exercise2-1.scala        #编辑exercise2-1文件

>>>以下就是文件内容

import scala.io.StdIn
object Exercise2_1 {
  def main(args: Array[String]): Unit = {
    var sum = 0.0
    println("请输入n")
    var n: Long = StdIn.readLine().toLong
    var i = 1.0
    // 计算级数直到总和超过输入的数字n
    while (sum < n) {
      sum = sum + i / (i + 1)  // 更新总和,注意计算公式的修正
      i = i + 1
    }
    println("**************************")
    println(s"计算级数为:$sum")
  }
}
scalac exercise2-1.scala.scala                    #编译

运行,即可得出结果

scala -classpath . exercise2_1.scala               # 其中  "." 后面的texercise2_1是代码中 object 后面的类名

运行,即可得出结果

5 实验总结

1.熟悉基本语法:通过实验,我熟悉了Scala的基本语法,包括变量声明、函数定义、控制流等。这些基础知识是编写Scala程序的基础。

2.输入输出处理:实验中使用了scala.io.StdIn来处理输入,以及使用println来输出结果。这些是日常Scala编程中常用的输入输出处理方式。

3.循环和条件语句:实验中使用了while循环来处理迭代逻辑,同时也使用了条件语句来控制程序流程。这些是编写逻辑控制的重要工具

总的来说,完成Scala编程初级实践实验是我学习和掌握Scala编程语言的重要一步,我会继续深入学习和实践,提升自己在Scala编程领域的能力。

### 计算级数 n Scala 程序 以下是实现计算给定级数 n 直到大于或等于用户输入 q 值的完整 Scala 程序代码: ```scala object SeriesSumCalculator { def main(args: Array[String]): Unit = { println("请输入级数数上限 n:") val n = scala.io.StdIn.readInt() println("请输入目标值 q (当累加达到此值时停止):") val q = scala.io.StdIn.readDouble() // 定义函数用于计算每一的值(可以根据需求修改) def term(i: Int): Double = 1.0 / i.toDouble var sum = 0.0 // 初始化累加 var count = 0 // 当计算数 while (count < n && sum < q) { // 循环条件:不超过最大数且未达到目标值 count += 1 sum += term(count) } println(s"当累计到第 $count , 总为 $sum.") } } ``` #### Begin 至 End 的具体实现说明 上述代码实现了以下功能: - 用户通过标准输入提供两个参数 `n` `q`,分别表示允许的最大目标阈值[^2]。 - 使用循环结构逐步增加更新总,直至满足退出条件之一:要么达到了指定的数限制 `n`,要么累积已经超过了目标值 `q`[^3]。 #### 关键点解析 1. **定义每的表达式** 函数 `term(i)` 被用来返回对应于序列中的某一的具体数值。这里假设的是调级数 \( \frac{1}{i} \),但实际应用中可根据不同类型的级数调整其定义方式[^4]。 2. **控制流程逻辑** 利用了 `while` 循环来动态决定何时终止运算过程。每次迭代都会重新评估是否仍需继续执行下一轮操作[^5]。 3. **输出最终结果** 结束后打印出总共进行了多少次累加动作以及所得的结果值,便于验证算法正确性观察运行效果[^6]。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zbxmc

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值