您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 项目/工程管理 > 信奥赛 Logo程序设计-08 数值计算
Logo程序设计(授课讲稿)吴剑辉第八讲数值计算Logo语言是一种绘画功能很强的程序设计语言。同时,它的计算功能也毫不逊色。可以说,其他计算机语言提供的计算能力,Logo语言都能实现。一、Logo的数和算术运算二、变量、函数及表达式三、数值计算程序选编一、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×1081234456698765432110000000000.000012–0.0000034–765432111–1.698×10–7⑶、各种进位制数: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⑷、十进制数与二进制数、十六进制数换算对照表①、输出数定制函数(BASE):[十进制数转换为多进制数]【格式】:MAKEBASE数【功能】:BASE是一个预设的变量,它决定了LOGO输出的数的进制数。BASE的输入数必须是介于2和16之间的整数。?MAKEBASE2?PRINT101010?MAKEBASE16?PRINT100A⑸、数制函数例题:十进制数173856105二进制数十六进制数想一想,做一做:根据下列表中的十进制的数,填写。②、输入数定制函数(IBASE):[多进制数转换为十进制数]【格式】:MAKEIBASE数【功能】:IBASE是一个预设的变量,它决定了输入到Logo的数的进制数。IBASE的输入必须是介于2和16之间的整数。Logo输出的数的进制数是由系统变量BASE单独控制的。?MAKEIBASE16?PRINT1218?MAKEIBASE2?PRINT1010020例题:想一想,做一做:把下列表中的补写完整。十进制数18160二进制数10101010000001十六进制数3A632、基本算术运算⑴、基本运算符。⑵、运算规则。有括号时则括号优先,无括号时则先乘除,后加减,这与数学中的运算顺序相同。想一想,做一做:写出下列算术运算的结果①、(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加减乘除数学中的运算符号+–×÷Logo中的运算符号+–*/在Logo语言中无论大括号、中括号、小括号,一律用圆括号。1、变量二、变量、函数及表达式变量即前面程序中用到的形式参数,它可以用在数值和函数运算中。变量名可以用一个或多个字母和数字符号组成。在为变量取名时,必须注意Logo语言的命令不能再作变量名。含有多个字符的变量名中不能夹杂空格或运算符号。变量名前一定带有冒号,这是Logo变量同其它语言变量最明显的区别。例如:⑴、以下的变量名是正确的::X,:Y,:AM,:A2,:M123,:3B⑵、以下的变量名是错误的::FD,:CS,:A+B,:MN,:42、基本函数命令格式说明求随机数RANDOM:X产生一个从1~:X之间(包括1和:X)的随机的整数。取整函数INT:X取X的整数部分,小数部分截去。求余函数REMAINDER:X:Y求X除以Y所得的余数。求平方根SQRT:X求X的平方根。3、运算与表达式由常数、变量、函数进行各种运算的式子称为表达式。表达式的写法与数学中有些不同,注意:参量符号中不要忘了冒号(:),乘号不能省略。下面举例说明:X+Y应写成:X+:Y3a+2b-1应写成3*:a+2*:b-1应写成1-:X/4+:X*:X/55412XX三、数值计算程序选编1、使用Logo计算器:中小学阶段数学课本中的所有算式都可以使用Logo进行计算。⑴、计算:数学算式[(88+7)×8÷6-9]×3?((88+7)*8/6-9)*3↙结果:353⑵、计算:数学算式711312?2+1/3-(1+1/7)↙结果:1.19想一想,做一做:使用Logo计算器计算下列算式的结果)520()15105(10]304)2575[()732818(125.18)3224.251(7412、在屏幕上打印显示计算。⑴、知识点:命令全称简写说明打印输出PRINT输出项PR输出项在屏幕上打印显示输出后面的内容。显示输出TYPE输出项印出后不换行,参数间无空格。显示输入TURTLETEXT字或表TT字或表打印它的输入在图形区中当前海龟位置上。输出数据OUTPUT输入项OP输入项把执行的结果应用到其它过程或命令中去,不直接输出到屏幕上。赋值MAKE“变量名表达式把表达式的值赋给变量。⑵、比较PR、TYPE、TT的显示方法及屏幕状态的差异。例题分析:计算两个数(100以内)相加的算术题。(由计算机随机出题并判断正确与否)①、使用PR命令TOJF1MAKEXRANDOM101-1MAKEYRANDOM101-1MAKEZ:X+:Y(PR:X[+]:Y[=])MAKECREADIF:C=:ZPR[对了!]STOP(PR[错了!正确的答案是]\:X[+]:Y[=]:Z[再试做一道!])JF1ENDTOJF2MAKEXRANDOM101-1MAKEYRANDOM101-1MAKEZ:X+:Y(TYPE:X[+]:Y[=])MAKECREADIF:C=:ZPR[对了!]STOP(PR[错了!正确的答案是]\:X[+]:Y[=]:Z)PR[再试做一道!]JF2END②、使用TYPE命令③、使用TT命令TOJF3DRAWHTPUSETY120PDJF3AENDTOJF3AMAKEARANDOM101-1MAKEBRANDOM101-1MAKEC:A+:BPUSETXYSE-100YCOR-20PD(TT:A[+]:B[=])MAKEQREADPUSETX-40PDTT:QIF:Q=:CPUSETXYSE-100YCOR-20PDTT[对了!]STOPPUSETXYSE-100YCOR-20PD(TT[错了!正确的答案是]:A[+]:B[=]:C[][再试做一道!])JF3AEND?JF3↙(结果在图形窗口显示)?100↙?121↙3、使用Logo不同计算方式进行一题多解。用Logo过程我们能够写出许多趣味数学题目,让计算机进行复杂的计算,可以用不同的方法或命令进行编程。例题分析:求前100个自然数的和。方法一:简便运算法TOJS100ATYPE[1+2+3+...+100=]TYPE(1+100)*50PREND?JS100A↙1+2+3+...+100=5050方法二:累加计算用尾部递归TOJS100B:NMAKES0MAKEM1E:NENDTOE:NIF:M:N(PR[S=]:S)STOPMAKES:S+:MMAKEM:M+1E:NEND?JS100B100↙S=5050方法三:累加计算用重复命令TOJS100CMAKEN1MAKES0REPEAT100[MAKES:S+:N\MAKEN:N+1](PR[S=]:S)END?JS100C↙S=5050方法四:用OP命令TOJSD1:NIF:N2OP1OP:N+(JSD1:N-1)ENDTOJSD2:NIF:N100OP0OP:N+(JSD2:N+1)ENDTOJS100DMAKEXJSD150MAKEYJSD251(PR[S=]:X+:Y)END【指导说明】:?PRJSD1692415?PRJSD170太多的递归过程调用!在函数JSD1状态[OP:N+(JSD1:N-1)]??JS100D↙S=5050方法五:用步长型循环语句TOJS100EMAKES0FORN1100[MAKES:S+:N](PR[S=]:S)END方法六:用当型循环语句TOJS100FMAKES0MAKEN1WHILE[:N=100][MAKES:S+:N\MAKEN:N+1](PR[S=]:S)END?JS100F↙S=5050?JS100E↙S=5050【指导说明】:命令格式说明步长型循环FOR“变量名初值终值[命令序列](FOR“变量名初值终值[命令序列]步长)变量由初值开始,只要不超过终值就重复执行所规定的命令序列,每执行一次命令序列,变量增加一个步长。当型循环WHILE[条件][命令序列]当条件为真时,重复执行所规定的命令序列,直到条件为假结束循环。4、在屏幕上用图表显示计算结果。例题1分析:连加数的图形(如图1)。编写过程:将1、1+2、1+2+3、……、1+2+3+……+N各数的高度使用直线表示,每根线之间距为10。TOJGQX:NDRAWFSHTMAKEA2MAKES1JG:A:S:N+1ENDTOJG:A:S:NIF:A:NSTOPFD:SBK:SSETXXCOR+10JG:A+1:S+:A:NEND?JGQX20↙想一想,试一试:修改上面的过程,设计出如右图的模式图形。?LJTX20↙图1-连加数的图形例题2分析:日本科学家角谷有个猜想:对于任意正整数N,总可通过若干次以下的变换,使得N变为1。变换的规则是:如果N为偶数,N变为它的一半;如果N为奇数,N变为它的3倍加1。请你编写一个程序,验证角谷猜想,并以每次变换后的N为长度画出一组线段,相邻两条线之间间隔30,同时在每条线段下面用TT命令显示出变换过程中N的值。(如图2)?CLXD9↙?CLXD11↙编写过程如下:TOCLXD2:NIF:N=1CLXD1:NSTOPCLXD1:NIFNOT(INT:N/2)=(:N/2)MAKEN:N*3+1\CLXD1:NMAKEN:N/2CLXD2:NENDTOCLXD:NDRAWHTPUSETX-300PDCLXD2:NENDTOCLXD1:NFD:NBK:NPUBK5PDTT:NPUFD5PDPURT90FD30LT90PDEND[复合条件]:(逻辑判断表达式比较符表达式)⒈NOT条件(非):条件不成立时输出为真(TRUE),条件成立时输出为假(FALSE)。⒉(OR条件1条件2条件3…)(或):有一个成立时,则输出为真,否则输出为假。⒊(AND条件1条件2条件3…)(与):当多个条件中均成立时则输出为真,否则为假。【指导说明】:?CLXD35↙例题3分析:堆木块。用每块方砖边长为10,叠成塔形。要求用X块叠造,有剩余的放于一边,并显示说明用去块数(S)、堆叠层数(N)、剩余块数(A)。(如图3所示)图3-堆木块?DM20↙TODM:XDRAWHTMAKEN0MAKEA0DM1:N:A:XENDTOZFX:XREPEAT4[FD:XRT90]ENDTODM1:N:A:XIF:A:XMAKEN:N-2MAKEA:X-(:A-:N-1)DM2:NDM4:ASTOPMAKE“X:XMAKEN:NMAKEA:A+:NDM1:N+1:A:XEND(计算用X块方木所能堆叠层数及剩余块数)TODM5:N:SIF:N1(TT[用去=]:S[块])STOP
本文标题:信奥赛 Logo程序设计-08 数值计算
链接地址:https://www.777doc.com/doc-4025107 .html