第六章 程序设计基础
计算机进行动作是按照人们设计好的程序
来完成的,程序是指计算机执行特定任务的指
令序列,它是用计算机语言编写的。用来设计
计算机程序的语言叫程序设计语言,它是计算
机程序员与计算机交流的工具。
主要内容:
1、程序设计语言
2、计算机 的解题过程
3、流程图设计
6.1 程序设计语言
一、分类及其特点
机器语言
汇编语言
高级语言
编译型高级语言
解释型高级语言
1、机器语言
(000AH) ?R2 0111 001 000001010
R2?R1 1100 000 000010010
(000BH)?R2 0111 001 000001011
R1+R2?R2 0001 000 000100001
R2?000CH 0110 001 000001100
R2?00FFH 1110 001 011111111
停机 1111 000 000000000
例,求解 3+5=8的程序
LDA 000AH
MOV R1,R2
LDA 000BH
ADD R2,R1
STA 000CH
OUT 00FFH
HALT
2、汇编语言
格式:
标号:操作码 地址码 (操作数)
优缺点:
汇编指令与机器指令一一对应,可
充分计算机硬件的功能。
可移植性差,不同的机器,代码不
同,编程人员必须熟悉该类型号的
计算机的硬件内部结构的知识。
Intel X86微处理器的汇编语言和 Alpha AXP
微处理器的汇编语言完全不同。以下 Alpha
AXP汇编代码演示了程序可以执行的操作
类型:
Ldr r16,(r15) ; 第一行
Ldr r17,4(r15) ; 第二行
Beq r16,r17,100; 第三行
Str r17,(r15); 第四行
100,; 第五行
if (x != y)
x = y;
第一条语句(第一行)将寄存器 15指定的地址中
的内容加载到寄存器 16中。第二条指令将紧接着
的内存中的内容加载到寄存器 17中。第三行比较
寄存器 16和寄存器 17,如果相等,分支到标号 100,
否则,继续执行第四行,将寄存器 17的内容存到
内存中。如果内存中的数据相同,就不必存储数
据。编写汇编级的程序需要技巧而且十分冗长,
容易出错。 Linux系统的核心很少的一部分是用汇
编语言编写,而这些部分之所以使用汇编语言只
是为了提高效率,并且和具体的微处理器相关。
汇编语
言程序
机器码的
目标程序
可执行
程序
编译 连接
MOV
ADD

JUMP
0101
1111

0010
0101
1111
0010
汇编程序的处理过程:
使用汇编语言编写大型程序十分困难,消耗时
间,容易出错而且生成的程序不能移植,只能
束缚在特定的处理器家族。更好的选择是使用
和机器无关的 高级语言,例如 C。 C允许你用逻
辑算法描述程序和要处理的数据。被称为编译
程序( compiler)的特殊程序读入 C程序,并将
它转换为汇编语言,进而产生机器相关的代码。
好的编译器生成的汇编指令可以和好的汇编程
序员编写的程序效率接近。
3、高级语言
main
{
int a=3,b=5;
s=a+b;
printf(“s=“,s);
}
Data 3,5
Read a,b
Let s=a+b
Print s
End
解释型高级语言
源程序 运行( RUN)解释
解释程序
可分为 解释型 与 编译型 两种类型。
编译型高级语言
源程序 目标程序编译 可执行 程序 运行连接编辑修改
编辑程序
(编辑器)
编译程序
(编译器)
连接程序
(连接器)
Linkers(连接程序)
连接程序将几个目标模块和库文件连接在一起成
为一个单独的完整程序。目标模块是汇编程序或
编译程序的机器码输出,它包括机器码、数据和
供连接程序使用的连接信息。比如:一个目标模
块可能包括程序的所有数据库功能,而另一个目
标模块则包括处理命令行参数的函数。连接程序
确定目标模块之间的引用关系,即确定一个模块
所引用的例程和数据在另一个模块中的实际位置

