本人精心整理的文档,文档来自网络
本人仅收藏整理
如有错误
还请自己查证!
算法与程序设计
第一章:计算机和算法
计算机解决问题的一般过程:
分析问题→设计算法→编写程序→运行程序→调试程序→问题解决
指令、程序、软件的区别:
指令:计算机执行某一操作的命令
程序:指令的有序集合
程序首先存储在计算机的内存中
程序由 指令部分(操作码) 和 数据部分(地址码)组成
软件:程序+相关的文档资料
算法:解决问题的方法和步骤
算法是程序设计的"灵魂"
克劳斯·沃思:算法+数据结构=程序
算法的特点:
1、 有穷性 2、确定性 3、可行性 4、有0个或多个输入 5、有一个或多个输出
算法的3种描述:
1、 自然语言 2、流程图 3、伪代码 或 程序语言
流程图基本图框:
算法的三种模式(结构):
顺序模式(顺序结构)、选择模式(分支结构)、重复模式(循环结构)
循环结构:"当型"可以不执行循环体
"直到型"至少执行一次循环体
变量:存储单元
区别 "变量名" 和 "变量值"
变量的特点:取之不尽、赋值即覆盖、先赋值后使用(取不尽、挤得掉、加得进)
变量的类型: 数值型 和 字符型(特征:有 " ")
字符串型的比大小:"9">"100000";"AbC">"ABC"都为 真(true或1)
解释:从第一个字符开始比
如果大则大
不管后面
如果一样
再比较第二个字符以此类推
变量的赋值 赋值号 : "=" 或者 "←"
解释:先计算"赋值号"右边的值
再将值赋给"赋值号"左边的变量
变量的交换 (关键看第二步知道哪两个变量交换)
例如:a=3
b=2交换两个变量:
① temp=a
② a=b
③ b=temp(首尾呼应
承上启下)
运算符:
类别
运算符
结果
优先级
算术运算符
+、-、*、/、mod、^
数值
①^ ②*、/、mod
③+、-
字符串运算符
+
字符串(有双引号) 关系运算符
>、<、>=、 <=、<>
true或false
相同
逻辑运算符
not 、and、or
true 或 false
①not②and③or
优先级:
(1) 算术和字符串运算符>关系运算符>逻辑运算符(由高到低)
(2) 括号可以改变优先级次序
(3) 同一优先级 自左向右
函数
功能
Abs(x)
求x的绝对值
Sqrt(x)或Sqr(x)
求x的算术平方根
Int(x)
求不大于x的最大整数
例如:Int(3.5)=3 Int(-3.5)=-4
函数:供程序设计者直接使用的小程序
表达式:
例如:, x=(-b+sqr(b*b-4*a*c))/(2*a) 别忘了分母加括号
计数器、累加器、累乘器:
计数器的初值、终值(判断框一般为<=时)、步长
通过公式:循环次数=[(终值-初值)/ 步长]+1
项目
累加器s
累乘器sum
初始值
0
1
表达式(计数器用i)
s=s+i
sum=sum*i
注意
:这里的初始值为一般情况
第二章:基本算法实例
解析算法
用解析的方法找出表示问题的前提条件(已知条件)与结果之间的数学表达式
分段函数的算法过程 属于解析法
枚举算法
用计算机一 一 列举、逐个检验
选出满足条件数据的算法称之为"枚举算法"
枚举法的步骤
(1)确定列举范围
(2)明确检验条件
(3)确定循环控制方式和列举方式(循环嵌套分支):
"一 一 列举"为循环结构
"逐个检验"为分支结构
循环嵌套循环时
循环次数n为
外循环i的次数 × 内循环j的次数
即 n= i*j
数组:
(1)数组它是个特殊的变量
(2)它在内存中的开辟连续的存储单元
(3)每一个存储单元对应一个数组元素
(4)数组是用来存储一批类型、作用相同的数据;数组元素可以参与赋值和运算
(5)数组的规模:容纳数组元素的个数
数组名为d
规模为5
有时数组元素名d[1]写成d(1)
如图可知:d[1]=1, d[4]=d[2+2]=61
d[5]=(d[3]-d[2])-2*d[1]
排序与查找
排序:冒泡排序和选择排序
查找:顺序查找和对分查找
排序:把杂乱无章的数据变为有序数据过程
冒泡排序:通过"从后往前或者从下而上"的逐遍加工
采用相邻2个元素互换位置的方法来调整最大值或最小值
选择排序:(不是插队而是交换位置)
对于n个数的选择排序
第一次遍历原始数据
将最值数据与1号位置的数据位置进行交换
第二次遍历时
只需观察接下来n-1个数中的最值与2号位置的数据进行交换
第三次遍历时
只需观察接下来n-2个数中的最值 与3号位置的数据进行交换...以此类推
归纳:
冒泡排序:对于n个数冒泡排序
最多需要n-1趟完成排序
选择排序:它比冒泡排序更加优化
执行效率高
区别在于减少了交换的次数
有n个元素
最多也要n-1趟完成排序
顺序查找:对于n个数的查找
最差情况要查找n次
对分查找(二分法查找):首先被查找的数据必须是有序的
对于n个数
最差情况要查找 [log2n]+1次
[]为向下取整
选择排序:原始数据:7,6,3,9,2 从小到大
顺序查找:
对分查找:
由于规模为5
故二分法第一次查找d()=d(3)
第二次查找d()=d(4)
注:向下取整
第三次查找d(5)
第三章 程序设计基础
根据流程图用VB语言写出部分程序代码辅导
一. 选择语句(分支结构)
1. If...Then语句(单分支结构)
例如:
2.If...Then...Else语句(双分支结构)
例如:
3.If...Then...ElseIf语句(多分支结构
分段函数应用)
例如:
二.循环语句(循环结构)
1.For循环语
句
一般用于控制循环次数预知的循环结构;
例如:
2. Do...Loop循环语句
一般用于控制循环次数未知的循环结构
形式1:(当型循环) 上例用Do...Loop循环语句可表示为:
形式2:(直到型循环)
2010学业考试相关试题:
1. 根据以下流程图
利用你学习过的程序设计语言(如VB、C、PASCAL等)
写出实现流程图虚线框部分的程序代码
你使用的程序设计语言名称: VB
程序代码
2. 根据以下流程图
利用你学习过的程序设计语言(如VB、C、PASCAL等)
写出实现流程图虚线框部分的程序代码
你使用的程序设计语言名称: VB
程序代码
??
??
??
??
1