APP下载

程序设计之新解

2014-07-16王卫华张双狮

电脑知识与技术 2014年14期
关键词:计算思维程序设计逻辑

王卫华 张双狮

摘要:用通俗生动的语言描述了计算机程序设计所涉及的语言、语法、结构化程序的逻辑结构,面向对象程序的事件驱动机制和消息传递机制,指出计算机程序已经深入现代生活的各个方面,程序是人类思维共享,文明传承和认识自然规律的工具,应重视程序设计教育。

关键词:程序设计;逻辑;计算思维

中图分类号:TP311 文献标识码:A 文章编号:1009-3044(2014)14-3311-03

Abstract: The language, grama, logic structures, event-driven mechanism and message passing mechanism for object-oriented programs are explained. This article points out that programming is basic method tool of exchanging ideas, passing civilization and cognizing laws of nature and special attention should be given.

Key words: programming; logic; computational thinking

1 概述

计算机是人脑功能的延伸,从其诞生之日起就开始逐步替代人的劳动,大大拓展了人类思维和活动的范围,从早期的“阿波罗登月”到今天的“嫦娥奔月”,可以说没有计算机是不可想象的,计算机已经以各种形式走入我们生活、学习、工作、娱乐的各个方面,改变了人们的生活,同时也影响着人类的思维模式。数值计算和数值模拟已经成为与生产实践、科学实验并列的人类认识自然规律的又一种重要方式。计算数学、计算物理学、计算化学及计算生物学等计算科学的出现节省了大量的实验时间和实验经费[1]。现在计算机突然瘫痪了,我们的工作可能会马上陷入混乱,我们可能无所适从。然而,如果计算机没有了其内部的软件程序就如同人没有了思维,程序如同计算机的“灵魂”,我们对计算机的使用就其本质上讲是跟计算机程序在交流和互动,而且这种交流越来越频繁,越来越可视化,越来越人性化,已经逐步进入了虚拟现实的智能交互时代。也许,未来我们无法判断我们是在跟人交流还是在跟机器交流。正像我们了解一个人的思维性格能更好的与其相处一样,了解程序及其运行规律能更好的与计算机相处,使其更好的为我们服务。日常,说起程序设计,学生普遍都“谈程色变”,不是觉得太深奥、太专业学不懂,就是觉得那些东西离我们的现实求职相距甚远,不能直接提高就业机会。其实,在高等教育中不论是服务性专业、技能性专业,还是理论性专业,如果能使学生们对程序设计、机器思维的规律有一个比较深入的了解,那不仅会对提高职业技能有帮助,更能通过程序中许多计算机科学家、软件工程师们的优秀思想来影响和熏陶学生,以提高其逻辑思维能力,帮助其养成良好的思维方式、思维习惯和严谨的工作作风[2]。

2 Windows程序设计

日常工作中用的最多的是Windows程序,所以了解Windows程序设计是我们关注的主要内容。众所周知,在使用Windows程序时我们总是要面对一个操作界面,然后用鼠标和其它输入设备去触动界面上的某些控件,以向计算机发出命令或请求,然后计算机进行相应的处理后,在界面的特定控件上或其它输出设备上输出、显示、应答。从操作中我们也许能体会到程序的一些运行规律,其实Windows程序设计可分为两个部分:界面设计和事件过程设计。

2.1 界面设计

正如我们在生活中与人相处一样,形象良好,态度热情、友善大方的人会给人留下深刻的印象,使人更便于沟通和交流;相反对于态度冷漠、刻薄寡恩、吹毛求疵的人,大家可能唯恐躲之不及,更不用说与之合作、交流。计算机程序也一样,我们在办公、娱乐中,一定更喜欢使用界面美观大方、色彩鲜明,操作便捷的程序,对界面不友好,操作复杂,即使功能强大的程序也会感到厌倦、望而生畏、弃之不用。MS-Windows操作系统之所以获得巨大的成功,就是由于她设计之初就是为了给大家提供一个更贴近生活的、人性化的、便捷的使用计算机的平台,而UNIX虽然有比Windows更优越的特性,却不能在日常工作中被广泛使用,就是因为其进入市场之初界面的不友好所致。

设计一个便于人机交互的友好界面是Windows程序设计的第一步,也是非常重要的一步。在可视化的集成开发环境中,设计一个友好的界面是非常容易的,其基本内容就是设计一个窗体对象,然后在窗体上放置所需的操作控件对象,最后设置各对象的位置、大小、颜色、动态效果等属性。界面设计的动作也不过是鼠标点击和拖动,一般不需要写代码,非计算机专业的人都可以很快上手。界面设计跟画图有点相似,有点画图基础的人可能会制作出更加漂亮的界面,而完成一个复杂、友好、操作便捷的界面不仅对设计者审美绘画能力的提高有帮助,而且能使设计者对事物的运行规律有一个更深入的认识,对培养大局意识,考虑问题的全面性也有很大帮助。

