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