




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第二讲 C语言概述,2,第二讲 C语言概述,计算机程序和语言 C语言的简史 为什么学习和使用C语言 程序的开发过程 C语言的编程环境 C语言程序的基本结构 C语言的字符集和关键字 程序的测试与调试,C语言程序设计,3,计算机程序和语言,计算机程序 确切告诉计算机如何完成某项任务的指令序列。 计算机语言 用来编写程序 人和计算机之间进行信息交流,计算机基础概述,#include #include void main() float a,b,c,p,disc,q,x1,x2; scanf(%f%f%f, ,4,机器语言,数字形式的指令码就是机器语言(Machine language) 用机器语言编
2、写的程序能够被计算机直接理解和执行 但是,编写程序非常费力 例如,编写程序完成两个数相加的任务需要以下几步 把地址为20的内存单元中的数复制到寄存器1; 把地址为24的内存单元中的数复制到寄存器2; 把寄存器2中的数与寄存器1中的数相加,结果保留在寄存器1中; 把寄存器1中的数复制到地址为28的内存单元中。,计算机基础概述,0110001000010100 0110001100011000 0000110000000011 0111001100011100,指令码,操作数,5,汇编语言,符号化的指令码就是汇编语言(Assembly language) 例如,完成两个数相加的汇编语言程序 汇编语
3、言程序必须被翻译成机器语言程序才能被执行 汇编程序(Assembler)充当“翻译” 用汇编语言编写程序还是比较费力,计算机基础概述,ldreg n1, r1把变量n1的值复制到寄存器1(r1); ldreg n2, r2把变量n2的值复制到寄存器2(r2); add r1, r2把r2中的数与r1中的数相加,结果保留在r1中; store r1, sum把r1中的数复制到变量sum。,6,高级语言,高级语言(High-level language)使用数学符号和类似英语的单词 例如,完成两个数相加的C语言程序 从多方面提高了编程效率 不必考虑CPU的指令集 不必考虑CPU实现特定任务的精确步
4、骤 采用接近人类思考问题的方式去书写程序 高级语言程序必须被翻译成机器语言程序才能被执行 由两种专门的程序来完成:编译器和解释器程序,计算机基础概述,sum = n1 + n2;,7,编译器和解释器,编译器(Compiler) 将程序中所有的语句编译成单独的程序组,并生成机器语言指令,然后存入目标文件中。 生成的可执行文件可以独立执行。 解释器(Interpreter) 在程序运行的同时一次转换一条语句。 因为转换过程和程序运行过程是同时进行的,所以解释的程序比编译的程序运行的慢。,计算机基础概述,8,C语言的简史,C语言的起源 美国贝尔实验室的Dennis Ritchie在1972年开发的
5、用于设计UNIX操作系统 其前身是B语言(Ken Thompson于1970年为第一个UNIX系统开发的语言) C语言的标准 美国国家标准化组织(ANSI)于1983年成立了一个委员会(X3J11),以确定C语言的标准。 该标准(ANSI C)于1989年被正式采用,即C89。 最新的标准是C99标准。 目前,大多数C语言编译器没有完全实现C99的所有修改。,C语言概述,9,为什么学习和使用C语言,C语言的特点 C语言是一种强大而灵活的语言,可以用来编写任意复杂的程序。 C语言简洁、紧凑,使用方便、灵活。 C语言程序效率高、运行速度快。 C语言是可移植的。 C语言很适合结构化程序设计,因而要求
6、用户以功能模块的方式来思考问题。 C语言具有自我扩展能力。,C语言概述,10,为什么学习和使用C语言,C与C+(C加加,see-plus-plus) 贝尔实验室于二十世纪八十年代在C语言的基础上开发的。 C+是C语言的超集,包含了C语言的所有内容(C89),同时增加了面向对象编程方面的内容。 C与Java(爪哇) Sun公司于1995年发布的面向对象编程语言。 Java也是基于C语言的。 C与C#(see-sharp) 微软在2000年6月与.NET平台一同推出。 C#也是从C语言派生的一种面向对象语言。,C语言概述,11,C语言程序的开发过程,一般分成五个步骤 定义程序目标 设计程序 编写代
7、码 编译 运行、测试和调试程序,C语言概述,12,C语言程序的开发过程,定义程序目标 在开始解决问题之前,程序的开发人员必须彻底了解问题是什么,对即将要创建的程序要做的事情有个清晰的认识。 这需要仔细考虑以下问题 程序需要什么信息 程序需要执行哪些计算和操作 程序应该报告什么信息 例如,计算任意一个圆环的面积 提出问题,明确目标 圆环是什么?如何计算面积?需要什么数据?计算精度?,C语言概述,13,C语言程序的开发过程,设计程序 决定程序如何去解决问题。 需要考虑 如何给程序提供必要的数据 程序中如何表示数据 用什么方法来处理数据 程序如何组织 程序怎样报告结果 完成这个程序需要多长时间 应该
8、用一般的概念考虑设计中的问题,而不是考虑具体的代码。,C语言概述,14,C语言程序的开发过程,编写代码 编写代码来实现前面的设计,即用某一门语言来表示程序设计。 需要开发人员熟练掌握该语言的知识。 可以在草稿纸上勾画自己的想法或书写代码,但最终必须将代码输入计算机。 输入代码所采用的机制则取决于具体的编程环境。 一般来说,需要使用文本编辑器(例如Windows的记事本程序)来创建一种文件,称为源文件 源文件包含程序设计的C语言表示形式(称为源程序或源代码),C语言概述,15,C语言程序的开发过程,编译 把C语言源程序转换成机器语言表示的程序。 这种程序可以直接被计算机理解和执行,所以称之为可执
9、行程序,放在可执行文件中。 编译的具体细节取决于使用的编程环境。 C语言分两步完成这一工作:编译和链接。 编译器将源代码转换为目标代码,并存在目标文件中。 链接器将目标代码与其他代码结合起来生成可执行文件。 这种把编译和链接分开来做的方法便于程序的模块化。 可以分别编译程序的各个模块,然后用链接器把编译过的模块结合起来。 这样,如果需要改变一个模块,则不需要重新编译所有其他模块。,C语言概述,16,C语言程序的开发过程,运行、测试和调试程序 运行包含可执行程序的文件,观察运行的结果。 在不同的系统中运行程序的方式可能不同。 例如,Windows的控制台和资源管理器。 应该对程序进行仔细的检查,
10、看程序是否在做该做的事。 比较好的做法是为验证程序的正确性设计一个测试计划。 越早做越好,因为它有助于理清程序员的思路。 程序中的错误被称为bug,调试(Debug)就是要发现并修正错误。,C语言概述,17,C语言的编程环境,开发程序的具体操作取决于使用的编程环境 因为C语言是可移植的,所以它在许多环境中都是可用的。 例如UNIX、Linux、Windows和MS-DOS。 C语言编程环境包括一系列程序。 编辑器 编译器 链接器 运行和调试环境,C语言概述,18,C语言的编程环境,编辑器 使用一个文本编辑器程序输入源代码,并将代码保存在源文件中。 一般,C程序的源文件名称的扩展名是.c 例如w
11、elcometoyou.c和Hello.c。 该名称应该遵循特定的操作系统的命名规则。 例如,MS-DOS要求基本名包含的字符数不能大于8,所以welcometoyou.c不是合法的DOS文件名。 Windows允许长文件名,所以welcometoyou.c是合法的Windows文件名。,C语言概述,19,C语言的编程环境,编译器 编译器接收源文件,生成目标文件,扩展名为.obj或.o。 编译器还会检查输入的程序是否是有效的C语言程序。 如果编译器发现错误,就会报告出错,且不能生成可执行程序。 这时就必须修改错误,然后再编译。 显然,为了能迅速找到错误,理解特定编译器的报错信息是一项有用的技能
12、。,C语言概述,20,C语言的编程环境,链接器 目标代码虽然已经是机器代码,但还不能被执行。 缺少下面两个东西 启动代码:相当于程序和操作系统之间的接口。 库函数的代码:库文件中包含许多函数的目标代码。 链接器的作用就是将这三个元素(目标代码、启动代码和库代码)结合起来,并将它们放在一个文件中,即可执行文件,扩展名为.exe或.out。,C语言概述,21,Windows的C语言编程环境,Windows的C语言编程环境 Windows并不包含C编译器,所以需要获得并安装一个C编译器。 许多现代的编译器都是集成开发环境(IDE)的一部分。 包括编辑器、编译器、链接器 还包括一个符号调试程序在内的运
13、行支持系统。 许多软件厂商都提供了基于Windows的集成开发环境 Microsoft公司的Visual C/C+ Borland公司的C/C+ Builder Metrowerks公司的Code Warrior 目前,大多数IDE把C和C+编译器结合在一起。,C语言概述,22,DOS的C语言编程环境,DOS的C语言编程环境 基于DOS的IDE Borland公司的Turbo C Borland公司的Borland C+ 许多Windows上的IDE也提供了在DOS命令行环境中编程的命令行工具。,C语言概述,23,C语言编程实验环境简介,上机实验环境简介 Windows操作系统 Visual
14、C+ 6.0 举例演示Visual C+ 6.0的基本操作 启动 创建源文件 构建工程(编译、链接) 运行程序,C语言概述,24,C语言程序的基本结构,一个简单的C语言程序 问题:在屏幕上显示一行文字:“Hello World!” 源程序(cw0101.c) 运行结果,C语言快速入门,/* 在屏幕上显示Hello World! */ #include void main() /* 定义主函数 */ printf(Hello World!n); ,Hello World!,25,C语言程序的基本结构,一个简单的C语言程序 程序结构分析 /* */ 多行注释 / 单行注释(C+,C99支持),C语
15、言快速入门,/* 在屏幕上显示Hello World! */ #include void main() /* 定义主函数 */ printf(Hello World!n); ,注释部分 增强程序的可读性。 不被执行。,26,C语言程序的基本结构,一个简单的C语言程序 程序结构分析,C语言快速入门,/* 在屏幕上显示Hello World! */ #include void main() /* 定义主函数 */ printf(Hello World!n); ,#include编译预处理命令 程序中包含某一文件内容。 stdio.h 为标准输入输出头文件。 该文件包含输入输出函数的信息。,27,C
16、语言程序的基本结构,一个简单的C语言程序 程序结构分析 可以使用两种函数: 标准库函数 自定义函数,C语言快速入门,/* 在屏幕上显示Hello World! */ #include void main() /* 定义主函数 */ printf(Hello World!n); ,函数 C程序由函数组成。 一个C程序有且仅有一个主函数(main函数)。,28,C语言程序的基本结构,一个简单的C语言程序 程序结构分析,C语言快速入门,/* 在屏幕上显示Hello World! */ #include void main() /* 定义主函数 */ printf(Hello World!n); ,函
17、数头 说明函数的类型、名称和参数。,29,C语言程序的基本结构,一个简单的C语言程序 程序结构分析,C语言快速入门,/* 在屏幕上显示Hello World! */ #include void main() /* 定义主函数 */ printf(Hello World!n); ,函数体 包括变量说明和可执行语句。,30,C语言程序的基本结构,一个简单的C语言程序 程序结构分析,C语言快速入门,/* 在屏幕上显示Hello World! */ #include void main() /* 定义主函数 */ printf(Hello World!n); ,函数调用语句 格式输出函数printf(
18、 )。 输出“Hello world!”。 “Hello world!”是参数。,Hello World!,31,C语言程序的基本结构,含有算术运算的C语言程序 问题:求方程 的根(设 )。 源程序(cw0102.c),C语言快速入门,#include #include void main() float a,b,c,p,disc,q,x1,x2; scanf(%f%f%f, ,32,C语言程序的基本结构,含有算术运算的C语言程序 程序结构分析,C语言快速入门,#include #include void main() float a,b,c,p,disc,q,x1,x2; scanf(%f%
19、f%f, ,预处理命令 math.h包含数学函数的信息。,33,C语言程序的基本结构,含有算术运算的C语言程序 程序结构分析,C语言快速入门,#include #include void main() float a,b,c,p,disc,q,x1,x2; scanf(%f%f%f, ,函数 一个主函数(main函数)。,34,C语言程序的基本结构,含有算术运算的C语言程序 程序结构分析,C语言快速入门,#include #include void main() float a,b,c,p,disc,q,x1,x2; scanf(%f%f%f, ,函数头,35,C语言程序的基本结构,含有算术运
20、算的C语言程序 程序结构分析,C语言快速入门,#include #include void main() float a,b,c,p,disc,q,x1,x2; scanf(%f%f%f, ,函数体 变量说明语句 可执行语句,36,C语言程序的基本结构,含有算术运算的C语言程序 程序结构分析,C语言快速入门,#include #include void main() float a,b,c,p,disc,q,x1,x2; scanf(%f%f%f, ,运行程序 键盘输入a、b、c的值; 屏幕显示x1和x2的值。,1 0 -4 x1=2.000000,x2=-2.000000,37,C语言程序的
21、基本结构,包含多个函数的C语言程序 问题:求|a|+|b|的值。 源程序(cw0103.c),C语言快速入门,#include float absv(float x) float y; if (x=0) y=x; else y=-x; return y; void main() float a,b,c; printf(input a,b:n); scanf(%f%f, ,38,C语言程序的基本结构,包含多个函数的C语言程序 程序结构分析,C语言快速入门,#include float absv(float x) float y; if (x=0) y=x; else y=-x; return y
22、; void main() float a,b,c; printf(input a,b:n); scanf(%f%f, ,程序由两个函数组成: absv函数 main函数,39,C语言程序的基本结构,包含多个函数的C语言程序 程序结构分析,C语言快速入门,#include float absv(float x) float y; if (x=0) y=x; else y=-x; return y; void main() float a,b,c; printf(input a,b:n); scanf(%f%f, ,调用absv函数求绝对值。,40,input a,b: -5 13 |a|+|b
23、|=18.000000,C语言程序的基本结构,包含多个函数的C语言程序 程序结构分析,C语言快速入门,#include float absv(float x) float y; if (x=0) y=x; else y=-x; return y; void main() float a,b,c; printf(input a,b:n); scanf(%f%f, ,运行程序 在屏幕上显示提示信息; 用键盘输入a、b的值; 在屏幕上显示a、b绝对值之和。,41,C语言程序的基本结构,C语言程序的基本结构小结,C语言快速入门,一个C程序由一个或多个函数组成,但有且仅有一个主函数(main函数);ma
24、in函数是程序执行的入口,可置于程序的任何位置。 程序中可以有预处理命令(如:include 命令)。预处理命令通常放在程序的最前面。 每个语句以分号结尾;预处理命令、函数头和花括号“”之后不必加分号。 函数包括函数的说明部分和函数体;函数体包括变量说明部分和执行部分;函数体由一对花括号“ ”括起来。 括在/*/内的文本为注释。 一行可以写几个语句,一个语句也可以写在多行上。 程序区分大小写字母。一般变量、语句等用小写字母书写;符号常量、宏名等用大写字母书写。 标识符和保留字之间须加空格以示分隔。,42,C语言的字符集,C语言源程序中使用的字符来自C语言的字符集。 字符集(Character
25、set)来自ASCII表 52个大小写字母(Letters) A B C D E F G H I J K L M N O P Q R S T U V W X Y Z a b c d e f g h i j k l m n o p q r s t u v w x y z 10个数字(Digits) 0 1 2 3 4 5 6 7 8 9 空白符(Blanks) 空格符、制表符、回车符、换行符 图形符号(Graphic characters) ! # % : , . / ?,C语言快速入门,43,C语言的关键字,关键字(Keywords)是C语言中的词汇。 也称为保留字(Reserved word
26、s) 类型说明 int、long、short、float、double、char、unsigned、signed、const、void、volatile、enum 、struct、union 语句定义 if、else、goto、switch、case、do、while、for、continue、break、return、default、typedef 存储类别说明 auto、register、extern、static 长度运算符 sizeof,C语言快速入门,44,C语言的标识符,标识符(Identifiers)是程序中引用对象的名称。 用来标识变量、符号常量、数组、函数、结构体、共用体、自
27、定义类型等。 命名规则 只能包括大小写字母、数字和下划线; 首字符必须是字母或下划线; 一般内部标识符的前31个字符有效,而外部标识符的前6个字符有效;(视具体编译器的规定) 不能与关键字相同。,C语言快速入门,45,程序的测试与调试,程序错误 语法错误 未遵循C的语法规则。 编译器可以检查。 运行时错误 在程序运行时执行了无法处理的操作。 逻辑错误 程序不能按照预期的方式运行,不能产生预期的结果。,C语言快速入门,46,程序的测试与调试,程序测试 审查和运行程序,检测程序是否存在错误。 测试步骤 在编译前仔细检查程序的源代码,看看是否有明显的错误。 查看编译器发现的语法错误。 对于运行时错误和逻辑错误可以采用正确输出测试。 想找出所有错误是不切实际的。,C语言快速入门,47,程序的测试与调试,程序调试 隔离和修正错误。 调试方法 采用手工方式来跟踪程序。 在程序中的关键点放置输出语句来显示变量的值。 使用调试器。,C语言快速入门,48,程序的测试与调试举例,测试并调试下面的程序。 问题:输入两个数,计算它们的和。 源代码,C语言快速入门,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年青海客运资格证紧急救护试题答案
- 单词教学说课课件
- 2025年浙江出租车笔试考试试题
- 2025年宁夏出租车驾驶证考试题库app
- 小学生教育课件下载
- 神经内科诊疗知识体系
- 教育机构执行校长工作总结
- 内分泌内科护理
- excel基础培训课件
- 小学感恩教育主题活动
- 2022年永州市中小学教师招聘笔试真题
- 环境科学与工程专业英语翻译第三版钟理
- JJF 1015-2014计量器具型式评价通用规范
- GB/T 8332-2008泡沫塑料燃烧性能试验方法水平燃烧法
- GB/T 20330-2006攻丝前钻孔用麻花钻直径
- GB/T 18033-2017无缝铜水管和铜气管
- 输血反应的发生及防治
- 湖北省仙桃市各县区乡镇行政村村庄村名居民村民委员会明细
- 中粮集团朝阳大悦城招商手册
- 钢板仓施工方案
- 北京福赛尔V6891、V6851控制器(联动型)的调试
评论
0/150
提交评论