admin 管理员组

文章数量: 1086019


2024年12月31日发(作者:date是哪种约会)

第3章 程序设计语言

习 题

一、选择题

1. A 2. A 3. D 4. A 5. AB

6. C 7.D 8.C 9.D 10. D

12.B 13.A 14.A

二、简答题

1.简述程序的概念。

答:一个程序就是能够实现特定功能的一组指令序列的集合。或者程序=算法+数据

结构。

2. 简述程序设计语言的发展阶段。

经历了机器语言、汇编语言和高级语言三个发展阶段。

机器语言又称面向机器的语言,是特定的计算机硬件系统所固有的语言,是CPU唯一

能够真正不经过翻译而直接识别和执行的语言。相比而言,其他任何语言编写的程序都必

须最终转换成机器语言以后才能在CPU上执行。

由于二进制编码形式的机器指令不便于记忆和使用,人们很快引入了便于记忆、易于

阅读和理解、由英文单词或其缩写符号表示的指令,称为汇编指令,又称符号指令或助记

符。利用汇编指令编写得到的程序称为汇编语言程序。

通过引入汇编语言,在一定程度上解决了低级语言程序设计的问题,之后又出现了程

序的“可移植性”问题,即程序员编写的源程序如何从一台计算机方便地转移到另一台计

算机上执行。为了解决这个问题,人们引入了高级语言。

高级语言是一种利用意义比较直观的各种“单词”和“公式”,按照一定的“语法规则”

来编写程序的语言,又称为程序设计语言或算法语言。高级语言之所以“高级”,是因为高

级语言把很多硬件上复杂费解的概念抽象化了,从而使得程序员可以绕开复杂的计算机硬

件的问题、无需了解计算机的指令系统,就能完成程序设计的工作。

3. 简述程序设计过程的一般步骤。

程序设计的过程一般有四个步骤。

(1)分析问题

在着手解决问题之前,应该通过分析,充分理解问题,明确原始数据、解题要求、需

要输出的数据及形式等。

(2)设计算法

算法是解题的过程。首先集中精力于算法的总体规划,然后逐层降低问题的抽象性,

逐步充实细节,直到最终把抽象的问题具体化成可用程序语句表达的算法。这是一个自上

而下、逐步细化的过程。

(3)编码

利用程序设计语言表示算法的过程称为编码。

(4)调试程序

调试程序包括编译和连接等操作。编译程序将源程序转换为目标程序,它对程序员编

写的源程序进行语法检查,程序员根据编译过程中的错误提示信息,查找并改正源程序的

错误后再重新编译,直到没有语法错误为止。大多数程序设计语言还要使用连接程序把目

标程序与系统提供的库文件进行连接以得到最终的可执行文件。在连接过程中若程序使用

了错误的内部函数名,将会引起连接错误。对于经过编译和连接,并最终运行结束的程序,

程序员还要对程序执行的结果进行分析,只有得到正确结果的程序才是所需的程序。

4. 简述机器语言和汇编语言的共同特点。

汇编语言具有一个本质上与机器语言一一对应的指令系统。大多数情况下,一条汇编

指令直接对应一条机器指令,少数汇编指令对应几条机器指令,所以,汇编语言的实质和

机器语言是相同的。与机器指令一样,汇编指令直接针对计算机硬件进行操作,要求程序

员具有较为深厚的计算机专业知识;每一条指令只能实现一个非常细微的操作(例如移动、

自增),因而源程序一般比较冗长、复杂、容易出错。

5. 简述高级语言程序的运行过程。

使用高级语言编写程序的一般过程可以归纳为以下几个步骤:

(1) 使用文本编辑工具,逐条编写源程序的语句。保存源程序的文件时,文件的后缀

名与所用的高级语言有关。

(2) 编译源程序文件,生成目标文件,文件后缀名通常为obj。

(3) 链接目标文件,生成可执行文件,文件后缀名通常为exe。

(4) 在计算机上运行可执行程序,并进行调试和维护。

程序的执行环境由操作系统提供,一般分为命令行环境和图形用户界面环境。在DOS

与大多数Unix类操作系统中,提供的就是命令行用户界面,用户需要在系统命令提示符后

面输入各种操作命令以实现需要的功能;在Windows操作系统中,提供的是图形用户界面,

用户可以通过点击鼠标等操作完成希望的功能。“界面就是程序”反映了在程序设计中为用

户提供良好的操作界面的重要性。用户使用界面的好坏直接影响着程序的质量,要树立以

人为本的思想,尽量为用户提供便利。

6.简述编译程序的概念。

编译程序是把高级语言程序(源程序)作为一个整体来处理,在应用源程序执行之前,

就将程序源代码“翻译”成目标代码(机器语言),编译后与系统提供的代码库链接,形成

—个完整的可执行的机器语言程序(目标程序代码)。

7.用图示法表示编译程序的框架。

答:编译程序的框架如图所示:

表格管理

目标代码生成

中间代码优化

中间代码生成

语义分析器

语法分析器

词法分析器

源程序 目标代码

出错处理

8.词法分析的任务是什么?

答:作为编译过程的第一个阶段,其任务是从左到右一个字符,一个字符地对源程序

进行扫描,读入源程序,对构成源程序的字符流进行扫描和分解,通过词法分析从而识别

出一个个单词(也称单词符号或符号)。

9.语法分析的任务是什么?

答:语法分析是编译过程的第二个阶段,任务是在词法分析的基础上将单词序列分解

成各类语法短语,如“程序”、“语句”、“表达式”等等。

10.简述语义处理的功能。

答:编译过程中的语义处理实现两个功能:

(1) 审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义,有

时把这个工作称为静态语义分析或静态审查。

