情報科学概論
2002.4.30

今後はこの授業にも「コンピュータセミナー」の教科書を持ってくるようにして ください.



  1. 本日の作業内容

  2. 出席確認

    出席に関する注意事項を説明しますので,その注意を良く聞いてから,電子メールにより出席の申告をしてください.自分が操作しているパソコ ンの時計があっているかも確認してく ださい.「件名」は

    gairon 4-30 attend s0240**

    のように自分の学生番号を使って下さい.なお,入力ミスがあると出席として認 められないことになりますので,慎重に行ってください.文 字はすべて1バイト文字 (半角英数字) です.途中に入るスペースは一度に一個だけと してください.スペースは全部で3個です.また,**の部分は自分の学生番号の下二桁 です.

  3. テキストエディタ

    プログラミングを行うためには,プログラムを記述することが当然必要になって きます. その際に,プログラムのソースを書くだけなので,ワープロのような整形機能は 基本的には不要です.そのため,文字入力の機能だけを提供する「テキストエディ タ」(エディタ) が良く使われます.教室の環境で使用できるエディタは何種類 かありますが,それぞれに個性があり,好みや目的によって使い分けるのが良い でしょう.詳しくは,別のページを参照していただくとして,今日のところは GNOMEデスクトップ環境との親和性が高いgEditを使用してみましょう.

    起動は,GNOMEメニューの中の「アプリケーション」にあるgEditを選択すること により行います.先週のコンピュータセミナーでランチャーの利用法を説明した ので,それを応用して自分のタスクバーに登録することも可能です.先ほど紹介 した別ページにウィンドウの様子を載せていますが,基本的なメニュー項目が並 ぶだけの分かりやすいアプリケーションになっています.パソコン自体に不馴れ な場合には,メニューの項目をみても分かりにくいものばかりかもしれませんが, 習うより慣れろ,の精神で使っていきましょう.「保存」と「名前をつけて 保存」は,すでに一度編集しているファイルの場合に,さらに編集を加えて そのまま上書き保存することがただの「保存」に相当します.新しいファイ ルを開いて編集すると,「保存」使用とすると,どこにどのような名前で保 存するかを聞かれるので,入力してから保存します.「名前をつけて保存」 はその新規ファイルの保存と同じように,編集中のファイル名とは違う名前 をつけるようにダイアローグウィンドウが立ち上がり,名前と保存場所を指 定します.

  4. Rubyスクリプトはじめの一歩

    この授業は,教科書を設定していないので,どのようなことをどういう段取りで 進めるのか,分からないと不安になる人もいるでしょう.とりあえず,以下のペー ジを参照すると,だいたいの流れが分かるかと思います.実際の授業では,時間 をかけて一つずつ,ゆっくりと学習していく予定です.

    http://www.ecs.shimane-u.ac.jp/~nawate/linux/programming.html

    また,以下に示すテキストでは次のような約束があります.覚えておいてくださ い.

    ターミナル上でのコマンド操作 $ に続いてコマンドを表示
    エディタで記述するスクリプト薄い青色の背景で表示
    スクリプトプログラムの出力結果薄いピンク色の背景

    • 出力

      古今東西,プログラミング言語の学習の最初は,"Hello, world!"という文章を 画面に表示させることと決まっているようです.ここでも,その習わし通りやっ てみることにしましょう.先週作ったディレクトリにまず移動します.

      $ cd ~/script

      ここで,gEditを起動します.

      $ gedit &

      エディタの文字入力領域におまじないと思って次の文章を入力します.

      puts "Hello, world!"

      入力が終わったら,次は,保存です.エディタの「ファイル」メニューから「保 存」を選択すると,ファイル名を入力するダイアローグウィンドウ (図1) が立ち上がり ます.

      図1 ファイル保存ダイアローグ

      選択:の項目に,ファイル名として,hello.rb としておきましょう.ファイルの 名前がピリオドを挟んで二つに分かれている場合,ピリオド以降を「拡張子」と 呼ぶことがあります.ここでつけたrb は Ruby の省略形であり,Rubyスクリプ ト一般に用いられる拡張子です.

      保存が終わったら,いよいよスクリプトの実行です.ターミナルで

      $ ruby hello.rb

      としてみてください.次の行に,ちゃんとHello, world!が表示されたでしょう か.

    • 各項目の意味

      先ほど作成した,hello.rbはたった1行のプログラムですが,これでもちゃんと したプログラムです.ここに含まれる命令はたった一つでした.すなわち, puts だけです.この命令は,そのあとに続く引数を画面 (標 準出力と呼びます.) に表示しなさいというものです.画面表示に関し ては,他にもいくつかあります.次のコマンドに入れ替えたり付け加え たりして試してみましょう.

      p, print, printf

      ちょっとずつ違う結果がでてきたのに気づいたでしょうか.いま,置き換えた命 令はどれも出力に関するものでしたが,意味が違うのでその出力結果もそれぞれ 異なっています.

    • 二重引用符内の文字列

      ここで例に挙げた "Hello, world!" のように,二重引用符 ("") で囲った中身の ことを文字列と呼びます.文字の列なのでそのまま意味が分かると思います.そ して,二重引用符は文字列の最初と最後を識別するためにつけられた記号でした. ( 二重ではない引用符 ('') でくくっても出力はされるのですが,厳密に は意味が違っています.その辺りはまた後日説明します.) ですので,最初に実行した命令の puts は二重引用符の中身を出力し たので,出力結果には引用符は含まれていません.

      ところが,p による命令では引用符も含まれた形で出力されました. p の意味は,"Hello, world!"という「オブジェクト」を出力 したために,引用符がついています.Ruby はオブジェクト指向言語と言っ て,操作対象がいろいろな属性を持っていて,それを,自分自身が知っ ている,という形式の言語です.今は,Hello, world! は自分で文字列 と知っているので,その中身として文字列であることを示すために,引 用符つきで結果がでてくるわけです.しかし,この辺りのことは,また, あとで取り扱うことにします.

      print printf という似た名前のコマンドでは,出力した あと,改行されていません.これが,標準の出力コマンドで,種々の用 途に使うのですが,これらのコマンドは,複数の引数を並べて整形して 出力することが前提なので,改行は意図的に加えないと行いません.で は,改行をどうやって指定するのかというと,改行も一つの文字なので 割り当てられている記号がありますそれを使って改行させます.次の例 文を試してみてください.

      print "Hello, world!\n"

      ここで示した,\n が改行を意味する記号です.n は newline の略です.自分で,ちょっと試しに結果をみたい ときなどは puts を使うと自動で改行してくれるので助かりますが, 結果を整形したいときには,print もしくは printf を使い ましょう.

    • 変数

      小文字の英字で始まるオブジェクトを「変数」と言います.数学で習う変数と似 ていることもあるし,違っている部分もあり最初はやっかいですが,とりあえず, 変数として覚えましょう.そして,等号の記号である = は, プログラミング言語では「代入」を意味します.変数に値を代入するの に等号を使います.次の例のように使います.

      a = 1
      b = 2

      これは,aという変数に1を代入し,bという変数に2を代入することを意味してい ます.

      変数の名前はあとからみて分かりやすいことも重要なので,必ずしも上のような 1文字とする必要はありません.変数名に使用できる文字は英数字と一部記号が ありますが,記号については特殊な意味を持っている物が多いので,使用しない 方が無難でしょう.また,「予約語」と呼ばれるコマンドなどにすでに割り当て られている語句も変数名に使用できません.たとえば,endという言葉は予約語 なので変数名にはできませんが,end1であれば使えますし,end_of_the_worldな ども使用可能です.

      また,変数に代入できるのは数値だけではありません.次の例を見てみましょう.

      str = "Hello, world!"
      puts str

    • 四則演算

      四則演算を行うときには,数学や電卓とは記号が異なります.次の表をみてくだ さい.

      +-*/

      上記の記号を利用して演算が可能です.試しに,やってみましょう.

      a = 1
      b = 2
      c = a + b
      puts c

      結果はどうでしょうか.演算には優先順位を決めるためにかっこ ( ) が使える のは数学と同じです.結合の強さも数学と同じで,乗算は加算よりも優先されま す.

      演算が可能なのは数値だけではありません.次の例を試してください.

      str = "abcdefg"
      tsuika = "hijklmn"
      kekka = str + tsuika
      puts kekka

    • 定数

      先ほど,変数を定義するときに,「小文字の英字で始まる」と言いましたが,こ こは注意が必要です.各種のプログラミング言語においていろいろな決まり事が あるのですが,Rubyでは,変数は小文字で始まるように決められていました.逆 に,大文字で始めるとそれは「定数」として扱われます.定数とは,ご存じのよ うに普遍の数値ですので,プログラム中で一度定義するとその値は原則として変更できませ ん.試しに,以下のようなスクリプトを実行してみると分かると思います.

      A = 2
      a = 5
      c = A + a
      puts c
      A = 3
      puts A
      

      実行すると,以下のような結果になるはずです.

      7
      hello.rb:5: warning: already initialized constant A
      3
      

    • 数値の型

      プログラミング言語は基本的に数値を扱うときに「型」が関係してきます.型と は,その数値が整数か,実数か,というような区別です.整数だけで計算すれば, 実行が早くなり,蓄える情報量も少なくなるためにそのような概念があります. 上の例で扱ったのはすべて整数型です.C言語などでは自分で型を宣言してから 利用する必要がありますが,Rubyはオブジェクト指向なので,数値自身が型を覚 えており,意識する必要はありません.ただし,当然注意は必要です.以下の例 を実行してみてください.

      a = 1 / 3
      b = 1.0 / 3
      c = 1 / 3.0
      d = 1.0 / 3.0
      puts a
      puts b
      puts c
      puts d

      上記の例で,数値がどのように扱われているか,推測してみてください.

  5. 実習作業

    今後スクリプトを書いていく上で効率に大きく影響のでるエディタの操作に関し て,保存や修正,コピーやペーストなどの作業,また,別名で保存の機能の意味 などを確認するために,種々の作業を行ってください.

    次に,今日でてきた範囲のスクリプトについて,自分で考えて試してみてくださ い.また,エラーが表示された場合など,そのメッセージの意味を考えてくださ い.

  6. 宿題

    授業の終りに宿題 (AクラスBクラス別) について説明しますので,アナウンスに注意してください.


目次ページに戻る