运算思维 - 第一章:问题拟定与分析
各位同學大家好!欢迎来到“问题拟定与分析”的学习笔记。这是编程与解难世界中最首要也最重要的一步。想象一下你是一位侦探:在破案之前,你首先要清楚了解案件的来龙去脉!
在本章中,我们会学习如何审视问题、将其拆解,并在编写任何一行代码之前规划好我们的策略。只要把这一步做好,之后的一切都会变得轻松得多。我们开始吧!
1. 界定问题及其范畴
在解决问题之前,你必须清楚知道自己要达成什么目标。这听起来很显然,但却是很多人会匆匆略过的一步!
问题界定是指清晰、精准地阐述你希望解决的问题。主要目标是什么?
范畴则是指界定问题的边界。什么应包含在内,而同样重要的是,什么不应包含在内?这有助于避免项目变得过于庞大和复杂。
类比:策划生日派对
想象一下你被要求“策划一个生日派对”。这听起来有点模糊!一个好的问题界定应该是:
问题:“为我的朋友陈大文筹办一个惊喜生日派对。”
范畴:“派对将有15位宾客,于周六晚上举行,预算为$2000。我们需要处理邀请函、食物和一个生日蛋糕。我们将不负责安排宾客的交通。”
你看,现在任务就变得清晰明确了。在信息及通信科技(ICT)中,界定问题和范畴意味着你清楚知道你的程序应该做什么,以及不应该做什么。
**************************************************
快速回顾
**************************************************
- 界定问题:主要目标是什么?要具体!
- 界定范畴:有哪些限制和边界?我们不打算做什么?
**************************************************
2. IPO模型:你的解难蓝图
一旦我们清楚问题所在,就需要找出解决方案的主要部分。我们会使用一个简单而强大的模型,称为IPO,它代表输入(Input)、处理(Process)和输出(Output)。
类比:烘焙蛋糕
想想烘焙一个蛋糕。你不可能凭空变出一个蛋糕!你需要食材,你需要跟随食谱,然后才能得到你的最终产品。
- 输入:你需要的食材。(例如:面粉、糖、鸡蛋、牛奶)
- 处理:你所采取的步骤。(例如:混合食材、放入烤箱、烘烤30分钟)
- 输出:最终结果。(例如:一个美味的蛋糕!)
计算机程序的运作方式也完全一样!
信息及通信科技(ICT)问题的IPO拆解
输入:程序需要从用户或传感器获取什么信息或数据才能开始运作?
处理:程序需要对输入数据执行什么计算、步骤或操作?
输出:程序向用户显示的最终结果是什么?
课程大纲示例:BMI计算器
让我们用IPO模型来分析“计算身体质量指数(BMI)以监测健康体重”这个问题。
- 输入:要计算BMI,程序需要从用户那里获取两项信息:
- 用户的体重(例如:公斤)
- 用户的身高(例如:米)
- 处理:程序获取输入数据并执行计算。BMI的公式是 体重 ÷ (身高 x 身高)。
- 计算:$BMI = weight / (height * height)$
- 输出:程序显示计算结果。
- 计算出的BMI值(例如:22.5)
- 给用户的消息(例如:“你的体重处于健康范围。”)
重点归纳
永远思考IPO!对于任何问题,问自己:我需要从什么开始(输入)?我需要做什么(处理)?最终结果应该是什么(输出)?这个简单的结构将帮助你整理思绪,应对任何编程任务。
3. 拆解:化大为小
如果一个问题一开始看起来很庞大、不可能解决,别担心!我们会使用一种称为拆解(decomposition)的技巧,这只是一个比较专业的说法,意思是将一个大问题分解成更小、更易于管理的子问题。
类比:拼砌LEGO
当你拼砌一个大型LEGO汽车模型时,你不会尝试一次全部将所有500块积木拼凑在一起。说明书会教你如何先拼砌小部分:
- 子问题1:拼砌底盘(车身底部)。
- 子问题2:拼砌车轮并安装。
- 子问题3:拼砌车身。
- 子问题4:拼砌内部和车顶。
通过一个接一个地解决每个子问题,你最终就能解决拼砌整辆车这个大问题。
信息及通信科技(ICT)中的拆解
我们可以通过将问题分解成其IPO步骤,甚至进一步将这些步骤拆解,来进行问题拆解。
示例:一个简单的自动售货机程序
大问题:创建一个程序来模拟一个简单的自动售货机。
让我们来拆解这个问题:
- 子问题1(输入):显示可选饮品并要求用户做出选择。
- 子问题2(输入):要求用户投入金钱。
- 子问题3(处理):检查用户是否投入足够的金钱。
- 子问题4(处理):如果足够,计算找零。
- 子问题5(输出):取出饮品(显示消息)。
- 子问题6(输出):找回正确的零钱。
通过解决这六个小问题,整个任务就变得不那么可怕了!
重点归纳
拆解是应对复杂任务的最佳利器。如果一个问题让你感到不知所措,就把它拆解开来!先解决小部分,然后再把它们组合起来。
4. 模式识别:寻找相似之处
分析问题的最后一步是寻找模式。模式识别是指识别不同问题(甚至同一问题内部)中的共同元素或相似之处。
为什么要这样做?因为如果你以前解决过类似的问题,你就可以重用该解决方案的部分!这就是关于更聪明地工作,而不是更努力。
类比:学习食谱
一旦你掌握了炒菜的基本模式(热油、加蒜、加蔬菜、加蛋白质、加酱汁),你就可以做出数百种不同的菜肴。模式是相同的;你只是更改具体的食材。你不需要为炒鸡肉和炒牛肉学习一套完全不同的方法。
课程大纲示例:学生排序
- 问题A:按身高将一群学生按升序(由矮至高)排序。
- 问题B:按考试分数将同一群学生按降序(由高至低)排序。
模式是什么?
这两个问题的核心处理过程是相同的:你一次比较两名学生,如果他们的顺序不正确就交换位置。
我们如何重用解决方案?
基本的排序算法是相同的。唯一改变的是:
1. 你正在比较的数据(身高 vs. 分数)。
2. 比较逻辑(升序的“小于” vs. 降序的“大于”)。
课程大纲示例:编程机器人
- 问题A:编程机器人以正方形路径移动。
- 问题B:编程机器人以三角形路径移动。
模式是什么?
绘画规则图形的一般模式是:“重复N次:向前移动一定距离,然后转动一个角度。”
我们如何重用解决方案?
- 对于正方形:重复4次(向前移动,转90度)。
- 对于三角形:重复3次(向前移动,转120度)。
通过识别这种模式,你只需改变重复次数和转动角度,就能轻松修改你的正方形程序,让机器人绘画三角形、五边形或任何其他多边形。
你知道吗?
模式识别是Netflix和Spotify等服务如何向你推荐电影和音乐的关键部分。他们会寻找你喜好的模式,并找出其他品味相似的用户,从而推荐你可能喜欢的内容!
重点归纳
永远寻找模式和相似之处。这能让你重用现有的解决方案,节省时间和精力,并帮助你更有效地解决新问题。