【8】数值计算_第1页
【8】数值计算_第2页
【8】数值计算_第3页
【8】数值计算_第4页
【8】数值计算_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、(授课讲稿) 吴剑辉第八讲 数值计算 Logo语言是一种绘画功能很强的程序设计语言。同时,它的计算功能也毫不逊色。可以说,其他计算机语言提供的计算能力,Logo语言都能实现。一、Logo的数和算术运算二、变量、函数及表达式三、数值计算程序选编一、Logo的数和算术运算1、Logo的数 、大家熟悉的十进制整数和小数在Logo语言中任意使用。例如:198913,60285,4.73,13.85,18.0。 、Logo可以小数形式表示在1.00E6到1.00E+6之间的数。超过此范围的数,Logo会自动转换为科学记数法。例如:1000000应写成:1.00E+06,1356108应写成:1.36E+

2、11, 4.27 106应写成: 4.27E+06, 5. 31015 应写成:5.30E15。 说明:E前面保留两位小数的数,而E后面表示正或负指数。( 1.57E+07 ) 想一想,做一做:123108 12344566 987654321 10000000000.000012 0.0000034 765432111 1.698 107 15687347.609 LOGO科学计数法是多少?科学计数法是多少? Random x 此函数能随机地产生 1-X 间的一个正整数 Random 20 (random 100)/200 (random 100)*2 (x-1)+ random( y+1-

3、x) 100+ random 100、各种进位制数:Logo的数可用多种进位制数表示。 、十进制数,如123、123、二进制数,如(1010)2是表示二进制数1010。1010的值:1*23+0*22+1*2+0=8+2=10,是十进数的10。、十六进制数,如:(12)16表示十六进制数12。12的值:1*16+2=18,是十进制数18。十进制数012345678910二进制数011011100101110111100010011011十 进 制 数012345678十六进制数012345678十 进 制 数91011121314151626十六进制数90A0B0C0D0E0F101A、十进制

4、数与二进制数、十六进制数换算对照表 、输出数定制函数(BASE):十进制数转换为多进制数【格式】:MAKE BASE 数【功能】:BASE是一个预设的变量,它决定了LOGO输出的数的进制数。BASE的输入数必须是介于2和16之间的整数。 ?MAKE BASE 2?PRINT 101010?MAKE BASE 16?PRINT 100A、数制函数 例题:十进制数173856105二进制数 十六进制数 想一想,做一做:根据下列表中的十进制的数,填写。 、输入数定制函数(IBASE): 多进制数转换为十进制数【格式】:MAKE IBASE 数【功能】:IBASE是一个预设的变量,它决定了输入到Log

5、o的数的进制数。IBASE的输入必须是介于2和16之间的整数。Logo输出的数的进制数是由系统变量BASE单独控制的。 ? MAKE IBASE 16? PRINT 1218? MAKE IBASE 2? PRINT 10100 20例题:想一想,做一做:把下列表中的补写完整。十进制数18 160 二进制数 10101010000001 十六进制数 3A 632、基本算术运算 、基本运算符。 、运算规则。 有括号时则括号优先,无括号时则先乘除,后加减,这与数学中的运算顺序相同。 想一想,做一做:写出下列算术运算的结果 、(2+(3+(7+9/3)/2)/2)*5 、1+2-3*4/5 、(5/

6、15+(18-12)/12)/(5/(2*3) 、(37+8)/9-2)*4、(15+5)*3/2-(12*2+3) -9/3 、2/2/2/2/(2/2/2)、(9/3+3*5+(88-33)/11*3)) 、1*2*3/3*2*1 加减乘除数学中的运算符号+Logo中的运算符号+/在Logo语言中无论大括号、中括号、小括号, 一律用圆括号。1、变量二、变量、函数及表达式 变量即前面程序中用到的形式参数,它可以用在数值和函数运算中。变量名可以用一个或多个字母和数字符号组成。在为变量取名时,必须注意Logo语言的命令不能再作变量名。含有多个字符的变量名中不能夹杂空格或运算符号。 变量名前一定带

7、有冒号,这是Logo变量同其它语言变量最明显的区别。 例如:、以下的变量名是正确的: :X , :Y , :AM , :A2 , :M123 , :3B 、以下的变量名是错误的: :FD , :CS , :A+B , :M N , :42、基本函数命 令格 式说 明求随机数RANDOM :X产生一个从1:X之间(包括1和:X)的随机的整数。取整函数INT :X取X的整数部分,小数部分截去。求余函数REMAINDER :X :Y求X除以Y所得的余数。求平方根SQRT :X求X的平方根。3、运算与表达式 由常数、变量、函数进行各种运算的式子称为表达式。 表达式的写法与数学中有些不同,注意:参量符号

8、中不要忘了冒号(:),乘号不能省略。下面举例说明: X+Y 应写成 :X+:Y 3a+2b1 应写成 3*:a+2*:b1 应写成 1:X/4+:X*:X/5 5412XX三、数值计算程序选编 1、使用Logo计算器:中小学阶段数学课本中的所有算式都可以使用Logo进行计算。、计算:数学算式 (88+7) 869 3? (88+7) * 8/6-9) *3 结果: 353、计算:数学算式711312? 2+1/3-(1+1/7) 结果: 1.19想一想,做一做:使用Logo计算器计算下列算式的结果)520()15105(10304)2575()732818(125.18)3224 . 251(

9、7412、在屏幕上打印显示计算。、知识点:命 令全 称简 写说 明打印输出PRINT 输出项PR 输出项在屏幕上打印显示输出后面的内容。显示输出TYPE 输出项印出后不换行, 参数间无空格。显示输入TURTLETEXT 字或表TT 字或表打印它的输入在图形区中当前海龟位置上。输出数据OUTPUT 输入项OP 输入项把执行的结果应用到其它过程或命令中去, 不直接输出到屏幕上。赋 值MAKE “变量名 表达式把表达式的值赋给变量。 、比较PR、TYPE、TT的显示方法及屏幕状态的差异。 例题分析:计算两个数(100以内)相加的算术题。(由计算机随机出题并判断正确与否)、使用PR命令TO JF1 M

10、AKE X RANDOM 101-1 MAKE Y RANDOM 101-1 MAKE Z :X+:Y (PR :X + :Y =) MAKE C READ IF :C=:Z PR 对了! STOP (PR 错了!正确的答案是 :X+:Y=:Z再试做一道!) JF1ENDTO JF2 MAKE X RANDOM 101-1 MAKE Y RANDOM 101-1 MAKE Z :X+:Y (TYPE :X + :Y =) MAKE C READ IF :C=:Z PR 对了! STOP (PR 错了!正确的答案是 :X+:Y=:Z) PR 再试做一道! JF2END、使用TYPE命令、使用TT

11、命令TO JF3 DRAW HT PU SETY 120 PD JF3A END TO JF3A MAKE A RANDOM 101-1 MAKE B RANDOM 101-1 MAKE C :A+:B PU SETXY SE -100 YCOR-20 PD (TT :A+:B=) MAKE Q READ PU SETX -40 PD TT :Q IF :Q=:C PU SETXY SE -100 YCOR-20 PD TT 对了! STOP PU SETXY SE -100 YCOR-20 PD (TT 错了!正确的答案是:A+:B=:C 再试做一道!) JF3A END?JF3 (结果在图

12、形窗口显示)? 100 ? 121 3、使用Logo不同计算方式进行一题多解。 用Logo 过程我们能够写出许多趣味数学题目,让计算机进行复杂的计算,可以用不同的方法或命令进行编程。 例题分析:求前100个自然数的和。方法一:简便运算法TO JS100A TYPE 1+2+3+.+100= TYPE (1+100)*50 PR END? JS100A 1+2+3+.+100=5050方法二:累加计算用尾部递归TO JS100B :N MAKE S 0 MAKE M 1 E :NENDTO E :N IF :M:N (PR S= :S) STOP MAKE S :S+:M MAKE M :M+1

13、 E :NEND? JS100B 100S = 5050方法三:累加计算用重复命令TO JS100C MAKE N 1 MAKE S 0 REPEAT 100MAKE S :S+:N MAKE N :N+1 (PR S= :S)END? JS100C S = 5050方法四:用OP命令TO JSD1 :N IF :N100 OP 0 OP :N+(JSD2 :N+1)ENDTO JS100D MAKE X JSD1 50 MAKE Y JSD2 51 (PR S=:X+:Y)END【指导说明】:? PR JSD1 692415? PR JSD1 70太多的递归过程调用!在函数JSD1状态OP

14、:N + (JSD1 :N - 1)? ? JS100D S = 5050方法五:用步长型循环语句TO JS100E MAKE S 0 FOR N 1 100MAKE S :S+:N (PR S= :S)END方法六:用当型循环语句TO JS100F MAKE S 0 MAKE N 1 WHILE :N:N STOP FD :S BK :S SETX XCOR+10 JG :A+1 :S+:A :NEND ? JGQX 20 想一想,试一试: 修改上面的过程,设计出如右图的模式图形。? LJTX 20 图1-连加数的图形 例题2分析:日本科学家角谷有个猜想:对于任意正整数N,总可通过若干次以下

15、的变换,使得N变为1。 变换的规则是:如果N为偶数,N变为它的一半;如果N为奇数,N变为它的3倍加1。 请你编写一个程序,验证角谷猜想,并以每次变换后的N为长度画出一组线段,相邻两条线之间间隔30,同时在每条线段下面用TT命令显示出变换过程中N的值。(如图2)? CLXD 9 ? CLXD 11 编写过程如下:TO CLXD2 :N IF :N=1 CLXD1 :N STOP CLXD1 :N IF NOT (INT :N/2)=(:N/2) MAKE N :N*3+1 CLXD1 :N MAKE N :N/2 CLXD2 :NENDTO CLXD :N DRAW HT PU SETX -30

16、0 PD CLXD2 :NENDTO CLXD1 :N FD :N BK :N PU BK 5 PD TT :N PU FD 5 PD PU RT 90 FD 30 LT 90 PDEND复合条件: (逻辑判断 )NOT 条件(非): 条件不成立时输出为真(TRUE),条件成立时输出为假 (FALSE)。(OR 条件1 条件2 条件3)(或):有一个成立时, 则输出为真, 否则输出为假。(AND 条件1 条件2 条件3)(与):当多个条件中均成立时则输出为真, 否则为假。 【指导说明】:? CLXD 35 例题3分析:堆木块。用每块方砖边长为10,叠成塔形。要求用X块叠造,有剩余的放于一边,并

17、显示说明用去块数(S)、堆叠层数(N)、剩余块数(A)。(如图3所示)图3-堆木块? DM 20 TO DM :X DRAW HT MAKE N 0 MAKE A 0 DM1 :N :A :XENDTO ZFX :X REPEAT 4FD :X RT 90ENDTO DM1 :N :A :X IF :A:X MAKE N :N-2 MAKE A :X-(:A-:N-1) DM2 :N DM4 :A STOP MAKE “X :X MAKE N :N MAKE A :A+:N DM1 :N+1 :A :XEND(计算用X块方木所能堆叠层数及剩余块数)TO DM5 :N :S IF :N1 (TT

18、用去=:S块) STOP MAKE N :N MAKE S :S+:N DM5 :N-1 :SENDTO DM3 :X :N IF :N:N/2 THEN PR :N STOP IF NOT :N/:I=INT :N/:I THEN GO A (TYPE :I ,) LABEL A YSH :N :I+1END【指导说明】: 、GO W:跳转到标号为W的语句,Logo语言不提倡GO语句。 、LABEL W:设置标号W。 、求两数的最大公约数。方法二:TO ZDGYS2 :M :N LABEL L MAKE Q INT (:M/:N) MAKE R :M-:Q*:N MAKE M :N MAKE

19、 N :R IF :R0 THEN GO L PR :MEND方法一: TO ZDGYS1 :M :N IF (REMAINDER :M :N)=0 OP :N ZDGYS1 :N REMAINDER :M :N END? PR ZDGYS1 36 5418? ZDGYS2 36 5418、求两数的最小公倍数。TO ZXGBS :M :N MAKE N1 :N MAKE M1 :M IF :M:N THEN GO A MAKE T :M MAKE M :N MAKE N :T LABEL A MAKE S INT (:M/:N) MAKE R :M-:S*:N IF :R=0 THEN GO

20、B MAKE M :N MAKE N :R GO A LABEL B (PR :M1和:N1的最小公倍数是:M1*:N1/:N)END? ZXGBS 36 48 36 和 48 的最小公倍数是 144、分解质因数。 TO FJVYS :N TYPE :N TYPE = MAKE I 1 LABEL A MAKE I :I+1 LABEL B IF :ISQRT :N THEN GO C IF (NOT :N/:I=INT :N/:I) THEN GO A TYPE :I TYPE * MAKE N :N/:I GO B LABEL C PR :NEND?FJVYS 72 72=2*2*2*3*

21、3? FJVYS 200 200=2*2*2*5*5? FJVYS 10921092=2*2*3*7*13、比较三个数的大小。 TO BJDX :A :B :C (PR A=:AB=:BC=:C) IF :A:B THEN MAKE X :A MAKE Y :B GO P MAKE X :B MAKE Y :A LABEL P IF :Y:C THEN (PR :X:Y:C) STOP IF :X:C THEN (PR :X:C:Y) STOP (PR :C:X:Y)END? BJDX 12 63 11 A=12 B=63 C=1163 12 11? BJDX 0 6.3 11 A=0 B=6

22、.3 C=1111 6.3 0 、只要输入角度值,计算机就能画出该角度的图像和平分线。 TO PFJD :JD DRAW HT PU BK 15 PD (TT 输入角度为:JD度) PU BK 20 PD (TT 平分角度为:JD/2度) PU FD 35 PD RT 90 FD 100 BK 100 LT :JD FD 100 BK 100 RT :JD/2 REPEAT 10FD 5 PU FD 5 PD PU HOMEEND? PFJD 130 、按图中标注的尺寸画图,并求阴影部分的面积。 TO JSMJ DRAW HT REPEAT 6FD 80 RT 90 RT 180 HOME PU RT 90 FD 80 LT 90 PD REPEAT 6FD 50 RT 90

温馨提示

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

评论

0/150

提交评论