Cプログラミング TIPS
このページには、授業などであまり口にしないかもしれないけれども、学習上のヒントや、演習を進めていく上で知っておくと便利なことを、まとめておきます。
キー入力はできればサボりたい
「端末」でのカーソルキーの活用
実習の間、プログラムの作成とコンパイル、チェックの度に、"cc 何々.c -lm" といった具体に、全く同じ(あるいは、ほとんど同じ)コマンドを 何度もタイプしなければならない。 しかし、端末エミュレータの「中」で、我々が打ち込んだコマンドを処理してくれるプログラム(シェルと呼ばれている)は、なかなかに賢くて、 我々がタイプした内容をちゃんと記憶している。 それを取り出すのは簡単で、キーボードのカーソルキー(↑キー)を押すだけだ。 過去のコマンドにさかのぼって、(もし変更があれば、←キーや→キーを使って修正してから)、Enterを押せばよいだけだ。 (キータイプが好きでたまらない人以外は)この操作方法は、是非、覚えておきたい。
Tabキーによる字下げ
プログラムを見易く整えるために「字下げ」を行う際、スペースキーを何度も押して(叩いて)いないだろうか。 こうした字下げ(インデント)動作には、Tabキーを使うのが便利だ。 Tabを押すと、一発で字下げができ、しかも、字下げの位置も自動的に合わせられる。
Tab幅の変更
一個のTabで何文字分の字下げをするかは、geditの設定で調整できる。
- geditの「編集」メニューの中の「設定」を選択
- 「geditの設定」パネルが開いたら「エディター」のタブを選択
- 「タブ文字」の項目の中の「タブ幅」を調整(デフォルトでは8に設定されている)
エラーメッセージに目を通そう
あれこれ苦労した書いたプログラムがやっと完成してコンパイルしてみると
ex1.c: In function ‘main’: ex1.c:5: error: expected ‘;’ before ‘}’ token
のようなエラーが出たとしよう。 ここで、ただがっかりするだけでなく、きちんとエラーメッセージを「読む」努力をしよう。
最初の行は、エラーが main(){何々}の中にあるぞ、という意味。
二行目のメッセージの数値(上では5)は、エラーのあった行の番号を表している。エラー箇所は、5行目の前後にあることを、コンパイラー は示唆しているわけだ(きっちり5行目とは限らない点に注意)。
geditの行番号表示
少し長いプログラムになると行番号を数えるのは、なかなか骨が折れる。そこで、エディタ(gedit)の「編集」メニューから「設定」を選び、 「表示」のタブで「行番号を表示する」にチェックを入れておくとよい。
上のエラーの意味は、『 '}'の前に';'を忘れていませんか』である(行末のセミコロンは忘れがちであるので、皆、注意するように)。 ここで、トークン(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を使っている場合は、日本語文字はオレンジ色の枠に囲まれて表示されるので、丹念にプログラムを見れば発見できるだろう。
geditを使っている場合は、カーソルの動きで文字の幅(日本語のスペースは、半角のスペースよりも幅広)を推測するなどして、根気強くチェックする必要がある。
自宅のパソコンで自習する
この授業で使っているシステムは、Unixと呼ばれるOS(Operating System)の仲間であるLinux (Ubuntu 12.04LTS)の環境で動作している。 これをこのまま自宅のパソコン上に実現するのは、かなりの知識と手間が必要だろう。 ここでは、比較的簡単と思われる3つのパターンを紹介しておく。
注意:操作ミスなどでパソコンが不調になったりデータが失われる可能性は0ではないので、下調べを十分に行った上で、各自の責任で試すこと。
Windowsの場合
WindowsはUnixとの違いが大きいので、「授業の作業をそのまま」は、なかなか難しい。比較的手軽なのは、Windowsの中でUnix的な環境を整えるためのソフトを利用する方法だろう。 そうしたソフトとして一般的なのは、MinGWやCygwinである。 インストール方法についての情報は、ネット上で、"Cygwin インストール"などで検索すれば見つかるはずだ。
MinGWをインストールした上で、TurtleEditと組み合わせて使用する方法をこちらのページに説明してあるので参照のこと。
Linuxをインストールして使う
個人的にはオススメ
Windowsの「内部」に、Linuxをインストールすることも可能だ。現時点で、個人的に良さそうに思うのは VMware Player上で動作するubuntuと呼ばれるLinuxだ。 VMwareは、コンピュータの中に仮想的に別のコンピュータが動いているように見せかける「仮想化環境」を提供するソフトのひとつで、 登録は必要なものの、 無料でダウンロード することができる。 授業で使っているUbuntuとは、外見や入っているソフトが多少異なるものの、同様の環境を簡単に作り上げることができるし、 何しろ、見慣れた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が標準で提供しているソフトだけで環境が整う点は安心である。
講義で使っているTurtleEditにはMac版も用意されているので、ダウンロードして試してみると良いだろう。
Appleが配布しているXcodeは非常に洗練されたプログラム開発環境なので、Mac派な方は、是非トライしてみて欲しい。 自学習するための情報は、ネットや書籍として、簡単に手に入るはずだ。
(この先、作成中)