• 控制结构(2)循环控制


    循环性控制结构

      任何一种语言没有循环就是不完整的。Perl也是如此,它可以用while, do...while, for, until, foreach来实现。

      循环中还可以用lastnextredo等操作符进行控制。

    指令:

    while ..

    语法:

    while(
    判别运算式) {

    程序叙述区块;

    }

    上个语法在Perl中也可以写成: 程序叙述区块while(判别运算式);

    范例一:

    while($i<=10)
    {

    $sum+=$i;
    $i++;

    }

    print"$sum\n"; #此时$sum =55;

    范例二:

    $filename="/path/cgi.txt";
    open(FILE,"$filename")||die "Cannot open $filename\n";
    #
    可以把<FILE>视为打开文件某一行的数据
    while($line=<FILE>)
    {

    print "$line";

    }

    close(FILE);

    就会把cgi.txt这个文件的内容显示出来。

    而这个范例可以把它改写成:

    $filename="/path/cgi.txt";
    open(FILE,"$filename")||die "Cannot open $ filename\n";
    print "$line"while($line=<FILE>);
    close (FILE);

        在这个范例中是把$filename文件内的数据一行一行的指派给$line这个纯量变量,再把$line显示出来.如果没有将<FILE>指派给一个纯量变量的话,则会有一内定的输入变量$_<FILE>所指派.因为$_是一个内定的变量,所以如果使用print函数的时候没有加上要输出数据的话,就会把$_的数据print出来.所以这个范例也可以改写成: $filename="/path/cgi.txt";
    open(FILE,"$filename")
    die"Cannot open $ filename\n";
    while(<FILE>)
    {

    print;

    }

    close(FILE);

    指令:

    do while ..

    语法:

    do
    {

    程序叙述区块;

    }while(判别运算式);

    whiledo while循环中最大的不同是在do while循环中,程序叙述区块至少会被执行一次。

    范例:

    do{

    $sum+=$i;
    $i++;

    }while($i<=10);
    print "$sum\n"; #
    此时$sum=55;

    指令:

    until 直到...

    语法: until(判别运算式)
    {

    程序叙述区块;

    }

    上个语法在Perl中也可以写成: 程序叙述区块 until (判别运算式);

    范例:

    until($i>10){

    $sum+=$i;
    $i++;

    }

    print "$sum\n"; #此时$Sum=55;

    指令:

    do while 直到...

    语法:

    do{

    程序叙述区块;

    }until (判别运算式);

    范例:

    do{

    $sum+=$i;
    $i++;

    }until($i>10);

    print "$sum\n"; #此时$sum=55;

    指令:

    for 循环陈述

    语法一:

    for (初始化运算式;判别运算式;循环过程运算式)
    {

    程序叙述区块;

    }

    范例一:

    $sum=0;
    for($i=1;$i<=10;$i++)
    {

    $sum+=$i;

    }

    print "$sum\n"; #此时$sum=55;

    范例二:

    @array=(3,6,9);
    $number=@array; #
    把数组@array的元素个数指派给$number
    #
    此时$number=3;
    for($i=0;$inumber;$i++)
    {

    $sum+=$array[$i]; #把数组@array元素的值全部加起来

    }

    print"$sum\n"; #此时$sum=18;

    语法二:

    for $ variable(@array)
    {

    程序叙述区块;

    }

    Perl语言中的for循环陈述还可以使用这个语法,各循环陈述foreach的用法一样.如果把$variable变量省略的话,就会将数组@array的元素一个一个指定给$_这个变量,这是比较精简的写法.

    范例:

    @array=(3,6,9);
    for $int(@array)
    {

    $sum+=$int;

    }

    print"$sum\n"; #此时$sum=18;

    也可以写成:

    @array=(3,6,9);
    for (@array)
    {

    $sum+=$_;

    }

    print"$sum\n"; #此时$sum=18;

    指令:

    foreach 循环陈述

    语法:

    foreach $ variable(@array)
    {

    程序叙述区块;

    }

    如果把$variable变量省略的话,就会将数组@array的元素一一指定给$_这个内定的输出变量.

    范例一:

    @array=(3,6,9);
    foreach $int(@array)
    {

    $sum+=$int;

    }

    print "$sum\n"; #此时$sum=18;

    也可以定成:

    @array=(3,6,9);
    foreach(@array)
    {

    $sum+=$_;

    }

    print "$sum\n"; #此时$sum=18;

    范例二:

    %FORM=("name","NCTU","value","TEM");
    foreach $pair(sort keys%FORM)
    {

    print "$pair is $FORM{pair}\n";

    }

    这个范例在CGI语言写作中常常会用到.先用keys喧个函数来求出关联数组中全部的key,再用sort这个函数把全部的key由小到大排序,最后再把关联数组中的key和所对应的值(value)一一显示出来.而以上这个程序也可写成:

    %FORM=("name","NCTU","value","TEM");
    @array=(sort keys%FORM);
    foreach $pair(@array)
    {

    print "$pair is $FORM{pair}\n";

    }

    指令:

    last 退出循环陈述

    语法:

    last

    范例:

    for($i=1;$i<=10;$i++)
    {

    last if ($i==5); #如果$i等于5的话就退出for循环
    print"$i\n";

    }

    会把14之间的数值显示出来.

    指令:next 到循环的下一个陈述

    语法:next

    范例:

    for($i<=10;$i++)
    {

    #如果是2的倍数的话,就到循环的下一个陈述
    next if($i%2)==0)

    print"$i是一个奇数!\n";

    }

    会把110之间的奇数显示出来。

  • 相关阅读:
    三,遍历方法 1$.each(数组/对象,function处理); //$对象 调用的 2$(选择器).each(function处理); //jquery对象 调用的
    二,jquery对象 与 dom对象关系
    一,$符号的由来
    2高级js总结-------数组
    面试归来
    Http(Tcp/IP)通信建立中的三次握手
    类似于桌面启动器
    代码写Android应用的背景颜色
    靠谱的a与b互换
    day21-类的组合
  • 原文地址:https://www.cnblogs.com/feihongwuhen/p/7170384.html
Copyright © 2020-2023  润新知