程序

程序由一系列指令组成,包括输入、输出、基本运算、分支和循环等组成。编写程序就是把复杂的任务分解成多个子任务,在把子任务再分解成更简单的任务,这样一层层的分解下去,直到最后简单得可以用基本指令来完成。

编程语言

编程语言分为低级语言和高级语言。低级语言包括机器语言和汇编语言,直接使用计算机指令编写程序。像C/C++、Java、Python、Golang等编程语言都属于高级语言,高级语言最后要被编译或解释为机器指令才能被计算机执行。

用C语言编写的程序也必须被编译成机器指令才能被计算机执行。编译过程:使用文本编辑器编写C程序,然后保存为xxx.c文件,称之为源代码,然后使用编译器将其编译为机器指令,生成可执行文件,如a.out,可执行文件可以***作系统加载并执行。

还有一些高级语言是以解释的方式执行的,程序在运行时逐行解释执行,而不是先生成包含机器指令的可执行文件。

程序的调试

编程是一件复杂的事情,在这个过程中,难免会出现一些Bug(程序中的错误),找到这些Bug并加以纠正的过程就叫做调试(Debug)。学会Debug之前,我们应该要知道程序中的Bug分为哪几类。

  • 编译时错误
    编译器只能翻译语法正确的程序,否则将导致编译失败。
  • 运行时错误
    编译器检查不出这类错误,仍然可以生成可执行文件,但在运行时会出错而导致程序崩溃。我们应该时刻注意区分编译时和运行时(Run-time)这两个概念。
  • 逻辑错误和语义错误
    如果程序里有逻辑错误,编译和运行都会很顺利,看上去也不产生任何错误信息,但是程序没有***该干的事情,而是干了别的事情,得不到我们预想的结果。

Hello,World

用C语言编写打印输出Hello,World的程序。

include <stdio.h>
/* main: generate some simple output. */
int main(void)
{
    printf("Hello,World.\n");
    return 0;
}

将这个程序保存成main.c,然后编译执行:

$ gcc main.c
$ ./a.out
Hello,World.

gcc是Linux平台的C编译器,编译后在当前目录下生成可执行文件a.out,直接在命令行输入这个可执行文件的路径就可以执行它。如果不想把文件名叫a.out,可以用gcc的-o参数自己指定文件名:

$ gcc main.c -o main
$ ./main
Hello,World.

C程序总是从main里面的第一条语句开始执行的。