View
276
Download
0
Category
Preview:
DESCRIPTION
教材 陆朝俊 程序设计思想与方法讲义 参考资料 John M. Zelle Python Programming: An Introduction to Computer Science http://openbookproject.net/thinkCSpy/ Python 学习手册 _ 第 3 版. 成绩 组成 考试 作业 出勤. 课程主要内容 解决可计算问题需要教会计算机如何解决问题 如何教计算机解决问题 了解计算机有哪些基本功能 因材施教,设计教学的过程 一门与计算机进行交流的语言. 对本课程的 定位 - PowerPoint PPT Presentation
Citation preview
计算 计算思维 Python 程序排错1
程序
计算思维
方法 Python
第 1 章 计算与计算思维
程序设计基础
BP
计算机与信息学院 数字媒体艺术系夏天 xiatian@sspu.edu.cn
计算 计算思维 Python 程序排错2
什么是计算
什么是计算思
维
初识Python
程序排错
1
2 3
4
第 1 章 计算与计算思维
2
计算 计算思维 Python 程序排错3
• 教材–陆朝俊 –程序设计思想与方法讲义
• 参考资料–John M. Zelle–Python Programming: An Introduction to
Computer Science http://openbookproject.net/thinkCSpy/
–Python 学习手册 _ 第 3 版
计算 计算思维 Python 程序排错4
• 成绩组成–考试–作业–出勤
计算 计算思维 Python 程序排错5
• 课程主要内容–解决可计算问题需要教会计算机如何解决问题–如何教计算机解决问题
• 了解计算机有哪些基本功能• 因材施教,设计教学的过程• 一门与计算机进行交流的语言
计算 计算思维 Python 程序排错6
• 对本课程的定位–学习计算机科学解决问题的思想方法 , 应用
于其他专业领域–不是程序设计语言课程 !
• 本课程需要编程 , 以加深对计算思维的理解• 坏消息 : 学习编程语言需要掌握非常繁琐的细节• 好消息: Python 语言非常简单 , 易学易用
–也不是算法和数据结构课程 !• 当然会学习这方面的一些基本技术
6
计算 计算思维 Python 程序排错7
Lu Chaojun, SJTU 7
计算机科学
程序设计语言
算法设计与分析
数据结构
理 , 化 , 生 ...
经 , 管 , 金融 ...
工程
数学
艺术
计算思维
可计算性理论
计算 计算思维 Python 程序排错8
Transition Page
过渡页
8
什么是计算
什么是计算思
维
初识Python
程序排错
1
2 3
4
计算 计算思维 Python 程序排错9 计算1.1 什么是计算
• 1.1.1 计算机与计算
个人计算
云计算
超级计算
计算中心
移动计算
计算 计算思维 Python 程序排错10 计算1.1 什么是计算
• 1.1.1 计算机与计算• 2007 年 1 月《 Nature 》:《 Social Sciences: Life's A Game 》(社会科学:生活就是一场游戏)。
• 越来越多的人“生活”在 Cyber 世界中,人跟人之间的沟通越来越借助于机器
• 今天如果突然失去机器,世界将崩溃
计算 计算思维 Python 程序排错11 计算1.1 什么是计算
• 1.1.1 计算机与计算
主存储器
CPU
输入设备 输出设备
次级存储器
计算 计算思维 Python 程序排错12 计算
• 中央处理器 (CPU): 执行指令 .–每条指令只能完成简单的操作 !
• 例如 : 加法 , 比较 , 将数据从一个内存单元移到另一单元 , etc.
• 存储器 : 存储信息 ( 程序和数据 ).–主存 :CPU 能直接访问 , 速度快但易失 .–次级存储器 : 速度慢但持久 .
• 输入 / 输出设备 : 人机交互
Lu Chaojun, SJTU 12
计算 计算思维 Python 程序排错13 计算1.1 什么是计算
• CPU 、指令与程序–CPU–指令–指令集–程序–程序设计
计算 计算思维 Python 程序排错14 计算1.1 什么是计算
• 存储器–主存储器
• 保存正在运行的程序代码和数据• 关机后,内存的数据全部丢失
–次存储器• 比如硬盘
计算 计算思维 Python 程序排错15 计算
• 输入与输出设备–输入设备将人能理解的符号转换成计算机能
处理的符号。常用的输入设备有:键盘、鼠标、光笔等
–输出设备将计算机的输出转换成人能理解的输出。常用的输出设备有:显示器、打印机、音响设备等
计算 计算思维 Python 程序排错16 计算
Lu Chaojun, SJTU 16Lu Chaojun, SJTU 1616
• 计算机 : 软件–计算机是信息处理机器 , 信息处理过程由预定
的程序控制 .• 单条指令是做不了什么事情的 , 需要大量指令组成
一个逐步执行的指令序列-程序 .
–各种程序统称为计算机软件 .–没有软件的计算机毫无用处 .
计算 计算思维 Python 程序排错17 计算1.1 什么是计算
• 计算–计算 :利用计算机执行程序来解决问题 .
• 不是狭义的数学计算 !
–程序使得简单指令完成复杂任务 .•高斯算法
计算 计算思维 Python 程序排错18 计算1.1 什么是计算
• 计算–把大象放进冰箱里需要几步?
计算 计算思维 Python 程序排错19 计算1.1 什么是计算
• 计算机的通用性–计算机执行一个程序即可实现一个功能 ; 换着
执行不同的程序即可实现不同的处功能 .–请列举你熟悉的应用程序
计算 计算思维 Python 程序排错20 计算
• 计算机科学–并非研究计算机 !
• 计算机之于计算机科学家正如望远镜之于天文学家 . (E. W. Dijkstra)
–CS研究计算的基础 ,实现与应用 .• 例如 ,CS 的一个基本问题 : 什么是可计算的 ?
–本课程的学习目标 :像计算机科学家一样思考 .
计算 计算思维 Python 程序排错21 计算
• 程序设计–计算的关键是程序设计 ( 编程 ).
•给定一个问题 ,利用计算机支持的简单操作 , 设计出一个操作步骤的序列 , 计算机执行这个序列从而解决问题 .
–学习程序设计的好处 :• 做计算机的主人•提高问题求解能力• 本身是很有乐趣的智力活动
Lu Chaojun, SJTU 21
计算 计算思维 Python 程序排错22 计算
• 1.1.2 计算机语言–人与计算机进行交流的一种语言–为什么不用自然语言与计算机交互?
•精确的语法和语义•无二义性
–有不同层次的程序设计语言
计算 计算思维 Python 程序排错23 计算1.1 什么是计算
• 1.1.2 计算机语言–机器语言–汇编语言–高级语言
001000100000001110000010000100000010011000000010011000010000000100010000000000001111000000000000
>>>print 3*16+2Load R0,3Mul R0,16Load R1,2Add R0,R1Write R0Halt
计算 计算思维 Python 程序排错24 计算1.1 什么是计算
• 1.1.2 计算机语言–编译
• 将程序全部翻译成机器语言的程序,然后再执行。
main() {int i, s;i=1;s=0;
C compiler0110001011101001
Source program
Object program
计算 计算思维 Python 程序排错25 计算1.1 什么是计算
• 1.1.2 计算机语言–解释
源程序
解释系统(逐句解释、执行)
输入数据
输出结果
计算 计算思维 Python 程序排错26 计算
• 高级语言的特点–具备了一定的机器独立性,使用户可以专注
于解决问题的方法。但某些方面还是受到机器的限制
–为了解决移植性问题, ANSI 制订了一系列的标准
计算 计算思维 Python 程序排错27 计算1.1 什么是计算
• 1.1.3 算法–回想一下把大象放进冰箱的问题。
计算 计算思维 Python 程序排错28 计算
• 程序设计–先用非形式化的语言将问题求解步骤表达出
来——算法 ;•伪代码
–再用形式化的编程语言将上述算法实现——程序 .• 代码
计算 计算思维 Python 程序排错29 计算1.1 什么是计算
• 1.1.3 算法–欧几里德算法
• 输入:自然数 a,b• 输出: a,b 的最大公约数•步骤:
–第 1步:令 r为 a/b 的余数–第 2步:若 r=0,则算法结束, b即为答案;否则置 a<-
b,b<-r, 转到第 1步。
计算 计算思维 Python 程序排错30 计算
• 对算法的要求–算法的每个步骤必须是明确的 , 可行的 .
• 不明确 :" 在菜中放点盐 "• 不可行 :" 用青菜豆腐做出龙肝凤髓的美味 "• 每个步骤不必是最底层的琐细步骤 , 可以是组合的高级步骤 . 如 :"焯水 "
–算法的步骤必须在有限时间内完成 .–我们说的计算 ,即是指 " 算法计算 ": 用明确可
行的基本步骤组成的序列来解决问题 .
计算 计算思维 Python 程序排错31 计算
• 1.1.4 实现–算法 <> 程序
计算 计算思维 Python 程序排错32 计算思维
1.2 神奇的“合并形状”功能• 1.2 什么是计算思维
–计算思维:现代科技创新的基础之一
–计算思维最根本的内容,即其本质是抽象( Abstraction )与自动化( Automation )。
计算 计算思维 Python 程序排错33 计算思维
• 1.2 什么是计算思维–计算思维是计算机科学家利用计算机解决问
题时的思想和方法• 计算机科学是关于“计算”的科学• 计算思维建立在由人或机器执行的计算过程的能力
和限制之上–如何像计算机科学家一样思考 ?
计算 计算思维 Python 程序排错34 计算思维
• 真的有计算思维吗 ?–人们在解决不同问题时有不同的思考方式
• 数学思维 : 解数学问题•工程思维 :工程设计•形象思维 :文学创作• ......
–计算思维 :建立在计算机的能力与局限之上 .–由于计算机的广泛应用 , 计算思维未来会成为
人们的基本能力 .• 与阅读 ,书写 , 算术能力一样 !
Lu Chaojun, SJTU 34Lu Chaojun, SJTU 3434
计算 计算思维 Python 程序排错35 计算思维
• 1.2 什么是计算思维–计算思维的具体例子
• 问题表示• 算法设计• 编程技术• 可计算性与算法复杂性
计算 计算思维 Python 程序排错36 计算思维
• 计算思维例 : 问题的表示–问题的表示 (建模 )
•抽象 : 将现实中的各种数量关系 ,空间关系 , 处理过程抽象为计算机的数据结构和控制结构
– 例如 :温度数据抽象为数值还是文字 ?
• 不同抽象层次–问题表示得合适与否直接影响问题的解法的发现和效率
Lu Chaojun, SJTU 36
计算 计算思维 Python 程序排错37 计算思维
• 计算思维例 : 算法设计–化难为易 :分解 ,约简 ,嵌入 , 转换 ,模拟 ...–分治法 ,递归法 ,贪心法 , 动态规划 ...–递归地思考–并行处理
Lu Chaojun, SJTU 37
计算 计算思维 Python 程序排错38 计算思维
• 计算思维例 : 编程实现–类型系统与类型检查–结构化与模块化的思考–编程范型 : 过程式 , 面向对象 ,函数式 ,...–程序美学 , 系统设计的简洁与优雅
Lu Chaojun, SJTU 38
计算 计算思维 Python 程序排错39 计算思维
• 计算思维例 : 计算理论–算法复杂度分析
• 问题的解法是有效率差别的• 有些问题是难解的•寻求近似解
–问题的可计算性• 有些问题是不可计算的
Lu Chaojun, SJTU 39
计算 计算思维 Python 程序排错40 计算思维
• 计算思维的特点–是概念化思考 ,而非编程–是基本思考能力 ,而非机械的套用–是人的思考 ,而非计算机–与数学思维和工程思维相结合–是思想 ,而非人造物–人人皆有 , 处处皆是
Lu Chaojun, SJTU 40
计算 计算思维 Python 程序排错41 计算思维
• 生活中的计算思维–算法 :小学算术中的长除法–查找方法 :查黄页是顺序翻找还是借助索引–排序 :整理扑克牌–排队 :先来先处理–预取与缓存 :书包存放当天上课用的书–并行处理 :烧菜
• ……
Lu Chaojun, SJTU 41
计算 计算思维 Python 程序排错42 计算思维
• 计算 + X–计算数学 , 计算几何 ,自动定理证明–计算物理学–计算化学–计算生物学 , 生物信息学–计算经济学–计算机艺术 :电影特效 , 计算机作曲绘画书法–……
Lu Chaojun, SJTU 42
计算 计算思维 Python 程序排错43 计算思维
• 计算 +X:十二五 863 计划–征集重大应用软件课题
•聚变与裂变能源数值模拟•真实飞机外型全流场和优化设计数值模拟•航天飞行器全飞行流域数值模拟•新药研发与蛋白质折叠数值模拟•真实感动漫渲染与创作•大型工程设备结构力学分析•复杂电磁环境数值模拟•新型材料设计与性能评估
Lu Chaojun, SJTU 43
计算 计算思维 Python 程序排错44 Python
• 1.3 初识 Python• 本课程采用 Python 语言
–高级程序设计语言有很多种,据说 2008 年网上被引用最多的 10 个语言是 (按字母顺序 ): C , C++ , C# , Java , JavaScript , Perl, PHP , Python , Ruby , SQL
–下载 python 软件的地址• http://www.python.org/getit/ • python 2.7 版
44
计算 计算思维 Python 程序排错45 Python
• Python 安装与运行–版本 : 教材和上课都采用 Python 2.7
• 与最新的 Python 3.x 有不兼容的地方 .
–安装后 , 启动 Python 解释器• 命令行
• GUI
Lu Chaojun, SJTU 45
计算 计算思维 Python 程序排错46 Python
• 第一个程序 :HelloWorld–交互方式>>> print "Hello, World!"Hello, World!–本课程的教学中常用交互方式演示新语句–实际上很少用交互方式执行程序
• 多次执行同一程序需要多次输入程序• 多行语句无法一次性执行
Lu Chaojun, SJTU 46
计算 计算思维 Python 程序排错47 Python
• 第一个程序 :HelloWorld–程序文件
• 将语句保存在纯文本文件 hello.py 中
• 四种执行方式– 在 IDLE 中用 File->Run Module 菜单执行– 双击 hello.py 文件图标– >>> import hello – C:\Python27> python hello.py
Lu Chaojun, SJTU 47
print "Hello, World!"
计算 计算思维 Python 程序排错48 Python
• 数程序构件 : 数据–据是被处理的信息–有不同类型的数据
• 字符串数据>>> print "Hello, World!"• 数值数据>>> print 3.1415
程序构件 : 数据
Lu Chaojun, SJTU 48
计算 计算思维 Python 程序排错49 Python
• 程序构件 : 变量–和数学类似 : 用一个名字表示可变的数据
• 数学中多用单字母 , 程序中多用单词 / 词组–标识符 :Python 命名
• 以字母或下划线开头 , 后跟 0 个或多个字母 , 数字 ,下划线 . 区分大小写字母 .
合法 : x xYz x_123 _ __ _w3非法 : 3q x-123 first name
–良好的命名风格 : 有意义 , 风格一致
Lu Chaojun, SJTU 49
计算 计算思维 Python 程序排错50 Python
• 程序构件 : 表达式–表达式 : 能计算出一个值 .
• 字面值 : 3.14, “hello”• 变量• 数据 + 运算符 ( 如 )>>> 2+3*4-5
–运算符• 不同类型的数据有不同运算• 运算符有优先级
–良好编程风格 : 用空格 , 括号增加表达式的可读性 .
Lu Chaojun, SJTU 50
计算 计算思维 Python 程序排错51 Python
• 程序构件 : 语句–输出语句
• 我们用语句模板来给出正确用法print < 表达式 >print < 表达式 1>,< 表达式 2>,...
–赋值语句>>> x = 3.14>>> print x * 10
Lu Chaojun, SJTU 51
计算 计算思维 Python 程序排错52 Python
• 程序构件 : 函数–多条语句构成一个整体 , 并命名>>> def greet(): print "Hello!" print "Goodbye!">>> greet()Hello!Goodbye!
–习惯上为程序定义一个主函数 main
Lu Chaojun, SJTU 52
计算 计算思维 Python 程序排错53 Python
• 程序构件 : 注释–程序中可以使用注释 , 用于解释变量用途 , 函
数功能等等信息 .# Author: John# Version: 1.0def main(): ....
–注释是给人看的 , 对程序执行没有作用 , 被编译器 / 解释器忽略 .
–良好的编程风格 : 多用注释 !
Lu Chaojun, SJTU 53
计算 计算思维 Python 程序排错54
谢谢!
Recommended