资源预览内容
第1页 / 共55页
第2页 / 共55页
第3页 / 共55页
第4页 / 共55页
第5页 / 共55页
第6页 / 共55页
第7页 / 共55页
第8页 / 共55页
第9页 / 共55页
第10页 / 共55页
亲,该文档总共55页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述
1,第1章 算法与C语言概述,程序设计的基本概念 算法 C语言概述,2,11程序设计的基本概念,程序设计的基本步骤与程序设计语言 程序设计方法,111程序设计的基本步骤与程序设计语言,1程序与计算机程序 程序就是对一系列操作过程的描述。 例11求解一元二次方程。 步骤1:为计算机提供一元二次方程的三个系数; 步骤2:用数学公式计算方程的第一个解; 步骤3:用数学公式计算方程的第二个解; 步骤4:输出方程的两个解; 步骤5:程序结束。 为求解一个计算任务,我们会告诉计算机按照特定操作顺序完成一系列的指令,这一系列指令的集合就是计算机程序。,111程序设计的基本步骤与程序设计语言,2程序设计的基本步骤 分析问题 设计算法 编写程序 运行程序 分析结果 编写文档,111程序设计的基本步骤与程序设计语言,3程序设计语言 (1)第一代机器语言 机器语言就是由二进制 0、1 代码形式构成的指令。 不同的计算机系统具有不同的指令系统。 如PC机中,表示相加运算的指令代码就是01001。,111程序设计的基本步骤与程序设计语言,3程序设计语言 (2)第二代汇编语言 汇编语言中的语句就是机器指令的符号化形式。 即用十进制数据和英文缩写词来取代二进制形式的机器指令。 例如: 指令代码01001可改写成ADD 二进制数据1001可改写成9 计算机不能直接识别汇编语言中的语句,需要翻译成二进制形式的机器指令。 这种翻译一般称为“汇编”,所用软件称为“汇编程序”。,111程序设计的基本步骤与程序设计语言,3程序设计语言 (3)第三代高级语言 高级语言是面向用户的、独立于计算机硬件的编程语言。 计算机不能直接识别高级语言中的语句,需要翻译成二进制形式的机器指令。 这种翻译一般分为称为“编译”和“解释”两种方式。 所用软件称为“编译程序”和“解释程序”,如图所示。,111程序设计的基本步骤与程序设计语言,3程序设计语言 (4)第四代非过程化语言 使用非过程化语言编程时只需告诉计算机“做什么”而不是“怎样做” 即不需要描述算法实现的细节,112程序设计方法,1结构化程序设计方法 (1)结构化程序设计原则 自顶向下 逐步细化 模块化 限制使用goto语句 (2)三种基本结构 顺序结构 选择结构 循环结构 顺序结构 表示程序中的各操作是按照它们出现的先后顺序执行的。,112程序设计方法,1结构化程序设计方法 选择结构 对于要先做判断后进行选择的问题就要使用选择结构。 选择结构分为三种形式: 单分支选择 双分支选择 多选择分支,112程序设计方法,1结构化程序设计方法 循环结构分为两种形式: 当型循环 直到型循环 当型循环 表示先进行条件判断,当满足给定的条件后才执行循环体,并且在循环终端处流程自动返回到循环入口处;如果条件不满足,则退出循环体直接到达循环出口处。 直到型循环 表示从循环入口处直接执行循环体,在循环终端处判断条件。如果条件不满足,返回入口处继续执行循环体,直到条件为真时再退出循环到达循环出口处,是先执行循环后进行条件判断。,112程序设计方法,1结构化程序设计方法 (3)结构化程序特点 结构内不存在死循环 每种结构都有且仅有一个入口 每种结构都有且仅有一个出口 结构内的每一部分都有机会被执行到 2面向对象程序设计方法 例12从键盘输入数据n,计算其对应的平方根。 int n; float result; scanf(“%d“,112程序设计方法,2面向对象程序设计方法 (1)对象 在现实世界中,对象就是我们认识世界的基本单元。 它可以是人,也可以是物,还可以是一件事。 对象作为现实世界中的一个实体,主要特性如下: 每一个对象必须有一个标记名称以便区别于其它对象。 用状态或属性可以描述对象具有的特征。 对象含有一组操作,每个操作都决定对象的一种行为。 对象操作与对象属性是不可分离的。 (2)类 就是对一组具有共同的属性特征和行为特征的对象所进行的抽象,类和对象之间的关系是抽象和具体的关系。,112程序设计方法,1结构化程序设计方法 (1)结构化程序设计原则 自顶向下 逐步细化 模块化 限制使用goto语句 (2)三种基本结构 顺序结构 选择结构 循环结构 顺序结构 表示程序中的各操作是按照它们出现的先后顺序执行的。,112程序设计方法,2面向对象程序设计方法 表11学生类中的一个对象实例 对象状态:对象的状态是全部静态属性的动态值集合。,112程序设计方法,2面向对象程序设计方法 (4)对象特征 模块性 继承性 动态链接 易维护性 封装性,17,12算法,121算法的概述 122算法的表示 123常用算法的简介 人类求解问题的两种方式: 推理方式 算法方式,121算法的概述,算法: 一个有穷规则的集合,其规则规定一个解决某一特定类型问题的操作序列。 算法特征: 有穷性 确定性 输入项 输出项 有效性,122算法的表示,1使用自然语言描述算法 例14使用自然语言描述:12399100。 求解方法:使用循环结构来表示100次相加运算。其中,使用两个变量sum和n,变量sum表示累和变量,初始值为0,每次加一个“加数”;变量n表示“加数”,初始值为1,取值范围是1至101,为累和变量sum准备数据,而变量n的值为101时退出循环。 步骤1:假设sum的初值为0; 步骤2:假设n的初值为1; 步骤3:如果n100时,则执行步骤4,否则转出执行步骤7; 步骤4:计算sum加i的值后,重新赋值给sum; 步骤5:计算n加1的值后,重新赋值给n; 步骤6:转去执行步骤3; 步骤7:输出sum 的值; 步骤8:算法结束。,122算法的表示,2使用传统流程图描述算法 圆角矩形表示算法的“开始”和“结束”; 平行四边形表示输入操作和输出操作。 菱形表示表示条件判断; 直角矩形表示算法中的具体操作; 箭头表示算法的操作流程; 圆圈表示连接其它流程图符号,具有汇合的功能。,122算法的表示,2使用传统流程图描述算法 传统流程图有如下三类共5种。 顺序结构如图1-4所示。 选择结构如图1-5所示。,122算法的表示,2使用传统流程图描述算法 循环结构如图1-6所示。,122算法的表示,2使用传统流程图描述算法 传统流程图的主要优点: 形象直观,各种操作容易理解,也不会产生二义或歧义性 算法出错时容易发现并修改。 传统流程图的主要缺点: 所占篇幅较大且不易绘制,由于使用流程线导致算法过于灵活,不受阻挠限制,常使流程转向混乱,最终造成程序的阅读和修改困难,更不利于结构化程序的具体实现。,122算法的表示,2使用传统流程图描述算法 例15使用传统流程图描述:12399100。,122算法的表示,3使用NS流程图描述算法 顺序结构如图1-8所示。 选择结构如图1-9所示。,122算法的表示,3使用NS流程图描述算法 循环结构如图1-10所示。,122算法的表示,3使用NS流程图描述算法 NS流程图的主要优点: 简单且易学易用,具有较好的可读度,尤其适合描述循环和条件结构的算法。另外,NS流程图的设计意图易理解,从而为编程、查错、选择测试用例、软件维护等提供方便。 NS流程图的主要缺点: 不容易进行手工修改,在嵌套过多时不容易绘制。 例16使用NS流程图描述:12399100。,122算法的表示,4使用伪代码描述算法 例17使用伪代码描述累和算法:12399100。 算法描述如下: begin sum=0 n=1 while (n=100) sum=sum+n n=n+1 print sum end,122算法的表示,3使用NS流程图描述算法 例18两个变量内容的交换.。 求解方法:使用三个变量a,b,t,其中变量a和b的值由键盘输入,变量t作为暂存单元,通过三次赋值操作完成交换。 画出NS流程图:,122算法的表示,3使用NS流程图描述算法 例19取绝对值。 求解方法:使用一个变量n,并选择结构来进行判断。若变量n的值大于0,则输出n的值,否则输出n的值。 画出NS流程图:,122算法的表示,3使用NS流程图描述算法 例110计算10!。 求解方法:使用循环结构来表示10次相乗运算。其中,使用两个变量f和n,变量f表示累乗变量,初始值为1,每次乗一个“乗数”;变量n表示“乗数”,初始值为1,取值范围是1至11,为累乗变量f准备数据,而变量n的值为11时退出循环。 画出NS流程图:,122算法的表示,3使用NS流程图描述算法 例111求裴波纳契数列中的前10个数据。 斐波那契数列是指:0、1、1、2、3、5、8、13、21、34,数学定义如下: F(0)0 F(1)1 F(n)F(n-1)F(n2)(n2) 求解方法:使用循环结构和迭代算法。其中,循环控制变量k从2至10取值,在取值为2至9时求裴波纳契数,取值为10时结束循环;另外三个变量为f1,f2,f,其中f1的初始值为0,f2的初始值为1,f的值是f1和f2的和,迭代过程如下: f=f1+f2,f1=f2,f2=f,122算法的表示,3使用NS流程图描述算法 例111求裴波纳契数列中的前10个数据。 画出NS流程图:,122算法的表示,3使用NS流程图描述算法 例112求两个正整数的最大公约数。 求解方法:最大公约数就是两个正整数共有约数中最大的一个,下面介绍欧几里德算法(又称为辗转相除法),其主要操作如下: 步骤1:输入两个正整数,并放入变量m和n中; 步骤2:求出m除以n的余数放入变量r中; 步骤3:如果r为0,则执行步骤7,否则执行步骤4; 步骤4:操作m=n,n=r; 步骤5:求出m除以n的余数放入变量r中; 步骤6:执行步骤3; 步骤7:n就是所求的结果,输出结果。,122算法的表示,3使用NS流程图描述算法 例112求两个正整数的最大公约数。 画出NS流程图:,122算法的表示,例113判断素数。 素数是一个大于1的自然数,除了1和它本身外,不能被其他自然数整除,换言之就是素数除了1和它本身以外不再有其他的因数。 求解方法:由键盘输入一个大于1的自然数n,,使用一个变量k,其取值范围从2至n1,用循环结构来判断所有的k值是否是n的因数。若有因数,则输出不是素数的信息,并结束算法;若没有因数,则输出是素数的信息。,122算法的表示,例113判断素数。 画出NS流程图:,38,13C语言概述,131C语言的发展及特点 132C语言程序的构成及程序的书写格式 123程序调试步骤 134用VC系统实现C程序的操作过程,131C语言的发展及特点,1C语言的发展过程 表12 C语言标准,131C语言的发展及特点,2C语言的主要特点 简洁紧凑、灵活方便 运算符丰富 数据类型丰富 运算表达方式多样 允许访问物理地址并控制硬件 目标代码质量高 可移植性好 表达力强,132C语言程序的构成及程序书写格式,1C语言程序示例 例114求解一个一元二次方程。 #include #include int main() float a,b,c; float x1,x2; scanf(“%f,%f,%f“, ,132C语言程序的构成及程序书写格式,例115编写函数计算12399100。 #include int main() int s(int m);int m=100; printf(“sum=%dn“,s(m); return 0; int s(int m) int sum=0; int n=1; while (n=m) sum=sum+n; n=n+1; return sum; ,132C语
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号