第三单元项目六 探究文本字符的处理——字符串的操作 (第一课时)课件+教案(共34张PPT)

文档属性

名称 第三单元项目六 探究文本字符的处理——字符串的操作 (第一课时)课件+教案(共34张PPT)
格式 zip
文件大小 2.9MB
资源类型 试卷
版本资源 沪教版(2019)
科目 信息技术(信息科技)
更新时间 2021-10-08 13:56:31

文档简介

中小学教育资源及组卷应用平台
第三单元
特殊的线性表
项目六
探究文本字符的处理
——字符串的操作
第一课时
实现文本字符的编辑
教材分析
本节的主要内容是实现文本字符的编辑。以探究文本字符的处理为主线,整个项目分为实现文本字符编辑、实现文本查找、实现文本函数功能三个问题解决。本节课时是从探究电子表格应用中对文本字符进行插入、删除,引出文本字符在计算机中对应于字符串数据,而字符串数据是以种特殊数据类型的线性表形式存储数据的。在这一课时过程中,让学生逐步理解本项目的核心概念“字符串”及字符串应用的基本操作,如删除、插入等,并在活动中让学生利用
Python编程实现这些基本操作。通过这一项目学习过程,进一步培养学生的信息意识和计算思维。
教学目标
1.理解字符串的概念和特征;
2.理解字符串存储的原理和特点;
3.理解字符串的删除、插入两种基本操作和作用;
4.能设计字符串删除、插入的算法;
5.能用Python编写程序,实现字符串删除、插入等操作;
6.培养学生的信息意识和计算思维能力。
教学重点
1.理解字符串的概念;
2.理解字符串的存储结构;
3.掌握字符串处理的基本操作;
教学难点
1.能编程实现字符串处理的基本操作;
2.培养学生的信息意识和计算思维能力。
教学方法
体验法、讲授法、讨论法、示例法
教学准备
  计算机教室、多媒体设备、多媒体广播软件、教学课件、Python编程环境、学生上机练习的程序文件,预先编制的Python程序文件等。
