![大学计算机计算思维与信息素养第8章_第1页](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/938fb3b6-ebe9-4d0b-a803-4ebc2b220dcb/938fb3b6-ebe9-4d0b-a803-4ebc2b220dcb1.gif)
![大学计算机计算思维与信息素养第8章_第2页](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/938fb3b6-ebe9-4d0b-a803-4ebc2b220dcb/938fb3b6-ebe9-4d0b-a803-4ebc2b220dcb2.gif)
![大学计算机计算思维与信息素养第8章_第3页](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/938fb3b6-ebe9-4d0b-a803-4ebc2b220dcb/938fb3b6-ebe9-4d0b-a803-4ebc2b220dcb3.gif)
![大学计算机计算思维与信息素养第8章_第4页](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/938fb3b6-ebe9-4d0b-a803-4ebc2b220dcb/938fb3b6-ebe9-4d0b-a803-4ebc2b220dcb4.gif)
![大学计算机计算思维与信息素养第8章_第5页](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/938fb3b6-ebe9-4d0b-a803-4ebc2b220dcb/938fb3b6-ebe9-4d0b-a803-4ebc2b220dcb5.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、1第第8 8章章 利用典型计算机语言进行程序设计利用典型计算机语言进行程序设计哈尔滨工业大学计算学部教授张丽杰张丽杰2第8章 利用典型计算机语言进行程序设计本章导图本章导图3(1)Python语言l Python语言是一种面向对象的计算机语言语言是一种面向对象的计算机语言l Python语言拥有丰富的面向各专业应用开发的语言拥有丰富的面向各专业应用开发的“库库”资源资源l 【资源库【资源库/Repository】中包含了不同的【包】中包含了不同的【包/Package】,而一个包又包含】,而一个包又包含了若干个【类了若干个【类/Class】与【对象】与【对象/Object】,一个类,或者说,一个
2、对象拥有】,一个类,或者说,一个对象拥有若干个【函数若干个【函数/Function】。】。l 资源库需要安装到编程环境中才能被使用资源库需要安装到编程环境中才能被使用l 需要在程序中用相应的类创建对象,然后才能使用该对象的函数需要在程序中用相应的类创建对象,然后才能使用该对象的函数l 学习学习Python语言不仅仅是学习基本语法,更重要的是学习各种库资源的获取、语言不仅仅是学习基本语法,更重要的是学习各种库资源的获取、安装和应用方法安装和应用方法注意:注意:Python已经出现了几十个版本,不同版本的书写规则有差异,如果按照本书介绍的语言,已经出现了几十个版本,不同版本的书写规则有差异,如果按
3、照本书介绍的语言,出现语法错误,则对照相应版本的语法规则改写之便可。例如出现语法错误,则对照相应版本的语法规则改写之便可。例如Python2.7.x与与Python3.x书写规书写规则是不同的。本课程以则是不同的。本课程以Python2.7.x版本为准。计算机语言并不一定追求最新版本,而要看其所版本为准。计算机语言并不一定追求最新版本,而要看其所拥有的资源库的多少。拥有的资源库的多少。4(2)集成开发环境 与 编程语言PyCharm是集成开发环境,Python是编程语言5(3)熟悉编程环境基本编程环境:PyCharm + Python 2.7.15Python 2.7.15:下载地址: PyC
4、harm:下载地址: ,其中Community(社区版)是免费、开源的版本检查编程环境是否安装成功:启动PyCharm。选择【Create New Project】,输入工程文件的存储位置和名称(如 “D:firstProject”)选择【File New Python file】,输入Python源程序文件名称(如 “firstPythonProgram”,将出现源程序编辑窗口,在其中输入:# -*- coding: utf-8 -*-print 你好, 编程环境建立成功!在“Project窗口”中选中“firstPythonProgram.py”单击右键,选择【RunfirstPython
5、Program】,观察“运行/Run窗口”中是否出现“你好, 编程环境建立成功”一句话。如出现,表明PyCharm安装成功 6(4)熟悉编程环境熟悉各窗口的功能和作用7(5)熟悉Python语言的程序要素书写规则Python以以“#”引起一单行注释语句,以一组引起一单行注释语句,以一组(三单引号)括起一个(三单引号)括起一个段落,该段落便成为注释段落。段落,该段落便成为注释段落。如编辑含有中文的注释,则需在程序第一行增加语句,表明采用如编辑含有中文的注释,则需在程序第一行增加语句,表明采用UTF-8编码编码存储源程序,系统默认是按存储源程序,系统默认是按ASCII编码存储源文件。编码存储源文件
6、。# -*- coding: utf-8 -*-如程序中需处理中文,则在源程序开始处增加下列语句:如程序中需处理中文,则在源程序开始处增加下列语句:import sys;reload(sys);sys.setdefaultencoding(utf-8); Python程序采用程序采用“同长度缩进同长度缩进”区分语句段落。相当于区分语句段落。相当于C语言用以区分语句语言用以区分语句段落的段落的“ ”8(5)熟悉Python语言的程序要素书写规则Python语言是大小写相关的,即如语言是大小写相关的,即如“Exam”“”“exam”“”“eXam”等表示的等表示的是不同的标识符。是不同的标识符。P
7、ython程序通常会使用其它程序模块程序通常会使用其它程序模块(包、类包、类/对象和函数对象和函数),此时需要用到,此时需要用到Import语句。该语句有两种用法。一种用法如下:语句。该语句有两种用法。一种用法如下:import PackageName as anotherName;import PackageName这是将模块作为对象导入本程序中。使用该模块中的类这是将模块作为对象导入本程序中。使用该模块中的类/对象、函数时,需加前对象、函数时,需加前缀缀“PackageName.”或者或者“anotherName.”,其中,其中anotherName是本程序是本程序定义的该模块的别名。另一
8、种用法如下:定义的该模块的别名。另一种用法如下:from PackageName import *这是将该模块的所有内容导入本程序中,可直接使用该模块中的类这是将该模块的所有内容导入本程序中,可直接使用该模块中的类/对象、函数,对象、函数,而无需加前缀而无需加前缀“PackageName.” 9(5)熟悉Python语言的程序要素书写规则当使用了某模块的类当使用了某模块的类/对象和函数时,如出现类似于对象和函数时,如出现类似于“模块或对象或函数没有模块或对象或函数没有定义定义”的错误时,可能表明该模块没有被正确地导入到本工程文件中。此时可的错误时,可能表明该模块没有被正确地导入到本工程文件中。
9、此时可通过菜单【通过菜单【File DefaultSettings】,选择【】,选择【Project Interpreter】进行安装。】进行安装。Python可以使用也可以不使用可以使用也可以不使用“;”结束一条语句。可在一行以结束一条语句。可在一行以“;”区分书区分书写多行语句。写多行语句。Python程序中的变量可以直接赋值并使用,而无需事先定义其类型。当自上程序中的变量可以直接赋值并使用,而无需事先定义其类型。当自上而下运行到某一行,需要某一变量的值,则该变量必须在该行之前已经定义并而下运行到某一行,需要某一变量的值,则该变量必须在该行之前已经定义并赋值。赋值。当不了解某模块的功能或使
10、用方法时,可通过互联网搜索引擎搜索相关的使当不了解某模块的功能或使用方法时,可通过互联网搜索引擎搜索相关的使用方法,或者查询官网上发布的相关信息。用方法,或者查询官网上发布的相关信息。10第8章 利用典型计算机语言进行程序设计本章导图本章导图11(1)问题及分析【示例1】利用Python语言编写一个简单计算器,要求:输入两个数据,程序能够完成两个数的加、减、乘和除运算,并显示运算结果。l 如何做界面,输入数据和显示结果如何做界面,输入数据和显示结果l 如何读取界面中输入框的数据,或者将程序中如何读取界面中输入框的数据,或者将程序中的数据在界面中显示的数据在界面中显示l 如何将如何将Python
11、Python程序与界面要素相关联,即单击程序与界面要素相关联,即单击界面上的按钮,能够执行相应计算的函数界面上的按钮,能够执行相应计算的函数 PythonPython提供了多个开发图形界面的模块提供了多个开发图形界面的模块/ /库,如库,如TkinterTkinter、wxPythonwxPython、JythonJython等。本例使用等。本例使用TkinterTkinter模块做图形界面。模块做图形界面。Tkinter Tkinter 是是 Python Python 的标准图形用户界面模块,内置于的标准图形用户界面模块,内置于PythonPython安装安装包中的模块。包中的模块。12(
12、2)理解图形用户界面-GUIlTkinter模块支持GUI程序编制lTkinter模块包含了很多的类,不同的类将产生不同的对象。l如Tk类可以产生【主窗口】对象,Button类可以产生【按钮】对象,Label类产生【标签】对象、Entry类产生【单行输入框】对象,StringVar类产生【接收用户输入】对象。l只有在创建了对象后,才能使用 “对象名.函数名()”来读写对象的属性,或执行对象的函数l用“主窗口对象.mainloop()”创建消息循环来监控窗口中相应的对象。13(3)第1步:熟悉图形用户界面的制作对象名 = #用类创建一个对象# 先创建对象对象.函数()# 再为对象赋值各种属性主窗
13、口主窗口对象对象按钮按钮对象对象标签标签对象对象输入框输入框对象对象14(4)第2步:完成图形用户界面的制作输入框中可输入, 按钮可按下但无反应,为什么?15(5)第3步:编制执行加、减、乘、除的程序输入的是数输入的是数字型字符,字型字符,转换成数值转换成数值输入框对象输入框对象及获取输入及获取输入框中的输入框中的输入输入框对象输入框对象及向输入框及向输入框中写回结果中写回结果将数值转换为将数值转换为数字型字符数字型字符16(6)第4步:将执行加、减、乘、除的程序与相应的按钮绑定第第3步中定义的函数,步中定义的函数,执行某功能的程序执行某功能的程序窗口中的按钮对象,窗口中的按钮对象,“减减”按
14、钮按钮输入框中可输入, 按钮可按下能完成相应功能17第8章 利用典型计算机语言进行程序设计本章导图本章导图18(1)问题及分析【示例2】编制猜数游戏的程序:有n个游戏者,依次玩猜数游戏“系统随机产生一个整数,同学输入猜测数,直到猜中为止,记录猜测次数”。所有游戏者均完成后,按照猜测次数由低到高的次序排序游戏者。l 由【程序固定一个整数】让用户猜(简单由【程序固定一个整数】让用户猜(简单GUIGUI界面界面, ,有输出)有输出)l【程序随机产生一个整数】让用户猜并记录显示猜测次数(【程序随机产生一个整数】让用户猜并记录显示猜测次数(GUIGUI界面,有输入也有输出界面,有输入也有输出) ) l
15、多人猜数(多人猜数(GUIGUI界面,大循环处理,及复杂输出)界面,大循环处理,及复杂输出)19(2)固定值猜数游戏编写程序1由程序预置一个整数,然后让游戏者输入其猜测的数,程序进行比较,并分别给出提示,如“大了,继续努力”“小了,继续努力”“恭喜你,猜对了”。创建GUI主窗口猜数与结果判断函数答案由程序设定为一常数获取用户的输入并转换为数值20(2)固定值猜数游戏GUI界面输入与输出程序当按“确定”按钮时,执行猜数与结果判断函数创建的主窗口要运行消息循环,以接收消息和事件21(3)随机值猜数游戏编写程序2在程序1的基础上,丰富功能“由系统随机产生一个整数”“在界面上增加试猜次数的显示,即一位
16、游戏者经过了多少次才猜中一个数”答案由系统随机产生充分利用系统提供的模块和函数22(3)随机值猜数游戏增加试猜次数的统计增加试猜次数的显示标签对象Label4和输入对象outputLabel_1注意全局变量和局部变量的差别23(4)多人猜数游戏编写程序3编写n个游戏者玩猜数游戏的程序,即完成示例2的所有功能 数据如何保存:二维数组timesEvery保存编号1至10游戏者及其试猜次数,即timesEveryi0,i从0至9,保留第一位至第十位游戏者的编号(默认编号为1至10),timesEveryi1,保留第一位至第十位游戏者的试猜次数(初始值设为最大次数1000)。与timesEvery初始
17、值一样的二维数组X,该变量在后面排序时用到输入输出数据如何由界面获得:1个标签对象Label0,显示“请输入人数”,1个输入框对象numberInput和numberPerson,用numberPerson.get()读取用户输入的游戏人数,设置其默认值为1。2个标签对象Label3和finalOutput,前者显示“游戏结果”信息,后者初始时显示“等待游戏开始”,以后则显示已经完成的每一位游戏者的编号及试猜次数,中间用冒号分隔,游戏结束时显示按试猜次数递增排序的游戏者的编号。2个按钮对象startButton和exitButton,一个显示“游戏开始”,一个显示“退出”,当游戏者按前一按钮时
18、,则开始新一轮的多人游戏,当按后一按钮时,则退出游戏程序。24(4)多人猜数游戏多人猜数的初始化函数:理解各个变量的含义25(4)多人猜数游戏完善GUI界面26多人猜数游戏编写单人猜数的函数(以便多人猜数时调用)27多人猜数游戏编写多人猜数的函数(一个人猜完后,再初始化,然后另一个人猜)28第8章 利用典型计算机语言进行程序设计本章导图本章导图29(1)问题及分析【示例3】编制能够绘制如下图所示分形树的程序l 绘制绘制Y Y型图形型图形l 递归的绘制递归的绘制Y Y型图形型图形l 改变改变Y Y的分支长度、角度和递归的分支长度、角度和递归次数,形成不同的分形树图形次数,形成不同的分形树图形 3
19、0(2)用线段,绘制 Y 形图形用Canvas类创建一个画布对象,然后用画线的函数绘制线段。关键在计算并设置线段的顶点31(3)理解画布坐标及各参量的含义32(4)递归绘制Y的两个分支:改变角度、长度33(5)初始化并调用递归函数来绘制分形树34(6)运行程序来体验不同形态的分形树l改变一下参数,如finishLevel设 为 1 2 、 1 5 等 , 改 变LeftInter_angle为30度、40度、20度、10度等重新运行程序,便可看到不同的分形树l将坐标点计算公式math.cos()和 m a t h . s i n ( ) 分 别 更 换 为a b s ( m a t h . c
20、 o s ( ) ) , abs(math.sin(),即余弦值和正弦值都取绝对值,则便可产生示例图的最后一个图形35第8章 利用典型计算机语言进行程序设计本章导图本章导图36(1)问题及分析【示例4】汉诺塔是印度的一个古老传说。据说开天辟地之神勃拉玛在一个庙里留下了三根金刚石柱,并在第一根上从上到下依次串着由小到大不同的64片中空的圆型金盘,神要庙里的僧人把这64片金盘也按由小到大的顺序搬到第三根上,每次只能搬一个,可利用中间的一根石柱作为中转,并且要求在搬运的过程中,不论在哪个石柱上,大的金盘都不能放在小的金盘上面。神说,当所有的金盘都从事先穿好的那根石柱上移到另外一根石柱上时,世界就将在
21、一声霹雳中消灭了。37(2)汉诺塔的递归求解思维38(3)汉诺塔的递归求解程序-Python版39(5)第一步:绘制水平基线与三个柱子图形用户界面的关键是消息循环。图形用户界面的关键是消息循环。GUIGUI程序的运行是依靠传递和接收程序的运行是依靠传递和接收 创建画布(Canvas)对象,在该对象上绘制窄矩形40(6)第二步:绘制三个柱子上的盘子柱子及不同大小的盘子,首先用变量和数组来表示41(6)第二步:绘制三个柱子上的盘子然后依据变量和数组的值来绘制不同长度的窄矩形表示不同大小的盘子42(6)第二步:绘制三个柱子上的盘子每次清空画布,然后绘制三个柱子及其盘子43(6)第二步:绘制三个柱子上
22、的盘子初始化三个柱子上的盘子44(6)第二步:绘制三个柱子上的盘子清空画布,即重新绘制45(6)第二步:绘制三个柱子上的盘子重新装载盘子并重新绘制#先清空画布#重新初始化柱子及其上的盘子#重新绘制柱子及盘子46(6)第二步:绘制三个柱子上的盘子抽象每一个函数,功能简单且清晰。编制完成后便于后续重复调用绘制某一柱子上的盘子绘制三个柱子上的盘子设置三个柱子上的盘子清空画布重新开始47(7)第三步:演示盘子的自动移动过程从一个柱子取下一个盘子向一个柱子放入一个盘子将一个盘子从一个柱子移到另一个柱子汉诺塔程序移动盘子的函数盘子从一个柱子移动到另一个柱子,就是改变数组变量中的值,然后清空画布,重新绘制柱
23、子及其盘子48(7)第三步:演示盘子的自动移动过程任何盘子移动一次,都清空画布,重新绘制柱子及上的盘子-动画效果49(8)第四步:交互式控制游戏参数设置设置输入参数的各种控件对象【重置】按钮绑定reload_hanoi()【自动移动】按钮绑定redo_hanoi()【退出】按钮绑定exit()汉诺塔界面控制def reload_hanoi()接收用户输入的盘子数转换成整型数赋值给sumPlate50(8)第四步:交互式控制游戏参数设置51(9)第五步:汉诺塔盘子游动的单步执行增加一【单步执行】按钮,绑定StepByStep()52(9)第五步:汉诺塔盘子游动的单步执行l如何获取鼠标l如何响应鼠
24、标,依据鼠标的指示做操作(调用函数)def StepByStep()主要设置标志step_or_continue,其值为1则单步执行,为0则自动执行def hanoi_paint()单步执行时,循环延时等待直到pause为0处理事件的函数,其功能为pause如为0,则设为1,而如为1,则设为0。其控制着单步执行def key(event)将函数绑定到相应的事件上,Button-1为单击鼠标左键,key为任何键盘按键。即当发生这两种事件时则执行绑定的key()函数。单击鼠标事件 key函数:使pause为0 hand_paint()退出while循环执行一步 hand_paint()又进入while循环,等待单击鼠标53(9)第五步:汉诺塔盘子游动的单步执行def rel
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 摊贩经济的多元化发展路径考核试卷
- 农产品加工与营养损失控制考核试卷
- 摩托车空滤器滤芯清洗考核试卷
- 2025-2030年敏感肌美白面膜布创新行业跨境出海战略研究报告
- 2025-2030年地下水位监测系统设计行业深度调研及发展战略咨询报告
- 2025-2030年城市公交网络行业深度调研及发展战略咨询报告
- 2025-2030年可调谐激光器与波长转换器企业制定与实施新质生产力战略研究报告
- 2025-2030年含乳饮料质量追溯企业制定与实施新质生产力战略研究报告
- 2025-2030年护肤眼霜个性化行业深度调研及发展战略咨询报告
- 2025-2030年叶酸备孕营养素行业跨境出海战略研究报告
- 北京市丰台区2024-2025学年九年级上学期期末语文试题(含答案)
- 二零二五年度能源行业员工劳动合同标准范本3篇
- 计划供货时间方案
- 2024年石柱土家族自治县中医院高层次卫技人才招聘笔试历年参考题库频考点附带答案
- 西藏事业单位c类历年真题
- 2024人教新目标(Go for it)八年级英语下册【第1-10单元】全册 知识点总结
- 2025中国移动安徽分公司春季社会招聘高频重点提升(共500题)附带答案详解
- 七年级英语下学期开学考试(深圳专用)-2022-2023学年七年级英语下册单元重难点易错题精练(牛津深圳版)
- 杭州市房地产经纪服务合同
- 放射科护理常规
- 新时代中小学教师职业行为十项准则
评论
0/150
提交评论