版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第6讲由机器语言到高级语言哈尔滨工业大学计算学部教学委员会主任国家教学名师战德臣第6讲由机器语言到高级语言一、计算机语言的发展二、高级语言程序的基本要素三、不同的计算机语言之异同点四、用高级语言构造程序五、程序设计过程与程序设计环境六、计算机语言与编译的基本思维-抽象与自动化算法解决问题的步骤程序计算机能够理解与执行的解决问题的步骤计算机语言步骤书写的规范、语法规则、标准的集合是人和计算机都能理解的语言高级语言语法要素程序设计技巧程序设计环境算法设计策略算法分析方法数据结构设计算法表达方法读程序写程序练读算法写算法练计算机语言的发展算法、计算机语言与计算机程序计算7+10并存储的机器程序用二进制和编码方式提供的指令系统所编写程序的语言10000110000001111000101000001010100101110000011011110100所有程序都需转换成机器程序,计算机才能执行CPU用二进制和编码提供的可以解释并执行的命令的集合10000110000001111000101100001010操作码地址码指令系统机器语言计算机语言的发展机器语言与机器程序计算7+10并存储的汇编语言源程序用符号编写程序==
翻译==
机器语言程序MOVA,7ADDA,10MOV(6),AHLT人们提供了用助记符编写程序的规范/标准。同时开发了一个翻译程序(被称为汇编程序),实现了将符号程序自动转换成机器语言程序的功能1000011000000111MOVA,7操作码地址码汇编语言用助记符号编写程序的语言,可与机器语言一一对应计算机语言的发展怎样解决机器语言编写程序所存在的困难----符号化语言/汇编语言
MOVA,7ADDA,10MOV(6),AHLT汇编程序汇编语言源程序助记符号机器语言程序二进制和编码10000110000001111000101100001010100101110000011011110100由汇编程序自动转换转换执行汇编语言转换规则{
助记符号,机器指令}用助记符号书写程序的规范、语法规则、标准的集合是人和计算机都能理解的语言机器指令的集合是计算机能够理解并执行,但人理解困难的语言机器语言编制完成7+10并存储的汇编语言程序完成7+10并存储的机器语言程序执行计算机语言的发展符号化程序机器不能直接执行怎么办----汇编/翻译
测练题:关于汇编语言程序,下列说法正确的是_____。汇编程序,是能够被机器直接执行的程序汇编程序,是用助记符等编写的程序汇编程序,是将汇编语言源程序转换成机器程序的程序汇编程序,是用汇编语言编写的程序ABCD提交单选题1分计算7+10并存储的高级语言(源)程序Result=7+10;Return人们提供了类似于自然语言方式、以语句为单位书写程序的规范/标准。并开发了一个翻译程序,实现了将语句程序自动翻译成机器语言程序的功能。高级语言源程序:是用高级语言编出的程序。编译程序:是将高级语言源程序翻译成机器语言程序的程序。高级语言用类似自然语言的语句编写程序的语言。计算机语言的发展高级语言高级语言:机器无关性;一条高级语言语句往往可由若干条机器语言语句实现且不具有对应性汇编语言:机器相关性;汇编语言语句和机器语言语句有对应性汇编程序汇编语言源程序助记符号转换执行转换规则{助记符号,机器指令}编译程序高级语言源程序变量/表达式/语句机器语言程序二进制和编码10000110000001111000101100001010100101110000011011110100转换执行高级语言编译规则机器语言编制Result=7+10ReturnMOVA,7ADDA,10MOV(6),AHLT自动转换自动转换执行转换汇编器编译器转换计算机语言的发展高级语言vs.汇编语言符号化,计算化再语义化自然/社会问题程序化执行化算法的结果机器程序--机器指令运算器和控制器(CPU)-执行算法自然/社会问题的求解结果产生用0/1编码:指令和数据存储器:0/1存与取0/1化信号化存储高级语言程序编译执行化汇编语言程序程序执行汇编程序执行宁在直中取,不在曲中求曲中求直,蓄而后发计算机语言的发展用高级语言进行问题求解的实现过程计算机语言的发展高级语言(源)程序K=0;ForI=1to100Step1{If
I<=50
&&I>30{K=K+I;
}}保留字变量常量语句表达式【保留字】为编译器识别和处理语句而确定的一些特定符号;【标识符】为常量或变量的名字【符号化】常量、变量—标识符【语句化】赋值、分支与循环【结构化】函数及其调用怎样阅读高级语言程序:(1)识别标识符【常量、变量】;(2)识别表达式【算术表达式、比较表达式和逻辑表达式】,不管多么复杂,其结果就是一个值;(3)识别语句【赋值、分支和循环】;(4)识别函数及其调用。上述程序,你识别清楚了吗?----像堆积木一样构造程序Command1ClickPrivateSubCommand1_Click(){//此处放置单击按钮Command1时要执行的程序语句;}Text2TextChangedPrivateSubText2_TextChanged(){//此处放置文本框Text2中内容发生变化时将要执行的程序语句;}TextTextChangedPrivateSubText_TextChanged(){//此处放置文本框Text中内容发生变化时将要执行的程序语句;}Text1TextChangedPrivateSubText1_TextChanged(){//此处放置文本框Text1中内容发生变化时将要执行的程序语句;}Text1GetFocusPrivateSubText1_GetFocus(){//此处放置文本框Text1中内容发生变化时将要执行的程序语句;}计算机语言的发展面向对象的程序设计语言与可视化构造语言怎样阅读高级语言程序:(1)识别对象【窗体对象和控件对象】;(2)识别对象的属性【对象的外观特性及其输入输出】;(3)识别对象的控制操作【消息与事件--单击、双击、获得焦点、文本变化等】;(4)识别对象控制操作所应执行的程序【事件驱动程序】;(5)识别对象及程序的控制逻辑先了解,后续还会讲解计算机/CPU能识别与执行的机器(语言)程序汇编程序编译程序编译程序编程效率高执行效率高汇编语言源程序自动转换高级语言源程序自动转换语言积木块自动转换更大的语言积木块自动转换编译程序计算机语言的发展计算机语言发展的基本思维测练题:从机器语言,到高级语言,再到对象化编程语言,下列说法正确的是_____。编程效率越来越高,程序执行效率可能越来越低编程效率可能越来越低,程序执行效率可能越来越低编程效率可能越来越低,程序执行效率越来越高编程效率越来越高,程序执行效率越来越高ABCD提交单选题1分(可执行)计算机语言源程序新语言源程序编译器新语言:书写规范及其语法结构编辑器类自然语言图形化的模型积木块式编程语言智能化语言及模型(面向各专业的)专业化语言计算机语言的发展不仅要用语言,还要发明新语言1966A.J.Perlis:编程技术和编译架构1972E.W.Dijkstra:ALGOL语言1974DonaldE.Knuth:程序语言1977JohnBackus:高级语言,Fortran1979KennethE.Iverson:编程语言,APL1980C.AntonyR.Hoare:编程语言1981EdgarF.Codd:关系数据库语言1984NiklausWirth:开发了EULER、ALGOL-W、MODULA和PASCAL一系列崭新的计算语言。1987JohnCocke:编译器2001Ole-JohanDahl、KristenNygaard:面向对象编程,SIMULAI和SIMULA67中。2003AlanKay:面向对象语言,Smalltalk2005PeterNaur:Algol60程序语言。2006FranAllen:编译器因计算机语言获得图灵奖的计算机语言的发展计算机技术是伴随着计算机语言的不断发展而发展起来的计算机语言的发展多种多样的高级语言FORTRANALGOLBCPASCALBASICVisualBASICDelphiC++SimulaPythonJavaJavaScriptC#PerlSmalltalk计算机语言的发展多种多样的高级语言测练题:关于计算机语言,下列说法不正确的是_____。面向对象语言或可视化构造语言是以对象(类)为单位来编写程序,一个对象相当于若干条语句((或者说一个对象可用若干条语句来实现);我们可以设计一种新语言,让用户以其更熟悉的对象(类)来编写源程序,然后提供一个编译器将该源程序转换成某种已广泛使用的高级语言源程序,就可以让机器执行该程序。高级语言是以语句为单位来编写程序,一条语句相当于若干条指令(或者说一条语句可用若干条指令来实现);汇编语言和机器语言是以指令为单位来编写程序;ABCD提交E上述说法有不正确的。单选题1分第6讲由机器语言到高级语言一、计算机语言的发展二、高级语言程序的基本要素三、不同的计算机语言之异同点四、用高级语言构造程序五、程序设计过程与程序设计环境六、计算机语言与编译的基本思维-抽象与自动化常量、变量与表达式算术表达式示例。算术表达式的结果是一数值;A1+(B2–x1+76)*3(B2+yy4)/L3–xx3比较表达式示例。比较表达式的计算结果是逻辑“真”或“假”;Grade<90Grade>=70N4<A1+B2+20
//注:A1+B2+20为算术表达式,计算完后再与N4的值进行比较
逻辑表达式示例。逻辑表达式的计算结果是逻辑“真”或“假”;(x1>=A1)&&(B2<>y2)将表达式的计算结果赋值给一变量:赋值语句M=X>Y+50;M=(X>Y)AND(X<Y);K=K+(5*K);高级语言程序的基本要素基本要素:(1)常量、变量与(2)表达式测练题:已知X=21,Y=15,Z=22,计算表达式((X>Y)or(Y>Z))and((X<Y)or(Y<Z))的值,结果为_____。假真AB提交单选题1分测练题:已知X=21,Y=15,Z=22,计算表达式((X>Y)AND(Y>Z))OR((X<Z)AND(Y<Z))的值,结果为_____。假真AB提交单选题1分Y=50;Z=80;X=30;X=Z+Y; IfY>Z
{X=X-Y;}Else{X=X-Z;}X=X+Y; IfX>Z{X=Y;}X=X-Z;IfX>Y{X=X-Y;}XYZ3050801305010050-30分支语句If(条件表达式)
{条件表达式为真时执行的语句序列}Else
{条件表达式为假时执行的语句序列}高级语言程序的基本要素基本要素:(3)赋值语句、分支语句与循环语句Do
{循环体的程序语句序列}While(条件表达式);X=1;Y=2;Sum=0;Do{ Sum=X+Y;X=X+1;
Y=Y+1;}While(Sum<=10)//其他语句 XYSum1202333454575696711循环语句(条件循环语句)
高级语言程序的基本要素基本要素:(3)赋值语句、分支语句与循环语句While(条件表达式)
Do
{循环体的程序语句序列}X=1;Y=2;Sum=0;While(Sum<0)
Do{ Sum=X+Y;X=X+1;
Y=Y+1;}<其他语句> XYSum120循环语句(条件循环语句)
高级语言程序的基本要素基本要素:(3)赋值语句、分支语句与循环语句函数的定义形式参数函数体,实现函数功能的程序语句序列,以形式参数作为需要处理的对象。当被调用时,用实际参数替换相应的形式参数进行程序执行。函数的使用实际参数函数是一种抽象,用一个名字代表一个程序段落高级语言程序的基本要素基本要素:(4)函数
测练题:关于普通计算机语言(或者说程序)的基本构成要素,下列说法最完整的是_____。常量与变量、表达式、语句和函数;都不完整。常量与变量、表达式和语句;常量与变量和表达式;ABCD提交单选题1分测练题:读右面的程序,并回答问题:程序行(60)执行了多少次?次数为_____。6754ABCD提交(10) N=6;
(20) X=0;(30) Y=1;(40) ForI=1ToN-1Step1(50) Z=X+Y;(60) X=Y;(70) Y=Z;(80) NextI单选题1分第6讲由机器语言到高级语言一、计算机语言的发展二、高级语言程序的基本要素三、不同的计算机语言之异同点四、用高级语言构造程序五、程序设计过程与程序设计环境六、计算机语言与编译的基本思维-抽象与自动化常量变量赋值语句算术表达式比较表达式逻辑表达式表达式分支结构循环结构顺序结构函数不同的计算机语言之异同点典型语言比较【C语言与Python语言】不同的计算机语言之异同点几种语言比较不同的计算机语言之异同点几种语言比较第6讲由机器语言到高级语言一、计算机语言的发展二、高级语言程序的基本要素三、不同的计算机语言之异同点四、用高级语言构造程序五、程序设计过程与程序设计环境六、计算机语言与编译的基本思维-抽象与自动化程序构造示例【示例】有1000瓶啤酒,每喝完一瓶得到一个空瓶子,每3个空瓶子又能换1瓶啤酒,喝掉以后又得到一个空瓶子。问总共能喝多少瓶啤酒?还剩多少空瓶子?用高级语言构造程序程序构造示例intHowMuchBeer(){int
BeerBottle=1000;int
EmptyBottle=0;fori=0toBeerBottle{EmptyBottle=EmptyBottle+1;if(EmptyBottle==3)then{BeerBottle=BeerBottle+1;
EmptyBottle=0;}}if(EmptyBottle==2) //在最后剩2个空瓶时,加1瓶即可{BeerBottle=BeerBottle+1;
EmptyBottle=0;}Printf(“EmptyBottle=%d”,EmptyBottle);Printf(“BeerBottle=%d”,BeerBottle);}【示例】有1000瓶啤酒,每喝完一瓶得到一个空瓶子,每3个空瓶子又能换1瓶啤酒,喝掉以后又得到一个空瓶子。问总共能喝多少瓶啤酒?还剩多少空瓶子?用高级语言构造程序测练题:读右面的程序,该程序实现的功能为_____。product=1*3*5*...*(N-1);product=1+3+5+...+(N-1);product=1+2+3+...+(N-1);product=1*2*3*...*(N-1);ABCD提交(10) main()(20) {intcounter;(30) ...//输入N值的语句,略(40) longproduct=1;
(50) forcounter=1toNstep2(60) {product=product*counter;}(70) returnproduct;(80) }E上述都不正确。单选题1分测练题:当程序行(60)执行了3次以后,Product和Counter的值分别为_____。15,5;105,7;
15,7;105,5;ABCD提交(10) main()(20) {intcounter;(30) ...//输入N值的语句,略(40) longproduct=1;
(50) forcounter=1toNstep2(60) {product=product*counter;}(70) returnproduct;(80) }E上述都不正确。单选题1分测练题:已知如下多元素变量,右下程序执行完成后,Sum1和Sum2的值分别为_____。149,105;105,149;136,175;576,576;ABCD提交E上述都不正确。(10) intI=2,J;(20) intSum1=0,Sum2=0;(30) ForJ=0to3Step1(40) { Sum1=Sum1+M[I][J];
(50) Sum2=Sum2+M[J][I];}单选题1分测练题:已知如下多元素变量,右下程序执行完成后,Sum1和Sum2的值分别为_____。66,66;66,95;95,66;95,95;ABCD提交E上述都不正确。(10) intJ;(20) intSum1=0,Sum2=0;(30) ForJ=0to3Step1(40) { Sum1=Sum1+M[J][J];
(50) Sum2=Sum2+M[3-J][J];}单选题1分第6讲由机器语言到高级语言一、计算机语言的发展二、高级语言程序的基本要素三、不同的计算机语言之异同点四、用高级语言构造程序五、程序设计过程与程序设计环境六、计算机语言与编译的基本思维-抽象与自动化一套书写程序的语法规则计算机语言程序设计环境:编辑、编译、连接、调试、运行一体化平台高级语言程序目标程序可执行程序编辑程序编译程序连接程序公用函数库调试程序程序设计过程:编辑源程序
编译
链接
执行。程序设计过程与程序设计环境程序设计过程•数学运算函数,如三角函数、指数与对数函数、开方函数等;例如sin(α),Log(x)等;•数据转换函数,如字母大小写变换、数值型数字和字符型数字相互转换等;•字符串操作函数,如取子串、计算字符串长度等;例如,Len("abcd");•输入输出函数,如输入输出数值、字符、字符串等;例如,Printf(…),Scanf(…)等;•文件操作函数,如文件的打开、读取、写入、关闭等;•其它函数,如取系统日期、绘制图形等。系统提供的可以使用的公用函数类别程序设计过程与程序设计环境熟悉和运用公用函数第6讲由机器语言到高级语言一、计算机语言的发展二、高级语言程序的基本要素三、不同的计算机语言之异同点四、用高级语言构造程序五、程序设计过程与程序设计环境六、计算机语言与编译的基本思维-抽象与自动化编译程序源程序语句机器程序二进制和编码Result=7+10Return10000110000001111000101100001010100101110000011111110100MOVA,7ADDA,10MOV(6),AHLT编译器怎样编译?计算机语言与编译的基本思维-抽象与自动化为什么高级语言程序需要编译由“具体的”运算式到“模式”运算式Result=7+10;V=C+C;Sum=8+15;K=100+105;……注:Result:具体的变量7,10:具体的常量=赋值符号+加法运算符号;语句结束符注:V:变量/标识符C:常量=赋值符号+加法运算符号;语句结束符不变的部分(保留字)变化的部分(常量与标识符)计算机语言与编译的基本思维-抽象与自动化高级语言中的模式化的语句“模式”运算式的识别及常量、变量的标识V=C+C;S1S2S3S4V,V,R空格,null,R=,=,RC,C,RS5S6+,+,R空格,null,R空格,null,R空格,null,R空格,null,RS7;,null,NC,C,R空格,null,R;,null,N能识别两种模式“V=C;”和“V=C+C;”并能去除空格的图灵机示意图注:字母表{V,C,=,+,空格,;};S1起始状态;S7终止状态;null表示什么也不写回。Result=7+10;(V,1)=(C,1)+(C,2);计算机语言与编译的基本思维-抽象与自动化语句模式的识别复杂模式转换为简单模式及其组合V=C+C;V=+CCV,1=+C,1C,2计算机语言与编译的基本思维-抽象与自动化复杂模式的预先构造V,1=+C,1C,2将简单模式转换成汇编语言语句序列,用常量值和变量地址进行替换,组合次序调整,得到最后的汇编语言程序MOVA,<C,1>ADDA,<C,2>MOV(<V,1>),AMOVA,7ADDA,10MOV(6),AMOVA,<C,1>ADDA,<C,2>MOV(<V,1>),A计算机语言与编译的基本思维-抽象与自动化简单模式与汇编语句的映射计算机语言与编译的基本思维-抽象与自动化小结语句词汇的识别(词法分析)语句模式的识别(语法分析)复杂语句模式的构造基本语句模式与汇编语句的映射汇编语句的组装与次序调整常量与变量的替换形式语言与自动机编译系统/编译原理计算机语言与编译的基本思维-抽象与自动化小结第6讲【拓展】利用典型计算机语言进行程序设计哈尔滨工业大学计算学部教学委员会主任国家教学名师战德dechen@一、典型编程环境简介-Python/Pycharm二、编制简单计算器程序三、编写猜数游戏程序四、编制分形树绘制程序五、编制可视化汉诺塔移动程序第6讲【拓展】利用典型计算机语言进行程序设计Python语言是一种面向对象的计算机语言Python语言拥有丰富的面向各专业应用开发的“库”资源【资源库/Repository】中包含了不同的【包/Package】,而一个包又包含了若干个【类/Class】与【对象/Object】,一个类,或者说,一个对象拥有若干个【函数/Function】。资源库需要安装到编程环境中才能被使用需要在程序中用相应的类创建对象,然后才能使用该对象的函数学习Python语言不仅仅是学习基本语法,更重要的是学习各种库资源的获取、安装和应用方法注意:Python已经出现了几十个版本,不同版本的书写规则有差异。如果按照本课程介绍的语言,出现语法错误,则对照相应版本的语法规则改写之便可。例如Python2.7.x与Python3.x书写规则是不同的。本课程以Python2.7.x版本为准。计算机语言并不一定追求最新版本,而要看其所拥有的资源库的多少。典型编程环境简介-Python/PycharmPython语言资源库包类对象函数()PyCharm是集成开发环境,Python是编程语言典型编程环境简介-Python/Pycharm集成开发环境Pycharm
与编程语言Python编辑器源程序编译器目标程序链接器可执行程序调试器资源库/函数库工程管理器控制流数据流基本编程环境:PyCharm+Python2.7.15Python2.7.15:下载地址:/
PyCharm:下载地址:/pycharm/,其中Community(社区版)是免费、开源的版本检查编程环境是否安装成功:①启动PyCharm。②选择【CreateNewProject】,输入工程文件的存储位置和名称(如“D:\firstProject”)③选择【FileNew…Pythonfile】,输入Python源程序文件名称(如“firstPythonProgram”,将出现源程序编辑窗口,在其中输入:
#-*-coding:utf-8-*- print"你好,编程环境建立成功!"在“Project窗口”中选中“firstPythonProgram.py”单击右键,选择【Run‘firstPythonProgram’】,观察“运行/Run窗口”中是否出现“你好,编程环境建立成功”一句话。如出现,表明PyCharm安装成功典型编程环境简介-Python/Pycharm熟悉编程环境典型编程环境简介-Python/Pycharm熟悉编程环境:熟悉各窗口的功能和作用菜单工具栏Project窗口或称工程窗口:管理工程中的所有相关文件源程序编辑窗口:编辑Python源程序Run窗口或称运行窗口:展示程序运行的结果或者提示程序在运行期间出现的错误①Python以“#”引起一单行注释语句,以一组’’’(三单引号)括起一个段落,该段落便成为注释段落。②如编辑含有中文的注释,则需在程序第一行增加语句,表明采用UTF-8编码存储源程序,系统默认是按ASCII编码存储源文件。#-*-coding:utf-8-*-③如程序中需处理中文,则在源程序开始处增加下列语句:importsys;reload(sys);sys.setdefaultencoding('utf-8');④Python程序采用“同长度缩进”区分语句段落。相当于C语言用以区分语句段落的“{}”典型编程环境简介-Python/Pycharm熟悉Python语言的程序要素书写规则注意:缩进很重要,相当于{}⑤Python语言是大小写相关的,即如“Exam”“exam”“eXam”等表示的是不同的标识符。⑥Python程序通常会使用其它程序模块(包、类/对象和函数),此时需要用到Import语句。该语句有两种用法。一种用法如下:importPackageNameasanotherName;importPackageName这是将模块作为对象导入本程序中。使用该模块中的类/对象、函数时,需加前缀“PackageName.”或者“anotherName.”,其中anotherName是本程序定义的该模块的别名。另一种用法如下:fromPackageNameimport*这是将该模块的所有内容导入本程序中,可直接使用该模块中的类/对象、函数,而无需加前缀“PackageName.”
典型编程环境简介-Python/Pycharm熟悉Python语言的程序要素书写规则注意:如何引入资源库到程序中⑦当使用了某模块的类/对象和函数时,如出现类似于“模块或对象或函数没有定义”的错误时,可能表明该模块没有被正确地导入到本工程文件中。此时可通过菜单【FileDefaultSettings】,选择【ProjectInterpreter】进行安装。⑧Python可以使用也可以不使用“;”结束一条语句。可在一行以“;”区分书写多行语句。⑨Python程序中的变量可以直接赋值并使用,而无需事先定义其类型。当自上而下运行到某一行,需要某一变量的值,则该变量必须在该行之前已经定义并赋值。⑩当不了解某模块的功能或使用方法时,可通过互联网搜索引擎搜索相关的使用方法,或者查询官网上发布的相关信息。典型编程环境简介-Python/Pycharm熟悉Python语言的程序要素书写规则一、典型编程环境简介-Python/Pycharm二、编制简单计算器程序三、编写猜数游戏程序四、编制分形树绘制程序五、编制可视化汉诺塔移动程序第6讲【拓展】利用典型计算机语言进行程序设计【示例1】利用Python语言编写一个简单计算器,要求:输入两个数据,程序能够完成两个数的加、减、乘和除运算,并显示运算结果。如何做界面,输入数据和显示结果如何读取界面中输入框的数据,或者将程序中的数据在界面中显示如何将Python程序与界面要素相关联,例如:单击界面上的按钮,能够执行相应计算的函数Python提供了多个开发图形界面的模块/库,如Tkinter、wxPython、Jython等。本例使用Tkinter模块做图形界面。Tkinter是Python的标准图形用户界面模块,内置于Python安装包中的模块。编制简单计算器程序问题及分析【窗口】对象【按钮】对象【标签】对象【文本框】对象传递消息给控件,控件依据消息启动相应的函数【Application】对象主程序……AFunc()/不同的函数……【Window】对象Message-Event/消息-事件……WFunc()/处理不同消息-事件的函数……消息循环:程序在循环等待消息。接收到消息后依据消息调用相应函数执行Message-Event/消息-事件(不同)……CFunc()/处理不同消息/事件的函数(很多)……【Control】对象编制简单计算器程序理解图形用户界面--GUI操作系统【Message/Event】来源传递消息给窗口GUI模块:提供了各种“类/Class”,用这些类可产生各种“对象/Object”。各种对象便可使用已经编制好的各种函数完成相应的功能。窗口在应用程序中按钮、文本框、标签都是控件对象,依附于窗口注意消息传递过程及函数的被调用执行的逻辑这些对象是要用类先创建再使用的Tkinter模块支持GUI程序编制Tkinter模块包含了很多的类,不同的类将产生不同的对象。如Tk类可以产生【主窗口】对象,Button类可以产生【按钮】对象,Label类产生【标签】对象、Entry类产生【单行输入框】对象,StringVar类产生【接收用户输入】对象。只有在创建了对象后,才能使用“对象名.函数名()”来读写对象的属性,或执行对象的函数用“主窗口对象.mainloop()”创建消息循环来监控窗口中相应的对象。编制简单计算器程序理解图形用户界面--GUI对象名=…#用类创建一个对象#先创建对象对象.函数()#再为对象赋值各种属性主窗口对象按钮对象标签对象输入框对象编制简单计算器程序第1步:熟悉图形用户界面的制作输入框中可输入,按钮可按下但无反应,为什么?编制简单计算器程序第2步:完成图形用户界面的制作输入的是数字型字符,转换成数值输入框对象及获取输入框中的输入输入框对象及向输入框中写回结果将数值转换为数字型字符编制简单计算器程序第3步:编制执行加、减、乘、除的程序第3步中定义的函数,执行某功能的程序窗口中的按钮对象,“减”按钮输入框中可输入,按钮可按下能完成相应功能编制简单计算器程序第4步:将执行加、减、乘、除的程序与相应的按钮绑定一、典型编程环境简介-Python/Pycharm二、编制简单计算器程序三、编写猜数游戏程序四、编制分形树绘制程序五、编制可视化汉诺塔移动程序第6讲【拓展】利用典型计算机语言进行程序设计【示例2】编制猜数游戏的程序:有n个游戏者,依次玩猜数游戏“系统随机产生一个整数,同学输入猜测数,直到猜中为止,记录猜测次数”。所有游戏者均完成后,按照猜测次数由低到高的次序排序游戏者。由【程序固定一个整数】让用户猜(简单GUI界面,有输出)
【程序随机产生一个整数】让用户猜并记录显示猜测次数(GUI界面,有输入也有输出)
多人猜数(GUI界面,大循环处理,及复杂输出)编写猜数游戏程序问题及分析〖程序1〗由程序预置一个整数,然后让游戏者输入其猜测的数,程序进行比较,并分别给出提示,如“大了,继续努力”“小了,继续努力”“恭喜你,猜对了”。创建GUI主窗口猜数与结果判断函数答案由程序设定为一常数获取用户的输入并转换为数值编写猜数游戏程序固定值猜数游戏GUI界面输入与输出程序当按“确定”按钮时,执行猜数与结果判断函数创建的主窗口要运行消息循环,以接收消息和事件编写猜数游戏程序固定值猜数游戏〖程序2〗在程序1的基础上,丰富功能“由系统随机产生一个整数”“在界面上增加试猜次数的显示,即一位游戏者经过了多少次才猜中一个数”答案由系统随机产生充分利用系统提供的模块和函数编写猜数游戏程序随机值猜数游戏增加试猜次数的统计增加试猜次数的显示—标签对象Label4和输入对象outputLabel_1注意全局变量和局部变量的差别编写猜数游戏程序随机值猜数游戏〖程序3〗编写n个游戏者玩猜数游戏的程序,即完成示例2的所有功能数据如何保存:二维数组timesEvery[][]保存编号1至10游戏者及其试猜次数,即timesEvery[i][0],i从0至9,保留第一位至第十位游戏者的编号(默认编号为1至10),timesEvery[i][1],保留第一位至第十位游戏者的试猜次数(初始值设为最大次数1000)。与timesEvery初始值一样的二维数组X,该变量在后面排序时用到输入输出数据如何由界面获得:1个标签对象Label0,显示“请输入人数”,1个输入框对象numberInput和numberPerson,用numberPerson.get()读取用户输入的游戏人数,设置其默认值为1。2个标签对象Label3和finalOutput,前者显示“游戏结果”信息,后者初始时显示“等待游戏开始”,以后则显示已经完成的每一位游戏者的编号及试猜次数,中间用冒号分隔,游戏结束时显示按试猜次数递增排序的游戏者的编号。2个按钮对象startButton和exitButton,一个显示“游戏开始”,一个显示“退出”,当游戏者按前一按钮时,则开始新一轮的多人游戏,当按后一按钮时,则退出游戏程序。编写猜数游戏程序多人猜数游戏多人猜数的初始化函数:理解各个变量的含义编写猜数游戏程序多人猜数游戏完善GUI界面编写猜数游戏程序多人猜数游戏编写单人猜数的函数(以便多人猜数时调用)编写猜数游戏程序多人猜数游戏编写多人猜数的函数(一个人猜完后,再初始化,然后另一个人猜)编写猜数游戏程序多人猜数游戏一、典型编程环境简介-Python/Pycharm二、编制简单计算器程序三、编写猜数游戏程序四、编制分形树绘制程序五、编制可视化汉诺塔移动程序第6讲【拓展】利用典型计算机语言进行程序设计【示例3】编制能够绘制如下图所示分形树的程序绘制Y型图形递归的绘制Y型图形改变Y的分支长度、角度和递归次数,形成不同的分形树图形
编制分形树绘制程序问题及分析用Canvas类创建一个画布对象,然后用画线的函数绘制线段。关键在计算并设置线段的顶点编制分形树绘制程序用线段,绘制Y形图形编制分形树绘制程序理解画布坐标及各参量的含义编制分形树绘制程序递归绘制Y的两个分支:改变角度、长度编制分形树绘制程序初始化并调用递归函数来绘制分形树改变一下参数,如finishLevel设为12、15等,改变LeftInter_angle为30度、40度、20度、10度等重新运行程序,便可看到不同的分形树将坐标点计算公式math.cos()和math.sin()分别更换为abs(math.cos()),abs(math.sin()),即余弦值和正弦值都取绝对值,则便可产生示例图的最后一个图形编制分形树绘制程序运行程序来体验不同形态的分形树一、典型编程环境简介-Python/Pycharm二、编制简单计算器程序三、编写猜数游戏程序四、编制分形树绘制程序五、编制可视化汉诺塔移动程序第6讲【拓展】利用典型计算机语言进行程序设计【示例4】汉诺塔是印度的一个古老传说。据说开天辟地之神勃拉玛在一个庙里留下了三根金刚石柱,并在第一根上从上到下依次串着由小到大不同的64片中空的圆型金盘,神要庙里的僧人把这64片金盘也按由小到大的顺序搬到第三根上,每次只能搬一个,可利用中间的一根石柱作为中转,并且要求在搬运的过程中,不论在哪个石柱上,大的金盘都不能放在小的金盘上面。神说,当所有的金盘都从事先穿好的那根石柱上移到另外一根石柱上时,世界就将在一声霹雳中消灭了。编制可视化汉诺塔移动程序问题及分析编制可视化汉诺塔移动程序汉诺塔的递归求解思维编制可视化汉诺塔移动程序汉诺塔的递归求解程序-Python版〖图形用户界面的关键是消息循环〗。GUI程序的运行是依靠传递和接收
创建画布(Canvas)对象,在该对象上绘制窄矩形编制可视化汉诺塔移动程序第一步:绘制水平基线与三个柱子柱子及不同大小的盘子,首先用变量和数组来表示编制可视化汉诺塔移动程序第二步:绘制三个柱子上的盘子然后依据变量和数组的值来绘制不同长度的窄矩形表示不同大小的盘子编制可视化汉诺塔移动程序第二步:绘制三个柱子上的盘子每次清空画布,然后绘制三个柱子及其盘子编制可视化汉诺塔移动程序第二步:绘制三个柱子上的盘子初始化三个柱子上的盘子编制可视化汉诺塔移动程序第二步:绘制三个柱子上的盘子清空画布,即重新绘制编制可视化汉诺塔移动程序第二步:绘制三
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年辽宁省北票市高一化学上册期末考试自测卷及完整答案(网校专用)
- 2026年河南省林州市高三生物下册期末考试模拟考试卷及参考答案
- 2026年山东省乐陵市高一化学上册期末考试模拟检测卷含完整答案【各地真题】
- 2026年云南省大理市高一历史上册期末考试考试卷【含答案】
- 2026年吉林省和龙市高三生物上册期末考试考试卷及答案
- 2026年甘肃省玉门市高一化学上册期末考试测试卷含完整答案【夺冠】
- 2026年高三生物上册期末考试模拟测试卷带答案
- 2026年福建省南安市高一历史下册期末考试试卷含答案(典型题)
- 2026年黑龙江省铁力市高一化学上册期末考试模拟卷及答案(历年真题)
- 2026年四川省华蓥市高一化学上册期末考试模拟检测卷附参考答案(培优)
- 2026年继续教育公需课考试试题及答案
- 2026年产前筛查和产前诊断试题
- 2026年高邮市消防系统事业单位公开招聘工作人员3人笔试备考题库及答案解析
- 2025年河南省检察官逐级遴选笔试题目及答案
- 2026年浙江省嘉兴市国家职业技能鉴定考评员试卷含参考答案
- 《勤洗生活衣物》教学设计-2026-2027学年滇教版初中劳动技术七年级上册
- 注册消防工程师继续教育2025年部分题目与答案(126题)
- 飞飞自动打怪脚本
- TGDNAS 034-2023 成人鼻肠管堵管的预防及处置
- 医疗器械销售技巧提高客户满意度的秘诀
- 基于PLC的运料小车控制系统设计
评论
0/150
提交评论