1.程序:交给计算机的精确指令
程序就是把计算机要做的事按顺序写下来的一份指令。它和菜谱很像,但有一个很大的区别。菜谱上写着“盐少许”,人会自己估摸着办,计算机却不会估摸。它只会照着写的内容、按写的顺序去做。所以写程序,就是把“它应该会自己看着办吧”的部分一个不留,全部用语言写清楚。
这种“不会估摸”既是缺点也是优点。指令稍有差错就会得出离谱的结果;可只要指令正确,不管做一百次还是一百万次,它都会一模一样、不知疲倦、飞快地完成。每个月在Excel表里把同一列加总、一个个修改文件名、把几百行文本里的电话号码格式统一,这类人做起来枯燥又容易出错的事,正是程序最擅长的。
现在只要用语言拜托AI编程助手,它就能替你写出代码。但这并不意味着编程基础没用了。要判断AI写的代码是否真的做了你想要的事、有没有漏掉的情况,就得会读代码。本课程的目标不是成为专业开发者,而是能亲手写简单的代码,并能读懂、检查别人(或AI)写的代码(第10讲)。
2.算法思维:拆成顺序、条件、循环
解决某个问题的一组步骤叫作算法。名字听起来很大,其实我们每天都在用算法。早上出门的过程、买菜的顺序、批改试卷的方法,都是算法。学编程,某种意义上就是练习把脑子里自然而然在做的事一件件拿出来写下来。
令人惊讶的是,几乎所有算法都由三种要素构成。第一是顺序,即从上到下依次去做。第二是条件,即“如果……就这样,否则那样”,根据情况分出不同的路(第3讲)。第三是循环,即把同一件事重复规定的次数,或者一直重复到满足某个条件为止(第4讲)。只要能自如地组合这三种要素,大部分事情都能变成指令。
拆分的诀窍是问自己:“第一次看到这一步的人能照着做吗?”“批改试卷”太大了。拆成“把第一个答案和标准答案比较,相同就给分数加1,转到下一个答案,一直重复到最后一个答案”,顺序、条件、循环才显露出来。这样显露出来的结构,就是代码的骨架。
| 要素 | 含义 | 生活中的例子 | 学习的讲次 |
|---|---|---|---|
| 顺序 | 从上到下依次去做 | 烧开水 → 下面条 → 等3分钟 | 第1讲 |
| 条件 | 根据情况做不同的事 | 下雨就带伞,否则直接出门 | 第3讲 |
| 循环 | 把同一件事重复多次 | 一道题一道题地批改到答题卡最后 | 第4讲 |
- 第1步 准备(顺序):把缺席人数定为0,从名单上的第一名学生开始。
- 第2步 检查(条件):如果当前这名学生不在座位上,就给缺席人数加1;在的话什么也不做。
- 第3步 往下走(循环):转到下一名学生,重复第2步。核对完名单上最后一名学生就停下。
- 第4步 结果(顺序):报告缺席人数。
- 验算:如果30人全部出勤,缺席人数就保持最初定的0;如果全部缺席,就是30。两端的情况都对,拆分的步骤也就可信。
3.输入 → 处理 → 输出
从外部看,算法总是同一个样子:接收某些东西(输入),用它做些什么(处理),再交出结果(输出)。计算器接收数字和运算,算完后在屏幕上显示答案;拼写检查器接收文章,找出错误的地方再标出来。刚开始写代码时,先把这三格填好,要做的东西就会清楚得多。
尤其要把输入说清楚。只说“计算价格”,就缺了接收什么。说成“接收商品价格和数量,求出合计”,就能看出输入有两个、而且都是数字。接下来自然会冒出“数量是0怎么办?”“价格是负数怎么办?”这样的问题。提前提出这些问题的习惯,会连接到第3讲的边界值和第10讲的AI代码检验。
本课程的练习场里,处理结果主要用console.log输出。第5讲学了函数以后,会改成用“参数”接收输入、用“返回值”交出输出的方式。形式变了,输入、处理、输出这个框架却不变。
| 任务 | 输入 | 处理 | 输出 |
|---|---|---|---|
| 购物合计 | 各件商品的价格 | 全部加起来 | 合计金额 |
| 平均分 | 分数列表 | 加总后除以个数 | 平均值 |
| 统计字数 | 文章 | 一个字一个字地数 | 字数 |
| 是否及格 | 分数 | 与及格线比较 | 及格或不及格 |
4.第一段代码:JavaScript与`console.log`
本课程用JavaScript来学。每个网页浏览器里都内置了JavaScript的运行环境,不用另外安装任何东西就能马上运行。它最初是让网页动起来的语言,如今在服务器、自动化脚本、电子表格扩展功能等地方也被广泛使用。这里学到的顺序、条件、循环、函数等思路,换成别的语言也几乎同样适用。
最先要学的命令是console.log。它会把括号里的值在输出窗口中显示成一行。文字(字符串)用双引号或单引号括起来,数字直接写。用逗号放入多个值,会在一行里用空格隔开依次显示。放入算式,则显示计算后的结果。
代码从上到下一行一行地执行。所以写三行console.log,输出也会按同样的顺序出现三行。这就是算法的第一种要素“顺序”在代码中最简单的样子。请把下面的代码原样搬到练习场里运行,再改改数字或文字,看看输出有什么变化。
console.log("你好");
console.log("这里是编程基础课程");
console.log(2026);你好 这里是编程基础课程 2026
console.log("3个苹果的价格:", 1200 * 3);
console.log("10 除以 4 =", 10 / 4);
console.log("姓名", "小明", "年龄", 20);3个苹果的价格: 3600 10 除以 4 = 2.5 姓名 小明 年龄 20
console.log追踪值开始的。5.语句、注释,以及读懂第一个错误
代码的每一行叫作语句,在JavaScript里习惯在语句末尾加分号(;)。漏掉了大多数情况下也会被自动处理,但偶尔会被解释成与本意不同的意思,所以本课程始终加上。写在//后面的文字是注释,不会被执行。注释是留给人看的备忘,把“为什么这样做”写下来,对日后的自己和同事(还有AI)理解代码大有帮助。
计算机不会估摸,所以错一个字母它就会停下。比如把console错写成consol,就会出现“这个名字没有定义”的错误。刚开始,红色的错误信息让人害怕,但错误其实是一份友好的说明,告诉你计算机在哪里、因为什么停了下来。错误信息里通常包含错误的类型、简短的说明和行号。
在下面的例子中,第一行正常输出,到第二行就停了。也请留意:出错之后的行不会被执行。错误信息的措辞在不同浏览器里可能略有不同,但错误的类型(这里是ReferenceError)和行号提供的是同样的信息。各类错误的读法将在第8讲详细介绍。
// 注释不会被执行
console.log("第一行"); // 也可以写在行尾
console.log("第二行");第一行 第二行
console.log("到这里都会执行");
consol.log("有拼写错误的一行");
console.log("这一行不会执行");到这里都会执行
ReferenceError: consol is not defined- 把错误信息读完:按类型(
ReferenceError等)→ 说明 → 行号的顺序看 - 把行号指向的那一行和它上面一行一起看:漏掉括号、引号的错误有时是从上一行开始的
- 一次只改一处,然后重新运行:一下子改好几处,就不知道是哪一处起了作用
- 检查拼写和大小写:JavaScript把
Console和console看作不同的名字
6.练习场的用法
每一讲的最下面都有代码练习场。初始代码里用注释写着要做的事,填好空后运行就能看到输出,点评分就会和预期结果作比较。卡住了先看提示,还是不会再看参考答案;但不要照抄,而是一行行弄清为什么这样写,然后删掉,自己重新写一遍,这是进步最快的方法。
练习场里的代码只在你的浏览器中、在与其他页面隔离的安全空间(沙箱)里运行,不会发送到服务器。因此,除了用console.log输出之外,改变画面或连接互联网的代码在练习场里不会生效。即使不小心写出了停不下来的循环,几秒后也会自动停止,尽管放心实验。
不要害怕在练习场里随便改动。改改数字、换换行的顺序、故意打错字,就能看到错误信息怎么变化。编程光看是学不会的,要亲手运行、亲身犯错才会进步。
📌 要点总结
- 程序是计算机不加揣测、照单执行的精确指令
- 几乎所有算法都是顺序、条件、循环三种要素的组合
- 拆分事情时,要拆到第一次看的人也能照着做的程度
- 把任何任务分成输入、处理、输出来看,要做的东西就会变清楚
- 用
console.log输出值,错误信息按类型、说明、行号的顺序读
🧪 代码练习
只用console.log来对上输出的练习。输出会逐行与预期输出比较。
代码只在本浏览器内的隔离环境中运行,不会发送到服务器。无法访问网络,超过2秒会自动停止。改过的代码只保存在此浏览器中。按 Ctrl+Enter(⌘+Enter)运行,Tab 键输入两个空格(先按 Esc 再按 Tab 可跳到下一项)。
浏览器脚本未开启,无法运行代码,但题目、初始代码、自动检查项和参考答案都可以直接阅读。
1输出三行
用三次console.log,按顺序输出下面三行:你好 / 编程基础第1讲 / 准备完毕
你好 编程基础第1讲 准备完毕
💡 提示
文字用双引号括起来,行尾加分号。一行写一个console.log。
查看参考答案
console.log("你好");
console.log("编程基础第1讲");
console.log("准备完毕");
2输入 → 处理 → 输出:小票
这是一次虚构的购物。买了2盒2,500韩元的牛奶、1个3,000韩元的面包。把计算交给代码,像这样输出三行:牛奶: 5000 / 面包: 3000 / 合计: 8000。不要直接写数字,要用2500 * 2这样的算式。
牛奶: 5000 面包: 3000 合计: 8000
💡 提示
用逗号连起来的两个值之间隔一个空格。乘号是*,乘法比加法先算。
查看参考答案
// 牛奶 2500韩元 x 2盒,面包 3000韩元 x 1个
console.log("牛奶:", 2500 * 2);
console.log("面包:", 3000 * 1);
console.log("合计:", 2500 * 2 + 3000 * 1);
3理顺顺序
煮方便面的步骤被打乱了。只调换行的顺序,让第1步到第5步依次输出。不要改动文字。
1. 往锅里倒水 2. 把水烧开 3. 放入面饼和调料包 4. 等3分钟 5. 盛到碗里
💡 提示
代码从上往下执行。把先要做的事移到上面。
查看参考答案
console.log("1. 往锅里倒水");
console.log("2. 把水烧开");
console.log("3. 放入面饼和调料包");
console.log("4. 等3分钟");
console.log("5. 盛到碗里");
🤖 可以这样问 AI
复制后把 [ ] 部分换成你的情况。不要直接相信回答,请与正文对照核实。
想把日常工作拆成算法时
请把我每周都做的[工作说明]拆成第一次看的人也能照着做的步骤。标出每一步属于顺序、条件、循环中的哪一种,并单独写出输入和输出。先不要写代码;如果有我漏掉的情况(比如数据为空时),请向我提问。
第一次遇到错误信息时
我刚开始学JavaScript。请把下面的错误信息分成类型、含义、行号,用简单的话解释给我听;不要直接给出改好的代码,先告诉我该检查哪里,让我自己找出来。代码:[粘贴代码] 错误:[粘贴错误信息]
需要更多练习题时
请出5道只用JavaScript `console.log`就能完成的非常简单的练习题。每道题都准确写出预期输出,先把答案代码藏起来,等我发来答案后再逐行比较告诉我。
🧰 相关工具
可以当场检查、整理本讲涉及的 JSON、正则表达式和文本的工具。请不要粘贴真实的个人信息或密码。
- MDN Web Docs — JavaScript指南(Guide)中的语法与数据类型、console相关文档
- 编程入门教材中关于算法(顺序、选择、循环)和输入—处理—输出模型的一般内容
达成全部学习目标后,请点击完成。
此浏览器无法保存记录,仅在当前页面显示。