C语言概述:什么是计算机程序--什么是计算机语言-- C语言的特点--C语言程序结构--运行C程序的步骤和方法
一,什么是计算机程序
1,指令:可以被计算机理解并执行的基本操作命令,那么指令的本质又为0101010110等的二进制数字,16个0或1这样的二进制数组成一条指令。
2,程序:一组计算机能识别和执行的有序的指令(程序是由有序的指令组成的),一个特定的指令可以用来完成一定的功能。
3,软件:软件是指使计算机运行所需的程序、数据和有关文档的总和。(软件=程序+数据+文档)
二,什么是计算机语言
1,机器语言:
!-----概念:由0和1二进制数组成,以不同的01数量和01排列,来向计算机表达不同的操作指令。
@-----优点:这种语言编程质量高,所占空间少,执行速度快,是计算机唯一能够直接执行的语言
#------缺点:不易学习和修改程序,且不同类型的机器,其机器语言不同,只适合专业人员使用,现在几乎已经没有人用机器语言直接编程了。且可读性,移植性差。
2,汇编语言
!-----概念:使用一些特殊的符号(助记符),来表达对应的01二进制数的组合。(说白了就是使用助记符帮助记忆二进制数的不同组合)
@-----优点:汇编语言一定程度上克服了机器语言难读难改的缺点,同时保持了其编程质量高、所占存储空间少、执行速度快(相对于高级语言),好记忆的优点。
#------缺点:计算机不可直接对其进行识别,需要使用“汇编程序的软件”这样的媒介,来完特殊符号转变为01二进制的操作。且不同型号的计算机的将其语言和汇编语言是不通用的
3,机器语言和汇编语言的区别点:机器语言和汇编语言是完全依赖于具体机器特性的,是面向机器的语言由于它“贴近”计算机,或者说离计算机“很近”,称为计算机低级语言
4,高级语言:
!-----概念:例如,面向过程的 Fortran、Pascal、C 等,面向对象的 C++、JavaVBASIC等。
@---- 优点:语言功能强,不依赖于具体机器和设备,用它写出的程序对任何型号的 计算机都适用(或只须作很少的修改),程序易学、易读、易修改,通用性好。
#-----缺点:计算机不可直接对其进行识别,需要使用“编译程序的软件”这样的媒介,来完成高级语言转变为01二进制的操作,相对来将高级语言是前两者的执行速度是最慢的。
5,汇编语言和高级语言的共同点:
!-----综述:两者都需要某种程序的参与,因为他们都不是直接的01二进制数组成的,是需要经过汇编程序来进行一个代码”翻译“01二进制数的操作的。
@----汇编程序:把符号语言的指令转换为机器指令的软件。
#-------汇编语言的被解释的方式:用汇编语言编制的程序(称为源程序)必须经过汇编程序(一种语言处理程序)翻译成计算机所能识别的机器语言程序(也称为目标程序)后,才能被计算机执行。(可以理解为下图)
%-------高级语言的被解释的方式:用高级语言编写的源程序也不能直接执行,需要通过高级语言的编译程序将高级语言所编写的源程序翻译成等价的用机器语言表示的目标程序 )
三:C语言的特点 (认识C语言)
1,C语言一共只有 37 个关键字、9 种控制语句,程序书写形式自由,和早已编写好了的库函数。
!-----C语言中的37个关键字:
@----9 种控制语句:
2,运算符丰富:C 语言的运算符包含的范围很广泛,共有 34 种运算符。 主要有算术运算符、关系(比较)运算符、逻辑运算符等。
3,数据类型丰富:C 语言提供的数据类型包括:整型、浮点型、字符型、 数组类型、 指针类型、结构体类型和共用体类型等。
4,具有结构化的控制语句:用函数作为程序的模块单位,便于实现程序的 模块化。C 语言是完全模块化和结构化的语言。
5,语法限制不太严格,程序设计自由度大。
6,用 C 语言编写的程序可移植性好。(不需要经过大量的修改或者不修改就可以到其他的地方正常运行)
7,生成目标代码质量高,程序执行效率高。可移植性好硬件控制能力高
四,C语言的注释
1,以// 开始的单行注释。// 开始,换行符结束。不可跨行。
2,以/* 开始, */ 结束的块式注释。可单独占一行 (在行开头以 /* 开始,行末以 */ 结束) 也可以包含多行
3,注意:在字符串中出现的//和/* */,不会作为注释的开始,而是字符串的一部分。
五:C语言程序结构(认识C语言)
1,一个程序由一个或多个源程序文件组成,在一个源程序文件中可以包含3个部分
!---预处理指令:如#include stdio.h>(还有一些其他预处理指令,如#define等)。C 编译系统在对源程序进行“翻译”以前,先由一个预处理器(也称预处理程序、预编译器)对预处理指令进行预处理,对于#include stdio.h>指今来说,就是将 stdio.h 头文件的内容读进来,放在include 指令行。由预处理得到的结果与程序其他部分一起,组成一个完整的、可以用来编译的最后的源程序,然后由编译程序对该源程序正式进行编译,才得到目标程序。
@---全局声明:在函数之外进行的数据声明。如“int a.b;”,放到 main 函数的前面是全局声明,在函数外声明的变量是全局变量,在函数中声明的变量是局部变量
#---函数定义:函数是C程序的主要组成部分,被调用的函数可以是系统提供的库函数(例如 printf 函数和 scanf 函数),也可以是户根据需要自己编制设计的函数。函数用来实现特定的功能,程序的全部功能都是由各个函数分别完成的。编写 C程序就是编写一个个的函数。
2,函数是 C 程序的主要组成部分。
!-----一个C语言程序是由一个或多个函数组成的,程序的几乎全部工作都是由各个函数分别完成的,函数是 C 程序的基本单位。
@-----必须有且只能有一个主函数main(),可以放在程序中任一位置。
#-----程序执行从main开始,在main中结束,其它函数通过嵌套调用得以执行。
3,一个函数包括两个部分
4,程序中对计算机的操作是由函数中的 C 语句完成的:一行可写多条语句, 但习惯每行只写一个语句。
5,在每个数据声明和语句的最后必须有一个分号
6,C 语言本身不提供输入输出语句:输入和输出的操作是由库函数 scanf 和 printf 等函数来完成的。
7,程序应当包含注释。
8,习惯用小写字母,大小写敏感。
六:计算机运行C程序的步骤和方法的本质
-----------------------C程序的运行步骤主要分为:编辑(编写)源程序;编译预处理;编译;汇编; 连接(链接);执行步骤-----------------------------
1.编辑:上机输入和编辑源程序(人为手动敲)-----------源程序文件,用.c为后缀的文件描述如:f.c
2.编译预处理(编译之前做的准备工作):
!----概念:预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前利用“预处理器”,例如,对于#include stdio.h>指令来说,就是将 stdio.h头文件的内容读进来,取代#include stdioh>行。(预处理程序)所作的工作其主要功能的组成是由很多预处理命令组成的。
@----预处理功能主要包括:宏定义、文件包含、条件编译。
#-----预处理特点:
1 只是替代功能,不进行语法检查;
2 预处理命令在通常编译之前进行,即对预处理里后的结果进行编译,这时 进行词法和语法分析;
3 预处理命令后不加分号;
4 预处理命令都以#号开头
5 程序在编译预处理时,将每个注释替换为一个空格,因此注释部分不产生目标代码
%----此过程文件由f.c----f.i
3,编译:
!-----概念:源文件被预处理之后,再以字符流的形式进行处理,进行词法和语法的分析,然后通过汇编器将源代码指令转变成汇编指令、生成相应的汇编文件,如有错误则发出“出错信息”,告诉编程人员认真检查改正。
@----词法分析:将一长串的代码分割为若干部分,让编译器知道哪里是循环,哪里 是main函数
¥----语法分析:将若干部分串回来,让编译器判断代码是否符合规定的法则
%-----语义分析:在将代码翻译为汇编代码之前,也要让编译器知道代码是怎么做的 (但是它不能判断其是否符合逻辑)
#-----此过程文件由f.i-----f.s
4. 汇编
!-----概念:将编译产生的汇编代码翻译为机器能直接接收的二进制指令(机器指令)。
@----此过程文件由f.s----f.obj
5. 链接:
!----概念:把所有的编译后得到的目标模块连接装配起来,再和函数库相连接成一个整体, 生成一个可供计算机执行的目标程序(.exe),称为可执行程序.exe。
@----此过程文件由f.obj----f.exe
6,库函数:C语言库函数是把常用的功能和模块以自定义函数的方式放到库里,是别人把一些常用到的函数编完放 到一个文件里,供程序员使用。程序员用的时候把它所在的文件名用#include<> 加到里面就可以了(尖括号内填写文件名),例如#include<math.h>。