用程序解决实际问题_第1页
用程序解决实际问题_第2页
用程序解决实际问题_第3页
用程序解决实际问题_第4页
用程序解决实际问题_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

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

文档简介

1、算法与程序设计 一个猎人带着一只羊,一只狼和一棵白菜回家,路上遇到一条河。河边只有一条船,但船太小,一次最多只可载猎人和另一样东西过河。但猎人不在时,狼要吃羊,羊要吃白菜。请问怎样才能把狼、羊、白菜都安全运过河? 人和羊人人和狼人和羊人和菜人人和羊 人和羊人人和菜人和羊人和狼人人和羊 另一种方法:一、算法的概念和表示方法算法就是为解决某一问题而设计的确定的有限的步骤 。是在有限步骤内求解某一问题所使用的具有精确定义的一系列操作规则。 面对具体问题,我们知道了算法,那么这个算法又该如何描述呢? 开 始结 束人和羊过河人 回 来人和狼过河人和羊回来人和菜过河人 回 来人和羊过河人和羊人人和狼人和羊

2、人和菜人人和羊 图形符号符号名称说明起始、终止框 表示算法的开始或结束输入、输出框 标明输入、输出的内容处理框 标明进行什么处理判定框 标明判定条件并在框外标明判定后的两种结果的流向流线 表示从某一框到另一框的流向连接圈 表示算法流向出口或入口连接点流程图符号描述算法的方法:1. 用自然语言描述算法2. 用流程图描述算法(即框图和结构化流程图N-S图) 用各种图形符号来描述算法 能清晰、直观、形象地描述各种算法。 3. 用伪代码或直接用计算机程序描述算法如:read (r);s 3.14*r*r;write (“圆面积为:”, s);伪代码:介于自然语言和计算机程序语言之间。算法的特点:1)有

3、穷性(一个算法必须保证执行有限步骤之后结束 )2)确定性( 每一步骤必须有确切的定义 ) 如:输出:L/ 自然数。 3)可行性(算法中每一个步骤都是要能够实际做到 的,而且是在有限的时间内完成。) 如:如要求X的算术平方根,就要保证X是不小于04)有0个或多个输入。5)必须有一个或多个输出。 算法是程序设计的“灵魂”,独立于程序设计语言,一个算法可以用多种程序设计语言来实现。 猜价格游戏:一件商品的价格在11000之间,要求尽快地猜出商品的价格。方法1(枚举法): 从1、2、3、1000,依次猜,直到猜对为止。方法2(二分法): 从1和1000的中间数500开始,如猜大了则在1499对分,如猜

4、小了则在5011000对分,.,如此反复使用二分法,直到猜对为止。用二分法猜价格的算法流程图1 用计算机解决问题的一般过程1.需求分析- 分析要求计算机干什么?2.设计算法-设计解决问题的有限求解步骤。(精确、有效和可预期的结果)3.编写程序-把算法写成计算机语言的程序。4.上机调试-观察程序运行的结果,改错并完善程序。需求分析设计算法编写程序上机运行和调试用程序解决实际问题计算机是如何工作的? 通过存储在计算机中的软件,按照软件的指令完成所需要的操作和处理信息。这些软件的核心是复杂而功能强大的程序。 在工作或学习中遇到现成软件解决不了的问题时,需要自己设计程序,才能让计算机按实际问题的要求完

5、成任务。如: 设计一个“神舟7号” 发射的倒计时。 猜价格游戏的程序示意图3显示“输入价格”4输入价格到变量T5比较输入价格T和商品价格S6如果TS,转到128如果T=S,显示“猜对了!”9结束10显示“猜小了!”11转到 312显示“猜大了!”13转到 3指令部分:一组指令系列,每条指令执行一个操作,描述了解决问题的计算过程。数据区:用于存储计算所需的原始数据、中间结果和最终结果1商品价格变量S2商品价格变量T一个程序通常由指令部分和数据部分组成程序代码程 序变量变量的命名以字母开头,只能由字母、数字或下划线组成字母大小写都可以,变量名长度适当变量名与实际意义变量类型 (数值型、字符型 )程

