1 / 31

Logo 程序设计

Logo 程序设计. ( 授课讲稿 ) 吴剑辉. 第八讲 数值计算. Logo 语言是一种绘画功能很强的程序设计语言。同时,它的计算功能也毫不逊色。可以说,其他计算机语言提供的计算能力, Logo 语言都能实现。. 一、 Logo 的数和算术运算. 二、变量、函数及表达式. 三、数值计算程序选编. 一、 Logo 的数和算术运算. 1 、 Logo 的数. ⑴ 、大家熟悉的十进制整数和小数在 Logo 语言中任意使用。 例如: 198913 , –60285 , 4.73 , –13.85 , 18.0 。.

Télécharger la présentation

Logo 程序设计

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Logo程序设计 (授课讲稿) 吴剑辉

  2. 第八讲 数值计算 Logo语言是一种绘画功能很强的程序设计语言。同时,它的计算功能也毫不逊色。可以说,其他计算机语言提供的计算能力,Logo语言都能实现。 一、Logo的数和算术运算 二、变量、函数及表达式 三、数值计算程序选编

  3. 一、Logo的数和算术运算 1、Logo的数 ⑴、大家熟悉的十进制整数和小数在Logo语言中任意使用。 例如:198913,–60285,4.73,–13.85,18.0。 ⑵、Logo可以小数形式表示在1.00E–6到1.00E+6之间的数。超过此范围的数,Logo会自动转换为科学记数法。 例如:1000000应写成:1.00E+06,1356×108应写成:1.36E+11, –4.27 ×106应写成: –4.27E+06, 5. 3×10–15应写成:5.30E–15。 说明:E前面保留两位小数的数,而E后面表示正或负指数。 想一想,做一做: 123×108 12344566 987654321 1000000000 0.000012 – 0.0000034 –765432111 –1.698 ×10–7

  4. 十进制数 十进制数 0 0 1 1 2 3 2 4 3 5 4 6 5 7 6 8 7 9 8 10 十六进制数 二进制数 0 0 1 1 10 11 2 100 3 101 4 110 5 111 6 1000 7 1001 8 1011 十进制数 9 10 11 12 13 14 15 16 26 十六进制数 9 0A 0B 0C 0D 0E 0F 10 1A ⑶、各种进位制数: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。 ⑷、十进制数与二进制数、十六进制数换算对照表

  5. 十进制数 17 38 56 105 二进制数 十六进制数 ⑸、数制函数 ①、输出数定制函数(BASE):[十进制数转换为多进制数] 【格式】:MAKE "BASE数 【功能】:BASE是一个预设的变量,它决定了LOGO输出的数的进制数。BASE的输入数必须是介于2和16之间的整数。 例题: ?MAKE "BASE 16 ?PRINT 10 0A ?MAKE "BASE 2 ?PRINT 10 1010 想一想,做一做:根据下列表中的十进制的数,填写。

  6. 十进制数 18 160 二进制数 101010 10000001 十六进制数 3A 63 ②、输入数定制函数(IBASE):[多进制数转换为十进制数] 【格式】:MAKE "IBASE 数 【功能】:IBASE是一个预设的变量,它决定了输入到Logo的数的进制数。IBASE的输入必须是介于2和16之间的整数。Logo输出的数的进制数是由系统变量BASE单独控制的。 ? MAKE "IBASE 16 ? PRINT 12 18 ? MAKE "IBASE 2 ? PRINT 10100 20 例题: 想一想,做一做:把下列表中的补写完整。

  7. 减 乘 除 数学中的运算符号 + – × ÷ Logo中的运算符号 + – * / 2、基本算术运算 ⑴、基本运算符。 在Logo语言中无论大括号、中括号、小括号, 一律用圆括号。 ⑵、运算规则。 有括号时则括号优先,无括号时则先乘除,后加减,这与数学中的运算顺序相同。 想一想,做一做:写出下列算术运算的结果 ①、(2+(3+(7+9/3)/2)/2)*5 ②、1+2-3*4/5 ③、(5/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

  8. 二、变量、函数及表达式 1、变量 变量即前面程序中用到的形式参数,它可以用在数值和函数运算中。变量名可以用一个或多个字母和数字符号组成。在为变量取名时,必须注意Logo语言的命令不能再作变量名。含有多个字符的变量名中不能夹杂空格或运算符号。 变量名前一定带有冒号,这是Logo变量同其它语言变量最明显的区别。 例如:⑴、以下的变量名是正确的: :X , :Y , :AM , :A2 , :M123 , :3B ⑵、以下的变量名是错误的: :FD , :CS , :A+B , :M N , :4

  9. 命 令 格 式 说 明 求随机数 RANDOM :X 产生一个从1~:X之间(包括1和:X)的随机的整数。 取整函数 INT :X 取X的整数部分,小数部分截去。 求余函数 REMAINDER :X :Y 求X除以Y所得的余数。 求平方根 SQRT :X 求X的平方根。 2、基本函数 3、运算与表达式 由常数、变量、函数进行各种运算的式子称为表达式。 表达式的写法与数学中有些不同,注意:参量符号中不要忘了冒号(:),乘号不能省略。下面举例说明: X+Y 应写成 :X+:Y 3a+2b-1 应写成 3*:a+2*:b-1 应写成 1-:X/4+:X*:X/5

  10. 三、数值计算程序选编 1、使用Logo计算器:中小学阶段数学课本中的所有算式都可以使用Logo进行计算。 ⑴、计算:数学算式 [(88+7) × 8÷6-9] ×3 结果: 353 ? ((88+7) * 8/6-9) *3 ↙ ⑵、计算:数学算式 ? 2+1/3-(1+1/7) ↙ 结果: 1.19 想一想,做一做:使用Logo计算器计算下列算式的结果

  11. 命 令 全 称 简 写 说 明 打印输出 PRINT 输出项 PR 输出项 在屏幕上打印显示输出后面的内容。 显示输出 TYPE 输出项 印出后不换行, 参数间无空格。 显示输入 TURTLETEXT 字或表 TT 字或表 打印它的输入在图形区中当前海龟位置上。 输出数据 OUTPUT 输入项 OP 输入项 把执行的结果应用到其它过程或命令中去, 不直接输出到屏幕上。 赋 值 MAKE “变量名 表达式 把表达式的值赋给变量。 2、在屏幕上打印显示计算。 ⑴、知识点:

  12. ⑵、比较PR、TYPE、TT的显示方法及屏幕状态的差异。⑵、比较PR、TYPE、TT的显示方法及屏幕状态的差异。 例题分析:计算两个数(100以内)相加的算术题。(由计算机随机出题并判断正确与否) ①、使用PR命令 ②、使用TYPE命令 TO 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 [再试做一道!] JF2 END TO JF1 MAKE "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[再试做一道!]) JF1 END

  13. ③、使用TT命令 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 ↙(结果在图形窗口显示) ? 100 ↙ ? 121 ↙

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

  15. 方法三:累加计算用重复命令 TO JS100C MAKE "N 1 MAKE "S 0 REPEAT 100[MAKE "S :S+:N \ MAKE "N :N+1] (PR [S=] :S) END 方法四:用OP命令 TO JSD1 :N IF :N<2 OP 1 OP :N+(JSD1 :N-1) END TO JSD2 :N IF :N>100 OP 0 OP :N+(JSD2 :N+1) END TO JS100D MAKE "X JSD1 50 MAKE "Y JSD2 51 (PR [S=]:X+:Y) END ? JS100C ↙ S = 5050 【指导说明】: ? PR JSD1 69 2415 ? PR JSD1 70 太多的递归过程调用! 在函数JSD1 状态[OP :N + (JSD1 :N - 1)] ? ? JS100D ↙ S = 5050

  16. 命 令 格 式 说 明 步长型循环 FOR “变量名 初值 终值[命令序列] (FOR “变量名 初值 终值[命令序列]步长) 变量由初值开始,只要不超过终值就重复执行所规定的命令序列,每执行一次命令序列,变量增加一个步长。 当型循环 WHILE [条件] [命令序列] 当条件为真时,重复执行所规定的命令序列,直到条件为假结束循环。 方法五:用步长型循环语句 TO JS100E MAKE "S 0 FOR "N 1 100[MAKE "S :S+:N] (PR [S=] :S) END 方法六:用当型循环语句 TO JS100F MAKE "S 0 MAKE "N 1 WHILE [:N<=100][MAKE "S :S+:N \ MAKE "N :N+1] (PR [S=] :S) END ? JS100E ↙ S = 5050 ? JS100F ↙ S = 5050 【指导说明】:

  17. 图1-连加数的图形 4、在屏幕上用图表显示计算结果。 例题1分析:连加数的图形(如图1)。 编写过程:将1、1+2、1+2+3、……、1+2+3+……+N各数的高度使用直线表示,每根线之间距为10。 TO JGQX :N DRAW FS HT MAKE "A 2 MAKE "S 1 JG :A :S :N+1 END TO JG :A :S :N IF :A>:N STOP FD :S BK :S SETX XCOR+10 JG :A+1 :S+:A :N END ? JGQX 20 ↙ 想一想,试一试: 修改上面的过程,设计出如右图的模式图形。 ? LJTX 20 ↙

  18. 例题2分析:日本科学家角谷有个猜想:对于任意正整数N,总可通过若干次以下的变换,使得N变为1。例题2分析:日本科学家角谷有个猜想:对于任意正整数N,总可通过若干次以下的变换,使得N变为1。 变换的规则是:如果N为偶数,N变为它的一半;如果N为奇数,N变为它的3倍加1。 请你编写一个程序,验证角谷猜想,并以每次变换后的N为长度画出一组线段,相邻两条线之间间隔30,同时在每条线段下面用TT命令显示出变换过程中N的值。(如图2) ? CLXD 11 ↙ ? CLXD 9 ↙

  19. 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 :N END 编写过程如下: TO CLXD :N DRAW HT PU SETX -300 PD CLXD2 :N END TO CLXD1 :N FD :N BK :N PU BK 5 PD TT :N PU FD 5 PD PU RT 90 FD 30 LT 90 PD END ? CLXD 35 ↙ 【指导说明】: [复合条件]:(逻辑判断 < 表达式 > < 比较符 > < 表达式 >) ⒈NOT 条件(非): 条件不成立时输出为真(TRUE),条件成立时输出为假 (FALSE)。 ⒉(OR 条件1 条件2 条件3…)(或):有一个成立时, 则输出为真, 否则输出为假。 ⒊(AND 条件1 条件2 条件3…)(与):当多个条件中均成立时则输出为真, 否则为假。

  20. 图3-堆木块 例题3分析:堆木块。用每块方砖边长为10,叠成塔形。要求用X块叠造,有剩余的放于一边,并显示说明用去块数(S)、堆叠层数(N)、剩余块数(A)。(如图3所示) TO DM :X DRAW HT MAKE "N 0 MAKE "A 0 DM1 :N :A :X END TO ZFX :X REPEAT 4[FD :X RT 90] END ? DM 20 ↙ TO 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 :X END (计算用X块方木所能堆叠层数及剩余块数)

  21. TO DM2 :N PU SETXY[-200 -65]PD (TT[叠造=]:N[层]) PU SETXY[-200 -50] PD DM5 :N 0 PU FD 15 PD DM3 10 :N END (显示堆放及计算用去方木块数和层数) TO DM3 :X :N IF :N<1 STOP REPEAT :N [ZFX :X PU RT 90 FD :X LT 90 PD] PU LT 90 FD :X*:N-:X/2 RT 90 FD :X PD DM3 :X :N-1 END (用N层堆叠木块) ? DRAW DM2 4 ↙ TO DM4 :A PU SETXY[50 -35]PD PU BK 15 PD (TT[剩余=]:A[块]) PU FD 15 PD IF :A=0 STOP REPEAT :A[ZFX 10 PU RT 90 FD 10 LT 90 PD] END (剩余方木块数的排放) TO DM5 :N :S IF :N<1 (TT[用去=]:S[块]) STOP MAKE "N :N MAKE "S :S+:N DM5 :N-1 :S END (计算所用方木的块数) ? DRAW DM4 5 ↙ ? DRAW DM5 6 0 ↙

  22. 4、小学数学问题的应用与求解工具。 ⑴、求自然数的约数。 TO ZRYS :N MAKE "I 1 (TYPE :N[的约数有]) YSH :N :I END TO YSH :N :I IF :I>:N/2 THEN PR :N STOP IF NOT :N/:I=INT :N/:I THEN GO "A (TYPE :I [,]) LABEL "A YSH :N :I+1 END ? ZRYS 48 ↙ 48 的约数有1 ,2 ,3 ,4 ,6 ,8 ,12 ,16 ,24 ,48 ? ZRYS 16 ↙ 16 的约数有1 ,2 ,4 ,8 ,16 【指导说明】: ⑴、GO "W:跳转到标号为W的语句,Logo语言不提倡GO语句。 ⑵、LABEL "W:设置标号W。

  23. ⑵、求两数的最大公约数。 [方法一]: TO ZDGYS1 :M :N IF (REMAINDER :M :N)=0 OP :N ZDGYS1 :N REMAINDER :M :N END [方法二]: TO ZDGYS2 :M :N LABEL "L MAKE "Q INT (:M/:N) MAKE "R :M-:Q*:N MAKE "M :N MAKE "N :R IF :R>0 THEN GO "L PR :M END ? PR ZDGYS1 36 54↙ 18 ? ZDGYS2 36 54↙ 18

  24. ⑶、求两数的最小公倍数。 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 "B MAKE "M :N MAKE "N :R GO "A LABEL "B (PR :M1[和]:N1[的最小公倍数是]:M1*:N1/:N) END ? ZXGBS 36 48 ↙ 36 和 48 的最小公倍数是 144

  25. ⑷、分解质因数。 TO FJVYS :N TYPE :N TYPE [=] MAKE "I 1 LABEL "A MAKE "I :I+1 LABEL "B IF :I>SQRT :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 :N END ? FJVYS 1092↙ 1092=2*2*3*7*13 ?FJVYS 72 ↙ 72=2*2*2*3*3 ? FJVYS 200 ↙ 200=2*2*2*5*5

  26. ⑸、比较三个数的大小。 TO BJDX :A :B :C (PR [A=]:A[B=]:B[C=]: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 0 6.3 11 ↙ A=0 B=6.3 C=11 11 > 6.3 > 0 ? BJDX 12 63 11 ↙ A=12 B=63 C=11 63 > 12 > 11

  27. ⑹、只要输入角度值,计算机就能画出该角度的图像和平分线。 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 10[FD 5 PU FD 5 PD] PU HOME END ? PFJD 130 ↙

  28. ⑺、按图中标注的尺寸画图,并求阴影部分的面积。⑺、按图中标注的尺寸画图,并求阴影部分的面积。 TO JSMJ DRAW HT REPEAT 6[FD 80 RT 90] RT 180 HOME PU RT 90 FD 80 LT 90 PD REPEAT 6[FD 50 RT 90] RT 180 HOME PU RT 65 FD 30 PD FILL PU FD 80 PD FILL PU BK 110 LT 65 PD PU SETXY[40 -4]PD TT 80 PU SETXY[100 -4]PD TT 50 MAKE "SB 50*50 MAKE "S1 80*80/2 MAKE "S2 (80+50)*50/2 MAKE "YS :S1+:SB-:S2 PU SETXY[-10 -20]PD TT [列式= 80*80/2+50*50-(80+50)*50/2] PU SETXY[-10 -40]PD (TT [阴影部分的面积是]:YS[平方厘米]) END ? JSMJ ↙

  29. 动脑筋,做一做 1、求 前10项的值。 (FF10) 2、化十进制数为二进制数。(如图A) ? RJZH 100↙ 3、鸡兔同笼问题。鸡比兔多26只,共有274只脚,问鸡、兔各有多少只?(JITU) (图A) 4、输出乘法九九表。(A99、B99) 5、确定算式(如图B)中的数字。(QDSX、QDS) (图B) 6、输出下列前20项,并以此数据为边长画螺旋正方形 (如图C):1,1+2,1+2+3,1+2+3+4‥ 。 (LXF 20) 7、求所有能被7整除的三位数的和。 (QH7) 8、求一组连乘:1×2×3×……×N,当N值是多少时,他们的乘积开始大于3500? (LCHENG 3500) (图C)

  30. 9、随机产生10组100以内两位数相加减的算式,并评分。9、随机产生10组100以内两位数相加减的算式,并评分。 10、分别编程打印出数字金字塔1 (如图D)和2 (如图E) 。 SZJZD2 5↙ (图E)-- ?SZJZD2 9↙ SZJZD1 5↙ (图D)-- ?SZJZD1 9↙ 11、按图中标注的尺寸画图,并求阴影部分的面积。 JSY1 ↙ JSY2 ↙ JSY3 ↙

More Related