软件和程序是相辅相成的。程序可以看做是软件的子集。换句话说,软件就是由一个一个程序组成的。程序又是由一条一条的代码组成的。
扩展:
有一个计算机科学家沃斯提供了一个公式:程序 = 数据结构 + 算法
计算机语言
一说到计算机语言,首先会想到自然语言。自然语言就是用于人与人之间进行沟通的。计算机语言就是用于人与计算机之间进行沟通。
计算机语言的发展史
计算机语言是从20世纪40年代开始出现,大致可以分为3个阶段
第一阶段:机器语言
第二阶段:汇编语言
第三阶段:高级语言
机器语言:最早的机器语言最大的特点就是由0和1组成。之所以只有0和1,是因为要使用这两个数字来模拟电子元件的通电和不通电的状态,从而向计算机发送命令。
汇编语言:汇编语言从一定程度来讲就是机器语言的一种助记符。使用助记符以后可以一定程度上帮助人类明白代码的含义。
高级语言:高级语言更加接近于我们的自然语言。
高级语言又可以分为两个大类:一个叫做面向过程,另一个叫做面向对象
所谓面向过程,就是在编写代码的时候,需要向机器一样考虑每一个步骤。程序的设计是自顶向下,一步一步执行。
所谓面向对象,就是更加接近于人类的思考模式。只需要考虑我们做一个事情的时候需要哪些东西,而不需要考虑具体的步骤
高级语言可以以1980年为一个分界点。80年之前,基本上都是面向过程的语言(C语言),80年之后就基本都是面向对象的语言(Java,C#,PHP,Ruby)
翻译程序
为什么需要翻译程序:因为计算只能识别机器语言,但是我们书写程序的时候,使用的是高级语言。这个时候就需要将高级语言翻译成机器语言。
翻译的方式有两种:一种是编译,一种是解释
根据翻译的方式我们的计算机语言又可以进行分类:静态语言和动态语言
编译器:一次性将整个程序转换为二进制代码,这个有点类似于将外语书翻译成中文
解释器:进行逐行的翻译。这个有点类似于同声传译。
编译器编译程序的速度更快。解释器解释语言的时候更加灵活。
静态语言:Java C#
动态语言:JavaScript PHP Ruby
程序设计的步骤
① 分析问题
在进行程序开发之前,首先需要对问题进行分析,其实就是分析用户的需求
② 确定数据结构和算法
建立数学模型
③ 开始进行程序的编制
就是敲代码来实现功能
④ 软件的调试和测试
一步一步解决程序里面的bug,直到获取预期的结构。其实我们的程序一定程度来讲不是写出来的,而是调出来
常见的程序相关的错误类型
① 语法错误:编写的代码不符合语言的语法规则,这样的代码是无法通过编译的
② 逻辑错误:编写的代码符合语法规则,但是逻辑有问题,导致不能得到预期的结果
③ 运行错误:这其实就是算法除了问题。这个时候就应该重新修改自己的算法。
④ 开发错误:整个程序设计的时候偏离了用户的需求,导致开发方向错误
算法
从广义上来讲,算法就是解决某一个问题的方法和步骤。
如果要将算法进行分类,那么可以分为两大类:数值型运算算法 和 非数值型运算算法
数值型运算算法:就是指最终会得到一个数字的结果。
非数值型运算算法:例如搜索等事务相关的处理
算法的特征
- 1.有穷性:就是指一个算法的步骤应该是有限的
- 2.确定性:算法里面的每一个步骤都应该是确定的,并且是有具体含义的,不能模棱两可
- 3.有零个或者多个输入:根据算法的不同,有一些算法是可以有输入的
- 4.有一个或者多个输出:设计算法就是为了解决问题,因此每一个算法都应该有一个或者多个输出
- 5.有效性:算法中的每一个步骤都应该是能够有效执行的,并且能够得到结果
算法的表示方式
为了让其他人也可以明白自己的算法,所以一般我们会把算法用一些方式表现出来。自然语言表示法,流程图,伪代码,N-S表示法
自然语言表示法:所谓自然语言表示法,就是指使用人类日常生活中所使用的语言将算法表示出来,例如:汉语,英语
例:交换墨水瓶
第一步:将黑墨水瓶里面的黑墨水倒入空瓶
第二步:将蓝墨水倒入空的黑墨水瓶
第三步:将空瓶里面的黑墨水倒入空的蓝瓶里面
第四步:完成交换
伪代码表示法:这是一种介于自然语言和计算机语言之间的一种方式
例:交换墨水瓶
第一步:A→黑墨水瓶 B→蓝色墨水瓶 C→空瓶
第二步:A→C
第三步:B→A
第四步:C→B
第五步:完成交换
伪代码练习:1+2+3+4+...+1000
第一步:n = 1
第二步:m = 2
第三步:n = n + m
第四步:m = m + 1
第五步:判断m是否小于等于1000,如果是,跳回第三步,如果不是,继续下一步
第六步:输出结果
- 2. 1 + 3 + 5 + 7 +...+99
第一步:n = 1
第二步:m = 3
第三步:n = n + m
第四步:m = m + 2
第五步:判断m是否小于等于99,如果是,跳回第三步,如果不是,继续下一步
第六步:输出结果
- 3.打印1-1000以内,能够被5整除,或者能被6整除的数字
第一步:n = 1
第二步:n % 5 == 0 如果能,跳到第六步,如果不能,执行下一步
第三步:n % 6 == 0 如果能,跳到第六步,如果不能,执行下一步
第四步:n = n + 1
第五步:判断n是否小于等于1000,如果是,跳回第二步,如果不是,跳到第七步
第六步:输出n
第七步:结束
- 4.安全数的报数游戏:找出1-60以内能够被7整除或者尾数为7的数
第一步:n = 1
第二步:n % 7 == 0 如果能,跳到第六步,如果不能,执行下一步
第三步:n % 10 == 7 如果能,跳到第六步,如果不能,执行下一步
第四步:n = n + 1
第五步:判断n是否小于等于60,如果是,跳回第二步,如果不是,跳到第七步
第六步:输出n
第七步:结束
流程图表示法:又被称之为框图。使用一系列图形和流程线以及少量的文字说明来进行算法的表示。特点:更加形象易懂。
图形符号 | 符号名称 | 作用 | 流程线 |
椭圆形 | 起始框 终止框 | 表示程序的开始和结束 | 起始框:只有一个出口,没有入口 终止框:只有一个入口,没有出口 |
平行四边形 | 输入框 输出框 | 顾名思义,代表输入和输出 | 只有一个入口,一个出口 |
矩形 | 处理框 | 表明程序的处理和操作 | 只有一个入口和一个出口 |
菱形 | 判断框 | 对判断结果进行两种情况的流向 | 一个入口,两个出口 |
箭头 | 流程线 | 代表程序的流向,用于将上面的符号把它串起来 |
|