C言語を使ったプログラミング入門を個人的に書いてます。外国のC言語チュートリアルにはかなり優れてるものもあります。日本語のサイトで包括的かつ優れたC言語のチュートリアルはあまり無いように思います。いずれC言語らへんからリンク貼るかもしれません。
プログラミング入門(Gaoshan編)
編集プログラミングの世界へようこそ!
本ウィキはC言語を梯子として使い、プログラミングを学ぶ為のチュートリアル風ウィキだ。何故プログラミングを学ぶのか、そもそもプログラミング、或いはプログラムとは何なのか、C言語の歴史とかはここ(冒頭)では扱わない。とにかく実際的な事を書いていきたいと思う。そして何よりプログラミングを楽しんで頂きたい。
事始
編集まず何よりプログラミングする為の道具(Tool)が必要だ。最低限必要になるのは以下の通り。尚、このページをブラウジングできていることを前提として、当たり前すぎる部分(電気とか)は省いた。
フリー(無料)のものが幾つかあるので、入手方法についてはインターネット検索などを利用して欲しい。コンパイラはもちろんC言語をコンパイル出来るものが必要だ。名指しで言わせて貰うと、コンパイラはGCC、エディタはemacsかviが有名だ。エディタについては慣れがあるので、最初はOSに標準付属しているようなテキストエディタでもよいだろう。Windowsシステムを使用しているなら、Cygwinを導入するのもいいかもしれない。これはコンパイラやエディタを含むUNIXシステムをWindows上に実現するものだ。
使用するコンパイラの使い方やコンパイル方法もそれによって様々なので、インターネット検索で解決してもらいたい。検索を頼んでばかりだが、インターネットはプログラミングに欠かせない情報源になってるといっても過言ではないので、これにも慣れて頂きたい。現にあなたはインターネットでこれを読んでいるのだし・・・。
さぁ準備はできただろうか?最初にコンパイルして頂きたいのはこれだ。俗にソースコードとか、単にソースや、コードとも云われる。プログラムとも呼ばれることがあるが、プログラムの場合は実行形式(バイナリ)なども含んだ意味になっているので、コンパイルする前と区別する為、プログラムの元(ソース:source)ということで、ソースコードと呼ばれるようになった。それの区別が無い(数値でプログラムを組む)時代もあったということだ。ではソースコードを見てみよう。
#include <stdio.h> int main(void) { printf("hello, world\n"); return 0; }
ここでお願いがある。特にこれが始めての人へ、上記のプログラムを「コピー&ペースト」しないで欲しい。いろいろと理由があるが、とにかく「手を使って欲しい」ということだ。目で見て、脳を通じて、手で打って欲しい。
コンパイル
編集打ち終わっただろうか?そしたら'hello.c'として保存したとしよう。コンパイラによる違いもあるが、コンソール(コマンドプロンプト、或いはターミナル)からコンパイルする方法は殆ど同じだ。任意のコンパイラのコンパイルコマンドを仮に'cc'とすれば、
cc hello.c
でコンパイル出来る。ccの部分はgccかもしれないし、lccかもしれないし、或いはccそのままかもしれない。統合開発環境を使っている場合にはまた違った操作が必要になるので、そのソフトウェアのマニュアルか、インターネットで調べて欲しい。
さて、エラーが何も表示されていなければきっとコンパイルに成功したんだろう。その場合は新たなファイルが1つ以上作成されている筈だ。目的はプログラムを作るということだったが、それは最終的には実行ファイルを得ることだ。実行ファイルのファイル名はシステムやコンパイラによって異なるが、例えばLinux上のgccでは明示的に指定しない限り'a.out'という実行ファイルになる。Windowsシステムでは'hello.c'をコンパイルすると、'hello.exe'という実行ファイルになる。が、Windowsシステム上でもgccなどUNIX生まれのコンパイラの場合は'a.exe'などとなったりする。自分の環境で実行ファイルが作成されているか確認してみてほしい。そしたら次は実行してみよう。
UNIXシステムでは
./a.out
などとする。'./'はカレントディレクトリを指し、その中の'a.out'を指している。
Windowsシステムでは
hello.exe
などとする。'.exe'は省略可能だ。実行ファイル名はコンパイラによって異なるが、拡張子に'.exe'がついてるのが実行ファイルなのでそれに注目して探してみて欲しい。それからマウスで実行ファイルを選んで実行するのは避けたほうがよい。一瞬で終わってしまい、表示された結果が見れないからだ。'MS-DOSプロンプト'から行うこと。使い方は・・・そうインターネットである。
実行
編集さて、実行してみると、案の定こう表示される筈だ。
hello, world
もしあなたがこれを始めて作成したのだとしたら、C言語の為の最初の儀式を終えたと言ってよいだろう。それにこれが作れた(実行ファイルが得られた)ということは、ツールを上手く使いコンパイル出来たということだ。コンパイルの仕方は大まかに分かっただろう。これが出来たなら、何が作れるかはしばらくソースコードのみの問題となる。
Coffee break: hello, world!
編集よくC言語の入門書で'hello, world'のプログラムが最初に取り上げられる。これはC言語のバイブルとされるカーニハンと リッチーの'プログラミング言語C'を元にしているのだが、おそらくこの著者の二人のうちどちらか、或いは両方が無線好き だったからに違いない。無線の世界では、自分を発信源にしてまさに世界に向けて発信し、会話することができる。 世界(不特定多数の受信者)に対しての挨拶として、'hello, world'と言ったのだ。
'hello, world'プログラムの詳細
編集#include <stdio.h>
編集さてそれでは'hello, world'プログラムの詳細を見ていってみよう。まず
#include <stdio.h>
とは何か。includeとは「含む」という意味だが、ここでは「取り込む」と理解したほうが分かりやすいだろう。
何を取り込むのか?その後に書いてある'<'と'>'で囲んだファイル、stdio.hを取り込むことを明示している。これはC言語で規定された標準ライブラリ(Standard C Library)といって、stdio.h(Standard I/O)は入出力に関してを主に定義している。これをincludeすることによって、printfを使用できるようにしているのである。ひとまずはここまでにしておこう。
int main(void)
編集さて次は
int main(void)
である。まずintとvoidについて覚えて欲しい。これはCで決められたキーワードであり、どちらも型を表している。型とは整数とか、文字とか、データの種類を定めるものであると、ひとまず理解しておいて欲しい。では何の型を定めているか。その前に関数の定義・宣言に関する文法を簡単に紹介しておこう。基本的には
返り値の型 関数名(引数リスト) return_type function_name(argument_list)
で宣言される。となると、先の文は「int型を返し、voidを引数とする、mainという名の関数」を宣言していることになる。intとvoidはそれぞれ返り値の型と引数の型を定義していたのだ。ついでなのでよく使われる型も紹介しておこう。これらは基本となる型々なので、基本型と呼ばれている。そのまんまだ。
- char : 文字
- int : 整数
- float : 実数
- void : 型なし
これらから察するに、mainは整数を返す、引数の無い関数ということになりそうだ。
Coffee break: 宣言と定義
編集Coffee break: 関数と手続き
編集Coffee break: メインルーチン、サブルーチン、コルーチン
編集(書きかけ|続くのか未定)
あなたのアカウントの利用者名が変更されます
編集こんにちは。お世話になっております。
ウィキメディア財団の開発者チームは、ウィキ間通知などの新しい改善されたツールを利用者に提供するために活動しています。このたびこの一環として、アカウントの仕組みを変更する予定です。この変更が行われると、あなたはどのウィキでも同じアカウント名を使えるようになります。これにより編集や議論がより行いやすくなる新機能を提供できるほか、各ツールはより柔軟な利用者権限を利用できるようになります。この副作用として、利用者アカウントは計900を超える全ウィキメディア・ウィキ上で一意でなければならなくなります。詳しくは、お知らせをご覧ください。
残念ながらあなたのアカウントは、同じGaoshanという名前を持つ別のアカウントと衝突しています。あなたが今後もウィキメディアのウィキを使い続けられるように、あなたのアカウント名はGaoshan~jawikibooksに変更される予定です。もしこの利用者名でもかまわなければ、何もする必要はありません。もし新しい利用者名が気に入らない場合は、利用者名の変更を依頼できます。
あなたのアカウントは従来と同様に使えますし、過去の編集に対する帰属が表示されることは変わりません。ただしログイン時に新しいアカウント名を使う必要があります。
ご不便をおかけして申し訳ありませんが、よろしくお願い致します。
ウィキメディア財団 コミュニティ連絡担当者
Keegan Peterzell
2015年3月18日 (水) 02:58 (UTC)
利用者名が変更されました
編集統一ログインへの完全移行の一環として、この利用者名が変更されました。もしあなたがこの利用者名の持ち主なら、以前の利用者名とパスワードでログインして、詳しい情報を得ることができます。もしこの新しい利用者名が気に入らなければ、ログインした上で新たな利用者名を選ぶことがこちら(特別:グローバル利用者名変更依頼)からできます。 -- Keegan (WMF) (talk)
2015年4月19日 (日) 09:10 (UTC)