6、序中的变量和数学公式中的变量是有区别的;程序中的变量是计算过程中要用的数据的存储单元;一旦把数据存储到某个变量,它将永久保存,直到有新的数据存储进去;主要是“记忆”功能,“取之不尽,用之不竭” 启动visio2007,画书本P9上的图1.2 猜价格算法流程图,以熟悉该软件的使用。并保存在H盘上。 一个人带三只老虎和三头牛过河。只有一条船,同船可以容一个人和两只动物。没有人在的时候,如果老虎的数量不少于牛的数量就会吃掉牛。设计安全渡河的算法。 请使用visio2007,画出算法流程图,并保存在H盘上。知识回顾1、什么是算法?2、算法在计算机解决问题中起着什么样的作用?3、算法有哪些特点?4、描述

7、算法的方法有哪几种?5、流程图中常用的符号有哪些?算法计算机解决问题核心和基础转变成计算机能够执行的一条条指令程序语言(如:VB、C、C+、Java)程序设计语言VB,是Windows环境下广泛使用的一种应用程序开发工具。它是一种可视化的(visual)程序设计工具,能用它来开发具有图形用户界面(GUI)的应用程序。VB简介边演示边讲解task1,来熟悉VB操作界面和简单的应用程序界面设计学生完成task1VB中文件的保存:在VB中,任何一个简单的小程序都是一个“工程”,所以它包含了一系列的文件。常见的有:VBP文件: 与vb工程有关的文件和对象清单,是一个文本文件。FRM文件: 包含窗体及控

8、件的属性设置及相关程序代码等。OCX文件: ActiveX控件文件,为VB提供扩展控件。BAS文件: 标准模块文件。类与对象:类是对相同性质的对象的一种抽象,而一个对象则是类的一个“实例”。就如“汽车”这个概念是对各种型号不同但性质相同的小轿车、吉普车、大客车等对象的一种抽象。对象是客观存在的事物或概念,如:一支铅笔、一辆公共汽车、一个圆等对象有两个共同的特点:1、每个对象都有自己的状态,并且其状态是通过若干个属性(property)来描述的;2、每个对象都有自己的行为,即对属性进行操作和处理的方法(method)task2分 析设计算法编写程序运行和调试事件和事件驱动:事件就是发生在对象上的

9、事情,通常是用户在对象上激发的一种动作。事件驱动:一个事件的发生,可以引起某个对象上某个方法(事件处理过程)的执行,即由某个事件驱动了相应的事件处理过程的执行。Private Sub Command1_Click( )Text1.ForeColor = vbRedEnd SubPrivate Sub Command2_Click( )Text1.Text = End SubPrivate Sub Command3_Click( )EndEnd Sub学生完成task2对象状态(一组数据)方法(一组代码)对象是状态和方法的封装在面向对象的程序设计语言中,用类似a.b的形式来指称对象a的属性b。例

10、如:Text1.text指出了对象Text1的属性Text。有两种情况可以改变对象的属性:1)程序设计时,可根据需要在属性窗口中设定对象初始状态的属性.2)在程序运行中,可按需要使用赋值语句改变对象的属性。其格式为:如: Text1.ForeColor = vbRed 对象名 . 属性名 = task3【例】已知圆半径,求面积。要求:1、在Visio中画出算法流程图; 2、根据算法,在VB中编写程序;分析:(1)解决问题所需要的数据输入半径r(2)确定要计算机解决什么问题,即“做什么” 计算圆面积s(3)明确最后得到的结果输出面积s需求分析设计算法VB设计程序的四个步骤:程序界面设计设置对象的

