单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,1,第,10,章 程序设计基础,10.1,程序设计的概念,10.2,算法,10.3,程序设计语言,10.4,程序设计方法,1第10章 程序设计基础10.1 程序设计的概念,2,10.1,程序设计的概念,程序:是解题方法和步骤的描述,是供计算机执行并能完成特定功能的指令序列。,程序的核心:数据结构和算法。,程序设计(,Programming,):先对问题进行分析并建立数学模型,然后考虑数据的组织方式和算法,并用某一种程序设计语言编写程序,最后调试程序,使之运行后能产生预期的结果。,210.1 程序设计的概念程序:是解题方法和步骤的描述,是,3,程序设计的基本步骤:,(1),分析问题,确定数学模型或方法。,(2),设计算法,画出流程图。,(3),选择编程工具,按算法编写程序。,(4),调试程序,分析输出结果。,3程序设计的基本步骤:(1)分析问题,确定数学模型或方法。,4,10.2,算 法,10.2.1,算法的概念计算机解决问题的方法和步骤,就是计算机解题的算法,(Algorithm),。算法举例:(,1,)将两个变量的值互换。(,2,)欧几里德(,Euclid,)算法求两个正整数,m,和,n,的最大公约数。,(,3,)非数值计算算法:有,9,枚铜币,其中有,1,枚略轻的是假币,用一台没有砝码的天平将假币找出来,应怎样找称。,4 10.2 算 法 10.2.1 算法的概念计,5,10.2.2,算法的特性,(1),有穷性。算法中执行的步骤总是有限次数的,不能无止境地执行下去。,(2),确定性。算法中的每一步操作必须具有确切的含义,不能有二义性。,(3),有效性。算法中的每一步操作必须是可执行的。,(4),要有数据输入。算法中操作的对象是数据,因此应提供有关数据。,(5),要有结果输出。,510.2.2 算法的特性(1)有穷性。算法中执行,6,10.2.3,算法的评价,1,算法评价标准,(,1,)正确性。(,2,)可读性。(,3,)通用性。(,4,)高效率。,2.,算法效率的度量(,1,)时间度量(,2,)空间度量,610.2.3 算法的评价1算法评价标准,7,10.2.4,算法的描述,1.,用传统的流程图描述算法,传统的流程图是用一些几何框图、流程线和文字说明表示各种类型的操作。一般用矩形框表示进行某种处理,有一个入口,一个出口。用菱形框表示判断,有一个入口,两个出口。在框内写上简明的文字或符号表示具体的操作,用带箭头的流向线表示操作的先后顺序。,710.2.4 算法的描述1.用传统的流程图描述算法传,8,2.,用结构化流程图描述算法(,1,)程序的三种基本结构:顺序结构、选择结构和循环结构。(,2,)结构化流程图(,N-S,图),8 2.用结构化流程图描述算法(1)程序的三种基本,9,3,用伪代码描述算法,计算,2+4+100,并输出,设计算法并用,Visual Basic,伪代码描述如下:,0sum,1i,Do While i100,If i/2,的余数为,0 THEN sum+isum,i+1i,Loop,Print sum,93用伪代码描述算法,10,10.2.5,算法示例,1,迭代算法,迭代是一种建立在循环基础上的算法。在数学中,迭代经常被用来进行数值计算,例如求方程的解,不断用变量原来的值递推求新的值的过程。,讨论求若干个数之和或乘积的问题。,1010.2.5 算法示例1迭代算法,11,10.2.5,算法示例,1,迭代算法,迭代是一种建立在循环基础上的算法。在数学中,迭代经常被用来进行数值计算,例如求方程的解,不断用变量原来的值递推求新的值的过程。,讨论求若干个数之和或乘积的问题。,1110.2.5 算法示例1迭代算法,12,2,穷举算法,穷举法也叫枚举法,它的基本思路是对众多可能解,按某种顺序进行逐一枚举和检验,并从中找出那些符合要求的可能解,作为问题的解。穷举的计算量是相当大的,但对于计算机来说,做起来很容易。穷举算法是一种重要的算法设计策略,可以说是计算机解题的一大特点。,求方程,x,+2,y,+5,z,=100,的整数解。,122穷举算法,13,3,排序算法所谓排序,就是将一组数据元素按照某个关键字递增或递减的次序排列起来。(,1,)选择排序,(Selection Sort),选择排序法的实现过程是:首先找出表中关键字最小的元素,将其与第一个元素进行交换,然后,再在其余元素中找出关键字最小的元素,将其与第二个元素进行交换。依次类推,直到将表中所有关键字按由小到大的顺序排列好为止。,133排序算法所谓排序,就是将一组数据元素按照某个关键,14,(,2,)冒泡排序,(Bubble Sort),冒泡法排序法是每趟将相邻的两个数两两进行比较,若满足升序次序,则进行下一次比较,若不满足升序次序,则交换这两个数,直到最后。总的比较次数为,n-1,次,此时最后的元素为最大数,此为一趟排序。接着进行第二趟排序,方法同前,只是这次最后一个元素不再参与比较,比较次数为,n-2,次,依次类推。,14(2)冒泡排序(Bubble Sort),15,4,查找算法,查找是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素,若表中存在这样的数据元素,称此查找是成功的。若表中不存在关键字等于给定值的数据元素,称此查找是不成功的。(,1,)顺序查找顺序查找是最常用的查找方法,其查找过程为:从第一个元素起,逐个将给定值与数据元素的关键字进行比较,若某个元素的关键字与给定值相等,则认为查找是成功的,否则,查找失败。,15 4查找算法,16,(,2,)折半查找,作为折半查找的表必须是顺序存储的有序表,即表采用顺序结构存储,表中的元素按关键字值递增(或递减)排列。假设表中的关键字值递增排列,则折半查找的实现方法是:首先取整个有序表的中间元素,A,m,的关键字同给定值,x,比较,若相等,则查找成功;否则,若,A,m,的关键字小于,x,,则说明待查元素只可能落在表的后半部分中,接着只要在表的后半部分子表中查找即可;若,A,m,的关键字大于,x,,则说明待查元素只可能落在表的前半部分中,接着只要在表的前半部分子表中查找即可。这样,经过一次关键字的比较,就缩小一半的查找空间,重复进行下去,直到找到关键字为,x,的元素,或者表中没有待查元素(此时查找区间为空)为止。,16 (2)折半查找,17,10.3,程序设计语言,10.3.1,程序设计语言的分类,机器语言,汇编语言,高级语言,面向过程,面向对象,1710.3 程序设计语言10.3.1 程序设计语言的,18,1,机器语言(,Machine language,)机器语言:机器指令的总称。特点:繁琐冗长、不直观、容易出错、程序不通用。,2,汇编语言(,Assembly language,)用助记符表示的机器指令。特点:直观性增强了,但与机器指令一一对应。,3,高级语言(,High level language,)高级语言:接近自然语言和数学表达式的一种语言。特点:直观、通用性,便于推广交流。两种执行方式:编译方式和解释方式。,181机器语言(Machine language)机器,19,高级语言程序的编译执行过程:,编译程序工作过程,:,编译程序的工作过程,其各个功能模块的作用如下:,19高级语言程序的编译执行过程:编译程序工作过程:编译程序的,20,10.3.2,高级语言的基本特征,1,数据类型各种高级语言都提供了丰富的数据类型,这些数据类型可以分为两大类:简单类型和构造类型。其中简单类型一般有整型、实型、字符型、逻辑型、指针类型等,构造类型有数组类型、集合类型、记录类型、文件类型等。,2010.3.2 高级语言的基本特征1数据类型各种高,21,2,运算与表达式(,1,)常量(,2,)变量(,3,)表达式,3,语句(,1,)赋值语句(,2,)输入输出语句(,3,)程序的控制结构语句,4,子程序、函数与过程,212运算与表达式(1)常量(2)变量(3)表达式,22,10.3.3,常用高级语言,1.,传统高级语言(,1,),FORTRAN,语言:,FORTRAN 66,、,FORTRAN 77,、,FORTRAN 90,。(,2,),BASIC,语言:,BASIC,、,Visual Basic,、,Visual Basic.NET,。(,3,),PASCAL,语言(,4,),C,语言:,C,、,C+,、,C,。(,5,),COBOL,语言,2210.3.3 常用高级语言1.传统高级语言(1),23,2,网络编程语言(,1,),Java,语言(,2,)脚本语言(,Scripting Language,):,JavaScript,、,VBScript,、,Perl,、,PHP,。,3,科学计算语言:,MATLAB,讨论:,如何学习一种高级语言?如何选择高级语言?,232网络编程语言(1)Java语言(2)脚本语言(,24,10.4.1,结构化程序设计结构化程序设计采用自顶向下、逐步求精和模块化的分析方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子程序,便于开发和维护。,10.4,程序设计方法,24 10.4.1 结构,25,10.4.2,面向对象程序设计,(Object-Oriented Programming,OOP),传统的程序设计是基于求解过程来组织程序流程。在这类程序中,数据和施加于数据的操作是独立设计的,以对数据进行操作的过程作为程序的主体。面向对象程序设计则以对象作为程序的主体。对象是数据和操作的“封装体”,封装在对象内的程序通过“消息”来驱动运行。在图形用户界面上,消息可通过键盘或鼠标的某种操作来传递。,2510.4.2 面向对象程序设计(Object-Ori,26,(,1,)对象,(Object),对象是指现实世界中具体存在的实体。每一个对象都有自己的属性(包括自己特有的属性和同类对象的共同属性)。属性反映对象自身状态变化,表现为当前的属性值。方法是用来描述对象动态特征的一个操作序列。(,2),类,(Class),类是具有相同属性和方法的一组对象的集合,它为属于该类的全部对象提供了统一的抽象描述。,26(1)对象(Object)对象是指现实世界中具体,27,OPP,与,OOP,比较,27OPP与OOP比较,28,10.4.3,可视化程序设计,让程序设计人员利用语言工具本身所提供的各种控件,像搭积木式地构造应用程序的各种界面,使得整个界面设计是在“所见即所得”的可视化状态下完成。相对于编写代码方式的程序设计而言的,可视化程序设计具有直观形象、方便高效等优点。,2810.4.3 可视化程序设计,29,VB,程序设计,1.VB 6.0,集成开发环境,29VB程序设计1.VB 6.0集成开发环境,30,2.,创建,VB,应用程序的主要步骤,(,1,)创建应用程序界面。,(,2,)设置界面上各个对象的属性。,(,3,)编写对象响应的程序代码。,(,4,)保存工程。,(,5,)运行和调试程序。,(,6,)生成可执行程序。,302.创建VB应用程序的主要步骤,31,3.,创建简单程序实例,例,1,窗体界面由一个文本框和一个命令按钮组成,在运行时,单击命令按钮,文本框中会出现“,VB,程序设计”,运行结果如图所示。,例,2,输入半径,计算圆面积和圆周长,如图所示。,313.创建简单程序实例,32,通过以上两个例子,可以看到,VB,的一些基本特点:,(,1,)具有基于对象的可视化设计工具,(,2,)事件驱动的编程机制,(,3,)提供了易学易用的应用程序集成开发环境,(,4,)结构化的程序设计语言,32通过以上两个例子,可以看到VB的一些基本特点:,人有了知识,就会具备各种分析能力,,明辨是非的能力。,所以我们要勤恳读书,广泛阅读,,古人说“书中自有黄金屋。,”通过阅读科技书籍,我们能丰富知