




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
语言、算法和程序设计方法第1页,共50页,2023年,2月20日,星期日从算法到程序再到软件计算机完成各种不同的任务,需要不同的软件软件开发算法程序软件程序设计是软件开发的一部分程序设计分解为几个步骤程序设计需要使用程序设计语言算法设计
软件开发的任务之一选择一种语言使用这个语言编写完成操作任务的代码程序设计软件开发的核心工作是算法设计第2页,共50页,2023年,2月20日,星期日算法一项工作如何被完成的步骤数学问题——寻找如何解决特定问题的方法一个著名的算法欧几里德算法:求两个正整数A和B的最大公约数
如:9、6的最大公约数是3第一步:比较A和B这两个数,将A设置为较大的数,B设置 为较小的数;第二步:A除以B,得到余数C;第三步:如果C等于0,则最大公约数就是B; 否则将B赋值给A,C赋值给B,重复进行第二、三步从算法到程序再到软件ABC9636303第3页,共50页,2023年,2月20日,星期日图灵理论只要能被分解为有限步骤的问题就可以被计算机执行有限的步骤能够将这些步骤设计为计算机所执行的程序程序设计中,首先寻找算法,算法找到后,实现算法的步骤算法的描述使用某种计算机语言不同的计算机语言对一个算法具有不同的实现方法算法是程序设计的基础从算法到程序再到软件第4页,共50页,2023年,2月20日,星期日程序和指令程序program计算机执行某种任务的一系列操作步骤的总和
一组计算机指令的有序集合
指令instruction控制计算机执行各种基本操作的命令指令是计算机执行的最基本操作
如:处理器从内存中读取一个数据 二进制的算术运算加、减、乘、除 逻辑判断等处理器能执行的二进制代码第5页,共50页,2023年,2月20日,星期日程序和指令指令作为计算机软件和硬件的接口指令在处理器中以逻辑电路实现软件硬件指令第6页,共50页,2023年,2月20日,星期日指令系统一个CPU能够执行的所有指令指令的主要类型
数据传输类
将数据从一个地方(源)传输到另外一个地方(目的) 一种是在CPU内部、存储器内部、CPU和存储器之间进行 一种是在CPU和外设(外设接口)之间进行的
算术逻辑运算类 控制操作类
有条件转移、无条件转移第7页,共50页,2023年,2月20日,星期日翻译系统基本概念源程序 用各种语言编写的程序目标程序
源程序经过翻译,成为机器可执行的机器语言程序库文件 由一些标准子程序(函数和过程)及常用的应用程序块组成的文件可执行程序 目标程序与库文件连接后形成的程序程序的整个处理过程
翻译和库文件连接装入源程序目标程序可执行程序
执行第8页,共50页,2023年,2月20日,星期日翻译系统语言处理系统,翻译计算机程序任务是把非机器语言编写的源程序翻译成目标程序是系统软件不同编程语言的翻译系统是不同的分类
汇编程序编译程序解释程序逐条翻译并执行源程序的语句,不生成可执行文件把源程序代码一次性翻译成目标程序代码,最终生成可执行文件把汇编语言源程序翻译为机器语言程序第9页,共50页,2023年,2月20日,星期日编译系统的结构和工作过程词法分析程序语法分析程序中间代码生成程序优化程序目标代码生成程序目标程序源程序Ifx>=0Theny=1Elsey=-1第10页,共50页,2023年,2月20日,星期日程序设计语言发展阶段机器语言 低级语言汇编语言 中级语言面向过程的高级语言面向对象的高级语言第11页,共50页,2023年,2月20日,星期日机器语言和指令机器语言计算机能直接执行的程序设计语言
二进制语言,用二进制机器指令来编写程序机器指令的信息操作类型操作数或操作数的地址(操作数的存储位置)操作结果的存储位置下一条指令的地址信息指令格式操作码操作数或地址码下一条指令的地址第12页,共50页,2023年,2月20日,星期日机器语言和指令指令的例子:数1和3的相加指令 100000000000000100000011
“加”操作码Number1:1Number2:3实现过程用计算器
计算机
程序过程指令执行过程特点既简单又难执行速度最快面向机器,兼容性差,移植性差最低级语言第13页,共50页,2023年,2月20日,星期日计算器的工作原理第14页,共50页,2023年,2月20日,星期日用VB设计的加法程序PrivateSubCommand1_Click()DimAAsInteger,BAsInteger,SAsIntegerA=Val(InputBox("请输入第一个数"))B=Val(InputBox("请输入第二个数"))S=A+BPrintA;"+";B;"=";SEndSub第15页,共50页,2023年,2月20日,星期日MemoryInputOutput控制器ALUForExample:1+3=4命令:输入111命令:输入333WriteWriteReadRead134OutAdd+第16页,共50页,2023年,2月20日,星期日
一条指令的执行过程
1.取操作码2.内部译码3.取第一个数4.取第二个数5.ALU完成加6.保存结果7.取下一条指令第17页,共50页,2023年,2月20日,星期日汇编语言机器语言的“符号化”用容易记忆的文字符号(助记符)表示指令中的操作码和地址码指令格式
助记符符号地址例:加法语句ADDA,B
特点机器不能直接识别可读性好面向机器,兼容性差,移植性差中级语言
第18页,共50页,2023年,2月20日,星期日高级语言与机器完全独立的语言,描述解题过程语法与自然语言接近特点面向问题,通用,可移植分类面向过程BASICCPASCALFORTRANCOBOLAda面向对象VisualBasic
C++JAVADelphiPowerBuild第19页,共50页,2023年,2月20日,星期日面向对象程序设计程序的基本成分对象 是具有特殊属性(数据)
和方法(行为、操作)的实体特点封装性继承性多态性
把对象的属性和操作结合在一起,构成一个独立的对象子类可以拥有父类的属性和行为基类中定义的属性和行为被子类继承后,可以具有不同的数据类型或不同的行为第20页,共50页,2023年,2月20日,星期日*其它语言函数型语言
LISPScheme
说明性语言逻辑语言,用于根据逻辑推理的原则回答问题Prolog超文本链接标记语言(HTML)由一种格式标记和超链接组成的“伪语言”,主要用于网络上的信息服务XML可扩展标记语言其它语言如SQL
第21页,共50页,2023年,2月20日,星期日*基于组件的程序设计基于组件的程序设计是微软提出的思想COM(ComponentObjectModel,组件对象模型)组件技术属于面向对象的程序设计技术使用COM技术,一个新的应用系统的开发不必按照传统的方法进行所有代码的编写,可以通过组件进行“组装”软件对于提高开发速度、降低开发成本、增加应用软件的灵活性、降低软件维护费用很有帮助软件开发技术的主流方向第22页,共50页,2023年,2月20日,星期日程序设计语言的发展历史第23页,共50页,2023年,2月20日,星期日怎样编写程序程序设计是一个系统过程不是简单的编写程序代码一般可以分为六个步骤问题的定义(程序说明)设计解决问题的方案编写程序代码进行程序测试编写程序的文档程序应用(程序运行与维护)第24页,共50页,2023年,2月20日,星期日一、理解问题:程序说明程序设计中最重要的部分是对问题的描述设计一个程序是为了解决某个特定的问题分析特定问题,决定应该做什么,如何做 ——系统分析员主要弄清以下问题:程序的目标是什么?即程序需要解决什么样的问题可能需要输入哪些数据?数据具体的处理过程和要求是什么?程序可能产生的数据输出以及输出形式是什么?示例1
示例2第25页,共50页,2023年,2月20日,星期日二、设计解决问题的方案对要解决的问题设计出具体的解决方案确定程序的逻辑结构关键—设计算法例:欧几里德算法
——求两个正整数A和B的最大公约数第一步:比较A和B这两个数,将A设置为较大的数,B设 置为较小的数;第二步:A除以B,得到余数C;第三步:如果C等于0,则最大公约数就是B; 否则将B赋值给A,C赋值给B,重复进行第二、三步第26页,共50页,2023年,2月20日,星期日程序的逻辑结构所有程序都由三种结构构成顺序结构
按命令出现的先后顺序依次执行分支结构
根据设定的条件来决定程序的执行方向循环结构
按照设定的条件重复执行一组命令
当型
直到型
流程图第27页,共50页,2023年,2月20日,星期日顺序结构A
B分支结构X>=0X=5Y=2*X第28页,共50页,2023年,2月20日,星期日循环结构当型结构直到型结构X>=0X>=0第29页,共50页,2023年,2月20日,星期日三、编写程序代码编写程序代码选择合适的编程语言按照上阶段设计的算法编写代码选择哪种程序设计语言?主要看是否能够完成程序设计任务编程人员对这个语言的熟悉程度程序代码的例子计算5!
fac=1*2*3*4*5 分别用C语言、VB和Java实现 第30页,共50页,2023年,2月20日,星期日一个程序代码的例子(C语言)
计算5!
#include<stdio.h> /*C语言编译系统的库函数*/main() /*程序开始*/{inti,fac; /*定义变量*/fac=1; /*变量fac被赋值1*/for(i=2;i<=5;i++) /*从2到5,循环执行乘法得到5的阶乘*/fac=fac*i;printf("the5!=%d",fac);/*输出结果*/}第31页,共50页,2023年,2月20日,星期日一个程序代码的例子(VB语言) DimiAsInteger,facAsInteger
'定义i、fac为整型数变量 fac=1 '变量fac赋值1 Fori=2To5Step1'循环,从2到5,每次步长为1 fac=fac*i '计算5的阶乘Nexti 'next和for构成循环体 Print"fac=";fac '输出阶乘结果计算5!第32页,共50页,2023年,2月20日,星期日一个程序代码的例子(Java语言) publicclassFactorial{ publicstaticvoidmain(Stringargs[]){ inti=1; //循环控制变量 doublefac=1;//存放结果的变量,注意类型 while(i<=5){ fac=fac*i;//循环体 i=i+1; } System.out.println("5!="+fac);//输出结果 } }
计算5!第33页,共50页,2023年,2月20日,星期日四、寻找错误:程序测试调试程序,找出程序中的错误语法错误违反编程语言的语法规则逻辑错误程序得到的结果不对
需用大量数据测试
测试方法黑盒测试 例:加法程序白盒测试 专业测试,使用一组特意设计的数据测试第34页,共50页,2023年,2月20日,星期日五、编写程序文档对前面所做的各种设计形成完整的手册设计过程中形成的文档 流程图 变量列表 程序代码 运行结果等
供日后程序的维护、升级使用设计完成后的使用手册 程序的功能 操作说明第35页,共50页,2023年,2月20日,星期日六、运行与维护培训用户程序的安装、设置等程序进行修改甚至升级第36页,共50页,2023年,2月20日,星期日算法算法是一组明确的、可以执行的步骤的有序集合就是为了解决问题而采用的方法和步骤算法分类数值运算算法非数值运算算法算法特性
确定性有穷性有效性可有零个或多个输入有一个或多个输出第37页,共50页,2023年,2月20日,星期日算法的表示方法自然语言流程图伪代码PAD图(问题分析图)例:求5!的算法
①*用自然语言描述②*用伪代码表示③用流程图表示
P=1*2*3*4*5P=P*IP I P*I1 1 11 2 22
3 66
4 2424
5 120
120 6第38页,共50页,2023年,2月20日,星期日用自然语言表示的求5!的算法第一步:使P=1第二步:使I=2第三步:计算P*I,乘积仍放在P中第四步:使I的值加1再放到I中第五步:如果I不大于5,返回重新执行第三 步及其后的步骤,否则执行第六步第六步:打印出P的值,算法结束第39页,共50页,2023年,2月20日,星期日开始置P的初值为1置I的初值为2当I<=5,执行下面循环操作:使P=P*I使I=I+1(循环体到此结束)打印出P的值结束用伪代码表示的求5!的算法第40页,共50页,2023年,2月20日,星期日
用流程图表示求5!的算法P第41页,共50页,2023年,2月20日,星期日算法设计程序设计有两个阶段第一是设计算法第二是实现算法解决问题的基本原理(4个步骤)1.理解问题2.设计一个解决问题的方案3.执行这个方案4.检验这个方案第42页,共50页,2023年,2月20日,星期日*常用的算法结构迭代结构递归结构排序问题
查找问题第43页,共50页,2023年,2月20日,星期日迭代结构
不断用变量的旧值递推出新值的过程进行数值计算建立在循环基础上的算法关键--找到迭代公式
例子分析欧几里德算法计算S=1!+2!+3!+…+10!
迭代公式 S0=0 a0=1 ai=ai-1*i Si=Si-1+ai开始置S的初值为0置a的初值为1置i的初值为1当i<=10,执行下面操作: 使a=a*i 使S=S+a 使i=i+1打印出S的值结束第44页,共50页,2023年,2月20日,星期日例子分析判断一个整数是否为素数素数是指只能被1和它本身整除的数判断方法:用2到(n-1)的各个整数轮流去除n,如果都不能 整除,则n是素数。算法:
第1步:输入n的值第2步:j=2(准备用j去除n)第3步:n被j除,得到余数a第4步:如a=0,表示n能被j整除,输出信息 “n不是素数”,算法结束;否则就是 n不能被j整除,进入下一步;第5步:将j加1送回给j第6步:如果j<n,则跳到第3步执行,否则输出 “n是素数”的信息算法结束第45页,共50页,2023年,2月20日,星期日递归结构递归指用一个概念本身直接或间接地去定义该概念把一个或者一类问题分解或分割为一个个更小的问题,然后解决这些小
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年山西信息职业技术学院高职单招职业技能测试近5年常考版参考题库含答案解析
- 2025年安徽机电职业技术学院高职单招职业适应性测试历年(2019-2024年)真题考点试卷含答案解析
- 2025年宁波幼儿师范高等专科学校高职单招语文2019-2024历年真题考点试卷含答案解析
- 19.9安全用电课件
- 120调度员培训课件
- 新发展英语(第二版)综合教程3 课件 Unit 3 How to Grow Old
- 小学课件读书郎
- 网易云课堂上秋叶系列
- 桥梁工程课程设计
- 2025毕业论文答辩模板:巅峰之作2
- DL-T-5161.5-2018电气装置安装工程质量检验及评定规程第5部分:电缆线路施工质量检验
- 软件工程智慧树知到期末考试答案章节答案2024年天津科技大学
- 医院自体输血管理制度
- 《光伏发电工程工程量清单计价规范》
- 创伤性凝血病治疗的信心之选课件
- 2023年佛山南海区桂城街道招考笔试《行政职业能力测验》模拟试卷答案详解版
- 讲究卫生主题班会通用课件
- 不良事件警示教育:防跌倒坠床
- 毕业论文-山东省农产品出口贸易的现状及对策研究
- 助产士的沟通技巧与心理疏导
- 无人机巡检方案完整版
评论
0/150
提交评论