練習問題の答

  1. 階乗を計算するプログラム(繰り返しを参照)を変更してサブルーチンを作成します。
    1. 階乗を計算する値($n)にサブルーチンの第一引数を代入することで、もとのルーチンをそのまま利用します。
    2. 出力する部分を削除し、計算結果($factorial)の値をreturn文でメインルーチンに返します。
    sub factorial {
    	
    	$n = $_[0]; # 階乗を計算したい数を第1引数
    	
    	$factorial = 1; # 変数$factorialの初期値を1にする
    	
    	for ( $i = $n; $i > 1; $i = $i - 1) { # 変数$iが10から2までの間繰り返し
    		
    		$factorial = $factorial * $i ;
    	
    	};
    	
    	return $factorial;
    
    }
    
    print "10の階乗は",&factorial(10),"です。\n";

     

  2. 占いCGIプログラムを「Perlを始めよう!」のひな型を使って作成したプログラムです。
    #!/usr/local/bin/perl
    
    # 乱数初期化
    #srand(time());
    
    # 0から4の乱数を発生
    $ransu = int(rand(5));
    
    if ($ransu == 4) {
        $unsei = "大吉";
    } elsif ($ransu == 3) {
        $unsei = "中吉";
    } elsif ($ransu == 2) {
        $unsei = "吉";
    } elsif ($ransu == 1) {
        $unsei = "凶";
    } else {
        $unsei = "大凶";
    }
    
    &header; # HTML ヘッダー呼び出し
    
    print "あなたの今日の運勢は$unseiです。\n";
    
    &footer; # HTML フッター呼び出し
    
    # HTML ヘッダー
    sub header {
    	print "Content-type: text/html\n\n";
    	print <<"EOM";
    <html>
    <head>
    <META HTTP-EQUIV="Content-type" CONTENT="text/html; charset=Shift_JIS">
    </head>
    <body>
    EOM
    }
    
    # HTML フッター
    sub footer {
    	print "</body>\n</html>\n";
    }