什么是计算机
计算机与编程语言
什么是程序设计语言
算法: 计算机如何工作 (找最高分)
编程思维与本课程地图
为什么学习C语言 (答案在第二节课揭晓)
问题1:计算机和计算器有什么区别?
区别1: 存储——计算机有内存与外存, 可长期保存海量数据; 计算器只能暂存几个数
区别2: 可编程——计算器的功能固化在硬件里; 计算机装什么程序, 就能做什么事
区别3: 处理的信息——文本、图像、声音、视频; 计算器只会数值运算
点睛: 打开计算器 App, 计算机就能当计算器用, 计算器却永远变不成计算机
彩蛋: 计算器其实也是一种小计算机——区别不在"有没有芯片", 而在"程序能不能换"
程序是计算机的灵魂——我们要学的, 就是怎么给这台万能机器写指令
程序跑在哪?——计算机。先认识这台机器:
计算机: 由硬件和软件组成, 用于接收、处理和存储数据的电子设备
硬件:输入设备、输出设备、存储设备、CPU、内存、主板等物理组件
软件:操作系统、应用程序等,执行各种任务
程序在这台机器上跑, 靠的是五个环节:
输入:键盘、鼠标、摄像头等接收数据和指令
处理:CPU 执行指令,进行数据处理和计算
存储:内存临时存储正在处理的数据;存储设备长期保存信息
输出:显示器、打印机、扬声器等呈现处理结果
控制:操作系统和应用程序管理硬件资源,协调各组件
编程: 使用特定的编程语言编写指令, 控制计算机执行上述任务
怎么指挥这台机器?它只懂 0 和 1 组成的机器指令——语言是这样一步步进化来的:
| 语言 | 长这样 | 问题/特点 |
|---|---|---|
| 机器语言 | 10110000 0000110000101100 00000101 |
难记、易错、依赖具体机器 |
| 汇编语言 | MOV AL,12DSUB AL,5D |
助记符好记了, 但仍与机器绑定 |
| 高级语言 | result = 12 - 5; |
接近自然语言和数学与机器无关 |
高级语言写的代码需要翻译才能执行——这个"翻译官"就是编译器
好处: 易学易用、易读易调试、可移植(换台机器不用重写)
C 是高级语言中离硬件最近的一个: 既好用, 又高效
人类交流 → 机器交流
人类要交流需要语言(中文、英文)
人和计算机交流也需要"语言"——程序设计语言
对比:自然语言 vs 程序语言
自然语言灵活但有歧义
如: 南京市长江大桥——是"南京市 · 长江大桥", 还是"南京市长 · 江大桥"?
程序语言严格、无歧义,让机器可以准确执行
程序设计语言,就是人类和计算机沟通的工具
程序是计算机的灵魂, 那程序能做什么?
程序这么能干, 是怎么"想"出来的?先看一个小问题:
问题2:给全班 100 个同学的成绩,怎么让计算机找出最高分?
提示: 你不能让它"看一眼",只能一步步指挥它
问题2 的答案: 人扫一眼就能找到最高分, 但计算机不能"看"
计算机的做法:
启示: 人觉得简单的事, 计算机需要一个算法
程序 = 算法 + 数据
把刚才的算法放回机器的工作流程, 每一步对应哪个环节?
回头看"找最高分"的步骤, 写程序需要的东西全在里面:
结构: 顺序 (一步步执行)、判断 (if: 更大就替换)、循环 (重复比较, 直到比完)
数据: 存储——记住当前最高分 (变量)
设计: 分解——大问题拆成小步骤
接下来要学的, 就是把这些要素用 C 语言 写出来!
编程思维要落地, 还需要具体工具——从 输入 → 处理 → 存储 → 输出 反推:
| 程序的需求 | 需要的元素 | 什么时候学 |
|---|---|---|
| 记住数据 | 变量、类型 | 第 2 周 |
| 计算 | 表达式、运算符 | 第 3 周 |
| 不同情况做不同事 | 判断 if / switch | 第 4 周 |
| 重复做 | 循环 while / for | 第 5 周 |
| 复用与分解 | 函数 | 第 6-7 周 |
| 一批数据 | 数组 | 第 8-9 周 |
| 字符串与内存 | 指针 | 第 10-11 周 |
| 复杂的数据组织 | 结构体、链表 | 第 12-13 周 |
| 长期保存数据 | 文件 | 第 14 周 |
每一项都是"因为需要, 所以才有"——这就是本学期的路线图
接下来就动手——写第一个 C 程序: