大学计算机基础(第六版)课件 10 算法基础与程序设计_第1页
大学计算机基础(第六版)课件 10 算法基础与程序设计_第2页
大学计算机基础(第六版)课件 10 算法基础与程序设计_第3页
大学计算机基础(第六版)课件 10 算法基础与程序设计_第4页
大学计算机基础(第六版)课件 10 算法基础与程序设计_第5页
已阅读5页,还剩74页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第10章算法基础与程序设计01问题求解过程02算法基础03程序设计基础Contents目录01问题求解过程介绍用计算机求解问题的基本过程问题求解过程分析问题建立模型设计算法编写程序调试测试程序图10-1问题求解过程图即确定计算机要做什么,实现自然语言的逻辑建模。即将原始问题转化为数学模型。即形式化地描述解决问题的途径和方法。即将算法翻译成计算机程序。即发现和修改程序运行过程中存在的错误。问题某商场销售一批衬衫,平均每天可出售30件,每件盈利50元,为扩大销售,增加盈利,尽快减少库存,商场决定降价,如果每件降1元,商场平均每天可多卖2件,若商场平均每天要盈利2100元,问衬衫降价多少元?问题求解过程举例1.分析问题已知:平均每天可出售30件,每件盈利50元,如果每件降1元,商场平均每天可多卖2件,商场平均每天要盈利2100元。目标:尽快减少库存,计算每件衬衫降价多少元。计算逻辑:盈利=单件盈利*销售数量2.建立模型假设:每件衬衫降价x元。计算公式:2100=(50-x)*(30+2*x)整理公式:x2-35x+300=0数学模型:求一元二次方程ax2+bx+c=0的根。3.设计算法begininputa,b,c//输入a,b,cx1,x2←0//变量赋初值if(b2-4ac>=0){x1=(-b+sqrt(b2-4ac))/2ax2=(-b-sqrt(b2-4ac))/2a}outputx1,x2//输出根结果end4.编写程序intmain(){floata,b,c,x1=0,x2=0;cin>>a>>b>>c;if(b*b-4*a*c>=0){x1=(-b+sqrt(b*b-4*a*c))/2*a;x2=(-b-sqrt(b*b-4*a*c))/2*a;}cout<<x1<<””<<x2;}5.调试测试对于程序进行测试,看看运行结果是否符合预先的期望,如果不符合,要进行判断,找出问题出现的地方,对算法或程序进行修正,直到得到正确的结果。由于商场要尽快减少库存,所以降价20元是最佳选择。02算法基础介绍有关算法的基本知识,并对常见的算法进行举例01算法的概念02算法的特性和评价03算法的三种结构Contents目录04算法的表示05算法举例简单地说,算法就是解决问题的一系列步骤。广义地说,为解决问题而采用的方法和步骤就是算法。算法是程序设计的基础,算法的质量直接影响程序运行的效率。算法是求解问题步骤的有序集合,它能够产生结果并在有限时间内结束。1

算法的概念举一个简单的算法例子,假设求两个自然数m和n的最大公约数,通常使用辗转相除的欧几里得算法,算法描述如下:①输入两数m、n。②m除以n得到余数r。③若r=0,则n即为最大公约数,算法结束;否则继续进行下一步。④令m←n,n←r,转到第②步。《九章算术》是我国古代最早的算学著作,以算法为主要内容,全书采用问题集的形式,收有246个与生产、生活实践有联系的应用问题,其中每道题有问(题目)、答(答案)、术(解题的步骤),有的是一题一术,有的是多题一术或一题多术。这些问题依照性质和解法分别隶属于方田、粟米、衰(cuī)分、少广、商功、均输、盈不足、方程及勾股,共九章。《九章算术》对中国古代数学发展起了承前启后的作用,是世界古代数学名著之一,书中分数解算方法、联立一次方程解法、负数等,当时在世界上都属于杰出的研究成果。民族之光-九章算术民族之光-九章算术2020年12月4日,中国科学技术大学宣布该校潘建伟等人成功构建76个光子的量子计算原型机,该原型机的名字"九章",意为纪念中国古代最早的数学专著《九章算术》。民族之光-九章算术一般地,算法应该具有以下特性。1.确定性:一个算法中的每一个步骤必须是精确的定义、无二义性,不会使编程者对算法中的描述产生不同的理解。2.有穷性:一个算法必须在执行有穷步后结束,每一步必须在有穷的时间内完成。3.可行性:算法描述的步骤在计算机上是可行的,能在一个合理的范围内有效地执行,并应能得到一个明确的结果。4.输入:一般有零个或多个输入值。5.输出:一个算法的执行过程中或结束后要有输出结果,或者产生相应的动作指令。2

