1.1 计算机组成
1946年2月14日,由美国军方定制的世界上第一台电子计算机"电子数字积分计算机"(ENIAC Electronic Numerical And Calculator)在美国宾夕法尼亚大学问世。
计算机(俗称电脑)堪称是人类智慧的结晶,随着计算机的不断发展,各行各业的正常运转基本都 离不开计算机,计算机为人们的日常生活带来了快捷和方便。那么作为一个时时刻刻都在跟计算机打交 道的"程序猿",对计算机又了解多少呢?下面让我们一起来学习计算机的组成及工作原理吧。
计算机由硬件系统 和软件系统所组成。
- 硬件系统由 运算器、 控制器、 运算器(Datapath) 存储器、 输入设备、 输出设备5大部件组成
- 运算器(Datapath)
运算器的功能是对数据进行各种算术运算和逻辑运算,即对数据进行加工处理。
- 控制器(Control)
是整个计算机的中枢神经,其功能是对程序规定的控制信息进行解释,根据其要求进行控制,调度 程序、数据、地址,协调计算机各部分工作及内存与外设的访问等
运算器和控制器都集成在一颗称之为CPU的中央处理单元芯片上:

- 存储器(Memory)
存储器是计算机系统中的记忆设备,用来存放程序和数据 。计算机中全部信息,包括输入的原始数 据、计算机程序、中间运行结果和最终运行结果都保存在存储器中。存储器分为内存和外存。
内存:

外存:

- 输入设备
输入设备是计算机的重要组成部分,输入设备与输出设备合称为外部设备,简称外设,输入设备的 作用是将程序、原始数据、文字、字符、控制命令或现场采集的数据等信息输入到计算机。常见的 输入设备有键盘、鼠标、磁带机、磁盘机、光盘机等。

- 输出设备
- 输出设备与输入设备同样是计算机的重要组成部分,它把计算机的中间结果或最后结果、机内的各 种数据符号及文字或各种控制信号等信息输出出来。常用的输出设备有显示器、打印机、磁带、光盘机等

2.软件系统
软件系统可以分为:系统软件 和应用软件

1.2计算机语言
1、软件(程序)是指令的集合
2、程序就是用计算机语言来编写或者开发的。
3、计算机语言总的来说分为 机器语言,汇编语言,高级语言三大类,而这三种语言也恰恰是计算机语 言发展历史的三个阶段。
- 1946年2月14日,世界上第一台计算机ENAC诞生,使用的是最原始的穿孔卡片。这种卡片上使用 的语言是只有专家才能理解的语言,与人类语言差别极大,这种语言就称为机器语言(使用 0和1 的二进制码)。机器语言是第一代计算机语言。这种语言本质上是计算机能识别的唯一语言,人类 很难理解。以后的语言就是在这个的基础上简化而来。

- 计算机语言发展到第二代,出现了汇编语言。汇编语言用助记符代替了操作码,用地址符号或标号代替地址码。这样就用符号代替了机器语言的二进制码。汇编语言也称为符号语言。

- 当计算机语言发展到第三代时,就进入了"面向人类"的高级语言。高级语言是一种接近于人们使用 习惯的程序设计语言。它允许用英文写计算程序,程序中的符号和算式也与日常用的数学式子差不多。

- 计算机语言发展到今天可以说几乎是形成了"百家争鸣"的局面。
1.3 C语言发展历史及特点
1、1972 年,美国 AT&T 公司贝尔实验室(AT&T Bell Laboratory)的丹尼斯·里奇 为了开发Unix操作 系统在B语言的基础上最终设计出了一种新的语言,他以 BCPL 的第二个字母作为这种语言的名字,即C 语言。

2、1970到80年代,C语⾔被⼴泛应⽤,从⼤型主机到⼩型微机,从中也衍⽣了C语⾔的很多不同版本。 为统⼀C语⾔版本,1983年ANSI 美国国家标准学会( American National Standards Institute)成立 了⼀个委员会来制定C语⾔标准。1989年C语⾔标准被批准,这个版本的C语⾔标准通常被称为ANSI C。⼜由于这个版本是 89 年完成制定的,因此也被称为 C89。后来 ANSI 把这个标准提交到 ISO,1990 年被 ISO 采纳为国际标准,称为 ISO C。⼜因为这个版本是1990年发布的,因此也被称为C90。
3、C语言发展时间轴

1.4 C语言的应用
1、 C语言应用场景
- 系统软件开发
- 操作系统:UNIX、Windows、Linux。
- 驱动程序:比如主板驱动、显卡驱动、摄像头驱动。驱动一般是用C语言和汇编语言写的,C++在这方面稍弱。
- 数据库:SQL Server、Oracle、MySQL、DB2。
- 应用软件开发
- 办公软件:WPS。
- 图形图像多媒体:Photoshop、Mediaplayer。
- 嵌入式软件开发:在嵌入式平台(比如:路由器、导航仪、机顶盒、手机、工控设备、汽车电子等)上进行的应用软件开发。
- 游戏开发:2D、3D 游戏。CS 整个游戏的引擎全部是用纯C写的
2、C语言在所有编程语言中的江湖地位

