什么是计算机程序
程序:就是一组计算机能识别和执行的指令
计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成。
计算机的本质是程序的机器,程序和指令是计算机系统中最基本的概念。
什么是计算机语言
计算机语言:计算机和人都能识别的语言
低级语言
面向机器的语言称为低级语言
机器语言
机器指令:计算机能直接识别和接受的二进制代码
机器语言:机器指令的集合技术该计算机的机器语言
汇编语言[符号汇编语言、符号语言]
符号语言:用一些英文字母和数字表达一个指令
例如:ADD代表加,SUB代表减,LD代表传送
计算机并不能直接识别和执行符号语言的指令,需要用一种称为汇编程序的软件,把符号语言转换为机器指令。
一般,一条符号语言的指令对应转换为一条机器指令,转换的过程称为“代真”或“汇编”。
符号语言又称为符号汇编语言或汇编语言
高级语言
不依赖于具体机器的语言称为高级语言
计算机也是不能直接识别高级语言程序的,也要进行“翻译”。
用一种称为编译程序的软件把高级语言写的程序(称为源程序)转换为机器指令的程序(称为目标程序),然后计算机执行机器指令程序,得到最后的结果。
高级语言的一个语句往往对应多条机器指令。
高级语言经历了不同的发展阶段:
- 非结构化的语言
- 结构化语言
- 面向对象的语言
C语言的发展及其特点
发展
C语言是国际上广泛流行的计算机高级语言。
C语言是一种用途广泛、功能强大、使用灵活的过程性编程语言,既可用于编写应用软件,又能用于编写系统软件 。
特点
C语言有以下一些主要特点:
- 语言简洁、紧凑,使用方便、灵活
- 运算符丰富
- 数据类型丰富
- 具有结构化的控制语句
- 语法限制不太严格,程序设计自由度大
- C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作
- 用C语言编写的程序可移植性好
- 生成目标代码质量高,程序执行效率高
最简单的C语言程序
最简单的C语言程序举例
/*
* 例1.1
* 要求在屏幕上输出以下一行信息
* This is a C program
*/
/*
stdio是“standard input & output”的缩写
.h的意思是头文件(header file)
*/
#include <stdio.h>//编译预处理器指令
/*main前面的int表示此函数的类型是int类型*/
int main()//定义主函数
{//函数开始的标志
/*
printf是C编译系统提供的函数库中的输出函数
\n是换行符
*/
printf("This is a C program\n");//输出所指定的一行信息
return 0;//函数执行完毕时返回函数值0
}//函数结束的标志
//C语言允许用两种注释方式:
//1、以//开始的但凡注释
//2、以/*开始,以*/借书的块式注释,这种注释可以包含多行内容,也可以独占一行
运行结果如下:
/*
* 例1.2
* 求两个整数的和
*/
#include <stdio.h>//编译预处理器指令
int main()//定义主函数
{//函数开始的标志
int a, b, sum;//本行是程序的声明部分,定义 a,b,sum为整型变量
a = 123;//对变量 a 进行赋值
b = 456;//对变量 b 进行赋值
sum = a + b;//进行 a+b 的运算,并把结果存放在变量 sum 中
/*
这个printf函数圆括号内有两个参数:
第一个参数是双撇号中的内容:sum is %d\n,它是输出格式字符串,作用是输出用户希望输出的字符和输出的格式
其中 sum is 是用户希望输出的字符
%d 是指定的输出格式
d 表示用“十进制整数”形式输出
第二个参数是 sum,表示要输出变量 sum的值
*/
printf("sum is %d\n", sum);//输出结果
return 0;//函数执行完毕时返回函数值0
}//函数结束的标志
运行结果如下:
/*
* 例1.3
* 求两个整数中的较大者
*/
#include <stdio.h>
//主函数
int main()//定义主函数
{//主函数体开始
int max(int x, int y);//对被调用函数 max 的声明
int a, b, c;//定义变量 a, b, c
/*
scanf是输入函数
圆括号内有两部分:
第一部分是双撇号中的内容:它指定输入的数据是按照什么格式输出
“%d”的含义是十进制整数形式
第二部分是输入的数据准备放到哪里,即赋值给哪个变量
在C语言中“&”是地址符
“&a”的含义是“变量a的地址”
“&b”的含义是“变量b的地址”
*/
scanf("%d %d", &a, &b);//输入变量 a 和 b 的值
c = max(a, b);//调用 max 函数,将得到的值赋值给 c
printf("max=%d\n", c);//输出 c 的值
return 0;//返回函数值为0
}
int max(int x, int y)//定义 max 函数,函数值为整形,形式参数 x 和 y 为整形
{
int z;//max 函数中的声明部分,定义本函数中用到的变量 z 为整形
if (x > y) z = x;//若 x > y 成立,将 x 的值赋值给 z
else z = y;//否则将 y 的值赋值给 z
return z;//将 z 作为 max 函数值,返回到调用 max 函数的位置
}
运行结果如下:
运行时会报错误:
C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS.
解决方案见如下链接:
C4996 'scanf': This function or variable may be unsafe. Consider using scanf_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. - EricsT
C语言程序的结构的特点
1、一个程序由一个或多个源程序文件组成
在一个源程序文件中可以包含三个部分:
①预处理器指令
②全局声明
在函数外面声明的变量称为全局变量
在函数中声明的变量是局部变量,只在函数范围内有效
③函数定义
2、函数是C程序的主要组成部分
函数是C程序的基本单位
在设计良好的程序中,每个函数都用来实现一个或几个特定的功能
编写C程序的工作主要就是编写一个个函数
一个C语言程序是由一个或多个函数组成的,其中必须包含一个main函数(有且仅有一个main函数)
在进行编译时是以源程序文件为对象进行的
3、一个函数包括两个部分
①函数首部:函数的第一行
包括函数名、函数类型、函数属性、函数参数(形式参数)名、参数类型
一个函数名后面必须跟一对圆括号,括号内写函数的参数名以及其类型。
如果函数没有参数,可以在括号中写void,也可以是空括号
②函数体:函数首部下面花括号内的部分
如果一个函数中包括有多层花括号,则最外面的一对花括号是函数体的范围
函数体一般包括两个部分:
- 声明部分:定义在本函数中所用到的变量,对本函数所调用的函数进行声明
- 执行部分:由若干语句组成,指定在函数中所进行的操作
在某些情况下,也可以没有声明部分,甚至可以既没有声明部分也没有执行部分。
4、程序总是从main函数开始执行
不论main函数在整个程序中的位置如何,程序总是从main函数开始执行
5、程序中对计算机的操作是由函数中的C语句完成的
6、在每个数据声明和语句的最后必须有一个分号
分号是C语句的必要组成部分
7、C语言本身是不提供输入输出语句
输入和输出的操作是由库函数scanf和printf灯函数来完成的。
C对输入输出实行“函数化”
8、程序应当包含注释
一个好的、有使用价值的源程序都应当加上必要的注释,以增加程序的可读性。
运行C程序的步骤与方法
计算机不能直接识别和执行用高级语言写的指令,必须用编译程序(也称编译器)把C源程序翻译成二进制形式的目标程序,然后再将该目标程序和系统的函数库以及其他目标程序连接起来,形成可执行的目标程序。
在编好一个C源程序后,上位机进行编译和运行一般要经过以下几个步骤:
- 上位机输出和编译源程序
- 对源程序进行编译,先用C编译系统提供的“预处理器”(又称“预处理程序”或“预编译器”)对程序中的预处理指令进行编译预处理。由预处理得到的信息与程序其他部分一起,组成一个完整的、可以用来进行正式编译的源程序,然后由编译系统对该程序进行编译
- 进行连接处理
- 运行可执行程序,得到运行结果
程序设计的任务
程序设计是指从确定任务到得到结果、写出文档的全过程
从确定问题到最后完成任务,一般经历以下几个工作阶段:
- 问题分析
- 设计算法
- 编写程序
- 对源程序进行编辑、编译和连接
- 运行程序,分析结果
- 编写程序文档
作者:EricsT