算法的特性和评价通常可以从以下几个方面来评价算法的优劣。1.算法的正确性算法正确性是指算法应该满足具体问题的需求。其中“正确”的含义大体上可以分为4个层次。(1)算法所对应的程序没有语法错误。(2)算法所对应的程序对于几组输入数据能够得出满足要求的结果。(3)算法所对应的程序对于精心选择的典型、苛刻而带有刁难性的几组输入数据能够得到满足要求的结果。(4)算法所对应的程序对于一切合法的输入数据都能产生满足要求的结果。达到第4层含义下的正确性是极为困难的,不少大型软件在使用多年后,仍然还能发现其中的错误。一般情况下,以第3层含义的正确性作为衡量一个算法是否正确的标准。2

算法的特性和评价2.可读性

一个好的算法首先应该便于人们理解和相互交流,其次才是机器可执行。可读性好的算法有助于人对算法的理解,难懂的算法容易隐藏错误且难于调试和修改。3.健壮性

作为一个好的算法,当输入非法数据时,也能适当地做出正确反应或进行相应的处理,而不会产生一些莫名其妙的输出结果,或者毫无反应甚至崩溃。2

算法的特性和评价4.高效率和低存储量

算法的效率通常是指算法的执行时间,即根据算法编写的程序在运行过程中,从开始到结束所需要的时间。对于一个具体问题的解决通常可以有多个算法,执行时间短的算法效率比较高。所谓的存储量是指算法在执行过程中对存储空间的需求。一个算法对应的程序在执行时必须加载到计算机的内存中,程序本身、程序中用到的变量都要占用内存空间,除了这些内存消耗外,程序在执行过程中还可能动态地申请额外的内存空间。通常情况下,我们根据算法运行时所需要的时间和空间,即算法运行的时间复杂度和空间复杂度来评价算法的优劣。2

算法的特性和评价结构化程序设计思想包含两个方面的内容,一是程序由三种基本的逻辑结构组成,二是程序设计要自顶向下进行。三种结构分别是顺序、分支和循环。其中分支也称选择或判断。事实证明,使用这三种结构可以使得程序或算法很容易地被理解。结构化程序要求任何程序只有一个入口或出口,程序中没有执行不到的语句,且没有无限循环发生。算法是程序的基础,程序是算法的实现。因此程序的逻辑结构也就是进行算法设计的三种结构。3

算法的三种结构1.顺序结构

顺序结构是算法设计中最简单的一种结构,它使求解问题的过程按照顺序由上至下进行。如图10-2所示就是一个顺序结构的表示,其中有两个框代表算法的步骤,执行了A后接下来执行B指定的操作。

事实上,无论哪一类算法,它的主结构都是顺序结构的,从一个入口开始,到一个出口结束。3

算法的三种结构3

算法的三种结构AB图10-2顺序结构2.分支结构

分支结构也叫条件结构、选择结构或判断结构,在算法设计过程中,可能会出现判断,如判断某门功课的成绩,大于或等于60分为“及格”,否则为“不及格”,这时就必须采用分支结构实现。如图10-3所示为分支结构的一般表示。若条件成立,则执行分支A,否则执行分支B。

如果在A或B中,又需要根据判断设计分支结构,就会出现嵌套的分支结构(多分支结构)。3

算法的三种结构3

算法的三种结构条件AB成立不成立图10-3分支结构

3.循环结构

在算法设计过程中可能会出现重复执行一组工作步骤的情况,我们可以通过循环结构来控制。有两类循环结构:当型(while)循环结构和直到型(until)循环结构。当型循环的原理如图10-4所示,当条件成立时执行A,执行完A后再判断条件是否成立,若成立则继续执行A,如此反复,直至条件不成立才结束循环。