2.2 事件过程设计

经过第一步,一个漂亮、便捷、实用的界面呈现在我们面前,为人机交互创造了一个良好的环境与平台,但她还只是“一幅画”,一个静态的界面,还不能实现人机交互,触动界面上的各个控件不会有什么反应。如何使界面更加生动呢?这就是Windows程序设计第二步要解决的问题,界面上各控件对象事件过程的设计。

我们称Windows程序为事件驱动的程序,事件指的是发生在界面控件上的或其它程序对象上的事情,事件过程是一段程序代码。当操作者在界面的某控件对象、某区域对象上进行单击鼠标、双击鼠标、按下按键、移动焦点等操作时,就会触发该对象相应的事件,操作系统收到事件触发的消息时,就会回调相应的事件过程程序,对操作者做出回应。当然,我们希望计算机做什么、怎么做,在事件过程中写代码告诉她就可以了。这就是说,要想让程序做什么,我们自己首先得知道做什么。很自然,在设计事件过程时,必须首先要把解决的问题分析清楚,把解决问题的办法和流程搞清楚,因为写程序时不允许有即使是一点点的疏漏和不明确。任何思维上的瑕疵都会使我们得不到预想的结果。所以,通过程序设计我们的思路会更加清晰,我们的思维会更加严密,我们的作风会更加严谨。endprint

3 程序的触觉

程序的触觉也是计算机的触觉,是鼠标、键盘、扫描仪等输入设备,用户程序通过操作系统来间接感知外部事件。具体流程是操作系统通过接口驱动程序感知外设的动作,然后发送事件消息给用户程序。进行Windows程序设计时,用户程序不必直接跟驱动程序打交道,操作系统会做好这个联络,我们只需设计好相应的事件过程就可以了。

4 程序的语言

程序的语言是计算机能识别的一套符号系统,有机器语言、汇编语言、高级语言。计算机所有的行为都是我们预先设计、安排好的,但是必须得用一种她能够明白的方式告诉她。正如世界各地的人进行交流时总的用一种大家都能明白的语言,否则他们之间无法交流。

计算机对文字、图像、音频及视频等数据的处理都是按照二进制运算法则进行的,和自然语言一样,计算机程序也有特殊的语言,有自己的文字、语汇、语句及一些语法规则。起初工程师们编制程序就是用二进制的符号来描述的,后来为了便于记忆识别,采用带助记符的汇编语言来描述。但不论是机器语言还是汇编语言都是比较难懂、比较专业的,唯有高级语言比较适合普通学习者,从思维的学习训练来讲只明白高级语言就足够了。Windows程序设计的开发环境中有专门的编译程序,会将我们写的高级语言代码转化成机器语言代码,供计算机阅读。高级语言更接近自然语言,其基本“文字”是就是各种文字、字符、字母等书面语言用到的字符和文字。

用程序语言来描述五彩缤纷的现实世界,需要将各种对象实体格式化成一定格式的数据,即根据所描述对象的特点把数据设计成专门的方便运算的“数据类型”和“数据结构”。比如:整数型、浮点型、日期型、逻辑型等类型,数组、结构体、链表、队列、堆、栈等结构。数据在计算机内存中存放,该处内存叫“变量”。往内存里放数叫内存变量赋值,而“变量”就是程序语言的“词汇”,变量和常量用各种运算符连起来做算术运算、字符运算、关系运算、逻辑运算,以解决不同的问题。在运算的基础上形成“语句”,能表达一个完整意思的语句有,给变量赋值语句、输入/输出语句、选择判断语句、循环语句、其它辅助语句等。按照一定逻辑把各种语句组织起来就形成了程序文章,程序文章既是我们解决问题的方法和思路的描述,也是计算机处理问题的流程。

5 程序的思维

程序的思维是人脑思维的表现,我们怎么想,准备怎么做,告诉她,她就怎么想,怎么做。要想让程序进行数据处理,我们需解决三个问题:首先,要弄清楚所解决的问题是什么,想得到什么结果,达到什么目的;其次,找出解决问题的方法,即不用程序我们如何解决这个问题,现在有什么数据要处理,需经过怎样的处理,预想的处理结果是什么,最好是能把手工处理的步骤写下来,能写出方案和处理流程是最好的;最后,用计算机帮我们处理,用适合的可视化程序设计语言来描述处理过程,输入计算机,把人的思维转化成程序的思维。

可以看出,有了计算机,让程序行为代替我们的行为并不是让我们不去考虑问题,恰恰相反,是要求我们对问题看的更加清楚、明确,要求我们更加深入的思考解决问题的办法,要求我们有更加清晰的思路。

