情報科学演習
2010.4.12
この授業では,C言語によるプログラミングを学習します.プログラミン
グを通して,コンピュータの中で行われている処理を経験して行きましょう.
扱って行く処理としては,コンピュータの中で数値はどのようになっているのか,
整数 (Integer) や浮動小数点数 (Floating Point Number) の違い,内部処理で
利用される二進数 (Binary number) や便宜上人間が二進数
を扱いやすくした16進数 (Hexdecimal Number) などについて学習します.また,文字がどのように処理
されるのか,文字列 (String) についても学習します.そして,「制御構造
(Control Structure)」とよばれる処
理の流れを自由に制御する方法とデータの入れ物である「配列(Array)」について学習すると,プログラミングの入門とし
ては終わりです.そこまでがこの授業の範囲です.
現在教室で使用しているデスクトップ環境としては標準でGNOMEというものになっ
ています.その中で標準として備わっているテキストエディタがgeditと呼ばれ
るものですので,この授業ではこれからgeditを使っていきます.画面上のタス
クバーの中の一番左のメニューから「アクセサリ」を選択すると「GNOMEテキス
トエディタ」という項目がありますので,それを選択しましょう.すると,図1
のような構成のgeditが起動します.
図1 geditの画面
ここで,上のプログラムのところを見ると,ソースが色分けされているのが分か
るでしょう.このようにgeditではC言語のソースを自動で判り易く色分けしてく
れる機能があります.プログラミングを行なう際には参考にしてください.
プログラムを作成するには,いくつかのパターンがあります.そのもっとも素朴
な形式は,「テキストエディタ」を利用して,自分でプロ
グラム(ソースともいいます)を入力して行き,あるファイル名で保存したものを
実行環境で実行するというものです.C言語は人間がわかりやすい文字や記号を
使って作ったソースを一度機械語に変換して実行ファイルを作るという形式です
ので,そのやり方を覚えていきましょう.
もちろん起動したときには中には何も入力されていません.
エディタで作成したプログラム(ソース)は教科書の図1.6や図2.1にあるような流
れで実行されます.この一連の作業は,基本的にはLinuxであってもWindowsであっ
てもコマンド入力により行われます.そこで,実行までのコマンド操作を行なう
「仮想端末」の復習を行いましょう.ここではGNOME標準のgnome-terminalを使
用します.
ターミナルの起動はgeditと同じように「アクセサリ」の中から「GNOME端末」を 選択することで行います.起動すると図2のようなターミナルが現れます.
図2 gnome-terminalの画面
ターミナル画面でいくつか重要なことを紹介しておきますと,上のウィンドウ枠 には,ログインしているユーザ名,端末名,作業しているディレクトリ名が表示 されています.また,それらの情報は「コマンドプロンプト」と呼ばれるコマン ド入力を受け付ける部分にも表示されています.作業するディレクトリを間違え るとエラーが出ますので,注意してください.
ターミナルで次の操作を実行して下さい.これにより,自分のホームディレクト リに seminar というディレクトリが作成されます.
$ mkdir ~/seminar
このディレクトリが今後この授業で作成するプログラムの保存に関するベースに なります.
テキストで書かれたソースコードを機械語に翻訳することをコンパイルと言いま す.さっそく試してみましょう.教科書では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 と いうファイルがあったでしょうか?
ファイルが無い場合には保存したディレクトリが間違っている可能性があります のでよく確認してください.
では,コンパイルしてみましょう.コンパイルのコマンドは cc もし くは gcc でどちらも同じ動作をします.
$ cc hello.c
とすれば良いのですが,これからコマンドによるコンパイルのときには必ず 「TAB補完」機能を使用してください.どういうことかというと,例えば,
$ cc he
まで入力してからキーボードの左上の方にある TAB キーを押してくだ さい.そうすると,ファイル名が補完されて
$ cc hello.c
のようになるはずです.この機能はキー入力を減らす効果だけではなく,保存し たディレクトリが正しいかどうかの判断にも役に立つので,必ず使うようにして ください.
正しくコンパイルされるとエラー表示もなくもとのコマンドプロンプトに戻りま す.(図3)
図3 正しくコンパイルされたところ
もう一度リストコマンドでディレクトリにあるファイルを確認します.
$ ls
すると, a.out という名前のファイルができているはずです.これが プログラムが機械語に翻訳された結果の実行ファイルです.実際に動かすには, それ自身がコマンドになっていますので,
$ ./a.out
とします.このときもTAB補完を忘れないでください.
図3 実行コマンド入力画面
最初にあるドットとスラッシュ ./ はこのディレクトリに あるファイルを指定するために必要なものですので,忘れないでください.
Hello, world! |
と図5のように正しく表示されたでしょうか?
図4 実行結果
これがC言語プログラミングと実行の流れです.ここからは教科書のp.10以降の 流れに従って作業します.
この授業ではテストや宿題の提出をすべて電子メールで行います.そのため,電 子メールの操作になれておくことが大変重要になってきます.これまで何度か使っ てきてはいると思いますが,今一度環境の確認を行いましょう.
この授業では,テストや宿題の提出はすべて電子メールを利用して行います.そ の際に,こちらで形式を指定する「解答用紙」を利用します.解答用紙は物理的 な紙媒体ではなく,テキストデータですので自分で復元したり作成したりするこ ともできますが,基本的にはダウンロードして利用する形式です.次にある解答 用紙のリンクを右クリックして,出てくるポップアップメニューから「リンク先 をファイルに保存」を選択して自分の「ホームディレクトリ」内の適当な場所に 保存し,メールに添付する練習をします.
解答用紙に問題が記載されていますので,それに必要な事項を記入してくださ い.記入の際には,テキストエディタを使用します.解答用 紙そのものがプログラムとなることを前提としていますので, 記入欄の指定以外の部分に記入したり,ヘッダ部分を改編することはしないで下 さい.ただし,クラス分類はC6かC7のどちらか違う方を消しておいてください.
記入したらファイル名を自分の正しい学生番号を含むように __ を(過年度生の 場合は年度も)修正し て保存してください.
hoge とは適当な文字列という程度の意味なので,ここも各自で自分 の名前に変えるのを忘れないようにしてください.
提出方法
以下のようなメールを作成し,送信してください.
宛先 | |
件名 | test_100412_s0940** |
本文 | 学生番号と氏名を必ず記入すること 上記記載が署名にある人は署名のみでも可 |
添付ファイル名 | test_100412_s0940**.c |