前言
C语言是面向过程的高级计算机语言,学习它有助于我们学习和理解数据结构,运用算法解决问题。
该章节涉及的知识点,既是基础也是提炼,初学者可能会看不懂,如果看不懂先可以跳过一些知识点或者看下一章,待学完相关知识点再来回顾
一、什么是计算机程序
指令:能够被计算机识别并执行的基本操作命令
比如:叫小狗“坐下”,小狗便坐下了,那么对小狗来说,“坐下”就是指令;因为小狗识别了“坐下”并且执行了。
程序:就是一组计算机能识别和执行的指令。其实就是一个特定的指令序列,用来完成一定的功能。
比如:接上面的例子,叫小狗“坐下”,再“站起来”,再“转个圈”,小狗按照你的指令完成了表演;其实就是你给小狗发布了段程序,然后小狗完美完成了。
二、什么是计算机语言
计算机语言:一种计算机和人都能识别的语言。其实就是人和计算机沟通的语言。
比如:我们之间交流用中文、英文。
1.机器语言
二进制:计算机工作基于二进制,从根本上说,计算机只能识别和接受由0和1组成的指令。
比如:用1011011000000000表示让计算机进行一次加法运算。
机器指令:计算机能直接识别和接受的二进制代码。
比如:上面提到的加法运算。
机器语言:机器指令的集合就是该计算机的机器语言。该语言的规则中规定了各种指令的表达形式以及它的作用。
比如:加法运算有机器指令,减法、乘法、除法等运算也有其对应的机器指令。
特点:难学,难写,难记,难检查,难修改,难推广使用。
试问,面向一堆0和1编程,还怎么快乐摸鱼,直感觉眼前一堆的坑。
2. 汇编语言
汇编语言(也称符号语言):机器语言的符号化,用一些英文和字母表示一个指令。
比如:用ADD代表“加”,SUB代表“减”,LD代表“传送”等。
上文用1011011000000000表示的加法运算,用汇编语言可以写成 ADD A,B(执行A+B=>A)
汇编程序:汇编语言的指令不能被计算机直接识别和执行,需要“翻译”成机器指令后才能被识别和执行,这个“翻译”软件就是汇编程序。
一条汇编语言的指令,对应转换为一条机器指令。
特点:完全依赖于具体机器特性,是面向机器的语言,可移植性低。故称为计算机低级语言。
3. 高级语言
高级语言:很接近于人们习惯使用的自然语言和数学语言。
比如:想计算和输出3.5*6sin(π/3),用C语言表达是:
printf("%lf", 3.5 * 6 * sin(3.14 / 3)); //#include<math.h>
特点:功能很强,且不依赖与具体机器,可移植性强。故称为计算机高级语言。
编译程序:高级语言程序(源程序)也是不能被计算机直接识别和执行的,也需要“翻译”成机器指令(目标程序)后才能被识别和执行,这个“翻译”软件就是编译程序。
高级语言的一个语句往往对应对条机器指令。
源程序:用高级语言写的程序
目标程序:机器指令的程序
高级语言的发展
1.非结构化的语言:
- 编程风格比较随意,只要符合语法规则即可,没有严格的规范要求,程序中的流程可以随意跳转。
- 程序难以阅读和维护。
- 早期的BASIC,FORTRAN,ALGOL
2.结构化的语言:
- 为了解决以上问题,规定程序必须由具有良好特性的基本结构(顺序结构、选择结构、循环结构)构成,程序中的流程不允许随意跳转,程序总是自上而下顺序执行各个基本结构。
- 这种程序结构清晰,易于编写、阅读和维护。
- QBASIC,FORTRAN 77,C语言
3.面向对象的语言:
- 在处理规模较大的问题时,面向过程的语言不满足我们的需求,人们开始使用面向对象的语言。
- 对象是由数据以及对数据进行的操作组成的。
- C++,C#,Visual Basic,Java
三、C语言的发展及特点
最初的C语言只是为描述和实现UNIX操作系统提高一种工作语言而设计的。
C语言是一种用途广泛、功能强大、使用灵活的过程性编程语言,即可用于编写应用软件,又可以用于编写系统软件。
C语言特点
1.语法简洁、紧凑,使用方便、灵活:C语言一共只有37个关键字、9种控制语句,程序书写形式自由,主要用小写字母表示。
实际上,C是一个很小的内核语言,只包括极少的与硬件有关的成分,C语言不直接提供输入和输出语句、有关文件操作的语句和动态内存管理的语句等,这些操作是由编译系统所提供的库函数来实现的。
2.运算丰富:共有34种运算符,C语言把括号、复制和强制类型转换等都作为运算符处理
3.数据类型丰富:整型、浮点型、字符型、数组类型、指针类型、结构体类型、共用体类型、复数浮点类型、超长整型、布尔类型。
4.具有结构化的控制语句:if…else语句,while语句,do…while语句,switch语句,for语句。