程序设计基础 第 2 章 解题要有程序 主讲:吴献彩 Tel : QQ :
课题引入 程序一: C=A ; A=B ; B=C ; 例:假设 A 的初值为 5 , B 的初值为 3 。 分别执行以下两个程序之后, A 、 B 的结果 值是多少? 比较:可读性、算法技巧、使用存储空间 程序二: A=A+B ; B=A-B ; A=A-B ; → 变量、常量、表达式、算法
第二章 解题要有程序 计算机如何解题 计算机语言 高级程序设计语言及其基本特征 高级程序设计语言的实现
2.1.1 程序 程序设计 程序:是用计算机语言对所要解决的问题中的 数据以及处理问题的方法和步骤所做的完整而 准确的描述,描述的过程成为程序设计。 程序设计过程中密切相关的两个方面: 1 、数据结构 2 、算法 程序=数据结构 + 算法 即:程序=数据结构 + 算法
程序设计涉及四个方面问题: 数据结构、算法、编程语言以及设计方法 程序设计基本步骤: 1. 确定要解决的问题。 2. 分析问题,建立数学模型。 3. 选择计算方法。 4. 确定数据结构和算法。 5. 绘制流程图。 6. 编写程序。 7. 调试程序。 8. 整理资料,交付使用。 程序设计过程
2.1.3 程序设计技术与基本原则 问题规模不大时:程序设计的核心是算法和数据结 构。 问题具有较大规模时:程序设计方法(体现在程序 的组织结构和层次设计)非常重要。 程序设计三要素:算法、数据结构以及程序设计方 法学。
评价程序质量性能的准则: 1. 正确性:判断程序质量首要标准。 2. 可靠性:程序反复使用中保持不失败的概率。 3. 简明性:要求程序简明易懂。 4. 有效性:在一定软硬件条件下,程序综合效率的 反映。 5. 可维护性:分为校正性维护、适应性维护和完善 性维护。关系到程序的可用性。 6. 可移植性:程序应尽可能适应各类运行环境,提 高程序的复用。
2.2.1 计算机语言 算法是用语言描述的。人能够理解的算法 一般是用自然语言描述的。而计算机所需 要的是计算机能够理解的算法,因此就要 用计算机能够理解的语言,即使用计算机 语言进行设计。
计算机语言是人们设计的专用于人 与计算机交流、进而计算机能够自 动识别的语言。用计算机语言描述 的算法就是计算机程序,程序设计 是设计、编制和调试程序的方法和 过程。
机器语言汇编语言 高级语言 计算机语言有三种类型:机器语言、汇编语言和 高级语言。 1 、机器语言: 计算机能直接执行的语言 程序全部由二进制代码组成 程序全部由二进制代码组成。 2 、汇编语言: 汇编语言属于过程式语言 源程序 目标程序 汇编程序的任务是将汇编语言编写的源程序翻译成计算机 能够直接理解并执行的机器语言程序,即目标程序。 3 、高级语言: 世界上第一个高级语言是 FORTRAN 语言 目标程序,有两种方式:编译和解释 将高级语言源程序翻译成计算机能直接理解并执行的二进 制代码的目标程序,有两种方式:编译和解释
2.2.2 计算机语言分类 按语言级别:机器、汇编、高级语言。 按用户要求: 1 、过程式语言:用户可以描述一系列可顺序执 行的运算。如: FORTRAN 、 C 、 PASCAL 、 COBOL 等。过程式程序设计主要涉及数据结构 的确定,求解算法的设计,代码文档的组织和 测试等内容。 2 、非过程式语言:不需要指明计算过程的 语 言。如: SQL 。
按应用范围:通用语言和专用语言。 目标非单一的语言称为通用语言,如: PASCAL , C , COBOL , FORTRAN 目标单一的语言称为专用语言,如自动数控程序工具 语言 APT 按使用方式: 1 、交互式语言:所编写的程序在执行过程中可以向 用户发出提示、警告等信息。如: BASIC 、 APL 等。 2 、非交互式语言:所编写的程序在执行过程中不可 以向用户发出提示、警告等信息。如: FORTRAN 、 C 、 PASCAL 等。
面向过程的程序设计语言 数据库语言 面向对象的程序设计语言 高级语言类型: 1 、面向过程的程序设计语言:将任务中的各步骤逐 一编写,对问题描述接近于问题的求解过程。如 BASIC 、 FORTRAN 、 C 等。 2 、数据库语言:非过程语言。适合对数据管理。其 特点是只关心 “ 做什么 ” ,而不用理会 “ 怎么做 ” 。如: SQL 。 3 、面向对象的程序设计语言:提供相关机制,使编 程者可以按照人类思维的最一般规律,以与所研究 的对象认知程度相同步的方式开发软件。如: JAVA 、 C++ 、 Delphi 、 PowerBuilder 等。
2.2.3 几种高级语言特点 本节知识仅作了解 FORTRAN FORTRAN 主要应用于科学与工程领域中的数值运算。 FORTRAN 程序由一个主程序和一系列的子程序构 成,编译单元是 “ 程序 ” 。 FORTRAN 程序特点:紧凑、灵活方便、结构清晰。 ALGOL60 ALGOL60 特点:嵌套性、动态性、递归性和语言描述的严谨 性。
PASCAL PASCAL 系统体现结构程序设计思想的第一种语言,既适于 描述数值问题算法,又适于描述非数值问题算法。 PASCAL 程序特点:结构清晰,便于验证程序的正 确性、简洁、精致;控制结构和数据类型丰富,表 达力强、效率高、易移植。 BASIC BASIC 特点: 1 、小巧灵活,简单易懂,使用方便; 2 、具有交互性。 BASIC 不仅适用于数值运算,也适用于数据处理, 以及实时控制。
C C 适合于作为系统描述语言,可用于编写系统软件 和应用软件。 C 语言特点: 1 、 C 是中级语言。可以对位、字节和地址进行操 作。 2 、 C 是结构化语言。 C 以函数形式提供,函数间 可相互调用,同时提供各类程序流程控制语句, 使程序完全结构化。 3 、 C 语言功能齐全,数据类型丰富,引入指针使 程序效率更高。 4 、使用范围广泛。
Java Java Sun 公司所开发的面向对象的 Internet 编程语言, 具有简单、动态、可移植、与平台无关和高性能 等特点。 Java 保留 C++ 基本语法、类和继承等机制,删除 了一些不好的特征,比 C++ 更为简单。但是执行 效率不是很高,基于 Java 是主要应用于网络浏览 器中,考虑到网络传输中的等待时间, Java 效率 问题不是很明显。
Visual Basic Visual Basic Windows 下面向对象的可视化开发工具,提供了 开发 Windows 应用程序迅速、简捷的方法。功能 强大、使用图形用户界面 (GUI) ,可视化程度高, 复用性好。 C++ C++ 在 C 基础上发展起来,包含 C 的所有特征。同时添 加 C 所不支持的面向对象编程的完全支持。 C++ 是高效的编程语言,既可以进行过程化程序 设计,又可以进行面向对象程序设计。 C++ 应用范围非常广泛。
Delphi Delphi Borland 公司所推出的可视化编程环境。使用了 Windows 图形用户界面的许多先进特性和设计思 想,采用面向对象程序语言、快速的编辑器和领 先的数据库技术。 和 VB 相比, Delphi 运行速度更快,编译后不需要 其他的支持库。数据库功能相当强大,特别适合 编写数据管理系统。
2.2.4 对程序设计语言的基本要求 对软件的 10 条一般要求 对软件的 10 条一般要求 1 、可理解性 2 、完整性 3 、简明性 4 、可移植性 5 、可维护性 6 、可测试性 7 、人机界面是否友好 8 、可靠性 9 、结构性 10 、效率 ( 2008 年 1 月考题)为保证软件的质量,对软件 有一些基本要求,请说出 5 条针对软件本身的一 般要求。
对程序设计语言的一般要求 1 、用户界面好; 2 、对硬件、软件环境要求低; 3 、对硬件资源的利用程度高; 4 、代码质量高; 5 、用途广泛; 6 、容易调用其它软件; 7 、自身发展快。
2.3 高级程序设计语言及基本特征 计算机程序的基本构成要素: 常量、变量、表达式、语句、函数等
2.3.1 常量、变量、表达式 常量 常量:程序运行过程中其值保持不变。如固定的 数值或字符串。也可以用符号来代表某一个常值。 如可将 PI 定义成常量 PI= 。 变量 变量:程序运行过程中其值可以改变的量。变量 包括变量名和变量的值。 表达式 表达式:由常量、变量、函数调用和运算符组成 的序列。如 C 语言中: 2*PI*r 就是一个求半径为 r 的 圆的周长表达式。
2.3.2 语句和函数 语句 赋值语句 输入输出语句 结构控制语句 语句:构成程序的基本单位。可分为:可执行语 句和说明语句。 可执行语句包括赋值语句、结构控制语句、输入 输出语句等。 赋值语句:用于对变量进行赋值。 一般形式 : 输入输出语句:用于执行输入输出。 结构控制语句:用于对程序流程的控制。 包括:选择控制、循环控制、转移控制、函数调 用和返回语句等。
函数 函数 函数是程序设计语言提供给用户的一系列现成的 程序,或用户为了实现相关功能自行编写的一段 子程序。 在 C 中,程序是由函数构成,通过函数来实现。
2.4 高级程序设计语言的实现 要使计算机能识别程序设计语言编写的程序,需要 对程序进行 “ 翻译 ” 。 编译方式 解释方式 编译程序解释程序 将高级语言程序翻译成机器语言一般有两种做法: 1 、编译方式 2 、解释方式 相应翻译程序称为:编译程序和解释程序 编译方式:整个源程序、生成目标程序、然后执行 解释方式:边解释边执行、不产生目标程序
编译程序 编译程序 编译过程示意图 符号表格 管理器 词法分析 语法分析 语义分析 中间代码生成 代码优化器 代码生成器 错误处理器
程序的编译与执行过程 ( 2009 年 7 月考题)请说明要在计算机上运行一 个用 C 语言编写的程序,要经过怎样的处理过程。 目标程序目标程序结果结果源程序源程序可执行程序可执行程序 编译 连接 执行 编译程序 编译程序
1 、( 2008 年 1 月)计算机能直接执行的语言是( ) A 、机器语言 B 、汇编语言 C 、高级语言 D 、目标语言 2 、( 2008 年 7 月)汇编语言属于( ) A 、函数式语言 B 、逻辑语言 C 、过程式语言 D 、非过程式语言 3 、( 2009 年 1 月)汇编程序的任务是( ) A 、将汇编语言编写的程序转换为目标程序 B 、将汇编语言编写的程序转换为可执行程序 C 、将高级语言编写的程序转换为汇编语言程序 D 、将高级语言编写的程序转换为可执行程序 历年试题 A C A
4 、( 2008 年 7 月)世界上第一个高级语言是( ) A 、 BASIC 语言 B 、 C 语言 C 、 FORTRAN 语言 D 、 PASCAL 语言 5 、( 2008 年 1 月) JAVA 语言的类别是( ) A 、面向过程 B 、面向问题 C 、面向对象 D 、面向硬件 6 、( 2008 年 7 月) C 语言的类别是( ) A 、面向过程 B 、面向问题 C 、面向对象 D 、面向硬件 7 、( 2009 年 1 月) C 语言是( ) A 、机器语言 B 、汇编语言 C 、高级语言 D 、目标语言 历年试题 C C A C
8 、( 2008 年 1 月)高级语言源程序的翻译有两种方式,一种是 ________ ,另一种是 ________ 。 9 、( 2008 年 1 月)为保证软件的质量,对软件有一些基本要求, 请说出 5 条针对软件本身的一般要求。 10 、( 2009 年 7 月)请说明要在计算机上运行一个用 C 语言编写的 程序,要经过怎样的处理过程。 历年试题 P46 编译 解释 P53