计算机导论PPT第八章_程序设计语言(1)
合集下载
程序设计语言与程序设计方法ppt课件

建模
采用UML等建模工具,对系统进 行可视化建模,包括类图、时序 图、用例图等,以便于理解和沟 通。
设计
根据需求和模型,进行系统架构 设计、数据库设计、界面设计等 ,制定详细的设计文档。
编码、测试与调试阶段方法论
编码
采用合适的编程语言和开发工具,按照设计 文档进行编码实现,注意代码风格和注释规 范。
功能强大
Python语言内置了丰富的库和模块,支持多种编程任务。
Python语言特点与应用领域
• 跨平台性:Python语言可以在多种操作系统上运 行,具有良好的跨平台性。
Python语言特点与应用领域
01
Web开发
Python语言在Web开发领域有 广泛应用,如Django、Flask等 框架。
2
定期召开项目会议,分享进展和遇到的问题
3
使用团队协作工具,提高沟通效率和协作效果
THANKS FOR WATCHING
感谢您的观看
结构化控制结构
使用顺序、选择和循环三种基本控制结构,简化 程序逻辑。
面向对象程序设计方法
类与对象
通过定义类来封装数据和操作,创建对象来实现具体功能。
继承与多态
利用继承实现代码重用,通过多态实现灵活的程序设计。
封装与信息隐藏
将数据与操作封装在类中,隐藏内部实现细节,提高程序安全性 。
敏捷开发方法与DevOps理念
01
03 02
成功项目案例剖析及经验借鉴
高质量的代码编写和测试 经验借鉴 重视团队建设和沟通协作能力的培养
成功项目案例剖析及经验借鉴
制定详细的项目计划和时间表,确保 按时交付
注重代码质量和测试,提高系统的稳 定性和可靠性
C语言程序设计程序设计概述PPT课件

a BOOK1 max _add num_1大小写形式不同时,C语言认为是两
•非 法 标 识 符
个不同的标识符。
3sum
不允许以数字开头
⑵ 标识符命名应尽量有相应的
意义,以便阅读理解。
ab#cd 2.保留字
使用了非法字符“#”
⑶ 建议初学者尽量使用较短而
b由oCok语-言1 规定的用出于现定非义法变字量类符型“、-”命(减号有)意义的标识符,既便于上机训练,
return 0;
}
第2页/共32页
1.2 算法
1.2.1 算法概念与算法描述 1.2.2 算法的逻辑结构 1.2.4 算法的特性 1.2.4 算法评价
第3页/共32页
1.2.1 算法概念与算法描述
算法重要性:程序=数据结构+算法 1.算法的概念 算法是为计算机处理问题所设计的解题步骤。算法的最终实现是计算机程序。 2.算法的描述方法
1.4.1 程序的函数化结构
2.C语言程序的一般结构 一个C语言程序,在结构上不仅要有main()函数,还可以包括其他独立的 函数,一个函数可以在另一个函数中被使用。
例1-3 输出图案程序。
#include<stdio.h>
int main(void) /* 主函数 */
{
void p_s(void);
算法特性 ⑴ 有穷性:一个算法必须经过有限步骤之后结束。 “有限步骤”,既指步骤量有限,同时也要求步 骤量合理。。 ⑵ 确定性:每一个步骤所规定的操作必须是确定 的,不能有二义性。 ⑶ 有效性:每一个步骤描述的操作必须能够通过 已经实现的基本运算有效地执行,并且得到确定 的结果。 ⑷ 输入和输出特性。每个有意义的算法有零个或 多个输入,并且有一个或多个输出。
计算机导论第八章 程序设计语言

汇编语言比机器语言易读、易维护。但计算 汇编语言比机器语言易读、易维护。 机并不认识这些符号, 机并不认识这些符号,因此就需要一个专门 的程序负责将这些符号翻译成二进制数的机 器语言,这种翻译程序被称为汇编程序 汇编程序。 器语言,这种翻译程序被称为汇编程序。
1957年,第一个完全脱离机器硬件的高级语言- FORTRAN 年 第一个完全脱离机器硬件的高级语言 问世了。此后, 多年来 共有几百种高级语言出现。 多年来, 问世了。此后,40多年来,共有几百种高级语言出现。
信息表管理程序 编译过程
编译程序工作时,先分析,后综合, 编译程序工作时,先分析,后综合,从而得 词 语 语 中 代 目 到目标程序。所谓分析, 到目标程序。所谓分析,是指词法分析和语 法 法 义 间 码 标 分 分 分 代 优 代 法分析;所谓综合是指代码优化, 码 法分析;所谓综合是指代码优化,存储分配 析 析 析 码 化 程 程 程 生 程 生 和代码生成。 和代码生成。 序 序 序 成 序 成
8.2.3 赋值语句
赋值操作的意义就是把一个确定的数值放到 某个变量代表的那个内存单元中去。 某个变量代表的那个内存单元中去。 赋值号: 赋值号: “=”表示赋值操作 表示赋值操作 左值: 左值:等待被赋予值的变量 右值:将要被赋予的“ 右值:将要被赋予的“值”
8.2.4 分支语句
分支语句
成立
a
8.2程序设计语言的基本元素 程序设计语言的基本元素
1. 2. 3. 4. 5. 6. 7.
变量 数据类型 赋值语句 分支语句 循环语句 过程(函数) 过程(函数) 注释语句
8.2 基本元素
8.2.1 变量和常量
变量:在程序运行过程中, 变量:在程序运行过程中,其值可以被改变的量 称为变量。变量的两个要素: 变量名 变量名。 称为变量。变量的两个要素:1)变量名。每个变 量都必须有一个名字--变量名, --变量名 量都必须有一个名字--变量名,遵循标识符命 名规则。 )变量值。在程序运行过程中, 名规则。2)变量值。在程序运行过程中,变量 值存储在内存中。 值存储在内存中。程序通过变量名来引用变量的 值。 常量:在程序运行过程中, 常量:在程序运行过程中,其值不能被改变的量 变量在使用前, 变量在使用前,在内 称为常量。常量可分为整型常量,实型常量, 称为常量。常量可分为整型常量,实型常量,字 存中会给每个变量申 符常量,符号常量。 符常量,符号常量。 请一定的大小的空间。 请一定的大小的空间。
计算机导论第8章软件工程new

