编程语一般有哪几种,各个优点是什么啊

编程语一般有哪几种,各个优点是什么啊,第1张

结构程序的概念首先是从以往编程过程中无限制地使用转移语句而提出的。转移语句可以使程序的控制流程强制性的转向程序的任一处,在传统流程图中,就是用上节我们提到的"很随意"的流程线来描述这种转移功能。如果一个程序中多处出现这种转移情况,将会导致程序流程无序可寻,程序结构杂乱无章,这样的程序是令人难以理解和接受的,并且容易出错。尤其是在实际软件产品的开发中,更多的追求软件的可读性和可修改性,象这种结构和风格的程序是不允许出现的。为此提出了程序的三种基本结构。

在讨论算法时我们列举了程序的顺序、选择和循环三种控制流程,这就是结构化程序设计方法强调使用的三种基本结构。算法的实现过程是由一系列 *** 作组成的,这些 *** 作之间的执行次序就是程序的控制结构。1996年,计算机科学家Bohm和Jacopini证明了这样的事实:任何简单或复杂的算法都可以由顺序结构、选择结构和循环结构这三种基本结构组合而成。所以,这三种结构就被称为程序设计的三种基本结构。也是结构化程序设计必须采用的结构。

1 顺序结构

顺序结构表示程序中的各 *** 作是按照它们出现的先后顺序执行的,其流程如图1-6所示。图中的s1和s2表示两个处理步骤,这些处理步骤可以是一个非转移 *** 作或多个非转移 *** 作序列,甚至可以是空 *** 作,也可以是三种基本结构中的任一结构。整个顺序结构只有一个入口点a和一个出口点b。这种结构的特点是:程序从入口点a开始,按顺序执行所有 *** 作,直到出口点b处,所以称为顺序结构。上一节图1-2表示的就是一个顺序结构的流程图。事实上,不论程序中包含了什么样的结构,而程序的总流程都是顺序结构的。例如,在图1-3、图1-4和图1-5所表示的流程图中,其总体结构流程都是自上而下顺序执行的。

2选择结构

选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行。选择结构有单选择、双选择和多选择三种形式。

双选择是典型的选择结构形式,其流程如图1-8所示,图中的s1和s2与顺序结构中的说明相同。由图中可见,在结构的入口点a处是一个判断框,表示程序流程出现了两个可供选择的分支,如果条件满足执行s1处理,否则执行s2处理。值得注意的是,在这两个分支中只能选择一条且必须选择一条执行,但不论选择了哪一条分支执行,最后流程都一定到达结构的出口点b处。前面的图1-3中就采用了双选择结构流程图。

当s1和s2中的任意一个处理为空时,说明结构中只有一个可供选择的分支,如果条件满足执行s1处理,否则顺序向下到流程出口b处。也就是说,当条件不满足时,什么也没执行,所以称为单选择结构,如图1-7所示。

多选择结构是指程序流程中遇到如图1-9所示的s1、s2、……、sn等多个分支,程序执行方向将根据条件确定。如果满足条件1则执行s1处理,如果满足条件n则执行Sn处理,总之要根据判断条件选择多个分支的其中之一执行。不论选择了哪一条分支,最后流程要到达同一个出口处。如果所有分支的条件都不满足,则直接到达出口。有些程序语言不支持多选择结构,但所有的结构化程序设计语言都是支持的,C语言是面向过程的结构化程序设计语言,它可以非常简便的实现这一功能。本书在第五章将详细介绍各种形式的选择结构应用问题。

3循环结构

循环结构表示程序反复执行某个或某些 *** 作,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么情况下执行循环?哪些 *** 作需要循环执行?循环结构的基本形式有两种:当型循环和直到型循环,其流程如图1-10所示。图中虚线框内的 *** 作称为循环体,是指从循环入口点a到循环出口点b之间的处理步骤,这就是需要循环执行的部分。而什么情况下执行循环则要根据条件判断。

当型结构:表示先判断条件,当满足给定的条件时执行循环体,并且在循环终端处流程自动返回到循环入口;如果条件不满足,则退出循环体直接到达流程出口处。因为是"当条件满足时执行循环",即先判断后执行,所以称为当型循环。其流程如图1-10(a)所示。

直到型循环:表示从结构入口处直接执行循环体,在循环终端处判断条件,如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达流程出口处,是先执行后判断。因为是"直到条件为真时为止",所以称为直到型循环。其流程如图1-10(b)所示。本章图1-5用迭代法求和的流程图就是一个典型的直到型循环结构。