教学过程
一、新课导入
电子表格等办公软件能方便地对文本字符进行如插入、删除、查找等编辑和处理(图3-12)。这些文本字符的操作是如何实现的呢?文本字符如学生的姓名、性别等,在计算机世界中对应于字符串数据。字符串是非数值计算问题所要处理的主要对象之一,在文本编辑等方面使用非常广泛。因此,我们有必要了解字符串的概念及其基本操作。
二、认识字符串
核心概念
字符串(
string)(简称串):由零个或多个字符组成的有限序列。
字符串的长度:字符串中字符的个数。
小贴士
字符串是特殊的线性表即数据元素只有一个字符的线性表。字符串的插入、删除操作实现与一般的线性表相同。
文档中的一个词组、一句话或选中的一段文字就是一个具体的字符串,在计算机中道常记为s=“a1a2a3…an“,其中s是字符串的名,双引号括起来的字符序列称为字符串的值;
ai(1≤i≤n)可以是字母、数字或其他字符,n为字符串长度。长度为零的串称为空串。学符串是有限个字符组成的序列,它也是一种线性表,只是线性表中的每个数据元素只能是字符类型,因此称字符串为特殊的线性表。字符串就是字符序列,是数据元素为字符型的线性表。因为字符串的数据元素类型是确定的字符类型,所以大部分程序设计语言都提供了字符串的存储和对字符串操作的丽数,只要直接调用系统提供的字符串操作函数即可实现对字符串的操作。
字符串的抽象数据类型表示如下:
ADT
String:
数据对象:D={ai
l
ai,

CharacterSet,i=1,2,…,n,n>=0}
数据关系:R={l
ai-1,ai

D,i=2,...,n}
基本操作:
def
Assign(self,chars)
#生成一个值等于chars的字符串
def
Copy(self,s)
#复制字符串。
def
Compare(self,s)
#比较操作,若大于s则返回1;若等于s则返回0;若小于则返回-1
def
Length(self)
#返回字符串的元素个数,即求长度
def
Concat(self,s)
#连接字符串s
def
SubString(self,pos,len)
#pos正确,返回第pos个字符起长度为len的子串
def
Index(self,s,pos)
#返回子串s在字符串中第pos个字符之后第一次出现的位置;若无则返回0
def
Replace(self,s,t)
#用t替换字符串中出现的所有的子串s
def
Insert(self,pos,s)
#在字符串的第pos个字符位置上插入s
def
Deletel(self,pos,len)
#删除字符串中第pos位置开始长度为len的子串
三、字符串的常用基本操作
1.插入操作
字符串中任何位置上都可以插入字符串。
例如,s=“Cheng,Fei”中第11个位置(下标为10)上插人字符串t=“Adam”,插入后s=“Cheng,Fei
Adam”。在s=“Cheng,Fei”中第7个位置(下标为6)上插入宇符串t=“Adam"(末尾须有一个空格),插入后s=“Cheng,Adam
Fei”。
在Python语言中没有直接使用的插入函数,可用截取子串和连接操作实现插入操作。使用数组存储时,算法的基本思想是先将插入位置上的元素依次后移空出空间然后插入元素。
2.删除操作
删除宇符串中的子串操作。
例如,=“China
Beijing
Shanghai”中将第14个位置(下标为13)开始的长度为9的子串删除,删除后s=“China
Beijing”。
在Python语言中可以用del语句实现删除操作。使用数组存储时,算法的基本思想是将被删结点后面的数据元素依次往前移动覆盖前一结点(有些程序设计语言中字符串数组最后一个元素是结束符)。
四、实现文本字符的编辑
用户在输入文本字符时,会发生漏输或多输,这时对输入的文本进行编辑修改,如插入或删除字符。使用文档处理软件进行编辑修改的操作很简单,只要定位光标,直接删除和插入即可,那么这些操作对于开发者来说是如何通过编程实现的呢?
在输入文本数据时,假设用数组存放一串文本字符,即字符串,实际上就是对数组进行赋值操作,如图3-13所示为存储学生信息表中学生李婷的昵称“Audrey”的数组s(以下都以存储单元加数组下标的形式表示)。
该字符串中有6个字符,称其长度的顺序存储若输入时,“
Audney”错输成
“Audneey”,多输了一个字母“e”,要在“Audneey”中删除这个“e”的过程如图3-14,图3-15所示。
图3-14
图3-15
思考与讨论
1.如果插入和删除的是多个字符的字符串,该如何处理?
插入或删除多个字符的操作是在插入或删除个字符的基础上重复操作完成的。要确定重复操作次数,须确定字符的个数(字符串的长度)。
2.使用链表如何实现字符串的存储和删除?
与线性表的链表操作基本相同。
五、课堂活动
1.尝试写出字符串抽象数据类型的定义。
ADT
String:
数据对象:D={ai
l
ai,

CharacterSet,i=1,2,…,n,n>=0}
数据关系:R={l
ai-1,ai

D,i=2,...,n}
基本操作:
def
Assign(self,chars)
#生成一个值等于chars的字符串
def
Copy(self,s)
#复制字符串。
def
Compare(self,s)
#比较操作,若大于s则返回1;若等于s则返回0;若小于则返回-1
def
Length(self)
#返回字符串的元素个数,即求长度
def
Concat(self,s)
#连接字符串s
def
SubString(self,pos,len)
#pos正确,返回第pos个字符起长度为len的子串
def
Index(self,s,pos)
#返回子串s在字符串中第pos个字符之后第一次出现的位置;若无则返回0
def
Replace(self,s,t)
#用t替换字符串中出现的所有的子串s
def
Insert(self,pos,s)
#在字符串的第pos个字符位置上插入s
def
Deletel(self,pos,len)
#删除字符串中第pos位置开始长度为len的子串
2.画出字符串插入与删除的算法流程图,利学过的数组知识,尝试完成下述代码,理解每一条语句的作用,并上机实践(为了便于理解算法思想,本项目所有活动采用
Python列表模拟数组的方式,而不直接采用
Python语言的字符串变量及相关操作)。
(1)插入程序
s=[‘A’,’u’,’n’,’e’,’y’]
#定义s列表并赋值
n=len(s)
#n为s列表长度
t=
input(“输入要插入的字符串")
m=len(t)
s.extend(t)
#扩大s列表空间
J=n-1
i=3
while(j>=i-1):
_____________
#元素后移,空出插入字符串的位置
_____________
for
j
in
range(0.
m):
_____________
#依次送入元素
n=n+m
print(“插入后的字符串为",s)
参考答案:
s[j+m]=s[j]
j=j-1
s[j+i-1]=t[j]
(2)删除程序:
s=[‘A
',u’,’d’,
‘n’,
'n’,
‘n,'e’,'e’,
‘y’]
print(s)
n=len(s)
i=5
#位置开始删除m个字符
m=3
j=i-1+m
while
(j____________
#元素前移,覆盖删除部分
____________
if(i-1+m>n-1):
#释放多余的空间
del
s[i-1:
n]
else:
del
s[n-m:
n]
print(“删除第",”j”位置,长度为”,m,"的数据后:",s)
参考答案:
s[j-m]=s[j]
j=j+1
21世纪教育网
www.21cnjy.com
精品试卷·第
2

(共
2
页)
HYPERLINK
"http://21世纪教育网(www.21cnjy.com)
"
21世纪教育网(www.21cnjy.com)(共34张PPT)
第一课时
实现文本字符的编辑
信息技术沪教版
选择性必修1
第三单元
特殊的线性表
项目六
探究文本字符的处理
——字符串的操作
一、新课导入
二、认识字符串
三、字符串的常用基本操作
四、实现文本字符的编辑
五、课堂活动
一、新课导入
电子表格等办公软件能方便地对文本字符进行如插入、删除、查找等编辑和处理。这些文本字符的操作是如何实现的呢?文本字符如学生的姓名、性别等,在计算机世界中对应于字符串数据。字符串是非数值计算问题所要处理的主要对象之一,在文本编辑等方面使用非常广泛。因此,我们有必要了解字符串的概念及其基本操作。
二、认识字符串
字符串
字符串(
string)(简称串):由零个或多个字符组成的有限序列。
字符串
字符串
字符串
字符串
字符串是特殊的线性表即数据元素只有一个字符的线性表。字符串的插入、删除操作实现与一般的线性表相同。
字符串
字符串
字符串
字符串的长度
字符串的长度:字符串中字符的个数。
字符串
字符串
字符串
字符串的值
文档中的一个词组、一句话或选中的一段文字就是一个具体的字符串,在计算机中道常记为s=“a1a2a3…an“,其中s是字符串的名,双引号括起来的字符序列称为字符串的值;
字符串的值
ai(1≤i≤n)可以是字母、数字或其他字符,n为字符串长度。长度为零的串称为空串。
字符串的值
学符串是有限个字符组成的序列,它也是一种线性表,只是线性表中的每个数据元素只能是字符类型,因此称字符串为特殊的线性表。字符串就是字符序列,是数据元素为字符型的线性表。
因为字符串的数据元素类型是确定的字符类型,所以大部分程序设计语言都提供了字符串的存储和对字符串操作的丽数,只要直接调用系统提供的字符串操作函数即可实现对字符串的操作。
字符串的抽象数据类型表示如下
ADT
String:
数据对象:D={ai
l
ai,

CharacterSet,i=1,2,…,n,n>=0}
数据关系:R={l
ai-1,ai

D,i=2,...,n}
基本操作:
def
Assign(self,chars)
#生成一个值等于chars的字符串
def
Copy(self,s)
#复制字符串。
def
Compare(self,s)
#比较操作,若大于s则返回1;若等于s则返回0;若小于则返回-1
字符串的抽象数据类型表示如下
ADT
String:
数据对象:D={ai
l
ai,

CharacterSet,i=1,2,…,n,n>=0}
数据关系:R={l
ai-1,ai

D,i=2,...,n}
基本操作:
def
Length(self)
#返回字符串的元素个数,即求长度
def
Concat(self,s)
#连接字符串s
def
SubString(self,pos,len)
#pos正确,返回第pos个字符起长度为len的子串
def
Index(self,s,pos)
#返回子串s在字符串中第pos个字符之后第一次出现的位置;若无则返回0
字符串的抽象数据类型表示如下
ADT
String:
数据对象:D={ai
l
ai,

CharacterSet,i=1,2,…,n,n>=0}
数据关系:R={l
ai-1,ai

D,i=2,...,n}
基本操作:
def
Replace(self,s,t)
#用t替换字符串中出现的所有的子串s
def
Insert(self,pos,s)
#在字符串的第pos个字符位置上插入s
def
Deletel(self,pos,len)
#删除字符串中第pos位置开始长度为len的子串
三、字符串的常用基本操作
1.插入操作
字符串中任何位置上都可以插入字符串。
例如,s=“Cheng,Fei”中第11个位置(下标为10)上插人字符串t=“Adam”,插入后s=“Cheng,Fei
Adam”。在s=“Cheng,Fei”中第7个位置(下标为6)上插入宇符串t=“Adam"(末尾须有一个空格),插入后s=“Cheng,Adam
Fei”。
2.删除操作
删除宇符串中的子串操作。
例如,=“China
Beijing
Shanghai”中将第14个位置(下标为13)开始的长度为9的子串删除,删除后s=“China
Beijing”。
四、实现文本字符的编辑
用户在输入文本字符时,会发生漏输或多输,这时对输入的文本进行编辑修改,如插入或删除字符。使用文档处理软件进行编辑修改的操作很简单,只要定位光标,直接删除和插入即可,那么这些操作对于开发者来说是如何通过编程实现的呢?
在输入文本数据时,假设用数组存放一串文本字符,即字符串,实际上就是对数组进行赋值操作,如图所示为存储学生信息表中学生李婷的昵称“Audrey”的数组s(以下都以存储单元加数组下标的形式表示)。
该字符串中有6个字符,称其长度的顺序存储若输入时,“
Audney“错输成
“Audneey”,多输了一个字母“e”,要在“Audneey”中删除这个“e”的过程如图所示。
思考与讨论
如果插入和删除的是多个字符的字符串,该如何处理?
思考与讨论
插入或删除多个字符的操作是在插入或删除个字符的基础上重复操作完成的。要确定重复操作次数,须确定字符的个数(字符串的长度)。
思考与讨论
使用链表如何实现字符串的存储和删除?
与线性表的链表操作基本相同。
五、课堂活动
1.尝试写出字符串抽象数据类型的定义。
ADT
String:
数据对象:D={ai
l
ai,

CharacterSet,i=1,2,…,n,n>=0}
数据关系:R={l
ai-1,ai

D,i=2,...,n}
基本操作:
def
Assign(self,chars)
#生成一个值等于chars的字符串
def
Copy(self,s)
#复制字符串。
def
Compare(self,s)
#比较操作,若大于s则返回1;若等于s则返回0;若小于则返回-1
def
Length(self)
#返回字符串的元素个数,即求长度
def
Concat(self,s)
#连接字符串s
def
SubString(self,pos,len)
#pos正确,返回第pos个字符起长度为len的子串
def
Index(self,s,pos)
#返回子串s在字符串中第pos个字符之后第一次出现的位置;若无则返回0
def
Replace(self,s,t)
#用t替换字符串中出现的所有的子串s
def
Insert(self,pos,s)
#在字符串的第pos个字符位置上插入s
def
Deletel(self,pos,len)
#删除字符串中第pos位置开始长度为len的子串
2.画出字符串插入与删除的算法流程图,利学过的数组知识,尝试完成下述代码,理解每一条语句的作用,并上机实践(为了便于理解算法思想,本项目所有活动采用
Python列表模拟数组的方式,而不直接采用
Python语言的字符串变量及相关操作)。
(1)插入程序
s=[‘A’,’u’,’n’,’e’,’y’]
#定义s列表并赋值
n=len(s)
#n为s列表长度
t=
input(“输入要插入的字符串")
m=len(t)
s.extend(t)
#扩大s列表空间
j=n-1
i=3
while(j>=i-1):
_____________
#元素后移,空出插入字符串的位置
_____________
for
j
in
range(0.
m):
_____________
#依次送入元素
n=n+m
print(“插入后的字符串为",s)
(1)插入程序
s=[‘A’,’u’,’n’,’e’,’y’]
#定义s列表并赋值
n=len(s)
#n为s列表长度
t=
input(“输入要插入的字符串")
m=len(t)
s.extend(t)
#扩大s列表空间
j=n-1
i=3
while(j>=i-1):
#元素后移,空出插入字符串的位置
for
j
in
range(0.
m):
#依次送入元素
n=n+m
print(“插入后的字符串为",s)
s[j+m]=s[j]
j=j-1
s[j+i-1]=t[j]
(2)删除程序:
s=[‘A
',u’,’d’,
‘n’,
'n’,
‘n,'e’,'e’,
‘y’]
print(s)
n=len(s)
i=5
#位置开始删除m个字符
m=3
j=i-1+m
while
(j____________
#元素前移,覆盖删除部分
____________
if(i-1+m>n-1):
#释放多余的空间
del
s[i-1:
n]
else:
del
s[n-m:
n]
print(“删除第",”j”位置,长度为”,m,"的数据后:",s)
(2)删除程序:
s=[‘A
',u’,’d’,
‘n’,
'n’,
‘n,'e’,'e’,
‘y’]
print(s)
n=len(s)
i=5
#位置开始删除m个字符
m=3
j=i-1+m
while
(j#元素前移,覆盖删除部分
if(i-1+m>n-1):
#释放多余的空间
del
s[i-1:
n]
else:
del
s[n-m:
n]
print(“删除第",”j”位置,长度为”,m,"的数据后:",s)
s[j-m]=s[j]
j=j+1
谢谢
21世纪教育网(www.21cnjy.com)
中小学教育资源网站
有大把高质量资料?一线教师?一线教研员?
欢迎加入21世纪教育网教师合作团队!!月薪过万不是梦!!
详情请看:
https://www.21cnjy.com/help/help_extract.php