- admin 的博客
GESP 一级
- @ 2025-11-30 20:14:06
计算机基础和集成开发环境
计算机历史
世界上第一台通用电子计算机
ENIAC(埃尼阿克)是世界上第一台通用(可被编程)电子计算机(并不是世界上第一台计算机),由美国宾夕法尼亚大学于1946年研制完成的,它采用了约18000个电子管,体积巨大,重达30吨。它每秒能进行5000次加法运算,其最主要的用途是进行科学计算和武器设计,为现代计算机的发展奠定了基础。

计算机按年代分类

第一代:电子管数字机(1946-1958年),特点:体积大,功耗高,可靠性差,速度慢
第二代:晶体管数字机(1959-1964年),特点:体积小,功耗低,可靠性高,速度快
第三代:集成电路数字机(1965-1970年),特点:可靠性显著提高,速度更快
第四代:大规模集成电路计算机(1971-至今)
计算机科学家
阿兰·图灵
数学家,逻辑学家,计算机科学/人工智能之父。计算机界的最高奖项“图灵奖”以他命名,被称为“计算机界的诺贝尔奖”。
-
图灵机
图灵机是阿兰·图灵于1936年提出的一种虚拟计算模型(注意是模型而非实际制造出来的计算机),它是计算机理论的基础之一,被认为是现代计算机的原型。
图灵机的模型中包括一个无限长的纸带和一个可以在纸带上移动的读写头,纸带上被划分为一个个方格,每个方格可以写入一个符号。读写头可以读取和写入纸带上的符号,并根据一定的规则进行移动。在每一步操作中,图灵机会根据读写头所在的当前状态和读写头所指向的符号,执行一定的操作,包括读写、移动和转换状态等。通过不断的操作,图灵机可以进行复杂的计算和操作。
- 图灵奖
图灵奖是计算机科学界的最高荣誉,由ACM(美国计算机协会)每年颁发一次。
图灵奖得名于计算机科学之父、图灵机的发明者阿兰·图灵,该奖项自1966年设立以来已经颁发了50多年,是计算机领域内最负盛名的奖项之一。图灵奖的获得者通常是计算机科学领域最知名的学者和工程师,包括计算机架构、算法、编程语言、网络、人工智能等领域的专家。
冯诺依曼
冯·诺依曼,科学家,现代计算机之父,首次提出了存储程序控制原理,称为“冯·诺依曼结构”。
- 冯诺依曼结构

冯·诺依曼结构是现代计算机体系结构的基础,也称为存储程序式计算机。
冯·诺依曼结构包括五个基本部分:输入设备、输出设备、存储器、运算器和控制器。
其中存储器是最为重要的组成部分,因为它可以存储程序和数据,存储器中的程序和数据可以按照一定的顺序被取出并送入运算器进行运算。
运算器可以对数据执行各种运算和处理操作,并将结果存储到存储器中。
控制器则负责指导程序的执行顺序和控制各个部件的协同工作。
冯·诺依曼结构是现代计算机体系结构的基础,几乎所有的计算机系统都采用了这种结构。
计算机系统构成
难易度:简单
计算机系统包含硬件系统和软件系统。
根据冯诺依曼结构,硬件系统包含五个部分:运算器、控制器、存储器、输入设备、输出设备。
软件系统分为系统软件和应用软件。

