[TOC]
快速入门
什么是计算机程序? 答:所谓的程序就是计算机能识别和执行的指令,每一条指令使计算机执行特定的操作,程序和指令是计算机系统中最基本的概念。
什么是计算机语言? 答:一种人类与计算机都能识别的语言。
1)机器语言 机器指令(Machine instruction):计算机能直接识别和接受的二进制代码 机器语言(Machine Language):机器指令的集合 通过指令表,CPU 能将 0 和 1 的组合跟具体的指令挂钩,那么这些 0 和 1 的组合我们称之为机器码,属于第一代编程语言,也是 CPU 唯一可以直接读得懂的语言。
2)符号语言(Symbolic language) 由于计算机不能直接识别和执行符号语言助记符(ADD A,B == 寄存器A = A B),需要汇编程序的软件将符号语言转成机器语言 一条符号语言对应转换一条机器指令,该过程叫”代真”或”汇编”,因此符号语言也叫符号汇编语言(Assembler Language) 缺点:通用性不行(不同型号的PC机器语言和汇编语言互不相通)
3)高级语言(High language) 20世纪50年代第一个计算机高级语言FORTRAN语言-IBM公司开发 优点:功能强,不依赖具体的机器,对任何的计算机都适用,一个高级语句往往对应多条机器指令。
比如第三代编程语言 :C 语言 C 、C#、JAVA、Delphi、Python、Object-C、Swift
高级语言的发展历程 1)非结构化的语言
- BASIC(初学者小型会话语言)、FORTRAN/ALGOL(适合数值计算)
- Pascal是一种传统的程序设计语言,设计的初衷是为了教学;
2)结构化的语言(面向过程)
- QBASIC、FORTRAN 77 、C(系统描述语言)
3)面向对象的语言
- Visual BASIC(支持面向对象程序的设计语言),C (支持面向程序设计的大型语言),JAVA(适合网络的语言)
两种编程思想
WeiyiGeek.过程/对象
1)面向过程
以事件为中心的编程思想;分析出解决问题所需要的步骤;再用函数(最小单位)把这些步骤一步一步实现;使用的时候一个一个依次调用就可以了;
2)面向对象 面向对象是以功能来划分问题,而不是步骤;注重的是对象和对象的使用;只有面向对象的程序,才真正的符合人类的思维逻辑; 三大特性:封装性,继承性,多态性; 优势:可读性,可重用性,稳定性,维护性,可测试性;
程序设计语言可以分为两类:编译型语言和解释型语言
1)编译型语言 很多传统的程序设计语言,例如Fortran、Ada、Pascal、C、C 都是编译型语言,这类语言需要预先将我们写好的源代码(source code)转换成目标代码(object code),这个过程被称作“编译”。
- 优点:运行程序直接读取目标代码(object code),由于编译后的目标代码(object code)非常接近计算机底层,执行效率很高。
- 缺点:由于编译型语言多半运作于底层,所处理的是字节、整数、浮点数或是其他机器层级的对象,往往实现一个简单的功能需要大量复杂的代码。
例如:在C 里,就很难进行“将一个目录里所有的文件复制到另一个目录中”之类的简单操作。
2)解释型语言(“脚本语言”) 执行这类程序时,解释器(interpreter)需要读取我们编写的源代码(source code),并将其转换成目标代码(object code),再由计算机运行。
多数网站开发都是使用脚本语言,它是使用一种特定的描述性语言,依据一定的格式编写的可执行文件,纯文本保存的程序(如可以用记事本打开查看、编辑)),因为脚本不仅可以减小网页的规模和提高网页浏览速度,而且可以丰富网页的表现。
- 特点:语法和结构、 学习和使用通常比较简单
- 优点:它们多半运行在比编译型语言还高的层级,能够轻易处理文件与目录之类的对象,可以由应用程序临时调用并执行,最重要的就是跨平台。
- 缺点:它们的效率通常不如编译型语言(每次执行程序都多了编译的过程),但是好处就是可以实现跨平台的特性
通常使用脚本编程还是值得的,花一个小时写成的简单脚本,同样的功能用C或C 来编写实现,可能需要两天,而且脚本执行的速度已经够快了,快到足以让人忽略它性能上的问题。
脚本编程语言:有PHP、HTML、CSS、JavaScript、VBScript、ActionScript、MAX Script、ASP、JSP、SQL、Perl、Shell、python、Ruby、JavaFX、Lua、AutoIt
WeiyiGeek.编译型-解释型
程序设计的任务 从确认问题到最后完成任务几个工作阶段:
- 1)问题分析
- 2)设计算法
- 3)编写程序
- 4)对源程序进行编辑、编译、连接
- 5)运行程序分析结果
- 6)编写程序文档
程序执行流程
大多数的程序都遵循着:输入 ->>> 处理 ->>> 输出的模型
,首先接受输入数据,然后根据指定的算法进行处理,最后输出计算结果。
WeiyiGeek.执行流程
结构化程序设计方法 作用:解决人脑思维能力的局限性和被处理问题的复杂性之间的矛盾。 定义:一个结构化程序就是用计算机语言表示的结构化算法,使用三种基本结构组成的程序必然是结构化的程序。
结构化程序设计强调程序设计风格和程序结构的规范化,提倡清晰的结构采用以下方法:
- 1)自顶而下
- 2)逐步细化 (由抽象化为具体)
- 3)模块化设计
- 4)结构化编码 (将已设计好的算法用计算机语言表示)
程序设计调试技巧
程序出错可以分为两大类:编译时错误(complie-time error)
和运行时错误(run-time error)
;
- 编译时错误: 常常会出现在您编程之中,由于语法方面的问题,大括号,小括号引用定义变量有误等等;
- 运行时错误: 往往更难以查找和纠正,运行时错误一般都不会有正式的出错信息(程序逻辑方面的错误)。
- (1)预防编译时候错误:
- 建议一:培养并保持一种编程风格!
- 建议二:认真对待编译器给出的错误/警告信息!
- 建议三:开始写代码前先画流程图,三思而后行!
- 建议四:注意检查最基本的语法!
- 建议五:把可能有问题的代码行改为注释!
- 建议六:换一个环境(系统有事会有杀软等等)或开发工具!
- 建议七:检查自己是否已经把所有必要的头文件全部 include 进来!
- 建议八:留意变量的作用域和命名空间!
- 建议九:多多使用调试工具!
- (2)预防运行时错误
- 经验一:还是培养并保持一种良好的编程风格!
- 经验二:多用注释,用好注释。
- 经验三:注意操作符的优先级,流程图;(建议使用括号来控制优先级)!
- 经验四:千万不要忘记对用户输入和文件输入进行合法性检查!
- 经验五:不要做任何假设;
- 经验六:把程序划分成一些比较小的单元模块来测试!
程序设计标准化 文件注释:
代码语言:javascript复制标题: merglist.c
功能: 归并两个有序表.
说明:归并两个数据元素按非递减有序排列的线性表palist和pbli t bli
当前版本: x.x
修改信息: 2004 08 05 Anni 2004.08.05 Anni, Initial Version Initial Version2004.08.20 Tom, Bug xxxx fixed
函数注释:
代码语言:javascript复制函数功能:在在list所指顺序表中删除下标为
函数格式:int delete_seq(PSeqList palist,int p)
函数参数:Param1:PseqList类型对象 输入框架 ,Parma2: 整形无符号,记录次数
返回值: TRUE正常, FALSE错误
功能性注释:
代码语言:javascript复制//每个变量作用简要说明
//将每月的销售额amount加到年销售额total中
total = amount total;