PPT文档演模板
计算机导论第8章软件工程new
8.11 软件工程环境
1.软件开发环境概述
(1) 软件开发环境:在计算机的基本软件的基础上,为了
支持软件的开发而提供的一组工具软件系统 。
(2) 对软件开发环境的要求: 一体化 、通用性 、适应性和 灵活性 、易使用、经济高效 。
PPT文档演模板
计算机导论第8章软件工程new
发工具。
PPT文档演模板
计算机导论第8章软件工程new
8.1 软件工程概述
2.基本概念
• 软件工程 :研究大规模程序设计的方法、工具 和管理的一门工程科学,也就是运用系统的、 规范的和可定量的方法来开发、运行和维护软 件的系统工程。
PPT文档演模板
计算机导论第8章软件工程new
8.1 软件工程概述
8.11 软件工程环境
3.软件工具的基本概念
软件工具 :指为支持计算机软件的开发、 维护、模拟、移植或管理而研制的程序系 统。 (软件工具通常由工具、工具接口和工具用 户接口3部分构成)
PPT文档演模板
计算机导论第8章软件工程new
3rew
演讲完毕,谢谢听讲!
再见,see you again
PPT文档演模板
PPT文档演模板
计算机导论第8章软件工程new
8.3 软件开发方法
3.面向数据结构方法
通过分析信息结构,并使用专门的图形描述工 具——数据结构图进行系统分析,从而得到软件结 构。
4.面向对象方法
从分析组成系统的对象开始,以数据抽象的 类为基础、自底向上的开发方法。
PPT文档演模板
计算机导论第8章软件工程new
2. 影响软件质量的因素:
计算机导论(全套课件466P)

