假期学习【二】配置Scala环境(Ubuntu)以及配套Scala编程实验

1.配置Scala环境所需要的所有命令(Ubuntu系统下)

其中scala-2.13.1版本在官网:https://www.scala-lang.org/download/  下载

 2.出现该提示则配置成功。

然后进行简单的测试:

Scala环境配置完成。

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。

2. 模拟图形绘制

对于一个图形绘制程序,用下面的层次对各种实体进行抽象。定义一个 Drawable 的特

质,其包括一个 draw 方法,默认实现为输出对象的字符串表示。定义一个 Point 类表示点,

其混入了 Drawable 特质,并包含一个 shift 方法,用于移动点。所有图形实体的抽象类为

Shape,其构造函数包括一个 Point 类型,表示图形的具体位置(具体意义对不同的具体图

形不一样)。Shape 类有一个具体方法 moveTo 和一个抽象方法 zoom,其中 moveTo 将图形从

当前位置移动到新的位置, 各种具体图形的 moveTo 可能会有不一样的地方。zoom 方法实

现对图形的放缩,接受一个浮点型的放缩倍数参数,不同具体图形放缩实现不一样。继承

Shape 类的具体图形类型包括直线类 Line 和圆类 Circle。Line 类的第一个参数表示其位置,

第二个参数表示另一个端点,Line 放缩的时候,其中点位置不变,长度按倍数放缩(注意,

缩放时,其两个端点信息也改变了),另外,Line 的 move 行为影响了另一个端点,需要对

move 方法进行重载。Circle 类第一个参数表示其圆心,也是其位置,另一个参数表示其半

径,Circle 缩放的时候,位置参数不变,半径按倍数缩放。另外直线类 Line 和圆类 Circle

都混入了 Drawable 特质,要求对 draw 进行重载实现,其中类 Line 的 draw 输出的信息样式

为“Line:第一个端点的坐标--第二个端点的坐标)”,类 Circle 的 draw 输出的信息样式为

“Circle center:圆心坐标,R=半径”。如下的代码已经给出了 Drawable 和 Point 的定义,

同时也给出了程序入口 main 函数的实现,请完成 Shape 类、Line 类和 Circle 类的定义。

case class Point(var x:Double,var y:Double) extends Drawable{

def shift(deltaX:Double,deltaY:Double){x+=deltaX;y+=deltaY}

}

trait Drawable{

def draw(){println(this.toString)}

}

// 请完成 Shape 类、Line 类和 Circle 类的定义。

object MyDraw{

def main(args: Array[String]) {

val p=new Point(10,30)

p.draw;

val line1 = new Line(Point(0,0),Point(20,20))

line1.draw

line1.moveTo(Point(5,5)) //移动到一个新的点

line1.draw

line1.zoom(2) //放大两倍

line1.draw

val cir= new Circle(Point(10,10),5)

cir.draw

cir.moveTo(Point(30,20))

cir.draw

cir.zoom(0.5)

cir.draw

}

}

编译运行程序,期望的输出结果如下:

Point(10.0,30.0)

Line:(0.0,0.0)--(20.0,20.0)

Line:(5.0,5.0)--(25.0,25.0)

Line:(-5.0,-5.0)--(35.0,35.0)

Circle center:(10.0,10.0),R=5.0

Circle center:(30.0,20.0),R=5.0

Circle center:(30.0,20.0),R=2.5

3. 统计学生成绩

学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号、性别、课程名

1、课程名 2 等,后面每一行代表一个学生的信息,各字段之间用空白符隔开

Id

gender Math English Physics

301610 male 80 64 78

301611 female 65 87 58

...

给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函

数式编程,统计出各门课程的平均成绩,最低成绩,和最高成绩;另外还需按男女同学分开,

分别统计各门课程的平均成绩,最低成绩,和最高成绩。

测试样例 1 如下:

Id

gender Math English Physics

301610 male 80 64 78

301611 female 65 87 58

301612 female 44 71 77

301613 female 66 71 91

301614 female 70 71 100

301615 male 72 77 72

301616 female 73 81 75

301617 female 69 77 75

301618 male 73 61 65

301619 male 74 69 68

301620 male 76 62 76

301621 male 73 69 91

301622 male 55 69 61

301623 male 50 58 75

301624 female 63 83 93

301625 male 72 54 100

301626 male 76 66 73

301627 male 82 87 79

301628 female 62 80 54

301629 male 89 77 72

样例 1 的统计结果输出为:

course average min max

Math: 69.20 44.00 89.00

English: 71.70 54.00 87.00

Physics: 76.65 54.00 100.00

course average min max (males)

Math: 72.67 50.00 89.00

English: 67.75 54.00 87.00

Physics: 75.83 61.00 100.00

course average min max (females)

Math: 64.00 44.00 73.00

English: 77.63 71.00 87.00

Physics: 77.88 54.00 100.00

测试样例 2

Id

gender Math English Physics Science

301610 male 72

39

74

93

301611 male 75

85

93

26

301612 female 85

79

91

57

301613 female 63

89

61

62

301614 male 72

63

58

64

301615 male 99

82

70

31

301616 female 100

81

63

72

301617 male 74

100

81

59

301618 female 68

72

63

100

301619 male 63

39

59

87

301620 female 84

88

48

48

301621 male 71

88

92

46

301622 male 82

49

66

78

301623 male 63

80

83

88

301624 female 86

80

56

69

301625 male 76

69

86

49

301626 male 91

59

93

51

301627 female 92

76

79

100

301628 male 79

89

78

57

301629 male 85

74

78

80

样例 2 的统计结果为:

course average min max

Math: 79.00 63.00 100.00

English: 74.05 39.00 100.00

