情報科学概論
2001.5.8
元々プログラミングは複雑な科学計算を自動で行うために始められたので当然数式を扱うのは得意である。Rubyでは、数値の形式を気にしなくても計算が出来たりするので楽であり、それに加えて文字列なども式の中に使うことが出来る。教科書では「計算できるもの」を式と定義しており、式を演算子により結合したものも式となる。p.19の例は1という数値も計算可能な量なので式であり、fooという変数に"Hello, world"という文字列を代入するという定義自体も式となっていることを説明している。また、sizeというメソッドにより取り出した文字列の字数という数値を対象に計算を行うことも式としている。数学的な「方程式」との違いに注意すること。
教科書p.20
真と偽の概念はプログラミングにおいて非常に重要であるので是非理解しておこう。ブール代数などの応用数学、電子回路のような分野でもよく使われていることであるのですでにどこかで聞いているかもしれないが、ここでもう一度復習する。前回、=の記号が等号ではなく代入として使われることを紹介したが、ここでは==の記号が重要になる。これは比較のための演算子であり、両辺が等しいときに真、そうでなければ偽という評価値が得られる。ここで、重要なのは実は偽であるかそうでないかなのだが、慣習的に偽でないことを明示的に示すために真が用いられている。
真偽を判断する演算子は不等号および各種の組み合わせがあり、教科書p.64にある表2.1の上から10、11段目に載っている。動作は自分で確かめておくのが良い。真偽の利用は次に出てくる条件分岐のような制御構文において不可欠である。
教科書p.20
プログラミングはあらかじめ考えうる全ての場合についてその対策を用意し、条件ごとに別の流れを選択しながら進める手順書を作成することである。そのような場合ごとに流れを変えることが条件分岐であり、ある条件を満たす場合とそうでない場合の組み合わせで順次処理を行っていく。そこで、そのような条件を満たす場合を真、そうでない場合を偽として値を得ることによりプログラム上で判断できる形式が必要になる。例えば、西暦の紀元後の年号から閏年を判定する作業は以下のようになる。
ここででてくるif構文はそのために利用され、ある定義した条件を満たす場合、そうでない場合について処理を分ける。処理は二者択一だけでなく、より複雑にも出来るが、初めは単純なところから始めるのがよい。注意するのは、ifで始まった処理は必ずendで終了することであり、これはifの処理の及ぶ範囲を限定するためである。この範囲指定によりいわゆる「入れ子」と呼ばれる多重構造も可能となる。それについては次節に少し紹介されている。
p.21の次の例題は先ほどの入れ子の例であるが、if構文どうしやwhile構文どうしの入れ子であっても当然構わない。
教科書p.19、p.20にあるスクリプトの例を実際に確認するために処理をいくつか追加して行ってみること。
教科書p.19
この節からはプログラミングにおいて実際に使用される要素について紹介されている。詳細については第2章で詳しく述べられているが、この節に書いてあることだけでもそれなりにおもしろいスクリプトも作ることが出来るので、いろいろ試してみよう。
教科書p.21
ここで出てくるwhile構文はある条件が成り立っている限り(真である限り)処理を続ける繰り返しを作るためのものである。教科書のp.21中央付近のスクリプトの例のように i = i + 1 という自己代入を利用して i の値を1ずつ増やすというような処理と併せて利用されることが多い。あらかじめ指定した回数だけ処理を繰り返すという場合には教科書のp.72にあるforやp.82の方法の方が適している場合もあるので、後にまた詳しく学習する予定である。
授業の終わり頃に次回までに提出する課題を発表するのでアナウンスに注意すること。また、発表されたら課題を表示するためには、一度このページを再読み込みする必要があるのでNetscapeのボタンをクリックする。そうしないと、課題のページは表示されない。
目次ページに戻る