Cプログラミング TIPS

このページには、授業などであまり口にしないかもしれないけれども、学習上のヒントや、演習を進めていく上で知っておくと便利なことを、まとめておきます。 TurtleEditの使用を前提に書かれています。

字下げをして見やすくしよう

Tabキーによる字下げ

プログラムを見易く整えるために「字下げ」を行う際、スペースキーを何度も押して(叩いて)いないだろうか。 こうした字下げ(インデント)動作には、Tabキーを使うのが便利だ。 Tabを押すと、一発で字下げができ、しかも、字下げの位置も自動的に合わせられる。

TurtleEditでは、Tabストップの位置にオレンジ色の点線が現れるようになっている。 そこで、if文やfor文のブロックのはじめと終わりの位置が揃うようにすると、プログラムの論理構造がひと目で確認できる。

エラーメッセージに目を通そう

あれこれ苦労した書いたプログラムがやっと完成してコンパイルしてみると

ex1.c: In function ‘main’:
ex1.c:5: error: expected ‘;’ before ‘}’ token

のようなエラーが出たとしよう。 ここで、ただがっかりするだけでなく、きちんとエラーメッセージを「読む」努力をしよう。

最初の行は、エラーが main(){何々}の中にあるぞ、という意味。

二行目のメッセージの数値(上では5)は、エラーのあった行の番号を表している。エラー箇所は、5行目の前後にあることを、コンパイラー は示唆しているわけだ(きっちり5行目とは限らない点に注意)。

上のエラーの意味は、『 '}'の前に';'を忘れていませんか』である(行末のセミコロンは忘れがちであるので、皆、注意するように)。 ここで、トークン(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行目の辺り(前後の行も含めて)に、半角文字以外の、日本語文字が無いかどうか入念にチェックするしかない。 ところが、日本語スペースは、そもそも「見えない」し、他の記号も、全角か半角か、区別が難しい。

TurtleEditを使っている場合は、日本語文字はオレンジ色の枠に囲まれて表示されるので、丹念にプログラムを見れば発見できるはずだ。

変数の値の途中経過を確認してみよう

コンパイルは通るのに、正しい結果が出ない場合、プログラムをじっと眺めるだけでは拉致があかないことも多い。 そんなときは、プログラムの途中に printf() を挿入して、計算途中の変数の値を出力し、それが期待したとおりになっているか、確認するとよい。

プログラム先頭部分(宣言部)に

#define DUMP(var) {printf("line#%d %s= %lf\n",__LINE__,#var,(double)var);}

と書いておけば、プログラムの途中で DUMP(変数名) と書くだけで、行番号と、そこにさしかかった時点での変数の値(数値)がプリントできる。

途中経過をプリントする箇所が不要になったら、コメントアウトしたり、最終的には削除しておけばよい。

自宅のパソコンで自習する

この授業で使っているシステムは、Unixと呼ばれるOS(Operating System)の仲間であるLinux (CentOS 6)の環境で動作している。 これをこのまま自宅のパソコン上に実現するのは、かなりの知識と手間が必要だろう。 ここでは、比較的簡単と思われる3つのパターンを紹介しておく。

Windows, Mac, Linuxの場合いずれも(オススメの方法)

比較的安全に誰でも実現可能な方法として、仮想計算機がオススメである。 M棟のICL教室とほぼ同様な環境が整う。 詳しくは、個人のパソコンにICL教室に近い実習環境を整えるを参照。

Windowsに自力で開発環境をインストールする場合

WindowsはLinux(Unix)との違いが大きいので、「教室の環境をそのまま」は、なかなか難しいものの、 比較的手軽なのは、Windowsの中でUnix的な環境を整えるためのソフトを利用する方法である。 そうしたソフトとして、MinGWCygwinがよく知られている。 インストール方法についての情報は、ネット上で、"MinGW インストール"などで検索すれば、具体的な手順を見つけることができる。

MinGWをインストールした上で、TurtleEditと組み合わせて使用する方法がこちらのページに説明してあるので参照のこと。

Macに自力で開発環境をインストールする場合

もしMacを使っている場合は、OSそのものがUnixの一種なので、授業とはソフトの使い方などが若干異なるものの、 あまり手をかけないで同様のことが可能である。 Cコンパイラーは標準ではインストールされていないので、App StoreからXcode(無料)をダウンロードしてインストールする必要がある。 Xcodeがインストールされた状態で、Terminalで gcc コマンド(やその他のプログラミング用のコマンド)を実行しようとすると、 "Command line developer tools" の追加インストールが求められるので、指示に従って"Install"する。

講義で使っているTurtleEditはMac専用版も用意されている。

Appleが配布しているXcodeは非常に洗練されたプログラム開発環境なので、本格的な開発を目指す人は、ネットや書籍の情報を手がかりに、是非トライしてみると良い。

(この先、作成中)