初学编程该怎么学?——对初学者程序设计语言学习的思考(2)

为学习编程几年的并且现在还靠着号称世界上特别复杂的一种语言C++活着的人来说,我也能在这些简单的图形中绘制中找到编程的乐趣,这就是turtle的乐趣了,我想初学者能找到的乐趣会比我更加多吧。

其实,对于初级编程来说,最主要的就是流程的控制,而流程的控制也就那么几种形式,这里有个我以前为Python写的流程控制表,其实实际上各类语言都差不多:

电脑,程序基础模型:

基本程序执行流程

  1. 顺序执行:

    Python的表现形式,一条接一条的语句

  2. 分支:

    Python表现方式:If-else

    python表现语法形式:if-elif-

3.循环:

python语法表现形式:for-in

各类语言在这个层面上除了语法的略微不同外,基本上是一致的,这些确实培养计算机思维逻辑的基础,也可以算是编程的初步知识,起码Small Basic用于熟练这些知识还有有用的,虽然它的设计原本是面对小孩子的。不要因为Small Basic是面向小孩子设计的就觉得它功能弱到学习功能都不够,事实上,因为SB对图形的重视,使得对图形控制如此容易,反而可以轻松的做一些很有意思的事情。

比如下面的例子,(超炫的文字显示,来自于http://social.msdn.microsoft.com/Forums/en-US/smallbasic/thread/b1b383c1-6b13-49c0-bf29-00de86103ac6

很炫的效果,才区区几行代码:

GraphicsWindow.BackgroundColor = "midnight"

gw = GraphicsWindow.Width

gh = GraphicsWindow.Height

GraphicsWindow.FontSize = 100

Turtle.Move (100)

Turtle.Turn (1*1)

While ("True")

For i = 1 To 50

GraphicsWindow.SetPixel(Math.GetRandomNumber(gw),Math.GetRandomNumber(gh),GraphicsWindow.GetRandomColor())

EndFor

Turtle.Move(1)

GraphicsWindow.BrushColor = "Black"

GraphicsWindow.DrawBoundText(30,110,gw-20,"Small Basic")

EndWhile

这是几乎每个人执行完后都会说"Impressive"的程序。

再来一些更多的SB程序图:

大家可以到(http://social.msdn.microsoft.com/Forums/en-US/smallbasic/threads)

中过去看看,其中有很多很有意思的例子。

其实我说了这么多,并不是鼓励大家都去学习Small Basic,仅仅是为初学者指出一条路,我觉得编程本质的复杂度来源于数学,思维和逻辑,不在于程序语言,即便是如SB这样的kids语言,在合理的思维逻辑下,一样有强大的效果,程序语言的本质并没有改变。

"Small Basic is a project that's aimed at bringing "fun" back to programming."MS如是说,的确是,什么时候我们失去了编程的乐趣了?为什么我们用的都是这样庞大的难以理解的语言?因为商业的需求,一个一个现代化的软件都是如此的庞大,犹如新特性的集合体,大量库的堆积。。。。让我们失去了太多本来该有的乐趣。

当然,假如仅仅局限于SB语言,那么用途毕竟还是比较有限的,教育意义也就没有那么大了。。。。虽然我感觉到能从SB中获得乐趣,但是。。。人还是要吃饭的,所以,对于正的想以编程作为职业的人来说,从Python开始,也还算是不错的主意(仅仅从学习角度,目前国内对Python的需求还是比较有限)。当时我处于这个考虑,准备用PyQt实现一个与SB一模一样的turtle库,结果经过查阅,发现Python的标准库中已经附带上一个了,呵呵,一如既往,Python的标准库之丰富与兼容并包简直不可想象。。。。。。。。你能想象到哪天C++的标准库里面加上一个这样的画乌龟的库吗?-_-!

    因为Python标准库中就带有turtle库,所以我们完全可以用Python的语法来实现上述功能,同时还能使用一些Python比SB更强大一些的功能(Python的turtle库功能更多一些),并且,还有同时熟悉Python语法的功效。假如说Python是作为初学者迈入程序设计大门的合适的第一步的话,我认为Python的turtle库的使用,可以作为学习Python的合适的第一步。首先熟悉的是程序的思维和逻辑,其他的仅仅是这些的延生。(哪怕上升到DP,OO层次,这些还是不可或缺的基础)

这里给出原来用SB实现的那个最复杂的圆环结构的示例,其他的就省略了。要说的是,虽然用Python可以用更熟悉的语法,但是回到Python的编辑器来后,发现SB那个IDE也真是'Impressive'啊。。。

源代码:

import turtle

tr = turtle.getturtle()

tr.shape("turtle")

tr.speed('fast')

IN_TIMES = 40

TIMES = 20

for i in range(TIMES):

tr.right(360/TIMES)

tr.forward(200/TIMES)

for j in range(IN_TIMES):

tr.right(360/IN_TIMES)

tr.forward (400/IN_TIMES)

#tr.write(" Click me to exit", font = ("Courier", 12, "bold") )

screen = turtle.Screen()

screen.exitonclick()

可以看看Python的turtle库中的example代码,其操作复杂到让你会误以为这是Flash完成的效果,其实,这都是乌龟的爬行而已。呵呵,要想以一个乌龟完成很多事情,除了需要足够好的数学基础外,还需要一点想象力。。。。。。。当然,还有美感。Gregor Lingl明显都不缺这些,所以他完成了一个很有意思的turtle库及很有意思的示例。

    用turtle熟悉Python的基本语法估计是没有问题并且充满乐趣的,乐趣对初学者来说可是最重要的东西。并且,当你想用其实现更复杂逻辑的时候,也不得不用到更多的Python特性,这个自然过程会促进/巩固对Python的学习。这也许是除了单独学习一门语言外,另一个初学者可以尝试的入门之路,充满乐趣的路途。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值