《计算机科学导论》第九章课后作业解答(个人版)

复习题
1.汇编语言与机器语言的区别:

  • 机器语言是计算机能直接理解和执行的二进制代码,每个指令对应一条机器码。它是计算机的底层语言,非常接近硬件操作。
  • 汇编语言是机器语言的一种助记符表示,使用助记符代替了二进制代码,便于程序员编写和理解。汇编语言需要经过汇编器翻译成机器语言才能被计算机执行。

2.汇编语言与高级语言的区别:

  • 汇编语言是较低级的语言,使用助记符表示机器指令,更接近计算机硬件操作,编写起来相对繁琐。
  • 高级语言是更抽象、更易读的语言,使用类似自然语言的表达方式,屏蔽了底层硬件细节,编写起来更方便,可移植性更好。

3.计算机直接相关并被计算机理解的语言是机器语言。

4.编译与解释的区别:

  • 编译是将高级语言代码一次性全部翻译成对应的机器语言,生成一个可执行文件。在执行时,直接运行生成的可执行文件,无需再次翻译。
  • 解释是将高级语言代码逐行逐句地翻译成机器语言,并边解释边执行。每次运行程序都需要重新解释。

5.编程语言翻译中的4个步骤:

  • 词法分析:将源代码分解成词法单元(tokens)。
  • 语法分析:将词法单元组合成语法结构,形成抽象语法树。
  • 语义分析:检查代码的语义正确性,并进行类型检查。
  • 代码生成:将高级语言代码翻译成机器语言或中间代码。

6.常见的计算机语言模式:

  • 过程式模式:以过程或函数为中心,程序由一系列过程或函数构成。
  • 面向对象模式:以对象为中心,程序由多个对象组成,对象具有属性和方法。
  • 函数式模式:强调函数的使用,将计算视为函数求值的过程。
  • 说明式模式:描述问题的解决方法而不是指定执行步骤。

7.过程式模式与面向对象模式的比较:

  • 过程式模式以过程或函数为重点,关注程序的顺序执行和数据处理。
  • 面向对象模式以对象为重点,关注数据和操作的封装,强调对象之间的交互和继承。

8.面向对象语言中的类和方法:

  • 类是面向对象编程的基本概念,它是对象的蓝图或模板,定义了对象的属性和方法。
  • 方法是类中定义的函数,用于描述对象的行为和操作。类的实例化对象可以调用类中定义的方法来执行相应的操作。

9.函数式模式的定义:
函数式模式是一种编程范式,强调函数的使用和函数求值的过程,将计算视为函数的应用。函数式语言通常支持高阶函数、匿名函数和递归等特性。

10.说明式模式的定义:
说明式模式是一种编程范式,侧重于描述问题的解决方法而不是指定执行步骤。通常使用逻辑、数学方程或约束等方式来描述问题和解决方案。常见的说明式语言包括SQL和Prolog。
练习题

  1. 声明 C 语言中的三个整型变量:
int num1, num2, num3;
  1. 声明 C 语言中的三个实数变量,用三个值初始化它们:
float num1 = 1.5;
double num2 = 3.14;
float num3 = 2.7;
  1. 声明 C 语言中分别为字符型、整型和实数的三个常量:
const char ch = 'A';
const int num = 100;
const float pi = 3.14159;
  1. 解释为什么常量必须在声明时进行初始化:
    常量是在程序运行期间其值不能被修改的标识符。因为常量的值不能被改变,所以在声明时必须对其进行初始化,即给定初始值。这样一来,在整个程序的执行过程中,常量的值是固定的,不会改变,保证了程序的正确性和可预测性。

  2. 找出下列 C 语言代码段中 statement 被执行的次数:

int A = 5;
while (A < 8) {
    statement;
    A = A + 2;
}

statement 将会被执行两次,当 A 分别为 5 和 7 时满足 while 循环条件。

  1. 找出下列 C 语言代码段中 statement 被执行的次数:
int A = 5;
while (A < 8) {
    statement;
    A = A - 2;
}

由于 A 的初始值为 5,而每次循环后 A 减去 2,所以条件 A < 8 将一直成立,导致无限循环,statement 将会一直被执行。

  1. 找出下列 C 语言代码段中 statement 被执行的次数:
for (int i = 5; i < 20; i++) {
    statement;
    i = i + 1;
}

statement 将会被执行 15 次,当 i 从 5 递增到 19 时满足 for 循环条件。

  1. 找出下列 C 语言代码段中 statement 被执行的次数:
int A = 5;
do {
    statement;
    A = A + 1;
} while (A < 10);

statement 将会被执行 5 次,当 A 从 5 递增到 9 时满足 do-while 循环条件。

  1. 用 do-while 循环写出练习6中的代码:
int A = 5;
do {
    statement;
    A = A - 2;
} while (A < 8);
  1. 用 do-while 循环写出练习7中的代码:
int i = 5;
do {
    statement;
    i = i + 1;
} while (i < 20);
  1. 用 while 循环写出练习7中的代码:
int i = 5;
while (i < 20) {
    statement;
    i = i + 1;
}
  1. 用 for 循环写出练习8中的代码:
for (int A = 5; A < 10; A++) {
    statement;
}
  1. 用 for 循环写出练习6中的代码:
for (int A = 5; A < 8; A = A - 2) {
    statement;
}
  1. 用 while 循环写出一个从不执行它的循环体的代码段:
int condition = 0;
while (condition) {
    // 这里的代码永远不会被执行
    statement;
}
  1. 用 do 循环写出一个从不执行它的循环体的代码段:
int condition = 0;
do {
    // 这里的代码永远不会被执行
    statement;
} while (condition

);
posted @ 2023-07-26 19:37  mu_yu21  阅读(383)  评论(0)    收藏  举报