C语言程序设计PPT--第一章--基本知识_第1页
C语言程序设计PPT--第一章--基本知识_第2页
C语言程序设计PPT--第一章--基本知识_第3页
C语言程序设计PPT--第一章--基本知识_第4页
C语言程序设计PPT--第一章--基本知识_第5页
已阅读5页,还剩26页未读 继续免费阅读

下载本文档

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

文档简介

1、C程序设计 第一章 基本知识 主讲:高利军,第1,C程序设计,学时 72/20 周一(1,2)1C506 周二(5,6)1C407 周五(1,2) 1C407,C程序设计 第六章 数组 主讲:高利军,第2,概述,本课程重点 重点:讲述程序设计方法上 进行程序设计方法及算法的训练 力求体现“结构化程序设计”思想 培养和训练良好 的程序设计风格 课程介绍 课程组成 本章主要内容 程序设计语言 高级语言程序的执行过程 C 简况 算法概念 流程图,C程序设计 第六章 数组 主讲:高利军,第3,C程序设计 第六章 数组 主讲:高利军,第4,1.1 程序设计语言 计算机系统的工作是由事先设计好的程序来控制

2、的。 程序: 是一个指令序列 。 程序设计: 为计算机编排程序的过程。 程序设计语言: 用于编写、描述计算机程序的语言 。 程序设计语言分成三类: 机器语言、 汇编语言、 高级语言。,C程序设计 第六章 数组 主讲:高利军,第5,机器语言,机器语言 由能被计算机直接执行的机器指令组成,每条机器指令是一串二进制代码。 例如计算:,我们用 Pentium 机器语言编程序。,C程序设计 第六章 数组 主讲:高利军,第6,1010 1001 0001 0110 0000 0001 0011 1100 0001 1000 0000 0001 0111 1100 0000 0101 0010 1101 0

3、001 0101 0000 0000 1110 1010 0000 0011 0000 0101 0001 0101 0000 0000 1010 0011 0001 1000 0000 0001 0000 0000 0000 0000 0000 0000 0000 0000 缺点:容易出错、调试极为困难、程序极不好读 。,设:程序从100号单元开始;X 、Y 分别占用 116 、118 号单元用 Pentium 机器语言可编出如下程序片段:,C程序设计 第六章 数组 主讲:高利军,第7,汇编语言,符号化了的机器语言 。 完成同样计算的 Pentium 汇编语言程序片段如下: MOVAX,X

4、CMPAX,Y JLS1 SUBAX,15 JMPS2 S1:ADDAX,15 S2:MOVY,AX X DW ? Y DW ? 优点: 与机器语言比较,它易写,易读,易检查,易修改。 缺点:仍然十分烦琐, 依赖于具体的计算机, 程序不便于移植。,C程序设计 第六章 数组 主讲:高利军,第8,高级语言,不依赖于具体计算机,比较接近于自然语言或专业语言的方式描述操作。 使用 C 语言完成同样的计算, 可用如下语句: if ( XY ) Y=X+15; else Y=X-15; 优点: 十分好读, 编码简单, 有通用性, 便于移植。 缺点:执行效率相对较低,C程序设计 第六章 数组 主讲:高利军,

5、第9,程序的执行,尽管汇编语言和高级语言编写程序比机器语言方便得多。但是不幸的是计算机只认识二进制代码(机器语言) 。 必须把用汇编语言或高级语言写的程序(称源程序)翻译成等价的机器语言程序(称目标程序)。 翻译器也是一个程序,并且称汇编语言的翻译器为汇编程序,高级语言的翻译器为编译程序。,C程序设计 第六章 数组 主讲:高利军,第10,汇编语言或高级语言编程序解题的过程,C程序设计 第六章 数组 主讲:高利军,第11,ALGOL是计算机发展史上首批产生的高级语言 ,Algol 60是程序设计语言发展史上的一个里程碑,它标志着程序设计语言成为一门独立的科学学科,并为后来软件自动化及软件可靠性的