Linux核心是由多个目标模块连接而成的独立的大
程序。
二、程序设计语言的发展
1、第一代计算机语言 ——机器语言( 40-50年代初)
2、第二代计算机语言 ——汇编语言( 50年代中期)
3、第三代计算机语言 ——算法语言( 50年代中后期)
它接近自然语言与数学语言,容易掌握。
如:
( 1) FORTRAN语言, 1956年,用于科学与工程计算机。
( 2) COBOL语言, 1960年,面向事务处理。
( 3) BASIC语言, 1964年,解释型高级语言。后来发展有
True Basic,Quick Basic,Turbo Basic,Visual Basic等。
( 4) PASCAL语言, 1971年,体现结构程序设计思想。
用于教学,但现在逐渐被 C语言代替。
( 5) C语言, 1974年,介于低级语言与高级语言之间。
4、第四代计算机语言 ——非过程化语言
过程化高级语言:
必须指出每一步应如何进行的全过程,编程者指出
求解的每一个步骤,程序的执行流程受编程者的控制。
非过程化高级语言( 面向对象的语言 ),
编程者只要把问题描述成做什么,计算机接收后便可
自动求解。
面向对象的语言有:
BC,Borland C++
VC,Visual C++
VB,Visual Basic
Delphi,面向对象的 Pascal
PB,Power Builder
三、计算机语言的应用
1、机器语言,计算机可以直接执行。
2、汇编语言,占用存储空间少,执行速度快,
用于实时控制、编写函数库、操作系统,I/O
控制以及数据采集中。
3、过程化高级语言:
( 1) BASIC:初学者语言。
( 2) FORTRAN:用于复杂的科学计算。
( 3) COBOL:商业上的通用数据处理语言。
( 4) PASCAL:结构化程序设计的教学语言。
( 5) C:描述能力强,用于结构化教学,由于可
对硬件直接操作,常可用于系统软件的编写。
( 6) Prolog与 Lisp:人工智能,如专家系统中。
( 7) FoxBase,Foxpro:数据库管理软件,用于人事、
图书信息、财务管理中。
4、非过程化高级语言:
( 1) VC:
( 2) Delphi:
( 3) PB:
( 4) Oracle:
( 5) Java:
一、算法定义
定义 1:为了利用计算机解决某一类具体问题,
而人为设计的一系列过程和步骤,称为 算法,
简单说就是求解问题的方法。
求:
( 1) 1+ 2+ 3+ … + N=?
( 2) 1× 2× 3× …N=?
6.2 算法与流程图
二、算法应具有的特征:
( 1) 有穷性,算法所描述的过程必须在有限的时间、
有限的步骤内完成。不可出现“死循环”。
( 2) 确定性,算法确定的过程的每一步必须是精确
定义的、无二义的。
( 3) 切入点,算法所确定的过程中,要有一个初始
点,可以指定必要的初始值。
( 4) 后继唯一性,算法确定的每一步只能有一个
后继动作。
( 5) 能行性,算法的结果应该是有效的和可预期的。
算法的另一种定义,算法是
精确定义的一系列规则,这
些规则指定了一系列操作顺
序,以便在有限的步骤内产
生了所求问题的答案。
例,求 1+2+3+…+1000=?
S1:令 N=1,S=0;
S2,S=S+N;
S3,N=N+1;
S4:如果 N≤ 100,返回 S2;
S5:输出 S的值。算法终止。
begin
N=1
S=0
S=S+N
N=N+1
N≤100?
输出 S
end
yes
No
三、算法的表示 ——流程图
1、最早形式的流程图
2,N-S流程图
S1:令 N=1,S=0;
S2,S=S+N;
S3,N=N+1;
S4:如果 N≤ 100,返回 S2;
S5:输出 S的值。算法终止。
输出 S
开始
如果 N≤100
结束
N=N+1
S=S+N
N=1,S=0
课堂练习,写出求解一元二次方程:
的算法。并画出两种形式的流程图。
02 ??? cbxax
本章作业:
P106,1,2,6