首页 > 试题

dim什么意思

更新时间:2022-12-03 21:57:21 阅读: 评论:0

防城中学录取分数线-絮絮叨叨造句


2022年12月3日发(作者:独一无二的游戏名字)

从零开始学VB献给想学习VB的朋友们首先必须说明的是,如果您希望通过学习本文,

学习vb成为高手,那您大可不必看下去了,因为只是不可能的,vb入门容易,深入很难,

需要计算机原理的知识,需要汇编的功底,需要c的功底,需要对底层的了解„„

本文献给渴望学习编程的朋友们,本文希望能通过对vb的学习,使您对什么是编程有一个初

步的了解,使您迈出程序设计的第一步

学习编程有很多条路,您可以先学习微机原理,汇编,然后学习高级语言,这样可以对学习

高级语言有不小的帮助,也可以先学习vb这样的比较容易上手的语言,但不论哪条路,都是

充满艰辛的,如果您希望短期内成为高手,为了向别人炫耀而学习编程,那您是不会成功的。

好了,下面我们开始学习,第一步,打开vb(),弹出的新建工程,我们选择默认得“标准

exe”,点打开,(对于vb的环境,我会在需要时介绍,但不会完全讲解,您可以没事的时候

四处点一点,看一看,自己探索一下)

您会看到一个窗体,里面有个窗体,那就是我们的程序啦,左边是工具栏,按钮,文本框什

么地就在那,向画图一样画在窗体上好了,我们的第一个程序只要一个按钮,一个文本框

在画好的按钮上双击,我们就打开了代码窗口,vb已经自动生成了处理按钮单击的事件的代

码框架

我们输入一下代码(代码对于初学有难度,很容易晕,做好思想准备)

哦,忘了说了,代码的用途是:枚举10000以内自然数中的质数

PrivateSubCommand1_Click()

DimArr()AsDouble

DimZhishuAsBoolean

DimiAsDouble

DimCurNumAsDouble

DimjAsDouble

DimArrCountAsDouble

DimOutArrAsString

Zhishu=True

ReDimArr(1To1)

Arr(1)=2

ArrCount=1

Fori=3To10000Step2

CurNum=i

Forj=1ToArrCount

IfArr(j)>Sqr(CurNum)ThenExitFor

IfCurNumModArr(j)=0Then

Zhishu=Fal

ExitFor

EndIf

Next

IfZhishuThen

ArrCount=ArrCount+1

ReDimPrerveArr(1ToArrCount)

Arr(ArrCount)=CurNum

OutArr=OutArr+Str(CurNum)+vbCrLf

El

Zhishu=True

EndIf

Next

=OutArr

EndSub

代码什么意思?下面一点点讲解

DimArr()AsDouble

DimZhishuAsBoolean

DimiAsDouble

DimCurNumAsDouble

DimjAsDouble

DimArrCountAsDouble

DimOutArrAsString

(插入一句:您可能已经发现vb的代码窗口里的滚动条是不支持鼠标滚轮的,请下载附件里

的东东放到系统目录(c:windowssystem32),这是一个使代码窗口支持鼠标滚轮的add-in)

哦,那个,上面的几句都是Dim....,dim语句是声明语句用来声明变量,变量在程序运行

时是可以改变得,对变量的复制直接变量名=值或表达式,表达式就像(1+(5*6)*3-8)这样

的东西,当然可能更复杂(几乎肯定比这个复杂)

声明这些变量我们是有用的(废话!),根据不同用途,变量被声明为不同的类型,As...就是

告诉vb声明的变量的类型,Double是双精度值,String是字符串

其他类型:

long,长整形(顾名思义,保存整数啦)

Integer,整型

byte,字节

single,单精度

„„

变量是什么?我解释不清,要解释清也不是三言两语的事,自己体会一下吧,保存数值或字

符串,参与运算,用做标记位等用途吧

Zhishu=True

Arr(1)=2

ArrCount=1

这句就是赋值语句,其中Zhishu变量类型为boolean(前面怎么没写?),这种类型只有两

钟取值True和Fal,其实true就是非零,fal就是零,当然那是后话

Arr()是个变量数组,关于变量数组和下面的具体运算,请听下回分解()

从零开始学VB献给想学习VB的朋友们第二篇变量、声明、数组

本篇会加入一些vb入门之后需要了解的东东,看不懂不要紧,能记住尽量记住,记不住起码

在心里要有个印象,学到后面可以翻回来看看。

vb中的数据类型标示符占用空间(字节)范围

boolean(布尔型)无2true或fal

byte(字节型)无10~255

integer(整型)%2-32768~32767

long(长整型)&4-2147473648~2147483647

single(单精度型)!4-3.402823E+38~1.401298E+45和

+1.401298E-45~+3.402823E+38

double(双精度型)#8-1.797693134862315D+308~-4.94066D+324和

