计算机与程序.

Slides:



Advertisements
Similar presentations
迪士尼公主裙衫变化记. 《白雪公主和七个小孩人》 《白雪公主和七个小矮人》,是世界电影史上第一部长动 画片,也是迪士尼的第一部。《白雪公主》不仅为迪斯尼 带来了第一尊奥斯卡小人,更是拯救迪斯尼于水火的贵 人 —— 在经济大萧条的 1937 年的美国,《白雪公主》为迪 斯尼赚到了 850 万美元,这约等于现在的数亿美元!
Advertisements

C/C++ 程序设计 吉林财经大学 管理科学与信息工程学院 李艳东 : Tel :
如何進行生涯輔導 永和國中 輔導處 陳月芳.
董笑菊 电子信息与电气工程学院 计算机科学与工程系
广州宜家选址分析 0连锁 李若谷 陈玉风 黄小飞 蓝柔盈.
第一章 十六世紀中葉以前的臺灣與原住民 第一節 考古發掘與史前文化.
近年来,出现了一些制作粗糙、违背史实甚至常理的“抗战雷剧”,社会上也出现了一股“戏说”抗战剧的不良风气。
量化vs質性研究分析 量化vs質性研究分析 報告人:王秀民.
第四章 基本控制结构的程序设计.
派對慶祝 指導老師:黃瑞勤老師 S.3A 組長:葉慧敏(40) 組員:尹國青(30) 麥家欣(26) 利昭雯(16)
中学生社会适应问题及其调适.
什么是工业? 采取自然物质资源,制造生产资料 、生活资料,或对农产品、半成品进行加工的生产事业。
第4章 條件判斷與迴圈 Java 2 程式設計入門與應用.
唐宋傳奇、筆記小品和史書、論著中的寓言 中碩二 吳佳樺.
浪漫 碰撞 蜕变 专题八 19世纪以来的文学艺术.
德国波恩明斯特广场修建的贝多芬铜像( 1845年)
兒童期 7 青春期 兩性圓舞曲 乘客:七年級同學 司機:張立杰老師.
Pygame 講者:張浩軒.
星星知我心 談古話今….. ……..觀星望斗 主講人: 陽光青春美少男.
反垃圾掩埋場相關報告 組長:文煊 組員:鄭侃文 李浩暐 胡育睿 李瑞耘 朱祐賢 林承宇.
第一章 C语言概述 计算机公共教学部.
JavaScript中常用的互動方式 認識簡單的交談與基本的運算.
第4章 循环结构 程序设计2 本章主讲 赵家刚 计算机编程导论.
2014年度企业所得税业务培训 蚌埠市地方税务局所得税科.
第十章 针灸学基础 广州医学院 刘义海、潘俊辉 人民卫生电子音像出版社出版.
"性"不"性"由你 性別平等之探討 北屯國小 張文陵.
組員: 洪暐翔、 賴峻毅 侯家豪、 賴琦穎 指導老師: 王惠鈴 老師
公关关系运作程序 湖南司法警官职业学院.
P303 HTML/DHTML/CSS/JavaScript 專業HTML網頁設計 陳錦輝.
我国的宗教政策 第七课第三框.
企业所得税年度纳税申报表(2014年版)培训 国家税务总局公告2014年第63号
市级个人课题交流材料 《旋转》问题情境引入的效果对比 高淳县第一中学 孔小军.
第4章 JavaScript脚本语言基础 4.1 JavaScript简介 4.2 JavaScript语法基础
程序设计思想与方法入门篇 庄天红.
和大樹做朋友 一起去探索兒童公園的動植物生態吧! 財源老師技術指導、詩韻老師整理製作.
网络游戏对大学生生活的影响 英本1班 鞠申镅 汪晨茹 沈秋云 元文杰 段祺琪.
光環”籠罩下的馬雲.
转正述职报告 乐恩公司 史航
第二章 JAVA语言基础.
三角形的邊角關係 大綱:三角形邊的不等關係 三角形邊角關係 樞紐定理 背景知識:不等式 顧震宇 台灣數位學習科技股份有限公司.
台中市不動產經紀人職業工會 不動產經紀營業員 複訓班
程式設計實作.
诗歌鉴赏专题训练 二零零七年九月.
2.1 基本資料型別 2.2 變數 2.3 運算式與運算子 2.4 輸出與輸入資料 2.5 資料型別轉換 2.6 實例
Python入门培训演示 系统测试部 叶华 文件级别:公开
本單元介紹何謂變數,及說明變數的宣告方式。
Python ——谁说简洁就不能强大? Gingko Studio.
PHP 程式流程控制結構.
第三章 流程控制與例外處理 資訊教育研究室 製作 注意:本投影片僅供上課使用,非經同意,請勿散播或轉載。
算法设计与分析.
数据集合体.
Vul Tracker 漏洞管理与自动化跟踪平台
主題:需求與供給彈性 (一) 第八週 授課:黃柏凱.
注意:教程中给出的所有示例代码请勿直接拷贝使用!会引起不必要的错误!
你最喜欢哪个季节?为什么?这些季节有什么不同?
软件工程 第四章 软件设计 软件过程设计技术与工具.
第2章 算法与C语言程序 程序 (1)数据的描述:数据的类型和组织形式(数据结构) (2)操作的描述:操作步骤(算法) 沃思指出:
涉江采芙蓉 重庆市涪陵实验中学 余波.
第一節 溫度與熱量 第二節 熱與物態變化 第三節 熱與生活. 第一節 溫度與熱量 第二節 熱與物態變化 第三節 熱與生活.
第3章 JavaScript基本语句.
第二章 Java语法基础.
▲重合的概念 ▲對應頂點、對應邊、對應角 ▲全等的記法 ▲全等性質 ▲三角形全等性質
問題解決與流程圖 高慧君 台北市立南港高中 2006年12月22日.
第二章 Java基本语法 讲师:复凡.
大数据应用人才培养系列教材 Python语言 刘 鹏 张 燕 总主编 李肖俊 主编 刘 河 钟 涛 副主编.
第2章 Java语言基础.
第七章 程序调试方法 异常 崩溃.
判斷(選擇性敘述) if if else else if 條件運算子.
第二章 Java基础语法 北京传智播客教育
Presentation transcript:

