算法和基本程序设计.ppt

上传人:牧羊曲112 文档编号:6372944 上传时间:2023-10-21 格式:PPT 页数:44 大小:252.50KB
返回 下载 相关 举报
算法和基本程序设计.ppt_第1页
第1页 / 共44页
算法和基本程序设计.ppt_第2页
第2页 / 共44页
算法和基本程序设计.ppt_第3页
第3页 / 共44页
算法和基本程序设计.ppt_第4页
第4页 / 共44页
算法和基本程序设计.ppt_第5页
第5页 / 共44页
点击查看更多>>
资源描述

《算法和基本程序设计.ppt》由会员分享,可在线阅读,更多相关《算法和基本程序设计.ppt(44页珍藏版)》请在三一办公上搜索。

1、第3章 算法和基本程序设计,3.1 算法的概念3.2 结构化程序设计方法3.3 程序的基本结构3.4 顺序结构程序设计3.5 数据的输入输出3.6 C程序的上机步骤,3.1 算法的概念,1.定义:做任何事情都有一定的步骤。为解决一个问题而采取的方法和步骤,就称为算法。2.计算机算法可分为两大类:数值运算算法:求解数值;非数值运算算法:事务管理领域。,一个著名的公式,数据结构+算法=程序数据:计算机所能识别、存储和处理的对象。数据的动态性。数据结构:确定数据对象及其存储方式,并定义在这些数据对象上的运算集合。算法:为解决一个问题而采取的方法和步骤。,算法的特性,1 有穷性 操作步骤是有限的,不是

2、无限的。2 确定性 每个步骤是确定的,无歧义性。3 有零个或多个输入4 有一个或多个输出5 有效性 每一步骤能有效执行,并得到确定结果。,3.1.2 算法的评价标准1.正确性对任何合法的输入,算法都会得出正确的结果。2.可读性可读性指算法被理解的难易程度。3.健壮性(鲁棒性)健壮性即对非法输入的抵抗能力。4.高效率与低存储量需求通常,效率指的是算法执行时间;存储量指的是算法执行过程中所需的最大存储空间,两者都与问题的规模有关。二者往往是一对矛盾,常常可以用空间换时间,也可以用时间换空间。,怎样表示一个算法,用自然语言表示算法,用流程图表示算法,用N-S流程图表示算法,用伪代码表示算法,用计算机

3、语言表示算法,歧义性,描述分支、循环算法不方便,起止框,输入输出框,处理框,判断框,流程线,连接点,【例3.1】求三个整数的和。求三个整数和的算法流程图如图所示。,输入x,y,z,图3.2 求三个整数和的算法,【例3.2】求最大公约数。,最大公因数的算法求最大公因数的最普遍的算法是欧几里得算法,它最初是公元前由欧几里得提出来的,有时也称它为辗转相除法表述如下:设给定m,n(mn),令r0=m,r1=n,有 则得rk=gcd(rk-1,rk)=gcd(rk-2,rk-1)=gcd(r2,r3)=gcd(r1,r2)=gcd(r0,r1)=gcd(m,n),b|a 表示b整除a或者a整除以b 则

4、a是b的倍数,b是a的约数,rk-2=qk-1 qk rk+rk=(qk-1 qk+1)rk,S1:求12=2S2:求23=6S3:求64=24 天啊!共需999个步骤,太可怕了。,案例 求12341000,3.2 结构化程序设计的方法,结构化程序设计思想采用了模块分解与功能抽象和自顶向下、分而治之的方法,从而有效地将一个较复杂的程序系统设计任务分解成许多易于控制和处理的子程序,便于开发和维护,减少程序的出错概率和提高软件的开发效率。采用结构化程序设计方法应遵循以下原则。1.自顶向下即在程序设计时,先考虑总体,做出全局设计,然后再考虑细节进行局部设计,逐步实现精细化。这种方法称为“自顶向下,逐

5、步细化”的方法。2.模块化就是将一个大任务分成若干个较小的部分,每一部分承担一定的功能,称为“功能模块”。每个模块可以分别编程和调试,然后组成一个完整的程序。模块的划分应遵循一些基本原则,如模块内部联系要紧密,关联程度要高;模块间的接口要尽可能简单,以减少模块间的数据传递。3.限制使用GOTO语句,结构化的程序设计方法,基本思路:把一个复杂问题的求解过程分阶段进行,每个阶段处理的问题都控制在人们容易理解和处理的范围内.采用的方法:1 自顶而下2 逐步细化3 模块化设计4 结构化编码,三种基本结构,1 顺序结构 2 选择结构3 循环结构,3.3 程序的基本结构,三种基本结构的特点,1 只有一个入

