C语言程序设计基础
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
ALGOL 60语言
将CPL语 言煮干, 提炼出它 的精华
CPL语言 BCPL语言 B语言
1963年,剑桥大学 Combined Programming Language 1967年,剑桥大学的Matin Richards对CPL语言进行了简化 1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改 1973年,B语言也给人“煮” 了一下,美国贝尔实验室的 D.M.RITCHIE在B语言的基础 上最终设计出了一种新的语言
第 二 章 程 序 设 计 基 础
C 语 言 程 序 设 计 教 程 第 二 版
2.3
C语言与C++、Java和C#之间的关系
C
面向过程,市场份额逐渐减少,仅在小型的且追求运行效 率的软件和嵌入式软件开发方面有一定空间 面向对象,市场份额较大,属C语言的升级版,完全兼容C 三足鼎立之势,其他语言仅能在其专属领 语言的语法。在很多场合,它俩也被放在一起,称为 域里得以发挥作用。同时, C++,Java和C# C/C++。这个“++”加上后,便是大名鼎鼎的“面向对象 语言也在不断地完善、扩充自身,极力挤 (Object Oriented)”。
Java,还有点超越Java的语言。
C 语 言 程 序 设 计 教 程 第 二 版
2.4
C语言程序的基本结构
了解了C语言的基本特性及其应用以后,接下来就来看看C C语言的预处理命令都是以“ #” 在C程序中,注释由“ /*”开始,由 语言程序是什么样子。一个 C 语言程序可以是非常简单的, 号开头。stdio.h是一个头文件 “*/”结束,可以实现多行注释 。 也可以是特别复杂的,这取决于程序所要实现的功能。我们 在C++程序中也可使用“//”进行单 先来认识一个最为简单的 C程序。 // 注释信息 行注释。例如: 【例1】 最简单的C程序。
目前,C/C++、Java和C#语言即将形成
C++
Java
压其他语言的空间。在这种情况下,C语言 面向对象,市场份额较大,1995年Sun公司出品,以纯面向 的空间变得越来越小,那么为什么还要学 对象、平台无关和易学易用而著称。它全面照搬了C++的语 习C语言呢? 法,并去掉了其不常用和不成功的部分,化繁为简,迅速
C 语 言 程 序 设 计 教 程 第 二 版
第2章:C语言程序设计基础
学习的意义
从本章开始我们正式进入C语言程序设计的学习,也许大 家会问:为什么我们要学习C语言呢? 理由1:因为C语言流行. 理由2:因为C语言考研时必考。 理由3: 因为C语言在各种程序考试中首当其中。 别急!让我想 理由4:因为它是必修课,是老师逼的,不学不能拿学分 想…… …… 理由n:……
第 二 章 程 序 设 计 基 础
C 语 言 程 序 设 计 教 程 第 二 版
C语言的应用
C语言的应用非常广,也非常多,在此仅列出其中的一 些应用: C语言可以用来开发许多系统软件和大型应用软件。如UNIX, LINUX等操作系统。 在软件需要对硬件进行操作的场合,用C语言明显优于其它 高级语言。例如,各种硬件设备的驱动程序(象显卡驱动程 序、打印机驱动程序等)一般都是用C语言编写的。 在图形、图像及动画处理方面,C语言具有绝对优势,特别 是游戏软件的开发主要就是使用C语言。 随着计算机网络飞速发展,特别是Internet的出现,计算 机通信就显得尤其重要,而通信程序的编制首选就是C语言。 C语言适用于多种操作系统,象WINDOWS、UNIX、LINUX等绝 大多数操作系统都支持C语言,其它高级语言未必能得到支持, 所以在某个特定操作系统下运行的软件用C语言编制是最佳选 择。
C 语 言 程 序 设 计 教 程 第 二 版
学习的意义
另外,本章我们将带领大家来实际感受一下C语言程序是 一个什么样子,它的结构特点是什么,这是我们进行C语言程 序设计必须遵循的规范。 最后,我们应该掌握的是如何来编写和调试一个C语言程 序,这是我们每一个C语言程序员所必须具备的基本功。
学习目标
第 二 章 程 序 设 计 基 础
了解历史…… 抓住现在…… 展望未来……
C 语 言 程 序 设 计 教 程 第 二 版
2.1 程序设计语言的发展及其特点
程序设计是数据被加工的过程 机 汇 器 编 语 语 言 言 冯.诺依曼结构: 高 级 语 言 面向过程
面向对象
第 二 章 程 序 设 计 基 础
/* This is the first C program */ 注释信息 C 程序中允许插入若干行空行,它不影响程 #include <stdio.h> 预处理命令 printf是C语言的内部函数名,因为它后面跟着 ( ),其功 序的功能,同注释一样。为了程序的易读性,
第 二 章 程 序 设 计 基 础
了解程序设计语言的发展及其特点; 掌握机器语言、汇编语言和高级语言的差异; 了解C语言的发展历史及特点和应用; 掌握C语言程序的基本结构; 掌握编写C程序的基本步骤和调试过程。
第 二 章 程 序 设 计 基 础
C 语 言 程 序 设 计 教 程 第 二 版
学习内容
程序设计语言的发展及其特点 C语言的发展及其特点和应用 C语言程序的基本结构 编制C语言程序的基本步骤
C 语 言 程 序 设 计 教 程 第 二 版
2.2 C语言的发展及其特点、应用
52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 Ada
Modula-2
Pascal
ALGOL60 ALGOL68 CPL BCPL B
第 二 章 程 序 设 计 基 础
C 语 言 程 序 设 计 教 程 第 二 版
C语言版本
C语言有不同的版本,常用的编译软件有Microsoft Visual C++、Borland C++、Borland C++ Builder、Watcom C++、GNU DJGPP C++、Lccwin32 C、Microsoft C、 Turbo C、High C等等。 本课程的内容将基于ANSI C进行展开,主要是针对 Visual C++ 6.0,同时也兼顾Borland C++ 3.1和Turbo C 2.0。
第 二 章 程 序 设 计 基 础
博得了程序员们的认可,获得了越来越多的支持。不管是 桌面应用,还是网络服务、嵌入式应用都可用它进行高效 C语言可以说是C++ 、Java和C#语言的基础,还有很多专 的开发。但如果要做底层的、占用资源少的程序,Java语 用语言也学习和借鉴了 C语言,比如进行Web开发的PHP语 言就无能为力了。
言,做仿真的MATLAB的内嵌语言等。学好C语言对以后再 面向对象,市场份额较大,2000年Microsoft 公司出品, 学习其他语言大有帮助。计算机科学发展很快,若干年以 读作C Sharp 。戏称其为C++++ ,它也照搬了C/C++的语 C# 后,什么技术、什么语言尽显风流无法预言。唯有掌握最 法 ,诞生在Java语言之后,所以它能把Java语言的成功之 处吸收进来,把不成功之处抛弃,打造了一个似 基础的,才能以不变应万变,并立于不败之地 。 Java而非
运算器 中央处理器CPU CPU指令系统,由0、 1序列构成的指令码组成 客观世界可以分类,对象是类的实例 面向机器的语言 控制器 用助记符号描述的指令系统 如:10000000 加 主机: 对象是数据和方法的封装 程序设计关键是定义类,并由类派生对象 如 ADD A, B 10010000 减 对象间通过发送和接受消息发生联系 计算机 存储器 I/O设备:键盘、显示器等
Байду номын сангаас
第 二 章 程 序 设 计 基 础
C 语 言 程 序 设 计 教 程 第 二 版
C语言的特点
简洁紧凑、灵活方便 运算符丰富 C语言一共只有30多个关键字,9种控制语句,程序书写 数据结构丰富 C的运算符包含的范围很广泛,共有种34个运算符。C 自由,主要用小写字母表示。它把高级语言的基本结构 C是结构式语言 语言把括号、赋值、强制类型转换等都作为运算符处理。 和语句与低级语言的实用性结合起来。 C语言可以象汇 C的数据类型有:整型、实型、字符型、数组类型、 C 语法限制不太严格、程序设计自由度大 结构式语言的显著特点是代码及数据的分隔化,即程 从而使 C的运算类型极其丰富表达式类型多样化,灵活 编语言一样对位、字节和地址进行操作,而这三者是计 指针类型、结构体类型、联合体类型等。能用来实现各 C 语言允许直接访问物理地址,可以直接对硬件进行操作 序的各个部分除了必要的信息交流外彼此独立。这种结 使用各种运算符可以实现在其它高级语言中难以实现的 一般的高级语言语法检查比较严,能够检查出几乎所 算机最基本的工作单元。 种复杂的数据类型的运算。并引入了指针概念,使程序 C 语言程序生成代码质量高,程序执行效率高 C语言既具有高级语言的功能,又具有低级语言的许 构化方式可使程序层次清晰,便于使用、维护以及调试。 运算(具体见后面的章节)。 有的语法错误。而 C语言允许程序编写者有较大的自由 效率更高。另外 C语言具有强大的图形功能,支持多种 C 语言适用范围大,可移植性好 多功能,能够象汇编语言一样对位、字节和地址进行操 C语言是以函数形式提供给用户的,这些函数可方便的 度。 显示器和驱动器。且计算功能、逻辑判断功能强大。 具有预处理功能 作 , 调用,并具有多种循环、条件语句控制程序流向,从而 一般只比汇编程序生成的目标代码效率低 10~20%。 C而这三者是计算机最基本的工作单元,可以用来写 语言有一个突出的优点就是适合于多种操作系统, 具有递归功能 系统软件。 使程序完全结构化。 如DOS、WINDOWS、UNIX。也适用于多种机型,在一种计 算机上编写的程序,无须修改或经过很少的修改,就可 C语言提供了预处理器,程序可以利用宏指令提高可 以在其它类型的计算机上运行。 读性和可移植性。 C语言允许递归调用,在解决递归问题上具有独特优 势。
C
Smalltalk 80 C++ Java
Simula 67
第 二 章 程 序 设 计 基 础
BASIC
FORTRAN PL/1 COBOL LISP
ANSI-BASIC QBASIC VB FORTRAN90 FORTRAN77
PROLOG
C 语 言 程 序 设 计 教 程 第 二 版
C语言发展史
第 二 章 程 序 设 计 基 础
C语言
BCPL的第二个 字母作为这种 语言的名字, 这就是C语言
C 语 言 程 序 设 计 教 程 第 二 版
C语言发展史
产生背景 产生过程 时间: 1972~1973 地点: 美国贝尔实验室 目的: UNIX操作系统 设计人: Ken.Thompson和Dennis.M.Ritchie C标准 标准C: K&R合著《The C Programming Language》 ANSI C: 1983年 87 ANSI C: 1987年 1990年国际标准的ANSI C
这些理由都只是从表面上来回答,其实要真正来回答这一问题, 我们有必要了解程序设计语言的发展历史及其特点,知道C语言是属 于那种类型的语言;C语言是如何产生和发展的,C语言的特点有哪 些,它应用在哪些方面等,这样我们就可以做到学习目的明确,才 能有意识地去学好C语言程序设计。
第 二 章 程 序 设 计 基 础
能是将“Hello C Language!\n”显示在计算机的屏幕上 无返回值 在编写C程序时,根据需要可插入一定的空行 void main (双引号和 ( ) \n不显示) 无参数、无返回值的主函数 C语言规定:语句以分号结束 主函数名 { 函数开始 main是主函数名,一个C语言程序有且仅有 内部函数名 回车换行符 一个main函数。C程序执行时就是从 main函 函数体 printf ("Hello C Language!\n"); 函数调用 {”开始,到“}”结 数开始,具体讲就是从“ 语句结束标志 束。 参数 } 函数结束
将CPL语 言煮干, 提炼出它 的精华
CPL语言 BCPL语言 B语言
1963年,剑桥大学 Combined Programming Language 1967年,剑桥大学的Matin Richards对CPL语言进行了简化 1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改 1973年,B语言也给人“煮” 了一下,美国贝尔实验室的 D.M.RITCHIE在B语言的基础 上最终设计出了一种新的语言
第 二 章 程 序 设 计 基 础
C 语 言 程 序 设 计 教 程 第 二 版
2.3
C语言与C++、Java和C#之间的关系
C
面向过程,市场份额逐渐减少,仅在小型的且追求运行效 率的软件和嵌入式软件开发方面有一定空间 面向对象,市场份额较大,属C语言的升级版,完全兼容C 三足鼎立之势,其他语言仅能在其专属领 语言的语法。在很多场合,它俩也被放在一起,称为 域里得以发挥作用。同时, C++,Java和C# C/C++。这个“++”加上后,便是大名鼎鼎的“面向对象 语言也在不断地完善、扩充自身,极力挤 (Object Oriented)”。
Java,还有点超越Java的语言。
C 语 言 程 序 设 计 教 程 第 二 版
2.4
C语言程序的基本结构
了解了C语言的基本特性及其应用以后,接下来就来看看C C语言的预处理命令都是以“ #” 在C程序中,注释由“ /*”开始,由 语言程序是什么样子。一个 C 语言程序可以是非常简单的, 号开头。stdio.h是一个头文件 “*/”结束,可以实现多行注释 。 也可以是特别复杂的,这取决于程序所要实现的功能。我们 在C++程序中也可使用“//”进行单 先来认识一个最为简单的 C程序。 // 注释信息 行注释。例如: 【例1】 最简单的C程序。
目前,C/C++、Java和C#语言即将形成
C++
Java
压其他语言的空间。在这种情况下,C语言 面向对象,市场份额较大,1995年Sun公司出品,以纯面向 的空间变得越来越小,那么为什么还要学 对象、平台无关和易学易用而著称。它全面照搬了C++的语 习C语言呢? 法,并去掉了其不常用和不成功的部分,化繁为简,迅速
C 语 言 程 序 设 计 教 程 第 二 版
第2章:C语言程序设计基础
学习的意义
从本章开始我们正式进入C语言程序设计的学习,也许大 家会问:为什么我们要学习C语言呢? 理由1:因为C语言流行. 理由2:因为C语言考研时必考。 理由3: 因为C语言在各种程序考试中首当其中。 别急!让我想 理由4:因为它是必修课,是老师逼的,不学不能拿学分 想…… …… 理由n:……
第 二 章 程 序 设 计 基 础
C 语 言 程 序 设 计 教 程 第 二 版
C语言的应用
C语言的应用非常广,也非常多,在此仅列出其中的一 些应用: C语言可以用来开发许多系统软件和大型应用软件。如UNIX, LINUX等操作系统。 在软件需要对硬件进行操作的场合,用C语言明显优于其它 高级语言。例如,各种硬件设备的驱动程序(象显卡驱动程 序、打印机驱动程序等)一般都是用C语言编写的。 在图形、图像及动画处理方面,C语言具有绝对优势,特别 是游戏软件的开发主要就是使用C语言。 随着计算机网络飞速发展,特别是Internet的出现,计算 机通信就显得尤其重要,而通信程序的编制首选就是C语言。 C语言适用于多种操作系统,象WINDOWS、UNIX、LINUX等绝 大多数操作系统都支持C语言,其它高级语言未必能得到支持, 所以在某个特定操作系统下运行的软件用C语言编制是最佳选 择。
C 语 言 程 序 设 计 教 程 第 二 版
学习的意义
另外,本章我们将带领大家来实际感受一下C语言程序是 一个什么样子,它的结构特点是什么,这是我们进行C语言程 序设计必须遵循的规范。 最后,我们应该掌握的是如何来编写和调试一个C语言程 序,这是我们每一个C语言程序员所必须具备的基本功。
学习目标
第 二 章 程 序 设 计 基 础
了解历史…… 抓住现在…… 展望未来……
C 语 言 程 序 设 计 教 程 第 二 版
2.1 程序设计语言的发展及其特点
程序设计是数据被加工的过程 机 汇 器 编 语 语 言 言 冯.诺依曼结构: 高 级 语 言 面向过程
面向对象
第 二 章 程 序 设 计 基 础
/* This is the first C program */ 注释信息 C 程序中允许插入若干行空行,它不影响程 #include <stdio.h> 预处理命令 printf是C语言的内部函数名,因为它后面跟着 ( ),其功 序的功能,同注释一样。为了程序的易读性,
第 二 章 程 序 设 计 基 础
了解程序设计语言的发展及其特点; 掌握机器语言、汇编语言和高级语言的差异; 了解C语言的发展历史及特点和应用; 掌握C语言程序的基本结构; 掌握编写C程序的基本步骤和调试过程。
第 二 章 程 序 设 计 基 础
C 语 言 程 序 设 计 教 程 第 二 版
学习内容
程序设计语言的发展及其特点 C语言的发展及其特点和应用 C语言程序的基本结构 编制C语言程序的基本步骤
C 语 言 程 序 设 计 教 程 第 二 版
2.2 C语言的发展及其特点、应用
52 54 56 58 60 62 64 66 68 70 72 74 76 78 80 82 84 86 88 90 92 94 96 Ada
Modula-2
Pascal
ALGOL60 ALGOL68 CPL BCPL B
第 二 章 程 序 设 计 基 础
C 语 言 程 序 设 计 教 程 第 二 版
C语言版本
C语言有不同的版本,常用的编译软件有Microsoft Visual C++、Borland C++、Borland C++ Builder、Watcom C++、GNU DJGPP C++、Lccwin32 C、Microsoft C、 Turbo C、High C等等。 本课程的内容将基于ANSI C进行展开,主要是针对 Visual C++ 6.0,同时也兼顾Borland C++ 3.1和Turbo C 2.0。
第 二 章 程 序 设 计 基 础
博得了程序员们的认可,获得了越来越多的支持。不管是 桌面应用,还是网络服务、嵌入式应用都可用它进行高效 C语言可以说是C++ 、Java和C#语言的基础,还有很多专 的开发。但如果要做底层的、占用资源少的程序,Java语 用语言也学习和借鉴了 C语言,比如进行Web开发的PHP语 言就无能为力了。
言,做仿真的MATLAB的内嵌语言等。学好C语言对以后再 面向对象,市场份额较大,2000年Microsoft 公司出品, 学习其他语言大有帮助。计算机科学发展很快,若干年以 读作C Sharp 。戏称其为C++++ ,它也照搬了C/C++的语 C# 后,什么技术、什么语言尽显风流无法预言。唯有掌握最 法 ,诞生在Java语言之后,所以它能把Java语言的成功之 处吸收进来,把不成功之处抛弃,打造了一个似 基础的,才能以不变应万变,并立于不败之地 。 Java而非
运算器 中央处理器CPU CPU指令系统,由0、 1序列构成的指令码组成 客观世界可以分类,对象是类的实例 面向机器的语言 控制器 用助记符号描述的指令系统 如:10000000 加 主机: 对象是数据和方法的封装 程序设计关键是定义类,并由类派生对象 如 ADD A, B 10010000 减 对象间通过发送和接受消息发生联系 计算机 存储器 I/O设备:键盘、显示器等
Байду номын сангаас
第 二 章 程 序 设 计 基 础
C 语 言 程 序 设 计 教 程 第 二 版
C语言的特点
简洁紧凑、灵活方便 运算符丰富 C语言一共只有30多个关键字,9种控制语句,程序书写 数据结构丰富 C的运算符包含的范围很广泛,共有种34个运算符。C 自由,主要用小写字母表示。它把高级语言的基本结构 C是结构式语言 语言把括号、赋值、强制类型转换等都作为运算符处理。 和语句与低级语言的实用性结合起来。 C语言可以象汇 C的数据类型有:整型、实型、字符型、数组类型、 C 语法限制不太严格、程序设计自由度大 结构式语言的显著特点是代码及数据的分隔化,即程 从而使 C的运算类型极其丰富表达式类型多样化,灵活 编语言一样对位、字节和地址进行操作,而这三者是计 指针类型、结构体类型、联合体类型等。能用来实现各 C 语言允许直接访问物理地址,可以直接对硬件进行操作 序的各个部分除了必要的信息交流外彼此独立。这种结 使用各种运算符可以实现在其它高级语言中难以实现的 一般的高级语言语法检查比较严,能够检查出几乎所 算机最基本的工作单元。 种复杂的数据类型的运算。并引入了指针概念,使程序 C 语言程序生成代码质量高,程序执行效率高 C语言既具有高级语言的功能,又具有低级语言的许 构化方式可使程序层次清晰,便于使用、维护以及调试。 运算(具体见后面的章节)。 有的语法错误。而 C语言允许程序编写者有较大的自由 效率更高。另外 C语言具有强大的图形功能,支持多种 C 语言适用范围大,可移植性好 多功能,能够象汇编语言一样对位、字节和地址进行操 C语言是以函数形式提供给用户的,这些函数可方便的 度。 显示器和驱动器。且计算功能、逻辑判断功能强大。 具有预处理功能 作 , 调用,并具有多种循环、条件语句控制程序流向,从而 一般只比汇编程序生成的目标代码效率低 10~20%。 C而这三者是计算机最基本的工作单元,可以用来写 语言有一个突出的优点就是适合于多种操作系统, 具有递归功能 系统软件。 使程序完全结构化。 如DOS、WINDOWS、UNIX。也适用于多种机型,在一种计 算机上编写的程序,无须修改或经过很少的修改,就可 C语言提供了预处理器,程序可以利用宏指令提高可 以在其它类型的计算机上运行。 读性和可移植性。 C语言允许递归调用,在解决递归问题上具有独特优 势。
C
Smalltalk 80 C++ Java
Simula 67
第 二 章 程 序 设 计 基 础
BASIC
FORTRAN PL/1 COBOL LISP
ANSI-BASIC QBASIC VB FORTRAN90 FORTRAN77
PROLOG
C 语 言 程 序 设 计 教 程 第 二 版
C语言发展史
第 二 章 程 序 设 计 基 础
C语言
BCPL的第二个 字母作为这种 语言的名字, 这就是C语言
C 语 言 程 序 设 计 教 程 第 二 版
C语言发展史
产生背景 产生过程 时间: 1972~1973 地点: 美国贝尔实验室 目的: UNIX操作系统 设计人: Ken.Thompson和Dennis.M.Ritchie C标准 标准C: K&R合著《The C Programming Language》 ANSI C: 1983年 87 ANSI C: 1987年 1990年国际标准的ANSI C
这些理由都只是从表面上来回答,其实要真正来回答这一问题, 我们有必要了解程序设计语言的发展历史及其特点,知道C语言是属 于那种类型的语言;C语言是如何产生和发展的,C语言的特点有哪 些,它应用在哪些方面等,这样我们就可以做到学习目的明确,才 能有意识地去学好C语言程序设计。
第 二 章 程 序 设 计 基 础
能是将“Hello C Language!\n”显示在计算机的屏幕上 无返回值 在编写C程序时,根据需要可插入一定的空行 void main (双引号和 ( ) \n不显示) 无参数、无返回值的主函数 C语言规定:语句以分号结束 主函数名 { 函数开始 main是主函数名,一个C语言程序有且仅有 内部函数名 回车换行符 一个main函数。C程序执行时就是从 main函 函数体 printf ("Hello C Language!\n"); 函数调用 {”开始,到“}”结 数开始,具体讲就是从“ 语句结束标志 束。 参数 } 函数结束