Introduction
What is Computer Science about?
Practicing Problem Solving
练习解决问题
Getting a better understanding of the programs that we write.
更好地理解我们编写的程序。
Geting a better understanding of mathematics using programming.
使用程序更好地理解数学。
Realizing that computing and mathematics are closely connected.
认识到数学和计算机是密切联系的。
About Computer Programs 关于计算机程序
- Purpose:
Computer programs are writen to solve real-world problems
计算机程序是用来解决现实世界的问题的 - Typically describe
- They model real-world objects that change over time
- The way they change is reflected in their ‘state’ (Real-world objects have a state)
- Variables are used to model these real-world objects
程序模拟真实世界中的随着时间变化的对象,他们通过“状态”反应改变情况,使用变量用用于对现实世界中对象的建模。
Program state 程序状态
Key word:Changes over time
在现实世界中可以理解为随着时间的变化,在程序中可以理解为随着程序的运行。
Domain Variable 域变量
Definition: An element in the program that represents a relevant aspect or an object of the real-world that changes over time.
Domain Variable 表示的是一个对象,而非一个具体的值(区别于下面的 Variable Domain),更通俗的讲就是数量(状态)可以发生变化的一些对象,例如人的数量,桌子的大小,花的颜色。
Computation Variable 计算变量
Definsition: An element in the program that represents a relevant aspect in the program that changes over time
Computation Variable 是程序运行时计算产生的,而非人为产生的,例如 a==b 作为表达式产生了一个计算变量,当a=1 b=1 时计算变量为 True 而 a=1 b=2 时计算变量的值为 False , 其他在程序中常用的如 sum flag 等等也属于计算变量。
Constants 常量
Definsition: An element in the program that represents a relevant aspect or an object that does not change over time.
程序中不随程序运行变化的值就是常量。
Variable Domain 变量域
Definsition: Represent the set of values that the variable may assume.
Variable Domain 表示的是一个集合,集合中的值是这个变量可以取到的具体的值。注意,这里是一个集合,仍然不是具体的值。
这里要区别 Domain Variable ,后者是变量的名字,前者是变量可以取到的值的集合。
Variable State 变量状态
Definsition: Is a configuration of the variable: an assignment of the variable a value from its domain.
Variable State 是变量的具体值。
Program state 程序状态
Definsition: is a configuration of the program: an assignment of every variable a value from its domain
Program State 是指的所有的变量的具体值。
小总结:
这里要区分有关变量的几个定义。
我们以一个函数为例:f(x,y)=x/y+5;
- x,y 就是 Domain Variable;
- {x∈R},{y∈R ∩ y≠0}就是 Variable Domain ;
- x=1 或者 y=2 是 Variable State ;
- {x=2,y=2} 是 Program State ;
- 当{x=2,y=2}时,其计算结果 “6” 以及“x/y”的结果 “1” 均是 Computation Variable;
- “5” 作为不变化的值,就是 Contants 。
Initial State 初始状态
Definsition: Is the initial state of the program
程序运行前的 Program State 。
这一点在Java中有所体现,如果一个变量没有初始化(即设置初始状态),编译器会发出如下Waring:
The local variable xxx may not have been initialized
Identify Domain Events
Domain Events 域事件
Definsition: The different events that can occur in the domain.
在同一个域中的不同事件就叫做域事件。
Computation Events 计算事件
Definsition: when variables should be updated.
定义变量何时被改变的事件
Program Behavior 程序的行为
Definsition: How the state of the program evolves(How and when the state variables are updated)
程序的行为就是程序的状态如何变化。
例如:
int n=10;
int sum=0;
for(int i=0;i<n;i++>)
{
sum+=i;
}
其中for循环的过程就是程序的行为。
Pseudo Code 伪代码
Definsition:A high-level description of the operating principle of a program that utilizes real programming languages constructs (e.g. if …then…else, while …) with natural language to allow solutions to be expressed without needing to understand the precise details of a programming language.
Two keys:
- Use the real program language constructs.
- Describe with the natural language.
Pseudo Code 是一种非正式的描述。
我们描述伪代码时需要指出两大特点,即:
使用了真正编程语言的结构并且使用自然语言描述。
Program Evaluation
From Functional Criteria and Nonfunctional Criteria
评价程序可以从两方面入手,一方面是功能性、一方面是非功能性。
功能性方面是程序能否完成目标,非功能性方面则是如 质量 安全 是否通俗易懂等等。