C语言(第3章简单算法制定).ppt_第1页
C语言(第3章简单算法制定).ppt_第2页
C语言(第3章简单算法制定).ppt_第3页
C语言(第3章简单算法制定).ppt_第4页
C语言(第3章简单算法制定).ppt_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C语言程序设计教程 (第2版),第3章 简单算法设计,第3章 程序的简单算法制定,本章主要内容 1. 结构化程序的算法设计 2. 结构化算法的性质及结构 3. 结构化算法的描述方法 4. 结构化算法流程图,第3章 程序的简单算法制定,算法: 解决问题的方法和要遵循的步骤。 算法描述了程序要执行的操作及操作的步骤顺序。 程序的功能是通过算法来描述的。 C语言程序是一种结构化的程序。 结构化程序: 问题可以分解成相互独立的几个部分。 每个独立部分可以通过简单的语句或结构来实现。 分问题解的过程就是算法设计的过程。 重点:掌握分析问题、解决问题的方法。,3.1 结构化程序的算法设计,【例3-1】 要求从键盘输入3个数,找出其中最小的那个数,将其输出到屏幕。请给出解决这个问题的算法。 分析:程序对于从键盘输入的3个数必须用3个变量来保存,分别为a,b,c代表输入的3个数,另外,还需要一个变量min来保存最小的那个数。 1.先比较a和b的值,把数值小的放入min中; 2.再将min与c比较,又把数值小的放入min中。 3.经过两次比较,min中已存放的是a,b,c 3个数中最小的数。把min的值输出就是所需结果。,3.1 结构化程序的算法设计,算法步骤: 1输入3个数,其值分别赋给3个变量a,b,c; 2把a与b中较小的那个数放入变量min中; 3把c与min中较小的那个数放入变量min中; 4输出最后结果min的值。 改进上面的算法描述,将第2步和第3步的算法具体化。 1输入三个数,其值分别赋给三个变量a,b,c; 2比较a与b的值,如果ab,则min=a;否则min=b; 3比较c与min的值,如果cmin,则min=c; 4输出最后结果min的值。 通过算法描述的步骤,可以很方便地用程序语言来实现。,3.2 结构化算法的性质及结构,3.2.1 结构化算法性质 1算法名称 给算法命名,是为了方便算法的描述,在C语言中,算法的名字通常就是函数名。 2输入 算法应有输入的数据或初始条件。 3输出 算法通常会有一个或多个输出,是对输入数据加工后的结果。 4有效性 算法的每一步都是可执行的,可通过人工计算的。 5正确性 算法的结果必须是正确的,可验证的。 6有限性 任何算法必须在执行有限条指令后结束。,3.2 结构化算法的性质及结构,3.2.2 结构化算法的结构 在C语言算法的主要结构有如下3种。 1顺序结构 顺序结构的特点: 程序在执行过程中是按语句的先后顺序来执行的,每一条语句都代表着一个功能, 2分支结构 分支结构的特点: 程序在执行过程中,会根据条件的不同有选择的执行不同的功能。 3循环结构 循环结构的特点: 程序在执行过程中,在一定的时间段内或一定的条件下,重复地执行某个功能,直到时间已到或条件不再满足。,3.2 结构化算法的性质及结构,程序设计要解决的两个主要问题: (1)按什么顺序或步骤来执行; (2)用什么语句来实现。 算法设计是核心问题。,提示,3.3 结构化算法的描述方法,常用的描述方法有自然语言、流程图、伪代码等。 3.3.1 自然语言 用类自然语言表示算法。 如:汉语、英语或其他语言。 特点:通俗易懂,简单明了。,3.3 结构化算法的描述方法,【例3-2】 从键盘输入两个变量的值a、b,请按输入值从小到大的顺序将这两个变量的值输出到屏幕。请写出这个问题的算法描述。 算法描述: 第1步:输入变量a和b的值; 第2步:比较a和b的值; 如果a大于等于b,则先输出a,再输出b; 否则,先输出b,再输出a; 第3步:算法结束。,3.3 结构化算法的描述方法,【例3-3】 几何级数求和:sum=1+2+3+4+5+(n1)+n。请写出该问题的算法。 算法描述: 第1步:给定一个大于0的正整数n的值; 第2步:定义一个整型变量i,设其初始值1; 第3步:定义整型变量sum,其初始值设置为0; 第4步:如果i小于等于n,则转第5步,否则执行第8步; 第5步:将sum的值加上i的值后,重新赋值给sum; 第6步:将i的值加1,重新赋值给i; 第7步:执行第4步; 第8步:输出sum 的值; 第9步:算法结束。,3.3 结构化算法的描述方法,3.3.2 流程图 流程图是一种算法的形象表示。 流程图是由流程线和几何图形框连接而成的。 算法流程图的符号采用美国国家标准化协会(ANSI)规定的一些常用符号:,流程线,算法流程图的3种基本结构: 顺序结构、分支结构、循环结构 1.顺序结构 顺序结构是一种简单的线性结构,根据流程线所示的方向,按顺序执行各矩形框的指令。 基本流程图:,注: 指令A、指令B、指令C可以是一条或多条指令。 执行顺序:ABC。,3.3 结构化算法的描述方法,3.3 结构化算法的描述方法,2.分支结构 分支结构要对给定的条件进行判断,看是否满足给定的条件,根据条件结果的真假而分别执行不同的执行框。 基本流程图有两种:,注: (1) 虚线框表示可将分支结构看成一个矩形框。 (2)指令A、指令B可以是一条或多条指令,也可以是分支结构。,3.3 结构化算法的描述方法,3.循环结构 分支结构是在条件为真的情况下,重复执行某个执行框中的内容。 基本流程图有两种:,注:(1) 虚线框表示可将循环结构看成一个矩形框。 (2) 指令A称为循环体,可以是一条或多条指令,也可以是其 他分支或循环结构。 (3) do_while结构可以转化成while结构。,(1) while 循环:,(2) do_ while 循环:,3.3 结构化算法的描述方法,循环结构的特点: 在循环体指令A中必须要有对条件的值进行修改的语句,使得经过有限次循环后,循环一定能结束。 while型循环中循环体可能一次都不执行,而do_while型循环则至少执行一次循环。 do_while型循环可以转化成为while型循环结构,但while型循环不一定能转化为do_while型循环。,3.3 结构化算法的描述方法,关于结构化流程图的规则: 1. 可分别将顺序结构、分支结构、循环结构的基本流程图看成是一个执行框。 2. 任何两个按顺序的执行框可以合并为一个执行框。 反复运用规则1和规则2可得到结构化流程图的最简形式:,特别提示,3.3 结构化算法的描述方法,【例3-4】分析下面的流程图,是否符合结构化算法标准。,3.3 结构化算法的描述方法,【例3- 5 】将例3-1的算法用流程图表示,分析其是否符合结 构化的标准。 从键盘输入3个数,找出其中最小的那个数,将其输出到屏幕。,3.3 结构化算法的描述方法,【例3-6】 将例3-2所描述的问题用算法流程图来表示。 从键盘输入两个整型变量a,b的值,按输入值从小到大的顺序输出到屏幕。 算法流程图为:,3.3 结构化算法的描述方法,【例3-7】将例3-3所描述的问题用算法流程图来表示。 计算几何级数的和:sum=1+2+3+4+5+(n1)+n。 算法流程图为:,3.3 结构化算法的描述方法,3.3.3 伪代码 伪代码是一种接近于程序语言的算法描述方法。 特点: 采用有限的英文单词作为伪代码的符号系统,按照特定的格式来表达算法,可读性好,方便将算法改写成计算机的程序源代码。 伪代码的7个主要部分: (1) 算法名称 (2)指令序列 (3)输出/输出 (4)分支选择 (5)赋值 (6)循环 (7)算法结束,3.3 结构化算法的描述方法,1算法名称 两种表示算法的伪代码: 过程(Procedure)函数(Function) 过程和函数的区别是: 过程是执行一系列的操作,不需要返回操作的结果,无返回数据; 函数是执行一系列的操作后,要将操作的结果返回,有返回数据。 算法伪代码的书写规则: Procedure () Function () 如: Procedure Hanoi_Tower() 表示名为Hanoi_Tower的一个过程。 Function Fac(x) 表示名为Fac的一个函数。 Function Prog (n) 表示名为Prog的一个函数。,3.4 算法设计范例,【例3-11】 把从键盘输入的大写字母转换成小写字母输出,若为小写字母或其他字符,则不作任何转换直接输出。 分析:用字符变量ch来接收从键盘输入的字符。大、小写字母的ASCII码值相差32,大写字母A的值为65,而小写字母a的值为97。 流程图描述的算法:,3.4 算法设计范例,【例3-12】 已知实数a,b,计算u的值:u=(r+s)2,

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论