1972年贝尔实验室的Dennis Ritch和Ken Thompson在开发UNIX操作系统时设计了C语言。不过C语言也不是里奇突发奇想而来的,它是在B语言基础上设计得到的。 C语言设计的初衷是作为程序员使用的一种编程工具,其主要目标是成为有用的语言。
C语言强调自顶向下的规划、结构化编程和模块化设计。
设计规划方法存在两种,一种是自顶向下,另一种是自底向上。
自顶向下指的是我们从抽象的角度出发去定义问题,并把问题拆解。自顶向下最重要的是 定义问题,而定义问题的前提是知道问题的定义。
自底向上指的是我们从多个个例出发去推导,然后对问题进行建模。
两种方法的根本区别就在于:自顶向下的分析是从抽象到具体;自底向上的分析是从具体到抽象。两种思路恰好是哲学思考问题的两大方向。
结构化编程和面向对象编程是程序设计的两种思路。
结构化编程的主要思路是将一个大问题分解为多个小问题解决,再针对每一个小问题编写方法。总体上来说,是先构建一个主过程来启动程序流程,随后根据程序走向来调用相关函数的过程。
面向对象编程采用了一种完全不同的方法来开发计算机应用程序。在这种方法中,程序不是围绕着要解决的任务来设计,而是围绕着要解决的问题中的对象来设计。对于每个对象,程序员可以建立一个类来描述对象的特有的属性和行为。类是对象的一种抽象,而对象是类的一个实例。类中的每个成员变量对应着对象的每个属性,而类中的每个方法对应着对象的每个行为。
C语言具有如下优点:(1)强大的控制结构 (2)快速 (3)代码紧凑-程序更小 (4)可移植到其他计算机
(1)定义程序的目标:理清解决问题的思路。在这一步骤中,不涉及具体的计算机语言,应该用一般术语来描述问题。
(2)设计程序:这部分还是用一般术语来描述问题,描述各个模块。
(3)编写代码:把设计好的程序翻译成C语言。
(4)编译:编译器把源代码转换成可执行代码的程序并检查C语言程序是否有效。一旦编译器发现错误,就不生成可执行文件并报错。在生成可执行文件的过程中,编译器先是将源代码(.c形式)转为目标代码(.obj形式),然后再配合链接器将库代码和启动代码的部分融入进来,最终得到可执行代码(.exe形式)
(5)运行程序:可执行的文件就是可运行的程序,能够在操作系统中运行。
(6)测试和调试程序:查找并修复程序错误的过程叫做调试。在这里特意强调一下VScode下C语言程序调试的方法,如下所示。
首先安装Mingw-w64和VScode中必要的插件,如下图所示: 然后配置launch.json文件
上图中的第20行是debugger的路径,这一部分需要按照自己Mingw-w64的安装路径来填写。
在调试的时候,我们先设置好断点,然后在terminal中输入以下指令,
gcc -g -o xxx xxx.c
上述指令中,我们先将源代码编译成目标代码,-g标记出需要调试的文件,此时再按debug键就可以进入调试界面。
(7)维护和修改代码:创建完程序后,发现程序有错或者需要扩展程序的用途,就需要修改程序。
本文章使用limfx的vsocde插件快速发布