1、第 1 单元 程序与程序设计到目前为止,我们已经有了丰富的使用软件的经验。我们可以很自如的使用文字处理类软件写文章、制作版面精美的报刊;可以使用图片处理软件制作出创意新奇的宣传画;或者用画图软件描绘出自己设计的卡通人物等等;但是无论我们的使用计算机的经验多么丰富,我们一直都是处于一种“使用者”的层面上。一直在使用或者说创造性的使用他人编制好的软件来解决问题。是否思考过这些软件是如何工作的?如何编写的?我们也能自己写出帮助人们解决问题的“软件”吗?就让我们也尝试一下“编写”程序,与计算机做更进一步的“交流”。第 1 课 理解程序与程序设计要开始学习编写计算机“程序”了!很兴奋吧!提到“程序”,你
2、是否能够理解什么是程序?“程序”在计算机系统中具有什么样的意义和价值?学习目标:1. 认识计算机组成的逻辑结构;2. 认识计算机中数据的表示方法;3了解什么是程序;4. 了解什么是程序设计;5. 了解计算机语言的发展。学习过程:一、计算机系统再认识我们非常清楚的知道一个完整的计算机系统包括“硬件系统”和“软件系统”两大部分。二者是不可分割的,没有软件系统,硬件就是一堆“废物”;没有了硬件,软件也只是无所依托的“符号幽灵”。1.计算机组成的逻辑结构就计算机的硬件系统而言,当今计算机的基本结构仍然是冯诺依曼结构。冯诺依曼(Von Neumann)是美籍匈牙利数学家,这位伟大的人物在 1946年提出
3、了关于计算机组成和工作方式的基本设想。到现在为止,尽管计算机制造技术已经发生了极大的变化,但是就其体系结构而言,仍然是根据他的设计思想制造的。而冯诺依曼也因其对计算机领域的卓绝贡献而被称为“计算机之父”。 冯诺依曼设计思想可以简要地概括为以下三点:(1)计算机应包括运算器、存储器、控制器、输入和输出设备五大基本部件。如图 1-1 所示。(2)计算机内部应采用二进制(0,1)来表示指令和数据。(3)将编好的程序送入内存储器中,然后启动计算机工作,计算机勿需操作人员干预,能自动逐条取出指令和执行指令。 图 1-1 计算机的逻辑组成图冯诺依曼设计思想最重要之处在于明确地提出了“程序存储”的概念,他的
4、全部设计思想实际上是对“程序存储和程序控制”概念的具体化。迄今为止,计算机的工作原理仍然采用存储程序和程序控制原理,计算机一系列的工作是根据指令功能控制程序的执行来完成的。2.计算机中数据的表示方法由组成计算机硬件电路的特性决定,计算机中的数据由 0,1 两个二进制数表示。现代计算机不仅处理数值领域的问题,而且处理大量非数值领域的问题。这样一来,必然要引入文字、字母以及某些专用符号,以便表示文字语言、逻辑语言等信息。那么,一个数字或者一个字符在计算机中具体是如何表示的呢?目前国际上普遍采用的字符系统是 ASCII 码(美国国家信息交换标准字符码)。ASCII 码规定 8 个二进制位的最高一位为
5、 0,余下的 7 位可以给出 128 个编码,表示 128 个不同的字符。其中 95 个编码,对应着计算机终端能输入并且可以显示的 95 个字符,打印机设备也能打印这 95 个字符,如大小写各 26 个英文字母,09 这 10 个数字符,通用的运算符和标点符号,*,/, 等等。另外的 33 个字符,其编码值为 031 和 127,则不对应任何一个可以显示或打印的实际字符,它们被用作控制码,控制计算机某些外围设备的工作特性和某些计算机软件的运行情况。3.指令、程序和软件指令是计算机要执行的一种基本操作命令,是对计算机进行程序控制的最小单位。程序是一组指令序列,并取以文件名,称为程序文件。计算机的
6、工作原理是先将需要执行的程序从外存中读入内存,由 CPU 负责逐条读取指令,然后再执行,直到遇到结束指令。软件是指计算机程序及其有关的文档,它可以分为系统软件和应用软件两大类。系统软件是负责管理、控制、维护、开发计算机的软硬件资源,提供用户一个便利的操作界面和提供编制应用软件的资源环境。其中最主要的是操作系统,其他还有语言处理程序、系统实用程序、各种工具软件等。操作系统(OS)是对所有软硬件资源进行管理、高度及分配的核心软件,用户操作计算机实际上是通过使用操作系统来进行的,它是所有软件的基础和核心。应用软件是为解决实际问题而专门编制的程序,如字处理软件(WORD)、辅助设计软件(AutoCAD
7、)、绘图计算软件(几何画板)、计算机维护软件(Norton)、杀毒软件(KV3000)等。应用软件与系统软件的关系如下图 1-2 所示:图 1-2 应用软件与系统软件关系有人说,软件是看不见和摸不着的。因为软件是思想,规则,逻辑。本身是抽象的,确实不可触及。但软件总是要有载体来存放,要有表达或表现方式,这些使得它们变得形象具体起来。因此,也可以说程序是一组按照一定的逻辑进行组合的指令。4. 计算机的工作过程 了解了“程序存储”, 再去理解计算机工作过程变得十分容易。如果想叫计算机工作,就得先把程序编出来,然后通过输入设备送到存储器中保存起来, 即程序存储。接下来就是执行程序的问题了。 根据冯诺
8、依曼的设计,计算机应能自动执行程序,而执行程序归结为逐条执行指令。因此,计算机的工作过程就是执行程序的过程。二、计算机语言的发展1. 什么叫计算机语言 在日常生活中,人们要靠语言来交流思想、传递信息。狭义上,我们讲的语言,汉语、英语、法语,它们有声音,是语言。小鸟之间唧唧喳喳,大概也是鸟类间的语言。但语言却不一定都有声音,如一些肢体动作语言,比如哑语、旗语等等,虽无声,但它们也是语言。广义上讲,语言是沟通、交流的一种手段。基于此,可以说各种工具也都有自己的语言,当然也包括计算机。一般地,越复杂的机器,人类与其沟通的语言也越复杂。譬如汽车,想驾驭它,就必须去驾校参加学习,学习各种和它沟通的方法。
9、想一想,开车的时候,驾驶员的确是在和车进行沟通;如果想让汽车向左转,就应该向左转方向盘;想停车就应该踩刹车等等。 同样,要使计算机能够很好地为人类服务,人与计算机之间也要通过一种语言来互相沟通、互相交流,这种“语言”能够表达人类的思想,同时,还能被计算机所识别、接受,这种“语言”就叫做计算机语言。计算机语言分为三类:机器语言、汇编语言和高级语言。目前,科学家们正在研究新型电脑语言识别系统,也许将来有一天,人类会实现用自己的语言与电脑直接对话。2.计算机语言发展简介计算机语言的演化发展也从最开始的机器语言到汇编语言到各种结构化高级语言(如 Pascal,C, C+, BASIC 语言),最后到支
10、持面向对象技术的面向对象语言(如 Vb、 Vc、Delphi 、易语言等等)。(1)计算机语言的发展二十世纪四十年代当计算机刚刚问世的时候,程序员必须手动控制计算机。当时的计算机十分昂贵,想到利用程序设计语言来解决问题的人是德国工程师楚泽(konrad zuse)。几十年后,计算机的价格大幅度下跌,而计算机程序也越来越复杂。也就是说,开发时间已经远比运行时间来得宝贵。于是,新的集成、可视的开发环境越来越流行。它们减少了所付出的时间、金钱。只要轻敲几个键,一整段代码就可以使用了。随着C、Pascal 、Fortran 等结构化高级语言的诞生,使程序员可以离开机器层次,在更抽象的层次上表达意图。由
11、此诞生的三种重要控制结构(顺序结构、选择结构、循环结构),以及一些基本数据类型都能够很好的开始让程序员以接近问题本质的方式去思考和描述问题。随着程序规模的不断扩大,在60 年代末期出现了软件危机,在当时的程序设计模型中都无法克服错误随着代码的扩大而级数般的扩大,以至到了无法控制的地步,这个时候就出现了一种新的思考程序设计方式和程序设计模型- 面向对象程序设计,由此也诞生了一批支持此技术的程序设计语言,比如 c+,java,这些语言都以新的观点去看待问题,即问题就是由各种不同属性的对象以及对象之间的消息传递构成。面向对象语言由此必须支持新的程序设计技术。总之,计算机语言是不断发展变化的。(2)计
12、算机语言的发展现状目前通用的编程语言有两种形式:汇编语言和高级语言。 汇编语言的实质和机器语言是相同的,都是直接对硬件操作,只不过指令采用了英文缩写的标识符,更容易识别和记忆。用汇编语言所能完成的操作不是一般高级语言所能实现的,而且源程序经汇编生成的可执行文件不仅比较小,而且执行速度很快。高级语言是目前绝大多数编程者的选择。和汇编语言相比,它不但将许多相关的机器指令合成为单条指令,并且去掉了与具体操作有关但与完成工作无关的细节,编程者也就不需要有太多的计算机硬件专业知识。高级语言主要是相对于汇编语言而言,它并不是特指某一种具体的语言,而是包括了很多编程语言,如目前流行的 vb、vc、 foxp
13、ro、delphi 等,这些语言的语法、命令格式都各不相同。 高级语言所编制的程序不能直接被计算机识别,必须经过转换才能被执行,按转换方式可将它们分为两类:解释类和编译类。 (3)计算机语言的发展趋势从计算机诞生至今,计算机自硬件到软件都是以印欧语为母语的人发明的。所以其本身就带有印欧语的语言特征,在硬件上 cpu、i/o、存储器的基础结构都体现了印欧语思维状态的“焦点视角”,精确定义,分工明确等特点。计算机语言也遵照硬件的条件,使用分析式的结构方法,严格分类、专有专用,并在其发展脉络中如同他们的语言-常用字量和历史积累词库量极度膨胀。实际上,计算机硬件的发展越来越强调整体功能,计算机语言的问
14、题日益突出。为解决这一矛盾,自六十年代以来相继有 500 多种计算机语言出现,历经五代,至今仍在变化不已。汉语没有严格的语法框架,字词可以自由组合、突出功能的整体性语言。在计算机语言问题成为发展瓶颈的今天,汉语言进入计算机程序设计语言行列,已经成为历史的必然。 “易语言”是目前我国自主开发,一种全可视化、全中文的编程工具。我们就选择这一工具作为我们学习编程的载体。无论选择哪种语言都只是编写程序的工具,而编写程序的思想是一致的。第 2 课 认识程序设计工具程序用计算机语言写成。编程的实质就是用计算机语言来表达解决问题的逻辑。学习目标:1. 认识机器、汇编和高级语言;2. 认识“易语言”的工作环境
15、;3了解“易语言”的特点;4. 了解对象、属性、事件、事件驱动含义;5. 学会创建对象的方法;6. 学会打开和运行一个“易”程序。学习过程:一、语言和实现语言的工具1. 机器语言计算机的机器语言,必须符合计算机的硬件特点。越符合机器的特点的同时也就越不符合人类的特点。 因为,数据在计算机中使用二进制数表示(0、1)。所以,机器语言是用二进制代码表示的。机器语言尽是 0 和 1,那么是不是可以随便写一串0 和 1 就算是程序呢?不是。就像汉语是由汉字组成,可要是说下面这一串汉字: “程序我学习要写”肯定看不懂,所以,语言是有规则的。机器也有自己固定词汇,在机器语言里,称为机器指令,它是计算机的设
16、计者通过计算机的硬件结构赋予计算机的操作功能。程序是由指令及数据组成。这些指令是一些固定的 0 和 1 的组合(不同产商不同型号的机器,其指令又有不同)。 事实上,计算机里的所有数据,无论是一个程序,一篇文稿,一张照片,一首 MP3,最终都是 0 和 1。 世界就是这样奇妙。万事万物五彩缤纷,但进了计算机,却只是些 0 和1 的组合。例:已知 b 等于 1; c 等于 2; 然后计算 b + c 值,并将该值赋给 a这样的一个问题,用机器语言写程序(不同机型不一样,这里只是示例)如下图 1-3 所示:10001010 01010101 11000100 00000011 01010101 11
17、000000 10001001 01010101 11001000图 1-3 机器语言程序示例用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。编写程序花费的时间往往是实际运行时间的几十倍或几百倍。而且,编出的程序全是些 0 和 1 的指令代码,直观性差,还容易出错。现在,除了计算机生产厂家的专业人员外,绝大多数程序员已经不再去学习机器语言了。2. 汇编语言10101101 、 10010101,这样的代码即不容易记,也易写错。所以很自然地,出现了用符号来表示这些固定的二进制指令的语言,这就是汇编语言。 对于上面的例子,已知 b 等于 1; c 等于 2; 然后计算
18、b + c 值,并将该值赋给 a 。 用汇编语言可以写成如图 1-4 所示的形式:mov edx,ebp-0x3c add edx,ebp-0x40 mov ebp-0x38,edx 图 1- 4 汇编语言示例汇编语言仅是机器语言的一种助记符,没有本质的区别。无论是机器还是汇编语言,都不易掌握。 3. 高级语言汇编语言和机器语言虽然很难记难写,但它们的代码效率高,占用内存少,这相当符合计算机发展之初的存储器昂贵,处理器功能有限等硬件特点。但随着计算机的硬件飞速发展,功能越来越强大。各种高级语言便接二连三地出现了。 对于上面的例子,用高级语言(以 Basic 语言为例)可以写成如图 1-5的形式
19、:b=1c=2 a=b+c 图 1- 5 高级语言示例高级语言“高级”在何处呢?前面我们说过,一门计算机语言“越符合机器的特点,同时也就越不符合人类的特点” 。所以,高级语言就高级在它总是尽量接近我们人类的自然语言和思维方式。从示例程序是不是很容易看出这一点?用计算机高级语言写成的代码被语言的实现工具(Pascal ,Basic,c,VC,VB,Delphi,或 C+ Builder、易语言等等)转换成计算机能直接识别的机器语言。这就完成了人与机器在程序制定上的最后沟通。说一说对比同一问题,三种不同语言的写法,说一说你对三种语言的体会和认识。二、认识易语言工作环境1. 软件安装易语言的安装和许
20、多软件的安装没有什么不同。双击易语言的安装文件后,按照提示步骤操作即可。2. 工作环境(1)运行易语言后,出现如图 1-6 所示的易语言启动对话框图 1- 6 易语言启动对话框(2)选择“windows 窗口程序”项,单击“确定”按钮,打开易语言主界面,如图 1-7 所示:启动窗口:是提供给程序设计者设计人机交互界面的;在这里根据问题的需要;设计者使用组件箱中的工具在窗口上合适的位置创建所需对象。组件箱:分类列出了易语言常用的组件。工作夹:包括支持库选择夹、程序选择夹和属性选择夹。支持库选择夹显是支持在windows 下弹出窗口及组件等标准的 32 位windows 程序,也称易程序。示了易语
21、言的命令分类、库定义数据类型和库定义常量;程序选择夹中显示了一个程序的资源列表;属性选择夹中列出了组件的属性。状态夹:显示了提示信息,编译时的输出信息,以及调试时的调用表信息等。工作夹栏组件箱属性列表图 1-7 易语言主界面3.易语言特点以问题,已知 b 等于 1; c 等于 2; 然后计算 b + c 值,将该值赋给 a 的并将计算结果显示给用户的易程序为例,如图 1-8 所示。图 1-8 易程序示例(1)体会易程序的特点 启动易语言; 执行“程序”“打开”命令,在配套素材的本课文件夹中打开“计算 1+2”程序文件。 单击工具栏中的“运行” 按钮,体会一下程序运行和该程序所做的工作。启动窗口
22、状态夹启动窗口运行效果编写代码的窗口我们来分析一下示例程序: 界面上只有一个“标签”对象,用来显示计算结果; 当执行程序时,系统引发了“_启动窗口_创建完毕”事件,导致该事件所对应的事件过程被执行;该事件过程作了一个“1+2”的计算,并把计算结果显示在标签中。 运行效果,就是我们在界面上看到的,计算结果“3” 。(2)对象的属性在启动窗口创建了具体对象后,对象以什么样的形像呈现给用户,就像人有不同的名字、相貌各异、着装不同一样,对象也可以根据需要以不同的形象呈现给用户,这些不同的特征就由该对象不同的属性值决定。设置对象属性的方法有两种,一是在界面设计时,通过属性列表进行设置;二是在代码窗口中通
23、过命令,在程序执行过程中进行设置。不同的对象有各自独特的属性,但也有相同的属性,如每个对象都需要有名字以便相互区分,且不能重名,一般情况下,我们使用系统默认的名字就可以。(3)对象的事件把不同的对象放置在了窗口中,怎样和使用者进行交互呢?还是从我们使用软件的角度去体会,以安装程序为例,如我们已经完成了一个步骤,想让机器进行下一步;一般情况下,界面上会提供给我们一个“下一步”命令按钮,用鼠标“单击”一下该按钮,程序就开始执行下一步工作了。注意,这个“单击”动作,就是用户和程序作的一个交互,只有用户作了这个动作,程序才会明白你的意图,这也就说该对象能够识别这个动作,在程序设计中把这些对象能够识别的由用户或系统触发的动作称为事件,如我们常常用鼠标左键的“单击” 、 “双击” 、 “移动” 、 “按下” 、 “抬起”等等动作,或者在键盘上的按键等都是一个具体的事件。当在某个对象上发生了一个事件后,程序具体会做什么,就是程序设计者根据解决问题的需要,所编写的具体代码,也就是该事件的具体事件过程。由此,我们可以看出该语言的主要特点是可视化的、面向对象的、事件驱动的。而具体的事件过程该如何编写,也就是如何把我们解决问题的思想用易语言的方式表达出来,是我们今后学习编程的重点内容。尝试和探索试着解释代码窗口中每一句话的含义。表 1-1 语句含义语句 含义b=1