欢迎来到代码世界!

欢迎来到计算机科学中最激动人心的部分:编程概念。你可以把这一章想象成你的“工具箱”。就像建筑工人需要锤子、钉子和蓝图来建造房子一样,程序员需要变量、循环和逻辑来构建软件。我们将重点学习过程式编程,这本质上就是一种将代码编写为一系列计算机可以遵循的步骤指令的方法。如果其中一些内容听起来像是在学习一门新语言,别担心——读完这些笔记,你就能流利地使用“计算机语言”进行交流了!

1. 基础知识:存储和使用数据

在进行任何复杂操作之前,我们需要学会如何处理信息。

变量声明与赋值

可以将变量想象成房间里的一个实体盒子。你在盒子上贴上标签(即标识符),以便知道里面装的是什么,然后将一个值存入其中。
- 变量声明:告诉计算机:“我需要一个名为‘Score’(分数)的盒子来存放一个数字。”
- 赋值:把东西放进盒子里。例如:Score = 10

有意义的标识符

你可以把变量命名为 x,但 user_age(用户年龄)要好得多。为什么呢?因为如果你在六个月后再看这段代码,你就能一眼看出 user_age 的作用!使用有意义的标识符能让你的代码更具可读性,也更容易维护。

输入与输出

程序需要与人交互!
- 输出:在屏幕上显示信息(例如:“游戏结束!”)。
- 输入:获取用户输入的信息(例如:询问用户的名字)。

注释:写给人看的备注

注释是计算机完全忽略的文本行。我们用它来解释复杂代码的功能。这就像是为你自己或你的团队成员留下的便签。
小贴士:在许多编程语言中,注释以 # 或 // 开头。

核心要点:变量是带有标签的数据盒子,而清晰的命名和有用的注释能让你的代码对“人类更友好”。

2. 数学与逻辑工具

计算机本质上是超高速的计算器。为了使用这种能力,我们需要使用运算符

算术运算

其中大部分你已经在数学课上接触过,但编程中还有一些特殊的:
- 加 (+)、减 (-)、乘 (*)
- 实数/浮点数除法 (/):标准的除法,结果为小数(例如:\( 7 / 2 = 3.5 \))。
- 整数除法 (DIV):告诉你一个数可以被另一个数整除多少次(例如:\( 7 \text{ DIV } 2 = 3 \))。
- 取余 (MOD):告诉你除法后的余数(例如:\( 7 \text{ MOD } 2 = 1 \))。
- 幂运算:将一个数字进行乘方运算(例如:\( 3^2 = 9 \))。
- 四舍五入与截断:四舍五入找最接近的整数。截断则是直接舍去小数部分而不进行进位(例如:3.9 变为 3)。

关系运算

这些用于比较两个事物。结果始终为真 (True)假 (False)
- 等于 (==)不等于 (!=)
- 小于 (<)大于 (>)
- 小于等于 (<=)大于等于 (>=)

布尔运算(逻辑)

这是计算机做决策的方式。你需要了解优先级顺序(即哪个先执行):
1. NOT(最高级——取反:NOT True = False)
2. AND(仅当两侧均为 True 时才为 True)
3. OR(最低级——只要有一侧为 True,结果即为 True)
- XOR:即“异或”。仅当且仅当其中一侧为 True 时结果才为 True(不能同时为 True!)。

记忆法:记住 N.A.O.(先 NOT,再 AND,最后 OR),保持你的逻辑顺序正确!

核心要点:DIV 得到“整数商”,MOD 得到“余数”,布尔逻辑(NOT, AND, OR)是程序的“大脑”。

3. 控制流程:选择与迭代

程序并不总是按直线运行。有时它需要选择路径或重复执行任务。

选择(If 语句)

这允许程序在不同路径之间做出选择。如果正在下雨,就带把伞;否则,就戴太阳镜。
嵌套选择是指在一个“if”语句中嵌套另一个“if”语句。想象一个决策树:首先检查用户是否已登录。如果是,再检查他们是否为管理员。

迭代(循环)

迭代是一个花哨的词,意思就是重复某事。主要有两种类型:
- 确定性迭代 (FOR 循环):当你明确知道需要重复多少次时使用(例如:“跑 10 圈”)。
- 非确定性迭代 (WHILE 循环):当你想要一直重复直到某个条件改变时使用(例如:“一直跑,直到累了为止”)。

你知道吗?嵌套迭代是循环中的循环。想想时钟:“分钟”循环必须走过 60 次,“小时”循环才会移动一次。

核心要点:选择用于决策;迭代用于重复任务。次数确定时用 For,不确定时用 While。

4. 字符串处理与转换

字符串是一串字符序列(如“Hello World”)。我们可以通过多种方式来操作它们:

- 长度 (Length):计算字符个数(包括空格!)。
- 位置 (Position):查找某个字符所在的位置。注意:大多数编程语言从 0 开始计数!
- 子串 (Substring):从字符串中截取一部分(例如:从“Golden”中取出“Gold”)。
- 连接 (Concatenation):将两个字符串拼接在一起(例如:“Apple” + “Pie” = “ApplePie”)。

类型转换 (Casting)

有时你有一个字符串形式的数字“5”,但你需要将其转为整数 (Integer)来进行数学运算。将数据从一种类型转换为另一种类型的过程称为强制类型转换 (Casting)。你需要掌握字符串、整数、浮点数和日期类型之间的转换。

核心要点:字符串就是文本。记住计算机通常从 0 而不是 1 开始计算位置!

5. 子程序与作用域

随着程序变得庞大,它们会变得混乱。子程序(也称为函数或过程)能帮助我们保持代码井井有条。

什么是子程序?

子程序是一个执行特定任务的命名代码块。与其把同样的 20 行代码重复写五次,不如在子程序中写一次,然后在需要时调用它。

参数与返回值

- 参数 (Parameters):你“传递”给子程序以供其完成工作的信息。
- 返回值 (Return Values):子程序处理完后返回给主程序的结果。

局部变量与全局变量

- 全局变量:它们存在于外部,可以被整个程序看到或使用。它们就像公共公园。
- 局部变量:它们存在于特定的子程序内部。一旦子程序运行结束,变量就会被删除。它们就像你的私人卧室。
专业建议:尽可能多使用局部变量,以避免意外的错误(Bug)!

栈帧 (Stack Frame)

当调用子程序时,计算机使用栈帧来记录:
1. 返回地址(调用结束后回到主程序的什么位置)。
2. 使用的参数
3. 该次调用特定的局部变量

核心要点:子程序是让代码整洁的小程序。局部变量更安全,因为它们被封装在子程序内部。

6. 处理意外情况

无论你是多么出色的程序员,事情总会有出错的时候。用户可能会在程序需要数字时输入文本,或者文件可能缺失。

异常处理 (Exception Handling)

为了防止程序直接“崩溃”,我们使用异常处理。这就像一张安全网。我们告诉计算机:“尝试执行此任务,但如果发生了错误(异常),执行另一项操作,而不是直接崩溃。”

随机数生成

有时我们需要计算机变得不可预测,比如游戏中的掷骰子。大多数语言都有内置的随机数生成工具。你可以用它为程序增加趣味性和多样性。

快速复习:
- DIV/MOD:整数商与余数。
- 布尔优先级:NOT -> AND -> OR。
- 迭代:For(次数已知)vs While(次数未知)。
- 作用域:局部(内部)vs 全局(外部)。
- 异常处理:程序的“安全网”。

如果觉得内容太多,不要担心。编程是一项实践技能——你在实际代码中练习这些结构越多,它们就会变得越自然。祝编程愉快!