程序特例篇——LOGO语言
#1 LOGO语言的概述
LOGO语言创始于1968年,是美国国家科学基金会所资助的一项专案研究,在麻省理工学院(MIT)的人工智能研究室完成。LOGO源自西腊文,原意即为思想,是由一名叫佩伯特的心理学家在从事儿童学习的研究中,发现一些与他的想法相反的教学方法,并在一个假日中出外散步时,偶然间看到一个像海龟的机械装置触发灵感,于是利用他广博的知识及聪明的才智而最终完成了LOGO语言的设计。(^311301a^)
绘图是LOGO语言中最主要的功能,佩伯特博士就是希望能通过绘图的方式来培养学生学习电脑的兴趣和正确的学习观念。LOGO语言从开始发展到现在,已有Windows版本——MSWLogo,包括Windows 3.X版及Windows9X版(下载网址http://www.softronix.com/logo.html)等。在以前的LOGO语言中有一个海龟,它有位置与指向两个重要参数,海龟按程序中的LOGO指令或用户的操作命令在屏幕上执行一定的动作,现在,图中的海龟由小三角形所替代。
#1 LOGO语言的基本命令
我们在下面介绍一些LOGO语言中最基本的绘图命令:
1.与移动有关的指令:“前进”、“后退”和“归位”。前进命令可让海龟前移一定的单位数,例如:执行“Forward(前进) 50”命令后,小海龟则会向前移动50个单位;后退命令则可让小海龟向后移动,如果执行“Back(后退) 50”命令,那么小海龟的方向不会发生改变,而会向后退50个单位;执行归位命令后,不论当前小海龟的位置及方向怎样,它就会乖乖地回到绘图区的中央位置,并且朝向屏幕的正上方。
2.与转弯有关的指令:“右转”和 “左转”。右转命令可让小海龟按要求向右边转动一定的角度,例如:执行“Right(右转) 45”命令则小海龟的朝向将向右转动45度角;而左转命令则可让小海龟向左转动,如:执行“Left 45”命令则小海龟的朝向将向左转动45度角。这几种命令可以驱动小海龟绕其中心旋转一定的角度。
3.与控制有关的命令有REPEAT(重复)、IF...THEN...ELSE...(条件执行)等。如执行REPEAT 4[FORWARD 200 RlGHT 9O]就能画出图2中的正方形,如果直接将移动命令和转弯命令相结合,则写出的语句就比较多,但都是一些重复地使用4次“Forward 100”和“Right 90”命令。 (^311301b^)
#1 LOGO语言的特点
LOGO语言之所以是儿童学习计算机编程最好的一种语言,就因为它是针对儿童而制作的编程语言,能使儿童在认知与技能上得到较大的发展。LOGO语言具有较强的针对性,因为对于儿童来说,“画画”比“文字处理”更具有活力,充分发挥自己的想象进行创作,而文字处理却比较枯燥,不适合儿童。LOGO则主要用于“图画”制作,并且采用了“海龟绘图”的方式,适合儿童的特点,能充分引起他们的兴趣和学习该门语言的积极性,达到寓教于乐的目的。在LOGO语言中,它的作图方式与现在所用的作图软件不一样,主要区别就在于LOGO语言的基本作图的方法可以不采用坐标方式,而是通过向前,后退、向左转、向右转、回家等儿童易于理解的语言和命令,这非常适合儿童的知识水平,使这些还未接触坐标为何物的儿童更容易上手。在用LOGO语言作图时,需要学习者对一些常见的几何特性进行理解,了解常用的距离、角度和度数的概念。
#1 LOGO语言的编程
一般的编程语言都需要编写程序,当然,LOGO语言也不例外。由于指令容易输入错误,不易修改且无法保存,更不能重复使用,如果需要重新绘制相同的图形,那么必须输入与以前相同的指令,并且这些曾输入的指令不能加以组合。至于程序的内容,是由解决问题的步骤所需要的指令组合而成的,需由设计者赋予该程序以名称,以供识别。使用LOGO语言作图,虽然可以通过命令行方式进行,但这仅针对初学LOGO语言时,可以开始学一些常用命令,作出一些简单的图形,以引起儿童的兴趣。在对命令比较了解及熟悉以后,就可以进行针对性地学习一些简单的程序编写,作出更加漂亮的图形。
下面我将以MSWLogo V6.4为例来介绍如何建立一个程序的基本语法:
1.作为一个程序是以“起始”为开始,“终止”为结束。当选择“编辑新程序”时,在程序编辑区中将会出现以下的字符,供程序者填入相应的命令。
To(起始) 程序名称 N //修改程序名称以供识别
..............
..............//输入解决问题所用到的命令
..............
End(终止)
2.绘制不同大小的图形时需要选择不同的参数,所以使用者在设计程序时,需要使用一个比较适合的并有意义的名称来代表,传给参数的数值资料不同则执行结果也就不同,并且程序在执行过程中,也会不断地变化参数的内容。在选择参数时,需要在参数名称前面加上冒号,用来与一般程序中的命令区别开。如:
起始 程序名称 N :参数1 :参数2 ... //定义列
................
Repeat :参数 1[Forward :参数2 ...] //输入解决问题所需的命令
................
终止
当程序内容含有参数时,必须将所有参数写在定义列之后,以便执行时能接收必要的资料。
3.IF...THEN ...ELSE...条件执行语句
基本格式为:IF 条件表达式 THEN [命令行1] ELSE [命令行2]
[命令行3]
当条件表达式:成立时,执行[命令行1]内的命令;不成立时,执行[命令行2]内的指令;在执行完[命令行1]或[命令行2]之后,则继续执行[命令行3]