6 程序的逻辑

程序的逻辑即程序的执行规律。程序的思维是人类思维的表现,人的思维是对客观物质、客观规律的能动的反应,当然,程序执行规律反映物质运动的规律,是客观物质世界运动发展规律的反映。辨证唯物主义认为,世界是物质的,物质是运动的,运动是有规律的,从总体上讲物质运动发展的规律是随着时间的推移不断由简单向复杂、由低级向高级运动、发展。但是,就局部而言,发展并不是随意的,而是有条件的,在一定条件下可能向这个方向发展,也可能向那个方向发展,事物发展的道路也不是平坦的,在一定条件下可能会出现反复,但这个反复不是简单的重复,而是旧事物的灭亡,新事物的产生。

经过计算机科学家和工程师们长期的研究实践,总结提炼出,计算机程序的逻辑规律,即结构化程序的三种逻辑模式:顺序结构、选择结构、循环结构,以及面向对象程序的事件驱动模式和消息传递模式。顺序结构用来描述现实世界事物随时间发展的顺序性,是程序的总逻辑,也就是任何程序必须有头有尾,有开始有结束,既不会凭空而来,也不会无缘而去。选择结构用来描述事物发展的条件性,依照实际条件设计逻辑判断,决定程序的走向,其中有单分支条件结构,只描述一种条件,如果条件满足,则做相应的处理;双分支条件结构,用来描述判断的两个方面,如果满足条件,则做相应的处理,否则也得做出另外的处理;多分支结构,因为实际事物发展的条件性是很复杂的,可能涉及多个条件,从而决定发展的多个方向,程序需设计多个判断,满足对应的条件,做出对应的处理,这种多条件结构,有时也用多情况选择结构来描述,能够非常清晰的描述多情况讨论的事情。循环结构用来描述事物发展的重复性,让计程序在一定条件下反复运算,以得出需求的结果。循环有两种形式,一种是我们预先知道重复次数的计数循环,另一种是预先不知道重复次数,但是知道在什么条件下重复的条件循环。

面向对象程序的事件驱动模式用来描述事物对外界刺激反应的情况。比如家养看门狗,一旦有盗贼出现,狗狗马上做出反应,狗的行为就是事件驱动的。事件驱动是Windows程序的最大特色,程序一旦启动就进入Windows系统的任务队列,等待用户操作或其它外部事件的发生,Windows系统会不停的巡视队列中程序的状态,一旦某程序发生某种事件,则系统会调用预先编写好的事件处理程序做出相应的处理。事件驱动机制是针对对象而言的,具体对象做出什么样的处理,那就看事件过程里写的什么内容了。消息传递模式是用来描述程序中各对象之间信息交流的通信机制。操作系统通过消息循环来监视任务队列中程序的状态,通过消息传递实现各程序之间的通信。

7 程序与人脑

计算机程序产生初期只是某些专业技术人员思维的物化,一般人望尘莫及,随着计算机软硬件技术的发展,程序能够解决的事情越来越多,越来越复杂,越来越人性化,程序已经成为我们生活不可缺少的一部分,程序设计语言也越来越接近自然语言,设计程序、阅读程序也不再只是专业技术人员的专利。

但是,不论程序语言多么自然,要想让程序解决一个更复杂问题,更完美的解决问题,要求编写程序的人思维更加缜密细致。程序设计的过程是平心静气整理思维的过程,也是激发灵感的过程。程序的思维总归是人的思维表现,而使用程序的过程既是与机器交流的过程,也是与设计者交流的过程,是一个学习提高的过程,不仅仅是知识,更多的是程序中蕴含的思维和流程。人类在推动计算机程序向前发展的同时,程序也在反过来激发我们的思维不断提高,工作不断流程化,工作中的盲目性、随意性不断减少。程序是目前最简洁的思想方法的表达方式,她抛开了太多描写和修饰的语言,留下的只有工作流程和思想方法。程序已经成为人类思维共享,文明传承的桥梁和纽带。学习程序设计,并经常能阅读一些优秀的程序对我们思维能力的提高大有裨益,将使我们思路更加清晰,做事更加有条理。

参考文献:

[1] 王秉中.计算电磁学[M].北京:科学出版社,2007(8).

[2] 龚沛曾,杨志强. 大学计算机基础教学中的计算思维培养[J].中国大学教学,2012(5):51-54.endprint

猜你喜欢

计算思维程序设计逻辑
刑事印证证明准确达成的逻辑反思
逻辑
创新的逻辑
基于Visual Studio Code的C语言程序设计实践教学探索
从细节入手,谈PLC程序设计技巧
高职高专院校C语言程序设计教学改革探索
程序设计课程中计算思维和应用能力培养问题研究
PLC梯形图程序设计技巧及应用