当选,这使西方舆论大为轰动。因此,人 们认为1951年UNIVAC迎来计算机时代,
而与其说莫奇莱和埃克特发明了电子计算 机,不如说他们奠定了计算机工业的基础。
UNIVAC
计算机导论
1.1 概述
1.1.3 计算机的发展
第一代 (1946~1956)
电子管 5千~4万(次/秒)
1964年911机
第二代 (1957~1964)
巴贝基生于1791年的英国,当他在剑桥大学攻读博士时,即 为了解决计算等式间的差异数,于1812年首先设计出了一台名为 差分机(Difference Engine)的机器,并于1822年制成了差分机 样机。这是一台利用蒸汽为动力,以齿轮为基础所构成的机器, 由于齿轮的数量过于庞大(约四千),以至于差分机所计算的成 果并不精确。经历十年失败的尝试,1834年巴贝基在研制差分机 的工作中,看到了制造一种新的、在性能上大大超过差分机的计 算机的可能性,从而放弃了差分机转而构想出了名为分析机的自 动运算机器,由于这台机器具备有“输入”、“运算”、“输出” 及“储存”的四大现代计算机特征,最后因英国政府停止资助使 这项计划,直到巴贝基逝世,亦未能最终实现他所设计的计算机。
计算机导论
1.1 概述
1.1.1 近代计算机的发展
美国哈佛大学的霍华德•艾肯(Howard Aiken,1900-1973)博 士在图书馆里发现了巴贝基的论文,提出了用机电方式,而不是 用纯机械方法来构造新的分析机。霍华德·艾肯在IBM公司的资助 下,于1944年研制成功了被称为计算机“史前史”里最后一台著 名的MarkⅠ计算机,将巴贝基的梦想变为了现实。这也正是IBM走 上计算机产业之路的开始。后来霍华德·艾肯继续主持了MarkⅡ和 MarkⅢ计算机的研制工作,但它们已经属于电子计算机的范畴。 这里请注意,20世纪40年代曾经出现过两个被称为MarkⅠ的计算机, 一个是这里所说的MarkⅠ,另一个是英国曼彻斯特大学以威廉斯 管的发明人Williams(1911-1977)和汤姆·基尔蓬(Tom Kilbrn) 为首的研究小组开发的MarkⅠ,其原型则被称为“婴儿机” (Baby Machine)。曼彻斯特大学在计算机发展史上也曾经起过 重大的作用。
而与其说莫奇莱和埃克特发明了电子计算 机,不如说他们奠定了计算机工业的基础。
UNIVAC
计算机导论
1.1 概述
1.1.3 计算机的发展
第一代 (1946~1956)
电子管 5千~4万(次/秒)
1964年911机
第二代 (1957~1964)
巴贝基生于1791年的英国,当他在剑桥大学攻读博士时,即 为了解决计算等式间的差异数,于1812年首先设计出了一台名为 差分机(Difference Engine)的机器,并于1822年制成了差分机 样机。这是一台利用蒸汽为动力,以齿轮为基础所构成的机器, 由于齿轮的数量过于庞大(约四千),以至于差分机所计算的成 果并不精确。经历十年失败的尝试,1834年巴贝基在研制差分机 的工作中,看到了制造一种新的、在性能上大大超过差分机的计 算机的可能性,从而放弃了差分机转而构想出了名为分析机的自 动运算机器,由于这台机器具备有“输入”、“运算”、“输出” 及“储存”的四大现代计算机特征,最后因英国政府停止资助使 这项计划,直到巴贝基逝世,亦未能最终实现他所设计的计算机。
计算机导论
1.1 概述
1.1.1 近代计算机的发展
美国哈佛大学的霍华德•艾肯(Howard Aiken,1900-1973)博 士在图书馆里发现了巴贝基的论文,提出了用机电方式,而不是 用纯机械方法来构造新的分析机。霍华德·艾肯在IBM公司的资助 下,于1944年研制成功了被称为计算机“史前史”里最后一台著 名的MarkⅠ计算机,将巴贝基的梦想变为了现实。这也正是IBM走 上计算机产业之路的开始。后来霍华德·艾肯继续主持了MarkⅡ和 MarkⅢ计算机的研制工作,但它们已经属于电子计算机的范畴。 这里请注意,20世纪40年代曾经出现过两个被称为MarkⅠ的计算机, 一个是这里所说的MarkⅠ,另一个是英国曼彻斯特大学以威廉斯 管的发明人Williams(1911-1977)和汤姆·基尔蓬(Tom Kilbrn) 为首的研究小组开发的MarkⅠ,其原型则被称为“婴儿机” (Baby Machine)。曼彻斯特大学在计算机发展史上也曾经起过 重大的作用。
计算机导论课件8.1.1 程序设计的步骤

