第4章_程序设计基础

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第4章软件技术基础4.1数据与文件数据是信息的具体表现形式,是信息系统的基础,因此我们要了解数据的组织及其处理方面的知识。4.1.1数据组织的层次1.字符2.数据元3.记录4.文件5.数据库一个字符在计算机中占8位二进制位,即一个字节。数据元是数据处理中不再分割的最小的逻辑单位。将逻辑上相关的数据元组合在一起就形成一个记录。文件是有名字的存储在某种介质上的一组信息的集合,即文件由信息和介质组成。数据库是一组有序数据的集合。有时根据不同的应用领域可将共享的数据分成若干文件。4.1.2数据文件的组织方式1.顺序文件2.索引文件3.直接存取文件顺序文件是最简单的文件,文件的各个记录按照逻辑顺序存放在外存储器的连续区域中,即顺序文件的物理记录的顺序和逻辑记录的顺序是一致的。索引文件是指在数据文件之外再建立一个索引表,索引表包含关键字与其物理记录之间的对应关系,索引表与数据文件共同构成索引文件。直接存取文件又称哈希(Hash)文件或散列文件,即利用哈希函数及其处理冲突的方法把文件散列到外存上,通常是磁盘。4.2程序设计概述程序是计算机的一组指令,是程序设计的最终结果。程序经过编译和执行才能最终完成程序的功能。如果没有程序,计算机就什么动作都不会做。程序设计不仅仅是计算机专业人员必备的知识,它将渗透到各行各业的专业技术人员中。4.2.1计算机程序【例4.1】编程序计算并输出两个数的和。程序如下:#includestdio.hvoiudmain()/*整数加法器程序*/{intx,y;/*变量定义*/intz;/*变量定义*/scanf(“%d,%d”,&x,&y);/*输入两个整数,数据间以逗号分隔*/z=x+y;/*求x+y的和,并存入z*/printf(“Sum=%d”,z)/*输出结果,既z的值*/}计算机程序是指计算机为解决某个问题或完成某项任务而编制的指令序列。例如,输入两个数,然后计算并输出这两个数的和。1.程序的组成4.2.1计算机程序通常,一个程序包含数据输入、处理、数据输出这几部分内容。此程序运行时可以接收用户输入的两个数,然后计算并输出这两个数之和。此例反映了C程序中的一个函数体内的主要结构,即{变量定义部分可执行的操作部分}通常,所有变量的定义应写在函数体的开头,然后才是对它们的处理。1.程序的组成4.2.1计算机程序高级语言程序中的数据有两种:一种是在程序运行中不变的数值称为常量,另一种是在程序运行中发生改变的数值称为变量。这两种数据在程序编码中使用符号描述,并根据取值类型预先定义。例如,【例1.1】中的变量定义,x、y、z均为整型变量。intx,y;/*变量定义*/intz;/*变量定义*/2.程序中的数据描述4.2.1计算机程序正确的注释可以帮助读者正确地理解程序。注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,它给出程序的整体说明。功能性注释的位置一般嵌入在源程序体中,主要描述语句或程序做什么。scanf(“%d,%d”,&x,&y);/*输入两个整数,数据间以逗号分隔*/z=x+y;/*求x+y的和,并存入z*/printf(“Sum=%d”,z)/*输出结果,既z的值*/3.程序的注释4.2.1计算机程序传统的计算机程序的执行过程可分为编辑、编译、链接和运行4个过程。4.程序的执行4.2.1计算机程序5.计算机程序设计步骤程序设计通常有5个步骤:程序说明、程序设计、编写代码、测试程序、程序定稿。(1)程序说明(2)程序设计(3)程序编码(4)测试程序(5)程序文件程序说明也称为程序分析,例如明确要解决的问题,即确定编程目标;定义想得到的输入/输出数据等。在程序设计中有多种方法,使用程序设计方法设计一个问题或任务的执行方案。程序编码是使用计算机语言编写源程序。通过编译系统调试源程序,发现程序的语法错误并将其消除。通过软件的用例测试,发现其逻辑错误并将其消除。最终程序文件由程序代码文件、程序说明文件和用户操作手册组成。4.2.2程序设计方法与风格程序设计风格是指编写程序时所表现出的特点、习惯和逻辑思路。程序是由人来编写的,为了测试和维护程序,往往需要阅读和跟踪程序,因此程序设计的风格应该强调简单和清晰,程序必须是可以理解的。可以认为,著名的“清晰第一,效率第二”的论点已成为当今主导的程序设计风格。4.2.2程序设计方法与风格要形成良好的程序设计风格,主要应注重和考虑以下一些因素。1.源程序文档化源程序文档化应考虑如下几点:(1)符号名的命名:(2)程序注释:(3)视觉组织:符号名包括文件名和变量名,符号名的命名应具有一定的实际含义,以便对程序功能的理解;符号名的命名还应该由规律,以便对程序文件的整理。注释一般分为序言性注释和功能性注释。序言性注释通常位于每个程序的开头部分,他给出程序的整体说明。功能性注释的位置一般嵌入在源程序体中,主要描述下面的语句或程序做什么。为了使程序的结构一目了然,可以在程序中利用空格、空行、缩进等技巧使程序层次清晰。4.2.2程序设计方法与风格3.语句的结构程序应该简单易懂,语句构造应该简单直接,不应该为提高效率而把语句复杂化。(1)在一行只写以条语句;(2)编写程序首先考虑清晰性;(3)除非对效率有特殊要求,否则编写程序时,要做到清晰第一,效率第二;(4)首先保证程序正确,然后再提高速度;(5)避免使用大量的临时变量而使程序的可读性下降;(6)避免使用无条件转移语句;(7)尽可能使用库函数;(8)避免使用复杂的条件嵌套语句;(9)模块功能尽可能单一,即一个模块完成一个功能;(10)不要对不良的程序修修补补,不良的程序要重新编写,避免因修改带来新的问题。4.2.2程序设计方法与风格4.输入和输出输入/输出是用户最关心的问题,输入/输出的方式和格式应尽可能方便用户的使用,因为系统能否被用户接受,往往取决于输入/输出的风格。无论是批处理的输入和输出方式,还是交互式的输入和输出方式,在设计和编程时都应考虑如下原则:(1)对所有的输入数据都要检验其合法性;(2)检查输入项之间的合理性;(3)输入数据尽可能少,操作尽可能的简单;(4)在以交互输入/输出方式进行输入时,要采用人——机会话的方式给出明确的提示信息和运行的状态信息;(5)设计输出报表格式。4.3结构化程序设计由于软件危机的出现,人们开始研究程序设计方法,其中最受关注的是结构化程序设计方法。20世纪70年代提出了“结构化程序设计(structuredprogramming)”的思想和方法。结构化程序设计方法引入了工程思想和结构化思想,使大型软件的开发和编程都得到了极大的改善。4.3.1结构化程序设计的原则结构化程序设计方法的主要原则可以概括为自顶向下,逐步求精,模块化,限制使用goto语句。.1.自顶向下.2.逐步求精.3.模块化.4.限制使用goto语句程序设计时,应先考虑总体,后考虑细节;先考虑全局目标,后考虑局部目标。对复杂问题,应设计一些子目标作为过渡,逐步细化。一个复杂问题,肯定是由若干稍简单的问题构成。模块化是把程序要解决的总目标分解为子目标,再进一步分解为具体的小目标,把每一个小目标称为一个模块。(1)GOTO语句确实有害,应当尽量避免;(2)完全避免使用GOTO语句也并非是个明智的方法,有些地方使用GOTO语句,会使程序流程更清楚、效率更高。(3)争论的焦点不应该放在是否取消GOTO语句上,而应该放在用什么样的程序结构上。其中最关键的是,应在以提高程序清晰性为目标的结构化方法中限制使用GOTO语句。4.3.2结构化程序的基本结构与特点顺序结构:顺序结构是一种简单的程序设计,它是最基本、最常用的结构,如图4.2所示。顺序结构就是按照程序语句行的自然顺序,一条语句一条语句地执行程序。语句A语句B入口出口4.3.2结构化程序的基本结构与特点选择结构:选择结构又称为分支结构,它包括简单分支结构和多分支结构,这种结构可以根据设定的条件,判断应该选择执行哪一条分支的语句序列。4.3.2结构化程序的基本结构与特点重复结构:重复结构又称循环结构。它根据给定的条件,判断是否需要重复执行同一相同的程序段,利用重复结构可以简化大量的程序行。对先判断后执行循环体的称为当型循环结构对先执行循环体后判断的称为直到型循环结构,条件条件4.3.3结构化程序设计原则和方法在结构化程序设计的具体实施中,要注意把握以下原则和方法:1.使用程序设计语言中的顺序、选择、循环等有限的控制结构表示程序的控制逻辑;2.选用的控制结构只允许有一个入口和一个出口;3.程序语句组成容易识别的语句序列块,每块只允许有一个入口和一个出口;4.复杂结构的程序设计时,仅用嵌套的基本控制结构进行组合嵌套来实现;5.严格控制GOTO语句的使用。4.4面向对象的程序设计4.4.1面向对象方法的基本概念面向对象(objectoriented)方法已经发展成为主流的软件开发方法。面向对象方法中包含对象及对象属性与方法、类、继承、多态性等几个基本概念,这些概念是理解和使用面向对象方法的基础和关键。4.4.1面向对象方法的基本概念4.4.1面向对象方法的基本概念1.对象(object)面向对象的程序设计方法中涉及的对象是系统中用来描述客观事物的一个实体,是构成系统的一个基本单位,它由一组表示其静态特征的属性和它可执行的一组操作组成。4.4面向对象的程序设计对象有如下基本特点:(1)标识唯一性。指对象是可以区分的,并且由对象的内在本质来区分,而不是通过描述来区分。(2)分类性。指可以将具有相同属性和操作的对象抽象成类。(3)多态性。指同一个操作可以是不同对象的行为。(4)封装性。从外面看只能看到对象的外部特性,即只需知道数据的取值范围和可以对该数据施加的操作,根本无需知道数据的具体结构以及实现操作的算法。对象的内部,即处理能力的实行和内部状态对外是不可见的。从外面不能直接使用对象的处理能力,也不能直接修改其内部状态,对象的内部状态只能由其自身改变。4.4面向对象的程序设计2.类(Class)和实例(Instance)类是具有共同属性、共同方法的对象的集合。Integer是一个整数类,它描述了所有整数的性质。因此任何整数都是整数类的对象,而一个具体的整数“23412”是类Integer的一个实例。4.4面向对象的程序设计3.消息(Message)面向对象的世界是通过对象与对象间彼此的相互合作来推动的,对象间的这种相互合作需要一个机制协助进行,这种机制称为“消息”。消息是一个实例与另一个实例之间传递的信息,它请求对象执行某一处理或回答某一要求的信息,它统一了数据流和控制流。例如,一个汽车对象具有“行驶”这项操作,那么要让汽车以时速80公里的速度行驶时,需传递给汽车对象“行驶”及“时速80公里”的消息。通常一个消息由3部分组成:(1)接受消息的对象的名称;(2)消息标识符(也称消息名);(3)零个或多个参数。4.4面向对象的程序设计3.消息(Message)【例4.2】MyCircle是一个半径3Cm、圆心位于(120,120)的Circle类的对象,也就是Circle类的一个实例,当要求它以黄颜色在屏幕上显示这个圆时,在C++语言中应该向它发送下列消息:MyCircle.Show(Yellow);其中;MyCircle是接受消息的对象的名字,Show是消息名,Yellow是消息的参数。4.4面向对象的程序设计4.继承(Inheritance)继承是面向对象的方法的一个主要特征。继承是使用已有的类定义作为基础建立新类的定义技术。已有的类可当作基类来引用,则新类可当作派生类来引用。4.4面向对象的程序设计图中以A、B两个类为例,其中类B是从类A派生出来的子类,它除了具有自己定义的特性(数据和操作)之外,还从父类A继承特性。当创建类A的实例a1的时候,a1以类A为样板建立实例变量。当创建类B的实例b1的时候,b1既要以类B为样板建立实例变量,又要以类A为样板建立实例变量,b1所能执行的操作即有类B中定义

1 / 90
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功