一、算法
(1)、计算机解决问题的过程
计算机程序(Computer Program)是计算机如何去解决问题完成任务的一组可执行指令。
程序设计(Program Design)是寻找解决问题的方法,并将其实现步骤编写成计算机可执行的程序的过程。
程序设计语言(Program Language)泛指一切用于书写计算机程序的语言。
计算机解决问题和人解决问题有着本质区别:计算机解决问题要经历分析问题、确定算法、编程求解等基本过程主。计算机解决问题的流程如下:
开始→分析问题→设计算法→编写程序→运行程序→结束
编写程序时,首先要对问题进行详细分析,明确已知条件下的初始状态及要达到的目标,找出解决问题的方法和过程,并抽取出一个数学模型,形成算法;然后将这个数学模型连同它要处理的数据,用计算机能识别的方式描述出来,使之成为计算机能处理的对像;最后用程序设计语言设计出具体的问题求解过程,形成计算机程序。
(2)算法的描述方法
①、算法的定义及其特征
算法:就是解决问题的思想方法,对解题过程的精确描述。
计算机解决问题的步骤为分析问题、设计算法、编写程序、调试程序。
算法是程序设计的“灵魂”,世界著名计算机科学家尼克劳斯·沃斯(N.With)指出:算法+数据结构(Data Structure)=程序。
算法具有以下特征。
1、有穷性:一个算法必须保证执行有限步之后结束;
2、确定性:算法的每一步骤必须有确切的定义;
3、输入:一个算法有0个或多个输入,以刻画运算对象的初始情况,所谓0个输入是指算法本身定出了初始条件;
4、输出:一个算法有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的;
5、可行性:算法中执行的任何计算步都是可以被分解为基本的可执行的操作步,即每个计算步都可以在有限时间内完成;(也称之为有效性)
②、算法的描述方法有自然语言、流程图、伪代码三种形式
自然语言描述法:指用人们日常生活中使用的语言(本国语言),用自然语言描述符合我们的习惯,且容易理解。
例1:求圆的周长和面积
算法如下:(自然语言描述法)
(1)输入半径r ;
(2) 计算周长c=2*π*r ;
(3) 计算面积 s=π*r*r ;
(4) 输出周长c,输出面积s ;
(5) 结束
流程图描述:也称程序框图,它是算法的一种图形化表示方法。且描述算法形象、直观,更易理解。
例1:求圆的周长和面积
伪代码描述法:是介于自然语言和计算机程序语言之间的一种算法描述。是专业软件开发人员常用方法。流程图的基本图形及功能:
例1:求圆的周长和面积
input r
c=2*π*r s=π*r*r print c,s
二、程序设计基础
1.程序设计语言
程序设计语言经了机器语言、汇编语言、高级语言三个阶段。高级语言又分解释型语言和编译型语言。 1、机器语言:是计算机能直接识别的语言,机器语言是由一串由“0”和“1”构成的二进制代码。 2、汇编语言:是一种符号化的机器语言,用英文助记符代替机器语言,比机器语言容易识别和记忆,提高了程序的可读性。它的缺点是依赖机器,不同的机器有不同的指令集,通用性差,使用时还必须翻译成目标程序执行。
3、高级语言:是更接近自然语言和数学语言的编程语言,它不依赖机器,通用性好,更容易掌握。高级语言程序可读性强,更于修改和维护。常见的高级语言:C 语言、C++、pascal 、java 、C#、VB 、Basic
认识可视化编程工具-VB 语言
Visual Basic 是基于Basic 的可视化程序语言,所谓可视化程序设计,主要是指程序设计人员利用软件本身提供的各种控件,像搭积木式地应用程序的各种界面,然后编写少量的代码就可以构建应用程序。
可视化编程的一般步骤:设计程序界面→编写程序代码→调试、运行程序
面向对象程序设计就是以对象为中心,以事件为过程执行的起点。VB 可提供的事件有单击(Click )、双击(DbClick )
下面是几个应了解的文件。
.vbp 文件:与VB 工程有关的文件和对象清单,是一个文本文件。 .frm 文件:是包含窗体及控件的属性设置、相关程序代码的文件。 .ocx 文件:是VB 的扩展文件。 .bas 文件:是标准的模块文件。 2.数据及运算 ①.数据类型
VB提供了数值型、字符型、布尔型、日期型等基本数据类型。
注意:
(1)、浮点型(单精度型和双精度型合称)数据的表示方法:浮点数在计算机中类似于数学中的实数,比如304707表示成3.04707E5
(2)字符串的表示法:“Visual Basic”、“245”、“=33+2”等。
(3)日期型数据的表示方法:用一对“#”号把日期或时间括起来,如#2012/12/25#表示2012年12月25日。
②.常量与变量
(1)、在VB中用常量()表示程序运行过程中事先设置、其值不能改变的数据。VB中的常量有数值常量、字符串常量等。常量的定义形式如下
Const 常量名 [As 常量类型] = 表达式
如:Const pi As Single = 3.14159 常量名为pi
(2)、变量()是内存中存放数据的存储单元,其中存放的数据称为变量的值。
变量的声明:
Dim <变量名 >As <变量类型>
如:Dim a As Integer 定义一个整型变量,变量名为a
变量命名注意要点:
1、必须以字母开头,不能以数字或其他字符开头。
2、只能由字母、汉字、数字学或下划线组成,不能含有小数点、空格等字符。
3、最长不超过255个字符
4、不能以VB保留字作变量名,如语句定义符、函数名等。
5、VB不区分变量名中字母大小写。如HELLO和Hello是同一个变量。
6、变量名最好取有意义的名称,一般在前面加上类型的缩写。
常用的前辍有:字符型(str)、整型(int)、长整型(lng)、单精度(sng)、双精度(dbl)、布尔型(bln)、日期型(dtm)。
③.运算符与表达式
1.在VB中根据运算功能的不同将运算符分为算术运算符、字符串运算符、日期运算符、关系运算符和逻辑运算符等。
2.表达式是由变量、常量、运算符、函数和圆括号按一定规律组合而成。VB中常用的表达式有算术表达式、字符串表达式、日期表达式、关系表达式、逻辑表达式等。
算术运算符要求参与运算的量是数值型,运算的优先级为:指数>取负>乘除法>整除>加减,运算的结果是数值型。
关系运算:
关系表达式的运算结果为布尔值True 或 False
逻辑运算:Not(取反)And(与) Or(或),运算结果为布尔型(Boolean)True 或 False,逻辑运算符的优先级为:No > And > Or
日期运算符与日期表达式:
日期表达式是用日期运算符“+”或“-”将算式表达式、日期型常量、日期型变量、日期函数等连接起来的式子,如表达式“#2003/09/01# +30”的运算结果是“2003-10-1”;表达式“#2003/10/20# - #2003/10/10#”的运算结果为整数10
字符运算:
字符串连接符为“+”和“&”
“123” + “45” = “12345”
“123” & “45” = “12345”
123 + “45” = 168
“123” + 45 = 168
运算符的执行顺序:在VB中,当一个表达式中同时出现多种运算符时,运算次序由运算符的优先级决定,优先级高的运算符先运算,优先级相同的从左向右进行运算。不同性质的运算符优先级如下。
算术运算符 > 字符串运算符 > 关系运算符 > 逻辑运算符
④.常用语句
1.赋值语句的格式:变量名=表达式
把右边的数或表达式的值赋给左边的变量。
2.Print语句格式为:[对象名.] Print [表达式列表]
Print语句是VB中的输出语句,其功能是在指定的对象上输出结果,默认对象为当前窗体。
Print语句后面无表达式时,表示换行;Print显示项后面没有符号,表示显示完换行;Print语句显示项用分号分隔,表示后续显示项紧凑显示;Print语句显示项用逗号分隔,表示后续显示项分区显示,每区14个字符位。
3.注释语句格式:Rem注释内容,
当使用Rem语句时,必须单独写一行。使用“‘”的注释语句时,可以单独写一行,也可以跟在其它语句的后面。
4.结束语名有格式:End。
是VB的强制结束语句,
⑤.常用函数
1.交互函数。
(1)InputBox( )函数是一个输入函数。
格式:InputBox (提示[,标题][,默认值][,x坐标][,y坐标])
例:InputBox (“请输入一个数”)
(2)Msgbox( )函数主要来显示多种样式的消息对话框。
格式:Msgbox(提示信息[,按钮][,标题] )
例:Msgbox(““输入的用户名不正确”,16 ,“提示”)
2.数学函数。
注意:三角函数中的参数使用弧度数,Rnd函数返回[0,1]之间的一个随机实数,一般和Randomize为初始化随机数生成器。
3.字符串函数
3.程序设计的顺序结构
VB程序有三种基本结构,即顺序结构、选择结构和循环结构。顺序结构是三种结构中最基本的结构,在顺序结构中,算法的各个步骤是按语句的先后顺序执行。
4.程序设计的分支结构
(1)、If语句
1.单分支If格式为:
If <关系表达式> Then
语句块
End if
2.双分支If语句的格式:
If <关系表达式> Then
语句块1
Else
语句块2
End if
例:在Text1文本框中输入一个年号,判断它是否是闰年,并输出判断结果“是闰年”或“不是闰年”。
判断闰年的算法是:如果此年号能被400除尽,则它是闰年,否则如果它能被4整除而不能被100整除,则它是闰年,否则它不是闰年。打开文件“Z:\38\工程1.vbp”,完善程序后并保存。
Private Sub Command1_Click()
Dim year As Integer
year = Val(InputBox("请输入年号:"))
If ((year Mod 4 = 0) And (year Mod 100 <> 0))or (year Mod 400 = 0) Then
Print "是闰年"
Else
Print "不是闰年"
End If
End Sub
3.使用If语句的多层嵌套还可以实现程序的多分支结构,但程序结构较烦琐。
(2)、Select Case
Select Case语句格式:
Select Case 表达式
Case 表达式列表1
语句块1
Case表达式列表1
语句块2
……
Case表达式列表n
语句块 n
End Select
“表达式列表”通常是一组常量值,每个值确定一个分支。表达式列表可以使用下面的格式:(1)一组用逗号隔开的若干表达式,如Case 1,2,3表示1,2,3满足指定条件。
(2)表达式1 to 表达式2,如:Case 70 to 80这一取值范围满足指定条件。
(3)Is关系运算符表达式,如:Case Is>30 ,表示大于30满足指定条件。
例:输入不同的飞船速度后,判断出它的飞行状况。
在“神州九号载人飞船”飞行程序中,其飞行状况与飞行速度的关系如下表:
飞船速度(V)单位(km/s)飞行状况
7.91<=V<11.19 飞船绕地球似做匀速圆周运动
11.19<=V<16.67 飞船离开地球的控制 ,围绕太阳转
V>16.67 飞船挣脱太阳引力飞出太阳系
Private Sub Command1_Click()
Dim v As Single
v = Val(InputBox("请输入飞船速度的值"))
Select Case v
Case Is > 16.67
Label1.Caption = "飞船挣脱太阳引力飞出太阳系"
Case Is >=11.19
Label1.Caption = " 飞船离开地球的控制,围绕太阳转"
Case Is >=7.91
Label1.Caption = "飞船绕地球似做匀速圆周运动"
Case Else
Label1.Caption = " 输入数据错误!"
End Select
End Sub
5.程序设计的循环结构
1.For/Next循环语句
For/Next循环语句学用来解决已知循环次数的程序设计问题。
格式:
For 循环变量=初值 To 终值 [Step步长值]
<循环体>
Next [循环变量]
Next后的循环变量与For后的循环变量必须相同
例1:求s=1+2+3+4.....+100
Private Sub Form_Click()
Dim i As Integer
Dim sum As Integer
sum = 0
For i = 1 To 100 step 1
sum = sum + i ' 循环体
Next i
Print "sum="; sum
End Sub
循环变量的初值、终值、循环变量增量都是数值型。其中要重复执行的操作称为循环体,增量可正可负,如果没有设置Step,则增量的缺省值为1
a循环变量取初值;
b循环变量与终值比较,没有超过终值转3,否则循结束,接着执行循环语句的后继语句;
c执行一次循环体
d循环变量增加一个增量
e重复步骤2~4。
以上可以看出,For-Next循环变量是一种当型循环。说明
1、For语句与Next语句必须成对出现,而且它们当中的“循环变量”必须是同一个变量,如上例中均为I。
2、当循环变量为正时,循环变量超过终值,是指循环变量的值大于终值时;若为负,则是指循环变量的值小于终值。
例2:编写程序,使能打印下面所示的图案。
@
@@
@@@
@@@@
@@@@@
@@@@@@
程序:
Private Sub Form_Click()
Dim i As Integer
Dim j As Integer
For i = 1 To 6 ‘外循环打印6行
For j = 1 To i ‘内循环打印个数
Print “@”;