计算机与程序

通用计算机 计算机是具有如下特征的机器: 人们造了各种各样的计算机,但:所有计算机具有相同的能力! 能够存储和处理信息 信息处理由程序控制 输入处理输出 信息处理由程序控制 计算机程序是一个详细的逐步执行的指令序列,告诉计算机该做什么. 程序可改变:不同的程序完成不同的处理任务. 人们造了各种各样的计算机,但:所有计算机具有相同的能力! 2 2 Lu Chaojun, SJTU Lu Chaojun, SJTU

软件统治硬件 程序决定了计算机做什么. 程序设计:编写软件的过程. 程序设计极具挑战性: 为何学程序设计? 没有程序,计算机只是一堆废铁. 既要具备大视野 又要关注细枝末节 为何学程序设计? 做计算机的主人 乐趣 培养问题求解能力 Lu Chaojun, SJTU

什么是计算机科学? 并非研究计算机! CS研究计算的基础及其实现与应用. CS要回答的基本问题:什么是可计算的? 计算机之于计算机科学家正如望远镜之于天文学家. (E. W. Dijkstra) CS研究计算的基础及其实现与应用. CS要回答的基本问题:什么是可计算的? 对此问题的回答有三种方式: 实际设计一个解决问题的算法 理论分析问题的可解性 无解的,不是能行可解的 通过实验来研究问题. 4 Lu Chaojun, SJTU

硬件基本知识 CPU 输出设备 输入设备 主存 次级存储器 Lu Chaojun, SJTU

硬件基本知识(续) 中央处理器(CPU):执行运算. 存储器存储程序和数据. 输入/输出设备:人与计算机交互 只提供简单的运算,如加法,比较等. 存储器存储程序和数据. CPU只能直接访问主存. 主存快但易失,次级存储器慢但持久 输入/输出设备:人与计算机交互 Lu Chaojun, SJTU

程序设计语言 问:用什么语言告诉计算机做什么? 答:用精确无歧义的程序设计语言. 有不同层次的程序设计语言 精确的语法和语义 计算机自己的母语:机器语言 例如: 0000010000000001.是Intel8086能理解的一条指令. 把机器语言用助忆符表示:汇编语言 上例即: ADD AL,1.需要汇编器处理后机器才懂. 适合人用的语言:高级语言 如: x = y + 1. 需要编译器或解释器翻译后机器才懂. Lu Chaojun, SJTU

高级语言 高级程序设计语言有很多种,据说2008年网上被引用最多的10个语言是(按字母顺序): C, C++, C#, Java, JavaScript, Perl, PHP, Python, Ruby, SQL. 高级语言的翻译 编译:源代码编译成目标代码,再执行.一次编译,多次执行. 解释:源代码直接被解释执行.每次执行都要重新解释. Lu Chaojun, SJTU

Python 荷兰计算机科学家Guido van Rossum于1990年发明. 特色:通用OOPL/跨平台/开源/自由(免费) Python采用编译/解释混合方式:先编译成字节码,再解释执行. 安装Python 2.x 与新的Python 3.x有不兼容的地方. 启动Python解释器 命令行 GUI:IDLE Lu Chaojun, SJTU

初识Python 语句 串,数,表达式 变量与赋值 执行单条语句vs语句块(函数) 函数 模块(脚本)文件 注释 定义,调用,参量,左缩进 模块(脚本)文件 注释 应用实例:模拟(chaos.py) Lu Chaojun, SJTU

Python程序基本构件