+4.94066D-324~+1.767693134862315D+308

currency(货币型)@8-922337203685477.5808~+922337203685477.5807

date(日期型)无8100年1月1日~9999年12月31日

string(字符串)$10+串长(变长)串长(定长)0~约20亿(变长)1~约65400(定

长)

object(对象型)无4任何对象的引用

variant(变体)无22+串长(字符)16(数值)同变长string或同double

关于string类型:

string类型分为变长和定长两种,变长声明为dimMyStrasstring,定长声明为dimMyStr2

asstring*10,变长字符串长度可变,定长不可变,当MyStr2="abc"时,由于"abc"只有3

位,vb将用空格补足剩下的7位,当MyStr2="abcdefghijklmnopq"时,由于超出了10位,

10位后的将被截去

stirng直接的连接使用+或&,建议使用&连接字符串,这样可以使编码更易读

MyStr="abc"&Str2&"fff"其中Str2="kkk"则连接后MyStr为"abckkkfff"

vbcrlf是一个常用的预定义常量,用于换行

高级:string类型用于以A结尾api作参数传递时,vb会自动将unicode的字符串(vb中

的字符串都是unicode)转换为ansi,stirng类型变量作为参数传递给api时,实际传递的

是string的指针,所以byvalStr1asstring这样的声明也可以Str1有api写回的返回值。

关于变量名:

必须字母开头,必须中间没有空格,不能使用关键字,不分大小写,但建议采用易读的方式:

STARTTIME或starttime就不如StartTime易读

通常在模块级变量前加m,全局变量前加g„„

关于声明

dim变量as类型局部变量

private变量as类型私有变量

public变量as类型全局变量

static变量as类型静态变量

vb中并不要求一定要进行变量声明,当使用未声明的变量时,vb将其声明为变体,由于变体

占用较多的内存,以及处理变体比处理其他类型变费时,所以强烈建议变量使用前声明,同时

这样也可以防止很多错误的发生

工具菜单-选项-要求变量声明选中,将在代码通用部分加入OptionExplicit,这将强制

变量声明,使用未声明变量将报错,建议选中

声明和使用变量时as类型和标识符不能冲突,例如dimVar$aslong是不行的,同样dim

Varaslong使用时在Var后面加了不是&的标示符都是不行的

dima,b,caslong=dimaasvariant,basvariant,caslong,也就是说只有c是long

型,a和b都是变体,这与其他语言有区别

dima=dimaasvariant未指明类型将被声明为变体

声明后string类型初值为空串"",数值类型为0,boolean为fal(也是0嘛)

数组:

dim数组名([lowerto]upper,[[lowerto]upper])[astype]

[]内为可选内容,lower默认为0,astype不指定则为变体

一维数组

dimArr(10)aslong

包括

Arr(0),arr(1),Arr(2),Arr(3),Arr(4),Arr(5),Arr(6),Arr(7),Arr(8),Arr(9),Arr(10)

11个元素

二维数组

dimArr2(10,20)aslong

动态数组

dimArr3()aslong

使用redim重新分配内存

redimArr3(5)aslong

可以在redim后面加上prerve关键字,这样可以保护已有数据,比如

dimMyArr()aslong

redimMyArr(2)aslong

MyArr(1)=1

MyArr(2)=2

redimMyArr(5)aslong

这时MyArr(1),MyArr(2)的值就都没了,redimprerveMyArr(5)aslong,就可以保护这

些数据

但是如果数组空间变小了,被删的数据就丢了,

只有最后一维可以修改上限

由于数组在内存中是连续存放的,所以在给api传数组时可以byrefArr(0)这样把数组第一

个元素的地址传过去。

当数据类型相同,左边数组为动态数组时可以

NewArr=OldArr这样copy数组(方便哈)

好了,我们看看那个枚举素数的程序

DimArr()AsDouble

DimZhishuAsBoolean

DimiAsDouble

DimCurNumAsDouble

DimjAsDouble

DimArrCountAsDouble

DimOutArrAsString

Zhishu=True

ReDimArr(1To1)

Arr(1)=2

ArrCount=1

这几句应该都明白了吧

i和j通常用于循环计数器,当然你也可以用别的

之所以我们要定义一个Arr()来存放找到的质数,而不是把找到的质数仅仅放在OutArr里,

因为对于任意给定的数n,如果它不能被小于n^0.5的任一个质数整除,那么它就是质数,

我们不必把所有小于n的数都试一遍

从零开始学VB献给想学习VB的朋友们第三篇语句

注释语句:'和rem后的语句为注释,vb不会处理这些语句

条件:

if条件then

语句

elif条件then

语句

el

语句

endif

其中elif和el为可选,也就是说if语句还可以有一下格式:

if条件then语句

if条件then

语句

endif

if条件then

