内容正文:
4.4 综合问题的解决
【学习目标】
1.学会分析任务,描述需求分析,知道要解决问题的关键问题。
2.体验软件开发的基本流程。
【知识框架】
知识点1:问题解决过程
综合问题解决时,通常先考虑 ,后考虑 ;先面向 ,再细化 。软件开发解决问题时,需要立足对象间的相互 ,强调便捷的人机交互模式,尽量向需求靠拢。
“基于需求,分析问题”主要是根据项目需求分析问题,思考软件设计的初始条件、项目需实现的模块、模块功能的描述等。
“分解任务,设计流程”主要是根据分析问题后的模块功能,分解任务,设计具体的设计流程,如流程图等,也可以采用文字的形式进行描述。
“组装程序,测试运行”主要是通过程序设计实现分解后的各模块功能,各模块通过组合组装成一个完整的程序。
知识点2:需求分析
是软件工程中的一个关键过程。需求分析阶段的任务是确定软件系统的 。可以理解为确定需要计算机“做什么”及想达到什么样的效果。
只有在确定了这些需求后,才能够分析和寻求系统的 。
知识点3:事件处理
软件设计中通常有随事件的发生而改变的 ,如鼠标单击、键盘输入、循环监测等事件,并且根据事件来更新状态。
知识点4:总体设计和详细设计
总体设计就是在需求分析的基础上对模型 、分解 ,明确程序由哪些 组成。概括地说,就是系统应该如何 。
详细设计主要指 设计、 设计等。
知识点5:程序设计
程序设计是使用某种 编写命令序列,指示计算机完成特定功能的过程。
程序设计的核心在于将人类的逻辑思维转化为计算机能够 和 的精确指令,这一过程需要深厚的计算机科学基础、逻辑思维能力和问题解决技巧。
程序设计的过程通常包括分析、设计、编码、测试、排错等不同阶段。
分析阶段需要理解问题和需求,设计阶段则涉及算法和数据结构的选择,编码阶段是将设计转化为具体的程序代码,测试阶段则是验证程序的正确性和稳定性,排错阶段则是修正程序中的错误。
知识点6:pygame
pygame是一个专门用来开发游戏的模块,可以包含图像、声音等。
1.pygame 监听程序
while :
# 监听所有事件,获取事件列表
for in pygame.event.get():
if event.type==pygame.QUIT: # Quit事件
sys.exit() # 退出程序
#鼠标单击事件
if event. ==pygame.MOUSEBUTTONDOWN:
……
不同的按键事件,在监听事件中增加相应的判断语句。
2.pygame 窗口问题
import # 导入模块
pygame. () # pygame模块初始化
# 创建一个窗口screen,大小为800*600
screen=pygame.display.set_mode([ ])
pygame.display. ('实例') # 设置屏幕标题
screen. ((144,238,144)) # 窗口填充淡绿色
img=pygame.image. ('ball.png') # 载入ball.png图像到内存
# 将图像绘制在screen中,图像的左上角在[200,200]
screen.blit(img,[200,200])
pygame.display. () # 窗口刷新
活动1:了解需求,分析问题
打开配套资源中的“接福.py”程序并运行,单击屏幕上不断出现的福字,观察屏幕变化。
考虑游戏功能,需要导入的模块有 (模块提供了图像、声音等函数)、 (产生随机数)、 (Python环境相关函数)。
pygame模块
模块
功能
pygame.display
访问显示设备
pygame.event
管理事件
pygame.font
使用字体
pygame.image
加载和存储图片
活动2:人机交互及程序拼装
打开配套资源中的“接福.py” ,找到相应的代码,仔细阅读并理解各语句的含义,在下面横线上用自然语言描述其对应的功能。
if event.type==pygame.MOUSEBUTTONDOWN: #
# 获取坐标记录在mousex , mousey中
Mousex,mousey=pygame.mouse.get.pos()
【课后练习】
1.在综合问题解决方法中,面向对象方法的优势不包括( )
A. 易于维护 B. 易于扩展
C. 难以理解 D. 代码复用
2.在解决综合问题时,我们通常先考虑( ),后考虑细节。
A. 色彩 B. 界面 C. 总体 D. 局部
3.在Python程序中,下列语句的作用是( )
pic_m=pygame.image.load('air.jpg')
A. 仅装载air图片到内存
B. 装载air图片到内存,并在窗体中显示出来
C. 保存当前信息为air图片
D. 将变量pic_m中的信息作为图片(air)输出至程序文件夹
4.下列Python语句中,使用pygame实现延时1秒的语句正确的是( )
A. pygame.display.update(100)
B. pygame.time.delay(100)
C. pygame.display.update(1000)
D. pygame.time.delay(1000)
5.下列Python程序段能够创建大小为600×400窗口的是( )
①import pygame
pygame.init()
screen = pygame.display.load([600, 400])
②import pygame
pygame.init()
screen = pygame.display.set_mode([600, 400])
③from tkinter import *
screen = Tk()
screen.geometry("600x400")
④from tkinter import *
screen = Tk()
screen.size("600x400")
A. ①③ B. ①④ C. ②③ D. ③④
6.在python游戏设计中,pygame自带了一个监听类循环,可以不断检查用户的操作,不能实现的监听为( )
A. 用户按键 B. 移动鼠标
C. 关闭窗口 D. 加载图片
7.Python中的pygame模块是专门用来开发游戏的,其中pygame.display.set_caption("接福游戏")的功能是( )
A. 设置当前窗口标题栏的名称
B. 创建一个指定大小的窗口
C. 更新当前窗口
D. 从文件加载新图片
8.关于pygame模块,下列说法正确的是( )
A. pygame是Python中只能用来完成游戏设计的模块
B. 如果没有pygame模块,Python就无法设计游戏
C. Python中设计游戏只需pygame模块即可
D. pygame是一款跨平台的Python模块,专为电子游戏设计
综合分析题
第一题:
“洗衣机的洗衣流程”情境问题,洗衣机模拟人洗衣的过程,自动执行洗衣程序,节省了大量的人力,这主要归功于由算法控制的机器设备,请结合所学知识,完成以下5个小题。
1.算法指在有限步骤内解决问题所使用的方法,从下图的“洗涤算法”中,可以看出算法具有的特征是( )
A.无穷性 B.单一性 C.确定性 D.繁琐性
2.算法的描述方法主要有( )
①自然语言 ②结构图 ③流程图 ④伪代码
A.①②③ B.①③④ C.②③④ D.①②④
3.当衣物重量属于范围1,则设定为第一档水量;衣物重量属于范围2,则设定为第二档水量;衣物重量属于范围3,则设定为第三档水量;否则,报警提示衣物超重。该功能的实现应该使用哪种控制结构( )
A.顺序结构 B.选择结构 C.循环结构 D.递归结构
4. 以下有关程序控制结构说法正确的是( )
A.一个基本结构中只能包含一条语句
B.程序中的语句只能执行一次
C.选择结构中的语句都会被执行
D.在python语言中用于实现循环结构的语句有while语句和for语句
5. 某儿童牌洗衣机在最后一道漂洗过程中可将水加热至95℃,能够杀灭金黄色葡萄球菌、大肠埃希氏菌等多种附着在衣物上的细菌,除菌率可达99%以上。下列程序中横线处应该填写( )
n = int(input("请输入洗涤的次数:"))
for i in range(n):
print("第",i+1,"次洗涤:")
if ①:
print("加热至95℃")
else:
print("正常水温")
A.i < n B.i == n C.i == n+1 D.i == n-1
第二题:
小申想为小朋友们开发一款阅读相关的应用程序,该程序可以统计某位小朋友一周内每天阅读时间小于家长设定值(每周设置一次)的天数。
(1)在抽象与建模阶段,小申初步设计了计算模型,用day表示天数,time表示每天阅读时间,limit表示家长的设定值。请问其中day变量的数据类型为( )
A. f1oat B.str C. int D. bool
(2)设计算法阶段,以下流程图应填入的是( )
A.①i=i+1 ②day=day+1
B.①i=i+1 ②time=time+1
C.①day=day+1 ②i=i+1
D.①time=time+1 ②i=i+1
(3)根据上述算法描述,我们知道解决该问题的算法为枚举法,枚举算法的特点为( )。
A.一一列举 逐一检验 B.一一检验 逐一列举 C.重复检验 D.重复列举
(4)枚举算法的结构特征是( )。
A.分支结构中嵌套循环结构
B.分支结构中嵌套分支结构
C.循环结构中嵌套循环结构
D.循环结构中嵌套分支结构
(5)在编写程序阶段,小申想用range(起始值、终值、步长)函数生成一个长度为7的整数序列,用于表示一周7天。以下适用的语句是( ) 。
①range(0,7) ②range(1,7) ③range(0,7,1)
④range(1,7,1) ⑤range(7,1,-1)
⑥range(7,0,-1)
A.①③⑥ B.②④⑥ C.①③⑤ D.②④⑤
(6)在调试运行阶段,小申发现程序并未达到预期的效果,如图1、图2所示,请分析原因并加以改正。
①day=0
②limit=float(input("家长设定值(小时) :"))
③for i in range(7):
④ time=float(input("阅读时间 :"))
⑤ if time>limit:
⑥ day=day+1
⑦print("有",day,"天阅读时间小于家长设定值")
请写出出错的语句的编号 ,并写出修改后的语句: 。
【学案答案】
1.总体
2.细节
3.整体
4.局部
5.联系
6.需求分析
7.功能
8.解决方法
9.状态
10.细化
11.任务
12.模块
13.实现
14.界面
15.过程
16.程序设计语言
17.理解
18.执行
19.True
20.event
21.type
22.pygame
23.init
23.800,600
24.set_caption
25.fill
26.load
27.pygame
28.random
29.sys
30.update
31.按下鼠标
【课后答案】
1.答案:C解析:本题考查软件开发。面向对象方法通过封装、继承和多态等机制,使得代码更加清晰、易于理解。当然,对于初学者来说,面向对象的概念和术语可能需要一些时间来掌握,但一旦理解了这些基本概念,面向对象方法将大大提高代码的可读性和可理解性。故正确答案为:选项C。
2.答案:C解析:从总体入手,从细节优化,面向整体,细化局部,故选C。
3.答案:A解析:仅仅将图片加载得到变量air指向的内存中,故选A。
4.答案:D解析:延迟首先是delay,故排除AC,然后参数单位是毫秒,故选1000,选D。
5.答案:C解析:1是加载图片;4中size更为geometry;故本题选23,故选C。
6.答案:D解析:监听的一般是鼠标、键盘的操作,故选D。
7.答案:A解析:设置窗口的标题栏内容,故选A。
8.答案:D解析:pygame是一款跨平台的Python模块,专为电子游戏设计,故选D。
综合分析
第一题:
答案:C、B、B、D、D
解析:
1.具有确定性,故选C。
2.算法的描述有自然语言、流程图和伪代码,故选B。
3.几个条件的判断,故选选择结构,选B。
4.基本结构中可以有多句语句;语句循环可以重新执行;选择结构中的语句只有条件符合才执行;D循环有for和while故正确。选D。
5.最后一次的边界是n-1,故i==n-1的时候是最后一次漂洗,加热到95度。故选D。
第二题:
答案:C、C、A、D、A、⑤、if time<limit:
解析:
天数是整数C;
低于设置的时间,故天数加1,i表示一周七天,填C;
枚举法就是一一举例,逐一检验,故填A
枚举就是循环中进行分支判断,故填D
左闭右开,故是136正确,填A
时间比限定少才算,故⑤错误;
改为:if time<limit:
学科网(北京)股份有限公司
$$