11、初始属性程序代码设计调试保存程序VB设计程序的基本思想方法 Visual Basic高级语言是一种可化视的、面向对象的程序设计语言。知识回顾Private Sub Command1_Click( ) Dim r, s As Double r = Val(Text1.Text) s = 3.1416 * r * r Text2.Text = Str(s)End Sub子程序VB的一个事件处理过程就是一个子程序,其结构如下:Private Sub 对象名称_事件名称() 在事件处理过程中使用的变量的说明 程序代码序列 End Sub 在VB中,事件是属于控件对象的,只有在此对象上发生了相应的事件,

12、 VB将自动启动该子程序并执行。操作2操作1顺序结构流程图一、概念顺序结构:严格按照先后顺序执行各个步骤的算法结构 。顺序结构. Vb中的变量和变量定义常用的数据类型类型名称 表示数据 取值范围 Integer 整数 -32768到32767 Long 长整数 -2147483648到2147483647 Single 单精度浮点数 -3.402823E38到1.401298E-451.401298E-45到3.402823E38 Double 双精度浮点数 +/-1.79769313486232D308到+/-4.94065645841247D-324String 字符串 0到65535个字

13、符 Booleam逻辑True / FalseData日期 日期和时间VB中可使用Dim语句来定义变量。Dim , As 如: Dim r, s, a as single Private Sub Command1_Click( ) Dim r, s As Double r = Val(Text1.Text) s = 3.1416 * r * r Text2.Text = Str(s)End Sub2、常量和变量变量:程序运行过程中,取值可以改变的量。变量对应计算机内部的存储单元。命名规则:以字母开头,只能由字母、数字或下划线组成 字母大小写都可以,变量名长度适当 变量名与实际意义 变量类型 (

14、数值型、字符型 )赋值号 r=3变量名变量值存储单元r3例1:执行下列赋值语句后,写出a,b,c,d的结果。说明变量的特点a3a5bacadab3a b c d35 5 5 5 3 变量先赋值,后使用;变量可反复使用,即“取之不尽”;变量可重新赋值,即“赋值即覆盖”。5553VB程序验证task1变量a的值为1,变量b的值为2,通过什么方法,可以交换a、b的值?要求:1、在visio中画出算法流程图 2、根据你设计的算法流程图用列表法 分析两变量值的变化,有没有起到 交换作用? 3、使用VB来验证顺序结构【例1】交换两个变量的值。-借用第三变量 aba=11b=22a=b2b=a2引入第三个变

15、量t 为了防止有用的数据丢失,预先将a的值保护起来。 分析原因:赋值即覆盖atba1b2abbataabbt流程图实现常量和变量常量:其值不能被改变的量称为常量赋值变量常量变量变量1a赋值变量表达式s = 3.1416 * r * rs 3.1416 * r * rVb程序代码中的写法3. 赋值语句和表达式和常用的数据运算变量名 = 表达式赋值语句的格式对象名. 属性名 = 表达式赋值语句的作用是把表达式计算的结果存储到左边的变量中,或存储到左边的对象的属性中如: s = 3.1416*r*r*a / 360 text1.text = str (s)如: vt * vt / (2 * a) (

16、-b + sqr ( b*b-4*a*c ) ) / (2*a) 10 / 4 2 and “A” “D”表达式由运算符把常量、变量等联系在一起的式子。4、运算符和表达式算术运算符 (设a=3)运算符优先级例结果 (乘幂)1a29* ( 乘 )2a*a*a27/ ( 除 )210/a3.33333333Mod (求余)310 Mod a1+ ( 加 )410 + a13- ( 减 )4a - 10-7例:5+10 mod 9 / 3 +2 2 结果是:316101044、运算符和表达式字符串运算符与字符串表达式 字符串运算符有: 、+ 。 功能是字符串连接例: ABC + EFG ”ABCEF

