《算法与程序设计课件.ppt》由会员分享,可在线阅读,更多相关《算法与程序设计课件.ppt(84页珍藏版)》请在课桌文档上搜索。
1、第一章 揭开计算机解决问题的面纱,第一章 揭开计算机解决问题的面纱,第一节 算法,一、算法,1.概念:,计算机求解某一问题的方法,是能被机械的执行的指令的有穷集合。,实践,两个整数m=112和n=64,利用辗转相除法,求它们的最大公约数,1、112 除以 64,余数为2、除以 余数为3、除以 余数为4、112和64的最大公约数为,48,64,48,16,48,16,0,16,二、算法的基本特征输入:一个算法有0个或多个输入,以刻画运算对象的初始情况。确定性:算法的每一个步骤必须有确切的定义。有穷性:一个算法必须在有穷步骤之后结束。输出:算法有1个或多个输出。能行性:算法中有待执行的运算和操作必
2、须是相当基本的。,第一章 揭开计算机解决问题的面纱,第二节 算法的描述,一、算法的描述,概念:,人的思想要用语言来表达。算法是人求解问题的思想方法,是对解题过程的精确描述,同样也需要用语言来表示。表示算法的语言主要有自然语言、流程图和伪代码。,二、流程图,1、图形及功能:,图形 名称 功能,问题:鸡兔同笼问题。一个笼子里有鸡和兔,现在只知道里面一共有35个头,94只脚,鸡和兔各有多少只?试设计一个求解的算法,并用自然语言描述出来。,分析问题:设鸡数为x,兔数为y,已知笼子的头数是a,脚数是b,列方程:x+y=a,2x+4y=b:解得:x=2a-b/2,y=b/2-a,算法:1、输入a和b的值;
3、2、求x;3、求y;4、输出x,y的值;5、结束。,二、流程图,2、流程图示例(鸡兔同笼):,开始,结束,求x=2a-b/2,输出x,y的值,输入a和b的值,求y=b/2-a,二、流程图,3、练习:已知圆的半径r=6,试着自己动手画出求面积s的流程图。,二、流程图,2、流程图示例(鸡兔同笼):,开始,结束,求x=2a-b/2,输出x,y的值,输入a和b的值,求y=b/2-a,程序:Private Sub Command1_Click()a=InputBox(a=,输入头数)b=InputBox(b=,输入脚数)x=2*a-b/2y=b/2-aPrint 鸡数x=;x,兔数y=;yEnd Sub
4、,第三节 程序与程序设计语言,第一章 揭开计算机解决问题的面纱,1、程序设计语言,1、机器语言:2、汇编语言:3、高级语言:VB,2、VB简介,1、工程,2、VB简介,2、窗体与事件,窗体的Activate()事件,2、VB简介,3、程序的运行,2、VB简介,4、VB文件的保存及文件格式 文件格式:.frm.vbp,2、VB简介,4、VB的3种常用模式 设计模式 运行模式 中断模式,第二章 程序设计基础,第一节 VB语言,第二章 程序设计基础,一、VB语言概述,Private sub command1_click()const pi as single=3.14 dim r as single
5、,s as single r=inputbox(“r=”,”输入半径”)s=pi*r*r print“圆的面积s=”;sendsub,下面是一个“求半径为r的圆的面积”,请注意观察程序的组成结构,思考一下问题:1、程序有多少行,每一行的作用?2、如按语句作用区分,这个程序包含及部分?,定义事件过程(自带)说明常量pi(省略)说明变量r,s(省略)输入r的值 计算圆的面积 把计算结果输出到窗体上 过程结束(自带),一、VB语言概述,VB程序一般包含如下部分:1、数据类型说明部分2、数据输入部分3、数据处理部分4、数据输出部分,一、VB语言概述,1、常用数据类型,一、VB语言概述,2、常量:指在运
6、行过程中始终保持不变的常数、字符串等。如上程序段中的3.14、“r=”、“输入半径”等。,一、VB语言概述,3、变量:在程序处理数据时,对于输入的数据、参加运算的数据、运行结果等临时数据,通常把它们暂时存储在计算机的内存中。变量就是命名的内存单元位置。,一、VB语言概述,4、运算符,一、VB语言概述,5、常用函数:内部函数和自定义函数,练习:表达式ABS(-3.6)*Sqr(100)的值是()A:-360 B:360 C:-36 D:36,一、VB语言概述,6、表达式:指由运算符、圆括号、将变量、函数等以合理的形式连接起来的式子,第二节 程序的顺序结构,第二章 程序设计基础,一、赋值语句,基本
7、格式:变量=表达式例:a=b a=123 a=a+10,第三句表示将变量a的值加上10后再赋给a,注意与数学表达式的区别,实践:如果a=30,b=40,则依次执行语句t=a,a=b,b=t后,两个变量a,b的值会怎样?,变量t,变量a,变量b,开始状态,第一步:t=a,第二步:a=b,第三步:b=t,30,40,40,40,30,40,40,30,30,30,30,30,40,一、赋值语句,二、Print语句,1.基本格式:print 输出内容,2.功能:(1)计算功能(2)将值输出到窗体上,3.输出内容说明:,(1)输出内容:引号引起来的字符串原样输出Print 你好 结果为 你好,(2)输
8、出内容:表达式先计算,后输出计算值;Print 53 结果为 8Print x=;53 结果为 x=8,二、Print语句,4.输出项的间隔符:输出内容可以是一个或多个。如果是多个输出内容,则各输出内容之间可以用逗号或分号分隔,(1)分号:则后面一个输出内容紧跟前一个输出(紧凑格)Print 早安;中国 结果为 早安中国,(2)逗号,则按照分区(14个字符位置)格式输出(分区格)Print“早安”,“中国”结果为 早安中国,(3)如果Print中没有输出内容,则表达输出一个空行。print“x=”;x,“y=”;y 结果为 x=x y=y Print Print China China,二、P
9、rint语句,3.实践1:运行下面的代码,观察结果,体会输出语句中各个符号的作用。,a=5 b=3 print“a=”;a,“b=”;b,二、Print语句,3.实践2:运行下面的代码,观察结果,体会输出语句中各个符号的作用。,a=5 b=3 print“a=”;a;“b=”;b,二、Print语句,3.实践3:运行下面的代码,观察结果,体会输出语句中各个符号的作用。,a=5 b=3print“a=”;a,Print“b=”;b,二、Print语句,3.实践4:运行下面的代码,观察结果,体会输出语句中各个符号的作用。,a=5 b=3print“a=”;aPrint“b=”;b,二、Print语
10、句,3.实践5:输出以下图形*,print“*”Print“*”Print“*”,三、输入函数,1.Inputbox()函数,基本格式:变量=Inputbox(提示信息,标题,默认值,位置)例:a=inputbox(“a=”,”输入”,12,100,20),说明:由于inputbox()是一个函数,因此不能单独使用。一定要把它的返回值赋给一个变量。该函数返回值的是字符串类型,三、输入函数,2.Inputbox()函数应用,例1:编程求半径为r=6的圆的面积,提问:如果圆的半径为8,15,30分别计算圆的面积,上述程序段如何修改?,r=6 s=3.14*r*r print“圆的面积s=”;s,提
11、问:如果计算任意半径圆的面积,上述程序如何修改?,三、输入函数,2.Inputbox()函数应用,例2:编程求半径为r=6的圆的面积,r=inputbox(“r=”,”输入半径”)s=3.14*r*r print“圆的面积s=”;s,提问:例2与例1相比,好在哪?,val(),四、顺序结构应用,1.已知长方体的长、宽、高,编程求长方体的全面积和体积。,分析:设长、宽、高分别为a,b,c,长方体6个面的面积两两相等。所以面积为:s=2*(a*b+a*c+b*c)体积为:V=a*b*c,四、顺序结构应用,1.已知长方体的长、宽、高,编程求长方体的全面积和体积。,a=val(inputbox(“a=
12、”,“输入”))b=val(inputbox(“b=”,“输入”))c=val(inputbox(“c=”,“输入”))s=2*(a*b+a*c+b*c)V=a*b*cPrint“全面积为”;s,“体积为”;v,四、顺序结构应用,2.从键盘上输入一个三位数,然后将它反向输出。如输入456,输出应为654。,分析:设x为三位数,y为x的反向输出。因为x的百位、十位、个位分别为:X1=x100X2=(x-x1*100)10X3=x-x1*100-x2*10所以:Y=x3*100+x2*10+x1,四、顺序结构应用,2.从键盘上输入一个三位数,然后将它反向输出。如输入456,输出应为654。,X=v
13、al(inputbox(“x=”,“输入”))X1=x100X2=(x-x1*100)10X3=x-x1*100-x2*10Y=x3*100+x2*10+x1Print“三位数”;x;“的反向数为”;y,四、顺序结构应用,3.练习:一列火车在某时的速度为v=40km/h,现以加速度a=0.15m/s2加速行驶,试编写一个程序,求2min后的速度v1和距离开始点的距离s,a=val(inputbox(“v=”,“输入初始速度”))v=val(inputbox(“a=”,“输入加速度”))v1=v+120*as=120*v+(a*t*t)/2Print“速度为”;v1;“距离为”;s,第二节 选择
14、结构程序设计,第二章 程序设计基础,一、简单IF语句,引例IF语句的格式IF语句的执行过程实践,一、简单IF语句,请你大声朗读:If you fell happy then you wil smile。If you fell happy then you will say smile else you will sad。,这是英文中用IF来描述根据条件的不同,会有不同的结果的例子,而在VB中我们能否根据不同的条件,执行不同的语句呢?,格式1:IF条件then 语句1,格式2IF条件then 语句组1end if,单分支IF语句,单分支IF语句的执行过程,单分支IF语句实例分段函数,分析:两个范
15、围,因此要判断使用两个单分支可以解决,单分支IF语句实例分段函数,单分支IF语句实例分段函数,x=inputbox(“输入x的值”)If x0 then y=5+xIf x=0 then y=x2+12print y,格式1:IF 条件 then 语句1 else 语句2,格式2:If 条件 then 语句组1Else 语句组2End if,双分支IF语句,单分支:If 条件 then语句组endif,双分支IF语句执行过程,双分支IF语句实例分段函数,分析:两个范围,因此要判断使用一个双分支可以解决,双分支IF语句实例分段函数,x=inputbox(“输入x的值”)If x0 then y=
16、5+x else y=x2+12print y,分支IF语句应用,身体质量指数(BMI)是衡量身体健康与否的一种标准,一般认为身体质量指数(BMI)在18 至25 之间是健康的。计算BMI 的公式:体重(w)除以身高(h)的平方,体重单位为千克,身高单位为米。,分支IF语句应用,1、判断闰年问题,分析:输入年份n n能被400整除或n不能被100整除且能被4整除闰年,分支IF语句应用,2、编写一元二次方程的求解,要求判断方程是否有根,如没有则给出相应提示信息。,分析:ax2+bx+c 输入系数a、b、c b2-4ac 大于0 输出两个根 小于0 输出无实根,广东汕头华侨中学技术组,2、编写一元
17、二次方程的求解,要求判断方程是否有根,如没有则给出相应提示信息。,a=_b=_c=_d=_if _ then x1=_ x2=(-b-sqr(d))/(2*a)print“x1=”;x1,”x2=”;x2else print“无实根”endif,多重选择语句,引例多重选择语句的格式简单应用多重选择语句的执行过程,多重选择语句,If bmi18 and bmi22 and bmi25 and bmi29.9 then print“超重”,上述程序段没有考虑小于18和大于30的情况,如果这样的话就是5个if语句了。上述程序运行时进行了几次判断?对于这种多重选择你认为此程序段的可读性与效率如何?,多
18、重选择语句,1、多重选择语句格式,Select case 表达式 case 表达式列表1 语句组1 case 表达式列表2 语句组2 case else 语句组n+1End select,说明:表达式和列表可以使数值或字符表达式和列表的类型必须相同,列表可以有三种形式 表达式1,表达式2,如1,8 表达式1 TO 表达式2 如18 to 21.9 IS 关系表达式 如 IS29.9,多重选择语句,W=inputbox(“输入体重”)H=inputbox(“输入身高”)Bmi=w/h2select case bmi case 18 to 21.9 print“一般体重”case 22 to 24
19、.9 print“理想体重”case 25 to 29.9 print“超重”End select,请你修改左边的程序,把身体质量指数小于18和大于29.9的情况也用多重选择语句表示出来,比较if语句和多重选择语句区别。提示可读性和效率(判断次数),第三节 循环结构程序设计,第二章 程序设计基础,循环语句,请单步执行下面的程序段并回答以下问题:,For=1 to 5 print“*”Next,i,i,1、语句print“*”执行了多少次?,2、你认为哪个变量决定循环的次数?,循环语句,循环语句格式:,For 循环变量=初值 to 终值 step 步长 语句组Next 循环变量,1.循环变量为数
20、值型变量。,2.初值、终值、步长均为数值型变量。,3.当初值小于终值时,步长应为正数;当初值大于终值时,步长值为负数;如果省略step,则步长为1.,4.语句组可以是一个或多个语句,叫循环体。,5.循环体执行的次数为(终值-初值)/步长+1的整数部分。,For 循环变量=初值 to 终值 step 步长 语句组Next 循环变量,循环变量=初值,语句组,Next 循环变量,终值,初值 to 终值,循环语句,练习:,For a=1 to 10 print aNext a,For a=10 to 1 step-1 a=a-1 print aNext a,1210,97531,循环语句,练习:,Fo
21、r a=1 to 10 step 2 print aNext aprint a,1357911,循环语句简单应用,累加:,S=0For a=1 to 10 s=s+aNext aprint s,55,1+2+3+9+10,循环语句简单应用,累乘:,S=1For a=1 to 10 s=s*aNext aprint s,3628800,1*2*3*9*10,循环语句简单应用,练习:,暑假里同学帮助计算居民楼里每户的电费,楼内共有10户居民,每度电0.7元,编一个程序,输入每一户的用电量,然后计算应缴纳的电费,再输入下一个用户的电量,计算应缴纳的电费,一直重复下去直到全部用户计算完毕。,分析:一户
22、电费的计算 设n表示电量,输入n的值 设f表示电费,f=0.7*n 输出f重复以上三步10次即可,循环语句简单应用,练习:,暑假里同学帮助计算居民楼里每户的电费,楼内共有10户居民,每度电0.7元,编一个程序,输入每一户的用电量,然后计算应缴纳的电费,再输入下一个用户的电量,计算应缴纳的电费,一直重复下去直到全部用户计算完毕。,For i=1 to 10 n=inputbox(“输入电量”)f=0.7*n print“该户电费为”;fNext i,双重循环,若在一个循环结构中又包含着另一个循环结构,则称双重循环结构。,For i=1 to 5 for j=1 to 3 next j Next
23、i,For i=1 to 5 for j=1 to 3 next i Next j,For/next不能交叉,双重循环,练习:,For i=4 to 5 for j=3 to 3 print i,j next jNext i,For i=3 to 5 for j=1 to 10 if ji then print i,j next j Next i,双重循环,练习:,双重循环,编程输出九九乘法表:,陈婷今年17岁了,她的生日正好是3月12日植树节。今年植树节老师带同学们到公园里去植树。陈婷很高兴,一个人就栽了3棵树,过来一个有意义的生日。她想,如果从明年开始每年过生日的时候都去植树,并且一年比一年多栽一棵树,这样下去,到多少岁才能累计种到或超过100棵树?,