C语言设计基础知识
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1.5 简单的C程序介绍
例 1.1 输出一行信息 #include <stdio.h> main ( ) { printf ("This is a C program.\n"); } 本程序的作用是输出以下一行信息: This is a c program.
例 1.2 求两个数的和
#include <stdio.h> main ( )/*求两数之和*/ {
总线
控制单元
指令寄存器 程序计数器
输入/输出(I/O)系统
总线
总线
键盘,显示器,打印机,硬盘,光驱,软驱等
计算机组成结构图
1.6.2 CPU控制程序的执行过程
算术逻辑单元
控制单元
R1 R2 R3 I
070
PC
070
Load 200 R1
071
Load 201 R2
072
Add R1 R2 R3
073
int a,b,sum; /*这是定义变量*/ a=123; b=456; /* 以下3行为C语句 */ sum=a+b; printf ("sum is %d/n", sum); }
例1.3 求2个数中的较大者
#include <stdio.h>
Void main ( )
/* 主函数*/
{int max(int x,int y); /*对被调用函数max的声明*/
第1章 基础知识
1.1 程序设计语言的演化 1.2 C语言的发展 1.3 程序的构建 1.4 C语言的集成开发环境 1.5 简单的C程序介绍 1.6 计算机的基本组成及其计算模 型
1.1 程序设计语言的演化
程序设计语言(有时也称为计算机语言)是指根 据预先定义的规则(语法)而写出的预定语句的 集合,这些语句组成了程序。
1.2 C语言的发展
1960年艾伦.佩利等推出的面向问题的高级语言ALGOL 60是程 序设计语言发展史上的里程碑。
1963年英国的剑桥大学在ALGOL 60的基础上推出了CPL (combined programming language)语言。CPL语言比ALGOL 60接近硬件,但规模比较大难以实现。
1.3.2 编译程序
程序编辑完成后,要想在计算机上运行必须 先转换成为计算机可以识别的机器语言,这个过 程称为编译程序。
对源文件进行编译的软件称为编译器。编译 器实际上是由两个独立的程序组成:预编译程序 和翻译程序。
源文件经过编译后得到的文件称为目标文件 或目标程序,目标文件由机器指令组成。
1.3.3 连接程序
int a, b, c;
/*声明部分,定义变量*/
scanf (“%d,%d”,&a,&b);
/*输入变量a和b的值*/
c=max (a,b);
/*调用max函数,将得到的值赋给c*/
printf ("max=%d",c);
/*输出c的值*/
}
/* 以下为实现max函数的代码*/
int max(int x,int y) /* 定义max函数值为整型, 形式参数x,y为整型*/
计算机程序设计语言经历了以下几个演化期:
机器语言:每条语句都是由0和1组成的字符串。
符号语言(汇编语言):用符号或助记符来代替 机器指令。符号语言在运行前必须翻译成机器指 令,这个过程称为汇编。
高级语言:在运行前也必须翻译成机器指令,这 个过程称为编译。
自然语言:直接用自然语言编程,目前只是设想。
算术逻辑单元
控制单元
14
R1
-10
R2
4
R3
Add R1 R2 R3
I
072+1=073
PC
070
Load 200 R1
071
Load 201 R2
072
Add R1 R2 R3
073
Store 202 R3
200
14
201
-10
202
执行第3条指令后内存和寄存器中的内容
算术逻辑单元
控制单元
14
Store 202 R3
200
14
201
-10
202
执行前内存和寄存器中的内容
算术逻辑单元
控制单元
14
R1
R2
R3
Load 200 R1
I
070+1=071
PC
070
Load 200 R1
071
Load 201 R2
072
Add R1 R2 R3
073
Store 202 R3
200
14
201
-10
R1
-10
R2
4
R3
Store 202 R3
I
073+1=074
PC
070
Load 200 R1
071
Load 201 R2
072
Add R1 R2 R3
073
Store 202 R3
200
14
201
-10
202
4
执行第4条指令后内存和寄存器中的内容
{int z;
/* max函数中的声明部分,定义本函数中用到的变量z为整型*/
if (x>y) z=x;
Fra Baidu bibliotekelse z=y;
return (z);
/*将z的值返回,通过max带回调用处*/
}
1.6 计算机的计算模型
1.6.1 计算机的主要组成部分
CPU
主存储器(内存)
算术逻辑单元
数据寄存器 数据寄存器
1.3 程序的构建
程序从创建到执行总共要经历以下4步: 编辑程序 编译程序 连接程序 执行程序
1.3.1 编辑程序
所谓编辑程序就是将程序写入计算机,并随 时检查和修改相应的书写或语法错误的过程。用 来编辑程序的软件称为程序编辑器。
程序编辑完毕后,通常要将程序程序保存在 硬盘上,保存后的文件称为源文件或源程序。
右图给出了C程序从 创建到执行的整个过程。
一般来说,程序从 编辑到最终顺利执行并 非一气呵成,需要经过 反复修改错误,这个过 程称为程序调试。
1.4 C语言的集成开发环境
由前面的介绍可以知道,要想在计算机上使 用C语言编制程序并调试运行,必须先要在机器 上安装编辑器﹑编译器﹑连接器等软件。
许多公司都提供了包含上述软件的C语言集 成开发工具,比如Borland公司的Turbo C ﹑ Turbo C++ ﹑ C++ Builder,以及微软公司的 VC++等。这些开发工具集成了程序编辑﹑程序编 译﹑程序连接等功能,比较容易上手。
202
执行第1条指令后内存和寄存器中的内容
算术逻辑单元
控制单元
14
R1
-10
R2
R3
Load 201 R2
I
071+1=072
PC
070
Load 200 R1
071
Load 201 R2
072
Add R1 R2 R3
073
Store 202 R3
200
14
201
-10
202
执行第2条指令后内存和寄存器中的内容
将源程序编译成为机器语言组成的目标程序 并不能直接运行,因为它不具备程序运行需要的 所有部分。
高级语言有许多的子程序。其中一些子程序 是程序员自己编写,有时某些子程序与源程序并 不保存在同一个文件中。即便是所有的子程序都 保存在一个源文件中,还有一些诸如输入/输出处 理和一些数学函数的实现代码并不存在源文件中 且在运行时必须附加到源程序中,这是必须将这 些分散的部分连接起来才能执行。实现连接功能 的软件称为连接器。经过连接后得到的文件(程 序)成为可执行文件(程序)。
1967年英国剑桥大学的Martin Richards对CPL语言做了简化, 推出了BCPL (basic combined programming language) 语言。
1972年至1973年间,贝尔实验室的D.M.Ritchie在BCPL语言的 基础上设计出了C语言。与此同时, D.M. Ritchie的合作伙伴 K.L.Thompson使用汇编语言开发出UNIX操作系统, Ritchie用 C语言将UNIX重新开发了一遍,使得UNIX操作系统具备了良 好的可移植性,从而迅速流传推广开来。
1.3.4 执行程序
一旦程序被连接好之后,它就可以执行了。 在windows环境下双击可执行文件(在命令环境 下输入可执行文件名然后回车)可执行该文件。
在程序执行之前,要先将该程序由硬盘载入 到内存中(这个工作由操作系统程序完成), CPU从内存中依次读取该程序的指令(可执行程 序)并按照指令执行相应操作。待程序执行完后, 它告知操作系统,操作系统将程序移出内存。