语句

el

语句

endif

if语句很好理解,如果条件成立,执行then后面的语句,如果不成立,执行el后面的语

句,elif只是把条件不成立之后又进行了一次判断,道理是一样的

lectca语句

lectca表达式

ca条件1

语句1

ca条件2

语句3

„„

cael

语句

endlect

如过明白了if语句那么可以这样理解lectca语句

if表达式=条件1then

语句1

elif表达式=条件2then

语句2

„„

el

语句

endif

ca后面的表达式可以有很多,用,分开

比如

lectcaNUm

ca2,4,6,8

print"偶数"

ca1,3,5,7,9

print"奇数"

endlect

循环:

for计数器=初值to终值step步长

语句

next

比如计算1加到100

dimiaslong

dimsumaslong

fori=1to100

sum=sum+i

next

i为计数器,sum结果为5050

do...loop

还比如1加到100

dimiaslong

dimsumaslong

i=1

dowhilei<=100

sum=sum+i

i=i+1

loop

意思是while后面的表达式成立则执行循环,循环由do和loop包围起来,由于do...loop

语句没有计数器,所以我们要自己让i每循环一次加1,while可以写在do后面,也可以写在

loop后面

不同就是做判断的时间不同,写在loop后面那么执行一遍循环中的语句再检查是否表达式成

立,do后面就先检查,while的地方可以写until,作用和while相反:while表示表达式成

立则执行循环,until表示表达式不成立则执行循环。

exit语句

可以exitfor,exitdo,表示不管三七二十一退出循环,执行后面的东东

下面看第一篇里的程序:

Fori=3To10000Step2

CurNum=i

Forj=1ToArrCount

IfArr(j)>Sqr(CurNum)ThenExitFor

IfCurNumModArr(j)=0Then

Zhishu=Fal

ExitFor

EndIf

Next

IfZhishuThen

ArrCount=ArrCount+1

ReDimPrerveArr(1ToArrCount)

Arr(ArrCount)=CurNum

OutArr=OutArr+Str(CurNum)+vbCrLf

El

Zhishu=True

EndIf

Next

先看最外层,是一个for循环计数器从3开始,每次加2,直到10000,为什么每次加2?因为

除了2以外所有的质数都是奇数,好了,最外面的循环把3到10000的奇数挨个过一遍,我

们要对这些奇数进行检验,看是不是质数,方法是让这个奇数除以所有小于这个奇数算术平

方根的质数,如果都不能整除,那么这个奇数就是质数了,CurNum=i,CurNum是我们当前

处理的奇数

下面又有一个循环,计数器j从1开始到ArrCount每次加1,ArrCount是数组Arr()的元素

个数,也就是我们已经找到的质数的个数

IfArr(j)>Sqr(CurNum)ThenExitFor

Sqr(CurNum)是求CurNum的算术平方根,Sqr是一个函数,这个以后说

所以这个if语句就是说如果Arr(j)找到的质数的第j个如果大于CurNum的算术平方根了,

那么退出循环,执行后面(也就是next后面的语句)

IfCurNumModArr(j)=0Then

Zhishu=Fal

ExitFor

EndIf

Mod嘛,两数相除取余数,9Mod2=1,10mod3=1

如果一个数mod另一个数等于0那就是整除了,我们这里让CurNum除找到的质数的第j个(j

一次加1,就是一次除已经找到的质数)整除了的话那这个curnum就不是质数,让Zhishu

=fal,然后退出循环

IfZhishuThen

ArrCount=ArrCount+1

ReDimPrerveArr(1ToArrCount)

Arr(ArrCount)=CurNum

OutArr=OutArr+Str(CurNum)+vbCrLf

El

Zhishu=True

EndIf

这里判断Zhishu的值,如果为true,执行then后面的语句,为fal,执行el后面的语

句,

如果为true,我们又发现了一个质数,ArrCount加1,数组重新分配内存,多一个元素的地

方,同时保护已有数据,然后把新找到的质数加到数组里,

OutArr=OutArr+Str(CurNum)+vbCrLf表示在outarr字符串后面连上新的质数,外加

一个换行符

Str()用于把数值转换为字符串,函数后面说

如果为fal,这个数不是质数,把zhishu标记置为true

可能有点乱,zhishu这个标记默认为true,在最外层的循环之前就执行了Zhishu=True,

然后我们一直除阿除阿除阿,整除了,不是质数,zhishu=fal,执行后面的判断,除到所

有比curnum的算术平方根小的质数都除过了,还没整除,是质数,zhishu标记不用动,退

出循环,执行判断

本文发布于:2022-12-03 21:57:21,感谢您对本站的认可!

本文链接:http://www.wtabcd.cn/fanwen/fan/88/46949.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

上一篇:1吨水
下一篇:孔的组词
标签:dim什么意思
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图