基于Python的程序设计思想与方法.ppt
《基于Python的程序设计思想与方法.ppt》由会员分享,可在线阅读,更多相关《基于Python的程序设计思想与方法.ppt(483页珍藏版)》请在三一办公上搜索。
1、程序设计思想与方法,翁惠玉Email:,教材参考教材,教材很遗憾,暂无合适的中文版教材目前使用:Python Programming:An Introduction to Computer Science.(电子版)How to Think Like a Computer ScientistLearning with Python.(电子版),什么是计算机科学?,计算机科学并非研究计算机!正如天文学不是研究天文望远镜CS要回答的基本问题:什么是可计算的?对此问题的回答有三种方式:实际设计一个解决问题的算法理论分析问题的可解性:无解的,不是能行可解的通过实验来研究问题.,3,课程主要内容,解决可
2、计算问题需要教会计算机如何解决问题如何教计算机解决问题了解计算机有哪些基本功能因材施教,设计教学的过程一门与计算机进行交流的语言,对本课程的定位,学习计算机科学解决问题的思想方法,应用于其他专业领域不是程序设计语言课程!本课程需要编程,以加深对计算思维的理解坏消息:学习编程语言需要掌握非常繁琐的细节好消息:Python语言非常简单,易学易用也不是算法和数据结构课程!当然会学习这方面的一些基本技术,5,计算机与程序,计算机组成程序设计语言初识Python,计算机的组成,硬件:计算机的躯壳软件:计算机的灵魂,计算机,也被称之为“电脑”,是一种能够按照事先存储的程序自动、高效地对数据进行输入、处理、
3、存储和输出的系统,计算机硬件,存储器,保存正在运行的程序代码和数据内存的最小单元是bit,一个bit存储一个二进制位。一般8个bit组成一个byte,若干个byte组成一个word在一般的机器中,内存按字节编址,内存大小也是按字节计量关机后,内存的数据全部丢失,CPU,CPU(Central Processing Unit)有两个部件组成:ALU Arithmetic-Logic Unit(运算器)Control unit(控制器),控制器,控制器控制计算机的其余部分如何完成程序的指令指挥内存和其它部件之间的信息的传送(包括信息和指令)指挥CPU和输入输出设备之间的控制信息的传送,控制器中的信
4、息存储,控制器中有两个寄存器:指令寄存器(IR):保存当前正在执行的指令程序计数器(PC):保存下一条要执行的指令地址,控制器的工作,取下一条指令:按PC指定的地址到内存中取出下一条指令,存入IR。解码指令:将指令解码成一系列的控制信号执行指令:将控制信号发送给相关部件,执行相应的运算,运算器的组成,逻辑电路:执行控制器发出的控制信号一组存放正在运算的数据的寄存器,输入输出设备,输入设备将人能理解的符号转换成计算机能处理的符号。常用的输入设备有:键盘、鼠标、光笔等输出设备将计算机的输出转换成人能理解的输出。常用的输出设备有:显示器、打印机、音响设备等,计算机的组成,硬件:计算机的躯壳软件:计算
5、机的灵魂,计算机,也被称之为“电脑”,是一种能够按照事先存储的程序自动、高效地对数据进行输入、处理、存储和输出的系统,计算机软件,软件决定了计算机能做什么.没有软件,计算机只是一堆废铁.软件可以分为系统软件和应用软件。系统软件居于计算机系统中最靠硬件的部分,它将计算机的用户与硬件隔离。系统软件与具体的应用无关,但其他的软件要通过系统软件才能发挥作用。常用的系统软件有操作系统、编译器、网络软件等。应用软件是为了支持某一应用而开发的软件。如字处理软件、财务软件等。,计算机与程序,计算机组成程序设计语言初识Python,程序设计语言,人与计算机进行交流的一种语言为什么不用自然语言与计算机交互?精确的
6、语法和语义无二义性有不同层次的程序设计语言,Lu Chaojun,SJTU,19,不同层次的程序设计语言,机器语言汇编语言高级语言,机器语言,是机器的母语。每种计算机都有自己的机器语言。与计算机硬件设计有关。每个语句用一组二进制数表示用机器语言写程序是非常困难的,读机器语言写的程序也是非常困难的机器语言提供的功能非常简单,汇编语言,用缩写和助记符代替机器语言的0和1的比特串和机器语言一样,不同类的机器有不同的汇编语言汇编程序:将汇编语言写的程序翻译成机器语言的程序解决了机器语言的可读性问题,但没有解决功能简单的问题以及可移植型问题,高级语言,类似于英语的语言,适合于人理解功能比机器语言强,解决
7、问题更加容易编译器:将过程化语言写的程序(源代码)翻译成机器语言的程序(目标代码)解释器:逐句解释源程序并执行,不保存目标代码。,编译执行,将程序全部翻译成机器语言的程序,然后再执行。,解释执行,高级语言的特点,具备了一定的机器独立性,使用户可以专注于解决问题的方法。但某些方面还是受到机器的限制为了解决移植性问题,ANSI制订了一系列的标准,高级语言,本课程采用Python语言高级程序设计语言有很多种,据说2008年网上被引用最多的10个语言是(按字母顺序):C,C+,C#,Java,JavaScript,Perl,PHP,Python,Ruby,SQL,27,计算机与程序,计算机组成程序设计
8、语言初识Python,Python,Python采用编译/解释混合方式:先编译成字节码,再解释执行Python 软件:ftp:/用户码/密码:hyweng/public启动Python,29,初识Python,:提示符,提示你可以输入命令语句:一条命令,如print“hello”串:“hello world”数:3、10表达式:3+5赋值:x=5,30,函数,函数:将完成某一功能的语句组合起来函数定义函数调用:,def area():x=5 y=6 print x*y,area()30,带参数的函数,函数定义 函数的调用,def area(x,y):print x*y,area(3,4)12a
9、rea(2,4)8,模块,如果一段程序需要反复执行,可以把它以文件形式保存在外存储器中。保存在外存储器中的程序称为一个模块,也称为脚本文件或源文件。PYTHON的源文件的后缀名为py程序模拟物理现象:chaos程序,#File:chaos.py#A simple program illustrating chaotic behavior.def main():print This program illustrates a chaotic function x=input(Enter a number between 0 and 1:)for i in range(10):x=3.9*x*(1
10、-x)print x input(Enter 0 to quit)main(),main函数:标志程序的开始,也可以省略注释变量与赋值程序的执行:一个个语句顺序执行,但也可以重复执行某个语句,for循环,将一段语句重复执行多次语法for in:是一个值的序列,如1,3,5,7,9或range(10)(即0,1,9).可以是任何语句序列,用左缩进标识.,36,程序的控制流,程序的诸语句通常是顺序执行的,但循环语句改变了控制流,表示一种控制结构.控制流可以用流程图直观表达,37,保存文件,用任何一个文本编辑器,保存成纯文本格式在IDLE中的file菜单中选择new window,输入程序的内容。输
11、入结束后再在file菜单中选择save或save as保存到文件中,模块的执行,在IDLE中执行程序打开文件:在file菜单下选open或直接用右键点击文件,并选择用IDLE打开,或先打开IDLE,再在file菜单下选择open执行:在run菜单下选run module或直接按f5Cmd界面中执行程序import文件,添加python的路径,Import时,系统必须知道到哪里去找那个文件这是通过PYTHONPATH指定的安装PYTHON时,系统会指定缺省path。缺省的路径是:Python26Libsite-packages添加搜索路径右键单击我的电脑,然后单击属性。单击高级选项卡。单击环境变
12、量。单击新建添加一个新变量名和值。,END,写一个简单的程序,软件开发过程程序实例:温度转换程序的构件程序实例:利息计算,程序设计需要系统化的方法,程序设计是用精确的语言告诉计算机该做什么,要精确到最细节处.计算机只会做很简单的事情,只能刻板地执行程序.一方面要写大型程序,一方面要精确到细枝末节,这极具挑战性.细节上的微小差错可带来巨大灾难.例如1996年阿丽亚娜5火箭首次鉴定发射失败的原因是将一个浮点数转换为整数的代码有问题.,43,软件开发过程,需求分析:问题是什么?制定程序规格:程序要做什么?对简单程序描述输入输出即可.设计:程序怎么做?主要任务是设计出满足规格的算法一般用伪代码给出总体
13、结构,不纠缠细节.实现:用某种程序设计语言翻译设计.测试与排错:测试程序是否如预期,排除bug.维护:运行中还会不断有问题.,44,写一个简单的程序,软件开发过程程序实例:温度转换程序的构件程序实例:利息计算,温度转换,需求:预报摄氏度,想知道对应华氏度.规格:输入摄氏度,显示输出华氏度.两者对应关系是F=(9/5)C+32.设计算法:简单的IPO实现:翻译成Python程序测试:常用边界数据.如输入0,100,46,算法设计,将完成任务的步骤分解成计算机能完成的动作伪代码写的算法:输入摄氏度:celsius计算华氏度:fahrenheit=9/5 celsius+32显示输出:fahrenh
14、eit,47,Python程序,#convert.py#convert Celsius temps to Fahrenheitdef main():celsius=input(What is the Celsius temperature?)fahrenheit=9.0/5.0*celsius+32print The temperature is,fahrenheit,degrees Fahrenheit.”main(),写一个简单的程序,软件开发过程程序实例:温度转换程序的构件程序实例:利息计算,程序的构成,各种名字:main、celsius等输入:celsius=input(What is
15、 the Celsius temperature?)表达式:9.0/5.0*celsius+32赋值:fahrenheit=9.0/5.0*celsius+32输出:print The temperature is,fahrenheit,degrees Fahrenheit.”,标识符,标识符:值,变量,函数,模块等的名字.标识符命名规则字母下划线开头,后接字母数字下划线大小写敏感标识符不能是保留词良好编程风格选择有意义的名字:变量名一般是名词短语,函数名一般是动词短语风格统一.,51,表达式,表达式:与数学中类似。如3.9*x*(1x)参加运算的可以是常量、变量运算符:+、-、*、/、*(指
16、数运算)可以用括号改变优先级良好编程风格:用空格、括号增加可读性.,52,输出语句,输出语句print的语法:printprint print,print,print的语义:自左向右计算表达式的值并在一行上显示,值之间以空格隔开.最后输出换行,但以逗号结尾时不换行.,53,赋值语句,语法=语义:计算表达式的值,存入变量.一个变量可被多次赋值,但总是持有最后一次赋值的结果.,54,输入赋值语句,输入赋值语句=input()语义计算的值(通常是字符串),显示该值等待用户输入一个表达式(以回车键结束)计算用户输入的表达式,得到input()的值把input()的值存入.良好风格用提醒用户输入以空格结
17、束.(Why?),55,同时赋值语句,同时赋值:,.,=,.,语义:计算右边各表达式的值,分别存入左边的对应变量.应用同时赋值交换两个变量传统语言的做法:引入一临时变量Python可以:x,y=y,xinput()也可为多个变量同时赋值x,y=input(“input x,y”)执行到此语句时用户可输入:3,4,则x=3,y=4,56,写一个简单的程序,软件开发过程程序实例:温度转换程序的构件程序实例:利息计算,利息计算,需求:给定本金和利率,计算10年后的本利之和规格:明年的本金之和=今年的本金*(1+利率),算法过程,Python程序,#interest.py#coding=gbkdef
18、main():print 这是一个计算10年后本利之和的程序 balance=input(请输入本金:)rate=input(请输入利率:)for i in range(9):balance=balance*(1+rate)print balancemain(),上机作业,修改interest.py,使它能输出每一年的本利之和。例如年份 本利之和=1 1012 102.2 104.5,END,数值计算,数值数据的类型数学库的使用求阶乘整型数的限制处理大整型类型转换,数据类型,程序存储与操作的信息称为数据.数据类型不同的数据表示方式不同的操作,数值数据类型,整数类型int不带小数点可存储整数的精
19、确值浮点数类型float带小数点计算机只能存储浮点数的近似值type()函数返回值的类型,65,整型数的内部表示,整型数在内部用补码表示正数的补码是它的二进制表示,负数的补码是它的绝对值的二进制的每一位取反后再加1。如用8位表示一个整数,那么:62补=0 0111110-62补=1 1000010在补码表示中,最高位是符号。0为正数,1为负数Python中的整数用32位表示,则int范围为 231 2311,即-2147483648 2147483647,实型数的表示,定点表示:小数点的位置固定不变浮点表示:小数点位置不固定。一个浮点数分成尾数和阶码两部分。阶码表示小数点在该数中的位数,尾数表
20、示数的有效数值。如十进制数N=246.135,其浮点表示可为:N=246135*10-3=2461350*10-4=0.246135*103=0.0246135*104,浮点数的存储,当字长一定时,分配给阶码的位数越多,表示数的范围越大,但分配给尾数的位数将减少,从而降低数的精度。,数值运算符,69,运算数都是整数,结果为整数;至少有一个运算数是浮点数,结果为浮点数.,数值计算,数值数据的类型数学库的使用求阶乘整型数的限制处理大整型类型转换,数学库,其他的数学运算都包含在一个库中库是系统或其他用户已经写好的一些有用的程序。一般一个功能表示为一个函数数学库:支持各类数学计算的函数.数学库的引入:
21、import math数学库中函数的调用:例如求平方根math.sqrt(),求一元二次方程解,#equation1.pyimport mathdef main():a,b,c=input(Enter three coefficients:)discRoot=math.sqrt(b*b-4*a*c)r1=(-b+discRoot)/(2*a)r2=(-b-discRoot)/(2*a)print The solutions are:,r1,r2main(),72,引用数学函数库中的函数,数学库中的常用函数,pi:常数e:常数esqrt(x):平方根sin(x),cos(x),tan(x),as
22、in(x),acos(x),atan(x):三角函数log(x),log10(x):自然对数与常用对数exp(x):e的x次方ceil(x):x的最小整数floor(x):x的最大整数,数值计算,数值数据的类型数学库的使用累积整型数的限制处理大整型类型转换,一种常用算法模式:累积,最终结果是由逐个中间结果累积起来形成的.例如6!的计算:先算6*5,再*4,再*1而得.1+2+3+4+100:先计算1+2,再加3,这种累积程序需要一个存放累积结果的变量,累积过程是一个循环:初始化累积变量循环直至得到最终结果 计算累积变量的当前累积值,累积(续),初始化:给累积变量一个合适的初值,以便进入循环后能
23、正确计算.忘记初始化是一个常见编程错误!循环过程:将一个个值累积到累积变量中,阶乘计算程序,具体数(如6)的阶乘fact=1for f in 6,5,4,3,2,1:fact=fact*f一般情形n=input(Enter a number:)fact=1for f in range(n,1,-1):fact=fact*fprint The factorial of,n,is,fact,阶乘程序的几点注解,由于乘法结合律,累积的次序是不重要的.如按下面的循环来累积:for f in 2,3,4,5,6:for f in 2,4,6,1,3,5:for f in range(2,n+1)rang
24、e()函数range(n)range(start,n)range(start,n,step)fact也可初始化为n,求1到100的和,sum=0for i in range(1,101):sum=sum+iprint sum,数值计算,数值数据的类型数学库的使用求阶乘整型数的限制处理大整型类型转换,整数的限制,int型在内存占用的空间是有限的,因此能表示的数值范围也是有限的。Python中的整数用32位表示,只能表示-2147483648 2147483647浮点数同样也有这个问题,数值计算,数值数据的类型数学库的使用求阶乘整型数的限制处理大整型类型转换,大数的表示,long int:不定长,
25、可扩至任意长度(当然受限于存储器容量).如注意:5L和5有完全不同的表示有长整数参加的运算,结果为长整数.long int运算效率远低于int,因此能用int就不用long int.浮点数很大时用科学表示法:1.234e+12最大数:1e+308,求阶乘的更好的实现,n=input(Enter a number:)fact=1Lfor f in range(n,1,-1):fact=fact*fprint The factorial of,n,“is,fact,阶乘增长很快,结果很容易超出int的范围,现在的Python环境都能自动执行int到大整数的转换。当超出int范围时,自动转换为大整型
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 Python 程序设计 思想 方法
链接地址:https://www.31ppt.com/p-6559764.html