Chapter1 算法与程序设计
1.1计算机数据的编码
数值数据形式:2/8/10/16进制
编码:“0”“1”二进制表示数据,一般采用BCD码表示十进制数据
数值的表示:真值&机器数
真值:保留符号(+/-) 机器数:+/- 符号用0/1表示(0正1负)eg:-76的二进制真值数为-1001100,其机器数为11001100
二进制整数编码:无符号&带符号
eg:[1100 1000]2+[0100 0001]2=1 00001001(最高位1溢出)(储存长度不同编码后0也不一样)
符号化的二进制数位机器数,长度固定(如8,16,32,64位);没有符号化的数位真值
原码&反码&补码
原码eg:[+0]原=0000 0000 [-0]原=1000 0000 (正号用0表示,负号用1表示,数值不变)
反码eg:[+0]反=0000 0000 [-0]反=1111 1111(正数同源码,负数符号位为1数值按位取反)
补码eg:[+0]补=0000 0000 [-0]补=0000 0000(正数同源码,负数符号位为1数值按位取反+1)
正数原码,反码,补码不变按机器位数补0,负数三码符号位为1,其反码数值取反,其补码数值取反+1
二进制小数编码:定点数编码&浮点数编码(定点浮点指小数点位置是否变化区分)
定点数:定点整数,定点小数。增加存储长度可以提高小数的精度
浮点数:实数可以表示成一个纯小数和一个乘幂之积的形式,指数为阶码,小数为尾数N=±Mx2±Eeg0.0012346=0.12346x10-2
计算机英文字符编码
计算机使用最多的字符包括:十进制数字0-9;大小写字母A~Z/a~z;常用的运算符和标点符号
ASCII码(American Standard Code for Information Interchange 美国信息交换标准码)(7位二进制编码最高为为0,一共可对128种字符编码 )
注:0-48 a-96 A-65
第0~32号及第127号(共34个)是控制字符或通讯专用字符,如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BEL(振铃)等;通讯专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等第33~126号(共94个)是字符,其中第48~57号为0~9十个阿拉伯数字;65~90号为26个大写英文字母,97~122号为26个小写英文字母。
汉字字符编码:输入码 机内码 字形码
双字节字符集(DBCS)
亚洲常用文字符号约2万多个,DBCS用2个字节定义一个字符,2个字节编码值高于128为所在国家定义的编码。汉字处理过程:通过汉字外码输入,以汉字内码存储,以汉字字形码输出
1.2计算机问题解决思路及过程
开始-分析问题-设计算法-编写程序-运行程序验证结果-问题解决 优点:存储量大运算速度快 精度高 重复执行
算法:哟咻按步骤内求解某一问题所使用的一组定义明确的规则或步骤
算法实际上是程序化的解题过程,程序是使用计算机实现的算法而算法不一定需要计算机实现 特征:步骤性 程序性 有限性 明确性
算法表示:流程图(起止框 处理框 输入/出框 判断框 连接点 流程线)
基本框架:顺序结构 选择结构 控制结构:循环结构
1.3计算机语言的前世今生
低级语言时代:机器语言 0 1 指令数据地址 &计算机硬件关联
汇编语言:用助记符表示 add mov
面向过程的高级语言:第一个fortran 1957 第一个结构化语言ALGOL 最简单的BASIC
重点放在如何实现细节过程方面,将数据和函数分开 形式:主模块+子模块 eg:c main()+子函数 特点:自上而下,逐步求精-功能分解 但效率低,手工作坊式的编程
面向对象的语言 设计方法:使用面向对象的观点来描述模仿并处理现实问题 要求:高度概括、分类和抽象 目的:实现软件设计的产业化 eg:Java c# c++ VB.NET
Chapter2 VB.NET程序设计入门
2.1面向对象基本概念
对象是类的实例,具有类的属性和方法;类是创建对象实例的模板,是同种对象的集合和抽象
vb.net中类分为:由系统设计,直接供用户使用如窗体、控件等;用户自己定义的类
对象三要素:方法(对象行为和功能)属性(对象的特征)事件(施加在对象上的动作)
对象的属性(Property)存放对象的特征数据,每个对象有一组特定的属性 名字+相关的值
属性值=对象名.属性名eg:IbiDisplay.BackColor=Color.Pink
对象大部分属性可读写若属性只能在设计阶段设置而在程序运行阶段不可改变可称只读属性
方法Method:.对象名.方法名([参数列表]) eg:txtFirst.Foucs()
事件event:外界施加在对象上的动作,由系统预先设置并能被对象相应eg:Click/DoubleClick/GotFocus/KeyPress
事件过程:由用户编写的响应事件的代码(程序)
Sub 对象名_事件名([参数列表]) Handles 对象名.事件名
..事件过程代码
End Sub
2.2vb.net创建步骤
续行:空格+“_”
注释语句 "Rem"或" ' "
标识符命名规则:字母汉字下划线开头,跟字母汉字数字下划线(无其他字符/空格),下划线开头必须包含至少一个字母或数字,不能使用关键字 <见名知义>
语法格式:[]-可选项 <>-必选项 |-二选一 [,...]-项逗号隔开
eg:变量dim语句语法格式:
Dim <变量名[,...] As 类型>[,...] eg:Dim a,b As Integer,c as String
Dim <变量名[数据类型符]>[,..] eg:Dim a%,b%,c$
Dim <变量名[,...] As 类型>[,..],<变量名[数据类型符]>[,...] eg:Dim a,b As Integer,c$
Chapter3 vb.net可视化编程
3.1窗体与基本控件
窗体:可视化程序设计的基础界面,作为其它控件对象的载体或容器
控件:添加到窗体上的对象,每种类型的控件都有一套属性、方法和事件实现某种特定的功能
窗体和控件都是对象,都是类的实例
对象的通用属性:
Name属性:对象的名称 只读属性
Text属性:文本
ForeColor属性:前景色 正文颜色 eg:Form.Text="1"
BackColor属性:背景色 eg:Label.BackColor=Color.Pink
Font属性:文本字体格式 eg:TextBox1.Font=New Font("宋体",9,FontStyle.Bold)
Size属性:Width Height eg:Me.Size=New Size(300,200)等价于Me.Width=300:Me.Height=200
Location属性:Left Top eg:PictureBox1.Location=New Point(100,50)等价PictureBox1.Left=100:PictureBox1.Top=50
Visible属性:布尔型值,决定控件是否可见 eg:Label1.Visible=True
Enabled属性:布尔型值,决定控件是否可操作 eg:Button2.Enabled=False
窗体(Form):容纳其他对象的容器类对象
文本框控件TextBox
3.2可视化界面设计
可视化visual-程序设计方法,程序设计人员利用软件所提供的各种控件实现应用程序的各种界面为可视化界面设计
优点:少量代码完成设计,提高工作效率
Chapter4 vb.net数据类型
数据类型:一个值的集合和加在这个值集上的一组操作的总称
常量:程序执行过程不变的量,vb.net中分为直接常量(真值eg整型、实型、字符串常量)和符号常量(系统符号常量,自定义常量)
整型常量(Byte Short Integer Long)[+|-][前缀]数字序列[后缀]
前缀&Q/&H缺为十进制 后缀% &缺为Integer类型数 eg:Integer类型整数:12\&O12% Long类型整数-23&/&O12&
实型常量(Single Double)[+|-][数字序列1][数字序列2][e|E[+|-]数字序列3][后缀]
后缀 !(Single) #(Double)缺为Double类型数
小数形式(可带+/-)和指数形式(eg:1.25x105 -->1.25E+5)
字符型(Char)“一个字符” 字符串型(String)“0-n个字符”
日期型(Date)#日期[时间]# mm/dd/yy hh:mm[:ss] [AM|PM] eg:#10/23/2018# #12/25/2018 10:30 AM#
布尔型(Boolean)True False (vb中True为-1,False为0)
符号常量
系统常量vbCrlf 回车换行 Color.Red FormWindowState.Normal-窗体状态
自定义常量 常量表达式=Const 符号常量名[As 数据类型] 符号常量名即标识符
eg:Const PI (As Single)=3.14159! Const S1$="title:"&vbCrlf&“提示” Const P2=PI*2+30
变量:执行过程中值改变的量 是计算机的内存单元,是一个存放数据的容器 不同类型变量存放不同类型数据
变量由3个重要属性,三要素:变量名 变量类型 变量值
变量的申明(定义)
变量的定义格式:Dim 变量名[,..] ... As 数据类型名 Dim 变量名[数据类型符][,变量名[数据类型符]]...
数据类型符:% & !# @ $
变量的初始化:指在定义变量的同时给变量赋初值的过程 隐式初始化 显示初始化
vb.net 隐式初始化:整形变量-0 实型变量-0.0 字符串变量-空 布尔变量-false
eg:Dim s as string/boolean ’s初值为空串/‘y初值为False
显示初始化:定义变量的同时显示给变量赋初值
Dim 变量名 As 数据类型名=表达式 或 Dim 变量名 [数据类型符]=表达式 eg:Dim s$="不知节制的大胖子" Dim x as integer=2
4.4函数
内部函数(内置函数,标准函数)系统已定义直接使用
函数三要素:函数名 参数表(个数 类型)函数值的类型
格式:类名/结构名/命名空间名.函数名([参数表]) eg:Math.Sin(x)
Imports 类名/结构名/命名空间名 eg:Imports System.Math/ Public Class /Form1/ .../ End Class 旗下该命名空间中所有函数可直接使用egSin(x)
数学函数 一般需引入类名System.Math
Sin(x)/Cos(x)/Tan(x)/Atan(x)/Abs(x)/Sqrt(x)/Sign(x)/Exp(x)/Log(x)-Log10(x)/Round(x,n)
注:Atan(x)-反正切函数函数值为弧度(sin(x)..正弦函数参数为弧度)Sign(x)=1/0/-1(x>/=/<0)符号函数 Exp(x)-指数函数ex Log(x)-lnx(自然对数)Log10x-lgx(10为底的常用对数) Round(x,n)-四舍五入函数保留n位小数,第n+1位小数四舍五入,省略则保留整数
eg:Sin(30*3.14/180)结果为0.499770... Atan(1)结果为0.7853981... --x以弧度表示 度*3.14/180=弧度
Abs(-11)=11 --x返回值|x| Sign(-23)=-1 Exp(-2)=0.13533528... Log(10)=2.302585.. Log10(10)=1--对数x>0 Round(7
389056,2)=7.39 Round(7.389056)=7
其他:
lnt(x)--取不超过x的最大值 如Int(-3.2)=-4
Fix(x)--截尾(去掉小数)如Fix(-3.2)=-3
Rnd[(x)]--随机函数 x>0/缺省--[0,1) x=0--和前面最近产生的随机小数相同的数 x<0--每一个负数x对应一个随机小数
Randomize() [a,b]之间的随机整数--Int(Rnd()*(b-a+1))+a
字符串函数
引入命名空间名 Microsoft.VisualBasic,有些函数只能使用前缀如Left函数:Microsoft.VisualBasic.Left(......)
常用字符串函数:Trim(s)/Ltrim(s)/Rtrim(s)/Left(s,n)/Right(s,n)/MId(s,n[,m])/Lens(s)/Instr([n,]s1,s2)/Strdup(n,s)/Space(n)/LCase(s)/UCase(s)
Ltrim(s)/Rtrim(s)/Trim(s)--去掉字符串首尾空格函数 Left(s,n)/Right(s,n)/Mid(s,n[,m])---子字符串函数
Len(s)---长度函数 Instr([n,]s1,s2)---查找函数 Strdup(n,s)-产生相同字符构成的字符串函数 Space(n)---返回n个空格
LCase(s)/UCase(s)---大小写字母转换函数
字符-字符串转换函数 Asc(s)|Chr(n)|Str(n)|Val(s)--公共函数无须加前缀
eg:Asc(Char(65))=65 Asc(“ABCD”)=65 str(123)=" 123"<正数转换为字符串前有空格0> Val(“12abc34”)=12
MsgBox函数:消息框函数 MsgBox("提示串"[,[形状][,"标题"]]) 形状:基本样式[+图标][+默认按钮]
形状样式:vbOkOnly/vbOkCancel/vbAbortRetrylgnore/vbYesNoCancel/vbYesNo/vbRetryCancel
图标 vbCritical-16/vbQuestion-32/vbExclamation-48/vbInformation-64
默认按钮 vbDefaultButtion1-0/vbDefaultButton2-256/vbDefaultButton3-512
Chapter5表达式与赋值
运算符:算术|关系 |逻辑|字符串运算符
表达式[操作数][运算符 操作数] '操作数可为常量 变量 函数 表达式(对应算术分为算术..表达式)
算术运算符 ^ - * / \ Mod + -
\ 和Mod数若不是整数则四舍五入转化为整数:5/2=2.5 5\2=2 2Mod3=2
算术表达式是由算术运算符将算术常量、算术变量、算术函数和算术表达式连起来的式子,其值为一个数值
关系运算符:<|>|=|<=|>=|<> (<>不等于,优先级相同)
数值型按大小比较,字符串按ASCII码值比较,日期型转换为yyyymmdd的8位整数比较,汉字以机内码为序比较(拼音比较)eg"张">"李"
关系表达式由关系运算符将常量、变量、函数和表达式连起来的式子,其值为布尔值eg:"圆脸大胖子"<"大胖子" False
逻辑运算符 Not And Or (优先级 非与或)
逻辑表达式由逻辑运算符将逻辑常量、逻辑变量、逻辑函数、关系表达式、逻辑表达式连起来的式子,其值为布尔值
字符串运算符 & 其作用是将两个字符串连接成一个字符串
字符串表达式由字符串运算符将常量、变量、函数和表达式连起来的式子,其值为一个字符串
各类运算符运算优先级:()>算术>字符串>关系>逻辑
表达式的类型为表达式结果的类型,操作数的级别所能表示的数范围越大级别越高
数据类型级别高低:Byte 赋值运算符:简单= 复合赋值运算符op= (op:+ - * / \ &) Chapter6数据的分支处理 6.1单分支结构 单行形式:If 表达式Then 语句块 多行形式:If表达式 Then 语句块 End If 6.2双分支结构 单行形式:If 表达式 Then 语句块1 Else 语句块2 多行形式:If 表达式 Then 语句块1 Else 语句块2 End If IIF函数:IIf(表达式,TruePart,FalsePart) 6.3多分支结构 If 表达式 Then 语句块1 ElseIf 语句块2 Then 语句块n [Else 语句块n+1] End If 6.4IF语句嵌套 If 表达式1 Then If表达式2 Then...End If...End If Chapter7 数据的循环处理 7.1For...Next语句 计数型循环(循环次数已知)For...Next循环 条件性循环(循环次数未知)Do...Loop For 循环控制变量=初值 To终值 [Step步长] 语句块 [Exit For] 语句块 Next [循环控制变量] 循环控制变量为数值型变量控制循环的次数;初值、终值、步长均为数值型表达式;步长可为正负数,为1可省略;循环次数=int((终值-初值)/步长) Do [{While|Until}条件] 语句块 [Exit Do][语句块] Loop 循环次数>=0先做后判断 Do 语句块[Exit Do][语句块] Loop[{While|Until}条件] 循环次数>=1先判断后做 Chapter8 多重循环及综合应用 多重循环 斐波那契数列an=an-1+an-2 Chapter9数组 三要素:数组名 数组元素类型 数组维度 维:数组元素排列的方向 维数:维的数目,最多32维 =2为二维数组 维度:数组中某一维的大小(水平/垂直方向)排列多少数据元素 数组的大小:意义:数组元素的总个数(每一个维度的连乘积) 数组的类型:数组元素的类型+数组的维数 一维数组:先声明后使用 Array常用方法:IndexOf-查找数据 Sort-排序 Reverse-数组元素的倒置 Resize-重设数组的大小 Copy-数组元素的拷贝 Clear-数组元素的清理 零长度数组:不包含任何数组元素的数组 arrAll---可指向任意类型的数组对象 一维数组的专用处理函数:在vb.net中提供Split和Join两个专门对一维字符串型数组进行处理的函数 Split函数 public Shared Function Split(_ Expression As String,_ Delimiter As String,_ )As String() 功能:Delimiter指定分隔符,Expression指定的字符串拆分成一系列子字符串,并将这些子字符串组成一个一维String()数组返回 二维数组 11过程 function\sub 参数传递:传递机制和传递顺序 传递机制包括值传递和地址传递,传递顺序包括按形式参数的顺序传递(按序传递ByVal)和按形式参数的名字传递(按名传递Byref) Chapter12 用户界面设计 窗体控件布局,交互信息,控件风格,字体,界面配色 列表框常用属性:Items/SelectedIndex/Text/Items.Count 常用事件:Click/DoubleClick/SelectedIndexChanged 常用方法:Items.Add /Items.Insert/Items.Remove/Items.RemoveAt/Items.Clear 滚动条ScrollBar:垂直滚动条 水平滚动条 计时器Timer:定位器控件 ,在程序运行阶段,计时器控件不可见 图片框PictureBox 图片框名.Image=Image.FromFile("FilePath")