高中信息技术教科版 (2019)选修1 数据与数据结构2.3 字符串应用教案
展开课堂教学设计
课 题 | 2.3字符串应用 | 课时安排 | 1 | 课型 |
| ||||
素 养 目 标 | 课程标准要求:理解字符串及其相关的概念。掌握字符串抽象数据类型的定义。 | ||||||||
掌握字符串处理的基本方法。 | |||||||||
信息意识:能够根据解决问题的需要,自觉、主动地寻求恰当的方式获取与处理信息;在合作解决问题的过程中,愿意与团队成员共享信息,实现信息的更大价值。 | |||||||||
计算思维:针对给定的任务进行需求分析,明确需要解决的关键问题。能提取问题的基本特征,进行抽象处理,并用形式化的方法表述问题。运用字符串结构设计解决问题的方案,结合字符串的相关操作、函数与方法,编程实现。 | |||||||||
数字化学习与创新:学生在解决困难时能有意识地运用数字化环境中的信息与学习资源展开自主学习。 | |||||||||
教学重点 |
| ||||||||
教学难点 |
| ||||||||
教学方法 | 讲授法,演示法,问题情境教学法 | ||||||||
学习方法 | 自主探究法,讨论学习法 | ||||||||
教学过程 | 个别化教案 | ||||||||
一、考勤 |
| ||||||||
二、课前小测评:随机抽取问题的概念 | |||||||||
三、导入:密码技术作为信息安全的核心技术,不仅可以保证信息的机密 性、完整性和可用性,还可以防止信息被篡改和伪造。它被广泛应用 于日常生活和工作学习的方方面面,比如银行卡取款、网上支付系 统、无线网络的连接和网站用户登录等都离不开密码技术。
| |||||||||
小明和队友遇到的第一个闯关任务是根据明文和密钥,写出恺撒 加密后的密文。 明文:Imagination is more important than knowledge. 密钥:3 当密钥为3时,所有字符向左偏移3位,加密时明文里所有的字母 A将被替换成X,B变成Y,以此类推,X将变成U,Y变成V,Z变成 W,如图2.3.1所示。 四、新课内容: 1.字符串及其相关概念 字符串:是一种由字符构成的线性结构。上面活动中的明文和密 文均是字符串,字符串中的每个字符从左到右依次排列,且有确定的位置。字符串中第一个字符的位置下标是0,可以根据字符在字符串中的 位置下标来访问字符。 字符串长度:字符串所含字符的总数称为字符串的长度,长度为 的字符串称作空字符串或空串。 子串:字符串中某一连续的片段称为字符串的子串。任何字符串都 是自己的子串。 如图2.3.3所示,字符串s="Data Structure"由14个字符构成,因此字 符串长度为14,其中位置下标为5的字符是“S”,“ata”是字符串s的 一个子串。 2.字符串匹配 在字符串中检测查找特定形式的字符串的这类操作都属于字符串 配(nmatching)。即给定目标串T和被式串P之后,判定T中是否有 在某一子串与P相同,如果存在则匹配成功 。字符串匹配的应用非常广泛,比如垃圾邮件的检测、搜索号引擎关键字的查询、网络热搜排行榜的 更新等都会用到字符串匹配操作。 3.字符串抽象数据类型的定义 为了方便用字符串来解决问题,需要定义字符串抽象数据类型。我 们为字符串抽象数据类型定义了如下接口。 ADT String: ·String(value)):建立一个字符串对象,value是字符序列或者其他 类型对象。 ·isEmpty():判断字符串是否是空串。 psep:根据分隔符sep将字符串进行分隔,并返回分隔后字符 · size(:获取字符串的长度。 串的列表。 ·stripO:返回去掉前后空格之后的字符串。 ·find(sub):返回sub在字符串中第一次出现的位置,如果没有则返 回-1。 replace(old,new):返回将所有old子串替换为new后的字符串。
| |||||||||
count(sub):返回sub在字符串中出现的次数。 concat(another):返回与another连接后的字符串。 substring(start,end):返回起始位置为start,.结束位置为end的子字符串。 #破译恺撒密码
#输出明文 for key in range(1,26): #密钥依次递增 #密文字符串匹配 if stringMatch(tStr,enCrypt(pStr,key))!= -1: print(deCrypt(tStr,key)) #解密密文 break else: print("can not find it") #加密函数 def enCrypt(message,key): #用key对message加密 alphabet = 'abcdefghijklmnopqrstuvwxyz' #字母表 encrypted = '' #加密后的密文 for char in message: #对明文字符依次加密 if char not in alphabet: #非字符不变 encrypted = encrypted + char else: #字符加密 rotatedIndex = alphabet.index(char) - key #左移位数 #位数对26求余 encrypted = encrypted +alphabet[rotatedIndex % 26] return encrypted
#字符串匹配函数 def stringMatch(t,p): n = len(t) #目标串长度 m = len(p) #模式串长度 for i in range(n-m+1): #字符串匹配过程 for j in range(m): #字符比对过程 if p[j]!= t[i+j]: #字符不同 break else: #匹配成功 return i return -1 #匹配失败 #解密函数 def deCrypt(message,key): #用key对message进行解密 alphabet = 'abcdefghijklmnopqrstuvwxyz' #字母表 decrypted = '' #加密后的密文 for char in message: #对明文字符依次加密 if char not in alphabet: #非字符不变 decrypted = decrypted + char else: #字符加密 rotatedIndex = alphabet.index(char) + key #右移位数
#位数对26求余 decrypted = decrypted +alphabet[rotatedIndex % 26] return decrypted
tStr = 'sohdvhzulwhwkhqdphriwkhiluvwsurjudpphulqwkhzruog' pStr = 'programmer' #线索模式串初始化 #输出明文 for key in range(1,26): #密钥依次递增 #密文字符串匹配 if stringMatch(tStr,enCrypt(pStr,key))!= -1: print(deCrypt(tStr,key)) #解密密文 break else: print("can not find it")
线性表和字符串都是线性结构,元素之间有先后关系,但字符串中每个元素只能存储字符, 而线性表则可以存储任意类型的数据元素。 五、课堂小结: 通过本节学习我们理解线性表解决随机抽取问题的方法。理解随机抽取问题的概念和实现过程。体会线性表在问题解决中的作用和意义。
| |||||||||
作 业 |
| ||||||||
板 书 设 计 |
字符串及其相关的概念。 掌握字符串处理的基本方法。 | ||||||||
教 学 反 思 |
| ||||||||
教案查阅签字 |
| ||||||||
浙教版 (2019)选修1 数据与数据结构第三章 字符串、队列和栈3.1 字符串优秀表格教案设计: 这是一份浙教版 (2019)选修1 数据与数据结构第三章 字符串、队列和栈3.1 字符串优秀表格教案设计,文件包含311字符串的概念特性及基本操作教学设计doc、312字符串的应用教学设计doc等2份教案配套教学资源,其中教案共5页, 欢迎下载使用。
必修2 信息系统与社会2.3 无线局域网的组建教案设计: 这是一份必修2 信息系统与社会2.3 无线局域网的组建教案设计,共3页。教案主要包含了进行课前5分钟教育,考勤并进行课前测评,引入,组建小型局域网,小结等内容,欢迎下载使用。
高中信息技术浙教版 (2019)选修1 数据与数据结构3.1 字符串教案及反思: 这是一份高中信息技术浙教版 (2019)选修1 数据与数据结构3.1 字符串教案及反思,共2页。