17、G” VB & 程序设计教程 ”VB程序设计教程”说明:当连接符两旁的操作量都为字符串时,上述两个连接符等价。如果操作量为数字时,它们的区别是: +(连接运算):只要有一个操作量为数值,则进行数值运算; &(连接运算):数值会自动转换为字符串进行连接操作。 4、运算符和表达式关系运算符与关系表达式 、=、=、=、。 实例结果15+10= ThatTrue4、运算符和表达式逻辑运算符与逻辑表达式 and、or、not 运算符优先级例结果not (非)1not 52Falseand (与)252 and 62 or 6=字符运算符关系运算符逻辑运算 */Mod(求余)+_+&=notandor知识

18、回顾1、什么是顺序结构?2、变量有哪些特点?4、给程序中的变量提供数值有哪几种方式?3、我们是采用什么方法来交换两变量的值的?5、表达式中各类运算的优先级是怎样的?6、在程序运行过程中,我们使用什么方法追踪 变量的值?顺序结构【例】键盘输入一个二位正整数n,输出它的十位数x。分析:(1)解决问题需要的数据 输入一个二位正整数(2)要计算机取出其中的十位 数x x=int(n/10)(3)输出x开 始输出x结 束xint(n/10)输入任意二位数n5) 函数 VB还提供了各种程序设计所需要的函数,下表列出了一些常用的函数及其功能。函数名函数的功能实 例abs(number)返回数字的绝对值abs

19、(-5) 5sqr(number)返回数值的平方根sqr(9) 3int(number)将浮点型数据转换为小于或等于该数的最大整数 int(5.8) 5, int(10/3) 3int(-5.3) - 6sin(number)返回某个角的正弦值sin(30*3.14/180) 0.5val(string)把字符串转换为数字val(“15”) 15str(number)把数值转换为字符串str(2007 ) “2007”5. 数据运算的次序:有时一个表达式中使用了多种类型的运算, 其先后运算的次序为:函数算术运算和字符运算关系运算逻辑运算 另外,使用括号则可以改变运算顺序。括号中的运算优先进行。

20、在大多数程序设计语言中,一般只使用小括号。如:(22-1)*3+1) / 4 2 and “A” “D” 10 / 4 2 and “A” “D”2.5 2 and “A” “D”T and FF例1:上完体育课,如果是上午最后一节,下课后去 食堂吃饭;否则,进教室上课。分支结构双分支结构操作2条件NY操作1流程线,走直角,自上而下一、概念分支结构:根据给定条件是否成立而决定执行不同步骤的算法结构。 分支结构双分支结构与程序设计语句描述:双分支的语句格式:IF THEN ELSE END IFIFELSETHEN条件END IF例2:从键盘输入的两个不相等的数,打印出其中较大的数。(双分支结构

21、) 请画出流程图主要程序代码:Dim a,b as singlea=InputBox(“请输入第一个数”)b=InputBox(“请输入第二个数”)IFab THEN Print aELSE Print bEND IFvb验证练习1:求分段函数值 y=x2 x3 2x+1 x 3 Then y = x * xElse y = 2 * x + 1End IfPrint y例3:如果下雨,带伞后出门,否则直接出门。操作单分支条件NY判断框入口判断框出口汇聚点入口汇聚点出口分支结构单分支结构单分支结构是双分支结构的一种特例。单分支的语句格式:IF THEN END IF单分支结构与程序设计语句描述:

22、IFTHEN条件END IF例4:输入一个数到变量a,输出它的绝对值(不用绝对值函数)。请画出流程图,并用vb验证vb验证主要程序代码:a = InputBox(输入一个数)If a 0 Then a = -aEnd IfPrint a练习2:输入两个不相等的数a,b,比较大小,将大数放在a中,小数放在b中,然后输出a,b。(单分支结构)请画出流程图,并用vb验证vb验证练习3:某超市促销苹果,购买一斤苹果,为每斤3元,购买5斤以下每斤原价;超过5斤部分每斤打8折,输入购买的斤数,输出应付款额.(双分支结构)vb验证练习2:输入两个不相等的数a,b,比较大小,将大数放在a中,小数放在b中,然后