6、发展奠定了基础。 Algol 60:1960年1月,图灵奖获得者:艾伦.佩利(Alan J.Perlis)在巴黎举行的有全世界一流软件专家参加的讨论会上,发表了“算法语言Algol 60报告”,确定了程序设计语言Algol 60。1962年,艾伦.佩利又对Algol 60进行了修正。 C语言的原型ALGOL 60语言。(也称为A语言) 1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。 1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。 1970年,美国贝尔实验室的Ken

7、 Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。并且他用B语言写了第一个UNIX操作系统。 而在1973年,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。 为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本可移植的C语言编译程序。即是著名的ANSI C。 1978年由美国电话电报公司(AT /* 字串照原样输出 */ printf (“* BBI *n”); printf (“*n”); ,运行结果: * *

8、BBI * *,例2 main ( ) int a, b, c, sum; a=10; b=20; c=30; sum=a+b+c; printf (“sum=%dn”, sum); /* %d是指按十 进 制整数格式输出 */,运行结果: sum=60,执行过程?,C程序设计 第六章 数组 主讲:高利军,第14,如下是一个完整的 C 程序,该程序由两个编译单元组成,每个编译单元保存在一个源程序文件中。 文件hello.c的内容: 文件startup.c的内容:,#include void hello(void) printf(“Hello!n”); ,extern void hello(vo

9、id) int main(void) hello(); return 0 ,C程序设计 第六章 数组 主讲:高利军,第15,运行该程序的过程是: 使用C 编译程序分别编译两个C源程序文件“hello.c”和“startup.c”,生成两个目标代码模块文件: “hello.obj” 和 “startup.obj” 使用连接程序进行连接,把“hello.obj”和“startup.obj”以及需要的库函数连接到一起,生成可执行的机器语言程序: “startup.exe”; 执行“startup.exe”, 得到的运行结果是在屏幕上显示字符串 Hello,C程序设计 第六章 数组 主讲:高利军,第1

10、6,程序的构成,一个程序应包含以下两方面内容: 对数据的描述。在程序中要指定数据的类型和数据的组织形式,即数据结构(data structure)。 对操作的描述。即操作步骤,也就是算法(algorithm)。 程序=算法+ 数据结构 程序=算法+ 数据结构+ 程序设计方法+ 语言工具和环境。,C程序设计 第六章 数组 主讲:高利军,第17,算法,算法是一个计算过程,具体指明应该进行的操作,描述解决问题的方法和途径,它是程序设计的基础和精髓。 计算机算法:计算机能够执行的算法。 计算机算法可分为两大类: 数值运算算法:求解数值,目前对各种数值运算都有比较成熟的算法可供选用; 非数值运算算法:主

11、要用于事务管理领域。,C程序设计 第六章 数组 主讲:高利军,第18,算法的特点,一个有效的算法具有如下特点 有穷性:一般情况下一个算法应该在有限的时间内终止,不应该是无限的(当然也有例外,比如操作系统)。有穷性往往指在合理的时间范围内 。 确定性:算法中的每一个步骤都应该是确定的,含义是唯一的,不应该是模糊的、模棱两可的。 有效性: 算法中的每一个步骤都应该是有效的,都能够被有效的执行并得到确定的结果,不应该存在无效的操作。 有零个或多个输入:输入可有可无。 一个或多个输出:算法的目的是为了求解,没有输出,算法是没有意义。,C程序设计 第六章 数组 主讲:高利军,第19,设计好算法的目标,可

