《计算机科学导论》第九章课后作业解答(个人版)
复习题
1.汇编语言与机器语言的区别:
- 机器语言是计算机能直接理解和执行的二进制代码,每个指令对应一条机器码。它是计算机的底层语言,非常接近硬件操作。
- 汇编语言是机器语言的一种助记符表示,使用助记符代替了二进制代码,便于程序员编写和理解。汇编语言需要经过汇编器翻译成机器语言才能被计算机执行。
2.汇编语言与高级语言的区别:
- 汇编语言是较低级的语言,使用助记符表示机器指令,更接近计算机硬件操作,编写起来相对繁琐。
- 高级语言是更抽象、更易读的语言,使用类似自然语言的表达方式,屏蔽了底层硬件细节,编写起来更方便,可移植性更好。
3.计算机直接相关并被计算机理解的语言是机器语言。
4.编译与解释的区别:
- 编译是将高级语言代码一次性全部翻译成对应的机器语言,生成一个可执行文件。在执行时,直接运行生成的可执行文件,无需再次翻译。
- 解释是将高级语言代码逐行逐句地翻译成机器语言,并边解释边执行。每次运行程序都需要重新解释。
5.编程语言翻译中的4个步骤:
- 词法分析:将源代码分解成词法单元(tokens)。
- 语法分析:将词法单元组合成语法结构,形成抽象语法树。
- 语义分析:检查代码的语义正确性,并进行类型检查。
- 代码生成:将高级语言代码翻译成机器语言或中间代码。
6.常见的计算机语言模式:
- 过程式模式:以过程或函数为中心,程序由一系列过程或函数构成。
- 面向对象模式:以对象为中心,程序由多个对象组成,对象具有属性和方法。
- 函数式模式:强调函数的使用,将计算视为函数求值的过程。
- 说明式模式:描述问题的解决方法而不是指定执行步骤。
7.过程式模式与面向对象模式的比较:
- 过程式模式以过程或函数为重点,关注程序的顺序执行和数据处理。
- 面向对象模式以对象为重点,关注数据和操作的封装,强调对象之间的交互和继承。
8.面向对象语言中的类和方法:
- 类是面向对象编程的基本概念,它是对象的蓝图或模板,定义了对象的属性和方法。
- 方法是类中定义的函数,用于描述对象的行为和操作。类的实例化对象可以调用类中定义的方法来执行相应的操作。
9.函数式模式的定义:
函数式模式是一种编程范式,强调函数的使用和函数求值的过程,将计算视为函数的应用。函数式语言通常支持高阶函数、匿名函数和递归等特性。
10.说明式模式的定义:
说明式模式是一种编程范式,侧重于描述问题的解决方法而不是指定执行步骤。通常使用逻辑、数学方程或约束等方式来描述问题和解决方案。常见的说明式语言包括SQL和Prolog。
练习题
- 声明 C 语言中的三个整型变量:
int num1, num2, num3;
- 声明 C 语言中的三个实数变量,用三个值初始化它们:
float num1 = 1.5;
double num2 = 3.14;
float num3 = 2.7;
- 声明 C 语言中分别为字符型、整型和实数的三个常量:
const char ch = 'A';
const int num = 100;
const float pi = 3.14159;
-
解释为什么常量必须在声明时进行初始化:
常量是在程序运行期间其值不能被修改的标识符。因为常量的值不能被改变,所以在声明时必须对其进行初始化,即给定初始值。这样一来,在整个程序的执行过程中,常量的值是固定的,不会改变,保证了程序的正确性和可预测性。 -
找出下列 C 语言代码段中 statement 被执行的次数:
int A = 5;
while (A < 8) {
statement;
A = A + 2;
}
statement
将会被执行两次,当 A 分别为 5 和 7 时满足 while 循环条件。
- 找出下列 C 语言代码段中 statement 被执行的次数:
int A = 5;
while (A < 8) {
statement;
A = A - 2;
}
由于 A 的初始值为 5,而每次循环后 A 减去 2,所以条件 A < 8 将一直成立,导致无限循环,statement
将会一直被执行。
- 找出下列 C 语言代码段中 statement 被执行的次数:
for (int i = 5; i < 20; i++) {
statement;
i = i + 1;
}
statement
将会被执行 15 次,当 i 从 5 递增到 19 时满足 for 循环条件。
- 找出下列 C 语言代码段中 statement 被执行的次数:
int A = 5;
do {
statement;
A = A + 1;
} while (A < 10);
statement
将会被执行 5 次,当 A 从 5 递增到 9 时满足 do-while 循环条件。
- 用 do-while 循环写出练习6中的代码:
int A = 5;
do {
statement;
A = A - 2;
} while (A < 8);
- 用 do-while 循环写出练习7中的代码:
int i = 5;
do {
statement;
i = i + 1;
} while (i < 20);
- 用 while 循环写出练习7中的代码:
int i = 5;
while (i < 20) {
statement;
i = i + 1;
}
- 用 for 循环写出练习8中的代码:
for (int A = 5; A < 10; A++) {
statement;
}
- 用 for 循环写出练习6中的代码:
for (int A = 5; A < 8; A = A - 2) {
statement;
}
- 用 while 循环写出一个从不执行它的循环体的代码段:
int condition = 0;
while (condition) {
// 这里的代码永远不会被执行
statement;
}
- 用 do 循环写出一个从不执行它的循环体的代码段:
int condition = 0;
do {
// 这里的代码永远不会被执行
statement;
} while (condition
);