Cプログラミング TIPS
このページには、授業などであまり口にしないかもしれないけれども、学習上のヒントや、演習を進めていく上で知っておくと便利なことを、まとめておきます。
キー入力はできればサボりたい
「端末」でのカーソルキーの活用
実習の間、プログラムの作成とコンパイル、チェックの度に、"cc 何々.c -lm" といった具体に、全く同じ(あるいは、ほとんど同じ)コマンドを 何度となる繰り返さなければならない。 しかし、端末エミュレータの「中」で、我々が打ち込んだコマンドを処理してくれるプログラム(シェルと呼ばれている)は、なかなかに賢くて、 我々がタイプした内容をちゃんと記憶している。 それを取り出すのは簡単で、キーボードのカーソルキー(↑キー)を押すだけだ。 過去のコマンドにさかのぼって、(もし変更があれば、←キーや→キーを使って修正してから)、Enterを押せばよいだけだ。 (キータイプが好きでたまらない人以外は)この操作方法は、是非、覚えておきたい。
Tabキーによる字下げ
プログラムを見易く整えるために「字下げ」を行う際、スペースキーを何度も押して(叩いて)いないだろうか。 こうした字下げ(インデント)動作には、Tabキーを使うのが便利だ。 Tabを押すと、一発で字下げができ、しかも、字下げの位置も自動的に合わせられる。
Tab幅の変更
一個のTabで何文字分の字下げをするかは、KWriteの設定で調整できる。
- KWiteの「設定」メニューの中の「エディタの設定(C)」を選択
- 左列のアイコンから「編集」をクリック
- 「編集オプション」の中の、「タブ」の項目の中の「タブ幅」を調整(デフォルトでは8に設定されている)
エラーメッセージに目を通せ
あれこれ苦労した書いたプログラムがやっと完成してコンパイルしてみると
ex1.c: In function ‘main’: ex1.c:5: error: expected ‘;’ before ‘}’ token
のようなエラーが出たとしよう。 ここで、ただがっかりするだけでなく、きちんとエラーメッセージを「読む」努力をしよう。
最初の行は、エラーが main(){何々}の中にあるぞ、という意味。
二行目のメッセージの数値(上では5)は、エラーのあった行の番号を表している。エラー箇所は、5行目の前後にあることを、コンパイラー は示唆しているわけだ(きっちり5行目とは限らない点に注意)。
KWriteの行番号表示
少し長いプログラムになると行番号を数えるのは、なかなか骨が折れる。そこで、エディタ(KWrite)の「表示」メニューから「行番号の表示(C)」を選ぶと、 ウィンドウの左端に行番号が表示されるので、わざわざ数える手間が省ける。
上のエラーの意味は、『 '}'の前に';'を忘れていませんか』である(行末のセミコロンは忘れがちであるので、皆、注意するように)。 ここで、トークン(token)とは、Cプログラムでつかう「単語」と考えてよい。
日本語文字を探し出せ
どう見ても間違いは無さそうなのに、コンパイルすると
bash 3.2$ cc sample.c sample.c: In function 'main': sample.c:3: error: stray '\241' in program sample.c:3: error: stray '\241' in program
のようなエラーが出て、どこが悪いのか、なかなか見つからず苦労している者が多い。 このエラーメッセージが出た場合は「3行目に、Cのソースコードの中に、日本語の文字が紛れて(迷い込んで)いる」と解釈すればよろしい。 '\241'は、(日本語)文字のコード番号。
その対処法は、3行目の辺り(前後の行も含めて)に、半角文字以外の、日本語文字が無いかどうか入念にチェックするしかない。 ところが、日本語スペースは、そもそも「見えない」し、他の記号も、全角か半角か、区別が難しい。
意図的な文字化けによって、日本語文字の場所を探す
そこで、こんなときに役立つ必殺技をひとつ紹介する:
- KWriteの「ツール」メニューの中の「エンコーディング(N)」を選択すると、長いリストが現れるので、その先頭近くの「Unicode(utf-8)」を選択する。
- すると、日本語文字の入っていた場所が「文字化け」して、●のような記号で表示される(下図参照)。そこが問題の場所なので、削除するか、半角文字でタイプし直す。
- 再度、「ツール」メニューの中の「エンコーディング(N)」を選択し、リストの後半の「日本語(eucjp)」に戻しておく(この作業は必須)。

