情報科学演習
2011.4.18

Back to index page



  1. 本日の作業内容

  2. 前回の復習

    C言語を用いたプログラムを作成し,コンパイルして実行することを前回行いま した.もう一度確認してみましょう.

    • コンパイル

      Cのソースプログラム hoge.c をLinuxの cc コマンドでコン パイルします.

      $ cc hoge.c

    • 実行

      実行はコンパイルしてできた a.out という実行ファイルを使います. これもコマンドらインから行います.

      $ ./a.out

      ここで,現在作業しているディレクトリにある a.out を実行するので, コマンドパスとしての ./ が必要でした.また,コマンドライン操作 を行うときには TAB 補完を使うことが大切でしたので,よく覚えてお きましょう.

    • コマンドライン操作

      先ほども書きましたが,コマンドライン操作では次の2つを活用しましょう.

      • TAB補完

        コマンド操作の途中でTAB補完を使う癖をつけましょう.確実に操作ミスが減って効 率良くなります.

      • コマンド履歴

        コマンドライン操作時に上矢印キー(↑)を押すとひとつ前に実行したコマンドが,下 矢印(↓)ではその時点での一つ後のコマンドが表示されます.活用しましょう. また,しばらく前(1000回分程度)に入力したコマンドは

        $ history

        というコマンドで呼び出せます.もう一回実行するときには,そこで表示された 番号の前にエクスクラメーションマーク(!)を付けてやると実行できます.

    • ~ ティルダの付いたファイル

      名前をつけて保存したファイルの中には,自分では作成していないのに末尾に ~ のついたものがあります.これはgeditがバックアップのため に自動的に一つ前のファイルを保存しているものなので,注意してくださ い.

    • ファイルマネージャの利用

      前回の授業で,解答用紙を扱う際に多くの人が困っていたことに,ファイルマネー ジャーからダブルクリックで解答用紙を開くとEmacsエディタが起動したことで した.ここで,ファイルマネージャーについて整理しておきます.

      1. ファイルマネージャーとは

        ファイルマネージャーとはUNIX系のOSでGUIのXウィンドウシステムが利用可能に なったころ,直感的にファイル操作を行うために用意されたアプリケーションで す.ファイルブラウザとも言います.WindowsではExplorerが,Macintoshでは Finderがその役目を果たしていますが,ExplorerやFinderはUNIXで言うシェルと 同じ高機能なものですので,ファイルマネージャーは提供している機能の一部で しかありません.

      2. Nautilus

        教室で利用しているGNOMEというデスクトップ環境ではNautilusというファイル マネージャーが用意されていて,デスクトップのホームディレクトリをダブルク リックで開くと起動します.ファイルのアイコンをダブルクリックすることで, そのファイルを作成したアプリケーションが起動する方法は,Macintoshで広く 普及しました.Macintoshでは,ファイルにはデータフォークとリソースフォーク という2種類の属性が用意されていて,リソースフォークの方にそのファイルを 作成したアプリケーションの情報が格納されているので,ダブルクリックで作成 アプリケーションを起動することができる仕組でした.

        一方,Windowsではリソースフォークに相当するものがありませんので,ファイ ル名の拡張子により作成したアプリケーションを判断する方法が取られました. それにより,Wordファイルは .doc というように拡張子が自由に選べ なくなりました.

        教室で使用しているLinuxはUNIX互換のOSですので,拡張子には特別な制約はあ りませんが,Nautilusが起動アプリケーションを選ぶ際には拡張子で判断する仕 様になっています.そのため,デフォルトではC言語で書かれたプログラム hoge.c はベテランユーザが最も多く利用しているEmacsが割り当てられて います.先週もお伝えしたように,Emacsは皆さんには使いづらいと思いますの で,授業ではgeditを利用します.なので, hoge.c のようなC言語の ソースをダブルクリックで開くときにgeditで開くように設定する必要がありま す.

      3. 設定方法

        Nautilusを起動して, seminar ディレクトリに移動し,適当なCプロ グラムを選択してください.例えば,図1のようになります.

        図1 NautilusでCのソースファイルを選択したところ

        次に,そのアイコン上で右クリックして出てくるコンテクストメニューの一番下 のプロパティを選択してください.すると図2のようなダイアローグウィンドウ が出てきます.

        図2 プロパティ設定ダイアローグ

        そこで,起動するアプリケーションにgeditを指定すると,以後はアイコンのダ ブルクリックでgeditが起動するようになります.

      4. UNIXの作法

        ファイルマネージャーは初心者には便利かもしれませんが,慣れてくるとUNIXで はコマンドラインからの操作が最も使いやすいと気づきます.ですので,本来の UNIX的な使用方法としては,次のようにするのが一般的です.

        $ cd ~/seminar
        $ gedit hoge.c &

        これにより,hoge.c というプログラムがgeditで開きます.

  3. コメントアウト

    コメントアウトとは教科書のp.10の例題2.1の1行目にある注釈文の ことで,プログラムだけを記述すると後から見てわかりづらいことが多いので, 説明を加えておくものです.C言語では

    /*    この部分は何を書いていてもプログラム内では無視されます    */
    

    のように /* */ とスラッシュとアスタリスクの組合せでできた一組 の記号の中がコメントとなります.他の多くの言語では # がよく使わ れています.

    解答用紙は授業資料として保管しますので,誰のプログラムソースかわかるよう に解答用紙の最初には学生番号と名前を記入してもらいます.そのため,プログ ラムの実行に関係ない部分ができてしまうためコメント行を置いていますので,注意してくだ さい.

  4. キーボードからの入力

    • 変数

      「変数」とは値の入れ物で,プログラミング言語には必須の概念です.また, 「値」というのは「数値」だけでなく,「文字」や「真偽」なども含みます.さ らに,C言語では変数を使用する際には最初に「宣言」が必要となります.変数 の種類としては代表的なものに以下のようなものがあります.

      記号(宣言名)
      int整数
      long倍長整数
      float浮動小数点数(実数)
      double倍精度浮動小数点数
      char文字

      型について,詳しくは教科書のp.21を参照してください.

      整数と倍長整数については計算機の環境(実装)に依存します.整数 int 型で扱える範囲がどうなるかについては,例えば,以下のようなプログラ ムで確認することができます.

      #include <stdio.h>
      
      main()
      {
      	int n;
      
      	printf("%d\n", n);
      	
      	return(0);
      }
      

    • 書式指定文字列

      printf scanf のような画面やキーボードとのやりとりに 関する関数において,「書式指定文字列」を使うことで便利で簡単な入 出力が可能となります.覚えておく必要がありますので,以下のような よく使用するものをしっかり練習してください.

      記号書式
      %d整数(10進数)
      %f浮動小数点数(実数)
      %e指数形式の浮動小数点数
      %o8進数
      %x16進数
      %c文字
      %s文字列

  5. バックスラッシュ

    ところで,教科書のプログラムのソースでは改行文字が¥nになっています.¥ マークは日本独自の文字コードで英語圏ではキーボードにはありません.日本語 キーボードで¥記号のところの文字コードは本来バックスラッシュ( " \ " )です.画面にバックスラッシュが表示されていてもまったく問題あ りませんので,気にしないでください.

  6. 実習

    • インデント

      前回の授業では見様見まねでプログラムを編集してコンパイルしましたが,今回 からは自分で入力することが多くなります.そこで,インデント(字下げ)につい て確認しておきましょう.

      教科書のp.9にある図2.2を見ると,ブロックと呼ぶ中括弧({ })で囲ま れた部分は左側が空いていて,段落のようになっているのがわかります.また, 例題2.1や2.2を見ても,すき間がたくさんあります.これらはインデントと言っ て,プログラムを見やすくするものです.これが無いとブロックの範囲がわかり づらいものになります.約束事としてブロック単位で4文字程度字下げすること が良く行われます.インデントは無くてもプログラムは動作します.しかし,非 常にわかりづらいものになってしまいます.

      教科書の様なインデントをやりやすくするためにgeditの設定を少し変更しましょ う.図3にあるようにgeditの「編集」メニューから「設定」を選択します.

      図3 geditの設定画面

      エディタのタブをクリックするとこの画面が現れますが,その中の「タブの幅」 の設定を4にしておくと,教科書と同じような見栄えになります.また,同じく 設定画面の「表示」を選ぶと図4に示すように行番号のチェックボックスがありま す.ここにチェックを入れておくと編集画面で行番号が表示されるので,エラー メッセージとの対応が楽になります.

      図4 「表示」タブの行番号表示設定

      実際のインデントは,今のレベルだと main の中括弧の中は全ての行 で入力の前に TAB キーを押せば正しくインデントできますので,必ず インデントを行なう習慣を付けてください.

    • 練習問題