已阅读5页,还剩44页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
程序设计与算法语言,C+程序设计基础,学习要求:,通过全国高等院校计算机水平考试2级通过该课程的期末考试学习一种计算机语言学习用计算机处理问题的思维方法84学时(其中讲课68,实验16学时),程序设计与算法语言,什么是算法?什么是程序?什么是语言?,算法,算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。,通俗点说,就是计算机解题的过程。,程序,指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。,例如:C或C+,VisualC+,语言,指用于人与计算机之间通讯的语言。,是人与计算机之间传递信息的媒介,世界编程语言排行榜,考核:,全国高等院校计算机水平考试2级期末考试平时成绩:作业、点名、实验总评成绩:期末考试*0.7+平时成绩*0.3,第1章程序设计概述,学习内容计算机求解问题的步骤和算法计算机程序C/C+语言简介,本章学习目标理解计算机求解问题的步骤掌握算法设计过程了解程序设计的基本知识了解C+语言特点,1.1计算机求解问题的步骤和算法设计,1.1.1计算机求解问题的步骤分析问题建立数学模型设计算法编写程序代码测试程序,1.分析问题,针对每个具体的问题,必须认真审查问题描述,理解问题的真实要求目的:明确拟解决的问题,写出求解问题的规格说明,明确用户要求输入输出的数据及形式,求解问题的数学模型,程序运行环境等。2、求两个数之和。,2.建立数学模型,数学模型是利用数学语言(符号、表达式与图像)模似现实的模型把实际问题加以提炼而构造数学模型的过程称为数学建模数学建模通常采用的方法就是归纳法用计算机解决问题必须有合适的数学模型,例1-1写出求1+2+3+100的数学模型。,设,分析:,则对于任意,令,则有,,其中,因此数学模型为,补充:写出求123100的数学模型。,辗转相除法:a=q1b+r1b=q2r1+r2r1=q3r2+r3rn-2=qnrn-1+rnrn-1=qn+1rnrn是a与b的最大公约数。,r1=amodbr2=bmodr1r3=r1modr2rn=rn-1modrn-2rn+1=rnmodrn-1=0,余数=被除数mod除数,例1-2写出求两个正整数a,b的最大公约数的数学模型。,kakbkrk1a1b1r1=a1modb12a2b2r2=a2modb2n-1an-1bn-1rn-1=an-1modbn-1nanbnrn=anmodbn=0,数学模型:,令a1=a,b1=b,第k次相除的被除数为ak,除数为bk,余数为rk.,当余数rk=0时,被除数bk是a与b的最大公约数.,3.算法设计,算法设计:指把问题的数学模型或处理过程转化为计算机的解题步骤。,4.程序编码,主要任务:是用某种程序设计语言,将计算机的解题步骤设计为能在计算机上运行的程序。,5.测试和调试,主要目的:发现和纠正程序中的错误。,1.1.2算法设计1.算法设计,是对特定问题求解步骤的一种描述它是指令的有限序列,其中每一条指令表示一个或多个操作。通俗点说,就是计算机解题的过程在这个过程中,无论是形成解题思路还是编写程序,都是在实施某种算法,前者是推理实现的算法,后者是操作实现的算法。,算法设计是一件非常困难的工作,常用的算法设计技术有:,列举穷举搜索迭代递归回溯递推模拟分治贪心等。一个好的算法一般背后都有一个好的数学模型来描述。,算法必须满足5个特性,有穷性一个算法在执行有穷个步骤后必须终止。确定性一个算法给出的每一个步骤都必须是精确定义、无二义性。可行性算法中要执行的每一个步骤都可以在有限时间内做完成。输入有零个或多个外部数据作为算法的输入。输出算法产生一个或多个数据作为输出。,对于同一个问题可以有不同的解题方法和步骤,也就是有不同的算法。算法有优劣:应当选择简单的、运算步骤少的,既运算快、内存开销小的算法(算法的时空效率)。计算机算法分为两类:数值算法:目的是求数值解。非数值算法:常用于事物管理领域,2.算法描述,按照算法的执行顺序,算法有三种结构:顺序结构选择结构循环结构顺序结构:指算法按照书写步骤的顺序依次执行,是一种最基本、最简单的结构。,选择结构:根据指定的条件进行判断,由判断的结果选择某些步骤的控制结构。循环结构:指在算法中需要重复执行一条或多条指令的控制结构。即从某一条指令开始,按照一定的条件反复执行某一处理步骤,直到不满足条件时才结束。反复执行处理的步骤称为循环体,重复执行的条件称为循环条件。,算法描述的方式主要有自然语言、流程图、盒图、PAD图、伪代码和程序设计语言。(1)自然语言自然语言是人们日常所用的语言,所描述的算法自然也通俗易懂。,例1-3设计求两个数之和的算法。,用变量a、b分别表示这两个数,用c表示a与b的和,则该问题的数学模型是c=a+b。算法:输入a,b的值;计算c=a+b输出c的值。该算法是顺序结构,例1-4设计求两个数的最大值的算法。,若用变量a、b分别表示这两个数,max表示a与b的最大值,则数学模型是算法:输入a,b的值;如果ab则max=a;否则max=b;输出max的值。,构成选择结构,条件,例1-5设计求1+2+3+100的算法。,由例1-1知,求1+2+3+100的数学模型为如果sk,sk-1都用变量s表示,k表示1100中的整数,初始时,令s=0,k=1,则可以设计如下算法:,算法1:第1步:k=1,s=0;第2步:计算s=k+s,k=k+1第3步:计算s=k+s,k=k+1第4步:计算s=k+s,k=k+1第99步:计算s=k+s,k=k+1第100步:计算s=k+s第101步:输出s的值。,步骤多书写的工作量大,可把这个算法设计成循环结构。开始时令s=0,k=1,循环体:s=s+k,k=k+1,循环条件:k100,,算法2:k=1,s=0。当k100成立时,转,否则转。计算s=s+k。计算k=k+1。转。输出s的值。,构成了循环结构,循环体,循环条件,例1-6设计求两个正整数的最大公约数的算法。,由例1-2知,求两个正整数的最大公约数的数学模型为,当余数rk=0时,被除数ak是a与b的最大公约数,若对于每一个k,被除数ak用a表示,除数bk用b表示,余数rk用整型变量r表示,则r=amodb,a=b,b=r被重复执行,因此可以用循环结构设计算法,开始时,计算r=amodb循环条件是r0循环体是a=b,b=r,r=amodb当余数r=0时,a就是所要求的最大公约数。,算法:输入a,b的值r=amodb如果r0成立,则转,否则转。a=bb=rr=amodb转输出a的值。,构成循环结构,循环体,循环条件,(2)流程图,流程图采用一些图框表示各种操作形象直观,易理解。它是描述算法的常用工具。一个流程图包括:表示相应操作的框,带箭头的流程线,框内外有必要的说明文字。,主要的流程图符号见图,顺序结构,选择结构,循环结构,例1-7求两个数之和。,输入a,b的值;计算c=a+b输出c的值。,c=a+b,开始,结束,例1-8求两个数的最大值。,输入a,b的值;如果ab则max=a;否则max=b;输出max的值。,max=a,max=b,例1-9求1+2+3+100的值。,k=1,s=0。当k100成立时,转,否则转。计算s=s+k。计算k=k+1。转。输出s的值。,s=0,k=1,s=s+k,k=k+1,(3)程序设计语言,计算机不能识别自然语言、流程图等算法描述语言,程序设计语言是用于编写计算机程序的语言,它是人与计算机交流的工具。因此我们要用程序设计语言描述需要解决的问题。,1.2计算机程序,1.2.1程序设计语言1计算机程序计算机程序(简称程序)是用程序设计语言所要求的规范描述出来的一系列动作,它表达了程序员要求计算机执行的操作,程序是计算机操作的依据,数据是计算机操作的对象。学习程序设计语言在于让计算机准确地执行程序,在于会用程序设计方法去实现动作序列的表达。,程序=数据+算法,计算机硬件系统由运算器、控制器、存储器、输入设备和输出设备五个部分组成,程序在执行前必须装入内存程序执行时CPU负责从内存中逐条取出指令,分析识别指令,最后执行指令,从而完成了一条指令的执行周期。CPU就是这样周而复始地工作,直到程序完成。计算机硬件系统最终只能执行由机器指令组成的程序,2程序设计语言的分类,程序设计语言,低级语言,高级语言:c+,c#,Java,机器语言,汇编语言,计算机程序设计语言的发展,机器语言,汇编语言,高级语言,用一些简洁的英文字母、符号串来替代一个特定的指令的二进制串,比如,用“ADD”代表加法,这种程序设计语言就称为汇编语言,,由0和1组成的指令序列交由计算机执行,这种计算机能够认识的语言,就是机器语言,然而计算机是不认识这些符号的,这就需要一个专门的程序,专门负责将这些符号翻译成二进制数的机器语言,这种翻译程序被称为汇编程序。,最初与计算机交流的痛苦经历中,人们意识到,应该设计一种这样的语言,这种语言接近于数学语言或人的自然语言,同时又不依赖于计算机硬件,编出的程序能在所有机器上通用。这便是高级语言。,经过努力,1954年,第一个完全脱离机器硬件的高级语言-FORTRAN问世了,40多年来,共有几百种高级语言出现,有重要意义的有几十种。影响较大、使用较普遍的有FORTRAN、ALGOL、COBOL、BASIC、LISP、SNOBOL、PL/1、Pascal、C、PROLOG、Ada、C+、VC、VB、Delphi、JAVA等。,1.2.2编译与解释,用高级语言编写的程序称为源代码或源程序。计算机是不能够直接执行源程序的,必须把源程序翻译成计算机能解读、运行的低级机器语言程序,即目标代码。翻译的方式有编译和解释两种。,1编译,将一种语言编写的程序转换成等效(等价)的另一种语言的过程称为翻译,将源程序翻译成低级语言的过程称为编译。翻译的过程一般由程序来完成,将完成编译功能的程序称为编译程序(编译器),编译程序,源程序(高级程序),图1.8编译器,目标程序(低级语言),编译程序把一个源程序翻译成目标程序的工作过程分为五个阶段:词法分析语法分析语义检查中间代码生成代码优化目标代码生成,编译程序以源程序作为输入,编译后产生目标程序。在计算机上运行的是目标程序。如C、C+、VisualBasic等都是采用编译方式的程序设计语言。,2解释,翻译的另一方式是解释运行方式,它是按照源程序中语句的动态顺序,直接地逐句进行分析解释,并立即执行。解释的过程是由程序完成的,称为解释程序。解释程序对源代码中的程序进行逐句翻译,翻译一句执行一句,翻译过程中并不生成可执行文件。,1Stroustrup:C+,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026江西赣州兴国县中医院见习生招聘11人备考题库及完整答案详解1套
- 地下消防水池(深基坑)开挖专项施工方案
- 扬尘治理专项施工方案
- 排水管道安装施工方案
- 2026中国人民大学国际交流合作部招聘1人备考题库及参考答案详解
- 2026年江西交通职业技术学院高层次人才招聘15人备考题库含答案详解
- 2026年中级经济师《金融专业知识与实务》试题及参考答案
- 2026福建福州市鼓楼区水部街道办事处招聘公共服务办2名劳务派遣人员备考题库参考答案详解
- 堤坝照明灯具安装施工方案
- 2026中智集团RPA工程师招聘1人备考题库及完整答案详解一套
- 2026年辽宁锦州海通实业有限公司度校园招聘28人笔试备考题库及答案详解
- 2026年巨量本地推初级题库
- 2025年四川省自贡市地理生物会考真题试卷+答案
- 摩根士丹利-中国消费:当前消费趋势走向何方?-China Consumer:Where is consumption trending now-20260601
- GB 26396-2026洗涤用品安全技术规范
- 东南大学2024综评数学试卷
- GB/T 28026.2-2018轨道交通地面装置电气安全、接地和回流第2部分:直流牵引供电系统杂散电流的防护措施
- CB/T 3136-1995船体建造精度标准
- 设备运行分析报告(模板02)
- 二次函数求最值动轴定区间动区间定轴课件
- 浙江省衢州市各县区乡镇行政村村庄村名居民村民委员会明细及行政区划代码
评论
0/150
提交评论