Lecture on Programming I 6/15
Menu Menu6/22 の「プログラミングI」は、自習とします。6/29 からは Java に入るので、Perl に関する課題は確実に終らせてください。レポートは電子メールで、指定されたSubject で提出すること。
TA の学生は、1年生からの質問に丁寧に答えてください。
先週の復習
Mule の使い方 プログラミングの本 push/pop, shift/unshift splice ランダムなデータ並び sort 2分木 Depth First Walk Bredth First Walk
Perlでのファイルの扱い
open(FH,"filename") という形を使う。いくつか決まった使用法がある。
open(FH,"< $filename") || die("$!"); open(FH,"> $filename") || die("$!"); open(FH,"$filename") or die("$!");$! が何を意味するかを調べてみよ。
オープンした後は、
while(<FH>) { print; }とのように扱う。
ファイル a からファイル b にコピーするプログラムを作ろう。
Perlのモジュールとオブジェクト
Turtle.pm を理解して、Perl のモジュールと、オブジェクトについて理解しよう。
あと、何を勉強すべきか?
Perl でなんでもできるのか?
HTML の生成、WWW page の作り方
この授業のWWWページは、以下のプログラムを使って作られている。o2html これを使って簡単なWWWページを作り、/net/home/jxxxxx/public_html/index.html などに置いて、自分のホームページを作成してみよ。
Perlに関する試験
マニュアルの使い方
reverse という Perl の関数の使い方を調べる方法を示せ。reverse の使い方を示す Perl のソースを記述せよ。
変数
$a の $ とはどういう意味か説明せよ。@a と $a の違いを説明せよ。
値の変換
$a = 3 ; $a .= " yen"; で起きる変換について説明せよ。"300yen" という文字列から、300という数字を抜き出す方法を示せ。
その方法で、数字をうまく抜き出すことが出来ない文字列の例を示せ。そのような文字列がない場合は、それが何故かを説明せよ。
print "$a" と、print $a、print $a+0 の違いがわかる例を提示せよ。
メインループ
ファイルに行番号を付けるプログラムを作成せよ。特定のパターンを探して、そこから5行表示するプログラムを示せ。
代入
$a = ($b = 3) + 4 を実行したときに、$a, $b の値はいくつか?$a = $b = $c + 3 = $d = 3 はエラーになる。このエラーについて説明せよ。また、どのように直せば良いかを示せ。
代入されてない変数を使用するとどうなるかを実例を交えて説明せよ。
配列にスカラを代入するのと、スカラに配列を代入することの違いを実例を交えて説明せよ。
配列
@a = (1,2,3,4); の実行の後、$a[3] の値はいくつか?1から99までの数字を順に含む配列@bを作るプログラムを、for文、while文、do-whie 文、.. 演算子を使って作成せよ。
1から99までの数値を、順に受け取って順に返すFIFO、受け取ったのと逆の順序に値を返すサブルーチンを配列を使って作成せよ。push/pop/shift/unshift を使う版と使わないの二つを示せ。
Perl の配列は、どの程度の大きさまで使えるのだろうか? 具体的な数字を理由を付けて示せ。
連想配列
ファイルから、重複した行のみを表示するプログラムを作れ。
subroutine
サブルーチンを定義し、そのサブルーチンを呼び出す3つの異なる構文を示せ。return 文を使わずに値を返すにはどうすれば良いか?
サブルーチンの引数に配列を二つ渡す方法を示せ。
サブルーチン自体を引数で渡すにはどうすれば良いか? 配列とサブルーチンを与えて、配列の要素一つ一つにサブルーチンを適用する関数 apply を作成せよ。
if 文
うるう年を判別するif 文を作成せよ。if (defined($test)) ... と if ($test) ... の違いがわかるような実例を示せ。
pattern
2000年入学の学籍番号から情報工学のアカウントの番号を生成するプログラムを示せ。
参照
$a が未定義の時に、$a->[1]->[3]->[4] = 5;で作成さる無名配列の数はいくつか?
$a で作成された配列を削除したい。2つを残して削除する方法を示せ。
その二つの配列のアドレスを表示する方法を示せ。
Turtle Graphics
ABCD などの文字をTurtle Graphics で書くサブルーチンを作成せよ。文字の大きさを変えられるようにするにはどうすれば良いか?
Turtle Graphics の色を連続的に変更したい。#RRRGGGBBB という形で色を指定することができらしい。色を変更するサブルーチンを作り、Dragon 曲線に適用してみよ。
宿題
以上の問題を
Subject: Practice on Programming I 6/15というサブジェクトで、18:30 までに、kono@ie.u-ryukyu.ac.jp までメールを出すこと。
残りは、
Subject: Report on Programming I 6/15というサブジェクトで、来週までに提出すること。
(*) がついている問題は option とします。