Perl語言學習(四)Perl控制結構

weixin_34194087發表於2018-11-13

四、Perl控制結構

1、if控制結構

  • 控制結構是邏輯實現的基石

  • 三種基本的控制結構

8723194-89aa143e9d9c054c.png
image.png
  • if結構是程式最基本的控制結構

    • 語法:

      • if(條件) 執行語句;

      • if(條件) { 執行語句一; 執行語句二;}

      • 執行語句 if(條件)

      • if(條件一) {執行語句;} elsif(條件二) {執行語句;} else{......}

    • 書寫格式:儘量使用左邊這種格式

    8723194-84d420b6819d7491.png
    image.png
    • unless結構

      • unless結構是if結構的反義結構,用法同if類似

      • unless在條件為假時,執行相應的語句

      • unless(條件) 執行語句;

2、foreach 控制結構

  • for控制結構

    • 當演算法的操作物件是一個陣列或雜湊時,利用控制結構來讀取陣列或雜湊中的元素

    • 語法:for(初始化式; 條件; 表示式) { 執行語句;}

    • 執行過程:執行初始化式,判斷條件,表示式求值,重複第二步和第三步,直到第二步的表示式為假

      my @array = (1,2,3..50,60,43,32,82..99);
      my $length_array = @array;
      for(my $i=0;$i<$length_array;$i++)
      {
            if($array[$i]>60)
            {
                  printf"item $i, value is:$array[$i]\n";
            }
      }
    
    • for迴圈中斷、跳出的控制,使用next和last

      • next:跳至本次迴圈的結束位置,開始下一次迴圈

      • last:跳至迴圈的最後位置,結束迴圈

  • foreach控制結構

    • for迴圈結構的一種變體

    • foreach迴圈逐個遍歷列表中的值,依次迭代迴圈過程

    • 語法:foreach 變數(列表){ 執行語句; }

    my @array = (1,2,3..50,55,60,43,82..99);
    foreach my $item (@array)
    {
           if($item > 60)
           {
                 printf("$item\n");
           }
           $item = 150;
    }  ​
    printf"wtire's result\n";   ​
    foreach my $item (@array)
    {
           printf("$item\n");
    }
    
    • 預設變數的使用

      • $_會取得perl中的預設變數
    • foreach取得元素並非按照先後順序,而是隨機取的

    • 可以使用sort來對元素進行排序然後取出

      • sort{$a <=> $b} @array; ##按照從小到大進行排序,array都是數字

      • sort{$a cmp $b} @array; ##按照從小到大進行排序,array都是字母

    • next, last來對迴圈進行特定控制

    • 在perl中,對於for和foreach,一般大多使用foreach

3、其他控制結構

  • while控制結構

    • 語法:while(條件) {執行語句;}

    • 條件返回值為真時,執行語句,否則退出迴圈

    • 一般有三種方法控制迴圈:

      • 計數控制:迴圈執行的次數是預先設定好的,依據所記錄的次數對迴圈進行控制

      • 特殊值控制:通過對某特殊值進行判斷,來決定程式是否執行

      • 使用者互動式控制:通過顯性詢問使用者的意見來判斷是否執行程式

    • 使用last跳出當前迴圈

  • until控制結構

    • until結構和while結構相反,當條件返回值為假時才執行迴圈內的程式碼

    • 語法:until(條件) { 執行語句;}

    • until和continue一起使用,構建完備邏輯

      • 語法:until(條件) {執行語句;} continue {執行語句;}
       until (-e "test.txt")
       {
              printf"begin to sleep\n";
              sleep(1);
       }
       continue
       {
              printf"waiting for update\n";
       }
       ```
      
  • switch控制結構

    • Perl的原始碼中並不支援switch結構

    • 對條件進行判斷,根據選擇值進行相應的程式碼

    • 語法:switch(條件) case 條件值1: 執行語句; case 條件值2: 執行語句; default: 執行語句

相關文章