同样,循环型结构也只有一个入口点a和一个出口点b,循环终止是指流程执行到了循环的出口点。图中所表示的S处理可以是一个或多个 *** 作,也可以是一个完整的结构或一个过程。

整个虚线框中是一个循环结构。

通过三种基本控制结构可以看到,结构化程序中的任意基本结构都具有唯一入口和唯一出口,并且程序不会出现死循环。在程序的静态形式与动态执行流程之间具有良好的对应关系。

132 N-S流程图

N-S流程图是结构化程序设计方法中用于表示算法的图形工具之一。对于结构化程序设计来说,传统流程图已很难完全适应了。因为传统流程图出现得较早,它更多地反映了机器指令系统设计和传统程序设计方法的需要,难以保证程序的结构良好。另外,结构化程序设计的一些基本结构在传统流程图中没有相应的表达符号。例如,在传统流程图中,循环结构仍采用判断结构符号来表示,这样不易区分到底是哪种结构。特别是传统流程图由于转向的问题而无法保证自顶而下的程序设计方法,使模块之间的调用关系难以表达。为此,两位美国学者Nassi和Shneiderman于1973年就提出了一种新的流程图形式,这就是N-S流程图,它是以两位创作者姓名的首字母取名,也称为Nassi Shneiderman图。

N-S图的基本单元是矩形框,它只有一个入口和一个出口。长方形框内用不同形状的线来分割,可表示顺序结构、选择结构和循环结构。在N-S流程图中,完全去掉了带有方向的流程线,程序的三种基本结构分别用三种矩形框表示,将这种矩形框进行组装就可表示全部算法。这种流程图从表达形式上就排除了随意使用控制转移对程序流程的影响,限制了不良程序结构的产生。

与顺序、选择和循环这三种基本结构相对应的N-S流程图的基本符号如图1-11所示。图1-11(a)和图1-11(b)分别是顺序结构和选择结构的N-S图表示,图1-11(c)和图1-11(d)是循环结构的N-S图表示。由图可见,在N-S图中,流程总是从矩形框的上面开始,一直执行到矩形框的下面,这就是流程的入口和出口,这样的形式是不可能出现无条件的转移情况。下面用N-S流程图表示前面例1-2中求函数值m的算法,其流程如图1-12所示。

值得注意的是,N-S流程图是适合结构化程序设计方法的图形工具,对于非结构化的程序,用N-S流程图是无法表示的。

例如在例1-3中,求任意两个正整数的最大公约数,其算法是非常经典的,图1-5中用传统流程图表示了该算法,但是这个算法却无法直接用N-S流程图表示。因为该算法的关键是执行一个循环结构,但图1-5表示的循环结构既不是当型循环,也不是直到型循环,这样,用N-S流程图就无法表示。如果将例1-3中的算法稍作调整,使流程图采用单选择结构形式,其中的条件改为r≠0,这样就可以用直到型循环的N-S流程图表示这个算法。图1-13是表示例1-3的N-S流程图。

N-S流程图是描述算法的重要图形工具之一,在结构化程序设计中得到了广泛应用。在此仅作简单介绍,旨在抛砖引玉。在实际软件开发中,有兴趣的读者可参阅有关软件工程或软件开发技术等方面的著作。

133 结构化程序设计方法

结构化程序设计方法是公认的面向过程编程应遵循的基本方法和原则。结构化程序设计方法主要包括:①只采用三种基本的程序控制结构来编制程序,从而使程序具有良好的结构;②程序设计自顶而下;③用结构化程序设计流程图表示算法。

有关结构化程序设计及方法有一整套不断发展和完善的理论和技术,对于初学者来说,完全掌握是比较困难的。但在学习的起步阶段就了解结构化程序设计的方法,学习好的程序设计思想,对今后的实际编程是很有帮助的。

1结构化程序设计特征

结构化程序设计的特征主要有以下几点:

(1) 以三种基本结构的组合来描述程序;

(2) 整个程序采用模块化结构;

(3) 有限制地使用转移语句,在非用不可的情况下,也要十分谨慎,并且只限于在一个结构内部跳转,不允许从一个结构跳到另一个结构,这样可缩小程序的静态结构与动态执行过程之间的差异,使人们能正确理解程序的功能;

(4) 以控制结构为单位,每个结构只有一个入口,一个出口,各单位之间接口简单,逻辑清晰;

(5) 采用结构化程序设计语言书写程序,并采用一定的书写格式使程序结构清晰,易于阅读;

(6) 注意程序设计风格。

2 自顶而下的设计方法

