《C程序设计概述》PPT课件.ppt_第1页
《C程序设计概述》PPT课件.ppt_第2页
《C程序设计概述》PPT课件.ppt_第3页
《C程序设计概述》PPT课件.ppt_第4页
《C程序设计概述》PPT课件.ppt_第5页
已阅读5页,还剩44页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序设计与算法语言,C+程序设计基础,学习要求:,通过全国高等院校计算机水平考试2级 通过该课程的期末考试 学习一种计算机语言 学习用计算机处理问题的思维方法 84学时(其中讲课68,实验 16学时),程序设计与算法语言,什么是算法? 什么是程序? 什么是语言?,算法,算法是在有限步骤内求解某一问题所使用的一组定义明确的规则。,通俗点说,就是计算机解题的过程。,程序,指一组指示计算机每一步动作的指令,通常用某种程序设计语言编写,运行于某种目标体系结构上。,例如:C或C+,Visual C+,语言,指用于人与计算机之间通讯的语言。,是人与计算机之间传递信息的媒介,世界编程语言排行榜,考核:,全国高等院校计算机水平考试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+r1 b=q2r1+r2 r1=q3r2+r3 rn-2=qnrn-1+rn rn-1=qn+1rn rn是a与b的最大公约数。,r1=a mod b r2=b mod r1 r3=r1 mod r2 rn=rn-1 mod rn-2 rn+1=rn mod rn-1=0,余数=被除数 mod 除数,例1-2 写出求两个正整数a,b的最大公约数的数学模型。,k ak bk rk 1 a1 b1 r1=a1 mod b1 2 a2 b2 r2=a2 mod b2 n-1 an-1 bn-1 rn-1=an-1 mod bn-1 n an bn rn=an mod bn=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=a mod b, a=b,b=r被重复执行,因此可以用循环结构设计算法,开始时,计算r=a mod b 循环条件是r0 循环体是a=b,b=r, r=a mod b 当余数r=0时,a就是所要求的最大公约数。,算法: 输入a,b的值 r=a mod b 如果r0成立,则转,否则转。 a=b b=r r=a mod b 转 输出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+、Visual Basic等都是采用编译方式的程序设计语言。,2解释,翻译的另一方式是解释运行方式,它是按照源程序中语句的动态顺序,直接地逐句进行分析解释,并立即执行。 解释的过程是由程序完成的,称为解释程序。 解释程序对源代码中的程序进行逐句翻译,翻译一句执行一句,翻译过程中并不生成可执行文件。,1 Stroustrup: C+, /bs/C+.html 2 C+ Home. / 3 Boost C+ Libraries, / 4 C+ FAQ LITE, http:/geneura.ugr.es/jmerelo/c+-faq/ 5C: Your Resource for C+ Programming, http:/www.cprogramming.c 6 - The C+ resources network, / 7 C学习资源网,/ 8 程序员大本营,/ 9 编程爱好者,/ 10 /litao; 1 /chenliangyin; 12http

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论