1.5 手把手教你搭建C语言开发环境
Jetbrains旗下产品之一,主要用来开发C/C++
1、 CLion的安装
- Clion下载
- 安装
双击下载的安装包

点击"Next"进入下一步

选择CLion的安装路径,注意:不要选择带中文的路径,点击"Next"进入下一步

勾选所有选项,然后点击"Next"进入下一步

点击"Install"

耐心等待

勾选"I want to manually reboot later",点击"Finish"完成安装

安装完毕后,回到电脑桌面,运行程序

选择"Do not import settings"然后点击"OK"

CLion是需要付费的,但是我们可以选择免费使用30天

点击"Continue"

2、MinGW的安装
- CLion虽然已经安装完毕,但是还不具备程序编译和调试功能
- 下载MinGW:MinGW-w64 - 适用于 32 位和 64 位 Windows - 浏览 /工具链 针对 Win64/Personal Builds/mingw-builds SourceForge.net
- 注意:千万不要点绿色按钮去下载!!!

往下拉,一直拉到下面的界面,然后点击"x86_64-posix-sjlj"就可以下载压缩包了。

安装包下载完后,拷贝至C盘并且解压

3、配置CLion
- 打开CLion后鼠标点击"Customize",然后点击"All settings"进入设置界面

在设计界面搜索栏输入"toolchains"搜索工具链选项,然后点击"+",并且选择"MinGW"

在"Environment"栏填入刚刚解压的MinGW64的路径,然后CLion会自动帮你填上所有你该 填的东西,点击OK,等调试的小虫子变绿就可以了。

当然,也会出现无法检测成功的情况,这时候就需要手动填写啦。
Make填入路径:
C:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\mingw32-make.exe
C Compiler填入路径:
C:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gcc.exe
注意:gcc.exe就是用来编译C语言程序的编译器
C++ Compiler填入路径:
C:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\g++.exe
注意:g++.exe是用来编译C++程序的编译器
Debugger一般会自己填入,如果没有可以手动填:
C:\x86_64-8.1.0-release-posix-sjlj-rt_v6-rev0\mingw64\bin\gdb.exe
注意:gdb.exe是用来调试C/C++程序的调试工具
然后点击OK,等一段时间就可以了。
4、使用CLion创建C语言项目
- 点击"New Project"

选择"C Executable", 然后在"Location"选项中点击右侧的文件夹图标选择项目需要创建的路 径,然后给项目命名,在这里我给项目命名为"test",最后点击"Create"


1.6 第一个C语言程序
#include <stdio.h>
int main(){
printf("hello world\n");
return 0;
}
下面我们一起来看看这个简单的C语言程序包含了哪些内容?
-
程序的第1⾏ #include<studio.h> 是预处理器指令,告诉 C 编译器在实际编译之前要包含stdio.h 这个头⽂件。
-
第3⾏ int main() 是主函数,程序从这⾥开始执⾏,最后也从这里结束。main函数是C程序的入 口和出口。
-
第4行是调用C语言中的printf函数, 其功能是将"hello world"显示在屏幕上。
-
第5行return 0 表示主函数返回0,结束主函数的执行(主函数执行完毕则代表程序运行结束 啦)。
1.7 程序的编译及运行
1、计算机只识别二进制0和1 :计算机都是大规模集成电路机,是采用大规模和超大规模的集成电路作 为逻辑元件的。电路的状态只有通和断两种情况,也叫高电平 和低电平,计算机用1和0描述这两种状态
2、用c语言编写的代码是不能够直接运行的,需要转换成计算机所识别的二进制代码,这个转换过程我 们称之为" 编译器"
3、编译器是一个可执行程序:你还记得配置CLion时选择的"gcc.exe"文件吗?
4、使用CLion编译和运行C程序
- 点击CLion菜单栏中"Build",然后在弹出的选项中点击"Build test"编译程序

点击CLion菜单栏中的"Run",然后再弹出的选项中点击"Run test"运行程序

程序运行结果

5、注意:为了避免有些同学从入门到放弃,关于C程序编译的详细步骤和原理我们放到后面做专题进行 讲解。学习是一件循序渐进的事情,等到大家经过一段时间的学习对C语言比较熟悉后我们再讲解这些 深奥的知识点时,大家才能够更好的可理解和掌握,这样才能够真正的融会贯通。
1.8 C语言的注释
- C语言中有两种注释方式,分别为:
- 单行注释
以//开始、以换行符结束的单行注释
//这是单行注释
- 多行注释
以/*开始、以*/结束的块注释
/*
这是第一行注释
这是第二行注释
*/
2、注释的使用注意事项
-
多行注释尽量写在被注释的语句之上,例如:
/*
这是第一行注释
这是第二行注释
*/
printf("我是一条被注释的可执行语句^_^"); -
单行注释可以写在被注释的语句之上, 也可以写在被注释的语句之后,例如:
//单行注释在上面
printf("我是一条被注释的可执行语句^_^"); //单行注释在后面 -
但是!但是!但是!如果你以后是在银行的操作系统上进行C语言程序开发,请一定一定一定 要将单行注释写在被注释的语句之上! 因为银行使用的是AIX操作系统(类Unix操作系 统),该操作系统上的C语言编译器不支持将注释写在后面这种语法!