1、第1章 程序设计ABC,What is a computer?,What is a computer?,Comput + er 计算的机器 A Computer is a device capable of performing computations and make logical decisions at speeds millions (even billions) of times faster than human beings can. 目前,最快的supercomputers每秒可执行trillions of additions 目前,PC机每秒可执行十亿次加法 人用计算器一
2、生也完不成PC机1秒钟完成的计算量,What is a computer?,硬件(hardware) 键盘、鼠标、显示器、硬盘、DVDs、内存、CPU 硬件成本下降很快 摩尔定律 每过18个月微芯片的集成度翻一番,而芯片价格保持不变 软件(software) 运行于计算机之上的程序(Program) 如何降低软件开发成本?,很像厨师的菜谱,定义了执行某个任务所需的步骤 但不幸和不同的是,你不能使用你自己的母语来写Code,What is program?,What is programming language?,计算机能读懂的语言 机器语言(Machine Language) 由一系列二进制
3、0和1组成 机器语言编写的1+1程序,10111000 00000001 00000000 00000101 00000001 00000000,像不像天书?,What is programming language?,低级语言 汇编语言(Assemble Language) 由一系列特定符号组成 汇编语言编写的1+1程序,MOV AX, 1 ADD AX, 1,能大致猜测,What is programming language?,PRINT 1+1,结果显示在屏幕上,#include main() printf(“%dn“, 1+1); ,程序设计语言(programming langua
4、ge) BASIC语言编写的1+1程序C语言编写的1+1程序(test.c)BASIC、C都是高级语言 比写机器语言程序容易,但比使用英语难,What is programmer?,编写程序源代码(Source Code)的人 程序员(Programmer)计算机、程序员、程序之间的关系 如果计算机是乐队,那么程序员就是指挥家,程序就是乐谱。 如果计算机是军队,那么程序员就是总司令,程序就是作战计划。,怎样让计算机读懂高级语言?,编译器(Compiler) 把源代码转换为可被计算机理解的机器代码 把机器代码以可执行文件(Executable File)的形式保存在磁盘上一种程序设计语言对应一种
5、编译器,怎样让计算机读懂高级语言?,程序员按照该语言的语法编写程序源代码 把自己的意图写入源代码中 编译器读入源代码 把程序员的意图转换成可执行程序,供他人使用,C语言,程序是如何运行的?,计算机把机器代码读入到内存(Memory) 由CPU运行这些代码 读取输入(Input) 产生输出(Output) 完成程序员预定的功能,程序开发步骤,What is to be done?,扩展名为.exe的可执行文件,How is it to be done?,扩展名为.c的文件(对C而言),扩展名为.obj的文件,程序开发步骤 & VC+6.0的使用,任务1:最简单、但未做任何事的C程序 任务2:在屏
6、幕上显示Welcom to Donghua university 任务3:将键盘上输入的整数在屏幕上回显 任务4:完成两个整数(一对,从键盘输入)相加 任务5:完成两个整数(任意对)相加 任务6:完成确定对两个整数相加,计算机为什么用二进制呢?,为什么不用我们日常熟悉的十进制呢? 二进制在电器元件中容易实现 计算机进行二进制运算比进行十进制运算简单 1946年,冯.诺伊曼在计算机中引入二进制,提出著名的冯.诺伊曼结构,至今仍被采用,被誉为“计算机之父”,“冯诺依曼机”结构,大脑,记忆装置,眼睛和耳朵,高级语言的魅力,易学、易用、易读、易懂、强大、可移植 百家争鸣,据不完全统计2500种,绝大多
7、数是高级语言 影响最大、寿命最长的是C语言 程序设计语言数以千计,能广为流传的不过几十种,能够风光20年的更是屈指可数,流行的高级语言,应用编程语言 机器语言 汇编语言 Basic Pascal C C+ Java C# 专项编程语言 Lotus Notes Power Builder,Web编程语言 HTML XML PHP ASP JSP JavaScript VBScript 其他 perl python VBA,http:/ 搜集了大约50种极具代表性的语言的故事和资料,有最好的编程语言吗?,Pascal的学院气息 Java的效率问题 C#的中庸之道,个性不鲜明 Visual Basi
8、c的稚嫩面孔 Smalltalk的实验风格 Ada的集大成,但又琐碎和繁冗 C+的难学易用,有最好的编程语言吗?,能很好的解决问题的语言就是好语言。 Fortran已问世50年,仍然是科学计算首选 C语言辉煌30年,至今老当益壮 C+已度过其20岁生日,相信属于它的日子还很长很长 在最恰当的地方,最恰当的时候,选择最恰当的语言,同时防止跌入语言自身的陷阱。,C程序设计语言,20世纪60年代,贝尔实验室,Ken Thompson开始开发一个叫做UNIX的操作系统 70年代, 将BCPL语言改造成更适合开发UNIX的B语言 1971年,Dennis M. Ritchie开始和Thompson合作开
9、发UNIX,将B语言改造成C语言,C语言的设计者 Dennis M. Ritchie,Ritchie漫画像,和Unix的设计者Ken Thompson 接受美国国家技术勋章,C程序设计语言,是一种高级语言 高级语言并不是“高级”,只是相对低级语言,在一个高的级别上进行编程 历史悠久,战勋卓著 诞生于上世纪70年代初,成熟于80年代 “ANSI C”标准的发布是C语言成熟的标志 很多重量级软件都是用C写的 上天入地,无所不能 几乎没有不能用C写出来的软件,没有不支持C的系统,C程序设计语言,C语言被分类为高级语言,但实际上它是一种介于高级语言和低级语言之间的语言。 很多流行语言、新生语言都借鉴了
10、它的思想、语法 从C+,到Java,再到C# 正确地学好C语言,是学习这些流行语言的基础。,C程序设计语言的地盘,硬件(Hardware),操作系统(OS),应用程序 (Application),应用 平台,基于 平台的 应用 程序,低级语言的地盘,高级语言的地盘,C语言的地盘,C程序设计语言的地盘,以往的擅长: 与操作系统和基础工具有关的编程任务 操作系统核心,设备驱动程序,系统工具,网络应用,编辑器,字处理工具,编译器,某些图形和GUI应用,以及数据库应用 未来的发展: 高性能、实时中间件,嵌入式领域,并发程序设计等,怎样学好编程?,学习编程最好的方法之一就是阅读源代码 多读好书,积累编程
11、技巧 擅于利用身边的工具与环境 学好编程的秘诀是:编程,编程,再编程 !,优秀程序员的基本素质,扎实的基础。 数据结构、离散数学、编译原理 程序人人都会写,但当你发现写到一定程度很难再提高的时候,就应该想想是不是要回过头来学学这些最基本的理论。 不要一开始就去学OOP,即使你再精通OOP,遇到一些基本算法的时候可能也会束手无策。,优秀程序员的基本素质,丰富的想象力。 不要拘泥于固定的思维方式,遇到问题的时候要多想几种解决问题的方案。,优秀程序员的基本素质,不滥用技巧 技巧的优点: 能另辟蹊径地解决问题 缺点: 不为人所熟知,可读性差,容易留下隐患 滥用技巧不是锦上添花,而是画蛇添足 失败的技巧
12、常被讽刺为“伎俩”,优秀程序员的基本素质,不钻牛角尖。 当你遇到障碍的时候,不妨暂时远离电脑,看看窗外的风景,听听轻音乐,和朋友聊聊天。 让负责编程的那部分大脑细胞得到充分的休息。 当重新开始工作的时候,你会发现那些难题现在竟然可以迎刃而解。,优秀程序员的基本素质,韧性和毅力。 这也许是“高手“和一般程序员最大的区别。 高手们并不是天才,他们是在无数个日日夜夜中磨练出来的。 比尔.盖茨 成功能给我们带来无比的喜悦,但过程却是无比的枯燥乏味。 你不妨做个测试,找个10000以内的素数表,把它们全都抄下来,然后再检查三遍,如果能够不间断地完成这一工作,你就可以满足这一条。,优秀程序员的基本素质,严
13、谨的思维 某日,某师在课堂上想看看一学生智商有没有问题,问他 “树上有十只鸟,开枪打死一只,还剩几只?” 他反问“是无声手枪或别的无声的枪吗?” “不是。” “枪声有多大?” “80100分贝。” “那就是说会震的耳朵疼?” “是。” “在这个城市里打鸟犯不犯法?” “不犯。” “您确定那只鸟真的被打死啦?” “确定。” 老师已经不耐烦了“拜托,你告诉我还剩几只就行了,OK” “OK,树上的鸟里有没有聋子?” “没有。” “有没有关在笼子里的?” “没有。” “有没有残疾的或饿的飞不动的鸟?” “没有。” “算不算怀孕肚子里的小鸟?” “不算。” “打鸟的人眼有没有花?保证是十只?” “没有花
14、,就十只。” 偶已经满脑门是汗,且下课铃响,但他继续问“有没有傻的不怕死的?” “都怕死。” “会不会一枪打死两只?” “不会。 “ 所有的鸟都可以自由活动吗?” “完全可以。”“如果您的回答没有骗人,”学生满怀信心的说, “打死的鸟要是挂在树上没掉下来,那么就剩一只,如果掉下来,就一只不剩。”某师当即晕倒!,优秀程序员的基本素质,良好的编程风格,规范化编程。 养成良好的习惯,代码的缩进,变量的命名规则要始终保持一致。 不要忽视注释。 注释是程序的一个重要组成部分,它可以使你的代码更容易理解 而如果代码已经清楚地表达了你的思想,就不必再加注释了 如果注释和代码不一致,那就更加糟糕,治学三境界,昨夜西风凋碧树,独上高楼,望断天涯路 衣带渐宽终不悔,为伊消得人憔悴 众里寻她千百度,募然回首,那人却在灯火阑珊处 清代学者王国维,第1章作业,学习VC+的使用 仿照例题编程输出你喜欢的一句话 修改任务4,将输出改为运算等式,如45+56=101 作业报告提交到学院ftp 作业提交臧珠萍 C语言程序设计第1章 ftp:/222.204.215.3 (非学院机房,但在校内网) ftp:/192.168.0.238(学院机房) 收藏/实验室FTP (学院机房) 提交的文件名用“学号+姓名+第x章作业” 如:081300319马明第1章作业,