6、口2 只有一个出口,顺序结构的流程图符号,传统流程图,N-S流程图,选择结构的流程图符号,传统流程图,选择结构的流程图符号(续),N-S流程图,循环结构的流程图符号,不成立,传统流程图,While型,Until型,循环结构的流程图符号(续),While型,Until型,N-S流程图,一个有用的结论,已经证明:三种基本结构的顺序组成可以表示任何复杂的算法结构。由基本结构构成的算法,属于“结构化”算法。,有关结构化算法的总结,一个结构化的算法是由一些基本结构顺序组成的;基本结构之间不存在向前或向后的跳转,流程的转移只存在于一个基本结构的范围之内(如循环中的流程跳转);,一个非结构化算法可以用一个等

7、价的结构化算法代替,其功能不变。,如果一个算法不能分解为若干个节本结构,则它必然不是一个结构化算法。,3.4 顺序结构程序设计,1.表达式语句表达式语句是在各种表达式后加一个分号(;)形成一个表达式语句。2.空语句空语句直接由分号(;)组成,常用于控制语句中必须出现语句之处。它不做任何操作,只在逻辑上起到有一个语句的作用。例如:;空语句也是一个语句,不产生任何动作。空语句常用于构成标号语句,标识程序中相关位置;循环语句中空循环体;模块化程序中未实现的模块及暂不链入的模块。,3.函数调用语句由函数调用加上分号组成。4.复合语句是由一对花括号 括起的若干个语句,语法上可以看成是一个语句。复合语句中

8、最后一个语句的分号不能省略。例如下面是一个复合语句:z=x;x=y;y=z;凡是单一语句可以存在的位置,均可以使用复合语句。复合语句用在语法上是单一语句,而相应操作需多条语句描述的情况。,5.控制语句 控制语句有条件判断语句(if、switch),循环语句(for、while、do-while),转移语句(goto、continue、break、return)。控制语句根据控制条件决定程序的执行流程,控制语句不是顺序执行的。顺序结构是C语言的基本结构,除非指示转移,否则计算机自动以语句编写的顺序一句一句地执行C语句。,C语言无I/O语句,I/O操作由函数实现#include 字符输出函数,3.

9、5 数据的输入与输出,格式:putchar(c)参数:c为字符常量、变量或表达式功能:把字符c输出到显示器上返值:正常,为显示的代码值;出错,为EOF(-1),【例3.3】字符数据的输出。#include main()char a,b;a=r;b=e;putchar(a);putchar(b);putchar(d);putchar(n);,运行后,在屏幕上显示:red,数据输入字符输入函数,格式:getchar()功能:从键盘读一字符返值:正常,返回读取的代码值;出错,返回EOF(-1),注意:getchar()函数的括号中没有参数,该函数的输入一直到“回车”才结束。回车前的所有输入字符都会逐

10、个显示在屏幕上,但只有第一个字符作为函数的返回值。,运行时,输入xxx,在屏幕上显示:x,【例3.4】单个字符的输入和输出。#include main()char ch;/*从键盘上读入字符直到“回车”结束*/ch=getchar();/*显示输入的第一个字符*/putchar(ch);putchar(n);/*换行*/,【例3.5】将小写字母转换成大写。#include main()char ch;ch=getche();putchar(ch-32);,若输入b,在屏幕上显示:bB,3.字符串输入/输出函数,字符串输入函数gets()用来从键盘读入一串字符。函数的调用形式:gets(字符串变

11、量名);在输入字符串后,必须用回车作为输入结束。该回车符并不属于这串字符,由一个“空操作字符(0)”在串的最后来代替它。此时空格不能结束字符串的输入,gets函数返回一个指针。字符串输出函数puts(),将字符串数据(可以是字符串常量、字符指针或字符数组名)显示在屏幕上并换行。函数的调用形式是:puts(字符串数据);,【例3.6】字符串的输入和输出。#include main()char str80;gets(str);puts(str);,当输入为“How are you?”,则输出为:How are you?,格式:printf(“格式控制串”,输出表)功能:按指定格式向显示器输出数据返

