一、程序设计基本知识

相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

1.1 程序与程序语言

1.2.1 程序与程序语言

1.计算机语言

什么是计算机语言?为什么要使用计算机语言?过去,一提到语言这个词,人们自然想到的是像英语、汉语等这样的自然语言,因为它是人和人相互交流信息不可缺少的工具。而今天,计算机遍布了我们生活的每一个角落,除了人和人之间的相互交流之外,我们必须和计算机交流。用什么样的方式和计算机做最直接的交流呢?人们自然想到的是最古老也最方便的方式--语言。人和人交流用的是双方都能听懂和读懂的自然语言,同样,人和计算机交流也要用人和计算机都容易接受和理解的语言,这就是计算机语言。人们用自然语言讲述和书写,目的是给另外的人传播信息。同样,我们使用计算机语言把我们的意图表达给计算机,目的是使用计算机。

计算机语言是根据计算机的特点而编制的,它没有自然语言那么丰富多样,而只是有限规则的集合,所以它简单易学。但是,也正因为它是根据机器的特点编制的,所以交流中无法意会和言传,而更多地表现了说一不二,表现了"规则"的严谨。例如该是";"的地方不能写成".",该写"a"的地方不能写成"A",这使得人和计算机的交流在一开始会有些不习惯。不过,只要认识到计算机语言的特点,注意学习方法,把必须的严谨和恰当的灵活相结合,一切都会得心应手。

2.程序

我们知道,计算机是一种具有内部存储能力的自动、高效的电子设备,它最本质的使命就是执行指令所规定的操作。如果我们需要计算机完成什么工作,只要将其步骤用诸条指令的形式描述出来,并把这些指令存放在计算机的内部存储器中,需要结果时就向计算机发出一个简单的命令,计算机就会自动逐条顺序执行操作,全部指令执行完就得到了预期的结果。这种可以被连续执行的一条条指令的集合称为计算机的程序。也就是说,程序是计算机指令的序列,编制程序的工作就是为计算机安排指令序列。

但是,我们知道,指令是二进制编码,用它编制程序既难记忆,又难掌握,所以,计算机工作者就研制出了各种计算机能够懂得、人们又方便使用的计算机语言,程序就是用计算机语言来编写的。因此,计算机语言通常被称为"程序语言",一个计算机程序总是用某种程序语言书写的。

3.程序语言的发展

程序语言的产生和发展,直接推动了计算机的普及和应用。自第一个高级语言问世以来,人们已发明了上千种程序语言,常用的也有上百种。这些语言之间有什么区别,我们应该学习哪一种?

计算机语言按使用方式和功能别可分为低级语言和高级语言。低级语言包括机器语言和汇编语言。机器语言就是计算机指令的集合,它与计算机同时诞生,是第一代的计算机语言;汇编语言是用符号来表示计算机指令,被称为第二代语言。机器语言和汇编语言都是围绕特定的计算机或计算机族而设计的,是面向计算机的语言。要使用这种语言必须了解计算机的内部结构,而且难学、难写、难记忆,把这种语言称为低级语言。因为低级语言是难以普及应用的,为此便产生了第三代语言--高级语言。它采用了完全符号化的描述形式,用类似自然语言的形式描述对问题的处理过程,用数学表达式的形式描述对数据的计算过程。可见,高级语言只是要求人们向计算机描述问题的求解过程,而不关心计算机的内部结构,所以把高级语言称为"面向过程语言",它易于被人们理解和接受。典型的面向过程语言有BASIC、FORTRAN、COBOL、C、Pascal等等。

随着计算机技术的迅猛发展,自从80年代以来,众多的第四代非过程化语言、第五代智能化语言也竞相推出。如果说第三代语言要求人们告诉计算机怎么做,那么第四代语言只要求人们告诉计算机做什么。因此,人们称第四代语言是"面向对象语言"。面向对象概念的提出是相对于"面向过程"的一次革命,面向对象技术在系统程序设计、多媒体应用、数据库等诸多领域得到广泛应用。但是,"

