CS61B学习笔记(三)--Junit测试
测试理念正确性工具#1:自动分级器自动评分器可能是您接触到的第一个正确性工具。事实上,CS61B的自动分级器是基于 JUnit 加上一些额外的自定义库。
对自动分级者有一些很大的好处。也许最重要的是,它可以为您验证正确性,使您免于编写所有测试的繁琐且无指导性的任务。它还通过提供多汁的分数作为实现正确性的激励,使评估过程游戏化。如果学生花费过多的时间追逐实际上不会影响他们的成绩或学习的最终分数,这也可能适得其反。
然而,自动分级器在现实世界中并不存在,依赖自动分级器会养成坏习惯。偶尔上传代码并等待自动评分器运行会阻碍一个人的工作流程。Autograder Driven Development 是一个极端版本,学生编写所有代码,修复编译器错误,然后提交给自动评分器。在得到错误后,学生可以尝试进行一些更改,在打印语句中撒上一些,然后再次提交。并重复。最终,如果您依赖自动评分器,则无法控制工作流或代码。
正确性工具 #2:JUnit 测试正如我们所看到的,JUnit 测试为您打开了一个新世界。您无需依赖其他人编写的自动评分器,而是为程序的每个部分编写测试。我们将这些部分中的每一个都称为一个单元 ...
CS61B项目练习笔记(一)--Proj0
本人项目链接CS61B-Tutorial/proj0/game2048 at main · xxbaizero0/CS61B-Tutorial (github.com)
我的任务仅驻留在 Model.java 并且仅限于四个方法:
public static boolean emptySpaceExists(Board b)
public static boolean maxTileExists(Board b)
public static boolean atLeastOneMoveExists(Board b)
public boolean tilt(Side side)
前置工作配置项目cdk,导入库我们想要使用 javalib 文件夹中的这些 .jar 文件。仍然在“项目结构”中,单击左侧名为“库”的项目设置部分。如果您看到已添加, javalib 则无事可做。否则,我们将单击“+”按钮,然后单击“Java”,这将启动我们操作系统的文件浏览器,然后单击该 javalib 文件夹。然后,在屏幕的右下角,点击“应用”,然后点击蓝色的“确定” ...
CS61B学习笔记(二)--Reading.1.Introducing
1.1 要点 ·拥抱61B — 1.1 Essentials · Hug61B (gitbooks.io)
要点Hello world12345public class HelloWorld { public static void main(String[] args) { System.out.println("Hello world!"); }}
System.out.println("Hello world!");相当于与c++中的cout<<"Hello world!"<<endl;
System.out.print("Hello world!");相当于与c++中的cout<<"Hello world!";
对于那些来自像 Python 这样的语言的人来说,这似乎毫无必要地冗长。然而,这一切都是有充分理由的,我们将在接下来的几周内理解这一点。需要注意的一些关键语法特征: ...
CS61B学习笔记(一)--JAVA快速入门
Java Visualizer (uwaterloo.ca)类python tutor,可视化代码网站。
基本程序1234567891011public class ClassNameHere { public static void main(String[] args) { int x = 5; x = x + 1; System.out.println(x); int y = x; x = x + 1; System.out.println("x is: " + x); System.out.println("y is: " + y); }}
JAVA是以类为单位的静态语言,不可或缺文件名命名的类以及main函数,语法类似cpp,结尾需要分号;。
在Java中,如果一个类是public并且包含了main方法,则文件名必须与public类的名称相匹配。这是因为Java要求public类的名称与包含它的文件的名称 ...
CPP—基础语法
前言数组之前的知识是基础中的基础就不再整理了,只挑几个稍微要看一下的。
switch语句基本语法例子示范
12345678910111213141516171819202122232425#include<iostream>using namespace std;int main() { int day = 3; switch (day) { case 1: std::cout << "Monday" << std::endl; break; case 2: std::cout << "Tuesday" << std::endl; break; case 3: std::cout << "Wednesday" << std::endl; br ...
深入了解计算机原理--第一章
二、信息的表示和表达2.1 信息存储2.1.1 十六进制表示法![](http://mwebpng.oss-cn-beijing.aliyuncs.com/2023/12/15/16998390485614.png?x-oss-process=style/stylename)
转化为二进制需要从右到左每4分为一组转换(不足补0)
十进制和十六进制互选转换十进制除16倒取余![](http://mwebpng.oss-cn-beijing.aliyuncs.com/2023/12/15/16998394198795.png?x-oss-process=style/stylename)
2.1.2 字数据大小![](http://mwebpng.oss-cn-beijing.aliyuncs.com/2023/12/15/16998395609489.png?x-oss-process=style/stylename)
unsigned long、unsigned long int都是同个意思
2.1.3 寻址和字节顺序对于跨越多字节的程序对象,两个规则
这个对象的地址是什 ...
tree递归
@TOC# Tree ADT
12345678910111213141516171819202122def tree(label, branches=[]): for branch in branches: assert is_tree(branch),'branches must be a tree' return [label] + list(branches)def label(tree): return tree[0]def branches(tree): return tree[1:]def is_tree(tree): if type(tree) != list or len(tree) <1: return False for branch in branches(tree): if not is_tree(branch): return False return Truedef is_leaf(tree): return not ...