12、读性:算法主要是为了人的阅读与交流,其次才是机器执行。 健壮性:当输入数据非法时,算法也能适当的作出反应或进行处理,不会产生莫名其妙的错误。 效率与低存储量需求:效率指的是算法执行的时间,对于同一个问题如果有多个算法可以解决,执行时间短的算法效率高。 正确性:算法应当满足具体问题的需求。 “正确”含义,分为四个层次: 程序不含语法错误; 程序对于几组输入数据能够得出满足规格说明的结果; 程序对于精选的典型、苛刻而带有刁难性的几组输入数据能够得出满足规格说明要求的结果; 程序对一切合法的数据数据都能产生满足规格说明要求的结果;,C程序设计 第六章 数组 主讲:高利军,第20,算法的表示方法,自然

13、语言法 对于简单的问题可以用自然语言法,一般都不使用自然语言法。 自然语言是有二义性问题; 例子:张先生对李先生说他的孩子考上大学了。(二义性) 对于分支和循环的算法,自然语言描述不方便。 流程图法 传统流程图 NS流程图 PAD图 伪代码 程序语言,C程序设计 第六章 数组 主讲:高利军,第21,算法自然语言例子,例:求5! 算法一:最原始的方法进行 S1:先求1*2,得到2; S2:将S1得到的乘积2再乘以3,得到结果6; S3:再将S2得到的乘积6乘以4,得24; S4:最后将S3得到的乘积24再乘5,得120,即最后的结果。,C程序设计 第六章 数组 主讲:高利军,第22,用伪代码表示

14、算法求1*2*3*4*5,算法二:设置两个变量,一个变量代表被乘数,一个变量代表乘数。不必设变量存放乘积结果,而直接将每一个步骤的乘积放到被乘数变量中。用循环算法来求结果。 S1:使p=1 S2:使i=2 S3:使p*i,乘积仍放在变量p中,可表示为p*i=p S4:使i的值加1,即i+1=i S5:如果i不大于5,返回重新执行步骤S3以及其后的步骤S4和S5;否则算法结束,最后p中的值就是5!的值,C程序设计 第六章 数组 主讲:高利军,第23,算法的基本操作 1表达式以及给变量赋值 2读(输入) 3写(输出) 基本的控制结构包括: 4顺序控制结构 5分支控制结构 6循环控制结构 7函数调用

15、 8函数返回,C程序设计 第六章 数组 主讲:高利军,第24,用图框表示各种操作,用图形表示算法。直观形象,易于理解。 美国国家标准化协会ANSI规定了一些常用的流程图符号,用流程图表示算法,C程序设计 第六章 数组 主讲:高利军,第25,例2.1:求1*2*3*4*5,开始,1=p,2=i,pi=p,i+1=i,i5,打印p,结束,用流程图表示算法,例2.3:一至3个整数,要求将3个整数按照从小到大的次序输出,C程序设计 第六章 数组 主讲:高利军,第26,例2.3:一至3个整数,要求将3个整数按照从小到大的次序输出,用流程图表示算法,C程序设计 第六章 数组 主讲:高利军,第27,练习,有

16、50个学生,要求将他们之中成绩在80分以上者打印出来。用n表示学生学号,n1代表第一个学生学号,ni代表第i个学生学号。用g表示学生成绩,gi表示第i个学生成绩。 判断2000-2500年中的每一年是否是闰年,将结果输出。闰年条件:1、能被4整除,但不能被100整除的年份都是闰年,例如1996、2004都是闰年;2、能被100整除,又能被400整除的年份是闰年。如1600年、2000都是闰年。,C程序设计 第六章 数组 主讲:高利军,第28,有50个学生,要求将他们之中成绩在80分以上者打印出来。用n表示学生学号,n1代表第一个学生学号,ni代表第i个学生学号。用g表示学生成绩,gi表示第i个学生成绩。,C程序设计 第六章 数组 主讲:高利军,第29,判断2000-2500年中的每一年是否是闰年,将结果输出。闰年条件:1、能被4整除,但不能被100整除的年份都是闰年,例如1996、2004都是闰年;2、能被100整除,又能被400整除的年份是闰年。如1600年、2000都是闰年。,If((year%4=0&year%100!=0)|(year%10

温馨提示

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

评论

0/150

提交评论