C++第四章:结构化程序设计(一)

您所在的位置:网站首页 结构化程序设计最典型的方法 C++第四章:结构化程序设计(一)

C++第四章:结构化程序设计(一)

2024-07-03 06:06| 来源: 网络整理| 查看: 265

设计编写大型程序有2种方法

结构化程序设计方法 面向对象程序设计方法 结构化程序设计的基本概念

程序描述了某种数组处理的过程和步骤,数据时程序处理的对象,一个复杂的程序任务,可能要处理大量数据,为此c++提供了数组的语法形式,数组可以存储大量同类型的数据。

将数据处理的过程,细分成一组严格的操作步骤,这组操作步骤就叫做算法。如果数据处理的算法很长很复杂。

结构性程序设计方法,就是将一个很长很复杂的程序设计任务分解成多个简单的模块,分而治之,然后将这些模块组装起来,最终完成数据处理算法。

c++支持结构化程序设计的方法,以函数的语法形式来描述和组装模块,这就是函数的定义和调用。****

将一个数据处理过程,分解成多个模块,各模块之间需要共享数据,c++语言提供了分散管理和集中管理这两种数据管理策略

一、结构性程序设计方法

机构性程序设计又叫面向过程的程序设计方法,基本方法如下:

将一个求解复杂问题的过程划分为若干个子过程,每个子过程完成一个独立的、相对简单的功能;用算法描述各个过程的操作步骤,每个算法称为一个模块;采用“自顶向下,逐步细化”的方法逐步分解和设计算法模块,再通过调用关系将各个模块组织起来,最终形成一个完整的数据处理算法。

采用结构性程序设计方法,程序员重点考虑的是如何分解和设计算法。

基于模块的协助开发:

自顶向下,逐步细化

将复杂的算法逐步分解成功能单一的,可重复调用的算法

模块重用

结构化程序设计,应当合并重复模块,合并后的模块,可以被不同的上层模块调用,同一模块可以被多个模块调用,或被一个上层模块调用多次,这称为模块的重用或共用。

主模块和被调模块

算法被划分成多个模块之后,调用其他模块的模块,称为主调模块,而被其他模块调用的模块称为被调模块,可以将不同的模块设计任务,交给不同程序员去完成。模块之间应当事先协调好被调函数的调用接口。

被调模块的名称 被调模块需要输入参数 被调模块应该返回什么样的结果,又称返回值。

结构化程序设计方法:

模块化是团队开发的基础 模块接口时团队协助的基础 模块重用影响到大型软件开发的组织与管理方式

代码重用:

现在的软件开发现目可以重用以前项目所开发的代码 一个软件项目可以重用另一个现目中的代码,即跨项目重用 可以重用本单位已有的代码,亦可以购买外单位已有的代码,或委托外单位开发所需的子模块,即跨组织机构重用

模块的4大要素

模块名称 输入参数 返回值 算法

模块的设计者和调用者具有不同的角色,不同角色对模块及其4大要素的理解是不一样的。

模块设计者

站在模块设计者的角度,他要思考的是接收输入参数,将输入参数作为原始数据进行处理,得到计算结果,并返回该结果,模块设计者,重点考虑处理算法,该算法因当能够按照模块的功能要求返回正确的计算结果,就是返回正确的返回值,模块算法是属于模块设计者的知识产权。而模块名称、输入参数、返回值是模块设计者为他人使用算法提供的开发接口,通称为模块的调用接口。调用接口必须是公开的,否则他人无法使用,算法是模块内部的实现细节可以不对外公开,在模块设计中,只有拿到模块设计的源程序,才能了解模块算法的实现细节,通常模块经常是以编译后的机器语言提供给他人使用的。

模块调用者

模块其实可以看做一个函数f(x),调用函数f(x)就是给的某个具体的x的值,就能得到对应的函数结果,模块名称相当于是函数名,输入参数是原始数据相当于自变量x,模块的计算结果就是返回值,相当于函数值,调用者通过模块名称调用模块,调用时按要求给定具体的输入参数值,然后接收返回值,得到所需的计算结果,调用者只需了解调用接口,即可调用模块,无需了解模块内部的算法。

主模块与子模块

将一个复杂算法分解成多个模块,其中一个为主模块,由它负责调用其他模块,主模块不能被其他模块调用,除了子模块之外的其他模块统称为子模块,子模块可以被调用,也可以调用其他子模块。

c++语言支持结构化程序设计方法,以函数的语法形式来描述和组装模块,即函数的定义和调用

二、函数的定义和调用

任务说明:

设计任务:公园修建1个长方形观赏鱼池,另外配套修建一大一小2个圆形蓄水池,分别存放清水和污水,养鱼池和蓄水池造假均为10元/m^2。请设计一个测算总工厂造价的算法。

2.1 c++语法:定义函数 函数类型 函数名(形式参数列表) { 函数体 } /*举例*/ double func(double r) { double s; s = 3.14*r*r; return s; } 函数类型:定义的是函数返回值(即函数值)的数据类型,函数类型由函数功能决定,可以是除数组之外的任何数据类型,省略时默认为int型,某些函数可能只是完成某种功能,但没有返回值,此时函数类型应定义为void; 函数名:定义函数的名名称,由程序员命名,需复合标识符的命名规则,通常函数之间不能重名; 形式参数列表:定义了函数接收输入参数所需的变量,这些变量称为形式参数,简称为形参,可以有多个形参,每个形参以“数据类型 变量名”的形式定义,形参之间用逗号“,”隔开,某些函数可能不需要输入参数,此时形参列表省略为空。 函数体:是描述数据处理算法的c++语句序列,用大括号{}括起来,函数体中可以定义专供本函数使用的变量,如果函数有返回值,则应用return语句返回,返回值的数据类型应与函数类型一致。 函数类型 函数名(形式参数列表),此部分被称为函数头,它定义了函数的调用接口,即函数名、输入参数和返回值类型。 2.2 函数的调用

c++语法:

函数名(实际参数列表) 函数名:指定被调用函数的名称; 实际参数列表:指定函数所需要输入的参数,调用函数时应按被调用函数的要去给定具体的输入参数值,这些参数称为实际参数,简称实参,实际参数可以是常量、变量或表达式,参数之间用逗号","隔开,调用时,首先将实参值按位置顺序一一赋值给对应的形式参数变量,这称为函数调用时的参数传递,实参于形参应当个数一致,类型一致。 “函数名(实际参数列表)” 是调用某个函数,有返回值的函数调用可作为操作数参与表达式运算,该操作数等于函数返回值,某些函数可能只是完成某些功能,但是没有返回值。无返回值得函数调用加分号";"即构成一条函数调用语句; 一个函数调用另一个函数,调用别人得函数称为主调函数,被调用得函数称为被调函数

实例:

#include using namespace std; /*用于求长方形鱼池的造价*/ double RectCost(double x, double y) { double s; s = x*y*10; return s; } /*用于求圆形鱼池的造价*/ double CircleCost(double r) { double s; s = r*3.14*r*10; return s; } /*主函数,通过向被调函数形参赋值,调用子函数完成整个计算功能*/ int main() { double a,b,r1,r2,totalcost=0; cout >b; //在函数调用里面,一次性输入多个参数,不能使用cin>>a>>b,这种写法导致最后的参数b是不能传递的。 cout >r2; totalcost += RectCost(a,b); totalcost += CircleCost(r1); totalcost += CircleCost(r2); cout


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3