Physics: 73.60 48.00 93.00

Science: 65.85 26.00 100.00

course average min max

Math: 77.08 63.00 99.00

English: 70.46 39.00 100.00

Physics: 77.77 58.00 93.00

Science: 62.23 26.00 93.00

course average min max

Math: 82.57 63.00 100.00

English: 80.71 72.00 89.00

Physics: 65.86 48.00 91.00

Science: 72.57 48.00 100.00

实验代码:(略)

实验结果:

第二个实验运行结果:代码略;

第三个实验运行结果:代码略;

原文地址:https://www.cnblogs.com/zlc364624/p/12246023.html

时间: 2024-10-26 18:40:15

假期学习【二】配置Scala环境(Ubuntu)以及配套Scala编程实验的相关文章

Java系列学习(二)-配置开发环境

1.设置系统环境变量 1.1.设置JDK的Path路径 作用:通过path环境变量,将JDK安装目录下的bin目录配置到path变量下,可使javac指令和java指令在任意目录下运行   方法一:直接在Path上设置 路径值 方法二(推荐):通过引用变量名的方式 来设置 通过%xxx% 的方式,将JAVA_HOME 引用到Path中 1.2.配置classpath环境变量 作用:classpath目录中的.class文件,可以在任意目录下运行 注:[java程序,在编译后就是一个*.class

Vector Packet Processing (二)配置开发环境

本篇主要是介绍如何配置VPP的编译开发环境,具体配置请参考VPP开发文档:https://wiki.fd.io/view/VPP/Setting_Up_Your_Dev_Environment 搭建开发环境 首先我们需要在主机上安装Vagrant软件和虚拟机,并在虚拟化里面设置编译开发环境,当然也可以不在虚拟机里面直接在主机host上来配置VPP的编译开发环境也是一样的,我这里面主要是刚开始使用对VPP还不熟悉的时候还是老老实实的按照官方文档上面的步骤来吧. 默认的配置是支持VMWare和Vir

学习OpenCV——配置CUDA环境

大家都把GPU&CUDA说的很NB狠NB,于是,下一步想通过GPU加速程序运行.这一个星期,都在配置OpenCV的CUDA环境,今天终于以失败告终,原因是实验室的机器显卡不支持CUDA...伤不起啊,一星期啊!!! 支持CUDA的GPU:http://developer.nvidia.com/cuda-gpus 虽然,最终失败了,但是总归还是有收获的,现把它总结起来,提醒自己,也给大家一个借鉴: 1.借鉴:http://blog.csdn.net/shuxiao9058/article/deta

iBatisnet系列(二) 配置运行环境和日志处理

http://hjf1223.cnblogs.com/archive/2006/04/24/383119.aspx 刚爬完鼓山回来,想到这篇刚刚开始,不敢怠慢,洗完澡休息一下就到电脑旁边来了.现在我开始介绍一下iBatis的配置和日志处理吧. iBatis基本的运行环境配置主要由两个文件组成,分别是SqlMap.config和Provider.config.它们是必需的两个配置文件,基中SqlMap.config的功能类似于web.config或者app.config,是iBatis核心的配置文

(二)配置Apollo环境

一.环境要求 虚拟机内存要在2g以上 jdk1.8以上 建议数据库在5.7以上,如果版本过低,数据库在执行Apollo结构时,默认不能支持在一个表中有两个时间戳类型字段,所以建议大家使用mysql在5.7以上 二.下载Apollo 下载地址 https://github.com/ctripcorp/apollo 下载下来后,有两个压缩包: apollo-master 源码和依赖jar包(建议打到本地maven仓库) apollo-build-scripts-master 整个Apollo环境的压

spring MVC学习(二)---配置相关的东西

1.在上一节中我们提到过每一个DispatcherServlet都会有一个上下文 (WebApplictionContext),并且继承了这些上下文中的bean,其中以一些"特殊"的我们会用到,但是一般我们可以不用去理会这些,也不用自己去维护,因为springMVC有一个默认的列表,它帮我们进行维护. 下面看下官方文档中列出的: 2.在1中我们提到默认维护的列表,这些都定义在DispatcherServlet.properties和DispatcherServlet在同一个包中,他们都

andriod学习二 设置开发环境

1.官方环境搭建步骤 http://developer.android.com/sdk/installing/index.html 包括:下载JDK6,Eclipse 3.6,android SDK,安装ADT等. 2.基本组件介绍 View:最基本UI构建单元 Activity:能帮用户达到某一目的一屏幕UI Fragment:轻量级的Activity,可以在一屏幕中存在多个.出现的原因是,适应多种屏幕下的UI灵活变化. Intent:常见应用,广播消息,启动service,启动Activit

Solr5.5.5 学习 二 配置数据库

##mysql 导入数据 先在/Users/jim/Downloads/solr-5.5.5/server/solr 这边创建指定的core ,我在这里命名为:jimtest 并copy /Users/jim/Downloads/solr-5.5.5/example/example-DIH/solr/db 所有的数据到 jimtest 中 并且删除core.properties 然后到首页配置,如果没用copy db里边的数据到对应的core中,那么就会提示说solrConfig.xml是找不到

Egret学习(二)--windows下环境搭建

准备材料 安装Node.js TypeScript编辑器 HTTP服务器(可选) Chorme(可选) Egret 安装Node.js 打开www.nodejs.org 下载安装(全部next,全默认) node -v验证安装以及版本 测试npm命令(如果不行就进去提示的目录创建npm文件夹,  appdata是隐藏文件夹) 安装编辑器 推荐使用WebStorm 打开www.jetbrains.com/webstorm/ Download WebStorm 安装 安装HTTP服务器 推荐使用XA