23、输出a,b。(单分支结构)程序代码:变量声明(略)a=InputBox(“请输入第一个数”) b=InputBox(“请输入第二个数”) IF ab THEN t=a b=a a=tEND IF Print a,b练习3:某超市促销苹果,购买一斤苹果,为每斤3元,购买5斤以下每斤原价;超过5斤部分每斤打8折,输入购买的斤数,输出应付款额.(双分支结构)程序代码:weight=InputBox(“请输入购买苹果的斤数:”)IF weight0) 0 (x=0) -1 (x0) 此处是处理框,其中的y=0是赋值语句,=是赋值号。此处是判断框,其中x=0是关系表达式,=是关系运算符。分支的嵌套程序代

24、码:变量声明(略)x=InputBox(“请输入x的值”)IF x0 THEN y=-1ELSE IF x=0 THEN y=0 ELSE y=1 END IFEND IF Print y练习4:购买地铁车票:乘1-4 站 3元/位;5-9站 4元/位;9站以上5元/位;输入人数person、站数n,输出应付款pay。请画出流程图,并用vb验证程序代码:person=InputBox(“请输入乘车的人数:”)n=InputBox(“请输入乘车的站数”)IF n=4 THEN pay=person*3ELSE IF n=9 THEN pay=person*4 ELSE pay=person*5

