欢迎来到编程概念的世界!
你好,未来的计算机科学家们!本章是你未来所有编程实践的基石。你可以把编程概念想象成与计算机沟通所需的语法和词汇。一旦你掌握了这些基本原理——如何存储信息以及如何控制指令的执行流程——你就能构建出任何你能想象到的程序!
如果起初觉得有些复杂,也不必担心。我们将通过生活中的真实案例,把每一个概念拆解成简单易懂的小部分。
1. 构建基础:数据与存储
1.1 数据类型 (Data Types)
计算机需要准确知道它存储的是什么类型的信息。你是要存储一个整数、一段文本,还是一个真/假判断?这就是我们需要数据类型的原因。使用正确的数据类型可以帮助计算机高效地管理内存。
比喻: 把数据类型想象成厨房里的不同容器。你总不会把面粉装进小小的调料瓶里吧!
- 整数 (Integer / INT): 存储整数(正数或负数)。
示例:5, -100, 42 - 实数 / 浮点数 (Real / Float): 存储带有小数点的数字。
示例:3.14, 99.9, -0.5 - 字符 / 字符串 (Character / String / STR): 存储文本、字母、符号,甚至是作为文本处理的数字(比如电话号码)。字符串通常是一串字符序列。
示例:"Hello World", "A", "123 Main Street" - 布尔值 (Boolean / BOOL): 只存储两个值:TRUE(真)或 FALSE(假)。这对于做决定至关重要。
示例:灯亮着吗?(TRUE/FALSE)
小贴士: 如果数字需要保留小数,请使用 Real;如果是文本(哪怕文本里包含了数字),请使用 String;如果只是 1 或 0(或者真/假),请使用 Boolean。
1.2 变量与常量
要在程序中使用数据,我们需要将其存储在计算机内存中。我们使用特定的名称来指向这些存储位置。
变量 (Variables)
变量是一个带名称的内存位置,用于存储在程序运行期间可以改变的数据。
- 比喻: 变量就是一个贴了标签的盒子,你可以不断地往里面放入不同的东西。
- 示例: 一个名为 Score(分数) 的变量可以从 0 开始,每当用户答对一题时就增加数值。
常量 (Constants)
常量是一个带名称的内存位置,用于存储在程序运行期间不能改变的数据。
- 比喻: 常量是一个贴了标签的盒子,一旦装入物品后就会被封死。
- 示例: 圆周率 \(\pi\) (\(3.14159\)) 的值,或者固定的税率。
为什么要用常量? 如果你使用像 TAX_RATE(税率) 这样的常量,以后如果需要调整税率,你只需要在程序开头修改一次数值即可,这大大降低了维护难度。
1.3 赋值 (Assignment)
赋值是为变量(或常量)赋予数值的过程。在编程伪代码中,我们通常使用箭头符号 (\(\leftarrow\)) 或等号 (\(=\))。
核心概念: 当我们进行赋值时,实际表达的是:“左边的项获取了右边的值。”
赋值示例:
Username \(\leftarrow\) "AQAStudent"
Age \(=\) 16
NewScore \(\leftarrow\) OldScore \(+\) 10
常见误区提示!
在编程中,Count \(\leftarrow\) Count \(+\) 1 并不意味着 Count 等于 Count 加 1(这在数学上是不可能的)。它的含义是:取出 Count 当前的值,加上 1,然后再把这个新结果存回 Count 变量中。
第一部分重点总结: 变量存储可变数据,常量存储固定数据,而数据类型告诉计算机存储的数据到底“是什么”。
2. 控制流程:顺序、选择与循环
程序其实就是一系列指令。构建这些指令的三种主要方式被称为三大基本程序结构。
2.1 顺序结构 (Sequence)
顺序结构意味着指令按照书写的先后顺序,从上到下依次执行。
- 比喻: 按照菜谱做菜:1. 混合配料。2. 倒入锅中。3. 烘烤30分钟。
这是最简单的程序流程。
2.2 选择结构 (Selection / Making Decisions)
选择结构(或分支)允许程序根据某个条件(通常是布尔表达式)在两条或多条路径中做出选择。
IF...THEN...ELSE...
这是最常见的决策方式。
IF Condition IS TRUE THEN
执行这些指令(路径 A)
ELSE
否则执行这些指令(路径 B)
ENDIF
示例: IF Temperature \(<\) 0 THEN Output "穿件外套" ELSE Output "天气挺暖和的".
你知道吗? 你也可以省略 ELSE,只使用 IF...THEN。如果条件为 FALSE,程序会直接跳过这些指令继续往下执行。
CASE / Switch 语句
当需要根据一个变量的值,从多个固定选项中做出选择时,可以使用 CASE(或 Switch)结构。
CASE OF Grade
A: Output "优秀"
B: Output "良好"
OTHERWISE: Output "继续加油"
ENDCASE
相比于编写多个嵌套的 IF 语句,这种方式在处理多个固定选项时显得整洁得多。
2.3 循环结构 (Iteration / Loops)
循环结构允许程序多次重复执行同一段代码,这避免了我们重复编写相同的代码。
FOR 循环(计数控制)
当你确切知道循环需要运行多少次时使用。
FOR Counter \(\leftarrow\) Start Value TO End Value DO
重复执行的指令
NEXT Counter
示例: FOR i \(\leftarrow\) 1 TO 10 DO - 这个循环会准确运行 10 次。
WHILE 循环(条件控制 - 先检查)
当你不知道循环会运行多少次,但需要在执行代码之前检查条件时使用。
WHILE Condition IS TRUE DO
重复执行的指令
ENDWHILE
重要提示: 如果一开始条件就为 FALSE,WHILE 循环内部的代码将永远不会运行。
REPEAT UNTIL 循环(条件控制 - 后检查)
当你不知道循环会运行多少次,但必须确保循环内的代码至少运行一次时使用。
REPEAT
重复执行的指令
UNTIL Condition IS TRUE
记忆窍门:
WHILE:Watch out(注意),先检查条件。
REPEAT UNTIL:Running(先运行),再检查条件。
第二部分重点总结: 顺序是按部就班;选择 (IF/CASE) 是选路径;循环 (Loops) 是重复动作。
3. 逻辑与运算
程序通过使用运算符来计算和比较数据。
3.1 算术运算符
用于执行数学计算。
- \(+\): 加法
- \(-\): 减法
- \(*\): 乘法
- \(/\): 除法(结果为实数/浮点数)
整数专用运算符:
- DIV(整除):给出除法的整数结果,舍去余数。
示例:10 DIV 3 \(= 3\) - MOD(取模/取余):给出整数除法后的余数。
示例:10 MOD 3 \(= 1\)(因为 10 除以 3 商 3 余 1)
MOD 有什么用? 它非常适合判断奇偶数(如果 Number MOD 2 \(= 0\),那就是偶数),或者用于在列表中进行循环操作。
3.2 比较(关系)运算符
这些运算符比较两个值,结果始终为布尔值(TRUE 或 FALSE)。它们对于选择结构和循环结构至关重要。
- \(==\) 或 \(=\): 等于
- \(<\): 小于
- \(>\): 大于
- \(<=\): 小于等于
- \(>=\): 大于等于
- \(<>\) 或 \(!=\): 不等于
示例: IF UserAge \(>=\) 18 THEN... (该条件评估结果为 TRUE 或 FALSE)。
3.3 布尔(逻辑)运算符
这些运算符组合布尔结果(TRUE/FALSE)以构建更复杂的条件。
AND (与)
只有当被 AND 连接的所有部分都为 TRUE 时,整个条件才为 TRUE。
示例: 只有同时满足(你有票 AND 你年满18岁)时才能进入派对。
OR (或)
只要被 OR 连接的部分中至少有一个为 TRUE,整个条件就为 TRUE。
示例: 如果(你的考试成绩是 A OR 你的平时作业是 A),你就能通过这门课。
NOT (非)
反转布尔值(TRUE 变为 FALSE,FALSE 变为 TRUE)。
示例: IF NOT (IsRaining) THEN Output "去户外吧"
第三部分重点总结: 算术运算符负责计算;比较运算符负责提问(得出 TRUE/FALSE);布尔运算符负责组合这些提问。
4. 输入与输出 (I/O)
为了让程序有用,它必须与用户或外界交互。这通过输入 (Input) 和 输出 (Output) 来实现。
输入 (Input)
输入是程序从外界接收的数据(通常来自用户的键盘、鼠标或传感器)。
在伪代码中,我们通常使用关键词 INPUT 或 READ。
示例: INPUT UserName(程序会暂停并等待用户输入,输入的内容随后被存入变量 UserName 中)。
输出 (Output)
输出是程序发送给外界的数据(通常显示在屏幕上、打印出来或发送到文件中)。
在伪代码中,我们通常使用关键词 OUTPUT 或 PRINT。
示例: OUTPUT "欢迎, " + UserName(程序会在屏幕上显示欢迎辞和存储的用户名)。
I/O 小复习:
INPUT (输入): 数据进入计算机。
OUTPUT (输出): 数据输出计算机。
总结核对:编程基础
如果你掌握了以下这些概念,你就打下了坚实的编程基础:
- 我清楚整数、实数、字符串和布尔数据类型之间的区别。
- 我可以解释为什么有时使用变量,有时使用常量。
- 我理解“赋值”就是给变量设定数值。
- 我可以描述顺序、选择和循环结构之间的区别。
- 我知道 IF...THEN...ELSE 和 CASE 是选择结构的不同形式。
- 我能判断何时使用 FOR 循环(计数控制)以及何时使用 WHILE/REPEAT 循环(条件控制)。
- 我知道 MOD 给出余数,而 DIV 给出整数商。
- 我可以使用 AND、OR 和 NOT 构建复杂的布尔条件。