自宅のパソコンで自習する
この授業で使っているシステムは、Unixと呼ばれるOS(Operating System)の仲間であるLinux (CentOS 5.4J)の環境で動作している。 これをこのまま自宅のパソコン上に実現するのは、かなりの知識と手間が必要だろう。 ここでは、比較的簡単と思われる3つのパターンを紹介しておく。
注意:操作ミスなどでパソコンが不調になったりデータが失われる可能性は0ではないので、下調べを十分に行った上で、各自の責任で試すこと。
Windowsの場合
WindowsはUnixとの違いが大きいので、「授業の作業をそのまま」は、なかなか難しい。比較的手軽なのは、Cygwin というソフトを利用する方法だろう。 インストール方法についての情報は、ネット上で、"Cygwin インストール"などで検索すれば見つかるはずだ。 インストーラー(Setup.exe)で設定を進める途中で、最低限、Cの開発環境 "Devel/gcc-core"を選ぶこと。
Cygwinの場合、「端末」に相当するのがCygwin本体になる。一方、KWriteに相当するエディターは、Windowsに標準のメモ帳 を使ってもよいし、TeraPadなどの フリーソフトを活用するのもよいだろう。
Linuxをインストールして使う
個人的にはオススメ
Windowsの「内部」に、Linuxをインストールすることも可能だ。現時点で、個人的に良さそうに思うのは VMware Player上で動作するubuntuと呼ばれるLinuxだ。 VMwareは、コンピュータの中に仮想的に別のコンピュータが動いているように見せかける「仮想化環境」を提供するソフトのひとつで、 登録は必要なものの、 無料でダウンロード することができる。 授業で使っているCentOSとは、外見や入っているソフトは多少ことなるものの、同様の環境を簡単に作り上げることができるし、 何しろ、見慣れたWindowsの中で別のOSが動作するのは不思議で楽しい。 ただし、それなりに高いスペックのマシンでないと、動作が遅く感じられる場合があるかもしれない。
自分のパソコンのハードディスクにLinuxを入れることに抵抗感のある場合は、CD/DVD、USBメモリーなどから起動出来るLinuxもある。 上に書いたubuntuも、DVDやUSBメモリーから起動して使うことができるし、 KNNOPIXも、そうした使い方に向いている。 DVDを焼いたりする手間はかかるものの、手軽にLinuxを試すことができる。 ただし、不用意にLinux用のインストーラーを起動してしまうと、パソコンのWindowsの領域を消してしまったり、Windowsが起動できなくなる可能性もある。 ソフトは十分意味を了解した上で操作すること。
Macの場合
もしMacを使っている場合は、OSそのものがUnixの一種なので、授業とはソフトの使い方などが若干異なるものの、 あまり手をかけないで同様のことが可能である。Cコンパイラーは標準ではインストールされていないので、 App StoreからXcode(無料)をダウンロードしてインストールする必要がある。 なお、XcodeのPreferencesを開き、Downloads/Componentsの中から"Command Line Tools"も忘れずに追加でインストールしておくこと。 基本的に、Appleが標準で提供しているソフトだけで環境が整う点は安心である。
講義で使っている「端末」に相当するソフトは /アプリケーション/ユーティリティ/ターミナル.appになる。
KWriteに相当するテキストエディタとしては、/アプリケーション/テキストエディット.appがインストールされている。 ただし、このソフトはプログラムを書くにはちょっと使いにくいので、例えば、 miなどのフリーソフトを利用するのも手である。
そもそもXcode自体が、非常に洗練されたプログラム開発環境なので、Mac派な方は、是非トライしてみて欲しい。 自学習するための情報は、ネットや書籍として、簡単に手に入るはずだ。
(この先、作成中)