暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

Flink编程基础│Scala编程初级实践

678

Scala编程初级实践


01

实验目的


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

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

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

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


02

实验平台


操作系统:Linux(推荐Ubuntu18.04.5)。

JDK版本:1.8或以上版本。

Scala版本:2.12.12。


03

实验内容和要求


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类的定义。


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



3) 统计学生成绩


学生的成绩清单格式如下所示,第一行为表头,各字段意思分别为学号、性别、课程名1、课程名2等,后面每一行代表一个学生的信息,各字段之间用空白符隔开。


给定任何一个如上格式的清单(不同清单里课程数量可能不一样),要求尽可能采用函数式编程,统计出各门课程的平均成绩、最低成绩和最高成绩;另外,还需按男女同学分开,分别统计各门课程的平均成绩、最低成绩和最高成绩。

测试样例1如下:


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


测试样例2如下:



样例2的统计结果为:


04

实验报告



05

参考书籍


扫码优惠购书

Flink编程基础(Scala版)》

ISBN:9787302583677

作者:林子雨,陶继平

定价:69.80元



06

精彩推荐


文章转载自清华计算机学堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论