情報科学演習
2011.4.11

Back to index page



  1. 本日の作業内容

  2. 授業の概要

    この授業では,C言語によるプログラミングを学習します.プログラミン グを通して,コンピュータの中で行われている処理を経験して行きましょう.

    扱って行く処理としては,コンピュータの中で数値はどのようになっているのか, 整数 (Integer) や浮動小数点数 (Floating Point Number) の違い,内部処理で 利用される二進数 (Binary number) や便宜上人間が二進数 を扱いやすくした16進数 (Hexdecimal Number) などについて学習します.また,文字がどのように処理 されるのか,文字列 (String) についても学習します.そして,「制御構造 (Control Structure)」とよばれる処 理の流れを自由に制御する方法とデータの入れ物である「配列(Array)」について学習すると,プログラミングの入門とし ては終わりです.そこまでがこの授業の範囲です.

  3. 授業の進め方
    この授業は演習科目ですので,実際にみなさんがプログラミング作業を行なうと いうことを中心に,授業の最初にその日の作業内容の紹介と注意点,重要なポイ ント,教科書の補足説明などを行って,実習,小テスト,課題提出などのように 行っていきます.以下のことを覚えておいてください.

    • 教科書で予習

      事前にその日の授業で扱う教科書の範囲を指示しておきますので,その範囲は予 習をしてきてください.教室で実際にパソコンを使用した予習が望ましいです. (自分のパソコンでもC言語の勉強はできますので,環境を準備すれば自宅でもも ちろん可能です.) 次回以降は宿題を用意していきますので,課題のプログラミングを行なうついで に予習をする習慣を付けてください.また,水曜日の7・8時限にこの教室でメン ターが自習に対応してくれます.活用してください.

    • 実習作業

      教科書の例題などは,自分でもう一度打ち込んでいると,大変な時間がかかりま す.ですので,教科書に載っている例題は実習では扱いません.実習課題を用意 しますので,その課題のプログラミングを実習として行います.ですので,前に も書きましたように,教科書はしっかり予習してきてください.

    • 質問の進め

      実習課題は教科書に書いてあることを応用する問題を中心に用意されています. そこで,自分では分からないこともときどき出てくることがあります.TAや私に 授業中に質問をすることで,理解を深めて行くことができますので,授業中はど んどん質問をしてください.コミュニケーション能力の養成にもつながります.

    • 補足事項

      教科書の順番でプログラミング作業を勉強していきますが,教科書ではまだ出て きていない処理も一つだけ使用します.それは「乱数」の発生の処理です.教科 書では,パラメータを自分で入力するために scanf というコマンドを 使用しますが,これは授業では使用しません.理由は,大勢の課題を採点するの に,自動化できないからです.そのため,毎回値が変わるようにするために乱数 を使用します.使用方法は,Web版のこのテキストで詳しく紹介します.

    • プログラミングの考え方

      プログラミングとは面倒な処理をコンピュータにやらせるためにあるものです. 自分が楽をするためにあるので,そのような処理を考えることが重要です.数字 を100個表示するプログラムでも,表示させる命令は1つで済ませるのが,プログ ラミングです.これについては,必要に応じてその都度説明します.

  4. C言語学習環境

    • gedit(エディタ)
      プログラムを作成するには,いくつかのパターンがあります.そのもっとも素朴 な形式は,「テキストエディタ」を利用して,自分でプロ グラム(ソースともいいます)を入力して行き,あるファイル名で保存したものを 実行環境で実行するというものです.C言語は人間がわかりやすい文字や記号を 使って作ったソースを,教科書の図1.6(p.6)にあるように一度機械語に変換して実行ファイルを作るという形式です ので,そのやり方を覚えていきましょう.

      現在教室で使用しているデスクトップ環境としては標準でGNOMEというものになっ ています.その中で標準として備わっているテキストエディタがgeditと呼ばれ るものですので,この授業ではこれからgeditを使っていきます.画面上のタス クバーの中の一番左のメニューから「アクセサリ」を選択すると「GNOMEテキス トエディタ」という項目がありますので,それを選択しましょう.すると,図1 のような構成のgeditが起動します.

      もちろん起動したときには中には何も入力されていません.

      図1 geditの画面

      ここで,上のプログラムのところを見ると,ソースが色分けされているのが分か るでしょう.このようにgeditではC言語のソースを自動で判り易く色分けしてく れる機能があります.プログラミングを行なう際には参考にしてください.

      色分けは,geditがC言語のソースだと判断できる場合に行われます.すなわち, 拡張子に.cが付いたものを開いた場合や,拡張子を付けて保存した場合です.そ れまでは色分けはされませんので,なるべく早く一度保存するようにしてくださ い.

    • gnome-terminal(仮想端末)
      エディタで作成したプログラム(ソース)は教科書の図1.6や図2.1にあるような流 れで実行されます.この一連の作業は,基本的にはLinuxであってもWindowsであっ てもコマンド入力により行われます.そこで,実行までのコマンド操作を行なう 「仮想端末」の復習を行いましょう.ここではGNOME標準のgnome-terminalを使 用します.

      1. ターミナル起動

        UNIX系のOSではターミナルによるコマンド操作がかつては一般的でしたが,最近 ではデスクトップ環境が充実してきたのであまり使わなくてもすむようになりま した.しかし,どの種類のUNIX(Linux)においても必ずコマンド操作は重要にな りますので,しっかりと学習しておきましょう.

        ターミナルの起動はgeditと同じように「アクセサリ」の中から「GNOME端末」を 選択することで行います.起動すると図2のようなターミナルが現れます.

        図2 gnome-terminalの画面

        ターミナル画面でいくつか重要なことを紹介しておきますと,上のウィンドウ枠 には,ログインしているユーザ名,端末名,作業しているディレクトリ名が表示 されています.また,それらの情報は「コマンドプロンプト」と呼ばれるコマン ド入力を受け付ける部分にも表示されています.作業するディレクトリを間違え るとエラーが出ますので,注意してください.

      2. ディレクトリ作成

        ターミナルで次の操作を実行して下さい.これにより,自分のホームディレクト リに seminar というディレクトリが作成されます.

        $ mkdir ~/seminar

        このディレクトリが今後この授業で作成するプログラムの保存に関するベースに なります.

      3. コンパイル練習

        テキストで書かれたソースコードを機械語に翻訳することをコンパイルと言いま す.さっそく試してみましょう.教科書ではp.10の例題2.1で最初のプログラム が紹介されています.が,古今東西プログラミングの練習の最初は



        Hello, world!



        という文字を画面に出すことと決まっていますので,ここではそっちで進めます. 教科書の例題2.1とほとんど同じですが,次に示すソースをgeditにコピーしてコ ンパイルの練習をしましょう.

        #include <stdio.h>
        
        main()
        
        {
            printf("Hello, world!\n");
        
            return(0);
        }
        

        この内容で先ほどの seminar ディレクトリに hello.c とい う名前で保存します.保存が完了したら,ターミナルで確認してみましょう.

        $ ls

        とファイル表示コマンドを実行してみましょう.ちゃんと hello.c と いうファイルがあったでしょうか?

        ファイルが無い場合には保存したディレクトリが間違っている可能性があります のでよく確認してください.pwd というコマンドで自分が作業してい るディレクトリ(ワーキングディレクトリ)が確認できます.また,seminar ディレクトリに移りたい場合には cd というコマンド(Change Directoryの略)で出来 ます.

        $ pwd

        $ cd ~/seminar


        では,コンパイルしてみましょう.コンパイルのコマンドは cc もし くは gcc でどちらも同じ動作をします.

        $ cc hello.c

        とすれば良いのですが,これからコマンドによるコンパイルのときには必ず 「TAB補完」機能を使用してください.どういうことかというと,例えば,

        $ cc he

        まで入力してからキーボードの左上の方にある TAB キーを押してくだ さい.そうすると,ファイル名が補完されて

        $ cc hello.c

        のようになるはずです.この機能はキー入力を減らす効果だけではなく,保存し たディレクトリが正しいかどうかの判断にも役に立つので,必ず使うようにして ください.

        正しくコンパイルされるとエラー表示もなくもとのコマンドプロンプトに戻りま す.(図3)

        図3 正しくコンパイルされたところ

      4. 実行ファイル

        もう一度リストコマンドでディレクトリにあるファイルを確認します.

        $ ls

        すると, a.out という名前のファイルができているはずです.これが プログラムが機械語に翻訳された結果の実行ファイルです.実際に動かすには, それ自身がコマンドになっていますので,

        $ ./a.out

        とします.このときもTAB補完を忘れないでください.

        図4 実行コマンド入力画面

        最初にあるドットとスラッシュ ./ はこのディレクトリに あるファイルを指定するために必要なものですので,忘れないでください.

        Hello, world!
        

        と図5のように正しく表示されたでしょうか?

        図5 実行結果

        最後によく使用するコマンドをまとめておきますので,今後の参考にしてくださ い.

        コマンド意味補足
        lsファイル一覧表示list
        cdディレクトリ移動change directory
        pwd今作業しているディレクトリの表示print working directory
        mkdirディレクトリ作成make directory
        .今居るディレクトリ(カレントディレクトリ)
        ..上のディレクトリ
        ~自分のホームディレクトリ
        TABコマンドライン補完
        直前のコマンド表示

      5. テキストの見方

        これがC言語プログラミングと実行の流れです.次週以降は教科書のp.10以降の 流れに従って作業します.その際に,このWebテキストの約束事を紹介しておき ます.

        • プログラミング入力作業

          先ほどの hello.c のところで示したように,薄い青色の背景で 表示されているものは,gedit で自分で入力するプログラムです. プログラム全体が表示されている場合や,特定の行だけが表示される場合 など,その都度異なっているかもしれませんが,青の背景であれば,とに かくプログラムの中身を表します.

        • 実行結果の画面表示

          ターミナルで ./a.out を実行して結果が表示されますが,その際の表 示内容は,先ほどの Hello, world! の例のように薄いピンク色の背景 で区別されます.ピンク色の部分は実行結果の表示ですので,覚えておいてくだ さい.

        • コマンド入力作業

          ターミナルを利用してコマンド入力する部分は,コマンドプロンプト $ 付きで表示します.以下のようにドルマークが付いているときは,ター ミナルのコマンド入力を意味します.

          $ ./a.out

  5. メール環境確認

    この授業ではテストや宿題の提出をすべて電子メールで行います.そのため,電 子メールの操作になれておくことが大変重要になってきます.これまで何度か使っ てきてはいると思いますが,今一度環境の確認を行いましょう.

    • 送受信テスト
      自分宛にメールを出して下さい.そして,受信した後,それに対して返信してく ださい.これらの作業がきちんと行えていれば,電子メール環境の設定は大丈夫 です.もし,送受信においてトラブルが発生した場合には,Sylpheedであれば 「ツール」メニューの「ログウィンドウ」を開いて原因を解明してください. Sylpheed以外のメールツールであれば,自己責任で解決してください.

    • 添付書類練習

      この授業では,テストや宿題の提出はすべて電子メールを利用して行います.そ の際に,こちらで形式を指定する「解答用紙」を利用します.解答用紙は物理的 な紙媒体ではなく,テキストデータですので自分で復元したり作成したりするこ ともできますが,基本的にはダウンロードして利用する形式です.次にある解答 用紙のリンクを右クリックして,出てくるポップアップメニューから「リンク先 をファイルに保存」を選択して自分の「ホームディレクトリ」内の適当な場所に 保存し,メールに添付する練習をします.

      解答用紙

      解答用紙に問題が記載されていますので,それに必要な事項を記入してくださ い.記入の際には,テキストエディタを使用します.解答用 紙そのものがプログラムとなることを前提としていますので, 記入欄の指定以外の部分に記入したり,ヘッダ部分を改編することはしないで下 さい.ただし,クラス分類はC6かC7のどちらか違う方を消しておいてください.

      記入したらファイル名を自分の正しい学生番号に(過年度生の 場合は年度も)修正し て保存してください.図6のようになっていればOKです.

      図6 課題提出メールの注意するポイント

      添付書類を選択する際にファイル名の最後に注意してください.記号 ~ (ティルダ)が付いたものがある場合があります.これは,geditが上書き保 存する際に,バックアップのために直前のデータを保存したときのファイルで す.正しいのは,ティルダの無いものですので,しっかり確認してください.

      提出方法

      以下のようなメールを作成し,送信してください.

      宛先
      件名test_110411_s1040**
      本文学生番号と氏名を必ず記入すること
      上記記載が署名にある人は署名のみでも可
      添付ファイル名test_110411_s1040**.c

  6. 次回の予習範囲

    次回は教科書のp.10-15の範囲を学習しますので,予習をしてきてください.


目次ページに戻る