8.1.1 程序设计的步骤
其中第10~15位的000000会通过控制器产生运算器电 路做加法的控制信号,第9位的0、第8位的1和第5~3 位的011会通过电路产生访问第3个寄存器的控制信号, 第6~7位的11和第2~0位的000,会通过电路产生访问 第0个寄存器的控制信号。寄存器电路和运算器电路在 控制信号控制下完成运算功能。
式,没有传统编程语言提供的控制结构 和复杂的数据结构定义。如超文本标记 语言HTML和可扩展标记语言XML。下面 是HTML语言在网页上显示“Hello World!”例子。
8.1.1 程序设计的步骤
<html> <head></head> <body> Hello World! </body> </html>
8.1.1 程序设计的步骤
(11)脚本语言 脚本语言是为了缩短传统语言程序的编写-编译-链接-
运行过程而创建的计算机编程语言。脚本语言一般作 为其他语言应用程序的补充。假定已经存在一系列由 其他语言写成的有用的组件,脚本语言把组件连接在 一起,实现特定功能。例如Python、VBscript、 Javascript、InstallshieldScript、ActionScript等。下面 是JavaScript脚本语言在HTML文档中显示“hello World!”的代码。
Hello.add(lbl);
lbl.setAlignment(1);
lbl.setFont(new Font("Arial",Font.PLAIN,24));
Hello.setLocation(260,180);
Hello.show();
计算机导论PPT第八章_程序设计语言(1)

表 1.1 两个整数相加的机器语言
汇编语言
接下来的演化是伴随着用带符号或助记符的指令和地址代替二进 制代码而发生的。这种助记符语言就是汇编语言。 汇编程序将汇编语言代码翻译成机器语言代码。
表 1.2 两个整数相加的汇编语言
高级语言
尽管汇编语言大大提高了编程效率,但仍然需要程序员在所用的 硬件上花费大部分精力。高级语言适用于许多不同的计算机,其 设计目标就是使程序员摆脱汇编语言繁琐的细节,能够把精力集 表 1.3 C++中的加法程序 中到应用程序上。 人们开发了多种高 级语言,著名的有 BASIC、PASCAL 、C、C++和Java等 高级语言和汇编语 言有一个共性:它 们必须被转化为机 器语言
典型的面向对象语言 C++ Java
图 3.6 面向对象的基本特征
函数式模式
函数式模式中程序被看成是一个数学函数,将一组输 入映射到一组输出的黑盒子。
图 3.7 函数式语言中的函数
例如,定义一个称为 first 的原始函数 ,由它完成从一个数 据列表抽取第一个元素的功能;在定义一个函数rest,由 它完成从一个数据列表中抽取除第一个元素以外的所有 元素的功能。那么通过这两个函数的组合使用就可以定 义一个函数来完成对第三个元素的抽取。如图3.8
在面向对象模式中,文件能把所有的被文件执行的 过程(在面向对象模式中称为方法)打包在一起, 包括打印、复制和删除等。程序只需向对象发出相 应请求。
图 3.4 面向对象模式的概念
类 如图 3.5 所示,相同类型的对象(如文件)需要一组 方法,这些方法显示了这类对象对来自“领地”外的 刺激的反应。为了创建这些方法,面向对象语言使 用称为类的单元。
多态
汇编语言
接下来的演化是伴随着用带符号或助记符的指令和地址代替二进 制代码而发生的。这种助记符语言就是汇编语言。 汇编程序将汇编语言代码翻译成机器语言代码。
表 1.2 两个整数相加的汇编语言
高级语言
尽管汇编语言大大提高了编程效率,但仍然需要程序员在所用的 硬件上花费大部分精力。高级语言适用于许多不同的计算机,其 设计目标就是使程序员摆脱汇编语言繁琐的细节,能够把精力集 表 1.3 C++中的加法程序 中到应用程序上。 人们开发了多种高 级语言,著名的有 BASIC、PASCAL 、C、C++和Java等 高级语言和汇编语 言有一个共性:它 们必须被转化为机 器语言
典型的面向对象语言 C++ Java
图 3.6 面向对象的基本特征
函数式模式
函数式模式中程序被看成是一个数学函数,将一组输 入映射到一组输出的黑盒子。
图 3.7 函数式语言中的函数
例如,定义一个称为 first 的原始函数 ,由它完成从一个数 据列表抽取第一个元素的功能;在定义一个函数rest,由 它完成从一个数据列表中抽取除第一个元素以外的所有 元素的功能。那么通过这两个函数的组合使用就可以定 义一个函数来完成对第三个元素的抽取。如图3.8
在面向对象模式中,文件能把所有的被文件执行的 过程(在面向对象模式中称为方法)打包在一起, 包括打印、复制和删除等。程序只需向对象发出相 应请求。
图 3.4 面向对象模式的概念
类 如图 3.5 所示,相同类型的对象(如文件)需要一组 方法,这些方法显示了这类对象对来自“领地”外的 刺激的反应。为了创建这些方法,面向对象语言使 用称为类的单元。
多态
计算机程序设计语言ppt课件