面向过程"是程序设计的基础,尤其对于程序设计的初学者。所以,我们将以面向过程的C程序设计语言为背景,主要介绍程序设计的基本概念和方法。在本书最后一章中,我们将结合Visual C++ 6.0,介绍面向对象程序设计语言的基本概念和初步使用。

上一页下一页

1.2 算法和算法的表示

1.2.1 算法的概念

1.算法的基本概念

什么是算法?当代著名计算机科学家D.E.Knuth在他撰写的《THE ART OF COMPUTER PROGRAMMING》一书中写到:"一个算法,就是一个有穷规则的集合,其中之规则规定了一个解决某一特定类型的问题的运算序列。"简单地说,任何解决问题的过程都是由一定的步骤组成的,把解决问题确定的方法和有限的步骤称作为算法。

需要说明的是,不是只有计算问题才有算法。例如,加工一张写字台,其加工顺序是:桌腿桌面抽屉组装,这就是加工这张写字台的算法。当然,如果是按"抽屉桌面桌腿组装"这样的顺序加工,那就是加工这张写字台有另一种算法,这其中没有计算问题。通常计算机算法分为两大类:数值运算算法和非数值运算算法。数值运算是指对问题求数值解,例如对微分方程求解、对函数的定积分求解、对高次方程求解等,都属于数值运算范围。非数值运算包括非常广泛的领域,例如资料检索、事务管理、数据处理等。数值运算有确定的数学模型,一般都有比较成熟的算法。许多常用算法通常还会被编写成通用程序并汇编成各种程序库的形式,用户需要时可直接调用。例如数学程序库、数学软件包等。而非数值运算的种类繁多,要求不一,很难提供统一规范的算法。在一些关于算法分析的著作中,一般也只是对典型算法作详细讨论,其它更多的非数值运算是需要用户设计其算法的。

下面通过三个简单的问题说明设计算法的思维方法。

例1-1:有黑和蓝两个墨水瓶,但却错把黑墨水装在了蓝墨水瓶子里,而蓝墨水错装在了黑墨水瓶子里,要求将其互换。

算法分析:这是一个非数值运算问题。因为两个瓶子的墨水不能直接交换,所以,解决这一问题的关键是需要引入第三个墨水瓶。设第三个墨水瓶为白色,其交换步骤如下:

①将黑瓶中的蓝墨水装入白瓶中;

②将蓝瓶中的黑墨水装入黑瓶中;

③将白瓶中的蓝墨水装入蓝瓶中;

④交换结束。

例1-2:计算函数M(x)的值。函数M(x)为:

其中,a,b,c为常数。

算法分析:本题是一个数值运算问题。其中M代表要计算的函数值,有两个不同的表达式,根据x的取值决定采用哪一个算式。根据计算机具有逻辑判断的基本功能,用计算机解题的算法如下:

①将a、b、c和x的值输入到计算机;

②判断x≤a?如果条件成立,执行第③步,否则执行第④步;

③按表达式bx+a2计算出结果存放到M中,然后执行第⑤步;

④按表达式a(c-x)+c3计算出结果存放到M中,然后执行第⑤步;

⑤输出M的值;

⑥算法结束。

例1-3:给定两个正整数m和n(m≥n),求它们的最大公约数。

算法分析:这也是一个数值运算问题,它有成熟的算法,我国数学家秦九韶在《算书九章》一书中曾记载了这个算法。求最大公约数的问题一般用辗转相除法(也称欧几里德算法)求解。

例如:设m 35,n 15,余数用r表示。它们的最大公约数的求法如下:

35/15商2 余数为5 以n作m,以r作n,继续相除;

15/5商3 余数为0 当余数为零时,所得n即为两数的最大公约数。

所以35和15两数的最大公约数为5。

相关文档
最新文档