初学编程该怎么学.doc_第1页
初学编程该怎么学.doc_第2页
初学编程该怎么学.doc_第3页
初学编程该怎么学.doc_第4页
初学编程该怎么学.doc_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

初学编程该怎么学?对初学者程序设计语言学习的思考作为一个靠C+吃饭的服务器端程序员,同时也可以算是个计算机程序语言的爱好者,与干一行厌一行的人不同,我是先因为自己喜欢编程,然后才放弃自己的专业通过自学走上了靠编程吃饭的道路,并且虽然现实和理想有点偏差-_-!(估计大家都知道我说的是啥)但是,无论工作多么忙,加班多么晚,我没有放弃自己的爱好,还是愉快的学习着。同时,也尝试着传播自己的想法。 对于普通人,逻辑方面不是非常强的普通人,对于Python这个号称接近自然语言,号称是可以执行的伪码的语言,一般也不会感觉到多么有趣,总是觉得一堆字符太过枯燥。的确是,一般而言,图形的编程即使在Python中也是比较复杂的(更不用说C+,JAVA了),没有语言的教学一开始就教图形编程的,(拖拖控件的那种我认为不算语言的教学,最多算工具的教学)这也是程序语言教程枯燥的地方。Small Basic中文学习站-快乐编程 SmallB 即便很多人说过Python适合作为程序语言学习的第一种语言,但是Python语言本身对于初学者来说并没有多大实际的趣味性,虽然很多高人号称交互式的命令行方式很适于学习,但是对于真正的初学者还是一样的枯燥。而更多更加高等级抽象的内容,比如列表,元组,字典,字符串的格式化等概念对于初学者来说就不是太好理解,更不用说列表解析语法,对象,异常等东西了,甚至,函数的概念,对于有些人来说都不好理解。那么,既然,Python这样号称非常简单的语言对于初学者来说都不是那么好理解并且枯燥的,那么,还有更简单的语言吗?以前我一直以为很难找到了。后来偶然看到了MS的SB语言,名字很奇怪吧。Small Basic语言,设计给小孩子学习的语言,因为设计给小孩子用,所以足够的简单,并且,MS的一贯作风,设计的足够花哨,足够好看,足够有意思。其中的turtle,即便是我初次使用都感觉很有意思,看到一个乌龟走来走去,有意思。的确,假如仅仅是学习程序的逻辑和语法的话,一个乌龟就够了。这是我当时的想法。当然,这仅仅是针对于不是准备将程序设计作为职业的人来说(其实即便你想以程序设计为职业也不是不可以从一个有趣的地方开始)。Small Basic中文学习站-快乐编程 SmallB通过简单的程序语法,就可以实现画出较为复杂的图形,这在普通的Python中要实现,好歹也得学会TK,WxPython,PyGTK,PyQt等东西中其中的一种吧,这些可没有那么简单。图形对于初学者来说和字符就是完全两种感受,他们不会感觉到对于数字的计算,字符串的拼接是在编程,但是对于实际能看到的一个乌龟的一段爬行,那就是编程了。看看turtle的例子。(初级的例子Introducing Small Basic中有介绍,此文是安装Small Basic后附带的文档)。以Turtle.Show()表示显示,Turtle.Move(100)表示移动,Turn,TurnLeft,TurnRight表示转向如此简单,但是却可以完成一些较为复杂的东西。文中典型的例子是画一个矩形:Turtle.Move(100)Turtle.TurnRight()Turtle.Move(100)Turtle.TurnRight()Turtle.Move(100)Turtle.TurnRight()Turtle.Move(100)Turtle.TurnRight()画出的效果如图:例一:首先我提出的是画一个三角形,呵呵,有点意思。Turtle.TurnLeft()Turtle.Move(100)Turtle.Turn(120)Turtle.Move(100)Turtle.Turn(120)Turtle.Move(100)第二例,接着我希望有个圆形,这个题目一下子复杂到能难住很多人了。对于从怎么解题中获得的教益,我可以提出几个更容易解决的问题,等边3角形,正方形我们已经会了,等边6边形呢?等边12边形呢?当边越来越多,会发现越来越接近圆。当我画出一个50边形的时候。你还能认出来吗?你看着就像是一个圆了。思路似乎来自于原来学校中讲圆时数学老师讲的圆某个公式的推导。本来画一个圆的常规想法应该是,以一点与圆心保持一个半径的距离,并且环绕一周。当画的边越来越多,自然会发现,原来一步一步的代码输入方式不行了,会很强烈的感觉到“循环”引入的需要,于是,循环的语法出来了。上述作图的源码如下:TIMES = 50For j = 1 To TIMESTurtle.Turn(360/TIMES)Turtle.Move(600/TIMES)EndFor(写此文时才发现Introducing Small Basic中已经有类似的例子了,并且源代码如下:)sides = 12length = 400 / sidesangle = 360 / sidesFor i = 1 To sidesTurtle.Move(length)Turtle.Turn(angle)EndFor我接着看到了Introducing Small Basic中一个很漂亮的图形,于是提出解决此问题,竟然很容易从图形中看出思路,无非就是乌龟在原地没转一个方向就画一个圆嘛。OUT_TIMES = 20TIMES = 50Turtle.Speed = 10For i = 1 To OUT_TIMESFor j = 1 To TIMESTurtle.Turn(360/TIMES)Turtle.Move(600/TIMES)EndForTurtle.Turn(360/OUT_TIMES)EndFor(文中也有类似实现)接着文中用直接画椭圆的方式画出了如下图形:Small Basic中文学习站-快乐编程 SmallB我决定用乌龟走出来,思路也来的很简单,首先乌龟在中间那个圆上走,然后每走一步,就向外再走一个圆,就成了这样的管道形状了。效果如下:源代码:IN_TIMES = 40TIMES = 20Turtle.Speed = 10For i = 1 To TIMESTurtle.Turn(360/TIMES)Turtle.Move(200/TIMES)For j = 1 To IN_TIMESTurtle.Turn(360/IN_TIMES)Turtle.Move(400/IN_TIMES)EndForEndFor作为学习编程几年的并且现在还靠着号称世界上特别复杂的一种语言C+活着的人来说,我也能在这些简单的图形中绘制中找到编程的乐趣,这就是turtle的乐趣了,我想初学者能找到的乐趣会比我更加多吧。作为学习编程几年的并且现在还靠着号称世界上特别复杂的一种语言C+活着的人来说,我也能在这些简单的图形中绘制中找到编程的乐趣,这就是turtle的乐趣了,我想初学者能找到的乐趣会比我更加多吧。 其实,对于初级编程来说,最主要的就是流程的控制,而流程的控制也就那么几种形式,这里有个我以前为Python写的流程控制表,其实实际上各类语言都差不多: 电脑,程序基础模型: Small Basic中文学习站-快乐编程 SmallB基本程序执行流程 1. 顺序执行: Python的表现形式,一条接一条的语句 2. 分支: Python表现方式:If-else python表现语法形式:if-elif- 3.循环: python语法表现形式:for-in 各类语言在这个层面上除了语法的略微不同外,基本上是一致的,这些确实培养计算机思维逻辑的基础,也可以算是编程的初步知识,起码Small Basic用于熟练这些知识还有有用的,虽然它的设计原本是面对小孩子的。不要因为Small Basic是面向小孩子设计的就觉得它功能弱到学习功能都不够,事实上,因为SB对图形的重视,使得对图形控制如此容易,反而可以轻松的做一些很有意思的事情。Small Basic中文学习站-快乐编程 SmallB 比如下面的例子,(超炫的文字显示,来自于 . 0-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程序图:大家可以到(/Forums/en-US/smallbasic/threads) 中过去看看,其中有很多很有意思的例子。其实我说了这么多,并不是鼓励大家都去学习Small Basic,仅仅是为初学者指出一条路,我觉得编程本质的复杂度来源于数学,思维和逻辑,不在于程序语言,即便是如SB这样的kids语言,在合理的思维逻辑下,一样有强大的效果,程序语言的本质并没有改变。Small Basic is a project thats 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啊。 源代码:Small Basic中文学习站-快乐编程 SmallB 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代码,其操作复杂到让你会误以

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论