概述
一、算法及描述方法
算法的概念
解决问题的算法,设计出正确的计算机算法是编程正确程序的前提条件。著名的计算机科学家沃思(N.Wirth)曾提出这样一个经典公式:数据结构+算法=程序
1.数据的描述和组织形式,即数据结构。
2.对操作或行为的描述,即操作步骤,也称算法。
合理地组织数据和设计算法是编程解决问题的关键。解决一个问题可能有很多种算法,通常情况下,不同的算法和不同的程序设计语言解决同一个问题,效率上会不同。设计程序的过程实质上也就是算法和数据结构的过程。
算法,简单地讲,就是为解决一个具体问题而采取的、确定的、有限的操作步骤。当然,这里所说的算法仅指计算机的算法,即计算机能够执行的算法。
计算机解题的算法可分两大类:
a、数值运算的算法,主要解决求数值解的问题,如二分法求方程的根,梯形法的计算定积分等。
b、非数值运算的算法,主要用于解决需要用分析推理、逻辑推理才能解决的问题。例如,分类、查找、排序等。
二、算法的描述的方法
进行算法设计时,可以使用不同的方法来描述算法,常用的有自然语言、传统流程图、NS流程图、伪代码等。
1.自然语言
自然语言就是我们平常生活中使用的语言。用自然算法描述算法时,可使用汉语、英语和符号等,容易理解。初学者容易掌握,但描述文字显得冗长,在表达上容易出现疏漏,并引起理解上的歧义,不宜直接转化为程序,所以一般适用适用算法较简单的情况。
例子:假设现在待描述的问题是计算N!。首先分析此问题,并设计解决问题的算法,考虑N!=1*2*……*N,于是计算N!可用N次乘法计算来实现,每次在原有结果基础上乘上一个数,而这个数是从1变化到N的,将这一思路用自然语言描述为
step1读入N的值
step2如果N<0,则输出错误的信息,直接转到step4
step3如果N>=0,则
a、给存放结果的变量fac置初值为1
b、给代表乘数的变量i置初值为1
c、进行累乘运算fac=fac*i
d、乘数变量增1得到下一个乘数的值,即i=i+1
e、如果i未超过N,则重复执行步骤c和d,否则执行步骤f
f、输出fac的值
step4算法结束
2.流程图描述
流程图是一个描述程序的控制流程和指令执行情况的有向图,它是程序的一种比较直观的表达形式。
a、传统流程图跟高中学的流程图一样的,小编在这里就不多讲这个传统流程图了。
b、NS结构化流程图描述
NS结构化流程图是由美国学者I.Nassi和B.Schneiderman于1973年提出的,NS图就是以这两位著名的学者名字的首字母命名的。它最重要的特点是完全取消了流程线,这样的算法被迫只能从上到下顺序来执行,从而避免了算法流程图的任意转向,保证程序的质量。用NS结构图解决上面的例子如下
二、顺序结构
顺序结构是最简单的C语言结构程序结构,也是最常见的程序结构,其特点是程序的流程是固定的,不能跳转,完全按照语句出现的先后执行程序。
例子一、假设某银行的定期存款的年利率rate为2.13%,存款期为n年,存款本金为capital元则n年以后可得的按付利息计算的本利之和为多少?
step1用自然语言、NS流程图、传统流程图或伪代码等分析问题及写出相应的步骤。
step2用C语言编写程序。
现在来编写编写程序
首先,任何的标准C语言都必须有唯一的主函数main(),其函数体由一对花括号括起来;程序是从主函数开始执行的,在函数体的开始处首先对函数中所要使用的所有变量进行定义,然后在进行其它各种操作,包括数据的输入、处理和输出。从上面的例子中可以总结出一个简单的C程序的结构框架如下:
以#开始的编译预处理命令行
void main()
{
局部变量的定义
可执行语句序列
}
上面的例子中#include是一中编译预处理命令,它指示编译系统在对源程序之前对源代码进行某种预处理操作,包括宏定义、文件包含、条件编译等。所有的编译预处理命令都以“#”开始,每条指令单独占一行,同一行不能有其它的编译指令和C语句(注释除外)。注意编译预处理命令。这里,#include表示它是文件包含编译预处理命令。
文件包含编译预处理命令include指示编译系统将一个源文件嵌入含有#include指示命令的源文件中该指示所在的位置处。
因为C程序开发系统中,无论哪种版本,也无论在哪类操作系统上实现,一般都提供庞大的支持库,C库可分为两类:一类是函数库;另一类是扩展名为.h的头文件库。
通常,在程序中调用一个库函数时,要在调用前引用函数原型所在的头文件。比如,调用函数printf()、scanf()等有关输入/输出的函数时,需要引用标准输入/输出头文件stdio.h;调用标准数学函数时,要引用数学头文件math.h,等。
头文件中包含常量定义、类型定义、宏定义、函数原型以及针对编译命令中选择项设置的选择开关等一系列声明信息,供用户直接引用,引用头文件的结果是,编译程序时将包含的文件插入再引用的位置。例如#include的作用是编译程序时将文件math.h插入当前被编译文件引用位置处一起编译,因为本程序中要使用math.h中定义的标准数学函数,所以必须在程序开头使用#includ编译预处理命令。
三、选择结构
选择结构用于判断给定的条件,根据判断的结果判断某些条件,根据判断的结果来控制程序的流程。
条件语句
C语言提供如下三种形式的条件语句:
(1)if形式
if(表达式)可执行语句a
作用是:若表达式的值是真,则执行可执行语句a,否则直接跳过可执行语句a,执行可执行语句a后面的语句。
(2)if——else形式
if(表达式)可执行语句1
else可执行语句2
作用:若表达式的值是真,则执行可执行语句1,否则执行可执行语句2.
(3)if——else if——else形式
if(表达式1)可执行语句1
else if(表达式2)可执行语句2
else可执行语句3
作用:若表达式1的值是真,则执行语句1,否则如果表达式2是真,则执行可执行语句2,若表达式1的值和表达式2的值都不为真,则执行可执行语句3。
注:在前面三种形式的if语句中,因为if或else句子中只允许一条语句,所以需要多条语句时必须使用复合语句,将需要执行的语句用一对花括号括起来,否则将导致逻辑错误。
条件语句中的表达式可以是任何合法的C表达式,只需表达式的值是非零,就可以认为“表达式是真的”;若表达式的值是零,就可认为“表达式是假的”。
持续更新中……
最后
以上就是开放小蜜蜂为你收集整理的语言ns经典流程图_C语言学习|程序的控制及结构(4)的全部内容,希望文章能够帮你解决语言ns经典流程图_C语言学习|程序的控制及结构(4)所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复