直到型循环的原理如图10-5所示,先执行A,再判断条件是否成立,如果条件不成立则继续执行A,如此反复,直至条件成立才结束循环。

这两种循环结构的区别在于循环体A的执行顺序:对while结构,如果一开始循环条件就不成立,则A将不会被执行;而对until结构,无论循环条件成立与否,A至少被执行一次。3

算法的三种结构3

算法的三种结构A图10-5直到型循环结构条件A成立不成立图10-4当型循环结构条件成立不成立

算法的表示是为了把算法以某种形式加以描述,同一个算法可以通过多种形式来表达,常用的有自然语言、传统流程图、N-S流程图、伪代码、计算机语言等。1.自然语言

自然语言是人们日常使用的语言,是人类交流信息的工具,因此最常用的表达问题的方法也就是自然语言。10.2.1节中的算法步骤就是用自然语言方式描述的。用自然语言表示,通俗易懂,但存在以下缺陷:

(1)易产生歧义性,往往根据上下文才能判别其含义,不太严格。

(2)语句比较烦琐、文字冗长,并且很难清楚地表达算法的逻辑流程,尤其当描述有选择、循环结构的算法时,不太方便和直观。

所以,除了简单的问题以外,一般不用自然语言描述算法。对于一些需要有背景知识进行推理的表达,也许自然语言是最好的选择。4

算法的表示2.流程图

流程图是算法表示的常用的方法,它采用一些图框、线条以及文字说明来形象、直观地描述从算法开始到结束的流程,而不考虑其实现过程的细节。美国国家标准化协会规定了一些常用的流程图符号,如表10-1所示。4

算法的表示4

算法的表示符号名称图形功能起止框

表示算法的开始和结束输入/输出框

表示算法的输入输出操作处理框

表示算法中的各种处理操作判断框

表示算法中的条件判断操作流程线

表示算法的执行方向连接点

表示流程图的延续4

算法的表示3.N-S流程图

N-S图是美国学者I.Nassi和B.Shneideman提出的一种新的流程图形式,并以他们的姓名的第一个字母命名。N-S图中去掉了传统流程图中带箭头的流程线,全部算法以一个大的矩形框表示,该框内还可以嵌套一些从属于它的小矩形框,适合结构化程序设计。图10-7表示了结构化程序设计的三种基本结构的N-S图。4

算法的表示ABT条件FAB当条件成立AA(a)顺序结构(b)分支结构(c)当型循环结构(d)直到型循环结构直到条件成立4.伪代码

伪代码是一种算法的表达方法,产生于20世纪70年代,它是在程序开发过程中表达算法的一种非正式的符号系统,它不考虑实现算法的计算机语言,是一种与程序设计过程一致的、表达简明扼要的语义结构的方法。4

算法的表示伪代码使用介于自然语言和计算机语言之间的文字和符号来描述算法,有如下简单约定:(1)每个算法用Begin开始、End结束;若仅表示部分实现代码可省略。(2)每一条指令占一行,指令后不跟任何符号。(3)“//”标志表示注释的开始,一直到行尾。(4)算法的输入输出以Input/Output后加参数表的形式表示。(5)用“←”表示赋值。(6)用缩进表示代码块结构,包括while和for循环、if分支判断等;块中多条语句用一对{}括起来。(7)数组形式:数组名[下界……上界];数组元素:数组名[序号]。(8)一些函数调用或处理简单任务可以用一句自然语言代替。4

算法的表示10.2.1节中的关于求最大公约数的算法可以采用如下的伪代码方式进行描述,该算法描述采用当型循环结构。4

算法的表示BeginInputm,n//输入m和n使m>nr←0//变量赋初值r←m/nwhile(r>0){m←nn←rr←m/n}Outputn//输出最大公约数End

设计一个问题的求解方案需要经过理解问题、找出重点、设计方案、执行方案、在执行过程中修正设计方案的过程,还需要掌握更多的数学知识,包括图论、组合学等。

下面举一个“求100~1000以内的水仙花数”的例子,来说明如何理解问题并设计方案。

