




已阅读5页,还剩59页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
结构化程序设计综合训练,主讲:王璇邮箱:whutxua以student帐号登录ftp:/。在“!课件下载”目录下有“!结构化程序综合设计-wangx”,一、本课程的教学目的,结构化程序设计和面向对象程序设计是程序设计的两种典型的思想和方法。目前高校开设的程序设计课程也基本据此划分为两大系列。本课程是实践性课程,主要以实验为主,本课程以C语言为工具。记住C和C+是两门不同的编程语言,虽然语法相似。C语言能做什么?Linux操作系统的内核源代码是用C和汇编语言编写的。从事嵌入式开发,驱动开发,单片机开发都要用到C。编译器的开发。,目前,大部分同学的水平:1.可以解决绝大多数的编译错误。2.可以解决部分程序运行异常错误,但是有关内存方面的错误,基本上解决不了。3.代码书写不规范。4.编译器的使用不熟练,不会单步调试。部分同学可以看懂同学写的代码,但是自己不会做,也就是不会分析。还有一部分同学由于校外培训机构对JAVA和网络配置鼓吹的漫天飞,心里已经放弃了对C语言学习。,有这么多的问题?怎么办?现在才大二,时间完全来得及。秘诀只有一个,就是多动手!,课程目的,1.学会分析题目;2.掌握良好的程序设计编码风格;3学习常用的算法设计的技术;4进一步提高学生的程序调试能力;5提高学生的程序编程兴趣。,二、实验内容,提交实验报告时间,三、其它说明,从三个方面考核每个实验的成绩:功能完成情况、实验报告以及程序风格、界面设计以及操作方便性。实验报告要求:至少记录5个,在实验过程中遇到的问题以及解决办法。,四:结构化开发方法,结构化开发方法是一种设计程序的技术,它提出的原则可归纳为32字:“自顶向下,逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成。”,五软件生命周期,软件生命周期各阶段的主要任务,问题定义:“要解决的问题是什么”。问题定义阶段是整个过程中占用时间最少的阶段。,软件生命周期各阶段的主要任务,可行性研究:从经济、技术、法律等方面分析确定系统是否值得开发,及时建议停止项目开发,避免人力、物力、时间的浪费,并进行方案选择。可行性研究的目的不是解决问题,而是确定问题是否值得去解决。可行性研究包括四个方面的研究:经济可行性技术可行性法律可行性方案的选择,软件生命周期各阶段的主要任务,需求分析:准确回答“系统必须做什么”这个问题。需求分析阶段的任务不是具体的解决客户的问题防止系统的设计与用户的实际需求不相符的后果。,软件生命周期各阶段的主要任务,概要设计:确定系统设计方案,软件的体系结构。确定软件由哪些模块组成以及这些模块之间的相互关系。,软件生命周期各阶段的主要任务,详细设计:描述应该如何具体地实现系统。详细设计每个模块,确定实现模块所需要的算法和数据结构。,软件生命周期各阶段的主要任务,软件实现阶段:进行程序设计(编码)和模块测试。,软件生命周期各阶段的主要任务,综合测试阶段:测试的目的是以最小的代价(耗费最少时间和最少工作量)发现尽可能多的不同类型的错误。通过各种类型的测试,查出软件设计中的错误并改正,确保软件质量;还要在用户的参与下进行验收,才可交付使用。,软件生命周期各阶段的主要任务,大量的资料统计表明,软件开发组织将30%40%的工作量花在测试上。而那些高可靠性、高安全性软件的测试所花的时间更是其它开发步骤总和的3到5倍。,软件生命周期各阶段的主要任务,测试和调试常常被说成是一个回事,实际上是测试阶段的不同任务。调试即排错,是在已经知道程序有问题时要做的事情。测试则是在认为程序能工作的情况下,为发现问题而进行的一整套确定的系统化的实验。,软件生命周期各阶段的主要任务,软件运行、维护:程序的运行与维护是整个程序开发流程的最后一步。编写程序的目的就是为了应用,在程序运行的早期,用户可能会发现在测试阶段没有发现的错误,需要修改。而随着时间的推移,原有程序可能已满足不了需要,这是就需要对程序进行修改甚至升级。每次维护的要求及修改步骤都应详细准确地记录下来,作为文档保存。,六常用设计工具,介绍三种常用的图形方式的设计工具。,层次图,用来描述软件的层次结构,图中的一个矩形框代表一个模块,方框之间的连线表示调用关系。层次图很适合在自顶向下设计软件的过程中使用。,程序流程图,是历史最悠久使用最广泛的描述软件设计的方法。它的主要优点是对控制流程的描述很直观,便于初学者掌握。,盒图,是一种很好的支持结构化程序设计思想的图形工具,也称为N-S图。,伪代码,图形工具表示设计比较直观,但画起来比较费劲,所以描述设计还可以使用伪代码这个常用的语言工具。伪代码是一种“混合”语言,它使用一种语言通常是某种自然语言的词汇,同时却使用某种结构化程序设计的语法。,伪代码,if九点以前do私人事务;else9点到18点工作else下班;,七编码应注意的问题,全局变量,减少全局变量的使用全局变量增加了模块与模块之间的联系。运行的时候一直占用内存另外使用全局变量过多,会降低程序的清晰性,变量的名字,名字应具有足够的说明性,以便使读者能够记住它们是干什么的。给每个全局变量声明附一个简短的注释也是非常有帮助的。,变量的名字,按常规方式使用的局部变量可采用极短的名字,如用i、j作为循环变量,p、q作为指针,s、t表示字符串等。,变量的名字,现实中存在许多命名约定或者本地习惯。常见的如:指针采用以ptr结尾的变量名;全局变量用大写开头或者g_开头做变量名;常量用完全由大写拼写的变量名等。命名约定能使代码更易理解。,表达式和语句,同样,我们也应该以尽可能一目了然的形式写好表达式和语句。,采用缩进程序结构,是使程序呈现出结构清晰的最省力的方法。比较:,n=0;for(n+;n100;fieldn+=0);或for(n+;n100;fieldn+=0);,for(n=1;n=actblks)|(block_idunblocks),分解复杂的表达式。C有很丰富的表达式语法结构和很丰富的运算符,因此应该避免将一大堆东西塞进一个结构中。比较:,*xp+=(x=2*k(n-m)?ck+1:dk-);,if(2*k=A,八C语言中常见的错误,C语言中常见的错误,忘记加分号。分号是C语句中不可缺少的一部分,语句末尾必须有分号。a=1b=2if(a%3=0);i+;,C语言中常见的错误,输入变量时忘记加地址运算符“这是不合法的。Scanf函数的作用是:按照a、b在内存的地址将a、b的值存进去。“caseB:printf(7084n;caseC:printf(6069n;caseD:printf(),C语言中常见的错误,定义数组时误用变量。intn;scanf(%d,C语言中常见的错误,在定义数组时,将定义的“元素个数”误认为是可使的最大下标值。main()staticinta10=1,2,3,4,5,6,7,8,9,10;printf(%d,a10);,常见的内存错误,未初始化的指针voidf2(intdatum)int*p2;*p2=datum;.,常见的内存错误,错误的内存释放voidf3()char*p;p=malloc(10);.free(p);.free(p);,常见的内存错误,voidf8()structx*xp;xp=(structx*)malloc(sizeof(structx);.free(xp);.returnxp.,常见的内存错误,试图修改常量intmain(intargc,char*argv)char*p=abcd;*p=1;return0;,常见的内存错误,误解传值与传引用#include#includevoidget_str(char*p)p=malloc(sizeof(abcd);strcpy(p,abcd);return;,intmain(intargc,char*argv)char*p=NULL;get_str(p);printf(p=%pn,p);return0;,常见的内存错误,char*get_str(void)char*str=abcd;returnstr;,intmain(intargc,char*argv)char*p=get_str();printf(%sn,p);return0;,测试题,1、头文件中的ifndef/define/endif干什么用?2、#include和#include“filename.h”有什么区别?3、请写出floatx与“零值”比较的if语句。4、请写出char*p与“零值”比较的if语句:,测试题,请简述以下两个for循环的优缺点for(i=0;iN;i+)if(condition)DoSomething();elseDoOtherthing();,if(condition)for(i=0;iN;i+)DoSomething();elsefor(i=0;iN;i+)DoOtherthing();,测试题,voidGetMemory2(char*p,intnum)*p=(char*)malloc(num);voidTest(void)char*str=NULL;GetMemory(,测试题,voidTest(void)char*str=(char*)malloc(100);strcpy(str,“hello”);free(str);if(str!=NULL)strcpy(str,“world”);printf(str);,测试题,charstr=“Hello”;char*p=str;intn=10;请计算sizeof(str)=sizeof(p)=sizeof(n)=,测试题,voidFunc(charstr100)请计算sizeof(str
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025赤峰新正电工技术服务有限公司面向社会招聘69人考前自测高频考点模拟试题及答案详解一套
- 2025年新乡市诚城卓人学校招聘教师若干名考前自测高频考点模拟试题及一套参考答案详解
- 2025年攀枝花市盐边县事业单位春季引才考核的考前自测高频考点模拟试题及答案详解(典优)
- 2025黑龙江鸡西市社会治安综合治理中心招聘公益性岗位1人考前自测高频考点模拟试题及答案详解(名校卷)
- 贵州国企招聘2025贵州金融控股集团有限责任公司招聘27人笔试历年参考题库附带答案详解
- 浙江国企招聘2025宁波市轨道交通物产置业有限公司下属项目公司社会招聘2人笔试历年参考题库附带答案详解
- 2025陕西汉德车桥有限公司招聘笔试历年参考题库附带答案详解
- 2025重庆电子口岸中心劳务派遣人员招聘笔试历年参考题库附带答案详解
- 2025郑煤机春季招聘笔试历年参考题库附带答案详解
- 2025资兴市湖南东江湖食材供应链有限公司招聘工作人员14人笔试历年参考题库附带答案详解
- 网络交友新时代课件
- 2025年乡村医生公共卫生服务专业知识题库及答案解析
- 2024年江南大学公开招聘辅导员笔试题含答案
- 议论文写作入门基础任务式课件2025-2026学年统编版高中语文必修上册
- 佛州驾照考试试题题库及答案
- 《人工神经网络理论及应用》课件-第8章 深度神经网络-卷积神经网络(下)
- 索佳全站仪SET230RK3使用说明书
- 甘草中药课件
- 2025贵州贵阳机场安检站安检员岗位实习人员招聘笔试历年参考题库附带答案详解
- 建设工地试验室日常质量监督计划
- 基本生活能力评估表BADL使用指南
评论
0/150
提交评论