12、值:正常,返回输出字节数;出错,返回EOF(-1),3.5.3 格式输入与输出_格式输出函数,输出表:要输出的数据(可以没有,多个时以“,”分隔)格式控制串:包含两种信息格式说明:%修饰符格式字符,用于指定输出格式普通字符或转义序列:原样输出格式字符,int a=567;printf(“%d”,a);,int a=255;printf(“%x”,a);,int a=65;printf(“%o”,a);,int a=567;printf(“%u”,a);,char a=65;printf(“%c”,a);,printf(“%s”,“ABC”);,float a=567.789;printf(“%

13、e”,a);,float a=567.789;printf(“%f”,a);,float a=567.789;printf(“%g”,a);,printf(“%”);,567,ff,101,567,A,ABC,5.677890e+02,567.789000,567.789,%,说明格式字符要用小写格式字符与输出项个数应相同,按先后顺序一一对应输出转换:格式字符与输出项类型不一致,自动按指定格式输出,例 main()unsigned int u=65535;printf(”u=%dn,u);输出结果:u=-1,例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a

14、=%d,b=%dn”,a,b);,例 int a=3,b=4;printf(“%d%dn”,a,b);printf(“a=%d,b=%dn”,a,b);输出结果:3 4 a=3,b=4,格式输入函数,格式:scanf(“格式控制串”,地址表)功能:按指定格式从键盘读入数据,存入地址表指定的 存储单元中,并按回车键结束返值:正常,返回输入数据个数,地址表:变量的地址,常用取地址运算符&格式字符:d,i,o,x,u,c,s,f,e,例 scanf(“%d”,输入:10 则 a=10,例 scanf(“%x”,输入:11 则 a=17,附加格式说明符(修饰符),例 scanf(“%4d%2d%2d”

15、,输入 19991015 则1999yy,10 mm,15 dd,例 scanf(“%3d%*4d%f”,则123k,8765.43f,例 scanf(“%2d%*3d%2d”,输入 1234567 则12a,67b,例 scanf(“%3c%2c”,输入 abcde 则ac1,d c2,输入分隔符的指定一般以空格、TAB或回车键作为分隔符其它字符做分隔符:格式串中两个格式符间字符,例 scanf(“%d%o%x”,输入 123 123 123 输出 a=123,b=83,c=291,例 scanf(“%d:%d:%d”,输入 12:30:45 则12 h,30 m,45 s,例 scanf(

16、“%d,%d”,&a,&b)输入 3,4 则3a,4 b,例 scanf(“a=%d,b=%d,c=%d”,输入 a=12,b=24,c=36,说明:用“%c”格式符时,空格和转义字符作为有效字符输入,如 scanf(“%c%c%c”,若输入abc 则ac1,c2,b c3,输入数据时,遇以下情况认为该数据结束:遇空格、TAB、或回车遇宽度结束遇非法输入,如 scanf(“%d%c%f”,若输入1234a123o.26 则 1234 a,a b,123 c,输入函数留下的“垃圾”:,例 int x;char ch;scanf(“%d”,执行:123输出:x=123,ch=10,例 int x;

17、char ch;scanf(“%d”,执行:123输出:x=123,ch=10,解决方法:(1)用getchar()清除(2)用函数fflush(stdin)清除全部剩余内容(3)用格式串中空格或“%*c”来“吃掉”,例 int x;char ch;scanf(“%d”,注意:scanf()函数没有输出功能(即不会向屏幕显示任何字符)也不能规定小数位数(m.n)典型错误:scanf(“a=%d,b=%d,c=%d n”,正确语句:printf(“Input a,b,c=“);scanf(“%d,%d,%d”,/*求圆的面积和周长*/#define PI 3.14159#include stdi

18、o.hmain()float r;float s,l;printf(请输入圆的半径:);scanf(%f,输入数据:3 运行结果为:面积=28.274,周长=18.850,【例3.10】编写显示如下界面的程序:学生管理程序 Add追加数据 Modify修改数据 Delete删除数据 Print打印数据 Sort成绩排序 Quit退出程序,/*学生管理程序界面显示*/#include stdio.hmain()clrscr();printf(%sn,学生管理程序”);printf(%sn,Add追加数据 Modify修改数据”);printf(%sn,Delete删除数据 Print打印数据”);printf(%sn,Sort成绩排序 Quit退出程序”);,一个程序应包括两方面内容:1.对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构。2.对操作的描述。即操作步骤,也叫做算法。,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号