25、END IFEND IFPrint pay拓展练习1:输入一元二次方程ax2+bx+c=0的系数a、b、c(a0), 计算一元二次方程的根。程序代码:变量声明(略)a=InputBox(“请输入第一个系数”)b=InputBox(“请输入第二个系数”)c=InputBox(“请输入第三个系数”)d=b*b-4*b*cIF d0 THEN Print “方程无实数解。”ELSE IF d=0 THEN x=-b/(2*a) Print “方程有两个相同的实数解:”,x,x ELSE x1=(-b+sqr(d)/(2*a) x2=(-b-sqr(d)/(2*a) Print “方程有两个不同的实数

26、解:”,x1,x2 END IFEND IF 拓展练习2:某手机话费套餐规定:每月60元,可通话300分钟,超过300分钟的部分,另按每分钟0.4元计算。键盘输入当月通话时间(分钟),计算当月实际需付的手机费。如果输入的通话时间小于0,则应输出“输入数据有误”的提示信息。 变量声明(略)t=InputBox(“请输入通话的时间:”)IF t=0 THEN Print “输入数据有误”ELSE IF t=300 THEN m=60 ELSE m=60+(t-300)*0.4 END IFEND IF Print m 例6:输入三个不相等的数a,b,c ,将最大数赋值给变量max并输出。如果ab如

27、果acmax=a如果acmax=c如果ab如果bcmax=b如果b=b THEN IF a=c THEN max=a ELSE max=c END IFELSE IF b=c THEN max=b ELSE max=c END IFEND IFIF a=b THEN IF a=c THEN max=a ELSE max=c END IFELSE IF b=c THEN max=b ELSE max=c END IFEND IFIF a=b and a=c THEN max=aELSE IF b=a and b=c THEN max=b ELSE max=c END IFEND IFPRINT

28、maxIF a=b and a=c THEN max=aEND IFIF b=a and b=c THEN max=bEND IFIF c=a and c=b THEN max=cEND IFPRINT max利用分支嵌套的思想来理顺数之间的关系,追求的是逻辑思维过程,而非最后的结果。擂台法:max=aIF bmax THEN max=bEND IFIF cmax THEN max=cEND IF例1:过马路问题循环结构循环体循环条件当型循环循环结构:指对某些操作进行重复执行的结构。 步骤B条件步骤A是否步骤A条件否是分支结构特点:有判断框,判断框内为循环条件;有返回的流程线;循环结构只有一个

29、入口,一个出口。 流程图模式:(1)循环体画在判断框下面;(2)循环条件成立,画在判断框下面的一个顶点上,进入循环体;(3)循环条件不成立,画在判断框右面的一个顶点,并向下转到循环结构的后续步骤,退出循环结构 ;循环体循环条件循环结构程序设计语句循环结构DO WHILE 循环体 LOOP循环条件循环体DO WHILELOOP例2:输出由30个“=”组成的一行分割线。i=0i30初值循环条件循环体递增量i初值i终值步长“”个数退出循环后i的值1 30 1 30 310 29 1 30 301 n 1 n n+12 60 2 30 62若需要循环次数为n,通常循环变量i初值为1,终值为n,步长为1

30、,判断条件为i=n,计数语句i=i+1位于循环体最后。 i循环变量计数器循环结构例题循环语句For i=初值 To 终值 循环体 Next i i=1Do while i=30 Print “=” i=i+1loop 例2:输出由30个“=”组成的一行分割线。(计数法)Vb验证例3:键盘输入五个数,求它们的和s。“和”初值为0计数器初值求和 程序代码:s=0i=1DO WHILE i=5 x=InputBox(“ 请输入一个数据:”) s=s+x i=i+1LOOP Print s累加器Vb验证例4:计算s=1+2+3+4+5的值。循环结构例题程序代码:s=0i=1DO WHILE i20最小

31、的n值。 程序代码:s=0i=1DO WHILE s=20 s=s+i i=i+1LOOP n=i-1 Print n(标志法)Vb验证例1:过马路问题循环结构例题是绿灯吗?循环体循环条件直到型循环输出结果_4当型循环直到型循环当型循环中的循环体有可能一次也不执行,直到型循环中的循环体至少要执行一次。【例】求s=123n的 值,其中n由键盘输入。S=1 : i=1do while i0 then x=10.。常用的高级语言有Pascal 、C、C+ +、 VB、 LOGO、 Java 等。高级语言的优点是:易学易用、通用性好、便于修改和维护 用高级语言编制的程序(源程序)必须 用相应的高级语言

32、编译系统软件“翻译”成机器语言程序(目标程序)才能执行。试卷分析1、2、4、5、6、7、8、9、10、知识回顾一. 用计算机解决问题的一般过程需求分析设计算法编写程序上机调试二. 算法是为解决某一问题而设计的、确定的、有限的步骤。 三种算法的描述方法: 1. 自然语言; 2. 流程图; 3. 程序三. 三类常用的程序设计语言: 1. 机器语言 (计算机能直接识别和执行的语言); 2. 汇编语言 3. 高级语言解一元二次方程 ax2 + bx + c=0 (a0)的程序设计1.需求分析 依次输入系数a, b, c 的值,输出方程的解。.设计算法D = b*b- 4*a*cD=0X1= (-b+s

33、qr(d) / (2*a) X2=(-b-sqr(d) / (2*a) 输出”无实数解”输入a, b, c输出X1, X2startendTF理解并解释流程图的操作过程。选择(分支)模式根据判别条件是否满足来选择两个或若干个处理步骤中的一个。.设计程序1 )设计程序界面2 )设置对象初始属性控件名称属性名称属性初值form1caption解一元二次方程text1texttext2texttext3textLabel1caption请输入一元二次方程的系数Label2captionx2 +2Label3captionx +Label4caption=0Label5captionx1=Label6

34、captionLabel7captionx2=Label8captioncommand1caption解方程command2caption清空3) 程序代码设计4) 调试程序,以equation为文件主名,保存程序的窗体文件(.frm)和工程文件(.vbp)。Private Sub Command1_Click()Dim a, b, c As SingleDim x1, x2, d As Singlea = Val(Text1.Text)b = c = d = b * b - 4 * a * cIf d = 0 Then x1 = (-b + sqr( b2-4*a*c) / (2*a) x2 = Label6.Caption = x1 else Label6.Caption = “本方程无实数解! Label8.Caption = “本方程无实数解!End IfEnd SubPrivate Sub Command2_Click() EndEnd Sub思考:在调试程序时,至少要输入几组数据来验证才能保证程序的正确性?为了能方便地调试程序,应输入什么样的数据?abc12113212

温馨提示

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

最新文档

评论

0/150

提交评论