首页
登录 | 注册

控制结构(1)-判断控制

选择性控制结构

选择性控制结构包括if和unless语句,类似于C语言中的if。

首先介绍一下真和假的定义。在Perl中,这些规则有些难以理解。控制表达式的值为空串或0时,则表达式为假, 对于其它任何情况,表达式的值都为真。

注意:"00"不是空串或0,值为真。"0.0"也是如此。

指令: if 假如

语法一:

if(判别运算式)
{

表达式为真时的语句块;

}

上个语法在Perl中也可以写成:

表达式为真时的语句块 if (判别运算式);

范例:

print"请输入您的分数?\n";
$scorre=; #代表标准输入,会让使用者输入一字符串
chop($score); #将$score最后一个换行字符\n删除掉
if($score>=60){

print"您的分数及格了!\n";

}

也可以写成: print "您的分数及格了!\n" if ($score>=60);

语法二:

if(判别运算式一){

判别式一为真时的语句块;

}else{

判别式一为假时的语句块;

}

范例:

print"请输入您的分数?\n";
$scorre=;
chop($score);
if($score>=60)
{

print"您的分数及格了!\n";

}else{

print"您的分数不及格!\n";

}

语法三:

if (判别运算式一)
{

判别式一为真时的语句块;

}elsif(判别运算式二){

判别式二为真时的语句块;

}elsif(判别运算式三){

判别式三为真时的语句块;

}else{

所有判别式为假时的语句块;

}

范例:

print"请输入您的分数?\n";
$scorre=;
chop($score);
if($score>60)
{

print"您的分数大于60分!\n";

}elsif ($score<60){

print"您的分数小于60分!\n":

}else{

print"您的分数刚好是60分!\n";

}

指令: unless 假如非

unless的含义就是说“如果判别式不为真,就执行...”。

语法一:

unless(判别运算式) {

判别式为假时语句块;

}

上个语法在Perl中也可以写成:判别式为假时语句块 unless (判别运算式);

范例:

print"请输入您的分数?\n";
$scorre=;    #代表标准输入,会让使用者输入一字符串
chop($score); #将$score最后一个换行字符\n删除掉
unless($score<60)
{

print"您的分数及格了!\n";

}

也可以写成: print"您的分数及格了!\n"unless($score<60);

语法二:

unless(判别运算式)
{

判别式为假时语句块;

}else{

判别式为真时语句块;

}

范例:

print"请输入您的分数?\n";
$scorre=;
chop($score);
unless($score<60)
{

print"您的分数及格了!\n";

}else{

print"您的分数不及格!\n";

}

进阶技巧:&&,||及?:作为控制结构

它们看上去像标点符号,或是表达式的一部分。但在Perl中可作为控制结构。

比如说:

 if (判别表达式)
  {为真时语句块};

也可以写为:

 为真时的语句块 if (判别表达式)

但更简单的方式是:

 判别式 && 为真时的语句块

为什么呢?&&为逻辑与操作符,其含义为:
  若判别式为真,则表达式的值依赖于后面语句块的值。所以为真时的语句块被执行(用来求值)。
  若判别式为假,则整个表达式为假,不用考虑后面语句块的值。所以为假时的语句块不被执行。

同样道理,unless(this){that}可替换为this||that。

?:表达式举例:exp1?exp2:exp3表示:如果exp1为真则求exp2的值,否则求exp3的值。


相关文章

  • 如何通过Java代码判断当前的环境是否支持JRE 9
    我们通过这个链接下载最新的Tomcat源文件包,总共7MB: 解压之后,在文件夹apache-tomcat-9.0.10-srcjavaorgapachecatalinacore里找到文件JreMemoryLeakPreventionLis ...
  • 浅析Windows Server 2012 R2 Hyper-V资源控制管理
    [摘要] 在Hyper-V虚拟化平台上,关于虚拟机资源规划我们首先都是考虑到CPU和内存资源规划管理,虚拟机分配CPU数量和内存数量,并非越多越好,而是合适. 因此,接下来考虑内存和CPU资源控制. [正文] 虚拟机会共享物理机资源,共用过 ...
  • C/C++拾遗(十七):面向对象补充——复制控制
         昨天粗略地看了<面向对象编程>这一章,简单地梳理了一下自己感觉重要的几个知识点,今天就昨天没有来得及仔细看的部分做些补充,主题是涉及类继承的复制控制以及类作用域的讨论. 一.构造函数与复制控制      我们知道对于一 ...
  • php判断是否为中文正则表达式大全   如果想判断一个字符串内是否有含有中文,请用下面的代码: if (preg_match("/[\x7f-\xff]/", $string)) { echo "有中文&quo ...
  • 为了云计算的安全需要自己控制加密密钥
    由于其规模经济和易用性,各组织已迅速接受云计算.外包所需的基础设施要容易得多,特别是在多租户环境和中等市场企业中,这些企业很难为自己的基础设施融资. CloudKMS(企业拥有密钥,但它们存储在云软件中):基于软件的多租户云KMS特别不适合 ...
  • 报表中如何控制附件的上传和下载权限
    目前,多用户的软件平台已经是再常见不过的了,有成千上万个用户账号的平台也很正常.为了保证每个用户准确访问各自的信息,免不了要做这样或那样的权限控制,而且这种权限控制往往是需要基于数据层面进行管理的. 对于报表平台的数据权限管理,我们可以直观 ...

2020 unjeep.com webmaster#unjeep.com
12 q. 0.013 s.
京ICP备10005923号