版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、C程序设计教程谭浩强主编卜家岐,范燮昌编著电子教案第1章本章要点:C语言概述 了解C语言在开发计算机应用软件和系统软件中的重要作用。 理解冯诺依曼计算机的概念。 建立字节,内存单元,地址和指针的概念; 掌握变量读写的两种方式。 了解结构化程序设计中三种基本结构的概念。 掌握C程序的组成和函数的概念。 上机熟悉开发C程序的集成环境,区分源程序, 目标程序和可执行程序的关系。311.1 计算机和C语言1. 计算机的实体是个硬件系统,要使其工作必须装入软件并执行软件,计算机才会按人们的意图正常工作。2. 计算机软件系统的开发指的是程序的开发,程序存3. C语言是编制系统软件和应用软件的重要工具。4.
2、 程序是怎样来控制计算机工作的呢?这就需要了解一下“二进制和程序存储控制”原理,即冯诺依曼原理。1.2 “二进制和程序存储控制”原理1. 冯诺依曼(VonNeuman)教授提出:用二进制而不用十进制进行数值运算,就可以利用电路的开和关两种状态来表示二进制中的0和1, 于是在1946年诞生了世界上第一台电子计算机ENIAC。它用二进制代替十进制完成了复杂的数值运算。但是运算指令和数据还是通过重新连接电路和设定开关来完成。通过实践,冯诺依曼又提出存储程序的概念,即将运算指令和数据用数字(二进制) 的方式存放在电子计算机的存储器中,即用程序来控制计算机的操作。这就是著名的冯诺依曼原理“二进制和程序存
3、储控制”的计算机结构思想。现在的计算机都基于冯诺依曼原理,因此称为冯诺依曼计算机。2. 计算机的内存结构n 计算机主机内的存储器,简称内存。要运行的程序和数据都存放在内存中。内存由千千万万个具有二个状态的电子开关组成。n 每个电子开关用计算机术语位(bit)来称呼。n 多数计算机用8位组成一个字节(byte),一个字节可以存放一个用二进制数表示的字符或数字图1.1所示。n 计算机上所应用的全部字符(字母、数字或其他专用字符)都有相应的二进制代码,这些字符和二进制代码之间的对应关系,很多计算机系统采用ASCII 代码。最高位位(bit)最低位8位(bit)组成一个字节(byte)图1.1字节示意
4、图.内存中的每个字节都有相应的位置编号,这个编号就是这个字节的地址,通过地址可以找到内存中任何一个字节的内容。n 整数用2个字节或4个字节来存放,而实数用4个字节或8个字节来存放。n 由一个或若干个字节组成一个有意义的单元,该单元称为字,一个字也称一个存储单元或内存单元,可以用来存放一个数据或一条指令,程序即为一系列指令和数据的集合体。n 每个存储单元的地址,指的是组成这个存储单元几个字节中的第一个字节的地址。通过该地址可以找到相应存储单元的内容。3. 程序是怎样来控制计算机工作的呢? 举个简单例子:假定程序要实现如下运算:b=5; c=8;a=b+c;那么程序中要定义三个整型变量a、b、c,
5、系统分配给它们各一个内存单元,每个内存单元占两个字节, 变量名和内存单元地址有直接的对应关系,执行上述运算时,系统会把5和8分别送到b和c的存储单元中, 而后又分别提取它们的值通过CPU相加得13送到变量a 的内存单元中。这种按变量所对应的地址存取变量的方式称为“直接访问”方式。. 语言C中通过运算符&可以得到相应变量的地址值: &a即为变量a的地址值&b即为变量b的地址值(假定是5000) &c即为变量c的地址值(假定是5002)通过变量的地址能找到变量的内存单元,因此,C语言中把变量的地址也称作变量的“指针”,根据上述假定5000是变量b的指针,5002是变量c的指针。C语言中还有另外一种
6、访问内存的方式,称“间接访问”的方式。地址C语言中可以专门定义一种变量用来存放变量,设定义变量x_pointer用来存放整型变量地址,x_pointer本身的地址假定是8620,则可有如下赋值: x_pointer=&b;那么x_pointer的值是5000。就说x_pointer指向变量b。通过x_pointer来存取变量b的值称间接访问,过程是:先从变量x_pointer中提取变量b的指针5000,然后到地址是5000和5001两个字节中存取(读写)b的值。.C语言中可以用一个存取内容运算符“*”来运算:*x_pointer=5;等效于b=5;/*间接访问“存”*/*直接访问*/当x_po
7、inter的值用变量c的地址&c重新赋值:x_pointer=&c;那么我们说x_pointer指向变量c(这时x_pointer已经脱离了与变量b的联系),借助于x_pointer可以对变量c进行读写操作:*x_pointer=8; 等效于 c=8;b存取c存取直接访问和间接访问示意图直接访问&c&b存取b (*x_pointer)存取c (*x_pointer)间接访问x_pointer(=&c)x_pointer(=&b).n 因为x_pointer只能存储地址,且其值也可以改变,所以称它为指针变量。通过指针变量来存取某变量的方式称间接访问的方式。关于指针变量这里只作概述,目的是想借助于
8、它说明间接访问内存的方式。n 可见,计算机内存中数据的传递和存取都是二进制的,程序以一系列指令和数据的形式存放在一个个内存单元中,执行程序的过程也是不断访问内存单元的过程,而访问内存单元的方式可以是直接访问,也可以用间接访问。这就是冯诺依曼教授提出的“二进制和程序存储控制”原理,这个概念很重要,是学好以后各章的基础。1.3 整数在内存中的存放形式n 内存中整数都以“补码”的形式存放。n 一般整数占内存2个字节,这两个字节中的最高位用来表征数的符号,以0代表正数,以1代表负数,其余各位代表数的绝对值。n 一个整数的代码有原码、反码和补码三种表达方式。正数的原码、反码和补码的形式都相同。如+10的
9、原码、反码和补码都具有如下的形式:n 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0负数的原码、反码和补码的表示形式是不同的, 如-10的原码是:1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0n 负数的反码规定:符号位不动,其余各位对原码取反。如-10的反码是:1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1n 负数的补码规定:是它的反码加1。如-10的补码是:1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0n 用补码的好处是系统在进行运算时,数的符号位用不着单独处理,同时0的原码是唯一的。n 当已知一个负数的补码反过来要求其原码时,
10、 只要记住“一个负数补码的补码就是它的原码”,即把补码当“原码”,再求一次补码就得原码(补码是-0这个数除外)。如以-1为例:n 原码:1000000000000001n 反码:1111111111111110n 补码:1111111111111111(内存中的存储形式)n 补码取反加1得原码:100000000000000114C程序设计语言概述1.4.1程序设计语言的发展n 计算机内部的指令和数据都是以二进制形式存放信息和传递信息,计算机发展初期,人们就是用手工编写出一条条二进制指令,这些二进制指令的集合就称为“机器语言”。n 后来,人们想到用符号来代替二进制形式的指令,这些符号组成的指令
11、集称为“符号语言”,也称“汇编语言”。n 20 世纪50 年代, 世界上出现了第一个“ 高级语言”FORTRAN语言,从此计算机的应用得到了飞速的发展。语言是指语言本身更接近于人们习惯的自然语言和所用的数学公式。高级n 如打印输出写“print”,n 打开文件写“open”,n 计算a=b+c就写a=b+c 等。n 为我们非计算机专业的人应用计算机提供了极大的方便。n 至今已有几百种不同的高级语言,其中C语言就是一个突出的代表,它适用于多种领域,特别适用于编写系统软件和工程应用软件。荷兰学者E.W.Dijkctra 提出 结构化程序设计(StructuredProgramming简称SP)的理
12、论。结构1.4.2 结构化程序设计方法化程序设计原则:n 1.自顶向下,逐步细化n 2.清晰第一,效率第二n 3.书写规范,缩进格式n 4.基本结构,组合而成n C语言完全支持结构化程序设计,它有多种结构化语句(如if语句,while语句,do_while语句以及for语句等)供用户在不同场合选用。1.4.3 C语言简史n 1960年出现的Algol 60是一种面向过程的高级语言, 它离硬件远,不宜用来编写系统软件。n 1967年在Algol 60基础上推出了比较接近硬件的BCPL(Basic Combined Programming Language) 语言。n 1970年以BCPL语言为基
13、础又设计出简单而又很接近硬件的B语言)。n 1973年贝尔实验室的D.M.Ritchie在B语言的基础上又设计出C语言。1978年BrianW.Kernighan和DennisM.Ritchie合著了The C Programming Language一书。n 后 来 , 美 国 国 家 标 准 协 会 ANSI(AmericanNationalStandardInstitute)又推出了新的标准C。n 1988年K&R按国家标准重写了他们的经典著作The C Programming Language。n 1980年贝尔实验室的BjarneStroustrup开始对C语言进行改进和扩充。n 1
14、983年正式取名为C+(使用了C语言中的自增运算符+,表示是C的进一步扩充和改进)。n 由于C+的出现,有人称原来的C为“传统的C”。1.4.4 C语言的字符集和标识符1. C语言的字符集n (1) 26个小写英文字母a zn (2) 26个大写英文字母A Zn (3) 10个数字字符0 9n (4) 27个特殊字符+ - * / = :;? | ! # % & () _下划线空格, “n 共89个字符可以在C程序中出现,不可以包含除此之外的其它字符。标识符是程序设计人员用来命名程序中的一些基本单元或模块。2. C语言中的标识符C语言规定:标识符由字母、数字字符和下划线组成,并以字母或下划线开
15、头。定义标识符时请遵守下列规定:(1) 避开系统保留的关键字(见附录)。(2) 同一个字母大小写代表不同的标识符。(3) 提倡使用有意义的英文单词,最好能做到“见名知义”,帮助提高程序的可读性。(4) 标识符的长度(字符个数)可以一般少于等于8个字符,有的系统可以少于等于32个字符。1一个简单的C程序1.4.5C程序的基本结构n 例11求两数乘积n /* ex1_1.c the value of b*c */n #includestdio.hn main()n n int a,b,c;n printf(Enter two int numbers:n);n scanf(%d%d,&b,&c);n
16、 a=b*c;n printf(a=%dn,a);n n 程序运行结果是:n Enter two int numbers:n 58n (本教材中,符号“”表示按回车键)n a=402.C程序的组成C程序是由函数、语句、注释和编译预处理命令等四个基本成分组成:(1) 函数是程序设计模块化的体现。函数用来完成某个特定的操作,如例1.1中就包含3个函数:main()函数, scanf()函数和printf()函数。后面两个函数是被调用函数, 它们包含在头文伴stdio.h中(见编译预处理命令)。一个程序可以包含很多函数。这些函数可以是由用户自己设计的(见第7-9章);也可以是系统提供的函数。程序中一
17、定要有一个并只允许有一个主函数main()。程序只从主函数执行,其他函数通过主函数或被主函数已经调用的函数调用而间接执行。结(2) C程序中的每个函数主要由语句组成,一个语句的束标志是分号。C程序中有形式多样表示不同功能的很多语句,这在以后章节中会详细讲解。(3) C程序中为了说明程序的功能或某几行的含义,可带注释。注释能帮助读者阅读和理解程序。程序编译时,注释被忽略,它不产生代码行。例1.1中程序开头用了如下注释:/*ex1_1.cthe value of b*c */说明程序用来求b乘以c的值。注释内容写在一对符号“/*”和“*/”之间,这是传统C中的注释方式,其中的内容可以是一行或几行。
18、自符号“/*”开始到“*/”符号结束,其间的内容都 被认为是注释内容。(4)编译预处理命令以“#”符号开头的程序行就是编译预处理命令。n 例1.1中有文件包含命令:n #include “stdio.h”n 其中stdio.h是一个头文件,也称标准的输入输出头文件。程序中由于要用到数据输入函数scanf()和输出函数printf(),而这两个函数的说明系统已经存放在文件stdio.h中,因此要包含该头文件,所谓包含就是把头文件代码引入程序中,由于这个工作是在编译程序前完成的,所以称编译预处理命令。1.4.6 C程序的编辑、编译和连接n 用计算机高级语言编写的程序,称源程序文件。n 源程序通过编译程序(也称编译器)编译以后生成二进制的目标代码,即机器语言指令,称为目标程序文件(简称目标文件),通常以.obj作为文件的扩展名。n 通常C程序
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 北大汇丰智库2026从规模扩张到能力升级美日德出海经验与中国企业全球化新路径研究报告
- (2026版)秋季小学数学教研组工作计划
- 中学教师资格证《综合素质》试题练习试卷附答案
- 主扇风机操作工安全生产基础知识模拟考核试卷含答案
- 积材工安全演练水平考核试卷含答案
- 预拌混凝土中控工安全培训效果竞赛考核试卷含答案
- 二手工程机械评估师岗位基础模拟考核试卷含答案
- 颜料合成工岗前评优考核试卷含答案
- 白酒灌装工安全知识模拟考核试卷含答案
- 木材检验员复测测试考核试卷含答案
- 2025全国高校辅导员素质能力大赛考试测试题(含答案)
- 2026年建筑安全员C证考试真题及答案
- 2026年纪检监察案件查办政策考试题及答案
- 2026年度“十八项医疗核心制度”培训考试真题解析含答案
- 2026年江苏省粮食集团有限责任公司人员招聘笔试备考题库及详细答案解析
- 中国多发性骨髓瘤诊治指南(2026年修订)
- 《智慧广场-合理安排时间》教案(2课时)-2026-2027学年青岛版(新教材)小学数学六年级上册
- 《物流场所消防安全管理》XFT 3026-2026
- 民工入场基础安全教育试题及答案
- 等离子切割机安全操作规范培训课件
- 课件-试点地区的增值税纳税申报表填报实务(一)
评论
0/150
提交评论