Lecture on Programming I 6/15

Menu Menu

6/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 とします。


Shinji KONO / Fri Jun 16 18:11:05 2000