所谓的水仙花数是,一个n位的正整数的每一位数的n次幂之和等于这个数本身。例如,153=13+53+33,因此153是水仙花数。100~1000之间的水仙花数还有370,371和407等。理解这个问题不难,但要设计能够让计算机进行计算的算法就需要解决以下几个问题:

(1)要遍历全部的3位正整数;

(2)分解每一个3位正整数,分别得到该正整数的3个整数位;

(3)检查它们的立方和是否与原数相等,如果相等,则是水仙花数。5

算法举例1.基本算法

算法有很多,同一个问题也有多种算法,例如,最为常见的排序算法,就有选择法、冒泡法、快速排序、堆排序、希尔排序、桶排序、合并排序、计数排序、基数排序等。其原因是,对不同的数据类型及数据表达,一种方法是有效的,但另一种方法则效果不佳。(1)求和

求和是学习计算机程序设计首先遇到的算法问题。适合计算机求和的算法是在循环中使用加法求和。例如,计算n~m之间的整数之和。

假设使用sum存放求和结果,使用i作为循环控制变量,则求和算法可以通过以下伪代码方式进行描述。5

算法举例5

算法举例Beginsum←0//定义求和结果变量,初始值为0i←n//将n赋值给循环控制变量iwhilei<=mdo{sum←sum+i//将循环控制变量i的值累加到sum中i←i+1//准备下一个数}End

这个算法的循环过程完成两个操作,将一个整数加到sum中,并准备下一次循环操作。其中,i既是加数,也是循环控制变量。(2)累积

累积是将一组数连续相乘求其积,类似于求和计算,把求和计算的加号变为乘号即可。典型的例子就是计算整数N的阶乘。(3)求最大值和最小值

判断两个数的大小的算法是许多算法的基础,求最大值和最小值的算法,使用分支结构就可以实现,这里以求最大值为例。5

算法举例BeginInputa,bmax←aifmax<bmax←boutputmaxEndBeginInputa,bmax←aifa>bmax←aelsemax←boutputmaxEnd(4)求数的位数

给定一个整数n,如何计算得到它的位数呢?可以考虑的算法是,将该数循环除以10直到结果为0结束,把循环次数记录下来就是这个数的位数。5

算法举例Begincount←1//count为计数变量,初值为1inputnn←n/10whilen≠0do{count←count+1n←n/10//将n除以10的结果重新赋值给n}outputcountEnd2.递归

为了获得大型问题的解决方案,常用的方法就是把该大型问题化解为一个或几个相似的、规模更小的子问题。对子问题可以采用同样的方法。这样,一直递归下去,直到子问题足够小,成为一个基本情况,这时可以直接给出子问题的解答。

递归是算法的自我调用。有关求N的阶乘的计算就是最典型的递归结构。为了说明递归算法的结构,把这个问题从定义的角度进行展开。

假设阶乘函数的定义为:5

算法举例递归算法f(5)=5×f(4)f(4)=4×f(3)f(3)=3×f(2)f(2)=2×f(1)f(1)=1×f(0)f(0)=1f(1)=1×1f(2)=2×1f(3)=3×2f(4)=4×6f(5)=5×24图10-8计算阶乘的递归步骤

递归是一个重复调用的过程,我们把它对自身的调用看作是产生了一个副本,每次调用都有一个副本产生并等待处理,当结束条件满足时将停止产生副本。如图10-8所示的递归过程的结束条件是f(0)=1,当递归进入这个步骤后,副本将停止产生,算法将处于等待状态的副本按照后进先出(FILO)的原则依次处理(返回),最后得到运算结果。

每个递归过程都包含如下两个步骤:

(1)定义一个能够不使用递归方法就可以直接处理的基本情况作为出口,即定义一个终止递归的条件;

(2)不断调用递归方法本身,将一种特殊的情况化解为规模较小的情况,持续下去,最终到达对基本情况的求解。5

算法举例上面的计算阶乘的示例,可以写成下面的f()函数:intf(intn){if(n==0)return1;elsereturnn*f(n-1);}5

算法举例4.排序