(2) 如果静态语义正确,则语义处理要执行真正的翻译,要么生成程序的一种中间表

示形式(中间代码),要么生成实际的目标代码。

11.简述中间代码的概念。

答:所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统可以设

计为多种多样的形式,重要的设计原则为两点:一是容易生成;二是容易将它翻译成目标

代码。

12.目标代码生成阶段的任务是什么?

答:目标代码生成阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重

定位的指令代码或汇编指令代码。这是编译的最后阶段,它的工作与硬件系统结构和指令

含义有关,这个阶段的工作很复杂,涉及到硬件系统功能部件的运用、机器指令的选择、

各种数据类型变量的存储空间分配以及寄存器和后援寄存器的调度等。

三、讨论题

1.作为一个计算机专业的学生,程序设计是大学学习的重要内容之一,程序设计的内

容很多,语言的更新也很快,如何才能更好地掌握程序设计?如何利用语言编程?怎样才

能克服害怕编程的思想?

答案略。

2.根据你的理解,学习程序设计语言的过程中,最重要的注意事项是什么?

答案略。

第4章 程序设计基础

习 题

一、选择题

1. A 2.D 3.C 4. A 5. B

6.D 7.A 8.B 9.C 10. B

11. D 12. A 13.B 14.D 15.C

二、简答题

1.结构化程序设计的思想是什么?

答:结构化程序设计的基本思想就是采用自顶向下、逐步求精的设计方法和单入口单

出口的控制结构。

2.结构化程序设计的原则是什么?

答:结构化程序设计的原则是:

(1) 使用顺序、选择、循环3种基本控制结构表示程序逻辑。

(2)程序语句组织成容易识别的语句模块,每个模块都是单入口、单出口。

(3)严格控制GOTO语句的使用。

3.结构化程序设计语言采用自顶向下的方法进行程序设计的特点是什么?

答:利用结构化程序设计语言采用自顶向下的方法进行程序设计的特点是:

(1) 问题分解成子问题的结构必须与3种基本程序结构之一相对应。

(2) 问题的划分决定了程序的结构。一方面,子问题的划分决定了这一层次的程序是3

种基本结构中的哪一种结构;另一方面,一个问题该如何划分成子问题是灵活的,并不是

只有一种分解方法。分解的好坏就决定了设计的质量,也决定了程序的不同结构。

(3) 问题的边界应该清晰明确。只有这样才能精确地解决这些子问题,否则就会模棱

两可,无从下手。

4.简述面向对象和结构化程序设计的区别。

答:面向对象是从本质上区别于传统的结构化方法的一种新方法、新思路。它吸收了

结构化程序设计的全部优点,同时又考虑到现实世界与计算机之间的关系,认为现实世界

是由一系列彼此相关并且能够相互通信的实体组成,这些实体就是面向对象方法中的对象,

每个对象都有自己的自然属性和行为特征,而一类相似对象的共性的抽象描述,就是面向

对象方法中的核心——类。

5. 从互联网上面搜索选择结构的使用方式。

答案略。

6.简述模块化方法的原理。

模块化方法是一种传统的软件开发方法,该方法通常是将待开发软件划分为一些功能

相对独立的模块,模块与模块之间定义相应的接口,各个模块是可以分别单独开发、调试、

运行和测试的,然后,再将多个模块组合起来,进行软件的整体测试,从而完成整个软件

的开发。

在自上而下、逐步细化的过程中,把复杂问题分解成一个个简单问题的最基本的方法

就是模块化,按照功能或层次结构把一个问题划分为几个模块,然后对每个模块做进一步

细化。一个复杂的问题可以划分为多个简单问题的组合,这样的划分包括两个方面:一方

面是把问题细化为若干模块组成的层次结构;另一方面是把每一个模块的功能进一步细化,

分解成为一个个更小的子模块,直到分解成一个个程序语句为止。模块化便于问题的分析,

同时也有利于程序设计以及软件工程中的组织与合作,按照模块作为工作划分的依据,各

个模块可以独立地进行开发、测试和修改。

7.什么是数据结构?数据的物理结构有哪些?

答:数据结构是指数据元素之间的相互关系的集合,包括了数据的逻辑结构、物理结

构以及数据的运算。

数据的物理结构主要有四种,分别是顺序结构、链表结构、索引结构及散列结构。

(1) 顺序结构:是把所有元素存放在一片连续的存储单元中,逻辑上相邻的元素存储在

物理位置相邻的存储单元中,由此得到的存储表示称为顺序存储结构。

(2) 链表结构:对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过附

设的指针域来表示,由此得到的存储表示称为链式存储结构。

(3) 索引结构:每个数据结构建立索引表,每个数据元素占用表中的一项,每个表项通

常包含关键字和地址指针。其中的关键字是能够惟一标志一个数据元素的数据项。

(4) 散列结构:通过构造相应的散列函数,由散列函数的值来确定元素存放的地址。

8.简述冒泡排序的过程。

设有数组A[n+1](n为序列中元素个数),第一趟在序列(A[0]~A[n])中从前往后进行两个

元素的比较,如后者小,则交换,比较n-1次;第一趟排序结束,最大元素被交换到A[n]

中(即沉底),下一趟排序只要在子序列(A[0]~A[n-1])中进行;如果在某一趟排序中未交换元

素,说明子序列已经有序,则不再进行下一趟排序。

三、讨论题

题目已变

1.在进行程序设计时,语言的选择尤为重要,根据你对程序设计语言的了解,谈谈你

对程序设计的认识。

答案略。

2.如何才能选择一个好的数据结构进行程序设计。

答案略。


本文标签: 程序 语言 问题 程序设计 进行