硬件
要想实现计算机的基础功能,计算机必须由运算器、存储器、控制器、输入设备、输出设备构成,缺少前两者就无法正常启动计算机,即为“冯·诺依曼结构”。
-
CPU(Central Processing Unit):中央处理器,主要功能是解释计算机指令以及处理计算机的数据。由**运算器(计算)+控制器(指挥)*组成 ,是*计算机的核心部件,被称为计算机的“大脑”,又称“微处理器”。
-
内存储器:简称“内存”,用于电脑内部的存储。相对外存而言,读写速度快,但是存储空间小,并且存储在 RAM 里的数据断电后会丢失。注意与“外存(硬盘等)”区分开。
RAM(Random Access Memory):随机存取存储器,与CPU直接交互数据,可随时读写,断电数据全部丢失。
ROM(Read-Only Memory):只读存储器,只能读出无法写入信息。信息一旦写入后就固定下来,断电数据不会丢失,故又称为固定存储器。
-
外存储器:简称“外存”,用于处置长期保存的数据,一般处于电脑外部,断电后数据不会丢失。相对内存而言,外存读写速度慢,但存储容量大。主要包括硬盘、光盘、U 盘(USB闪存盘)等类型。
-
输入设备:在计算机与人交互时,接受外部命令或者需要加工的数据。常用的输入数据包括键盘、鼠标、麦克风、摄像头等。
-
输出设备:在计算机与人交互时,将处理结果以人类能够识别/感受的方式呈现出来的设备。常有的输出设备包括显示器、音响、打印机等。
-
访问速度:寄存器 > 高速缓存 > 内存 > 外存。
-
断电后数据保留于 ROM 和外存。
软件
软件系统由系统软件和应用软件两部分组成。
-
操作系统(Operating System, OS)是一组主管并控制计算机操作、运行硬件和软件资源并提供公共服务的系统软件,是计算机系统的内核与基石。常见的操作系用包括:Microsoft Windows,类Unix,MacOS,嵌入式操作系统(iOS和Android)。
-
应用软件是为满足用户不同领域、不同问题的应用需求而提供的那部分软件。它可以拓宽计算机系统的应用领域,放大硬件的功能。
办公类软件:为了满足办公场景而开发的软件,如Microsoft Office、WPS、谷歌文档等。这类软件通常包括文本编辑、表格制作、演示文稿以及邮件等功能。
通信软件:QQ,MSN,微信、钉钉、 企业微信等。
计算机常识
计算机语言分类
- 机器语言:计算机能识别的语言,由二进制数字 0/1组成,速度快但人类编码难度高,一般由计算机自动转换。
- 汇编语言:用助记符代替机器指令的操作码(亦称为符号语言),计算机不能直接识别,需要用编译器进行编译。在不同的设备中,汇编语言对应着不同的机器语言指令集,通过汇编过程转换成机器指令,在不同平台之间不可直接移植。
- 高级语言:如今盛行的编程语言(C++,Python,Java 等),需要用编译器难度小,分为编译型语言和解释型语言两种编译方式。
- 编译型语言(C、C++、Pascal):执行之前需要一个专门的编译过程,把程序编译成为机器语言的文件,运行时不需要重新翻译,直接使用编译的结果就行了。程序执行效率高,依赖编译器,跨平台性较差。
- 解释型语言(PHP、Python):编写的程序不进行预先编译,在运行程序的时候,解释性语言必须先解释再运行。
- 面向过程(C、Basic、Pascal):是一种以过程为中心的编程思想,是一种自顶而下的编程模式。在面向过程的开发范式中,把问题分解成一个个步骤,每个步骤用函数实现,依次调用即可(强调步骤)。
- 面向对象(Java、C++、C#、Python):将问题分解成一个个步骤,对每个步骤进行相应的抽象,形成对象,通过不同对象之间的封装、继承、多态等方法,组合解决问题。通过抽象出对象的方式这种方式编写出来的代码的扩展性、可维护性都很高(强调对象)。
计算机病毒
计算机病毒是计算机程序破坏中计算机功能或者数据的程序,影响计算机使用。计算机病毒具有传播性、隐蔽性、感染性、潜伏性、可激发性、表现性或破坏性。
存储单位
位(bit)
位(bit)是计算机能够存储信息的最小单位。
字节(byte)
字节( byte )是计算机存储信息的基本单位。1 字节byte 等于 8 位bit。
更大的存储单位
| 单位名称 | 换算关系 |
|---|---|
| 千字节(KB) | 1 KB = 1024 B |
| 兆字节(MB) | 1 MB = 1024 KB |
| 吉字节(GB) | 1 GB = 1024 MB |
| 太字节(TB) | 1 TB = 1024 GB |
图像存储
如何计算一张图片大小
一张图片大小(单位为bit) = 水平像素数 × 垂直像素数 × 位深度
位深度:存储图片一个像素需要消耗多少位。可能是4位、8位、24位、32位。

例:存储一张2048 * 1024像素的32位真彩色图像,需要多大内存?
答:2048 * 1024 * 32 bit = 8 MB
分辨率
分辨率是指每英寸图像内像素点的个数,单位为PPI(Pixels Per Inch);像素点越多,分辨率越高,图像越清晰。
现代应用-图像与视频
图像则是指由输入设备捕捉的实际场景或以数字形式存储的任意画面。
视频是指从摄像机、录像机、影碟机等影响设备得到的连续活动图像信号,由若干有联系的真实图像数据连续播放形成,其类似于电影和电视。
计算机存储图像的常用格式包括:jpg, png, jpeg, gif。
计算机存储视频的常用格式包括:mp4, AVI, MOV, FLASH。
变量与输入输出
变量
基本概念
变量是计算机内存中的一块存储区域,用于存储各种不同类型的数据。变量的值在程序运行时可以改变,因此称为“变量”。
在使用变量时,首先需要定义变量的类型和名称。变量的类型指定了变量可以存储的数据类型,例如整数、浮点数、字符串等。变量的名称是一个标识符,用于标识变量的唯一性。
在程序中,变量可以被赋初值,并在程序中被修改。程序可以通过变量存储数据,并在程序执行过程中进行计算和处理。变量的值可以被输出到屏幕或其他输出设备,也可以作为参数传递给其他函数或子程序。
cpp复制// 1. 定义一个变量
int a;
//2.定义一个变量并同时赋值的行为,被称为初始化
int b = 5;
//3.修改变量的值
b = 3;
变量的命名规则
首先明确一个概念,变量名是一个标识符,并遵守标识符命名规则。
C++语言中所谓标识符,是用来表示变量、函数、类型和其他用户定义实体的名称。
标识符的命名规则如下:
- 以英文字母或下划线开头,不能以数字开头。
int count; ✅
int 5c; 数字开头 ❌
int !c; 除了下划线之外的符号开头 ❌
int _c; 下划线开头 ✅
c; 命名时不指定类型 ❌
- 标识符只能包含英文字母、数字和下划线。
int 哈哈; 中文不行 ❌
- 标识符不能是C++中的关键字或保留字,例如if、while、int等。
- 标识符区分大小写。
输入输出基本概念
C++语言基本框架
先来温习一下C++语言的基本框架。
cpp复制//头文件,理解为一个工具箱,程序中要用到的函数工具都要从这里拿
#include <iostream>
/*
名字空间的作用是防止函数重名。
打个比方,两个班级都有一个同学叫张明,老师为了区分,可以加上班级,六年级一班的张明,六年级二班的张明,就不会混淆了。
*/
using namespace std;
// 主函数是程序的入口,没有就无法运行。
C++语言因为继承了C语言的绝大多数特性和语法,所以包含两种风格的输入和输出:C风格的printf和scanf在头文件<cstdio>中,C++风格的cout和cin在<iostream>中。
cpp复制//C语言风格的输入和输出
#include <iostream>
using namespace std;
int main() {
int a;
scanf("%d", &a); // scanf的使用方式 , 千千万万不要遗忘了取地址符&
printf("%d", a);
return 0;
}
易错点 1scanf函数总是忘记写取地址符&.
易错点 2
scanf 和 printf 的括号里面双引号括住的格式化区域要和变量区域用逗号隔开。
错误的示例
printf("%d" a);正确的用法
printf("%d", a);
数据类型与表达式
什么是数据类型?
在编程语言中,数据类型是用来定义数据的种类和取值范围的。不同的数据类型能够存储不同类型的数据,比如整数、小数、字符、布尔值等等。
在C++中,基本数据类型包括整数类型(int、short、long、long long)、浮点类型(float、double、long double)、字符类型(char)、布尔类型(bool)等。
基本数据类型及其占位符
| 输入占位符 | 输出占位符 | 所占字节数 | 数据范围 | |
|---|---|---|---|---|
unsigned int |
%d |
4 | 00 ~ 232−1232−1 | |
int |
−231−231 ~ 231−1231−1 | |||
long long |
%lld |
8 | −263−263 ~ 263−1263−1 | |
float |
%f |
4 | 1.175494351E−381.175494351E−38 ~ 3.402823466E+383.402823466E+38(实际精度6~7位) | |
double |
%lf |
8 | 2.2250738585072014E−3082.2250738585072014E−308 ~ 1.7976931348623158E+3081.7976931348623158E+308(实际精度15~16位) | |
char |
%c |
%c或%d(输出ASCII码) |
1 | 00 ~ 127127 |
bool |
无 | %d(输出 0 或 1) |
00、11 | |
可以通过sizeof() 函数来获取各种数据类型的大小。
cpp复制#include <iostream>
using namespace std;
int main()
{
cout << "Size of int : " << sizeof(int) << endl;
cout << "Size of float : " << sizeof(float) << endl;
cout << "Size of double : " << sizeof(double) << endl;
cout << "Size of char : " << sizeof(char) << endl;
cout << "Size of bool : " << sizeof(bool) << endl;
return 0;
}
什么是类型转换?
把10个苹果均分给4个小朋友,不能切开得情况,每个小朋友分到几个苹果呢?
答案是2个。C++语言在计算 10 / 4 时直接得到它们的商2,但是如果表达式写为10 / 4.0,则得到结果2.5.这是因为表达式变成了一个整型和浮点型之间的除法,其结果也是浮点型。
类型转换提供了将一种数据类型转换为另一种数据类型的方式。类型转换可以通过自动类型转换和强制转换来实现。
自动类型转换
隐式转换在编写代码时不需要显式地进行转换,而是由编译器自动完成的。
比如分苹果那个例子,就是一个自动类型转换的过程。
强制类型转换
显式转换需要在代码中明确地指定要进行的类型转换。
cpp复制#include <iostream>
using namespace std;
int main() {
double f = 5.5;
double z = (int)f;
printf("%lf", z);
return 0;
}
代码运行后的值为5.000000,和你想的一样吗?
首先将5.5赋值给了double类型变量f。接下来将变量f的值强制类型转换为整型(舍弃了小数部分,变为5)再赋值给一个浮点型。最后通过printf输出,默认显示6位小数,所以结果为5.000000。
程序中的(int) 就是强制类型转换。
简单表达式求值
备考建议
这部分是一级客观题中的重中之重,应该着重练习。计算的时候,有一定用笔算,切勿脑子里过一遍就选了。
什么是表达式?
表达式(Expression)是一种由常量、变量、运算符和函数等组成的可求值的组合。表达式可以被计算机求值,并返回一个结果。表达式的求值过程通常是由计算机编译器或解释器执行的。
表达式可以包含各种运算符,例如算术运算符(+、-、*、/),关系运算符(>、<、==、!=)、逻辑运算符(&&、||、!)等,这些运算符可以用于对变量或常量进行各种运算和比较操作。表达式也可以调用函数,函数可以接收参数并返回一个值,这些值可以作为表达式的一部分进行计算。
程序控制结构
顺序结构
顺序结构是指程序自上而下,依次执行语句。
cpp复制printf("李白乘舟将欲行,\n");
printf("忽闻岸上踏歌声。\n");
printf("桃花潭水深千丈,\n");
printf("不及汪伦送我情。\n");
常用流程图的方式来表示程序结构。首先认识一下流程图的基本元素。

依次执行的顺序结构,一般表示为:

选择结构
选择结构是指根据判断条件的结果来控制程序的执行流程。需要使用条件语句:if语句。
if 语句
条件语句可以表示:如果...,否则... 的含义
cpp复制if (条件一){
//动作一
}
else{
//动作二
}
以上条件语句 if...else... 的含义为:如果条件一为真做动作一,否则做动作二。 
cpp复制if (条件一){
//动作一
}
else if (条件二){
//动作二
}
else{
//动作三
}
以上条件语句 if... else if ... else ... 的含义为:如果条件一为真做动作一,否则如果条件二为真做动作二,否则做动作三。 
此外条件语句之间可以进行嵌套:
cpp复制if (条件1){
if (条件2){
//动作
}
}
以上条件语句的含义为:如果条件一和条件二都为真则执行动作,否则什么都不做。

switch语句
循环结构
循环结构是指在程序中需要重复执行相同的一段代码、反复执行某个功能,常见的循环有:while循环,for循环,还有do...while...循环。
1. while 循环
cpp复制while (判定条件){
//执行的动作;
}
当条件为真时,程序会循环执行动作。

cpp复制int i = 0; //起点
while (i < 3){ //终点
printf("你好\n");
i = i + 1; //步长
}
控制循环执行次数的关键是循环变量 i,出现在循环的起点、终点、步长三个部分,满足条件的 i 值个数,就是循环次数。以上代码会输出3次你好。
cpp复制while (n--){ //循环执行n次动作
//动作
}
cpp复制while (!0){ //死循环
//动作
}
2. for 循环
for循环的循环头会确定循环的次数,以下代码会执行3次动作。
cpp复制for (int i = 0; i < 3; i++){
//执行动作
}
for循环的头部有起点、终点、步长,这三句话是怎样执行的呢?
cpp复制for (初始条件1; 判断条件2; 递增/减条件3) {
循环体4;
}
执行顺序:12432432432......32。初始条件1只会在第一次执行,判断条件2是否成立,只要条件成立就做循环体4,并执行递增/减条件3,然后再次判断条件2,只要条件2成立,循环做以上动作,否则结束程序。
下面的for循环没有条件部分,是死循环。
cpp复制for (int t = 1; ; t++){ }
3. break 与 continue 语句
循环语句一般会和break、continue语句搭配使用。
| 不同点 | 相同点 | |
|---|---|---|
| break语句 | 直接结束当前循环 | 只对一层循环起作用 |
| continue语句 | 结束某次循环,直接进行下一次循环 |