程序设计需要系统化的方法 程序设计是用精确的语言告诉计算机该做什么,要精确到最细节处. 计算机只会刻板地执行程序. 一方面要写大型程序,一方面要精确到细枝末节,这极具挑战性. 细节上的微小差错可带来巨大灾难. 1971/9/10,东风五号首枚遥测弹因软件设计问题致使二级主发动机提前关机,落点偏离565公里. 1996年Ariane 5火箭首次鉴定发射失败的原因是将一个浮点数转换为整数的程序代码有问题. Lu Chaojun, SJTU

软件开发过程 需求分析:问题是什么? 制定程序规格:程序要做什么? 设计:程序怎么做? 实现:用某种程序设计语言翻译设计. 对简单程序描述输入输出即可. 设计:程序怎么做? 主要任务是设计出满足规格的算法 一般用伪代码给出总体结构,不纠缠细节. 实现:用某种程序设计语言翻译设计. 测试与排错:测试程序是否如预期,排除bug. 维护:运行中还会不断有问题. Lu Chaojun, SJTU

例:温度转换 需求:预报摄氏度,想知道对应华氏度. 规格:输入摄氏度,显示输出华氏度.两者对应关系是F=(9/5)C+32. 设计算法:简单的IPO(详见下页) 实现:翻译成Python程序(详见下页) 测试:常用边界数据.如输入0,100 Lu Chaojun, SJTU

算法与实现 伪代码算法: Python程序实现: 输入摄氏度celsius 计算华氏度fahrenheit=9/5 celsius + 32 # convert.py # A program to convert Celsius temps to Fahrenheit # by: Suzie Programmer def main(): celsius = input("What is the Celsius temperature? ") fahrenheit = 9.0 / 5.0 * celsius + 32 print "The temperature is", fahrenheit, "degrees Fahrenheit.“ main() Lu Chaojun, SJTU

程序构件:标识符 标识符:值,变量,函数,模块等的名字. 良好编程风格:选择有意义的名字,并且风格保持一致. 字母下划线开头,后接字母数字下划线 大小写敏感 良好编程风格:选择有意义的名字,并且风格保持一致. 保留字不能用于命名: and, assert, break, class, continue, def, del, elif, else, except, exec, finally, for, from, global, if, import, in, is, lambda, not, or, pass, print, raise, return, try, while, yield Lu Chaojun, SJTU

程序构件:表达式 表达式:能计算出一个数据值的代码片段. 运算符 良好编程风格:用空格,括号增加可读性. 字面值: 3.9, “abc” 变量: 如x, celsius 表达式 op 表达式: 3.9 * x * (1x) 运算符 不同类型的数据有不同运算 数值数据的运算:      运算符有优先级 良好编程风格:用空格,括号增加可读性. Lu Chaojun, SJTU

程序构件:输出语句 如何描述语句的语法和语义? 输出语句print的语法: 需要一套元语言来描述,我们用语句模板表示法. 输出语句print的语法: print print <expr> print <expr>, <expr>, …, <expr> print <expr>, <expr>, …, <expr>, print的语义:自左向右计算表达式的值并在一行上显示,值之间以空格隔开. 最后输出换行,但以逗号结尾时不换行. Lu Chaojun, SJTU

程序构件:赋值语句 语法 语义: 计算表达式<expr>的值,存入变量<var>. <var> = <expr> 语义: 计算表达式<expr>的值,存入变量<var>. Python特色:可以随时随地通过赋值语句创建变量;变量类型由赋值语句决定. 一个变量可被多次赋值,但总是持有最后一次赋值的结果. Lu Chaojun, SJTU

程序构件:赋值语句(续) 输入赋值语句 语义 良好风格 <var> = input(<prompt>) 等待用户输入一个表达式(以回车键结束) 计算用户输入的表达式,得到input( )的值 把input( )的值存入<var>. 良好风格 用<prompt>提醒用户输入 <prompt>以空格结束. (Why?) Lu Chaojun, SJTU

程序构件:赋值语句(续) 同时赋值 语义:计算右边各表达式的值,分别存入左边的对应变量. 例如:如何交换两个变量的值? <var>, ... ,<var> = <expr>, ... ,<expr> 语义:计算右边各表达式的值,分别存入左边的对应变量. 例如:如何交换两个变量的值? 传统语言的做法:引入一临时变量 Python特色: x, y = y, x input( )也可为多个变量同时赋值 多个输入用逗号分隔 Lu Chaojun, SJTU

程序构件:for循环 语法 for <var> in <sequence>: <body> 循环次数是确定的.(特别地,称为计数循环) <sequence>是一个值的序列,如[1,3,5,7,9]或range(10)(即[0,1,…,9]). <body>可以是任何语句序列,用左缩进标识. 语义:<var>依次取遍<sequence>的每个值,对每一取值执行一次<body>. Lu Chaojun, SJTU

程序的控制流 程序的诸语句通常是顺序执行的,但循环语句改变了控制流,表示一种控制结构. 控制流可以用流程图直观表达 <body> 无 <var>取<seq>的下一个值 有 <body> Lu Chaojun, SJTU

End