第1章 C语言概述_第1页
第1章 C语言概述_第2页
第1章 C语言概述_第3页
第1章 C语言概述_第4页
第1章 C语言概述_第5页
已阅读5页,还剩27页未读 继续免费阅读

下载本文档

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

文档简介

1、1 第一章 C语言概述 2 考试性质:考试考试性质:考试 v学时分配:学时分配: 序号序号课课 程程 内内 容容讲授学时讲授学时实验学时实验学时 第第1章章C语言概述语言概述2 第第2章章C程序设计基础程序设计基础6 第第3章章程序流程控制程序流程控制6 第第4章章数组数组6 第第5章章模块设计模块设计8 第第6章章指针指针10 第第7章章结构体与共用结构体与共用 体体4 第第8章章位运算位运算2 第第9章章文件文件4 合合 计计48 3 成绩评定:成绩评定: v1、平时成绩:、平时成绩:20分分 v由出勤由出勤12分;作业分;作业4分;实验报告分;实验报告 4分三部分组成。分三部分组成。 v

2、2、考核成绩:、考核成绩:80分分 v3、课堂及实验课累计缺勤达总课时、课堂及实验课累计缺勤达总课时 的三分之一者,取消考试资格,无的三分之一者,取消考试资格,无 成绩,下期重修。成绩,下期重修。 4 第1章 C语言概述 v学习目标学习目标 v 了解程序,程序设计的概念。了解程序,程序设计的概念。 v 掌握算法。掌握算法。 v 了解了解C语言的发展历史,掌握语言的发展历史,掌握C语言的特点语言的特点 和结构。和结构。 5 vC语言是广泛流行的一门高级程序设计语语言是广泛流行的一门高级程序设计语 言,它适宜作为系统描述语言。言,它适宜作为系统描述语言。 v本章主要介绍程序和程序设计、算法、本章主

3、要介绍程序和程序设计、算法、C 语言的发展历史、基本特点和语言程序结构;语言的发展历史、基本特点和语言程序结构; 通过本章的学习,对通过本章的学习,对C程序开发设计有较深程序开发设计有较深 入的感性认识,进而强化对计算机语言和程入的感性认识,进而强化对计算机语言和程 序的理解,为进一步学习序的理解,为进一步学习C语言程序设计打语言程序设计打 下基础。下基础。 6 1.1 程序与程序设计语言程序与程序设计语言 v1.1.1 程序程序 v计算机的执行必须有程序的控制。利用计算机计算机的执行必须有程序的控制。利用计算机 解决问题,首先要编写计算机程序。解决问题,首先要编写计算机程序。 v程序是由数据

4、和处理数据的操作组成的。程序是由数据和处理数据的操作组成的。 v数据是操作的对象,操作的目的是对数据进行数据是操作的对象,操作的目的是对数据进行 加工处理,以得到期望的结果。加工处理,以得到期望的结果。 v计算机程序是许多指令的集合,每一条指令让计算机程序是许多指令的集合,每一条指令让 计算机执行完成一个具体的操作,一个程序所计算机执行完成一个具体的操作,一个程序所 规定的操作全部执行完后,就能产生计算结果。规定的操作全部执行完后,就能产生计算结果。 7 一个程序应包括一个程序应包括 v对数据的描述。在程序中要指定数据的类型和数对数据的描述。在程序中要指定数据的类型和数 据的组织形式,即据的组

