把孩子打造成为码农

简介: 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。   今天看到一个问卷调查,是问第一门学习的计算机语言是什么。本身想写QBasic,忽然想起曾经学习机时代的LOGO语言,以及看了很久的小乌龟。

作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明。

 

今天看到一个问卷调查,是问第一门学习的计算机语言是什么。本身想写QBasic,忽然想起曾经学习机时代的LOGO语言,以及看了很久的小乌龟。对啊,这才算是自己接触的第一门语言。

LOGO语言是为教育儿童编程开发的,所以语法很简单。它基于LISP,还附加有一个海龟绘图系统(Turtle Graphic)。我们通过编写的程序,可以控制屏幕上的小海龟的移动,并在画面上留下行动的轨迹。你可以用LOGO语言画出一幅不错的画来。

于是在Ubuntu下搜索,找到KTurtle,是LOGO的一个变体。它的语法是面向过程的,类似于C,支持数学和逻辑运算,可以实现循环 (for)或者选择 (if)。常见的命令包括forward, backward, turnleft, turnright,用于控制小海龟的前进后退和转向。另外也可以用ask和print来输入输出。变量用$a的形式表示。在绘图过程中,小海龟不断移动,同时左侧也会用黄色标明运行到哪一行了,非常有趣。一句话来形容,麻雀虽小,五脏俱齐。

KTurtle界面

你可以通过它的帮助菜单(需要安装)来查询具体的命令。

 

帮助菜单

帮助菜单

 

画房子:

# 该例来自 http://banajim.myweb.port.ac.uk/recreation/logoscripts
# 画房子

reset         # 清空画面
penup         # 抬起笔,开始不留下痕迹
forward 50
pendown       # 放下笔,开始留下痕迹
pw 2          # penwidth,线条粗细
go 200, 200   # 前往坐标点

# 房子主体

turnleft 90   # 左转90度
forward 100   # 前进100像素
turnright 90
forward 100
turnleft 90

forward 30
turnright 140
forward 105
turnright 80
forward 105
turnright 140
forward 30


turnleft 90
forward 100

# 窗户

go 120, 90
turnleft 90
forward 60
turnleft 90

repeat 90 {
  forward 1.05 
  turnleft  2
}

# 窗户中线
go 150, 90
turnright 180
forward 30

# 窗户对角线

tr 45             # turnright的简写
go 135, 77
forward 10
go 135, 82
forward 10

go 160, 79
forward 10
go 160, 84
forward 10
tl 45

#

go 120,200
forward 50
tr 90
forward 30
tr 90
forward 50

# 门把手

go 145, 175

repeat 24 {   # 循环24次
  forward 1
  tr  15
}

# 窗户

go 160,140
tr 180
forward 25
tr 90
forward 25
tr 90
forward 25
tr 90 
forward 25
tr 90

# 窗户中线

go 172.5,140
forward 25
tr 90

go 160,127.5
forward 25

# 窗户对角线
# pw 1
tl 45
go 164, 134
forward 5
go 164, 138
forward 5

go 177, 121
forward 5
go 177, 125
forward 5
tr 45

go 230,150

 

再加上一个画螺旋线:

reset

for $x = 1 to 36 {
  repeat 72 {
    forward 4
    turnright 5
  }
  penup
  turnright 10
  forward 2
  pendown
}

go 0, 0

 


还可以继续开发出更多的图形。如果你数学不错,甚至可以写一个分形的绘图 (只不过速度真的很慢很慢)。

 

你准备好把你的孩子培养成为码农了吗?

目录
相关文章
|
存储 缓存 安全
90%的Go语言程序员map遍历方式都是错的
90%的Go语言程序员map遍历方式都是错的
503 0
|
XML 前端开发 JavaScript
Javaweb之Ajax的详细解析
1.1 Ajax介绍 1.1.1 Ajax概述 我们前端页面中的数据,如下图所示的表格中的学生信息,应该来自于后台,那么我们的后台和前端是互不影响的2个程序,那么我们前端应该如何从后台获取数据呢?因为是2个程序,所以必须涉及到2个程序的交互,所以这就需要用到我们接下来学习的Ajax技术。
151 0
|
JavaScript
在 Vue 3 组件通信方式中,Provide / Inject 与 Vuex 的区别是什么?
在 Vue 3 组件通信方式中,Provide / Inject 与 Vuex 的区别是什么?
412 65
|
10月前
|
消息中间件 监控 Java
您是否已集成 Spring Boot 与 ActiveMQ?
您是否已集成 Spring Boot 与 ActiveMQ?
316 0
|
算法框架/工具 开发工具 git
【项目--Hi3559A】(caffe-yolov3)yolov3的darknet模型转caffe模型详细教程
【项目--Hi3559A】(caffe-yolov3)yolov3的darknet模型转caffe模型详细教程
248 1
【项目--Hi3559A】(caffe-yolov3)yolov3的darknet模型转caffe模型详细教程
|
安全 关系型数据库 MySQL
Mysql注入 -- 延时注入
Mysql注入 -- 延时注入
332 0
|
编译器
回答两个被频繁问到的代码写法问题
回答两个被频繁问到的代码写法问题
66 0
|
前端开发 JavaScript API
proxy配置
proxy配置
287 0
|
JavaScript
过程透明化的模切生产管理ERP系统
产品质量是企业生存和发展的根本,质量的根本在于管控,管控的根本在于可追溯,建立产品质量追溯体系已经成为企业赖以生存的重要的管理手段之一。
162 0
|
缓存 Linux C语言
库函数与系统调用之间的区别--扩展知识点1
库函数与系统调用之间的区别--扩展知识点1
311 0