Logo程序设计语言

Cnic.org,开放的网络天书!

(重定向自LOGO)


Logo是一种计算机程序设计语言,在60年代末由MIT的教授西摩爾·派普特 (Seymour Papert)和Wally Feurzeig设计,设计Logo的初衷是为了向儿童教授计算机编程技能。Logo一词源自希腊语"logos",意为"word"。

Logo的原型来自另一个计算机语言LISP,Papert修改了LISP的语法使得他更易于阅读。Logo通常被称作没有括号的Lisp。

Logo是一种解释型语言,和其它的语言不同,它内置一套海龟绘图(Turtle Graphics)系统,通过向海龟发送命令,用户可以直观地学习程序的运行过程,因此它很适合于儿童学习。它亦適合作數學教學。


=== 海龟绘图 ===

海龟绘图使得Logo用户可以通过简单的编程创作出丰富多彩的视觉效果或图案。假象一只带着画笔的海龟可以接受简单的命令,例如向前走100步,或者左转30度。通过对这只海龟发送命令,可以让它绘制出较为复杂的图形,例如正方形,三角形,圆等。

海龟的移动相对于它本身所在的位置。例如,命令"LEFT 90"意味着让海龟左转90度,学生可以站在海龟的角度来思考它将如何执行命令,这使得程序设计更加形象化,也更易于理解。

目录

程序实例

初学者可以不需要任何程序设计的知识而直接向海龟发送命令。学习海龟作图将会让用户懂得一些关于几何学方面的知识。而一旦掌握了海龟作图的基础之后,引入程序设计的概念也变得更加容易。下面看一些例子:

画一个正方形

FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90
FORWARD 100
RIGHT 90

由于输入的语句都是重复的,可以用重复语句简化为:

REPEAT 4 [FD 100 RT 90]

上面两段程序得到的结果相同,由于第一个程序几乎都是重复代码,因此我们用REPEAT让Logo重复同样的命令4次,同时还使用了命令的缩写。为了重复使用上述代码,我们可以用TO定义过程:

TO SQUARE
  REPEAT 4 [FD 100 RT 90]
END
SQUARE
SQUARE

一旦定义了SQUARE过程,就可以直接使用调用它得到结果,为了使得这个过程更加通用化,我们传递一个边长参数:

TO SQUARE :length
  REPEAT 4 [FD :length RT 90]
END

SQUARE 100 SQUARE 200

这样就可以绘制不同大小的正方形了。用同样的方法,我们可以定义三角形,五边形的过程:

TO TRIANGLE :length
  REPEAT 3 [FD :length RT 120]
END
TO SQUARE :length
  REPEAT 4 [FD :length RT 90]
END
TO PENTAGON :length
  REPEAT 5 [FD :length RT 72]
END
TRIANGLE 100
SQUARE 100
PENTAGON 100

自然我们会想到如何绘制多边形:

TO POLYGON :length :sides
  REPEAT :sides [FD :length RT 360.0/:sides]
END

POLYGON 100 3
POLYGON 100 4
POLYGON 100 5

从简单地发送绘图命令,到定义一个通用的绘制多边形的过程,用户不但掌握了程序设计上的一些基本思想(传递参数、重复等),而且对几何学上正多边形的理解也加深了。

多代理建模语言

Logo的一种方言NetLogo、StarLogo,进一步深化Logo的海龟绘图概念,它可以产生出成百上千的独立的海龟(被称为代理)来模拟诸如物理、生物或社会之类的复杂系统。建模者可以通过对众多的海龟并行地发送指令,来观察微观个体行为与由个体之间的相互影响产生的宏观样式之间的联系。

LOGO直譯器列表

外部链接


编辑 计算机编程语言列表大全
A+ | Ada | Algol | APL | BASIC | Brainfuck | C | C++ | C# | Cg | COBOL | Common Lisp | ColdFusion | Delphi | Eiffel | Erlang |Forth | FORTRAN | F# | Haskell | 汇编语言 | J | Java | JavaScript | Jython | LISP | LOGO | Mesa | | Modula-2 | Oberon | Objective-C | Ocaml | PASCAL | Perl | PHP | PL/I | PostScript | Powerbuilder | Prolog | Python | QBASIC | REXX | Ruby | Scheme | Self | Smalltalk | SQL | Tcl/Tk | Visual Basic | Visual Basic .NET
个人工具
天书
中文维客年会
网络天书
pagerank 5/10