5、织形式,即数据结构数据结构(data structuredata structure)。)。 v对操作的描述。即操作步骤,也就是对操作的描述。即操作步骤,也就是算法算法 v数据是操作的对象,操作的目的是对数据进行加工数据是操作的对象,操作的目的是对数据进行加工 处理,以便得到结果。处理,以便得到结果。 v因此,著名计算机科学家沃思(因此,著名计算机科学家沃思(Nikiklaus WirthNikiklaus Wirth) 提出一个公式:提出一个公式: 数据结构数据结构+ +算法算法= =程序程序 v通常认为:通常认为: 程序程序= =算法算法+ +数据结构数据结构+ +程序设计方法程序设计方法

6、+ +语言工具和环境语言工具和环境 8 v由此可见,编写出正确的程序是让计算机解决实由此可见,编写出正确的程序是让计算机解决实 际问题的关键。际问题的关键。 v一般编制正确的计算机程序必须具备两个基本条一般编制正确的计算机程序必须具备两个基本条 件:件: v一、是一、是掌握一门计算机高级语言的规则,掌握一门计算机高级语言的规则, v二、是要二、是要掌握解题的方法和步骤。掌握解题的方法和步骤。 9 1.1.2 程序设计语言程序设计语言 v从计算机诞生至今,计算机技术突飞猛进地发展,从计算机诞生至今,计算机技术突飞猛进地发展, 程序设计语言的发展从低级到高级经历了程序设计语言的发展从低级到高级经历

7、了机器语机器语 言、汇编语言、面向过程和面向对象语言言、汇编语言、面向过程和面向对象语言四个阶四个阶 段。段。 10 计算机语言计算机语言 机器语言:机器语言:是用一系列二进制指令代码表示的程序是用一系列二进制指令代码表示的程序 设计语言,每条语句都是二进制编码表示的指令。设计语言,每条语句都是二进制编码表示的指令。 通常每条指令由操作码和操作数两部分构成,用通常每条指令由操作码和操作数两部分构成,用 以完成一个独立的计算机操作。以完成一个独立的计算机操作。 指令的操作码:指令的操作码:用以指示计算机应该执行什么性质的操作;用以指示计算机应该执行什么性质的操作; 指令的操作数:指令的操作数:用

8、来指出操作的对象。它的内容可以是操作数用来指出操作的对象。它的内容可以是操作数 本身,也可以是操作数的地址。本身,也可以是操作数的地址。 操作码操作码 操作数操作数 例如:机器语言程序由下列指令组成:例如:机器语言程序由下列指令组成: 第第1 1条指令条指令: :1011 00001011 0000 0000 0111 - 0000 0111 - B0 07HB0 07H 第第2 2条指令条指令: :0000 0100 0000 0100 0000 1010 - 0000 1010 - 04 0AH04 0AH 第第3 3条指令条指令: :1111 01001111 0100 - - F4F4

9、 操作码操作码B0B0的含义:的含义:把操作数把操作数07H07H传送给累加器传送给累加器ALAL。 操作码操作码0404的含义:的含义:把累加器把累加器ALAL的内容与后面的操作数的内容与后面的操作数 0AH0AH相加后存入相加后存入ALAL。 操作码操作码F4F4的含义:的含义:停机停机 机器语言优点:机器语言优点:计算机能直接识别和执行、运行速计算机能直接识别和执行、运行速 度快、占用内存少。度快、占用内存少。 机器语言缺点:机器语言缺点:难学、难记、难阅读和修改。难学、难记、难阅读和修改。 不同机型的机器语言不能通用。不同机型的机器语言不能通用。 指令指令 11 计算机汇编语言计算机汇

10、编语言 汇编语言:汇编语言:是一种和机器语言一一对应的符号化的是一种和机器语言一一对应的符号化的 语言,由机器语言符号化而来,用助记符和符号地址语言,由机器语言符号化而来,用助记符和符号地址 来表示指令。(它解决机器语言难记忆、编程不方便来表示指令。(它解决机器语言难记忆、编程不方便 的问题。如:用的问题。如:用ADDADD表示加法,表示加法,MOVEMOVE表示传送。表示传送。 ) 例如:机器语言程序表示:例如:机器语言程序表示: 汇编语言程序表示:汇编语言程序表示: B0 07H - MOV AL 07B0 07H - MOV AL 07 04 0AH - ADD AL 1004 0AH

11、- ADD AL 10 F4 - HLTF4 - HLT 操作码操作码B0B0的含义:的含义:把操作数把操作数07H07H传送给累加器传送给累加器ALAL。 操作码操作码0404的含义:的含义:把累加器把累加器ALAL的内容与后面的操作数的内容与后面的操作数 0AH0AH相加后存入相加后存入ALAL。 操作码操作码F4F4的含义:的含义:停机停机 汇编语言优点:汇编语言优点:较直观、易懂、易用、执行速度较直观、易懂、易用、执行速度 比比高级语言快,占用内存空间少。高级语言快,占用内存空间少。 汇编语言缺点:汇编语言缺点:汇编语言源程序需要通过汇编程汇编语言源程序需要通过汇编程 序翻译成机器语言

12、程序后才能执行。各种机器不序翻译成机器语言程序后才能执行。各种机器不 通用通用。 汇编语言汇编语言 源程序源程序 机器语言机器语言 (目标程序)(目标程序) 执行执行 汇编程序汇编程序 汇编汇编 12 计算机高级语言计算机高级语言 高级语言:高级语言:是一种与硬件结构及指令系统无关,表是一种与硬件结构及指令系统无关,表 达方式较接近自然语言的程序设计语言。达方式较接近自然语言的程序设计语言。如:如: FORTRAN FORTRAN 、PASCALPASCAL、C C 、BASICBASIC、Visual BASICVisual BASIC、 Visual C+Visual C+、Visual

13、FoxProVisual FoxPro、JavaJava等。等。 优点:优点:描述问题能力强,通用性、可读性、可维护性描述问题能力强,通用性、可读性、可维护性 都较好。都较好。 缺点:缺点:1 1、编制访问硬件资源的系统软件较难。、编制访问硬件资源的系统软件较难。 2 2、执行速度较慢,高级语言编写的源程序计算、执行速度较慢,高级语言编写的源程序计算 机不能直接识别,需要通过机不能直接识别,需要通过“语言处理程序语言处理程序”翻译成翻译成 机器语言(目标程序)。机器语言(目标程序)。 13 v每一种高级语言都有与其相应的编译程序。在每一种高级语言都有与其相应的编译程序。在 计算机内运行编译程序

14、,才能运行相应的高级计算机内运行编译程序,才能运行相应的高级 语言所编写的源程序。翻译方法有三种:语言所编写的源程序。翻译方法有三种:解释解释 执行执行、编译执行编译执行、先编译后解释先编译后解释。 v第一种解释执行方式是通过语言解释程序将源第一种解释执行方式是通过语言解释程序将源 程序解释翻译一句,执行一句。最具有代表性程序解释翻译一句,执行一句。最具有代表性 的是的是BASIC,JavaScript,VBScript, PHP,ASP ,这些语言的共同特点是运行速,这些语言的共同特点是运行速 度慢,但简单。度慢,但简单。 14 v第二种编译执行方式是通过编译程序将源程序编第二种编译执行方式

15、是通过编译程序将源程序编 译成二进制目标代码程序后,最后执行目标代码译成二进制目标代码程序后,最后执行目标代码 程序。显然,后者程序执行效率高、速度快,并程序。显然,后者程序执行效率高、速度快,并 且能够脱离语言环境独立运行。且能够脱离语言环境独立运行。 v第三种先编译后解释是演变出了一种新类型的语第三种先编译后解释是演变出了一种新类型的语 言,言,Java和和C#语言都是先编译后解释的。语言都是先编译后解释的。 15 计算机面向对象语言计算机面向对象语言 v面向对象语言比面向过程语言更接近于自然语言。面向对象语言比面向过程语言更接近于自然语言。 程序员设计程序时,基本避开程序员设计程序时,基

16、本避开“怎么做怎么做”的解题过的解题过 程,而是更多地考虑计算机程,而是更多地考虑计算机“做什么做什么”,计算机就,计算机就 会完成具体的解题过程。面向对象语言一般是在面会完成具体的解题过程。面向对象语言一般是在面 向过程的计算机语言上发展起来的。如,向过程的计算机语言上发展起来的。如,C+是是 由由C语言发展而来的。语言发展而来的。 v程序设计技术是随着编程语言的发展而发展的,编程序设计技术是随着编程语言的发展而发展的,编 程语言的发展趋于相互同化,往往彼此相似,所以程语言的发展趋于相互同化,往往彼此相似,所以 熟练掌握一种语言后,再学其它语言就不太难了。熟练掌握一种语言后,再学其它语言就不

17、太难了。 16 1.1.3 程序设计程序设计 在计算机科学中,把解决问题的方法、步在计算机科学中,把解决问题的方法、步 骤描述出来,这个描述的过程就是程序设计。骤描述出来,这个描述的过程就是程序设计。 程序设计的一般步骤如下:程序设计的一般步骤如下: 1. 确定数据结构确定数据结构 2. 确定算法确定算法 3. 编写程序编写程序 4. 程序调试程序调试 5. 整理源程序并总结资料整理源程序并总结资料 17 1.1.4 结构化程序及设计步骤结构化程序及设计步骤 三种基本结构三种基本结构 : 1. 顺序结构顺序结构 2. 选择结构选择结构 3. 循环结构循环结构 18 1.2 算法概述算法概述 1

18、.2.1 算法的含义算法的含义 算法(算法(Algorithm),通俗地说,是一项工),通俗地说,是一项工 作如何被完成的步骤,即算法是指解决问题的作如何被完成的步骤,即算法是指解决问题的 方法和步骤。方法和步骤。在生活中,人们到银行取钱的过程就是一在生活中,人们到银行取钱的过程就是一 个算法,其步骤如下:个算法,其步骤如下: 带上存折去银行;带上存折去银行; 填写取款单并到相应窗口排队;填写取款单并到相应窗口排队; 将存折和取款单递给银行职员;将存折和取款单递给银行职员; 银行职员办理取款事宜;银行职员办理取款事宜; 拿到钱并离开银行;拿到钱并离开银行; 19 v在计算机领域,算法就是用计算

19、机解决数值计算在计算机领域,算法就是用计算机解决数值计算 或非数值计算问题的方法。或非数值计算问题的方法。 v例例1-1 设有两个杯子设有两个杯子A和和B,分别装满酒和醋,分别装满酒和醋, 要求将它们互换。要求将它们互换。 vS1:CA vS2:AB vS3:BC 20 例例1-2 从从10 个数中找出最大数,存入个数中找出最大数,存入max中。中。 S1:i=1, 令 max 等于第一个数; S2:i=i+1; S3:将 max 与第 i 个数进行比较,若前者小于后者, 将修正 max 为第 i 个数;否则进行 S4; S4:若 i 10,则转到 S2;否则输出 max 并结束。 v例例1-

20、3 求求1100的和。的和。 v例例1-4 求求N! 21 1. 衡量算法步骤优劣的标准衡量算法步骤优劣的标准 一个算法步骤是否优劣的标准主要有以下三个方面。一个算法步骤是否优劣的标准主要有以下三个方面。 思路:清晰、正确;思路:清晰、正确; 过程:简单、明了、扼要;过程:简单、明了、扼要; 算法:合适。算法:合适。 例例1-5 求求1+2+3+100 算法算法1: 1+2=3,3+3=6,6+4=10, 4851+99=4950,4950+100=5050 算法算法2: 100+(1+99)+(2+98)+(49+51)+50=100+ 49100+50=5050 相对而言,算法相对而言,算

21、法2简洁明了、易算。简洁明了、易算。 22 2. 算法分类算法分类 数值运算数值运算:求数值的解,如求解方程的根,求函:求数值的解,如求解方程的根,求函 数的定积分等。数的定积分等。 这类算法研究较深入、成熟,如数学程序库中的这类算法研究较深入、成熟,如数学程序库中的 有关数学问题的求解,已编制成了标准的子程序有关数学问题的求解,已编制成了标准的子程序 供人们使用。供人们使用。 非数值运算非数值运算:目前使用的范围广泛,如办公自动:目前使用的范围广泛,如办公自动 化处理、图书情报检索等。化处理、图书情报检索等。 23 3.学习算法的意义学习算法的意义 算法思想是现代人应具备的一种数学素养,算法

22、思想是现代人应具备的一种数学素养,掌握掌握 算法的基本思想、基本特征,能够发展学生有条算法的基本思想、基本特征,能够发展学生有条 理的思考与表达的能力、可以发展学生逻辑思维理的思考与表达的能力、可以发展学生逻辑思维 的能力。的能力。 24 1.2.2 算法的特性算法的特性 确定性:确定性:每一种算法必须要有确切的定义。算法中的每每一种算法必须要有确切的定义。算法中的每 一个步骤都应该是确定的,不应使不同的编程者对算一个步骤都应该是确定的,不应使不同的编程者对算 法中的描述产生不同的理解;法中的描述产生不同的理解; 有穷性:有穷性:算法是一组有穷的规则,它规定了解决某一特算法是一组有穷的规则,它

23、规定了解决某一特 定类型问题的一系列运算。就是说,算法中的步骤应定类型问题的一系列运算。就是说,算法中的步骤应 该是有限的,执行有穷步运算之后终止,否则计算机该是有限的,执行有穷步运算之后终止,否则计算机 就会永远无休止地执行程序;就会永远无休止地执行程序; 有效性:有效性:算法中的每一个步骤都应该被有效地执行,并算法中的每一个步骤都应该被有效地执行,并 应能得到一个明确的结果应能得到一个明确的结果, 例如,例如,b=0时,时,a/b是不是不 能有效执行的;能有效执行的; 输入:输入:算法开始前给出的量,可有零个或多个输入;算法开始前给出的量,可有零个或多个输入; 输出:输出:一个算法产生一个

24、或多个输出,输出是同输入有一个算法产生一个或多个输出,输出是同输入有 某种特定关系的量;某种特定关系的量; 25 1.2.3 算法的表示算法的表示 1.自然语言自然语言 自然语言是指人们日常使用的语言,可以是英文、自然语言是指人们日常使用的语言,可以是英文、 中文或中英文结合。中文或中英文结合。 优点:通俗易懂。优点:通俗易懂。 缺点:文字冗长,易出现歧义性。缺点:文字冗长,易出现歧义性。 2.流程图流程图 用图形表示算法,直观形象,易于理解。流程图用图形表示算法,直观形象,易于理解。流程图 是用一些图框来表示各种操作。美国国家标准化是用一些图框来表示各种操作。美国国家标准化 协会协会ANSI

25、规定了一些常用的流程图符号,如图规定了一些常用的流程图符号,如图 1-2所示。所示。 26 起止框 处理框 判断框 流程线 连接点 图1-2 流程图符号 x0 输出x输出-x YN 图1-3 条件判断示意图 27 3.N-S图图 顺序结构顺序结构 选择结构选择结构 循环结构循环结构 如图如图1-4所示。所示。A和和B两个框表示了顺序结构。两个框表示了顺序结构。 p 成立成立不成立 AB 当P成立 A A 直到P成立 A B 图1-4 顺序结构 图1-5选择结构 图1-6 当型循环 图1-7 直到型循环 28 1.3 C语言概况语言概况 v1987年美国标准化协会指定了年美国标准化协会指定了C语

26、语 言标准言标准“ANSI C”,即现在流行的,即现在流行的C语语 言。自言。自1972年投入使用之后,年投入使用之后,C语言语言 成为当今最为广泛使用的程序设计语言成为当今最为广泛使用的程序设计语言 之一。之一。C语言的应用领域主要有操作系语言的应用领域主要有操作系 统的设计与实现,工业控制,图形图像统的设计与实现,工业控制,图形图像 处理,教学语言等。处理,教学语言等。 29 1.3.2 C语言的特点语言的特点 vC语言是具有低级语言功能的高级语言语言是具有低级语言功能的高级语言 vC语言简洁、紧凑,使用方便、灵活语言简洁、紧凑,使用方便、灵活 v运算符丰富,表达式能力强运算符丰富,表达式

27、能力强 v数据结构丰富,便于数据的描述与存储数据结构丰富,便于数据的描述与存储 vC语言是结构化、模块化的编程语言语言是结构化、模块化的编程语言 vC语言程序中,可使用宏定义编译预处理语句、条件语言程序中,可使用宏定义编译预处理语句、条件 编译预处理语句。编译预处理语句。 v可移植性好可移植性好 vC语言也存在一些不足之处,例如运算符及其优先级语言也存在一些不足之处,例如运算符及其优先级 过多、语法定义不严格等,对于初学者有一定的困难。过多、语法定义不严格等,对于初学者有一定的困难。 30 1.3.3 简单的简单的C语言程序语言程序 一个完整的语言程序由一个或多个具有相对独立 功能的程序模块组

28、成,这样的程序模块称为“函 数”。因此,函数是程序的基本单位。 /* e1_1.c * 作者:XXX 创建日期:2008-3-13 描述:用来打印输出“Hello World” * */ #include void main() printf(Hello World!n); 运行结果为:运行结果为: Hello, World! 31 可以看出:可以看出: C程序由函数组成程序由函数组成 每个函数的定义分为两部分:函数说明和函数体每个函数的定义分为两部分:函数说明和函数体 C程序的书写格式自由,一行内可以写几条语句,一程序的书写格式自由,一行内可以写几条语句,一 条语句也可以写在多行上,每条语句后必须以条语句也可以写在多

温馨提示

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

评论

0/150

提交评论