发展历程
从机器语言、汇编语言到高级语 言,计算机程序设计语言经历了 从低级到高级、从具体到抽象的 发展过程。
编程语言分类及特点
分类
根据编程范式的不同,编程语言可分为命令式语言、函数式语言、逻辑式语言 等;根据运行方式的不同,可分为编译型语言和解释型语言。
特点
各类编程语言具有不同的特点,如命令式语言强调状态和变量的变化,函数式 语言强调函数的作用和计算过程的不变性,逻辑式语言则强调逻辑推理和证明 。
。
未来编程语言发展趋势预测
多模态编程语言的兴起
支持文本、语音、图像等多种输入方式的编程语言,提高编程的 便捷性和普适性。
自适应编程语言的发展
能够根据不同应用场景和需求自动调整和优化代码结构和性能的编 程语言。
跨平台、跨语言编程的普及
实现不同平台和语言之间的无缝对接和互操作性,提高开发效率和 代码复用率。
03
04
函数库与模块 化设计思想
05
高级编程技巧与方法探讨
面向对象编程思想及实践
类的设计与实现:属性、方 法、构造函数和析构函数
面向对象编程(OOP)的基 本概念:类、对象、封装、
继承和多态
01
02
03
访问控制修饰符:public、 private、protected和默认
访问级别
继承与多态的实现方式:方 法重写、方法重载和接口实
量子计算对编程语言影响展望
量子编程语言的兴起
01
Q#、Quipper等量子编程语言为量子计算提供了高效的开发环
境。
量子算法与经典算法的融合
02
通过将量子算法与经典算法相结合,实现更高效的计算任务。
量子计算对并行计算和分布式计算的影响
从机器语言、汇编语言到高级语 言,计算机程序设计语言经历了 从低级到高级、从具体到抽象的 发展过程。
编程语言分类及特点
分类
根据编程范式的不同,编程语言可分为命令式语言、函数式语言、逻辑式语言 等;根据运行方式的不同,可分为编译型语言和解释型语言。
特点
各类编程语言具有不同的特点,如命令式语言强调状态和变量的变化,函数式 语言强调函数的作用和计算过程的不变性,逻辑式语言则强调逻辑推理和证明 。
。
未来编程语言发展趋势预测
多模态编程语言的兴起
支持文本、语音、图像等多种输入方式的编程语言,提高编程的 便捷性和普适性。
自适应编程语言的发展
能够根据不同应用场景和需求自动调整和优化代码结构和性能的编 程语言。
跨平台、跨语言编程的普及
实现不同平台和语言之间的无缝对接和互操作性,提高开发效率和 代码复用率。
03
04
函数库与模块 化设计思想
05
高级编程技巧与方法探讨
面向对象编程思想及实践
类的设计与实现:属性、方 法、构造函数和析构函数
面向对象编程(OOP)的基 本概念:类、对象、封装、
继承和多态
01
02
03
访问控制修饰符:public、 private、protected和默认
访问级别
继承与多态的实现方式:方 法重写、方法重载和接口实
量子计算对编程语言影响展望
量子编程语言的兴起
01
Q#、Quipper等量子编程语言为量子计算提供了高效的开发环
境。
量子算法与经典算法的融合
02
通过将量子算法与经典算法相结合,实现更高效的计算任务。
量子计算对并行计算和分布式计算的影响
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在过程式语言中,与主程序一样,子程序能够调用 预定义的过程来操作局部对象。这些局部对象或局部 变量在子程序被调用时创建,当控制从子程序返回时 被销毁。局部对象属于子程序。
子程序仅仅作用于局部对象是非常少见的。多数情 况下主程序需要子程序作用于由主程序创建的一个对 象或一组对象。此时,主程序和子程序就需要使用参 数,在主程序中称为实际 程序都是用某种高级语言编写的。为了 在计算机上运行程序,需要将其翻译成当前计算机 能够运行的机器语言。高级语言程序被称为源程序。 被翻译成的机器语言程序为目标程序。有两种方法 进行翻译:编译(compilation)和解释(interpretation)。
编译
编译程序通常将整个源程序翻译成目标程序。
在面向对象模式中,文件能把所有的被文件执行的 过程(在面向对象模式中称为方法)打包在一起, 包括打印、复制和删除等。程序只需向对象发出相 应请求。
图 3.4 面向对象模式的概念
类 如图 3.5 所示,相同类型的对象(如文件)需要一组 方法,这些方法显示了这类对象对来自“领地”外的 刺激的反应。为了创建这些方法,面向对象语言使 用称为类的单元。
解释
解释是把源程序中的每一行翻译成目标程序中相应的行 ,并执行它的过程。解释程序存在两种趋势: Java语言之前的解释式语言,如BASIC
调试困难 运行效率低
Java使用的解释程序
i
编译和解释的不同在于,编译在执行前翻译整个源 代码,而解释一次只翻译和解释源代码中的一行。
翻译过程
编译和解释都遵循相同的翻译过程。主要包括词法分 析、语法分析、语义处理、代码生成几个阶段。
表4.1 算数运算符
关系运算符用于比较两个数据的大小关系。关系运算 符的结果是逻辑值(true or false)。 C、C++和Java
中使用的六种关系运算符如表4.2所示
表4.2 关系运算符
逻辑运算符是逻辑值(true or false)组合后得到的一个新值 。C语言中使用的三种逻辑运算符如表4.3所示
结构化程序设计推荐使用三种类型的控制语句:顺 序、选择和循环语句。
图 4.1 两路和多路判断
图 4.2 三种类型的循环
子程序
子程序的概念在过程式语言中极其重要。主要是因为 子程序能够使程序变得更加结构化:完成指定任务的 子程序能够一次编写多次调用,就像编程语言中的预 定义过程一样。
图 4.3 子程序的概念
图 3.5 类的组成
方法
总体上,方法的格式与有些过程式语言中用的函 数非常相似。每个方法包含方法头、局部变量和语句 。这就意味着我们对过程式语言所讨论的大多数特性 都可以应用在为面向对象程序所写的方法上。 例如,C++语言就是一个面向对象C语言的扩展。
继承 在面向对象模式中,一个类可从另一个类继承 。当一个通用类(general class )被定义后,我们可以 定义一个继承其某些特性的更为具体的类,在这个 新类中也会包含某些新的特征。 例如,例如当定义一个几何形状的类 (GeometricalShapes) 后,可以定义一个称为矩形 (Rectangles) 的类。矩形是具有额外特征的几何形 状。
第八章 程序设计语言
本章内容
编程语言的演化 源程序到目标程序的翻译 编程模式 共同概念
1 演化
为计算机写程序,我们必须使用计算机语言。 计算机语言是指编写程序时,根据事先定义的规 则(语法)而写出的预定语句的集合。 经过多年的发展,计算机语言已经从机器语言 (machine language ) 演化到高级语言 (high-level languages)。
图 3.8 抽取列表中的第三个元素
Some functional languages LISP (LISt Programming) Scheme (first 7 11 8 9 16) 2
(rest 7 11 8 9 16 ) 11 8 9 16
(first (rest ( rest List) ) )
表4.3 逻辑运算符
语句
每条语句都使程序执行一个相应的动作。它被直接翻译 成一条或多条计算机可执行的指令。 C、C++和Java中 定义了多种类型的语句。 赋值语句给变量赋值。换言之,它将一个值存储在变 量中,该变量是在声明部分已经被创建 复合语句是一个 0 个或多个语句的代码单元,也被称 为块。复合语句将一组语句看成是一个独立的实体 在过程式语言中程序是语句的集合。语句通常是逐句 顺序执行的。执行顺序的改变是由控制语句完成的。
图 2.1 源代码翻译过程
3 编程模式
模式是一种计算机语言看待要解决问题的方式。依据其解决问 题的方式,计算机语言可分为四类:过程式、面向对象式、函 数式和说明式
图 3.1 编程语言种类
过程式模式
在过程模式中,把程序看成是操纵被动对象的 活动主体。在日常生活中,我们会遇到许多被动 对象:石头、书和灯等。一个被动对象本身不能 开启一个动作,但它能从活动主体接收动作。
说明式模式
依据逻辑推理的原则响应查询,后来发展称为一级 谓词演算。 逻辑推理以推导为基础。根据一些假定正确的已知 论断(事实),运用逻辑推理的可靠准则推导出新的 论断。如以下著名的逻辑推导准则:
将此原则应用于以下事实
可推导出下面新的事实:
Prolog 最著名的说明式语言 由 A. Colmerauer 在 1972 提出 . Prolog程序由事实和规则构成。如前面的例子可用如下 的prolog语言描述
常量
与变量一样,常量也是一个可以存储值的被命名的位 置,但其存储的值在程序的开始处被定义后就不能改 变。
输入和输出
几乎所有的程序都需要输入或输出数据。这些操 作可能非常复杂,尤其是对大文件进行读写时。大 多数程序设计语言使用一些预先定义好的函数完成 输入和输出。例如在C语言中 数据输入可以通过一条语句或一个预定义的函数 如scanf来完成, scanf(“%d”, &num) 数据的输出也可以通过一条语句或一个预先定义的 函数如printf来完成, printf(“The value is: %d”,num)
典型的面向对象语言 C++ Java
图 3.6 面向对象的基本特征
函数式模式
函数式模式中程序被看成是一个数学函数,将一组输 入映射到一组输出的黑盒子。
图 3.7 函数式语言中的函数
例如,定义一个称为 first 的原始函数 ,由它完成从一个数 据列表抽取第一个元素的功能;在定义一个函数rest,由 它完成从一个数据列表中抽取除第一个元素以外的所有 元素的功能。那么通过这两个函数的组合使用就可以定 义一个函数来完成对第三个元素的抽取。如图3.8
表 1.1 两个整数相加的机器语言
汇编语言
接下来的演化是伴随着用带符号或助记符的指令和地址代替二进 制代码而发生的。这种助记符语言就是汇编语言。 汇编程序将汇编语言代码翻译成机器语言代码。
表 1.2 两个整数相加的汇编语言
高级语言
尽管汇编语言大大提高了编程效率,但仍然需要程序员在所用的 硬件上花费大部分精力。高级语言适用于许多不同的计算机,其 设计目标就是使程序员摆脱汇编语言繁琐的细节,能够把精力集 表 1.3 C++中的加法程序 中到应用程序上。 人们开发了多种高 级语言,著名的有 BASIC、PASCAL 、C、C++和Java等 高级语言和汇编语 言有一个共性:它 们必须被转化为机 器语言
表达式 语 句 子程序
标识符
标识符就是对象的名称。它使我们能够对程序中 的对象进行命名。
例如,计算机中每个数据都存在一个唯一的地址 中。如果没有标识符用符号代表数据的位置,我们就 必须使用数据地址来操作这些数据。取而代之,只要 给出数据的名字,编译器就能够去跟踪数据实际存放 的位置。
数据类型
数据类型定义了一系列值以及一组应用于这些值 的操作。每种数据类型值的集合称为此数据类型的 域。大多数语言定义了两种数据类型:简单数据类 型和复合数据类型。 简单数据类型是不能分解成更小数据类型的数据 类型(C语言int:-32768~+32767,2个字节) 复合数据类型是一组元素,其中每个元素是简单 数据类型或复合数据类型
//Local Declarations
标识符 数据类型
变 量
字面值 常 量 输入和输出
const float taxMultiplier = 1.08; int price; float cost;
//Statements
cin>>price; cost = price*taxMultiplier+2000; print(cost); return 0; } //main
表达式
表达式是由一系列操作数和运算符简化后的一个单 一数值。例如,下面是一个值为13的表达式
操作数接受一个运算符的动作。一个运算符可能有 多个操作数
操作符是用来完成一个动作的特定语言的语法标记。 最为熟悉的运算符都是从数学中得到的 ,表 4.1 给出了 一些用于C、C++和Java中的算数运算符
用户可进行如下查询:
程序会响应: yes.
4 共同概念
通过对一些过程式语言进行快速浏览,发现存在共 同的概念。这些概念中大部分也适用于面向对象语 言。这是因为当创建方法时,面向对象模式使用过 程式模式。
示例
#include <iostream.h> using namespace std; void print( float result) { cout<<result; } int main(void) {
图 3.2 过程式模式的概念
过程式模式的程序由三部分组成:对象创建部分、一 组过程调用和构成每个过程的一组代码。有些过程在 语言本身中已经被定义,通过组合这些代码,开发者 可以建立新的过程。