欢迎来到天天文库
浏览记录
ID:61960932
大小:750.00 KB
页数:75页
时间:2020-02-25
《第三章 计算机算法初步.ppt》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、第三章计算机算法初步一、解题方法及算法概念二、算法举例---穷举法三、算法举例---递推与迭代法四、良好的编程风格计算机求解问题的一般过程问题分析阶段认真分析问题,建立正确的模型,找出解题方法数据结构设计阶段找出所涉及的数据信息,根据已经建立的正确模型设计相应的数据结构算法设计阶段根据数据结构,详细设计计算步骤,并加以描述编码与调试阶段用计算机语言实现所描述的算法,并调试正确一、解题方法及算法概念举例:求绿化带宽度如图:在长500m、宽300m的地域内保护80000m2的地块,求沿四周植树建设绿化带的宽度。8
2、0000m2500m300mx分析:把题目中提出的问题数学化设x:绿化带宽度length:地块长度width:地块宽度area:保护面积列出计算式:area=(length-2x)(width-2x)得到一元二次方程:4x2-2(length+width)x+length*width-area=0找出计算方法X=根据求根公式求解方程找出算法用C语言写出程序调试和测试计算b计算Δ的开方计算x1计算x2输出x1和x2开始结束b2-4ac-b±2a算法概念算法解题过程(步骤)的具体描述可完全精确执行、有确定结果的有
3、穷指令序列算法的控制结构选择结构(如:C语言的if语句)循环结构(如:C语言的while语句)顺序结构(语句组)3种结构可以满足各种算法的所有控制要求算法描述的必要性程序设计过程算法设计程序实现算法描述:描述解题逻辑,验证正确性独立于程序设计语言程序实现:利用程序设计语言的功能,实现算法熟悉语言的语法、语义、支撑环境算法描述方法自然语言描述易于理解;与计算机语言差别较大,不严谨,容易出现二义性图形方式描述比较直观,无二义性,易于掌握,过度为编码比较容易流程图(P60表3-1)、N-S图、PAD图等伪代码方式描
4、述很严谨,与计算机语言很接近,很容易过度为编码,掌握的难度略大起止框I/O框处理框判断框调用框连接框有向边常用流程图符号(P60表3-1)用流程图表示算法顺序结构选择结构ynyn循环结构YNYN用N-S图表示算法AB顺序结构PTFAB选择结构当P成立A直到P成立A当型循环(先判断条件)直到型循环(后判断条件)用PAD图表示算法AB顺序结构P选择结构当型循环(先判断条件)直到型循环(后判断条件)ABAPAP伪码描述例:求5个整数之和数据分析sum保存已经输入的整数之和算法描述:赋值0sum重复执行5次2.1读
5、入一个整数2.2累加到sum输出整数和sum仅考虑主要的数据对象和控制结构程序实现阶段考虑数据对象和控制结构的具体实现3.1实例1:考试成绩统计任务:输入某班级人数和某课程的考试成绩(100分制),输出及格率(>60)和不及格率。问题分析(基本方法)输入学生人数后,逐个输入成绩,判断及格否,统计及格人数和不及格人数数据分析班级人数num及格人数pass不及格人数fail输入成绩score过程描述(流程图)初值设置0pass0fail读入成绩score读入学生人数numnum=0score<60fail
6、加一num减一pass加一num减一计算及格率pass/(pass+fail)和不及格率fail/(pass+fail)并输出YNYN算法的验证模拟算法的计算过程,跟踪数据的变化动作numpassfailScore初值设置00输入人数3输入分数2169输入分数1157输入分数0282输出程序结构设计(本题)流程图的结构从外层到内层顺序循环选择程序结构复合语句while语句if语句while条件:num==0if条件:score<60细节问题输出格式:65.5%涉及浮点数的处理程序实现#include<
7、stdio.h>main(){intnum,pass,fail,score;while(0!=num){}}printf(“输入分数:”);scanf(“%d”,&score);if(score<60){fail+=1;num-=1;}else{pass+=1;num-=1;}num=pass+fail;printf(“passed%f%”,(float)pass/num*100);printf(“failed%f%”,(float)fail/num*100);pass=fail=0;printf
8、(“请输入学生人数:”);scanf(“%d”,&num);初值设置和输入学生人数输出及格率和不及格率输入分数统计及格人数和不及格人数语言现象赋值表达式pass=(fail=0)赋值运算符=右结合简化赋值(自反运算、复合赋值)pass+=1等价于pass=pass+1自动类型变换printf(“passed%lf%”,100.0*pass/num);强制类型变换(类型名)表达式/*改变其数据类
此文档下载收益归作者所有