高中信息技术2.用模块化设计批量计算平均气温优秀ppt课件
展开“自顶向下、逐步求精”的程序设计方法
用模块化设计批量计算平均气温
“自顶向下、逐步求精”
先进行顶层设计,再对各部分进行细化。这种程序设计方法使程序的结构变得更加清晰,程序的调试也更加简单。
输入数据并做相应调整的处理
大多数解决现实问题的程序都比本书中介绍的程序要大得多,对于一个复杂的问题通常需采取“分而治之”的策略,也就是模块化设计的思想。
整个程序设计完成之后,就可以使用特定的程序设计语言来编写程序。
需求分析所做的事情是根据用户的要求确定程序应当具备哪些功能,达到什么性。
设计程序阶段大致又可再分为两个子阶段,即程序的模块化设计和模块内的逻辑设计。
一个程序的算法设计可以从三个基本步骤
枚举法的基本原理是根据已知条件,在给定的范围内对所有可能的答案按某种顺序进行逐一枚举和检验,从中找出那些符合要求的答案。
问题所涉及的情况有哪些,情况的种数是否可以确定。
尽可能缩小搜索范围,减少求解时间。
分析出来的这些情况,须满足什么条件才能成为问题的答案。
假设这个5位数为abcde,则abcde=ax10000+bx1000+cx100+dx10+e。本问题中,已知万位、十位、个位上的数字a、d、e(可以由用户输入),而千位和百位上的数字b、c是待求的,因此可采用枚举法列举b、c所有可能的数字(0-9),每列举一次,判断构造的号码能否被57或67整除,若能则输出该号码。
1.输入a、d、e; 2.循环b从0到9, step1; 2.1 循环c从0到9,step1; 2.1.1 number=ax1000+bx100+cx100+dx10+e; 2.1.2 如果 number能被57或67整除,则输出 number。
在 Pythn语言中,可利用嵌套列表组织以上数据:将每个月的日平均气温构成的列表作为一个列表的数据项——子列表,构成嵌套的列表,其形式如下: [ [ ],[ ],[ ],[ ]……] 使用下标可以方便地访问嵌套列表中的每一个子列表。
f=pen("c:\\sample\\2013avgtq.csv")yL=[]fr line in f line=line.replace("\n","") L=line.split(",") fr i in range(len(L)): L[i]=int(L[i]) yL.append(L) f.clse ()
Pythn语言对文件采用统一的操作步骤,即“打开--操作--关闭”。 pen函数用来打开文件(默认用只读方式打开),并返回文件对象。 fr line in f是逐行访问文件对象f。 line表示一行字符串。
line. replace("\n","")是将每一行结束处的换行符"\n"用空串替代,相当于删除换行符。 Line.split(",")是按照逗号将line字符串切割为若干个字符串,返回一个列表。 yL.append(L)是将列表L追加到列表yL中,作为一个数据项。 clse函数用来关闭文件。
“自顶向下、逐步求精”的设计方法:选进行顶层算法设计,再对各组成部分进行细化。 批量计算一年中12个月的月平均气温,可以使用“自顶向下、逐步求精”的方法来设计算法。
1.创建日平均气温列表;2.计算12个月的月平均气温;3.输出12个月的月平均气温。
第1步算法细化1.1打开文件对象f;1.2初始化新列表dL;1.3逐行读入文件数据,将一行字符串切割,转化为整型数据后,作为子列表追加到列表d中;1.4关闭文件。
算法步骤1.3是一个循环结构,1.3.2也是一个循环结构,在循环结构中出现了另一个循环结构,这称为循环的嵌套结构,也称多重循环。
第1.3步算法细化1.3.1 按逗号切割字符串line中的数据到列表L;1.3.2 循环i从0到len(L)-1; 将L[i]转化为整数;1.3.3 将L追加到列表dL中。
第2步算法细化2.1 初始化avgy;2.2 迭代访问dL中每一个子列表m; 2.2.1 列表m的平均值avg; 2.2.2 将avg追加到列表avgy中。
模块化设计中的子模块既可以用函数实现,也可以直接用程序块实现。下面以模块1创建日平均气温列表为例,完成其函数实现。
在 Pythn Shell 中编写并测试函数 readNList,该函数功能为从参数中获取指定文件名,读入文件数据到列表,处理后得到包含12个月的日平均气温子列表的新列表,并返回新列表。
本问题所涉及的数据对象包括函数的输入参数(文件名filename)、存放日平均气温 数据的嵌套列表dL、文件对象f。 函数的计算结果是包含12个月的日平均气温子列表的新列表,通过retum语句返回。
>>> def readNList(filename): f=pen(filename) dL=[] fr line in f: line=line.replace("\n", "") L=line split(",") fr i in range(len(L)): L[i]=int(L[i]) dL.append(L) f.clse() return dL
>>>filename=input("请输入csv文件名:")请输入csv文件名:c:\sanple\2013avgtq.csv>>> tqy=readNList(filename)>>> tqy
以下函数调用中,存储文件名的变量为file,与函数定义时输入参数的名称 filename不一致。这种函数调用正确吗?为什么?
>>> file="c: \\sample\\2013avgtq.csv" >>> tqy=readNList(file)>>> tqy
高中信息技术沪教版(2019)必修2 信息系统与社会4.了解网络社交的道德规范与法律法规优质ppt课件: 这是一份高中信息技术沪教版(2019)必修2 信息系统与社会4.了解网络社交的道德规范与法律法规优质ppt课件,文件包含沪科版2019高中必修2信息技术项目82了解网络社交的道德规范与法律法规课件pptx、沪科版2019高中必修2信息技术项目82了解网络社交的道德规范与法律法规教案doc、项目八第二课时了解网络社交的道德规范与法律法规mp4、项目八第二课时了解网络社交的道德规范与法律法规1mp4等4份课件配套教学资源,其中PPT共26页, 欢迎下载使用。
2020-2021学年3.探究点餐数据的计算机处理过程精品ppt课件: 这是一份2020-2021学年3.探究点餐数据的计算机处理过程精品ppt课件
高中信息技术沪教版(2019)必修1 数据与计算4.评估手写数字识别模型并开展应用精品ppt课件: 这是一份高中信息技术沪教版(2019)必修1 数据与计算4.评估手写数字识别模型并开展应用精品ppt课件,文件包含沪科版2019高中必修1信息技术项目94评估手写识别模型并开展应用课件pptx、沪科版2019高中必修1信息技术项目94评估手写识别模型并开展应用教案doc等2份课件配套教学资源,其中PPT共26页, 欢迎下载使用。