计算机导论
文斌 田原 制作
第 4章 高级语言软件开发能
力培养
本章学习目标
? 高级语言的分类、特点和选择
? 常用编程语言的特点
? Turbo C的基本结构和语句
? 面向对象的编程方法
? 高级语言编程技术与编程风格
本章内容安排
4.1 计算机程序和高级语言
4.2 常用编程语言简介
4.3 面向对象编程语言简介
4.4 编程的风格与原理
4.5 小结
4.6 习题
退出
4.1 计算机程序和高级语言
4.1.1 程序设计语言的特点
4.1.2 程序设计语言的选择
退出
基础知识
人们在相互交谈时使用的是相互理解的语
言,如汉语、英语、俄语等,它们统称为自然
语言。人们用以同计算机“交谈”的语言,称
之计算机语言。
计算机每做的一次动作,一个步骤,都是按
照已经用计算机语言编好的程序来执行的,程序
是计算机要执行的有序指令的集合,而程序全部
都是用我们所掌握的语言来编写的。所以人们要
控制计算机一定要通过计算机语言向计算机发出
命令。
计算机所能识别的语言只有机器语言。
计算机语言
机器语言 (由 0和 1构成的代码 )
汇编语言 (英文缩写的助记符 )
高级语言
直
接
对
硬
件
操
作
1、采用比较接近人们习惯的自然语言
2、具有很大的通用性(即不受具体机器指令的约束)
3,面向算法编写程序
高级语言按转换方式可将它们
分为两类,
( 1)解释类:应用程序源代码一边由相应语言的
解释器“翻译”成目标代码,一边执行。
效率比较低,而且不能生成可独立执行的可执行
文件,应用程序不能脱离其解释器,但这种方式比较
灵活,可以动态地调整、修改应用程序。
( 2)编译类:编译是指在应用源程序执行之前,
就将程序源代码“翻译”成目标代码,因此其目标程
序可以脱离其语言环境独立执行。
现在大多数的编程语言都是编译型的。
4.1.1 程序设计语言的特点
( 1)名字说明
预先说明程序中使用的对象的名字,使编译程序
能检查程序中出现的名字的合法性,从而能帮助
程序员发现和改正程序中的错误。
( 2)类型说明
通过类型说明用户定义了对象的类型,从而确定
了该对象的使用方式。编译程序能够发现程序中
对某个特定类型的对象使用不当的错误,因此有
助于减少程序错误。
( 3)初始化
为减少发生错误的可能性,应该强迫程序员对程
序中说明的所有变量初始化。
4.1.1 程序设计语言的特点
( 4)程序对象的局限性
程序设计的一般原理是,程序对象的名字应该在
靠近使用它们的地方引入,并且应该只有程序中
真正需要它们的那些部分才能访问它们。即局部
化和信息隐蔽原理。
( 5)程序模块
模块有一系列优点:第一,可以构造抽象数据类
型,用户可以对这种数据进行操作,而并不需要
知道它们的具体表示方法;第二,可以把有关的
操作归并为一组,并且以一种受控制的方式共享
变量;第三,这样的模块是独立编译的方便单元。
( 6)循环控制结构
4.1.1 程序设计语言的特点
( 7)分支控制结构
( 8)异常处理
提供了相应的机制,从而不必为异常处理过分增
加程序长度,并且可以把出现异常的信息从一个
程序单元方便地传送到另一个单元。
( 9)独立编译
独立编译意味着能分别编译各个程序单元,然后
再把它们集成为一个完整的程序。如果没有独立
编译的机制,就不是适合软件工程需要的好语言。
4.1.2 程序设计语言的选择
( 2)可以使用的编译程序
运行目标系统的环境中可以提供的编译程序往往限制了
可以选用的语言的范围。
( 3)可以得到的软件工具
如果某种语言有支持程序开发的软件工具可以利用,则
目标系统的实现和验证都变得比较容易。
( 1)系统用户的要求
如果所开发的系统由用户负责维护,用户通常要求
用他们熟悉的语言书写程序。
( 4)工程规模
4.1.2 程序设计语言的选择
( 6)软件可移植性要求
如果目标系统将在几台不同的计算机上运行,或者预期
的使用寿命很长,那么选择一种标准化程度高、程序可移植
性好的语言就是很重要的。
( 7)软件的应用领域
选择语言时应该充分考虑目标系统的应用范围。
( 5)程序员的知识
完全掌握一种新语言需要实践。
4.2 常用编程语言简介
4.2.2 FORTRAN
4.2.3 COBOL
4.2.4 PASCAL
4.2.1 BASIC
4.2.5 C
4.2.6 Turbo C的基本结构
BASIC是一种易学易用的高级语言, 它是 Beginner's
All-Purpose Symbolic Instruction Code的缩写, 其含义是, 初
学者通用符号指令编码, 。 它是从 FORTRAN语言简化而来
的, 最初是美国 Daltmouth学院为便于教学而开发的会话语
言 。 它自 1965年诞生以来, 其应用己远远超出教学范围,
并于 1977年开始了标准化工作 。
BASIC语言的特点是简单易学, 基本 BASIC只有 17种语
句, 语法结构简单, 结构分明, 容易掌握;具有人机会话
功能, 便于程序的修改与调试, 非常适合初学者学习运用 。
BASIC的主要版本有:标准 BASIC、高级 BASIC、结构
化 BASIC(如 QBASIC,True BASIC,Turbo BASIC)、
CAREALIZER,GFA BASIC,POWER BASIC,以及在
Windows环境下运行的 Visual BASIC。
FORTRAN是 1954年问世, 于 1957年由 IBM公司正
式推出, 是最古老的高级程序语言, FORTRAN不便于进行
结构化程序的设计和编写 。
FORTRAN是一种主要用于科学计算方面的高级语
言 。 它是第一种被广泛使用的计算机高级语言, 并且至今
仍富有强大的生命力 。 FORTRAN是英文 Formula Translator
的缩写, 其含义是, 公式翻译,, 允许使用数学表达式形
式的语句来编写程序 。
程序分块结构是 FORTRAN的基本特点, 该语言书写紧
凑, 灵活方便, 结构清晰, 自诞生以来至今不衰, 先后经
历了 FORTRAN II,FORTRAN IV,FORTRAN 77的发展过
程, 现又发展了 FORTRAN结构程序设计语言 。
COBOL 是 英 文 Common Business Oriented
Language的缩写, 其意为, 面向商业的通用语言, 。
第一个 COBOL文本于 1960年推出, 其后又修改和扩
充了十几次, 并逐步标准化 。
COBOL语言的特点是按层次结构来描述数据,
具有完全适合现实事务处理的数据结构, 具有更接
近英语自然语言的程序设计风格, 有较强的易读性,
是世界上标准化最早的语言, 通用性强 。 由于
COBOL的这些特点, 使其成为数据处理方面应用最
为广泛的语言 。
然而, 用 COBOL编写的程序不够精练, 程序文
本的格式规定, 内容等都比较庞大, 不便记忆 。
PASCAL语言是系统地体现结构程序设计思想的第
一种语言, 既适用于数值计算, 又适用于数据处理 。
PASCAL语言的特点是结构清晰, 便于验证程序的正确性,
简洁, 精致;控制结构和数据类型都十分丰富, 表达力强,
实现效率高, 容易移植 。
PASCAL的成功在于它的以下特色,
( 1) PASCAL具有丰富的数据类型, 有着像枚举, 子界,
数组, 记录, 集合, 文件, 指针等众多的用户自定义数据
类型, 能够用来描述复杂的数据对象, 十分便于书写系统
程序和应用程序 。
( 2) PASCAL提供的语言设施体现了结构程序设计的
原则, 有着简明通用的语句, 基本结构少, 但框架优美,
功能很强;算法和数据结构采用分层构造, 可自然地应用
自顶向下的程序设计技术;程序可读性好, 编译简单, 目
标代码效率较高 。
1,C 语言的产生与发展
C 语言是 1972年由美国的 Dennis Ritchie设计发明的,
并首次在 UNIX操作系统的 DEC PDP-11计算机上使用。它
由早期的编程语言 BCPL( Basic Combined Programming
Language) 发展演变而来。在 1970年,AT&T贝尔实验室的
Ken Thompson根据 BCPL语言设计出较先进的并取名为 B的
语言,最后导了 C 语言的问世。
2,C 语言的特点
( 1) C是中级语言
( 2) C是结构式语言
( 3) C语言功能齐全
( 4) C语言适用范围大
Turbo C 概述
Turbo C 是美国 Borland 公司的产品,Turbo C 2.0 则是
该公司 1989年出版的。 Turbo C 2.0在原来集成开发环境的基
础上增加了查错功能,并可以在 Tiny模式下直接生成,COM
(数据、代码、堆栈处在同一 64K 内存中 ) 文件。
Turbo C 2.0可运行于 IBM-PC系列微机,包括 XT,AT
及 IBM 兼容机。 此时要求 DOS 2.0或更高版本支持,并至少
需要 448K的 RAM,可在任何彩、单色 80列监视器上运行。
Turbo C 2.0有六张低密软盘 (或两张高密软盘 )。
4.2.6 Turbo C的基本结构
1、程序的一般组成部分
2、关键字
3、标识符
4、格式化输入输出函数
5、控制流程语句
1,Turbo C程序的一般组成部分
Turbo C 2.0 象其它语言一样按其规定的格式和提供的语句由用户编写应用程序 。
请看下面一段 Turbo C源程序 。
/*Example program of Turbo C*/
#include <stdio.h> /*包含文件说明 */
void lgc(void); /*子函数说明 */
char answer; /*定义全程变量 */
int main() /*主函数定义 */
{ char a; /*定义局部变量 */
clrscr(); gotoxy(12,3);
puts("Welcome to use Turbo C2.0!");
gotoxy(15,13);
printf("<Esc>--Exit");
gotoxy(15,15);
printf("<CR>--Continue");
while(1)
{
a=getch();
if(a==27)
break;
if(a==13)
{
lgc();
if(answer=='y'||answer=='Y')
{
gotoxy(23,14);
puts("Please Write to the Company");
getch();
break;
}
}
}
return(0);
}
void lgc(void)
{
clrscr();
gotoxy(12,8);
printf("The Excellent Selection!");
gotoxy(21,12);
printf("Do you have any question?(Y/N)");
answer=getche();
}
可以看出, Turbo C源程序主要有以下几个特点,
( 1) 程序一般用小写字母书写 ;
( 2),大多数语句结尾必须要用 ";"作为终止符, 否则 Turbo C 不认为
该语句结束 ;
( 3) 每个程序必须有一个而且只能有一个称作主函数的 main()函数 ;
( 4) 每个程序体 (主函数和每个子函数, 如上例中的 main()函数和
sub()函数 )必须用一对花括号 "{"和 "}"括起来 ;
( 5) 一个较完整的程序大致包括,包含文件 (一组 #include<*.h>语句 )、
用户函数说明部分, 全程变量定义, 主函数和若干子函数组成 。 在主
函数和子函数中又包括局部变量定义, 若干个 Turbo C库函数, 控制
流程语句, 用户函数的调用语句等 ;
( 6) 注释部分包含在, /*”和, */”之间, 在编译时它被 Turbo C编译
器忽略 。
说明,
1,象其它一些语言一样, Turbo C的变量在使用之前必须先定义其数
据类型, 未经定义的变量不能使用 。 定义变量类型应在可执行语句前
面, 如上例 main()函数中的第一条语句就是变量定义语句, 它必须放
在第一个执行语句 clrscr()前面 。
2,在 Turbo C中, 大, 小写字母是有区别的, 相同字母的大, 小写代
表不同的变量 。
3,Turbo C程序的书写格式非常灵活, 没有严格限制 。
可以得出 Turbo C源程序的一般
形式为,,
包含文件
子函数类型说明
全程变量定义
main( )
{
局部变量定义
<程序体 >
}
sub1()
{
局部变量定义
<程序体 >
}
sub2( )
{
局部变量定义
<程序体 >
}
,subN( )
{
局部变量定义
<程序体 >
}
其中 sub1(),...,subN()代表用
户定义的子函数,程序体指
Turbo C 2.0提供的任何库函数调
用语句、控制流程语句或其它用
子函数调用语句等。
2,关键字
所谓关键字就是已被 Turbo C2.0本身使用, 不能作其它用途使用的字 。
例如关键字不能用作变量名, 函数名等 。
Turbo C2.0有以下关键字,
Turbo C2.0扩展的共 11个
asm _cs _ds _es _ss cdecl
far near huge interrupt pascal
由 ANSI标准定义的共 32个
auto double int struct break else
long switch case enum register typedef
char extern return union const float
short unsigned continue for signed void
default goto sizeof volatile do if
while static
3,标识符
所谓标识符是指常量, 变量, 语句标号以及用户自定义函数的名称 。
Turbo C 2.0标识符的定义十分灵活 。 作为标识符必须满足以下规则,
1,所有标识符必须由一个字母 (a~z,A~Z)或下划线 (_)开头 ;
2,标识符的其它部分可以用字母, 下划线或数字 (0~9)组成 ;
3,大小写字母表示不同意义, 即代表不同的标识符 ;
4,标识符只有前 32个字符有效 ;
5,标识符不能使用 Turbo C2.0的关键字 。
下面举出几个正确和不正确的标识符,
正确 不正确
smart 5smart
decision bomb?
key_board key.board
FLOAT float
4,格式化输入输出函数
Turbo C2.0 标准库提供了两个控制台格式化输入,
输出函数 printf( ) 和 scanf(),这两个函数可以在标准
输入输出设备上以各种不同的格式读写数据 。 printf()
函数用来向标准输出设备 (屏幕 )写数据 ; scanf() 函数
用来从标准输入设备 (键盘 )上读数据 。
printf()函数是格式化输出函数, 一般用于向标
准输出设备按规定格式输出信息 。 在编写程序时经
常会用到此函数 。 printf()函数的调用格式为,
printf(“<格式化字符串 >”,<参量表 >);
scanf()函数是格式化输入函数, 它从标准输入
设备 (键盘 ) 读取输入的信息 。 其调用格式为,
scanf("<格式化字符串 >",<地址表 >);
5,控制流程语句
主要有,条件语句, 循环语句和开关语句 。
( 一 ) 条件语句
象其它语言一样 Turbo C2.0也提供条件语句 。 在
Turbo C2.0中条件语句的一般形式为,
if(表达式 )
语句 1;
else
语句 2;
注 意,
1,条件执行语句中 "else 语句 2;"部分是选择项, 可以缺省, 此时
条件语句变成,
if(表达式 ) 语句 1;
表示若表达式的值为非 0则执行语句 1, 否则跳过语句 1继续执行 。
2,如果语句 1或语句 2有多于一条语句要执行时, 必须使用 "{"和 "}"
把这些语句包括在其中, 此时条件语句形式为,
if(表达式 )
{
语句体 1;
}
else
{
语句体 2;
}
注 意,
3,条件语句可以嵌套, 这种情况经常碰到, 但条件嵌套语句容易
出错, 其原因主要是不知道哪个 if对应哪个 else。
例如,
if(x>20||x<-10)
if(y<=100&&y>x)
printf("Good");
else
printf("Bad");
对于上述情况, Turbo C2.0规定, else语句与最近的一个 if语句匹配,
上例中的 else与 if(y<=100&&y>x)相匹配 。 为了使 else与 if(x>20||x<-10)
相匹配, 必须用花括号 。 如下所示,
if(x>20||x<-10)
{
if(y<=100&&y>x)
printf("Good");
}
else
printf("Bad");
注 意,
4,可用阶梯式 if-else-if结构 。
阶梯式结构的一般形式为,
if(表达式 1)
语句 1;
else if(表达式 2)
语句 2;
else if(表达式 3)
语句 3;
,
,
else
语句 n;
如果每一个条件中有多于一条语句要执行时, 必须使用 "{"和 "}"把这
些语句包括在其中 。
循环语句
Turbo C2.0提供三种基本的循环语句, for语
句,while语句和 do-while语句。
1 for循环
for循环是开界的, 它是计数循环语句 。 它的一
般形式为,
for(<初始化 >; <条件表过式 >; <增量 >)
语句 ;
例如,
for(i=1; i<=10; i++)
语句 ;
for循环可以有多层嵌套 。
例 5,
main()
{
int i,j,k;
printf("i j k\n");
for (i=0; i<2; i++)
for(j=0; j<2; j++)
for(k=0; k<2; k++)
printf(%d %d %d\n",i,j,k);
}
输出结果为,
i j k
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
while循环 的一般形式为,
while (条件 )
语句 ;
例,
#include<stdio.h>
main()
{
char c;
c='\0'; /*初始化 c*/
while(c!='\X0D') /*回车结束循环 */
c=getche(); /*带回显的从键盘接收字符 */
}
Do-while循环 的一般格式为,
do
语句 ;
while (条件 );
这个循环与 while循环的不同在于, 它先执行循环中的
语句, 然后再判断条件是否为真, 如果为真则继续
循环 ; 如果为假, 则终止循环 。 因此, do-while循环
至少要执行一次循环语句 。
同样当有许多语句参加循环时, 要用 "{"和 "}"把它们
括起来 。
开关语句 格式为,
switch(变量 )
{
case 常量 1,
语句 1或空 ;
case 常量 2,
语句 2或空 ;
……
case 常量 n;
语句 n或空 ;
default,
语句 n+1或空 ;
}
例,
main()
{
int test;
for(test=0; test<=10; test++)
{
switch(test) /*变量为整型数的开关语句 */
{
case 1,
printf("%d\n",test);
break; /*退出开关语句 */
case 2,
printf("%d\n",test);
break;
case 3,
printf("%d\n",test);
break;
default,
puts("Error");
break;
}
}
}
goto语句 是一种无条件转移语句, 与 BASIC中
的 goto语句相似 。 goto 语句的使用格式为,
goto 标号 ;
其中标号是 Turbo C2.0中一个有效的标识符,这个
标识符加上一个 ":" 一起出现在函数内某处,执行
goto语句后,程序将跳转到该标号处并执行其后的
语句。另外标号必须与 goto语句同处于一个函数中,
但可以不在一个循环层中。通常 goto语句与 if条件
语句连用,当满足某一条件时,程序跳到标号处
运行。
goto语句通常不用,主要因为它将使程序层次不清,
且不易读,但在多层嵌套退出时,用 goto语句则比
较合理。因此,在现代结构化程序设计方法中,对
goto 语句采取的策略是,有限制地使用 goto语句 。
4.3 面向对象编程语言简介
4.3.1 VISUAL BASIC
4.3.2 VISUAL C++
4.3.3 DELPHI
什么是对象
编程实例
什么是对象
一个对象是一个数据类型。对象就象记录一样,
是一种数据结构。
对象可被理解为可视化部件如按钮、标签、表
等。
对象最突出的特征有三个:封装性、继承性、
多态性。
把数据和代码组合在同一个结构中,这就是对
象的封装特性。
继承性是指把一个新的对象定义成为已存在对
象的后代;新对象继承了旧类的一切东西。
多态性是在对象体系中把设想和实现分开的手
段。
Visual Basic 是 Microsoft 公司提供的
Windows环境下的面向对象的可视化开发工具, 它
提供了开发 Windows应用程序迅速, 简捷的方法 。
不论是 Windows应用程序的专业开发人员还是初学
者, Visual Basic 都提供了整套工具, 以方便开发应
用程序 。
何谓 Visual Basic?,Visual”指的是开发图形用户界
面 (GUI) 的方法。不需编写大量代码去描述界面元
素的外观和位置,而只要把预先建立的对象添加到
屏幕上的一点即可。如果已使用过诸如 Paint 之类的
绘图程序,则实际上已掌握了创建用户界面的必要
技巧。,Basic”指的是 BASIC 语言,一种在计算技
术发展史上应用得最为广泛的语言。 Visual Basic 在
原有 BASIC 语言的基础上进一步发展,至今包含了
数百条语句、函数及关键词,其中很多和 Windows
GUI 有直接关系。
Visual C++最主要技术特点是:可视化编程和支
持面向对象的编程技术, Visual C++提供了一系列可
视化编程的工具 。 如 APP Wizard 和 Class Wizard 等,
它们使得 Windows编程更加直观, 它的面向对象的
编程技术包装了 Windows内在的复杂的运行机制,
使 Windows编程更为简单易学 。
Visual C++就象一个奇妙的魔盒, 在其美丽的外表
下包装着很大的, 魔力,, 掌握它, 你将进入
Windows编程的自由王国 。
Visual C++最底硬件配置为,486CPU,100M硬盘
空间, 16M内存 。
软件为,32位操作系统, Windows95/98及 NT或更高
版本 。
Delphi的语言基础是 Pascal,但是它与传统的
Pascal语言有着根本性的差别 。 Delphi编程环境自动
为 Delphi应用程序生成应用程序框架, 这一框架正
是应用程序的, 骨架, 。 在骨架上即使没有附着任
何东西, 仍可以严格地按照设计运行 。 编程人员所
要做的工作只是在, 骨架, 中加入程序代码, 以实
现自己的目的 。 可以说应用程序框架通过提供所有
应用程序共有的东西, 为用户应用程序的开发打下
了良好的基础 。
Delphi已经做好了一切应用程序的基础工作 ——程
序框架本身就是一个已经完成的可运行的应用程序,
只是不处理任何事情 。 编程人员所需要做的, 只是
在程序中加入完成功能所需的代码而已 。
可以这么说, Delphi就是 Visual Pascal。
打开一个新的空窗体, 加入
一个 memo部件和四个按钮, 并
排列整齐 。 改变按钮部件的
Name属性, 分别命名为 Cut,
Copy,Paste,Clear。 您会发现,
当 Name 属 性 发 生 改 变 时,
Caption属性将发生相应的变化 。
在 Caption属性前加标, &”号设
立加速键, 即称为图 4.3.1的窗
体 。
将 memo部件的 ScrollBars
属性设为 ScVertical,以便加上
滚行条。将 WordWrap属性设置
为 True,这样当用户输入文本
到达 Memo部件的右边缘时会自
动回行。将 Line属性第一行的
Memo1文本删除,使得 memo部
件在初始显示时为空的。
4.4 编程语言的风格与原理
4.4.2 高级语言的程序设计原理
4.4.3 程序设计方法论
4.4.1 写程序的风格
写程序的风格
1,程序内部的文档
所谓程序内部的文档包括恰当的标识符、适当的注解
和程序的视觉组织等等。
2.数据说明
数据说明的次序应该标准化 。当多个变量名在一个语
句中说明时,应该按字母顺序排列这些变量。设计时
使用了一个复杂的数据结构,则应该用注解说明用程
序设计语言实现这个数据结构的方法和特点。
3.语句构造
构造语句时应该遵循的原则是,每个语句都应该简单
而直接 。
写程序的风格
4,输入/输出
在设计和编写程序时应该考虑下述有关输入/输出风格的规则,
·对所有输入数据都进行检验;
·检查输入项重要组合的合法性;
·保持输入格式简单;
·使用数据结束标记, 不要要求用户指定数据的数目;
·明确提示交互式输入的请求, 详细说明可用的选择或边界数值;
·当程序设计语言对格式有严格要求时, 应保持输入格式一致;
·设计良好的输出报表;
·给所有输出数据加标志 。
写程序的风格
5,效率
效率主要指处理机时间和存储器空间两个方面 。 可
从三个方面进一步讨论效率问题,
(1)程序运行时间
(2)存储器效率
(3)输入/输出的效率
高级语言的程序设计原理
完成给定任务的程序设计大致包括下列步骤,
·确定算法与数据结构;
·用流程图表示编制程序的思路;
·用高级语言编制源程序 。
所谓算法, 是指精确定义的一系列规则, 这些规则指定
了一系列操作顺序, 以便在有限的步骤内产生出所求问
题的解答 。 它们都必须满足下列要求 。
( 1) 确定性
( 2) 能行性
( 3) 输入:一个算法有零个以上的输入 。
( 4) 输出:一个算法产生一个或多个输出 。
( 5)有穷性,
高级语言的程序设计原理
§ 程序设计
循环程序, 子程序和分支程序是程序设计的最基本方法 。
人们常把程序定义为:程序 =算法 +数据结构
结构程序的编写原则是,
( 1) 把整个任务看成是一个大系统 。
( 2) 对任务分层, 即把一个大系统分成几个单元, 再把
这些单元各看成一个子系统, 再分层, 直至被细化到最小单
元 。
( 3) 每个单元完成相对独立的功能, 可独立编译 。
( 4) 单元与单元之间的接口信息要明确, 要规定交换信
息流的性质, 数量, 规则和方向等各种约定 。
程序设计方法论
主要有两种程序设计方法论, 分别称为自顶向下的
程序开发方法和自底向上的程序开发方法 。
按照软件工程的方法论, 编码之前应该经过总体设
计和详细设计两个阶段的充分设计, 编码只不过是把
设计结果翻译成程序代码 。 因此, 不论采用上述哪种
开发方法对程序的结构和可读性都不会有多大影响,
在这种情况下, 两种开发方法的差别主要表现为测试
策略的不同 。
本章小结 (1)
计算机程序是有序指令的集合,而程序是
用计算机语言编写的。汇编语言与机器指令一
一对应,仍是一种面向机器的语言。高级语言
独立于具体机器,它是面向算法的,同时比较
接近自然语言,因而得到了广泛的应用。
软件开发人员应关注程序设计语言的特点
及其对软件质量的影响,从而在系统开发时,
选择适合的程序设计语言,以提高软件开发效
率和质量。程序设计语言的特点主要集中在以
下方面:名字说明、类型说明、变量初始化、
程序对象的局限性、程序模块的使用、循环与
分支结构、异常处理、独立编译机制。
本章小结 (2)
常用编程语言中简要介绍了 BASIC,FORTRAN、
PASCAL语言,并以 TURBO C为例重点讲解 C语
言的特点、基本结构与编程方法。
面向对象的程序设计( OOP)是传统结构化程
序设计语言的自然延伸,对象的可重用性大大
地节省了开发时间,切实地提高了软件的开发
效率。一个对象是一个数据类型,在具体的
OOP开发环境中,对象可被理解为可视化部件
如按钮、标签、表等。对象最突出的特征有三
个:封装性、继承性、多态性。比较流行的
OOP开发工具有 VISUAL BASIC,VISUAL C++、
DELPHI等,并以 DELPHI为例说明了 OOP开发
工具的开发步骤、方法。
本章小结 (3)
编程的风格就是使源程序逻辑简明清晰, 易读易懂,
为此需在以下方面遵循相应的规则,1,程序内部的文档;
2,数据说明; 3,语句构造; 4,输入 /输出; 5,效率 。
算法是解题的方法和步骤, 具有确定性, 能行性, 有
穷性及零个以上的输入和一个或多个输出 。 为使按算法编
制程序时一目了然, 需用流程图来反映算法 。 流程图采用
约定的圆框符号表示各种基本操作或运算, 是程序员间交
流算法的工具 。
循环程序, 子程序和分支程序是程序设计的最基本方法 。
结构化程序设计是一种比较成功的程序设计方法 。 任何一
个算法都可由顺序, 分支, 循环这三种基本结构组成 。
程序设计方法论,一般分为自顶向下的程序开发方法
和自底向上的程序开发方法两种。
文斌 田原 制作
第 4章 高级语言软件开发能
力培养
本章学习目标
? 高级语言的分类、特点和选择
? 常用编程语言的特点
? Turbo C的基本结构和语句
? 面向对象的编程方法
? 高级语言编程技术与编程风格
本章内容安排
4.1 计算机程序和高级语言
4.2 常用编程语言简介
4.3 面向对象编程语言简介
4.4 编程的风格与原理
4.5 小结
4.6 习题
退出
4.1 计算机程序和高级语言
4.1.1 程序设计语言的特点
4.1.2 程序设计语言的选择
退出
基础知识
人们在相互交谈时使用的是相互理解的语
言,如汉语、英语、俄语等,它们统称为自然
语言。人们用以同计算机“交谈”的语言,称
之计算机语言。
计算机每做的一次动作,一个步骤,都是按
照已经用计算机语言编好的程序来执行的,程序
是计算机要执行的有序指令的集合,而程序全部
都是用我们所掌握的语言来编写的。所以人们要
控制计算机一定要通过计算机语言向计算机发出
命令。
计算机所能识别的语言只有机器语言。
计算机语言
机器语言 (由 0和 1构成的代码 )
汇编语言 (英文缩写的助记符 )
高级语言
直
接
对
硬
件
操
作
1、采用比较接近人们习惯的自然语言
2、具有很大的通用性(即不受具体机器指令的约束)
3,面向算法编写程序
高级语言按转换方式可将它们
分为两类,
( 1)解释类:应用程序源代码一边由相应语言的
解释器“翻译”成目标代码,一边执行。
效率比较低,而且不能生成可独立执行的可执行
文件,应用程序不能脱离其解释器,但这种方式比较
灵活,可以动态地调整、修改应用程序。
( 2)编译类:编译是指在应用源程序执行之前,
就将程序源代码“翻译”成目标代码,因此其目标程
序可以脱离其语言环境独立执行。
现在大多数的编程语言都是编译型的。
4.1.1 程序设计语言的特点
( 1)名字说明
预先说明程序中使用的对象的名字,使编译程序
能检查程序中出现的名字的合法性,从而能帮助
程序员发现和改正程序中的错误。
( 2)类型说明
通过类型说明用户定义了对象的类型,从而确定
了该对象的使用方式。编译程序能够发现程序中
对某个特定类型的对象使用不当的错误,因此有
助于减少程序错误。
( 3)初始化
为减少发生错误的可能性,应该强迫程序员对程
序中说明的所有变量初始化。
4.1.1 程序设计语言的特点
( 4)程序对象的局限性
程序设计的一般原理是,程序对象的名字应该在
靠近使用它们的地方引入,并且应该只有程序中
真正需要它们的那些部分才能访问它们。即局部
化和信息隐蔽原理。
( 5)程序模块
模块有一系列优点:第一,可以构造抽象数据类
型,用户可以对这种数据进行操作,而并不需要
知道它们的具体表示方法;第二,可以把有关的
操作归并为一组,并且以一种受控制的方式共享
变量;第三,这样的模块是独立编译的方便单元。
( 6)循环控制结构
4.1.1 程序设计语言的特点
( 7)分支控制结构
( 8)异常处理
提供了相应的机制,从而不必为异常处理过分增
加程序长度,并且可以把出现异常的信息从一个
程序单元方便地传送到另一个单元。
( 9)独立编译
独立编译意味着能分别编译各个程序单元,然后
再把它们集成为一个完整的程序。如果没有独立
编译的机制,就不是适合软件工程需要的好语言。
4.1.2 程序设计语言的选择
( 2)可以使用的编译程序
运行目标系统的环境中可以提供的编译程序往往限制了
可以选用的语言的范围。
( 3)可以得到的软件工具
如果某种语言有支持程序开发的软件工具可以利用,则
目标系统的实现和验证都变得比较容易。
( 1)系统用户的要求
如果所开发的系统由用户负责维护,用户通常要求
用他们熟悉的语言书写程序。
( 4)工程规模
4.1.2 程序设计语言的选择
( 6)软件可移植性要求
如果目标系统将在几台不同的计算机上运行,或者预期
的使用寿命很长,那么选择一种标准化程度高、程序可移植
性好的语言就是很重要的。
( 7)软件的应用领域
选择语言时应该充分考虑目标系统的应用范围。
( 5)程序员的知识
完全掌握一种新语言需要实践。
4.2 常用编程语言简介
4.2.2 FORTRAN
4.2.3 COBOL
4.2.4 PASCAL
4.2.1 BASIC
4.2.5 C
4.2.6 Turbo C的基本结构
BASIC是一种易学易用的高级语言, 它是 Beginner's
All-Purpose Symbolic Instruction Code的缩写, 其含义是, 初
学者通用符号指令编码, 。 它是从 FORTRAN语言简化而来
的, 最初是美国 Daltmouth学院为便于教学而开发的会话语
言 。 它自 1965年诞生以来, 其应用己远远超出教学范围,
并于 1977年开始了标准化工作 。
BASIC语言的特点是简单易学, 基本 BASIC只有 17种语
句, 语法结构简单, 结构分明, 容易掌握;具有人机会话
功能, 便于程序的修改与调试, 非常适合初学者学习运用 。
BASIC的主要版本有:标准 BASIC、高级 BASIC、结构
化 BASIC(如 QBASIC,True BASIC,Turbo BASIC)、
CAREALIZER,GFA BASIC,POWER BASIC,以及在
Windows环境下运行的 Visual BASIC。
FORTRAN是 1954年问世, 于 1957年由 IBM公司正
式推出, 是最古老的高级程序语言, FORTRAN不便于进行
结构化程序的设计和编写 。
FORTRAN是一种主要用于科学计算方面的高级语
言 。 它是第一种被广泛使用的计算机高级语言, 并且至今
仍富有强大的生命力 。 FORTRAN是英文 Formula Translator
的缩写, 其含义是, 公式翻译,, 允许使用数学表达式形
式的语句来编写程序 。
程序分块结构是 FORTRAN的基本特点, 该语言书写紧
凑, 灵活方便, 结构清晰, 自诞生以来至今不衰, 先后经
历了 FORTRAN II,FORTRAN IV,FORTRAN 77的发展过
程, 现又发展了 FORTRAN结构程序设计语言 。
COBOL 是 英 文 Common Business Oriented
Language的缩写, 其意为, 面向商业的通用语言, 。
第一个 COBOL文本于 1960年推出, 其后又修改和扩
充了十几次, 并逐步标准化 。
COBOL语言的特点是按层次结构来描述数据,
具有完全适合现实事务处理的数据结构, 具有更接
近英语自然语言的程序设计风格, 有较强的易读性,
是世界上标准化最早的语言, 通用性强 。 由于
COBOL的这些特点, 使其成为数据处理方面应用最
为广泛的语言 。
然而, 用 COBOL编写的程序不够精练, 程序文
本的格式规定, 内容等都比较庞大, 不便记忆 。
PASCAL语言是系统地体现结构程序设计思想的第
一种语言, 既适用于数值计算, 又适用于数据处理 。
PASCAL语言的特点是结构清晰, 便于验证程序的正确性,
简洁, 精致;控制结构和数据类型都十分丰富, 表达力强,
实现效率高, 容易移植 。
PASCAL的成功在于它的以下特色,
( 1) PASCAL具有丰富的数据类型, 有着像枚举, 子界,
数组, 记录, 集合, 文件, 指针等众多的用户自定义数据
类型, 能够用来描述复杂的数据对象, 十分便于书写系统
程序和应用程序 。
( 2) PASCAL提供的语言设施体现了结构程序设计的
原则, 有着简明通用的语句, 基本结构少, 但框架优美,
功能很强;算法和数据结构采用分层构造, 可自然地应用
自顶向下的程序设计技术;程序可读性好, 编译简单, 目
标代码效率较高 。
1,C 语言的产生与发展
C 语言是 1972年由美国的 Dennis Ritchie设计发明的,
并首次在 UNIX操作系统的 DEC PDP-11计算机上使用。它
由早期的编程语言 BCPL( Basic Combined Programming
Language) 发展演变而来。在 1970年,AT&T贝尔实验室的
Ken Thompson根据 BCPL语言设计出较先进的并取名为 B的
语言,最后导了 C 语言的问世。
2,C 语言的特点
( 1) C是中级语言
( 2) C是结构式语言
( 3) C语言功能齐全
( 4) C语言适用范围大
Turbo C 概述
Turbo C 是美国 Borland 公司的产品,Turbo C 2.0 则是
该公司 1989年出版的。 Turbo C 2.0在原来集成开发环境的基
础上增加了查错功能,并可以在 Tiny模式下直接生成,COM
(数据、代码、堆栈处在同一 64K 内存中 ) 文件。
Turbo C 2.0可运行于 IBM-PC系列微机,包括 XT,AT
及 IBM 兼容机。 此时要求 DOS 2.0或更高版本支持,并至少
需要 448K的 RAM,可在任何彩、单色 80列监视器上运行。
Turbo C 2.0有六张低密软盘 (或两张高密软盘 )。
4.2.6 Turbo C的基本结构
1、程序的一般组成部分
2、关键字
3、标识符
4、格式化输入输出函数
5、控制流程语句
1,Turbo C程序的一般组成部分
Turbo C 2.0 象其它语言一样按其规定的格式和提供的语句由用户编写应用程序 。
请看下面一段 Turbo C源程序 。
/*Example program of Turbo C*/
#include <stdio.h> /*包含文件说明 */
void lgc(void); /*子函数说明 */
char answer; /*定义全程变量 */
int main() /*主函数定义 */
{ char a; /*定义局部变量 */
clrscr(); gotoxy(12,3);
puts("Welcome to use Turbo C2.0!");
gotoxy(15,13);
printf("<Esc>--Exit");
gotoxy(15,15);
printf("<CR>--Continue");
while(1)
{
a=getch();
if(a==27)
break;
if(a==13)
{
lgc();
if(answer=='y'||answer=='Y')
{
gotoxy(23,14);
puts("Please Write to the Company");
getch();
break;
}
}
}
return(0);
}
void lgc(void)
{
clrscr();
gotoxy(12,8);
printf("The Excellent Selection!");
gotoxy(21,12);
printf("Do you have any question?(Y/N)");
answer=getche();
}
可以看出, Turbo C源程序主要有以下几个特点,
( 1) 程序一般用小写字母书写 ;
( 2),大多数语句结尾必须要用 ";"作为终止符, 否则 Turbo C 不认为
该语句结束 ;
( 3) 每个程序必须有一个而且只能有一个称作主函数的 main()函数 ;
( 4) 每个程序体 (主函数和每个子函数, 如上例中的 main()函数和
sub()函数 )必须用一对花括号 "{"和 "}"括起来 ;
( 5) 一个较完整的程序大致包括,包含文件 (一组 #include<*.h>语句 )、
用户函数说明部分, 全程变量定义, 主函数和若干子函数组成 。 在主
函数和子函数中又包括局部变量定义, 若干个 Turbo C库函数, 控制
流程语句, 用户函数的调用语句等 ;
( 6) 注释部分包含在, /*”和, */”之间, 在编译时它被 Turbo C编译
器忽略 。
说明,
1,象其它一些语言一样, Turbo C的变量在使用之前必须先定义其数
据类型, 未经定义的变量不能使用 。 定义变量类型应在可执行语句前
面, 如上例 main()函数中的第一条语句就是变量定义语句, 它必须放
在第一个执行语句 clrscr()前面 。
2,在 Turbo C中, 大, 小写字母是有区别的, 相同字母的大, 小写代
表不同的变量 。
3,Turbo C程序的书写格式非常灵活, 没有严格限制 。
可以得出 Turbo C源程序的一般
形式为,,
包含文件
子函数类型说明
全程变量定义
main( )
{
局部变量定义
<程序体 >
}
sub1()
{
局部变量定义
<程序体 >
}
sub2( )
{
局部变量定义
<程序体 >
}
,subN( )
{
局部变量定义
<程序体 >
}
其中 sub1(),...,subN()代表用
户定义的子函数,程序体指
Turbo C 2.0提供的任何库函数调
用语句、控制流程语句或其它用
子函数调用语句等。
2,关键字
所谓关键字就是已被 Turbo C2.0本身使用, 不能作其它用途使用的字 。
例如关键字不能用作变量名, 函数名等 。
Turbo C2.0有以下关键字,
Turbo C2.0扩展的共 11个
asm _cs _ds _es _ss cdecl
far near huge interrupt pascal
由 ANSI标准定义的共 32个
auto double int struct break else
long switch case enum register typedef
char extern return union const float
short unsigned continue for signed void
default goto sizeof volatile do if
while static
3,标识符
所谓标识符是指常量, 变量, 语句标号以及用户自定义函数的名称 。
Turbo C 2.0标识符的定义十分灵活 。 作为标识符必须满足以下规则,
1,所有标识符必须由一个字母 (a~z,A~Z)或下划线 (_)开头 ;
2,标识符的其它部分可以用字母, 下划线或数字 (0~9)组成 ;
3,大小写字母表示不同意义, 即代表不同的标识符 ;
4,标识符只有前 32个字符有效 ;
5,标识符不能使用 Turbo C2.0的关键字 。
下面举出几个正确和不正确的标识符,
正确 不正确
smart 5smart
decision bomb?
key_board key.board
FLOAT float
4,格式化输入输出函数
Turbo C2.0 标准库提供了两个控制台格式化输入,
输出函数 printf( ) 和 scanf(),这两个函数可以在标准
输入输出设备上以各种不同的格式读写数据 。 printf()
函数用来向标准输出设备 (屏幕 )写数据 ; scanf() 函数
用来从标准输入设备 (键盘 )上读数据 。
printf()函数是格式化输出函数, 一般用于向标
准输出设备按规定格式输出信息 。 在编写程序时经
常会用到此函数 。 printf()函数的调用格式为,
printf(“<格式化字符串 >”,<参量表 >);
scanf()函数是格式化输入函数, 它从标准输入
设备 (键盘 ) 读取输入的信息 。 其调用格式为,
scanf("<格式化字符串 >",<地址表 >);
5,控制流程语句
主要有,条件语句, 循环语句和开关语句 。
( 一 ) 条件语句
象其它语言一样 Turbo C2.0也提供条件语句 。 在
Turbo C2.0中条件语句的一般形式为,
if(表达式 )
语句 1;
else
语句 2;
注 意,
1,条件执行语句中 "else 语句 2;"部分是选择项, 可以缺省, 此时
条件语句变成,
if(表达式 ) 语句 1;
表示若表达式的值为非 0则执行语句 1, 否则跳过语句 1继续执行 。
2,如果语句 1或语句 2有多于一条语句要执行时, 必须使用 "{"和 "}"
把这些语句包括在其中, 此时条件语句形式为,
if(表达式 )
{
语句体 1;
}
else
{
语句体 2;
}
注 意,
3,条件语句可以嵌套, 这种情况经常碰到, 但条件嵌套语句容易
出错, 其原因主要是不知道哪个 if对应哪个 else。
例如,
if(x>20||x<-10)
if(y<=100&&y>x)
printf("Good");
else
printf("Bad");
对于上述情况, Turbo C2.0规定, else语句与最近的一个 if语句匹配,
上例中的 else与 if(y<=100&&y>x)相匹配 。 为了使 else与 if(x>20||x<-10)
相匹配, 必须用花括号 。 如下所示,
if(x>20||x<-10)
{
if(y<=100&&y>x)
printf("Good");
}
else
printf("Bad");
注 意,
4,可用阶梯式 if-else-if结构 。
阶梯式结构的一般形式为,
if(表达式 1)
语句 1;
else if(表达式 2)
语句 2;
else if(表达式 3)
语句 3;
,
,
else
语句 n;
如果每一个条件中有多于一条语句要执行时, 必须使用 "{"和 "}"把这
些语句包括在其中 。
循环语句
Turbo C2.0提供三种基本的循环语句, for语
句,while语句和 do-while语句。
1 for循环
for循环是开界的, 它是计数循环语句 。 它的一
般形式为,
for(<初始化 >; <条件表过式 >; <增量 >)
语句 ;
例如,
for(i=1; i<=10; i++)
语句 ;
for循环可以有多层嵌套 。
例 5,
main()
{
int i,j,k;
printf("i j k\n");
for (i=0; i<2; i++)
for(j=0; j<2; j++)
for(k=0; k<2; k++)
printf(%d %d %d\n",i,j,k);
}
输出结果为,
i j k
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
while循环 的一般形式为,
while (条件 )
语句 ;
例,
#include<stdio.h>
main()
{
char c;
c='\0'; /*初始化 c*/
while(c!='\X0D') /*回车结束循环 */
c=getche(); /*带回显的从键盘接收字符 */
}
Do-while循环 的一般格式为,
do
语句 ;
while (条件 );
这个循环与 while循环的不同在于, 它先执行循环中的
语句, 然后再判断条件是否为真, 如果为真则继续
循环 ; 如果为假, 则终止循环 。 因此, do-while循环
至少要执行一次循环语句 。
同样当有许多语句参加循环时, 要用 "{"和 "}"把它们
括起来 。
开关语句 格式为,
switch(变量 )
{
case 常量 1,
语句 1或空 ;
case 常量 2,
语句 2或空 ;
……
case 常量 n;
语句 n或空 ;
default,
语句 n+1或空 ;
}
例,
main()
{
int test;
for(test=0; test<=10; test++)
{
switch(test) /*变量为整型数的开关语句 */
{
case 1,
printf("%d\n",test);
break; /*退出开关语句 */
case 2,
printf("%d\n",test);
break;
case 3,
printf("%d\n",test);
break;
default,
puts("Error");
break;
}
}
}
goto语句 是一种无条件转移语句, 与 BASIC中
的 goto语句相似 。 goto 语句的使用格式为,
goto 标号 ;
其中标号是 Turbo C2.0中一个有效的标识符,这个
标识符加上一个 ":" 一起出现在函数内某处,执行
goto语句后,程序将跳转到该标号处并执行其后的
语句。另外标号必须与 goto语句同处于一个函数中,
但可以不在一个循环层中。通常 goto语句与 if条件
语句连用,当满足某一条件时,程序跳到标号处
运行。
goto语句通常不用,主要因为它将使程序层次不清,
且不易读,但在多层嵌套退出时,用 goto语句则比
较合理。因此,在现代结构化程序设计方法中,对
goto 语句采取的策略是,有限制地使用 goto语句 。
4.3 面向对象编程语言简介
4.3.1 VISUAL BASIC
4.3.2 VISUAL C++
4.3.3 DELPHI
什么是对象
编程实例
什么是对象
一个对象是一个数据类型。对象就象记录一样,
是一种数据结构。
对象可被理解为可视化部件如按钮、标签、表
等。
对象最突出的特征有三个:封装性、继承性、
多态性。
把数据和代码组合在同一个结构中,这就是对
象的封装特性。
继承性是指把一个新的对象定义成为已存在对
象的后代;新对象继承了旧类的一切东西。
多态性是在对象体系中把设想和实现分开的手
段。
Visual Basic 是 Microsoft 公司提供的
Windows环境下的面向对象的可视化开发工具, 它
提供了开发 Windows应用程序迅速, 简捷的方法 。
不论是 Windows应用程序的专业开发人员还是初学
者, Visual Basic 都提供了整套工具, 以方便开发应
用程序 。
何谓 Visual Basic?,Visual”指的是开发图形用户界
面 (GUI) 的方法。不需编写大量代码去描述界面元
素的外观和位置,而只要把预先建立的对象添加到
屏幕上的一点即可。如果已使用过诸如 Paint 之类的
绘图程序,则实际上已掌握了创建用户界面的必要
技巧。,Basic”指的是 BASIC 语言,一种在计算技
术发展史上应用得最为广泛的语言。 Visual Basic 在
原有 BASIC 语言的基础上进一步发展,至今包含了
数百条语句、函数及关键词,其中很多和 Windows
GUI 有直接关系。
Visual C++最主要技术特点是:可视化编程和支
持面向对象的编程技术, Visual C++提供了一系列可
视化编程的工具 。 如 APP Wizard 和 Class Wizard 等,
它们使得 Windows编程更加直观, 它的面向对象的
编程技术包装了 Windows内在的复杂的运行机制,
使 Windows编程更为简单易学 。
Visual C++就象一个奇妙的魔盒, 在其美丽的外表
下包装着很大的, 魔力,, 掌握它, 你将进入
Windows编程的自由王国 。
Visual C++最底硬件配置为,486CPU,100M硬盘
空间, 16M内存 。
软件为,32位操作系统, Windows95/98及 NT或更高
版本 。
Delphi的语言基础是 Pascal,但是它与传统的
Pascal语言有着根本性的差别 。 Delphi编程环境自动
为 Delphi应用程序生成应用程序框架, 这一框架正
是应用程序的, 骨架, 。 在骨架上即使没有附着任
何东西, 仍可以严格地按照设计运行 。 编程人员所
要做的工作只是在, 骨架, 中加入程序代码, 以实
现自己的目的 。 可以说应用程序框架通过提供所有
应用程序共有的东西, 为用户应用程序的开发打下
了良好的基础 。
Delphi已经做好了一切应用程序的基础工作 ——程
序框架本身就是一个已经完成的可运行的应用程序,
只是不处理任何事情 。 编程人员所需要做的, 只是
在程序中加入完成功能所需的代码而已 。
可以这么说, Delphi就是 Visual Pascal。
打开一个新的空窗体, 加入
一个 memo部件和四个按钮, 并
排列整齐 。 改变按钮部件的
Name属性, 分别命名为 Cut,
Copy,Paste,Clear。 您会发现,
当 Name 属 性 发 生 改 变 时,
Caption属性将发生相应的变化 。
在 Caption属性前加标, &”号设
立加速键, 即称为图 4.3.1的窗
体 。
将 memo部件的 ScrollBars
属性设为 ScVertical,以便加上
滚行条。将 WordWrap属性设置
为 True,这样当用户输入文本
到达 Memo部件的右边缘时会自
动回行。将 Line属性第一行的
Memo1文本删除,使得 memo部
件在初始显示时为空的。
4.4 编程语言的风格与原理
4.4.2 高级语言的程序设计原理
4.4.3 程序设计方法论
4.4.1 写程序的风格
写程序的风格
1,程序内部的文档
所谓程序内部的文档包括恰当的标识符、适当的注解
和程序的视觉组织等等。
2.数据说明
数据说明的次序应该标准化 。当多个变量名在一个语
句中说明时,应该按字母顺序排列这些变量。设计时
使用了一个复杂的数据结构,则应该用注解说明用程
序设计语言实现这个数据结构的方法和特点。
3.语句构造
构造语句时应该遵循的原则是,每个语句都应该简单
而直接 。
写程序的风格
4,输入/输出
在设计和编写程序时应该考虑下述有关输入/输出风格的规则,
·对所有输入数据都进行检验;
·检查输入项重要组合的合法性;
·保持输入格式简单;
·使用数据结束标记, 不要要求用户指定数据的数目;
·明确提示交互式输入的请求, 详细说明可用的选择或边界数值;
·当程序设计语言对格式有严格要求时, 应保持输入格式一致;
·设计良好的输出报表;
·给所有输出数据加标志 。
写程序的风格
5,效率
效率主要指处理机时间和存储器空间两个方面 。 可
从三个方面进一步讨论效率问题,
(1)程序运行时间
(2)存储器效率
(3)输入/输出的效率
高级语言的程序设计原理
完成给定任务的程序设计大致包括下列步骤,
·确定算法与数据结构;
·用流程图表示编制程序的思路;
·用高级语言编制源程序 。
所谓算法, 是指精确定义的一系列规则, 这些规则指定
了一系列操作顺序, 以便在有限的步骤内产生出所求问
题的解答 。 它们都必须满足下列要求 。
( 1) 确定性
( 2) 能行性
( 3) 输入:一个算法有零个以上的输入 。
( 4) 输出:一个算法产生一个或多个输出 。
( 5)有穷性,
高级语言的程序设计原理
§ 程序设计
循环程序, 子程序和分支程序是程序设计的最基本方法 。
人们常把程序定义为:程序 =算法 +数据结构
结构程序的编写原则是,
( 1) 把整个任务看成是一个大系统 。
( 2) 对任务分层, 即把一个大系统分成几个单元, 再把
这些单元各看成一个子系统, 再分层, 直至被细化到最小单
元 。
( 3) 每个单元完成相对独立的功能, 可独立编译 。
( 4) 单元与单元之间的接口信息要明确, 要规定交换信
息流的性质, 数量, 规则和方向等各种约定 。
程序设计方法论
主要有两种程序设计方法论, 分别称为自顶向下的
程序开发方法和自底向上的程序开发方法 。
按照软件工程的方法论, 编码之前应该经过总体设
计和详细设计两个阶段的充分设计, 编码只不过是把
设计结果翻译成程序代码 。 因此, 不论采用上述哪种
开发方法对程序的结构和可读性都不会有多大影响,
在这种情况下, 两种开发方法的差别主要表现为测试
策略的不同 。
本章小结 (1)
计算机程序是有序指令的集合,而程序是
用计算机语言编写的。汇编语言与机器指令一
一对应,仍是一种面向机器的语言。高级语言
独立于具体机器,它是面向算法的,同时比较
接近自然语言,因而得到了广泛的应用。
软件开发人员应关注程序设计语言的特点
及其对软件质量的影响,从而在系统开发时,
选择适合的程序设计语言,以提高软件开发效
率和质量。程序设计语言的特点主要集中在以
下方面:名字说明、类型说明、变量初始化、
程序对象的局限性、程序模块的使用、循环与
分支结构、异常处理、独立编译机制。
本章小结 (2)
常用编程语言中简要介绍了 BASIC,FORTRAN、
PASCAL语言,并以 TURBO C为例重点讲解 C语
言的特点、基本结构与编程方法。
面向对象的程序设计( OOP)是传统结构化程
序设计语言的自然延伸,对象的可重用性大大
地节省了开发时间,切实地提高了软件的开发
效率。一个对象是一个数据类型,在具体的
OOP开发环境中,对象可被理解为可视化部件
如按钮、标签、表等。对象最突出的特征有三
个:封装性、继承性、多态性。比较流行的
OOP开发工具有 VISUAL BASIC,VISUAL C++、
DELPHI等,并以 DELPHI为例说明了 OOP开发
工具的开发步骤、方法。
本章小结 (3)
编程的风格就是使源程序逻辑简明清晰, 易读易懂,
为此需在以下方面遵循相应的规则,1,程序内部的文档;
2,数据说明; 3,语句构造; 4,输入 /输出; 5,效率 。
算法是解题的方法和步骤, 具有确定性, 能行性, 有
穷性及零个以上的输入和一个或多个输出 。 为使按算法编
制程序时一目了然, 需用流程图来反映算法 。 流程图采用
约定的圆框符号表示各种基本操作或运算, 是程序员间交
流算法的工具 。
循环程序, 子程序和分支程序是程序设计的最基本方法 。
结构化程序设计是一种比较成功的程序设计方法 。 任何一
个算法都可由顺序, 分支, 循环这三种基本结构组成 。
程序设计方法论,一般分为自顶向下的程序开发方法
和自底向上的程序开发方法两种。