结构化程序设计的总体思想是采用模块化结构,自上而下,逐步求精。即首先把一个复杂的大问题分解为若干相对独立的小问题。如果小问题仍较复杂,则可以把这些小问题又继续分解成若干子问题,这样不断地分解,使得小问题或子问题简单到能够直接用程序的三种基本结构表达为止。然后,对应每一个小问题或子问题编写出一个功能上相对独立的程序块来,这种象积木一样的程序块被称为模块。每个模块各个击破,最后再统一组装,这样,对一个复杂问题的解决就变成了对若干个简单问题的求解。这就是自上而下,逐步求精的程序设计方法。

确切地说,模块是程序对象的集合,模块化就是把程序划分成若干个模块,每个模块完成一个确定的子功能,把这些模块集中起来组成一个整体,就可以完成对问题的求解。这种用模块组装起来的程序被称为模块化结构程序。在模块化结构程序设计中,采用自上而下,逐步求精的设计方法便于对问题的分解和模块的划分,所以,它是结构化程序设计的基本原则。

例1-9: 求一元二次方程:

ax2+bx+c=0

的根。

分析:先从最上层考虑,求解问题的算法可以分成三个小问题,即:输入问题、求根问题和输出问题。这三个小问题就是求一元二次方程根的三个功能模块:输入模块M1、计算处理模块M2和输出模块M3。其中M1模块完成输入必要的原始数据,M2模块根据求根算法求解,M3模块完成所得结果的显示或打印。这样的划分,使求一元二次方程根的问题变成了三个相对独立的子问题,其模块结构如图1-14所示。

分解出来的三个模块从总体上是顺序结构。其中M1和 M3模块是完成简单的输入和输出,可以直接设计出程序流程,不需要再分解。而M2模块是完成求根计算,求根则需要首先判断二次项系数a是否为0。当a=0时,方程蜕化成一次方程,求根方法就不同于二次方程。如果a≠0,则要根据b2-4ac的情况求二次方程的根。可见M2模块比较复杂,可以将其再细化成M21和M22两个子模块,分别对应一次方程和二次方程的求根,其模块结构如图1-15所示。

此次分解后,M21子模块的功能是求一次方程的根,其算法简单,可以直接表示。M22是求二次方程的根,用流程图表示算法如图1-16所示,它由简单的顺序结构和一个选择结构组成,这就是M22模块最细的流程表示。然后,按照细化M22模块的方法,分别将M1、M21和M3的算法用流程图表示出来,再分别按图1-15和图1-14的模块结构组装,最终将得到细化后完整的流程图。

可见,编制程序与建大楼一样,首先要考虑大楼的整体结构而忽略一些细节问题,待把整体框架搭起来后,再逐步解决每个房间的细节问题。在程序设计中就是首先考虑问题的顶层设计,然后再逐步细化,完成底层设计。使用自顶向下、逐步细化的设计方法符合人们解决复杂问题的一般规律,是人们习惯接受的方法,可以显著地提高程序设计的效率。在这种自顶而下、分而治之的方法的指导下,实现了先全局后局部,先整体后细节,先抽象后具体的逐步细化过程。这样编写的程序具有结构清晰的特点,提高程序的可读性和可维护性。

3 程序设计的风格

程序设计风格从一定意义上讲就是一种个人编写程序时的习惯。而风格问题不象方法问题那样涉及一套比较完善的理论和规则,程序设计风格是一种编写程序的经验和教训的提炼,不同程度和不同应用角度的程序设计人员对此问题也各有所见。正因为如此,程序设计风格很容易被人们忽视,尤其是初学者。结构化程序设计强调对程序设计风格的要求。因为,程序设计风格主要影响程序的可读性。一个具有良好风格的程序应当注意以下几点:

(1) 语句形式化。程序语言是形式化语言,需要准确,无二义性。所以,形式呆板、内容活泼是软件行业的风范;

(2) 程序一致性。保持程序中的各部分风格一致,文档格式一致;

(3) 结构规范化。程序结构、数据结构、甚至软件的体系结构要符合结构化程序设计原则;

(4) 适当使用注释。注释是帮助程序员理解程序,提高程序可读性的重要手段,对某段程序或某行程序可适当加上注释;

(5) 标识符贴近实际。程序中数据、变量和函数等的命名原则是:选择有实际意义标识符,以易于识别和理解。要避免使用意义不明确的缩写和标识符。例如:表示电压和电流的变量名尽量使用v和i,而不要用a和b。要避免使用类似aa、bb等无直观意义的变量名。

