什么是计算机程序

程序:就是一组计算机能识别和执行的指令

计算机的一切操作都是由程序控制的,离开程序,计算机将一事无成。

计算机的本质是程序的机器,程序和指令是计算机系统中最基本的概念。

什么是计算机语言

计算机语言:计算机和人都能识别的语言

低级语言

面向机器的语言称为低级语言

机器语言

机器指令:计算机能直接识别和接受的二进制代码

机器语言:机器指令的集合技术该计算机的机器语言

汇编语言[符号汇编语言、符号语言]

符号语言:用一些英文字母和数字表达一个指令

例如:ADD代表加,SUB代表减,LD代表传送

计算机并不能直接识别和执行符号语言的指令,需要用一种称为汇编程序的软件,把符号语言转换为机器指令。

一般,一条符号语言的指令对应转换为一条机器指令,转换的过程称为“代真”或“汇编”。

符号语言又称为符号汇编语言或汇编语言

高级语言

不依赖于具体机器的语言称为高级语言

计算机也是不能直接识别高级语言程序的,也要进行“翻译”。

用一种称为编译程序的软件把高级语言写的程序(称为源程序)转换为机器指令的程序(称为目标程序),然后计算机执行机器指令程序,得到最后的结果。

高级语言的一个语句往往对应多条机器指令。

 

高级语言经历了不同的发展阶段:

  1. 非结构化的语言
  2. 结构化语言
  3. 面向对象的语言

C语言的发展及其特点

发展

C语言是国际上广泛流行的计算机高级语言。

C语言是一种用途广泛、功能强大、使用灵活的过程性编程语言,既可用于编写应用软件,又能用于编写系统软件 。

特点

C语言有以下一些主要特点:

  1. 语言简洁、紧凑,使用方便、灵活
  2. 运算符丰富
  3. 数据类型丰富
  4. 具有结构化的控制语句
  5. 语法限制不太严格,程序设计自由度大
  6. C语言允许直接访问物理地址,能进行位(bit)操作,能实现汇编语言的大部分功能,可以直接对硬件进行操作
  7. 用C语言编写的程序可移植性好
  8. 生成目标代码质量高,程序执行效率高

最简单的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、以/*开始,以*/借书的块式注释,这种注释可以包含多行内容,也可以独占一行

运行结果如下:

程序设计和C语言_源程序

/*
* 例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
}//函数结束的标志

运行结果如下:

程序设计和C语言_高级语言_02

/*
* 例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 函数的位置
}

运行结果如下:

程序设计和C语言_机器指令_03

运行时会报错误:

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源程序后,上位机进行编译和运行一般要经过以下几个步骤:

  1. 上位机输出和编译源程序
  2. 对源程序进行编译,先用C编译系统提供的“预处理器”(又称“预处理程序”或“预编译器”)对程序中的预处理指令进行编译预处理。由预处理得到的信息与程序其他部分一起,组成一个完整的、可以用来进行正式编译的源程序,然后由编译系统对该程序进行编译
  3. 进行连接处理
  4. 运行可执行程序,得到运行结果

程序设计的任务

程序设计是指从确定任务到得到结果、写出文档的全过程

从确定问题到最后完成任务,一般经历以下几个工作阶段:

  1. 问题分析
  2. 设计算法
  3. 编写程序
  4. 对源程序进行编辑、编译和连接
  5. 运行程序,分析结果
  6. 编写程序文档

 

作者:EricsT