程序设计思想与方法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
• 参考书
– How to Think Like a Computer Scientist—Learning with Python.(电子版)
Lu Chaojun, SJTU
3
关于课程名称
• 课程名称是“程序设计思想与方法”,其实对应于 近年来国际上提出的新课程—“计算思维”. • 计算思维(computational thinking)是计算机科学 家利用计算机解决问题时的思想和方法.
• ……
Lu Chaojun, SJTU
8
计算思维对其他学科的影响
• • • • • • • • • • • 统计学中的机器学习 计算生物学,生物信息学 计算博弈论 计算化学,纳米计算 计算物理学,量子计算 计算数学,计算几何,计算机证明定理 工程中的计算机模拟 医学影像分析 电子商务,计算广告学 电影特效,计算机作曲,NBA统计分析 ……
程序设计思想与方法
绪论
教师信息
• 主讲
陆朝俊(电信学院计算机科学与工程系) 电子邮箱: lu-cj@ 教学资料: ftp:///lu-cj 办公室: 电院楼群3-525
• 助教
Lu Chaojun, SJTU
2
教材和参考书
• 教材
– 很遗憾,暂无合适的中文版教材 – 目前使用: Python Programming: An Introduction to Computer Science. (电子版)
CPU
主存
输出设备
次级存储器
Lu Chaojun, SJTU
16
硬件基本知识(续)
• 中央处理器(CPU):执行运算.
– 只提供简单的运算,如加法,比较等.
• 存储器存储程序和数据.
– CPU只能直接访问主存. – 主存快但易失,次级存储器慢但持久
• 输入/输出设备:人与计算机交互
Lu Chaojun, SJTU
– 当然会学习这方面的一些基本技术
Lu Chaojun, SJTU
10
计算机与程序
问题的提出
• 当今时代,计算机几乎无处不在:
– – – – – – 企业管理 产品设计 气象预报 电影制作 工业控制 游戏,写文章,上网,……
• 问题:计算机究竟是什么东西?怎么能做这 么多不同的事情?
Lu Chaojun, SJTU
– 适合人用的语言:高级语言
如: x = y + 1. 需要编译器或解释器翻译后机器才懂.
Lu Chaojun, SJTU
18
高级语言
• 高级程序设计语言有很多种,据说2008年 网上被引用最多的10个语言是(按字母顺 序): C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, SQL. • 高级语言的翻译
9
Lu Chaojun, SJTU
对本课程的定位
• 学习计算机科学解决问题的思想方法,应 用于其他专业领域 • 不是程序设计语言课程!
– 本课程需要编程,以加深对计算思维的理解 – 坏消息:学习编程语言需要掌握非常繁琐的 细节 – 好消息:Python语言非常简单,易学易用
• 也不是算法和数据结构课程!
• 并非研究计算机!
– 正如天文学不是研究望远镜的. – EWD
• CS要回答的基本问题:什么是可计算的? • 对此问题的回答有三种方式:
– 实际设计一个解决问题的算法 – 理论分析问题的可解性
无解的,不是能行可解的
– 通过实验来研究问题.
15
Lu Chaojun, SJTU
硬件基本知识
输入设备
17
程序设计语言
• 问:用什么语言告诉计算机做什么? 答:用精确无歧义的程序设计语言.
– 精确的语法和语义
• 有不同层次的程序设计语言
– 计算机自己的母语:机器语言
例如: 0000010000000001.是Intel8086能理解的一条指令.
– 把机器语言用助忆符表示:汇编语言
上例即: ADD AL,1.需要汇编器处理后机器才懂.
13
软件统治硬件
• 程序决定了计算机做什么.
– 没有程序,计算机只是一堆废铁.
• 程序设计:编写软件的过程. • 程序设计极具挑战性:
– 既要具备大视野 – 又要关注细枝末节
• 为何学程序设计?
– 做计算机的主人 – 乐趣 – 培养问题求解能力
Lu Chaojun, SJTU
14
什么是计算机科学?
12
通用计算机
• 计算机是具有如下特征的机器:
– 能够存储和处理信息
输入处理输出
– 信息处理由程序控制
计算机程序是一个详细的逐步执行的指令序列, 告诉计算机该做什么. 程序可改变:不同的程序完成不同的处理任务.
• 人们造了各种各样的计算机,但:所有计算 机具有相同的能力!
Lu Chaojun, SJTU
• • • • • • • • 模块化 预取和缓存 对最坏情况的预防,保护,恢复 同步 启发式推理 规划,学习,调度 时空等不可兼得要素的权衡 ……
7
Lu Chaojun, SJTU
日常生活中的计算思维
• • • • • • • • 小学算术:长除法,最大公约数 查字典:线性,二分 排队:先来先处理 整理扑克牌:插入排序 书包:预取与缓存 邮递员投递路线:尽可能只经过一次 烧菜:并行处理 生产:流水线
Lu Chaojun, SJTU
5
计算思维的例子
• • • • • • • • 问题抽象,表示,建模 问题难度与机器的能力 问题解决的效率,近似解,失误率… 变难为易:分解,约简,嵌入,转换,模拟 递归地思考 并行处理 类型检查 程序美学,系统设计的简洁与优雅
6
Lu Chaojun, SJTU
计算思维的例子(续)
– 计算机科学是关于“计算”的学问. – 计算思维建立在由人或机器执行的计算过程的能力 和限制之上.
• 计算思维应成为所有人的基本能力.
– 与阅读,书写,算术能力一样!
Lu Chaojun, SJTU
4
计算思维的特点
• • • • • • 是概念化思考,而非编程 是基本能力,而非机械的生搬硬套 是人的思考方式,而非计算机的 是数学思维和工程思维的互补及组合 是思想,而非人造物 人人皆有,处处皆是
– 编译:源代码编译成目标代码,再执行.一次编 译,多次执行. – 解释:源代码直接被解释执行.每次执行都要 重新解释.