内容正文:
3.2 算法及其描述
情境导入
上节课我们学习了计算机解决问题的四个步骤,其中哪个步骤是核心?
设计算法
算法是解决问题的步骤清单,那我们如何把这个‘清单’清晰、准确地表达出来,让他人或计算机能理解?
这两个场景的描述有什么区别?为什么会出现不同结果?
场景一:妈妈教孩子煮面条,口头描述步骤(“先加水、开火,水开后下面,煮几分钟就好”),孩子可能煮糊或煮不熟(描述模糊、遗漏关键步骤)。
场景二:菜谱上的煮面条步骤(分点清晰、条件明确,如“水沸后放入面条,中火煮3分钟,加少许盐,再煮2分钟即可”),任何人按步骤做都能成功。
情境展示
规范性、无歧义、步骤完整
1. 算法的定义:算法是对解决特定问题的步骤的描述,是一组明确、有限、可执行的操作序列。
2、算法的五大基本特征:确定性、有穷性、可行性、输入、输出
新知探究
- 确定性:每一步操作都有明确的含义,无歧义。
“将变量a的值加1”(确定)vs“将变量a的值加几”(不确定,无效)。
-有穷性:算法执行步骤有限,能在有限时间内结束。
“计算1到100的和”(有穷)vs“无限循环加1”(无穷,无效)。
- 可行性:每一步操作都能通过现有技术实现。
“计算2+3”(可行)vs“计算无限大的数的平方”(不可行,无效)。
- 输入:算法可有0个或多个输入(外部数据)。
计算圆的面积(输入半径,1个输入)vs“输出‘Hello World’”(0个输入)。
- 输出:算法至少有1个输出(结果)。
“计算1到100的和并输出”(1个输出),无输出的算法无意义。
算法的五大基本特征
1. 方法一:自然语言描述-用日常语言(中文、英文等)描述算法步骤,通俗易懂,适合初步设计与交流。
- 要求:步骤清晰、无歧义、逻辑连贯,避免模糊词汇(如“大概”“几分钟”),明确条件与结果。
- 案例演示:以“判断一个整数是否为质数”为例,用自然语言描述算法:
1. 输入一个大于1的整数n;
2. 初始化变量i=2(从最小的质数开始判断);
3. 判断i是否小于等于n的平方根(取整数部分);
4. 若n能被i整除,则n不是质数,输出“该数不是质数”,算法结束;
5. 若n不能被i整除,则i的值加1,返回步骤3;
6. 若循环结束后无整除情况,则n是质数,输出“该数是质数”,算法结束。
算法的描述方法
2. 方法二:流程图描述-用规定的图形符号、流程线及文字说明,直观、形象地描述算法步骤与逻辑关系,无歧义、规范性强,是算法与程序的桥梁。
- 起止框(圆角矩形):表示算法的开始与结束,每个流程图只能有一个开始框和一个结束框。
- 处理框(矩形):表示具体的操作(如变量赋值、计算、输入输出等),框内填写操作内容。
- 判断框(菱形):表示条件判断(结果为“是”或“否”),框内填写判断条件,有两个出口(是/否)。
- 流程线(带箭头的直线):表示算法的执行顺序,箭头指向不可遗漏,避免交叉缠绕。
- 注释框(可选,平行四边形):补充说明算法步骤,不影响流程执行。
- 绘制规则(强调易错点):流程线必须带箭头,明确执行方向;判断框的两个出口需标注“是”“否”;算法步骤需按逻辑顺序排列,避免冗余与遗漏。
算法的描述方法
案例演示:以“判断一个整数是否为质数”为例
1. 输入一个大于1的整数n;
2. 初始化变量i=2(从最小的质数开始判断);
3. 判断i是否小于等于n的平方根(取整数部分);
4. 若n能被i整除,则n不是质数,输出“该数不是质数”,算法结束;
5. 若n不能被i整除,则i的值加1,返回步骤3;
6. 若循环结束后无整除情况,则n是质数,输出“该数是质数”,算法结束。
两种方法对比
描述方法 优点 缺点 适用场景
自然语言 通俗易懂、无需专业符号、易上手 复杂逻辑易歧义、步骤多易混乱、不直观 初步设计、简单算法交流、非专业场景
流程图 直观清晰、无歧义、逻辑严谨、规范性强 需记忆符号,复杂算法绘制繁琐 算法优化、程序编写前梳理逻辑、专业交流
实操演练
基础任务:算法描述互转
- 需求:已知“计算长方形面积”的自然语言算法(步骤:1.输入长方形的长a和宽b;2.计算面积S=a×b;3.输出面积S),将其转化为规范的流程图;再根据给出的“判断一个数是否为偶数”的流程图,反向梳理出自然语言算法。
- 要求:流程图符号使用规范、流程线清晰、标注完整;自然语言算法步骤无歧义、逻辑连贯,提交DrawIO文件与文字文档。
实操演练
提升任务(选做):算法设计与绘制
- 需求:设计“计算1到n的累加和(n由用户输入)”的算法,先用自然语言描述,再绘制流程图,体现循环逻辑与条件判断。
- 要求:算法满足五大特征,流程图能准确体现循环的开始、结束条件,尝试优化算法步骤(如减少冗余操作)。
下课!
谢谢同学们的观看!
$