提供给学生充裕的自主学习空间同样是开展生态教育的一种方式,有助于学生梳理思路,把握知识要点,让学生自主学习的能力慢慢增强。教师要不断转变自身的教学观念,课堂上要多引入让学生自主学习的教学环节。同时,在学生进行独立思考时教师也要合理地发挥自己的主导作用,尤其是在学生碰到思维瓶颈时要适时给予引导,让学生沿着正确的思路探究问题。

这样才会有助于学生自主学习能力的培养,并且可以让生态教育在课堂上得到更充分的渗透。比如,在教学“商品的概念”时,传统教学是教师把书本中的商品概念讲给学生听,使学生理解商品的概念,如果要突出学生的学习主体地位,并且展开课堂上的生态教育,教师可以引导学生参与课前备课活动,引导学生搜集一些相关资料,并鼓励学生提出自己的疑惑。教师在这个过程中,要树立为学生服务的理念,要引导好学生的学习行为,能够预设到学生可能会出现的问题,在学生进行自我学习与自由表达的过程中,积极地给学生以指导。给学生提供充分的自主学习空间对于学生的成长具有很大的意义,这会让学生找到更多有效的自主学习方法,学生思维的广度与深度也会得到有效发展。

1、维护简单

面向对象程序设计的一个特征就是模块化。实体可以被表示为类以及同一名字空间中具有相同功能的类,可以在名字空间中添加一个类而不影响该名字空间的其他成员。这种特征为程序的维护提供了便捷性。

2、可扩充性

如果有一个具有某一种功能的类,就可以扩充这个类,创建一个具有扩充功能的类。

3、代码重用

功能是被封装在类中的,类是作为一个独立实体而存在的,因此可以很简单的提供类库,使代码得以重复使用。

扩展资料

面向对象程序设计(Object Oriented Programming)作为一种新方法,其本质是以建立模型体现出来的抽象思维过程和面向对象的方法。模型是用来反映现实世界中事物特征的。任何一个模型都不可能反映客观事物的一切具体特征,只能对事物特征和变化规律的一种抽象,且在它所涉及的范围内更普遍、更集中、更深刻地描述客体的特征。通过建立模型而达到的抽象是人们对客体认识的深化。

软件模块化的目的是建立可重用的软件组件,在不需要修改或仅作少量修改的情况下,可再次用来组建新的软件系统,提高软件的开发周期和可靠性。

在我们生活中到处都可以看到模块化设计的例子,比如汽车、电脑、家具都是由一些零件组合成小部件,然后在由这些小部件组合成模块,再由模块组合成成品。这些部件可以更换、添加、移除而不影响整体设计。

软件设计注意事项

明确要做什么,即是分析需求的过程。我们应该尽量做到将需求功能化,从粗枝大叶的需求扩展为明确的功能。

要做成什么样子就是就我们的功能以系统原型的方式进行呈现。在这个过程中,我们一定要有详细的交互流程。我们要考虑客户的交互请求如何在客户端和服务端流转,是否需要其他服务支持。这个过程就开始思考我们前端和后端的框架结构的问题了。

原因主要有两点:

其一:一个大型程序通常都需要很多人同时开发,然后再组装成一个完整的程序。这时候,模块化显得尤为重要。经过软件设计工程师的分析设计,将一个程序(例如你说的游戏)分成各个相对独立的模块,然后分发到下面的项目组进行开发(或者外包到别的公司,甚至别的国家的公司)。这是一个技术性很强的工作,要求有极其丰富的软件设计经验。所以我们这些程序员(在技术上)的目标就是软件设计工程师(不是软考的那个,是真正的工程师)。

其次是为了可维护性。游戏是要升级的,其实任何软件都一样,升级意味着修改,修改意味着重新编写代码,重新编译,重新测试……对一整个庞大的文件做这些工作简单还是有针对性的对需要升级的部分进行修改简单呢?这是一个不言自明的问题。(但要说明一点,无论哪种情况,测试都是要全部重新测一遍的,因为即使很小的改动,也可能引入bug和错误,所谓“牵一发而动全身”是也)。

其它的如楼上指出的可移植性、可重用性等,也是重要的原因。

总之,模块化是百利而无一害的(设计良好的前提下,否则可能乱七八糟一大堆,还不如一个单一文件来的直观)。

