人们进行交流,看看他们有什么想法? 一、选择题
1. A 2. D 3.A 4.C 5. D 6. B 7. B 8.D 9.ABCD 10. D 11. C 12. A 13.B 14.D 15. A 二、简答题
1.简述程序的概念。
答:一个程序就是能够实现特定功能的一组指令序列的集合。或者表示为:程序=算法+数据结构。
2.结构化程序设计的思想是什么?
答:结构化程序设计的基本思想就是采用自上而下、逐步求精的设计方法和单入口单出口的控制结构。
3.结构化程序设计的原则是什么?
答:结构化程序设计的原则是:
(1) 使用顺序、选择、循环3种基本控制结构表示程序逻辑。
(2)程序语句组织成容易识别的语句模块,每个模块都是单入口、单出口。 (3)严格控制GOTO语句的使用。
4.结构化程序设计语言采用自顶向下的方法进行程序设计的特点是什么?
答:利用结构化程序设计语言采用自上而下的方法进行程序设计的特点是: (1) 问题分解成子问题的结构必须与3种基本程序结构之一相对应。 (2) 问题的划分决定了程序的结构。一方面,子问题的划分决定了这一层次的程序是3种基本结构中的哪一种结构;另一方面,一个问题该如何划分成子问题是灵活的,并不是只有一种分解方法。分解的好坏就决定了设计的质量,也决定了程序的不同结构。
(3) 问题的边界应该清晰明确。只有这样才能精确地解决这些子问题,否则就会模棱两可,无从下手。
5.简述面向对象和结构化程序设计的区别。
答:面向对象是从本质上区别于传统的结构化方法的一种新方法、新思路。它吸收了结构化程序设计的全部优点,同时又考虑到现实世界与计算机之间的关系,认为现实世界是由一系列彼此相关并且能够相互通信的实体组成,这些实体就是面向对象方法中的对象,每个对象都有自己的自然属性和行为特征,而一类相似对象的共性的抽象描述,就是面向对象方法中的核心——类。
6.什么是数据结构?数据的物理结构有哪些?
答:数据结构是指数据元素之间的相互关系的集合,包括了数据的逻辑结构、物理结构以及数据的运算。
数据的物理结构主要有四种,分别是顺序结构、链表结构、索引结构及散列结构。 (1) 顺序结构:是把所有元素存放在一片连续的存储单元中,逻辑上相邻的元素存储在物理位置相邻的存储单元中,由此得到的存储表示称为顺序存储结构。
(2) 链表结构:对逻辑上相邻的元素不要求其物理位置相邻,元素间的逻辑关系通过附
设的指针域来表示,由此得到的存储表示称为链式存储结构。
(3) 索引结构:每个数据结构建立索引表,每个数据元素占用表中的一项,每个表项通常包含关键字和地址指针。其中的关键字是能够惟一标志一个数据元素的数据项。
(4) 散列结构:通过构造相应的散列函数,由散列函数的值来确定元素存放的地址。 7.什么是算法,算法的特性有哪些?
答:算法(Algorithm)是一组明确的、可以执行的步骤的有序集合,它在有限的时间内终止并产生结果。算法的特性有:
(1) 有穷性(可终止性):一个算法必须在有限个操作步骤内以及合理的有限时间内执行完成。
(2) 确定性:算法中的每一个操作步骤都必须有明确的含义,不允许存在二义性。
(3) 有效性(可执行性):算法中描述的操作步骤都是可执行的,并能最终得到确定的结果。
(4) 输入及输出:一个算法应该有零个或多个输入数据、有1个或多个输出数据。 8.什么是算法的时间复杂度和空间复杂度,如何表示?
答:时间复杂度是与求解问题规模、算法输入相关的函数,该函数表示算法运行所花费的时间。记为:T(n),其中,n代表求解问题的规模。
算法的空间复杂度(Space complexity)度量算法的空间复杂性、即执行算法的程序在计算机中运行所占用空间的大小。简单讲,空间复杂度也是与求解问题规模、算法输入相关的函数。记为:S(n),其中,n代表求解问题的规模。
时间复杂度和空间复杂度同样,引入符号“O”来表示T(n)、S(n)与求解问题规模n之间的数量级关系。
9.用图示法表示语言处理的过程。 答:语言处理的过程如图所示:
骨架程序 预处理器 源程序 编译器 目标汇编程序 汇编器 可重定位机器代码 装配连接编辑 绝对机器码 可重定位目标文件库 10.简述编译程序的概念。
编译程序是把高级语言程序(源程序)作为一个整体来处理,在应用源程序执行之前,就将程序源代码“翻译”成目标代码(机器语言),编译后与系统提供的代码库链接,形成—个完整的可执行的机器语言程序(目标程序代码)。
11.用图示法表示编译程序的框架。
答:编译程序的框架如图所示:
表格管理 目标代码生成 中间代码优化 中间代码生成 语义分析器 语法分析器 词法分析器 源程序 目标代码 出错处理 12.词法分析的任务是什么?
答:作为编译过程的第一个阶段,其任务是从左到右一个字符,一个字符地对源程序进行扫描,读入源程序,对构成源程序的字符流进行扫描和分解,通过词法分析从而识别出一个个单词(也称单词符号或符号)。
13.语法分析的任务是什么?
答:语法分析是编译过程的第二个阶段,任务是在词法分析的基础上将单词序列分解成各类语法短语,如“程序”、“语句”、“表达式”等等。
14.简述语义处理的功能。
答:编译过程中的语义处理实现两个功能:
(1) 审查每个语法结构的静态语义,即验证语法结构合法的程序是否真正有意义,有时把这个工作称为静态语义分析或静态审查。
(2) 如果静态语义正确,则语义处理要执行真正的翻译,要么生成程序的一种中间表示形式(中间代码),要么生成实际的目标代码。
15.简述中间代码的概念。
答:所谓“中间代码”是一种结构简单、含义明确的记号系统,这种记号系统可以设计为多种多样的形式,重要的设计原则为两点:一是容易生成;二是容易将它翻译成目标代码。
16.目标代码生成阶段的任务是什么?
答:目标代码生成阶段的任务是把中间代码变换成特定机器上的绝对指令代码或可重定位的指令代码或汇编指令代码。这是编译的最后阶段,它的工作与硬件系统结构和指令含义有关,这个阶段的工作很复杂,涉及到硬件系统功能部件的运用、机器指令的选择、各种数据类型变量的存储空间分配以及寄存器和后援寄存器的调度等。
三、讨论题
1.作为一个计算机专业的学生,程序设计是大学学习的重要内容之一,程序设计的内容很多,语言的更新也很快,如何才能更好地掌握程序设计?如何利用语言编程?怎样才
能克服害怕编程的思想?
2.算法是程序设计的基础,没有好的算法,就不可能写出好的程序,但是,学习算法涉及到很多交叉学科的知识,怎样才能把这些知识融会贯通,写出优秀的程序?