内容正文:
3.2
算法及其描述
仁寿一中北校区 伍吉超
1
回顾算法的概念,算法的基本特征;
2
理解描述算法的3种基本方法;
CONTENT
3
掌握三种基本的控制结构
3.2.1 算法
1
算法 P48
算法是指在有限的步骤内求解某一问题所使用的一组定义明确的规则。
通俗地说,算法就是计算机求解某一问题的方法,是能被机械地执行的动作或指令的有穷集合。
生活中的“算法”
制作美食
组装家具
算法有哪些特征?
简单地说算法就是解决问题的方法和步骤
3.2.1 算法
2
算法的特征 P49
有穷性
确定性
数据输入
数据输出
可行性
1
2
3
4
5
一个算法所包含的计算步骤是有限的。
算法执行的每一个步骤必须有确切的定义,不能有模棱两可的情况。
一个算法有零个或多个数据输入。
一个算法有一个或多个数据输出,没有输出的算法是没有意义的。
每个步骤都可以在有限时间内完成。
为了更直观地理解算法的特征,我们可以通过一个简单的实例进行解释。例如,烹饪食谱就是一种算法,它具有以下特征:
有穷性:食谱中包含有限的步骤,最终完成烹饪。
确定性:食谱的每个步骤都是清晰明确的,如“将橄榄油倒入平底锅”。
输入:食谱需要一些原材料作为输入,如蔬菜、肉类等。
输出:食谱的输出是一个烹饪完成的菜肴。
可行性:食谱中的每个步骤都是可行的,可以在现实生活中完成。
正确性:按照食谱的步骤操作,可以得到正确的菜肴。
假设我们有一个简单的闹钟,它在每天的固定时间(例如早上7点)会响起。在这种情况下,闹钟的响铃时间是预先设定好的,不需要任何输入。闹钟算法不需要任何输入。它根据预先设定的时间执行操作,直接产生输出(闹钟铃声)。
游戏互动
游戏规则
用10秒记忆10个物品及其编号,之后根据提问回答5个物品的编号,看谁记住的最准。
0 书包
1 苹果
2 课本
3 橙子
4 梨子
5 猕猴桃
6 柚子
7 手机
8 铁观音
9 彩蛋
铁观音
课本
梨子
柚子
苹果
8
2
4
6
1
3.2.2 算法的描述
在开发和训练我的过程中,研究人员和工程师们确实遵循了这四个步骤:
分析问题:研究人员首先分析了自然语言处理领域所需解决的问题,例如理解自然语言、生成合适的回应等。
设计算法:根据所需解决的问题,研究人员设计了基于Transformer架构的算法,以实现有效的自然语言处理。此外,还涉及到许多优化技术,如自注意力机制、层次化处理等。
编写程序:一旦算法设计完毕,工程师们就会编写程序来实现这些算法。这涉及到编写模型的代码、数据预处理代码、模型训练代码等。
编程语言是一组用来定义计算机程序的的语法规则
调试运行:在编写程序的过程中,工程师们需要不断调试和优化模型,以确保其性能达到预期。这包括调整超参数、优化训练过程、提高模型的泛化能力等。
3.2.2 算法的描述
“最强大脑”游戏算法设计
想一想
如何描述以及设计“最强大脑”游戏算法呢?
“最强大脑”游戏分为几个环节呢?
每个环节都要解决什么问题呢?
1
2
3
分析问题 设计算法
3.2.2算法的描述
算法是对游戏实现过程的精确描述,需要用某种方法将其表示出来。
环节 解决的问题
出题
答题
输出结果
显示物品和编号10秒
给出物品,回答编号,统计答对题数
输出答对题目的数量
游戏环节以及运用自然语言描述
3.2.2 算法的描述
流程图 P50
图形 名称 功能
开始/结束 表示算法的开始或结束
输入/输出 表示算法中变量的输入或输出
处理 表示算法中变量的计算与赋值
判断 表示算法中的条件判断
流程线 表示算法中的流向
连接点 表示算法中的转接
用程序框图描述算法的方式
基本图形及功能
表示从( )输入数据到( )或者从( )输出数据到( )
3.2.2 算法的描述
流程图的基本图形及其功能
表示一个算法的( )和( )
开始
结束
外部
计算机内部
计算机内部
计算机外部
表示( )的内容
操作
表示( )。满足条件,执行标识为( )的路径;不满足条件,则执行标识为( )的路径
判断的条件
是
否
指向算法运行的( )
方向
用程序框图描述算法的方式
基本图形及功能
3.2.2 算法的描述
环节 解决的问题 解决问题的具体方法和步骤
出题 显示物品和编号10秒
答题 给出物品,回答编号,统计答对题数
输出结果 输出答对题目的数量
“最强大脑”游戏流程设计
1.显示游戏规则、物品及其编号10秒
2.清屏
1.给出一个物品名称
2.回答编号
3.如果回答正确,答对的题数加1
4.重复以上步骤,直到答完5道题
输出答对的题数
3.2.2 算法的描述
2
三种基本控制结构 P52
代码段1
代码段2
顺序结构
代码段1
代码段2
条件
成立
不成立
代码段
条件
成立
不成立
选择结构
循环结构
任何算法都可以用顺序、选择、循环这三种基本控制结构的组合来表示。
顺序结构:流程图中各个步骤按照顺序执行,前一个步骤完成后才能进行下一个步骤。
分支结构:流程图中存在判断,根据不同的条件走不同的分支(单选择、双选择、多选择),如菱形框表示的判断结构。
循环结构:流程图中某个步骤需要重复执行多次,直到满足某个条件后才能继续进行。(为真或为假才终止循环)
3.2.2 算法的描述
“最强大脑”游戏流程图
3.2.2 算法的描述
3.2.2 算法的描述
伪代码 P51
用介于自然语言和计算机语言之间的文字和符号来描述算法。它不用图形符号,书写方便,易于理解,便于向计算机程序设计语言过渡。
不够实用
伪代码是一种非正式的编程语言,用于描述计算机程序的算法和逻辑。它并不是一种实际的编程语言,但它可以帮助程序员在实际编写代码之前对程序进行概念化和设计。
分析归纳算法三种描述方法的优劣
算法描述的方法 优 势
不 足
自然语言表示法 通俗易懂,描述方便,容易掌握 很难清晰表示复杂算法;由于自然语言的歧义性,容易导致算法执行的不确定性;描述语言过长,不易翻译成计算机语言
流程图表示法
直观,清晰,明确,简洁 需要特定的规则,运用大量的图形符号;书写不便,修改不易
伪代码表示法
书写方便,格式紧凑,易于理解
编程语言种类繁多,伪代码语句不容易规范,易误读;不适合没有代码基础的初学者。
3.2.2 算法的描述
总结
算法
算法的特征
有穷性
确定性
数据输入
数据输出
可行性
算法的描述
自然语言
流程图
伪代码
基本控制结构
顺序结构
选择结构
循环结构
常用方法
算法及其描述
0个或多个
1个或多个
拓展
设计算法:判断某整数的奇偶性
(1)自然语言描述
(2)流程图描述
课后作业
import random
import time
import os
print(“你好,现在你有10秒钟的时间记忆下列物品及其编号")
things=["书包","苹果","课本","橙子","梨子","猕猴桃","柚子","手机","铁观音","彩蛋"]
for i in range(10):
print(i,":",things[i])#在屏幕上显示编号及物品
time.sleep(10) #延时10秒
os.system("cls") #清屏幕,隐去编号及物品
n=0 #记录答对的题数,初值为0
t2=random.sample(things,5)#随机抽出5个物品
for i in t2: #出5题
ans=int(input(i + "的编号是:"))#输入编号答题
if i==things[ans]:
n=n+1 #如果回答正确,答对的题数加1
print("
你一共答对了",n,"次")#屏幕显示答对的题数
input("
按回车键结束程序")
$