如何用VBS写一个判断大小的程序?(谢谢回答)
一本在黑客界引起轰动的菜鸟教材——跟我学编程系列。
跟我学编程系列。
Memento mori在原黑白新区的帖子!贴出来给大家学习!!!
发现大部分黑白友都不会编程,这不是一件好事,所以这次我写了一个简单的编程教程,讲了VBScript。主要是针对新手,懂编程的朋友不要浪费时间。如果你想接触下面的VBScript,还是可以的,但是既然你有编程基础,直接找些参考书看更快。
VBScript是什么?VBScript的全称是Microsoft Visual BASIC Script Editon。正如其字面信息所揭示的,VBS(VBScript的进一步缩写)是一种基于Visual Basic的脚本语言。让我进一步解释一下。Microsoft Visual Basic是微软公司生产的一套可视化编程工具。语法基于Basic。脚本语言,即源代码不编译成二进制文件,直接由宿主解释执行。简单来说,你写的程序不需要编译成。exe,而是直接发送。vbs给用户,用户可以执行它。
我知道新手最关心的是使用什么工具来开发VBS程序。答案是:记事本。我没开玩笑。事实上,任何一种文本编辑器都可以用来开发VBS,但记事本是系统自带的,相对容易找到。尽管如此,我还是建议你下载一个专业的文本编辑器,因为这些工具可以提供“语法高亮”之类的功能,开发起来更方便,用哪个都行。
好了,先写个VBScript程序预热一下。
REM类型和回声你的名字。
使用InputBox和Msgbox函数。
模糊名称,消息
Msg= "请输入您的姓名:"
Name=Inputbox(消息,“名称”)
Msgbox(名称)
将上述程序列表输入记事本,然后将其保存为扩展名为的文件。vbs(在“保存类型”中选择“所有文件”)。然后双击运行,观察运行结果。注意:请自行输入节目单,不要抄袭-& gt;糊!
我来解释一下这个程序。第一行和第二行分别以“REM”语句和“'”开头。这两个东西的作用是一样的,说明这一行是评论行,也就是说这两行除了说明这个程序的功能和版权信息之外什么都不做。注释行是程序最重要的部分之一。虽然不是必须的,但是让别人自己看源代码,自己分析源代码,是非常有益的。
Dim用于声明变量。在VBS,变量类型并没有那么重要,也就是说,VBS会帮你自动识别变量类型,变量在使用前不必声明,程序会动态分配变量空间。在vbs,你不用考虑名字存储的是整数还是小数(学名是“浮点数”),也不用考虑是不是字符串(一串字符,比如“Hello World”),VBS会自动帮你。所以第三句可以删掉,效果不会变,但是我强烈反对。变量的基本原理是:先声明,再使用。变量名以字母开头,可以使用下划线和数字,但不能使用VBS定义的词,如dim或纯数字。
下一行叫“赋值”,“=”是赋值符号,不是数学上的等号,虽然看起来一样。这是一个正统的认识,你应该明白这没有错。赋值号的左边是变量,右边是要赋给变量的值。赋值后,变量msg相当于程序中的字符串“请输入你的名字:”但当msg再次被复制时,原来的值就会消失。不仅是字符串,其他任何变量都是这样赋值的,比如:a=2,b=12.222等等。
再往下,Inputbox和Msgbox是VBS的内置函数。函数相当于一个有输入(参数)和输出(返回值)的“黑匣子”。你不需要知道函数是如何工作的,只需要知道函数能做什么,我们就可以定义自己的函数,但那要等到以后了。现在我们只需要知道一个函数可能有也可能没有返回值。可以有参数,也可以没有。例如,InputBox是一个具有返回值的函数。我们使用赋值号左边的变量来“连接”inputbox的返回值——也就是您输入的内容。Inputbox右边的括号里是参数列表,每个参数之间用“,”分隔,每个参数有不同的功能。例如,第一个参数将显示在提示中。我们将变量msg作为第一个参数传递给Inputbox函数,msg=“请输入您的姓名:”这样我们就会在对话框的提示栏看到“请输入您的姓名:”了。第二个参数是对话框的标题,我们用一个直接的量(学名“常量”,这里是“字符串常量”)传递给函数。当然也可以传递变量。Inputbox有许多参数。比如你在“名字”后面加一个“,”然后输入一个随机的字符串(用双引号括起来的字符串称为字符串),运行它看结果。你会发现用于输入的文本框有一个默认值,是第三个参数的作用。
Msgbox函数用于输出,VBS没有专门的输出函数(BASIC中是Print,C中是printf),所以我们只能用对话框观察输出结果。Msgbox的必要参数只有一个,就是要输出的内容。在这种情况下,我们不需要关注Msgbox的返回值。以后再讨论msgbox和Inputbox,今天只是热身,就这样。
关键点:
1)注释行(以REM或'开头)在程序中没有任何作用,但是可以让别人更容易理解你的程序。
2)变量就像一个盒子,或者一个代码,可以代表你想代表的东西。变量赋值使用“=”。
3)用“”包裹的字符称为“字符串”
4)函数就像一个有参数和返回值的“黑匣子”。可以用“=”左边的变量捕捉返回值。
5) Inputbox函数弹出输入对话框,Msgbox用于输出。
家庭作业:
1)测试Inputbox的第三个参数。
2)写一个程序输出你的年龄。
3)写一个程序,输入三次。分别输入你和你父母的名字(需要提示),输出三次。
第二条:
没想到第一次作业居然有人不会做。
看来我们得非常非常细致了。好了,今天我们就来讲讲各种“量”和基本运算。
先说常数。这个比较简单。
什么是常数?常数是一个值不能改变的量。
常数有两种:一是自然常数。之所以这样叫,是因为它们本身就是常数。如何改变21的值?他永远是21,不可能变成46。
如果在程序中使用“21=46”,这样的语句会导致错误。同样,字符串是常数(还记得字符串吗?“你好世界”就是一个例子。如果用“Hello World”=“Bye”这样的句子,也会造成错误。能不能多举几个自然常数的例子?
第二,我们定义自己的常数。该数量也使用代码名称,并为其分配值。但变量的不同之处在于,它们在定义时就被赋予了值,并且以后不能更改。如果我们试图改变它们,我们将导致一个错误。定义变量,我们使用关键字“const”(关键字是指系统已经定义了具有特殊功能的词,不能用作变量名或常量名)。格式为:const。
例如:
常数PI=3.1415926
Const NAME= "memento mori "
这样,我们就定义了两个常量,PI和NAME。一般来说,常数的名字都是大写的,但是你可以不要,随你的便。将程序中一些不需要更改的值定义为常量是一个好习惯,可以防止不必要的意外。另外,使用自定义常量也可以减少你的工作量。例如:
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
msgbox(“Hello World”)
这个程序输出Hello World五次。如果你想把输出改成拜拜,你必须修改所有的程序。当然,你可以手动修改它们五次,但是如果你想输出1000次呢?常数可以为我们解决这个问题:
const hw="Hello World "
msgbox(硬件)
msgbox(硬件)
msgbox(硬件)
msgbox(硬件)
msgbox(硬件)
所以当你想修改输出时,只需修改hw的值即可。
好了,现在我们来看编程的第一个重要“基石”:变量。我觉得解释变量最好的方法就是“盒子”。变量就像一个盒子,只能装一个东西。当你想把其他东西放进去的时候,你必须把原来的东西拿出来。这个“盒子”有一个名字。当你在一个程序中使用变量时,系统会打开盒子取出里面的内容,让它们参与处理。不是盒子。有些语言非常依赖盒子里的东西,这样我们就能找到合适的“盒子”(比如C语言),但是VBS给我提供了一个可以自动伸缩的“魔盒”,我们就不用在意里面有什么了。
VBS将自动调整框的大小。例如:
尺寸a1,a2,a3
a1=14
a2=12.23
a3= "你好"
而不是像C语言那样麻烦,或者VB的一个正式语句(VB可以声明也可以不声明):
int a 1;Dim a1为整数
浮动a2;将a2标注为双精度
char * a3将a3标注为strnig
a 1 = 14;a1=14
a2 = 12.23;a2=12.23
a3= "你好";a3= "你好"
良好的...那是题外话...
变量有什么用?哇,那很有用。最简单的就是你不能在程序运行的时候确定变量的值。比如上一课我们编了一个程序输入名字,你不能确定InputBox返回什么(还记得Inputbox的返回值吗?就是你输入的内容),所以你应付不了各种情况,但是我们用“盒子”的名字把用户的名字放上去,使用的时候只需要知道盒子的名字,系统就会打开取出里面的东西。再举一个例子,我们写一个程序来计算一个矩形的面积,比如这个程序要发给小学生:
暗淡a,b,s
a=15
b=12
s=a*b
msgbox
这样就可以求出一个长15,宽12的长方形的面积。是不是很简单?当然,这个程序也可以这样写:
昏暗的s
s=15*12
msgbox
看起来程序短了很多,节省内存,但是不鼓励。为什么?请看下面。
现在,我们的程序必须看起来像一个点。谁的程序要别人修改才能用?
所以,我们必须接受用户输入,记得吗?InputBox函数。
修订后的程序如下:
暗淡a,b,s
A=inputbox("请输入矩形的长度:")
B=inputbox("请输入矩形的宽度:")
s=a*b
msgbox
好了,有了这个修改,无论用户输入什么数据,我们都可以计算出矩形的面积。如果用s=15*12可以改吗?当然不是。
我想你已经发现vbs中的数学计算和真正的算术没什么区别。+、-、*、/、()、[]、{}的用法都一样,例如:
dim ans
ans = 12+32/4+[(23-10)* 2]
msgbox(ans)
四则运算法则在编程中同样有效,你可以在编程中重拾小学的乐趣(你讨厌数学吗?那就别学计算机了。
编程中一个有趣的运算符是“mod”。这种运算符称为“余数运算符”,即求除法的余数,例如
暗淡的
a=16 mod 5
你知道a等于多少吗?答对了。没错,就是1。因为16/5 = 3...1,mod计算的结果是1。
另一种运算符是“”(即键盘上的小箭头“6”),表示“力量”(或“方”),如:
dim a,b,c
a=2
b=a^2
c=a^3
msgbox(a)
msgbox(c)
那么b = a * a = 4,c = a * a * a = 8。
一次不要说太多。这次就说到这里,现在总结一下。
关键点:
1)常量分为自然常量和自定义常量,常量的值不可修改。
2)变量就像盒子。我们不在乎盒子里是什么,但我们必须知道盒子的名字。
3)编程中的四种操作没有区别。
4) MOD是余数运算。
家庭作业:
1)写一个程序计算一个圆的面积,半径由用户给定(使用InputBox),pi值为3.14159。
2)写一个程序求20/3的余数。
第三篇(* * *六篇):
首先,我来解答一下上节课的一些问题。
首先是余数问题,16/5 = 3...1,是因为我改了前面的部分,忘了改后面的部分。抱歉。
其次,请看看节目单:
1)
Dim a,b,c
A=inputbox("a是: ","输入半径")
B=Inputbox("b是: ","输入半径")
c=a*2+b*2
Msgbox(c)
这个输入1,2就是6。
2)
Dim a,b,c
A=inputbox("a是: ","输入半径")
B=Inputbox("b是: ","输入半径")
c=(a+b)*2
Msgbox(c)
这个输入1,2是24。
为什么不一样?数学上,c=(a+b)*2和c=a*2+b*2是等价的,VBS也是如此。问题出在“+”上。在VBS,+不仅意味着加号,还意味着连接两个字符串,例如,“你好”+“世界”=“你好世界”你不知道吗?还记得InoutBox函数的返回值吗?这是一个字符串,这说明了问题。在编程中,“1”不等于(
如何修改这个程序?我们需要使用另一个内置函数:int。int函数的作用是转换输入值int,int整数值。我们将其修改如下:
c=(int(a)+int(b))*2
这意味着一个作为参数传递给int函数,int函数会返回那个整数(你的输入值),然后让返回值参与运算,从而得到正确答案。所以如果以后使用inputbox函数,最好用int语句处理:比如c=int(c) 'c就是自己的变量。
你觉得这门课有点无聊吗?呵呵,变量和算子部分确实是这样的,不过多练习还是不错的。这一次,让我们写一些真正有趣的东西:过程控制语句。这部分才是真正开始的编程。
首先介绍了判决结构。
在此之前,我们先介绍一个简单的变量类型:Boolean,它只有两个可能的值:true和false。这个变量在某些情况下非常有用(比如“switch”)。我们定义bool变量的方式和定义其他变量一样,赋值也是一样的,例如:
dim a,b
a =真
b =假
注意,真和“真”是不一样的,“真”是字符串,真是布尔值,千万不能混淆。
回到if语句,我们来看看if语句的简化版:if判断then语句的主体。让我们看一个例子:
dim a,b
a=12
b=13
如果b & gtA then msgbox("B大于a ")
我们只看最后一行,a & gt公式(表达式)b有一个返回值,是bool类型。因为这个公式只有两种可能:B大于A,B不大于A,所以这个公式只有两种可能,即真或假。如果该表达式的返回值为true或false,那么将执行其后的语句。如果为假,则不会执行。您将A的值更改为65438。
判断后要执行多行语句,应该怎么做?我们需要用语句块来解决,这里可以称之为block if。
dim a,b
a=12
b=13
如果a & ltb那么
Msgbox("A小于B ")
Msgbox("B大于a ")
如果…就会结束
两个msgbox函数夹在if和end if之间,这部分就是语句块。请离开4-8 (a
暗淡的
A=inputbox("请输入一个大于100的数字")
A=int(a) 'inputbox返回一个字符串,我们把它变成一个整数:)
如果a & gt100然后msgbox("正确")
如果a & lt100然后msgbox("错误")
还有一个更简单的。
暗淡的
A=inputbox("请输入一个大于100的数字")
A=int(a) 'inputbox返回一个字符串,我们把它变成一个整数。
如果a & gt那就100
Msgbox("正确")
其他
Msgbox("错误")
如果…就会结束
看到另一个了吗?else的作用是当要判断的表达式为假时执行。这样,程序可以处理两种不同的情况。别忘了用end if结尾。
嘿,嘿,我是个变态现在我要你处理三种情况。< 100,=100,& gt100,而且还是用一个if结构写的,你怎么做,我给你答案:
暗淡的
A=inputbox("请输入一个大于100的数字")
A=int(a) 'inputbox返回一个字符串,我们把它变成一个整数。
如果a & gt那就100
Msgbox("正确")
那么elseif a=100
Msgbox("老板,开什么玩笑?")
其他
Msgbox("错误")
如果…就会结束
这次输入100。这是什么?Else if语句可以在if结构中多次出现,以便灵活判断不同情况(如果要判断太多,请使用“选择结构”,以后再说),然后在所有Else if都处理完,但不符合情况时,执行else中的语句。另一个例子:
Dim a,b,c,d
A=inputbox("a是: ","输入半径")
B=Inputbox("b是: ","输入半径")
D=Inputbox("答案:","输入答案")
C=a*2+b*2 '这里没有问题,会自动转换。
如果d=c,那么
Msgbox(“你真聪明”)
其他
Msgbox("猪头你好,你自己的题还学不会呢!"" )
如果…就会结束
再看看这个。无论你的答案有多正确,你都是猪头。哈哈,不是我忽悠你,还是文章开头inputbox的返回类型在忽悠你。d是inputbox的返回值,是一个字符串,C是整数计算的结果,是一个整数。无论如何,字符串不等于整数,尽管它们在字面上是一样的:“8”
Dim a,b,c,d
A=inputbox("a是: ","输入半径")
B=Inputbox("b是: ","输入半径")
D=Inputbox("答案:","输入答案")
d=int(d)
这里我们取出d的值,把它变成一个整数,然后把它放回“d”的盒子里
c=a*2+b*2
如果d=c,那么
Msgbox(“你真聪明”)
其他
Msgbox("猪头你好,你自己的题还学不会呢!"" )
如果…就会结束
这是成功的。这也是Inputbox函数的一个讨厌之处。vbs没有其他好的输入法。
说到if,就不得不说逻辑运算符了。今天我就介绍两种,“与”和“或”。学完if语句,我举个例子,你一看就明白了。
dim a,b
A=inputbox("输入一个数字>;10")
B=inputbox("输入另一个数字>;10")
a=int(a)
b=int(b)
如果a & gt10和b & gt那么10
Msgbox("正确")
其他
Msgbox("错误")
如果…就会结束
该程序允许您输入两个值,这两个值都必须大于10。只要1不大于,就会输出错误。
dim a,b
A=inputbox("输入一个数字>;10")
B=inputbox("输入另一个数字>;10")
a=int(a)
b=int(b)
如果a & gt10或b & gt那么10
Msgbox("正确")
其他
Msgbox("错误")
如果…就会结束
这个程序允许你输入两个值,只要一个大于10,就会返回成功。其实and和or都很好理解。我读到“如果a & gt10或b & gt中文里“10那么”这句话是这样的:“如果A大于10或者B大于10,那么...“这容易理解吗?
好,我们再来看一个新的结构。今天的课结束了。现在是午夜。我累坏了。
当你的程序必须处理许多不同的判断情况时,否则如果...然后会让程序看起来很乱,所以有一个select case结构来处理这种情况。select case的语法结构非常简单:
选择案例变量名
案例价值
句子
案例价值
句子
其他情况
句子
结束选择
我们举个例子非常简单的解释一下:
暗淡的
A=inputbox("输入一个值1-3 ")
A=int(a)'处理inputbox返回字符串的问题。
选择案例a
案例1
Msgbox("一个")
案例2
Msgbox("两个")
案例3
Msgbox("三")
其他情况
Msgbox("输入错误")
结束选择
在这个例子中,三个阿拉伯数字1,2和3被转换成中国大写数字,这个程序以if的形式编写...其他如下。
暗淡的
A=inputbox("请输入一个1-3的值")
a=int(a)
如果a=1,则
Msgbox("一个")
那么elseif a=2
Msgbox("两个")
那么elseif a=3
Msgbox("三")
其他
Msgbox("输入错误")
如果…就会结束
怎么样,请,或者选择。
好了,今天就到这里。总而言之:
关键点:
1) inputbox返回的是字符串,不是数字,必须转换成a=int(a)形式的数字。
bool变量只有两个值:true和false。
2.5)如果和两边的表达式都为真,则返回true。或者两边的表达式有一个为真,就返回真。
3)if语句的格式
4)选择的格式...情况
家庭作业:
1)用三个bool值存储你的三个兄弟姐妹是否是男性(提示:sisters 1 male = false)。
2)给定一个数,大于10小于20则输出“正确”,否则输出“错误”。
3)输入12或15,输出“正确”,否则输出“错误”。
4)将国内所有5以内的正整数转换成更大的数。
5)随意设计一个程序,应用今天的知识。
四条(* * *六条):
大家好,昨天休息了一天,所以今天写了第四章:循环结构。
先来看一个问题:商场的日结需要今天营业额的积累,一次输入一个数字。这个问题其实很简单,但是就我们而言。
用知识来完成这个问题还是挺麻烦的。我们来分析一下。首先,我们需要知道交易的数量,从而控制输入的数量。然而,这个假设
这个计划效率很低,每天都要重新设计程序。假设今天有五笔交易,下面是源程序:
点心
“Sum=0”初始化变量。
Sum=sum+int(inputbox("请输入交易金额"))
Sum=sum+x这个形式就是把自己的值拿出来,进行一个运算,然后再放回去。这个方法很有用。
这里使用了函数嵌套,inputbox的返回值直接传递给int函数,转换成整数,下同。
Sum=sum+int(inputbox("请输入交易金额"))
Sum=sum+int(inputbox("请输入交易金额"))
Sum=sum+int(inputbox("请输入交易金额"))
Sum=sum+int(inputbox("请输入交易金额"))
msgbox(总和)
看,我通过复制计算过程五次来设计程序。这个程序仍然可以用在交易量少的地方,比如汽车交易所,如果
在超市不是要复制粘贴上千次吗?我们今天所讲的,可以克服这个缺陷。首先,我们来谈谈下面要做的事情...循环语句。
do的结构...循环看起来很简单,就是做...循环,仅此而已。这个结构在do和loop(学名:loop body)之间不断执行语句。
永不停止。例如:
做
Msgbox("此消息将重复出现。要停止程序,请使用任务管理器(Ctrl+Alt+Del)来停止wscript进程”)
环
运行这个程序,当你点击关闭一个对话框时,另一个对话框会立即出来。你永远点不完,总会有下一个。谁来运行这样的程序?除非是为了
别人闹事(我也做过这种事),所以在做的时候还有另外一种说法..循环结构:exit do,将终止循环,跳转到循环后的语句继续。
执行。例如:
Dim一个注意:常量不需要在dim中声明,否则会出错。
Const pass="123456 " '这是一个字符串,请用" "括起来。将密码设置为常量,不能更改。
做
A=inputbox("请输入密码")
如果a =通过,则
Msgbox("密码验证成功")
出口do
如果…就会结束
环
该程序会一直要求您输入密码,直到您输入正确的密码。(if可以嵌套在另一个if或循环体中。
,所以必须用缩进来区分程序的各个部分)。这个节目很经典,早期的节目都是这么做的。但是我们是黑客,所以
我们知道系统的安全性。这种无限认证过程容易被彻底破解。我们必须限制认证的次数。修改过程如下。
维度a,中心
Ctr=0 '设置计数器
Const pass="pas123_ " '上面那个是弱密码。这次换强一点的。
做
如果ctr=3,则
Msgbox("已达到身份验证限制,身份验证过程已关闭")
出口do
其他
A=inputbox("请输入密码")
如果a =通过,则
Msgbox(“成功认证”)
Msgbox("(您可以在此添加一条成功信息)")
出口do
其他
Ctr=ctr+1 '如果密码错误,错误验证计数增加一次。
Msgbox("验证错误,请检查密码")
如果…就会结束
如果…就会结束
环
尝试运行这个程序。当你出现3次错误时,你将不再要求输入密码并关闭程序。telnet身份验证是一个大得多的限制次数的程序。
同为小差异。注意嵌套的if语句。仔细阅读这个程序,它可能很难理解。请尝试自己设计一个类似的程序。
事实上,如果没有必要添加验证功能怎么办...循环,我们可以直接用do。我来介绍一下while关键字,while可以放。
在do或loop之后是一个表达式,当表达式的值为true(表达式成立)时,循环体运行。我们来看看改装过的。
程序"
维度a,中心
ctr=0
const pass="pas123_ "
当ctr & lt三
A=inputbox("请输入密码")
如果a =通过,则
Msgbox(“成功认证”)
Msgbox("(您可以在此添加一条成功信息)")
出口do
其他
Ctr=ctr+1 '如果密码错误,错误验证计数增加一次。
Msgbox("验证错误,请检查密码")
如果…就会结束
环
这样实现的功能和前面的例子完全一样。让我们来看看在循环后面推杆:
维度a,中心
ctr=0
const pass="pas123_ "
做
A=inputbox("请输入密码")
如果a =通过,则
Msgbox(“成功认证”)
Msgbox("(您可以在此添加一条成功信息)")
出口do
其他
Ctr=ctr+1 '如果密码错误,错误验证计数增加一次。
Msgbox("验证错误,请检查密码")
如果…就会结束
ctr & lt三
功能一样,为什么放在循环后面?只要把ctr的值改成3,后面的程序do while直接退出,但是后面的循环。
它还允许进行一次身份验证,直到循环结束才会结束。while的反义词是un。