1、1,C语言程序设计,计算机科学技术学院 软件学院,2,主讲:谭龙(副教授)邮件地址:,计算机科学技术学院应用软件教研室,3,答疑地点:实验楼325室答疑时间:第六周后每周三下午 3:004:30,4,教材、参考书与课时安排,教材 C程序设计 谭浩强编著 清华大学出版社 参考书 C语言程序设计教程 谭浩强 高等教育出版社 C语言习题集 课时安排 授课 :60学时 C课程实验:36学时,5,上机安排 上机地点:计算机楼 上机时间:周三学时 上机内容: 随教学进度的基础训练 有时间,可以上机调试每次课堂作业 上机考试: 两到三次测试 要求: 所有作业必须独立完成 作业最好经上机调试通过 上机实验同上
2、课同等重要 发现上机时间上网或打游戏将严重处理,课程实验,6,C语言发展历史,C语言特点,C程序格式和结构特点,C程序上机步骤,第一章 C语言概述,程序设计语言分类,计算机基础知识,7,第1节 计算机基础知识,1. 计算机概述 2.计算机的特点与应用 3.计算机系统的基本组成,8,1. 计算机概述,Computer Overview,电子计算机是在电子技术代替了机械和继电器技术的基础上发展起来的,它是具有高速计算和内部存储能力、由程序控制其操作过程的电子设备。,9,计算机,10,计算机,11,电子计算机的产生,世界上第一台计算机:埃尼亚克,12,电子计算机的产生,世界上第一台计算机:埃尼亚克,
3、13,电子计算机的发展,计算机的发展过程,14,计算机的发展趋势,(1)巨型化 (2)微型化 (3)网络化 (4)智能化,15,2.计算机的特点,(1)运算速度快 (2)计算精度高 (3)具有很强的记忆功能 (4)具有逻辑判断功能 (5)工作自动化 (6)具有处理多种信息功能 (7)网络化,16,计算机的特点应用,(1)科学计算 (2)过程控制 (3)数据处理 (4)计算机通信 (5)计算机辅助系统 计算机辅助设计CAD(Computer Aided Design) 计算机辅助制造CAM(Computer Aided Manufacturing) 计算机辅助测试CAT(Computer Aid
4、ed Test) 计算机辅助教学CAI(Computer Aided Instruction) (6)人工智能:专家系统、机器人,17,3.微型计算机系统的组成,硬件系统,运算器,外设,主机,输入设备(键盘、鼠标),外存储器(磁盘、光盘),内存储器(内存),应用软件,系统软件,软件系统,控制器,输出设备(显示器、打印机),操作系统,服务软件,编译或解释系统,信息管理软件,图形软件,各种软件包,文字处理软件,辅助设计软件,计算机系统,(CPU),18,微型机系统,19,冯诺依曼电子计算机,冯诺依曼,程序存储的思想,20,冯.诺依曼(程序存储)结构计算机的组成:,21,运算器Arithmetic
5、Logic Unit :数据加工的部件(算术运算、逻辑运算)。 控制器Control Unit :控制计算机各部分自动协调地工作,完成对指令的解释和执行。 存储器STORAGE :计算机的记忆装置,存放数据和程序。 输入设备Input Device :向计算机输入程序、数据和命令的部件,常见的输入设备有键盘、鼠标、扫描仪、光笔、数字化仪、话筒等。 输出设备Output Device :用来输出经过计算机运算或处理后所得的结果,并将结果以字符、数据、图形等人们能够识别的形式进行输出。常见输出设备有显示器、打印机、投影仪、绘图仪、声音输出设备等。,22,也称微处理器,是电脑中最关键的部件,是由超大
6、规模集成电路(VLSI)工艺制成的芯片 运算器Arithmetic Logic Unit :算术运算和逻辑运算。 控制器Control Unit :整个计算机的控制中心。计算机的一切操作都是在控制器的指挥下进行的。,CPU (Central Processing Unit,23,存储器STORAGE,主存储器,硬盘,软盘,光盘,RAM(内存),辅存储器,存储器是计算机的记忆部件,负责存储程序和数据。存储器分两大类:称为主存储器(内存);另一种存储设备称为辅助存储器(外存)。,24,主存储器(Memory) 主存储器也叫内存,可直接与CPU交换信息。 主存储器的特点:容量小,但存取速度快。 构成
7、:ROM(只读存储器),RAM(随机存储器)。 通常情况下人们所说的内存指RAM。 只读存储器ROM(Read-Only Memory) CPU对它们只取不存,其信息用户无法修改。断电时信息不会丢失。ROM中一般存放计算机系统管理程序。 随机存储器RAM(Random Access Memory) 用于存储待执行的程序或待处理的数据。 断电后程序和数据全部丢失。,主存储器(Memory),25,内部存储器 访问速度快 信息暂时性 相对价格高,外部存储器 访问速度慢 信息永久性 相对价格低,存储器,微型计算机存储器分内部存储器和外部存储器,26,图 常见的几种内存条,内存条,27,硬盘 8.4G
8、、10G、15G、30G,安装在机箱内,软盘 1.44M(72万汉字),插入软盘驱动器,CD、VCD、DVD、CD-ROM(650M) 光盘,放入光盘驱动器,辅助存储器,28,外部存储器,外部存储器包括软盘存储器、硬盘存储器、光盘存储器、磁带存储器等几大类。 特点:容量大,可长期保存信息,读写速度慢。,29,软盘Floppy Disk及软盘驱动器 软盘是一种磁介质形式的外存储器。它的磁盘片是由聚酯材料制成的圆形塑料薄片,两面涂有磁性材料,并且被封装在塑料的保护套内。 目前微机所配置通用软盘驱动器大多数是3.5英寸的1.44MB薄型软盘驱动器,适用于1.44MB软盘。,30,3.5寸磁盘外形及内
9、部结构示意图,31,3.5寸磁盘外形及内部结构示意图 扇区 Sector 磁道Track,32,软盘只有经过格式化后才可以使用。格式化是为存储数据作准备,在此过程中,软盘被划分为若干个磁道,磁道又被划分为若干个扇区。 例如,3.5英寸软盘共有80个磁道,18个扇区,每个扇区的容量均为512个字节,两面的总容量约为1.44MB。 软盘的容量可以用下列公式计算: 软盘的格式化容量=磁盘面数每面磁道数每道扇区数每扇区字节数,33,34,硬盘Hard Disk及硬盘驱动器,软盘具有使用携带方便等特点,但其存储容量小,读写速度慢,对大量数据的存储显得力不从心,而硬盘便具有解决以上问题的全部特点。,其特点
10、是:存储容量大、存取速度快。硬盘是由若干个硬盘片组成的盘片组,封装在金属保护套中。 容量: 几个GB至几十个GB之间。,35,硬盘一般由多个盘片固定在一个公共的转轴上,构成盘片组。微机上用的硬盘采用了温彻斯特技术,它把硬盘、驱动电机、读写磁头等组装并封装在一起,成为曼彻斯特驱动器。硬盘工作时,固定同一个转轴上的多张盘片以每分钟数千转甚至更高的速度旋转,磁头在驱动马达的带动下在磁介质盘做径向移动,寻找定位,完成写入或读出数据工作。,容量=片数柱面数扇区字节,36,光盘Optical Disk与光盘驱动器,光盘(Optical Disk):一张光盘的容量约为650MB,大概可存入74分钟的电影。
11、光驱分类: 按安装方式划分:内置和外置 按数据传输速度分:20速、24速、32速、40速、50速等 按使用性能分:只读光盘、一次性写入光盘、可擦写光盘。,37,CD-ROM 光盘驱动器,CD-RW 光盘刻录机,DVD 光盘驱动器,光盘驱动器,38,键盘,扫描仪scanner,鼠标,手写笔,数码相机Digital camera,输入设备 Input Device,39,常用输入设备:键盘Keyboard,键盘是计算机必备的标准输入设备,用户的程序、数据以及各种对计算机的命令都可以通过键盘输入。,主键盘区 功能键盘区 编辑键盘区 数字小键盘区,40,标准英文打字,41,42,显示器Monitor,
12、音箱,打印机printer,投影仪projector,输出设备Output Device,43,显示器Monitor,显示器由监视器和显示控制适配器(显示卡)组成 显示器的尺寸:对角线的长度 14英寸-15英寸-17英寸,44,打印机的几种类型,输出设备-打印机,45,计算机的软件系统,软件系统,系统软件,应用软件,操作系统,程序设计语言,应用程序,用户程序,46, 2 程序设计语言的分类,程序Program 程序是指令Instruction序列,是操作步骤的预先编排 按一定的顺序安排的步骤执行序列,就称为程序 乘车回家、假日旅游、菜谱、乐谱、编织样式,47,计算机硬件与机器语言程序设计,计算
13、机硬件 处理器:算术、逻辑、控制 内存:ROM、RAM(bit、byte、kb、Mb) 外设:键盘、显示器、磁盘等 机器语言 直接控制计算机硬件的指令集,49,机器语言,机器指令 由若干字节组成,第1字节为操作码,其余字节为操作数 例1(直接数) 指令 操作 B82301 将值0123H移入AX寄存器 052500 将值0025H加到AX之中 8BD8 将AX内容移到BX 03DB 将AX内容加到BX 8BCB 将BX内容移到CX 2BC8 从CX内容中减去AX 2BC0 AX中减去AX本身(清除),50,汇编语言,机器指令 由若干字节组成,第1字节为操作码,其余字节为操作数 例1(直接数)
14、指令 汇编语句 操作 B82301 MOV AX, 0123 将值0123H移入AX寄存器 052500 ADD AX, 0025 将值0025H加到AX之中 8BD8 MOV BX, AX 将AX内容移到BX 03DB ADD BX, AX 将AX内容加到BX 8BCB MOV CX, BX 将BX内容移到CX 2BC8 SUB CX, AX 从CX内容中减去AX 2BC0 SUB AX, AX AX中减去AX本身(清除),51,机器(汇编)语言,优点 使用少得多的内存和执行时间 完成高度技术性的任务 有利于理解机器体系结构 往往用于设计瓶颈模块 驻留程序和中断服务程序设计实现 缺点 过于复
15、杂、难以用于开发大型程序,52,高级语言,高级语言 接近自然语言与数学语言 亦称:命令语言 1950s1980s:大发展 典型高级语言 FORTRAN - FORMULA TRANSLATOR ALGOL - ALGORITHM Language COBOL - Common Business Oriented Language PASCAL - 结构化程序设计教学语言 BASIC - Beginners All-purpose SymbolicInstruction Code C - 目前最流行的高级语言,53,高级语言(续),高级语言翻译成机器语言 不能被计算机硬件(裸机)直接执行 编译c
16、ompile 高级语言程序(源程序source)机器语言程序(目标程序target) 然后执行目标程序 编译会发现不符合语法syntax的错误,称编译错 解释interpret 不生成目标程序 源程序边翻译边执行 汇编assemble(装配) 汇编语言程序机器语言程序,54,高级语言(续),面向过程程序设计的高级语言称算法语言。 如:Fortran,Basic,Pascal,C 等等 面向对象程序设计的高级语言 1990s发展起来 能较自然地描述大量实际问题模型 Ada、C+、Java等 思想: 任何事物都看作对象 一个程序就是一组相互通信的对象 每个对象具有由其它对象组成的存储 每个对象有自
17、己的类型,55,可视化高级语言,具有面向对象的思想,如:Visual C+,Visual Basic,Visual J + ,Delphi,PowerBuilder,JBuilder,ASP等等,56,57,1.3 C语言发展过程,语言的诞生与发展 在C语言诞生以前,系统软件主要是用汇编语言编写的。由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都很差;但一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们盼望有一种兼有汇编语言和高级语言特性的新语言。,58,1. 1960年出现了Algol60语言,但该语言主要面向问题,与硬件较远,故英国剑桥大学推出了CPL(
18、Combined Programming Language), 2. 1967年,Matin Richards对CPL进行改进、简化、推出了BCPL (Basic Combined Programming Language),C语言发展过程,59, 3. 1970年,美国贝尔实验室Ken Thomson 以BCPL为基础,再次简化推出了B语言,并写了第一个UNIX系统。, 4. 1972年美国贝尔实验室D.M. Ritchie 在B语言基础上设计出了C语言,并用其将UNIX系统全部改写并实现。,C语言发展过程,60, 5. 经进一步改进,至1977年出现了与具体机器无关的C编译文本,从而使C语
19、言广泛应用,各种机器皆可使用。, 6. 1978年,美国Brain W.Kernighan与 Dennis. M. Ritchie 联合出版一书The C Programming Language成为 ANSI C之基础。,C语言发展过程,61,7. 1983年,美国标准化协会(ANSI) 制定了ANSI C。,注:以ANSI C 为基础: 不同机器有不同版本,尤其是函数均应参考 相应的版本。,特别说明:C语言的编译环境有多种如:Turbo C, Borland C, Microsoft C 等,62,1.4 C语言的特点,语言简洁,紧凑,使用方便,灵活,32个关键字 运算符丰富,34种运算符
20、 数据结构丰富 具有结构化的控制语句 语法限制不严格,程序设计自由度大 允许直接访问物理地址,能进行位操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作 生成目标代码质量高,程序执行效率高 可移植性好,63,32个关键字:(由系统定义,不能重作其它定义)auto break case char const continue default do double else enum extern float for goto if int long register return short signed sizeof static struct switch typedef unsigne
21、d union void volatile while,32个关键字,64,if( )elsefor( )while( )dowhile( )continuebreakswitchgotoreturn,9种控制语句,65,算术运算符:+ - * / % + - 关系运算符: = != 逻辑运算符:! & | 位运算符 : | & 赋值运算符:= 及其扩展 条件运算符:?: 逗号运算符:, 指针运算符:* & 求字节数 :sizeof 强制类型转换:(类型) 分量运算符:. - 下标运算符: 其它 :( ) -,34种运算符,66,C 数 据 类 型,基本类型,构造类型,指针类型,空类型void
22、,定义类型typedef,数值类型,字符类型char,枚举类型enum,整 型,浮点型,单精度型float,双精度型double,短整型short,长整型long,整型int,数组,结构体struct,共用体union,数据类型,67,68,输出: Hello,World!,1.5 简单C程序介绍,69,例1.2,/* example1.1 calculate the sum of a and b*/ #include /* This is the main program */ main() int a,b,sum;a=10;b=24;sum=add(a,b);printf(”sum= %d
23、n“,sum); /* This function calculates the sum of x and y */ int add(int x,int y) int z;z=x+y;return(z); ,运行结果: sum=34,70,格式特点,习惯用小写字母,大小写敏感 不使用行号,无程序行概念 可使用空行和空格 常用锯齿形书写格式,main( ) . ,main( ) int i , j , sum;sum=0;for(i=1; i10;i+)for(j=1;j10;j+)sum+=i*j ;printf(“%dn”,sum); ,优秀程序员的素质之一: 使用TAB缩进 对齐 有足够的
24、注释 有合适的空行,71,函数与主函数 程序由一个或多个函数组成 必须有且只能有一个主函数main() 程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。 程序语句 C程序由语句组成 用“;”作为语句终止符 注释 /* */为注释,不能嵌套 不产生编译代码,例: /*This is the main /* of example1.1*/ */,结构特点,72,C语言程序的基本结构,1、每个C程序由若干函数组成 有且仅有一个主函数main 若干个其它函数(被调用函数) 被调用函数由系统或用户定义2、函数由两个部分组成 函数首部: 函数的类型、名称、形参及类型 函数体:用 与
25、 括起来 声明部分:定义函数中所用到的变量 执行部分(由语句组成),Int max( int x, int y) int m; if (xy)return x; Elsereturn y; Void Dump( ) ,73,C语言程序的基本结构(续),3、每个语句和数据定义最后以分号结束 4、一行可写几句,一句可写在多行上 5、程序执行总是从main开始执行 与主函数、被调用函数在程序中位置无关 6、输入输出由标准函数库提供 7、程序中可使用预编译处理命令,如#include 8、注释:用/*/对任一部分内容作注释 起说明作用,不编译也不执行 目的是增强程序的可读性,74,1.6 C程序的上机步骤,独立工具 编辑器editor,编译器compiler,连接程序linker 集成环境 Turbo C,Visual Studio (Visual C+),