C语言学习从入门到精通的一套经典视频教程,本课程通过高清晰的视频、概念详解、实例精讲、习题测试让你很快的掌握C语言的相关知识,并领略运用到实例中去。在针对一些用户认为C语言比较难学的情况下,本课程从初中级用户的角度出发,进行合理的内容安排,突出学、练、用、巩固相结合的特点,以通俗易懂的语言,丰富多彩的实例,详细介绍了使用C语言进行程序开发应该掌握的各方面知识。本课程主要给大家讲解了C语言概述,算法,数据类型,运算符与表达式,常用的数据输入、输出函数,选择结构程序设计,循环控制,数组,函数,指针,结构体和共用体,位运算,预处理,模块化编程,编程规范,C语言常见问题及分析,习题测试等内容。所有知识都结合具体实例进行介绍,涉及的程序代码给出了详细的讲解,可以使读者轻松领会C语言程序开发的精髓,快速提高开发技能。

课程内容详尽,实例丰富,非常适合作为单片机及编程初学者的学习课程,也可作为大中院校相关专业在校学生及毕业生的教学辅导课程、短期C语言培训课程,是C语言编程爱好者从入门到深入的经典课程。

课程共分为15讲,每节课的内容大纲如下:

第1课 C语言概述

1、几种常见的程序设计语言

2、C语言出现的历史背景

3、C语言的特点

4、简单的C程序介绍

5、C程序的上机步骤

6、习题测试

第2课 程序的灵魂-算法

1、程序设计过程

2、算法的基本概念

3、算法的特征

4、算法的表示方法(流程图)

5、结构化程序设计方法

6、习题测试

第3课 C语言的数据类型

1、预备知识

2、C语言的数据类型

3、常量与变量

4、不同数据类型之间的转换

5、运算符号和表达

6、习题测试

第4课 C语言顺序程序设计

1、C语句概述

2、赋值语句

3、数据的输入输出

4、字符数据输入输出

5、格式输入输出

6、顺序程序举例

7、习题测试

第5课 C语言选择程序设计

1、关系运算符和关系表达式

2、逻辑运算符和逻辑表达式

3、if 语句---条件判断

4、条件运算符

5、switch 语句

6、选择程序举例

7、习题测试

第6课 C语言的循环控制

1、概述

2、goto语句及与if语句构成循环

3、while语句

4、do …while语句

5、for语句

6、循环的嵌套

7、几种循环的比较

8、break语句和contiune语句

9、程序举例

10、习题测试

第7课 C语言数组

1、一维数组

2、二维数组及多维数组

3、字符数组和字符串

4、程序举例

5、习题测试

第8课 函数

1、概述

2、函数定义的一般格式

3、函数的返回值

4、函数的调用

5、函数参数及其传递方式

6、函数的嵌套与递归调用

7、数组作为函数参数

8、变量的存储属性

9、内部函数和外部函数

10、习题测试

第9课 C语言预处理命令

1、编译预处理

2、宏定义

3、文件包含

4、条件编译

5、习题测试

第10课 指针

1、指针的概念

2、指针变量

3、指针与数组

4、指针与字符串

5、指针与函数

6、返回指针值的函数

7、指针数组和多级指针

8、习题测试

第11课 结构体与共用体

1、结构类型与结构变量的定义

2、结构变量的引用与初始化

5、结构数组

6、指向结构类型数据的指针

7、用指针处理链表

8、共用体

9、枚举类型

10、用typedef定义别名

11、程序举例

12、习题测试

第12课 位运算

1、位运算概述

2、位运算符的使用方法

3、习题测试

第13课 单片机C语言的模块化编程

1、模块化编程的优点

2、C语言源文件(c)文件和头文件(h)的的作用

3、模块化编程设计步骤

4、程序实例

5、模块化程序的移植

6、习题测试

第14课 C语言编程规范

1、编码规范概述

2、编程排版规范

3、编程注释规范

4、命名规则

5、可读性规范

6、变量与结构规范

7、函数与过程规范

8、编程效率规范

9、质量保证规范

10、宏规范

11、代码编辑

12、编译

13、审查

14、代码测试

15、维护

16、习题测试

第15课 C语言编程常见出错问题及分析

1、C语言的一些基本概念

2、位(bit)和字节(byte)

3、变量和数据存储

4、数据文件

5、字符串 *** 作

6、数组

7、指针和内存分配

8、函数

9、编译预处理

10、标准库函数

11、系统调用

12、可移植性

13、编程风格和标准

14、程序的编写和编译

15、调试

以上就是关于编程语一般有哪几种,各个优点是什么啊全部的内容,包括:编程语一般有哪几种,各个优点是什么啊、模块化结构,可以提高编程的效率吗、面向对象程序设计的优点是什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/9677279.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存