排序是是将一组原始数据按照递增或递减的规律进行重新排列的算法。常用排序算法分类参见10.2.5节,这里介绍选择排序。选择排序算法的主要思想是,扫描数据序列,找到最小的数据,将该数据交换到序列最前面的位置,然后对其余数据序列重复前面的步骤直到数据全部排序为止(默认从小到大排序)。

对一组数的排序的算法涉及数据形式和组织结构,为简单起见,我们举例说明。假设有一组6个数:12,6,1,15,3,19,现在希望将该数组中的数据采用选择排序方法从小到大排列,图10-9演示了6个数的排序过程,图中的阴影方框表示未排序数据。5

算法举例图10-9选择排序算法排序过程选择排序算法的伪代码如下:selectionSort(arrayA){for(inti=0;i<A.length-1;i++){

//外循环变量i,控制循环次数,扫描n-1次找最小数并交换到数组前方intmin=ifor(intj=i+1;j<A.length;j++){

//内循环找最小数的位置if(A[j]<A[min]){min=j}}5

算法举例if(i!=min){

//最小数与序列最前面位置i的元素A[i]交换intswap=A[i]A[i]=A[min]A[min]=swap}}}

那么对n个数的排序需要n-1次扫描过程:第一次扫描过程将比较n个数,得到最小的那个数的位置,和第一个数的位置互换,比较次数为n-1次;第二次扫描将从第二个数开始,得到次小的数与第二个数的位置互换,比较次数为n-2次;最后一次比较最后的两个数,比较次数为1次。可以得到,对n个数选择法排序的比较次数为:(n-1)+(n-2)+……+2+1,即n(n-1)/2次,如图10-9所示6个数的排序的比较次数为15次。

以算法的概念,扫描过程为外循环,扫描次数为n-1次,每次扫描的过程为内循环,每次扫描中进行比较的次数为n-i次,i为外循环的次数。每次比较得到的结果是记录较小的那个数的位置,内循环结束,再进行位置的互换。5

算法举例5.查找

在计算机科学中,另外一种常用的算法是查找,即把一个特定的数据从数组或序列中找到并提供它所在的位置,即索引(下标),如图10-10所示。

对于数组或序列数据的查找有两种基本方法:顺序查找和折半查找。数组或序列无序或有序,顺序查找都可实现,而折半查找必须使用在已经排序的数组或序列中。

顺序查找从列表的第一个数据开始,当给定的数据与表中的数据匹配时,查找过程结束,给出这个数据所在数组或序列的位置。

5

算法举例12611531917

对数据量较小的数组或序列,顺序查找是没有什么问题的。对大量数据的数组或序列,这个算法的查找速度就变得非常慢了。如果数组或序列是无序的,则顺序查找是唯一的算法。对已经排序了的数组或序列可以使用折半查找。当然,无序的数组或序列也可以先进行排序再使用折半查找。

折半查找算法是指在在一个有序数据集中(假设数据元素递增排列),将搜索项与数据集的中间位置的数据元素进行比较,如果搜索项小于中间位置的数据元素,则只搜索数据集的前半部分;否则,搜索数据集的后半部分。

如果搜索项等于中间位置的数据元素,则返回该中间位置的数据元素的地址,搜索成功结束。折半查找算法的伪代码如下:5

算法举例FuncbinarySearch(list[0..N-1],DataElementsearchItem)//参数为需要查找的数据,返回数据位置{

intleft=0;//定义查找范围的左边界

intright=length-1;//定义查找范围的右边界

intmid=-1;//定义查找范围的中间位置

booleanfound=false;//定义查找结果标志

while(left<=rightand!found)//如果左边界小于等于右边界且未找到,就继续折半

{

mid=(left+right)/2;//以折半方式计算新的查找范围中间位置

if(list[mid]=searchItem)//如果中间位置的值等于要查找的值,就设置为已找到

found=true;5

算法举例5

算法举例else

if(list[mid]>searchItem)//如果中间位置的值大于要查找的数据,则重新设置查找范围的右边界

right=mid+1;

else//如果中间位置的值小于要查找的数据,则重新设置查找范围的左边界

left=mid+1;}if(found)//如果查找结果标志为已找到,则返回中间位置,否则返回-1returnmid;elsereturn-1;}如果采用递归方式,折半查找算法的伪代码如下:binarySearch(list[0..N-1],searchValue,left,right){//参数为数据序列、要查找的值、左边界、右边界

if(right<left)//如果右边界小于左边界,说明未找到

return-1;

mid=left+((right-left)/2);//计算查找范围的中间位置

if(list[mid]>searchValue)

//如果中间位置的值大于要查找的值,则递归查找左半部分

binarySearch(list,searchValue,left,mid-1);5

算法举例elseif(list[mid]<searchValue)

//如果中间位置的值小于要查找的值,则递归查找右半部分

binarySearch(list,searchValue,mid+1,right);

else

returnmid;

}5

算法举例5

算法举例假设要从一个有序数组或序列中查找值为75的数据位置,折半查找的计算过程如图10-10所示。03程序设计基础讲解程序设计的基础知识以及面向过程与面向对象程序设计思想01计算机语言概述02程序设计基本元素03面向过程的程序设计思想Contents目录04面向对象的程序设计思想1计算机语言概述程序设计语言泛指一切用于书写计算机程序的语言,包括汇编语言、机器语言以及高级语言。可以看出程序设计语言是计算机语言的一个子集。程序设计语言可分为低级语言与高级语言两大类。低级语言是与机器有关的语言,包括机器语言和汇编语言。高级语言是与机器无关的语言。1计算机语言概述1.机器语言机器语言是以“0”、“1”二进制代码形式表示的机器基本指令的集合,是计算机硬件唯一可以直接识别的语言。机器语言是最早出现的计算机语言,属于第一代程序设计语言。使用机器语言编写程序是十分痛苦的,因为这种语言直观性较差、难阅读、难修改。而且,由于每台计算机的指令系统往往各不相同,所以,在一台计算机上执行的程序,要想在中一台不同的计算机上执行,必须重新编写程序,造成了重复工作。但是,由于使用的是针对特定型号计算机的语言,故而运算效率是所有语言中最高的。1计算机语言概述2.汇编语言汇编语言是为了解决机器语言难于理解和记忆的缺点,用易于理解和记忆的名称和符号表示机器指令。例如,用“ADD”代表加法,“MOV”代表数据移动等。汇编语言比机器语言直观,使得程序的编写、纠错和维护变得相对简单了。汇编语言源程序需要由汇编程序翻译成机器语言程序才能执行。由于汇编语言还是针对特定硬件的一种程序设计语言,因此效率仍十分高,能准确发挥计算机硬件的功能和特长,程序精炼而质量高,所以至今仍是一种常用而强有力的软件开发工具。但汇编语言基本上还是一条指令对应一种基本操作,对机器硬件十分依赖,移植性不好。不论是机器语言还是汇编语言都是面向硬件具体操作的,要求使用者必须对硬件结构及其工作原理都十分熟悉,这对非计算机专业人员是难以做到的,对于计算机的推广应用是不利的。1计算机语言概述3.高级语言高级语言是人们为了解决低级语言的不足而设计的程序设计语言。它是一些接近于自然语言和数学语言的语句组成。因此,更接近于要解决问题的表示方法,并在一定程度上与机器无关。用高级语言编写的程序易学、易用、易维护。高级语言是有语法结构的,有着接近自然语意的指令集,高级语言编写出的程序称为源程序,该程序需要通过翻译系统编译或解释后才能被计算机执行。高级语言不依赖于计算机系统,不同的翻译程序可以把相同的高级语言程序翻译成不同计算机可执行的机器语言。这些机器语言是不同的,但它们的意义是一样的,执行效果是一样的。常见的高级语言有FORTRAN、Basic、Pascal、C、C++、Java、C#、Python等。2程序设计基本元素程序设计语言的基本元素是指大多数高级程序设计语言的必不可少的组成元素。一般包括语句、表达式、注释、数据类型、程序控制结构、子例程等。语句是组成语言的最小的独立元素。程序是计算机指令的序列,因此可以说程序是一个或多个计算机语句组成的序列。语句本身是由许多语言元素组成的。在语句中,常用的语言元素包括变量、常量、运算符、表达式、函数、赋值等。变量的名称应该遵循程序设计语言的标识符命名规则。不同的程序设计语言,标识符命名规则也不尽相同。为了增强程序源代码的可读性,变量的名称建议采用大小写字母结合的描述性名称。例如,用来存储学生姓名的studentName变量名称比x变量名称的可读性要高。程序设计基本元素程序设计语言元素语句:表达式、赋值表达式:变量、常量、运算符数据类型:数值、字符、布尔控制语句:顺序、分支、循环注释子例程程序设计基本元素程序是计算机指令的序列,因此可以说程序是一个或多个计算机语句组成的序列。语句本身是由许多语言元素组成的。常用的语言元素包括变量、常量、运算符、表达式、函数、赋值等。

printf("%-5d",i*100+j*10+k);

k=a*b*c+100+sum(a,2);表达式是构成语句的重要元素。表达式是常量、变量、运算符、函数调用等按照优先级规则组成的序列。

if(i*100+j*10+k==i*i*i+j*j*j+k*k*k)程序设计基本元素基本数据类型通过组合可以构成复杂的复合数据类型。一般地,基本数据类型包括:整数类型、浮点数据类型、字符类型和字符串类型、布尔类型、枚举类型等。程序设计基本元素变量的名称应该遵循程序设计语言的标识符命名规则。为了增强程序源代码的可读性,变量的名称建议采用大小写字母结合的描述性名称。例如,用来存储学生姓名的studentName变量名称比x变量名称的可读性要高。

intcount1,count2;

booleanisman;

char

studentname;程序设计基本元素注释是程序中的有助于理解代码的提示和说明。在处理注释时,任何编译程序或解释程序都会忽略注释。intcount1,count2;//count1代表1班人数,count2代表2班人数程序有三种基本结构类型,即顺序结构、条件分支结构和循环结构。除此以外,还有其他一些程序控制结构,例如异常处理等。程序设计基本元素程序三种基本控制结构类型switch(表达式){case1:…break;case2:…break;}for(inti=0;i<=100;i++){…}while(i<=100){…}do{…}while(i<=100)try{…}catch(e){…}finally{…}if(表达式){…}else{…}条件分支结构循环结构异常处理AA;BB;CC;顺序结构程序设计基本元素子例程是某个主程序的一部分代码,该代码执行特定的任务并且与主程序中的其他代码相对独立。子例程又被称为子程序、过程、方法、函数等。在主程序中可以调用子例程来执行。main()

{

int

i=1,j=1,k;

sum(i,j,10);

}intsum(inta,intb,intc)//子例程{intsum=0;sum=a+b+c;returnsum;}

3面向过程的程序设计思想高级语言分为面向过程的语言和面向对象的语言。其中,面向过程是一种以过程为中心的编程思想。面向过程也可称之为面向记录编程思想,就是分析出解决问题所需要的步骤,然后定义函数来实现每一个步骤,工作时只需要依次调用各个函数就可以了。假设需要编程控制一部智能手机,面向过程的编程思想是先定义开机、打电话、上网、关机等过程,接下来只需要在主程序中调用每个过程即可。以下伪代码表达了面向过程的程序设计思想。3面向过程的程序设计思想voidmain(){charnumber=;

start();//调用开机方法(过程函数)

call(number);//调用打电话方法(过程函数)

internet();//调用上网方法(过程函数)

close();//调用关机方法(过程函数)

……}start(){...}//开机方法(过程函数)具体实现call(char[]number){...}//打电话方法(过程函数)具体实现internet(){...}//上网方法(过程函数)具体实现close(){...}//关机方法(过程函数)具体实现……4面向对象的程序设计思想

面向对象是一种以事物为中心的编程思想,将抽象出的数据和方法(函数)封装到一个类(class)中,供程序设计者使用。

假设需要编程控制一部智能手机,面向对象的编程方法首先需要将手机实体抽象成类,需要定义类的静态属性,例如品牌、颜色、手机号码等,还要定义类的动态方法,例如设置手机属性、获取手机属性、开机、打电话等。以下伪代码表达了对手机实体类的定义。4面向对象的程序设计思想publicclassTelePhone{

Stringbrand=””;

Stringcolor=””;

Stringnumber=””;

voidsetBrand(Stringbrand){……}

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论