C演示文稿01
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
18
高级语言是指语言本身更接近于人们习惯的自然 语言和所用的数学公式。 如打印输出写“print”, 打开文件写“open”, 计算a=b+c就写a=b+c 等。 为我们非计算机专业的人应用计算机提供了极大 的方便。 至今已有几百种不同的高级语言,其中 C 语言就 是一个突出的代表,它适用于多种领域,特别适 用于编写系统软件和工程应用软件。
9
. 访问:在存储单元中存取(读/写)数据。 C语言中通过地址运算符&可以得到相应变量的地址 值: &a即为变量a的地址值 &b即为变量b的地址值(假定是5000) &c即为变量c的地址值(假定是5002) 通过变量的地址能找到变量的内存单元,因此,C语 言中把变量的地址也称作变量的“指针”,根据上述 假定5000是变量b的指针,5002是变量c的指针。 注意:要区别存储单元的地址和存储单元的内容 (变量值)两个概念。
主菜单的项目和功能表主菜单的项目和功能表项目fileeditruncompileprojectoptionsdebugbreakwatch调入存储文件管理目录退出tc环境等进入编辑状态可编辑和修改源程序编译连接和运行当前程序编译当前环境内的程序生成目标及文件处理由多个源程序文件组成的工程文件设置有关编译和连接的选项调试程序显示变量的值查找函数调试程序断点的设置和清除及观察变量值一旦进入编辑窗口其顶部为双线且名字是高亮度的这表示它是活动的窗口
6
最高位
位(bit)
最低位
8位(bit)组成一个字节(byte)
图1.1 字个字节都有相应的位置编 号,这个编号就是这个字节的地址,通过地址可 以找到内存中任何一个字节的内容。 整数用2个字节或4个字节来存放,而实数用4个字 节或8个字节来存放。 由一个或若干个字节组成一个有意义的单元,该 单元称为字,一个字也称一个存储单元或内存单 元,可以用来存放一个数据或一条指令,程序即 为一系列指令和数据的集合体。 每个存储单元的地址,指的是组成这个存储单元 几个字节中的第一个字节的地址。通过该地址可 以找到相应存储单元的内容。
15
负数的原码、反码和补码的表示形式是不同的, 如-10的原码是: 1 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0 负数的反码规定:符号位不动,其余各位对原 码取反。如-10的反码是: 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 负数的补码规定:是它的反码加 1 。如 -10 的补 码是: 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 用补码的好处是系统在进行运算时,数的符号 位用不着单独处理,同时0的原码是唯一的。
3
1.1
计算机和C语言
1. 计算机的实体是个硬件系统,要使其工作必须装入 软件并执行软件,计算机才会按人们的意图正常工 作。 即计算机的工作,都是由程序控制的; 只有计算机具有了记忆程序的功能,并具有了按照 程序进行自我控制的功能,才能自动工作。 2. 计算机软件系统的开发指的是程序的开发,程序存 储在计算机的内存中,程序是计算机工作的“灵 魂”。 3. 程序要需要用某种形式(语言)来描述。现代计算 机的程序则是用计算机程序设计语言来描述的。 C语言是编制系统软件和应用软件的重要工具。 4. 程序是怎样来控制计算机工作的呢?这就需要了解 一下“二进制和程序存储控制”原理,即冯· 诺依曼 原理。
5
2. 计算机的内存结构
计算机主机内的存储器,简称内存。要运行的程序 和数据都存放在内存中。内存由千千万万个具有二 个状态的电子开关组成,是电子开关的集合体。 每个电子开关用计算机术语位(bit)来称呼。 多数计算机用 8 位组成一个字节(byte),一个字节 可以存放一个用二进制数表示的字符,图1.1所示。 计算机上所应用的全部字符(字母、数字或其他专 用字符)都有相应的二进制代码,这些字符和二进 制代码之间的对应关系,很多计算机系统采用ASCII 代码(美国标准信息交换码)。
23
1.4.4
C语言的字符集和标识符 1. C语言的字符集
(1) 26个小写英文字母 a~z (2) 26个大写英文字母 A~Z (3) 10个数字字符 0~9 (4) 27个特殊字符 + - * / = :;?\ ~ | ! # % & () [] {} ^ < > _ 下划线 空格 , .“ ' 共89个字符可以在C程序中出现,不可以包 含除此之外的其它字符。
16
当已知一个负数的补码反过来要求其原码时, 只要记住“一个负数补码的补码就是它的原 码”,即把补码当“原码”,再求一次补码 就得原码(补码是-0这个数除外)。如以-1为例: 原码: 1000000000000001 反码: 1111111111111110 补码: 1111111111111111 (内存中的存储形式) 补码取反加1得原码: 1000000000000001
24
2.
C语言中的标识符
标识符是程序设计人员用来命名程序中的一些基 本单元或模块。 C语言规定:标识符由字母、数字字符和下划线 组成,并以字母或下划线开头。 定义标识符时请遵守下列规定: (1) 避开系统保留的关键字(见附录Ⅱ)。 (2) 同一个字母大小写代表不同的标识符。 (3) 提倡使用有意义的英文单词,最好能做到 “见名知义”,帮助提高程序的可读性。 (4) 标识符的长度(字符个数)可以一般少于等 于8个字符,有的系统可以少于等于32个字符。
8
3. 程序是怎样来控制计算机工作的呢?
举个简单例子: 假定程序要实现如下运算: b=5; c=8; a=b+c; 那么程序中要定义三个整型变量a、b、c,系统分配 给它们各一个内存单元,每个内存单元占两个字节, 变量名和内存单元地址有直接的对应关系,执行上述 运算时,系统会把5和8分别送到b和c的存储单元中, 而后又分别提取它们的值通过CPU相加得13送到变量a 的内存单元中。这种按变量所对应的地址存取变量的 方式称为“直接访问”方式。
10
. C语言中还有另外一种访问内存的方式,称“间 接访问”的方式。 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的值。
11
这个过程, C 语言中可以用一个存取内容运算符 . “*”来运算: *x_pointer=5; /*间接访问“存”*/等效于 b=5; /*直接访问*/ 当x_pointer的值用变量c的地址&c重新赋值: x_pointer=&c; 那么我们说x_pointer指向变量c(这时x_pointer已 经脱离了与变量 b 的联系),借助于 x_pointer 可 以对变量c进行读写操作: *x_pointer=8; 等效于 c=8;
20
1.4.3 C语言简史
1960 年出现的 Algol 60 是一种面向过程的高级语言, 它离硬件远,不宜用来编写系统软件。 1967 年在 Algol 60 基础上推出了比较接近硬件的 BCPL(Basic Combined Programming Language)语 言。 1970年,贝尔实验室的Ken Thompson以BCPL语言 为基础又设计出简单而又很接近硬件的 B语言)。 并用B语言写了UNIX操作系统初稿。 1973 年,贝尔实验室的 D.M.Ritchie 在 B 语言的基础 上 又 设 计 出 C 语 言 。 后 来 Ken Thompson 和 D.M.Ritchie合作,进一步用C语言改写了UNIX操作 系统。
14
1.3 整数在内存中的存放形式
内存中整数都以“补码”的形式存放。 一般整数占内存 2 个字节,这两个字节中的最高 位用来表征数的符号,称为符号位,以 0 代表正 数,以 1 代表负数;其余各位代表数的绝对值, 称为数字位。 一个整数的代码有原码、反码和补码三种表达方 式。正数的原码、反码和补码的形式都相同。如 +10的原码、反码和补码都具有如下的形式: 0 0 0 0 0 0 0 0 0 0 0 0 1 0 1 0
12
直接访问和间接访问示意图
&b
存
取
b
&c
存
取 存 取
b (*x_pointer)
x_pointer
(=&b)
存
取
c
c (*x_pointer)
x_pointer
(=&c)
直接访问
间接访问
13
因为x_pointer只能存储地址,且其值也可以改变, . 所以称它为"指针变量"。通过指针变量来存取某变量 的方式称间接访问的方式。关于指针变量这里只作概 述,目的是想借助于它说明间接访问内存的方式。 可见,计算机内存中数据的传递和存取都是二进 制的,程序以一系列指令和数据的形式存放在一个个 内存单元中,执行程序的过程也是不断访问内存单元 的过程,而访问内存单元的方式可以是直接访问,也 可以用间接访问。这就是冯 · 诺依曼教授提出的“二 进制和程序存储控制”原理,这个概念很重要,是学 好以后各章的基础。
17
1. 4
C程序设计语言概述
1.4.1 程序设计语言的发展 计算机内部的指令和数据都是以二进制形式存 放信息和传递信息,计算机发展初期,人们就是 用手工编写出一条条二进制指令,这些二进制指 令的集合就称为“机器语言”。 后来,人们想到用符号来代替二进制形式的指 令,这些符号组成的指令集称为“符号语言”, 也称“汇编语言”。 20 世纪 50 年代,世界上出现了第一个“高级语 言” —— FORTRAN 语言,从此计算机的应用得 到了飞速的发展。
4
1.2 “二进制和程序存储控制”原理
1. 冯· 诺依曼(Von.Neuman)原理
用二进制而不用十进制进行数值运算,就可以利用 电路的开和关两种状态来表示二进制中的0和1,于 是在1946年诞生了世界上第一台电子计算机ENIAC。 它用二进制代替十进制完成了复杂的数值运算。但 是运算指令和数据还是通过重新连接电路和设定开 关来完成。通过实践,冯· 诺依曼又提出存储程序的 概念,即将运算指令和数据用数字(二进制)的方式存 放在电子计算机的存储器中,即用程序来控制计算 机的操作。这就是著名的冯· 诺依曼原理——“二进 制和程序存储控制”的计算机结构思想。现在的计 算机都基于冯· 诺依曼原理,因此称为冯· 诺依曼计算 机。
21
图
Thompson(左)和Ritchie(中)于1999 年接受当时美国总统克林顿授予的国家技术勋章
22
1978年 Brian W.Kernighan和Dennis M.Ritchie合著 了《The C Programming Language》一书。 后 来 , 美 国 国 家 标 准 协 会 ANSI(American National Standard Institute)又推出了新的标准 C。 1988 年 K&R 按国家标准重写了他们的经典著作 《The C Programming Language》。 1980年贝尔实验室的Bjarne Stroustrup 开始对C语 言进行改进和扩充。 1983 年正式取名为 C++(使用了C语言中的自增 运算符++,表示是C的进一步扩充和改进)。 由于C++的出现,有人称原来的C为“传统的C”。
C程序设计教程
谭浩强主编 卜家岐,范燮昌编著
电子教案
1
C语言是一门计算机语言, 是实现人和计算机信息交互所需 要用的高级语言。
2
第1章
C语言概述
本章要点: ● 了解C语言在开发计算机应用软件和系统软件 中的重要作用。 ● 理解冯· 诺依曼计算机的概念。 ● 建立字节,内存单元,地址和指针的概念; 掌握变量读写的两种方式。 ● 了解结构化程序设计中三种基本结构的概念。 ● 掌握C程序的组成和函数的概念。 ● 上机熟悉开发C程序的集成环境,区分源程序, 目标程序和可执行程序的关系。
19
1.4.2 结构化程序设计方法 荷 兰 学 者 E.W.Dijkctra 提 出 结 构 化 程 序 设 计 ( Structured Programming— 简称 SP)的理论。结构 化程序设计原则: 1. 自顶向下,逐步细化 2. 清晰第一,效率第二 3. 书写规范,缩进格式 4. 基本结构,组合而成 C 语言完全支持结构化程序设计,它有多种结 构化语句 (如 if语句 ,while语句 ,do_while语句以及 for 语 句等)供用户在不同场合选用。