前回の練習問題3,4を参考に以下のプログラムを作成せよ.
3.6 節(第6版では3.8 節)で foreach 制御構造について説明し, デフォルト変数 $_ について説明する
教科書 p.52 3.6節(第6版ではp.65, 3.8節)最初の例を実際に動作させ,確認せよ.
3.6.1節(第6版は3.8.1 節)の "$_" も良く使われる簡略化なので知っておく必要がある.
配列全体を表すには添字なしで変数名の頭に "@" 記号をつけて表す. (p.48,第6版ではp.60) 配列である "@" つきの変数の内容は本来リストである. しかし,スカラーが要求される場所に配列変数を書くと, 配列のサイズの値がスカラーとして得られる.下のプログラムを実行して確認せよ.
$name[0] = 'Randal' ; $name[1] = 'Tom' ; $x = @name; print "$x\n";
この配列の要素数を得る方法は配列すべての要素を処理するときによく使われる. 下記がその典型的な例である.
$name[0] = 'Randal' ; $name[1] = 'Tom' ; for ($i = 0 ; $i < @name ; $i++){ print "$name[$i]\n"; }
この方法でループの終わりを指定することで配列の要素数が分からなくても 正しくすべての要素に対して処理が行える. 3.8節(第6版では3.10 節)の p.59, 17行目(第6版ではp.73, 18 行目)の 文によりリストコンテキストで<STDIN>を使うと配列 @lines には 入力された行数に応じて可変個の要素が格納される.それをすべて出力 させるプログラムが以下のものである.
@lines = <STDIN>; chomp (@lines); for ($i = 0 ; $i < @lines ; $i++){ print "$lines[$i]\n"; }
上記プログラムを実行すると入力待ちになるので 文字列を数行入力した後,行頭で Ctrl-D を押せ. これで入力が終わったことをプログラムに伝えることができる. 入力した行がそのまま出力されることを確認せよ.
以下の練習問題を解け.授業中に動作確認を行う.
3.9(第6版では3.11) 練習問題を解け. 解答プログラムを添付メールとして提出せよ. メールの宛先は <hiroshi@tokai.ac.jp> とし, Subject (件名)を Seminar 1-4 とせよ.