hello, world

hello, world

一番最初のプログラム。
サイト全体の目次

稿


稿

C99

C言語には大きく分けて1999年に改定されたバージョンと、それ以前のバージョンの二つがあります。1999年に改定されたバージョンは属にC99といわれています。C99とそれ以前のものとは言語上の違いはほとんど無く、それまでのC言語で力不足だった点がC99で補われました。また、基本的にC99以前のものはC99でコンパイル可能です。

本コーナーではC99以前のC言語を対象とし、C99独自の機能である場合はそれを明示することにします。

hello, world

C言語のバイブルと言われる本(.)の最初に、.のような記述があります。というわけで、早速やってみましょう。

新しいプログラミング言語を学ぶ唯一の道は、それでプログラムを書いてみることである。最初に書くべきプログラムは、どんな言語でも同じで、例えば次のものである。

hello, world

という単語を印字せよ。

プログラミング言語 C 第2版 ANSI 規格準拠 プログラミング言語 C 第2版 ANSI 規格準拠, B.W.カーニハン/D.M.リッチー 著 石田晴久 訳 共立出版 P.7 より引用

一番最初のプログラム

このセクションのリスト

/*01*/ #include <stdio.h>
/*02*/ 
/*03*/ main()
/*04*/ {
/*05*/   printf("hello, world\n");
/*06*/ 
/*07*/   return 0;
/*08*/ }
			

コンパイル、実行できたでしょうか?正しく実行できていれば画面に「hello, world」と表示されたと思います。

まず、C言語の大原則ですが、プログラムは一行目から下へ順に実行されていきます (*1) 。

ただし、制御構文や関数の呼び出しによって流れが変わることもあります

コメント


/*」と「*/」で挟まれた部分はコメントとして扱われ、コンパイル時に無視されます (*2) 。プログラムを書く際に、処理の内容が分かるように随時コメントを入れるようにしましょう。

本コーナーではコメントによって行番号をふっていますので、そのままコピーしてコンパイル、実行することができます

コメントは命令の途中など、プログラム上意味ある場所以外ならば自由な場所に入れることができます.。また、「/*」と「*/」によるコメントは複数行にわたってもかまいません.

#include <stdio.h>

ma/*間違ったコメント*/in()
{
  printf("Hello, world.\n");/*正しいコメント*/

  return 0;
}
	
#include <stdio.h>

main()
{/*ここから
  printf("Hello, world.\n"); ここまでコメント*/

  return 0;
}
	

[C99]コメントにはもう一種類あって「//」によるコメントはそこから行末までがコメントとして扱われます.

#include <stdio.h>

main()
{
  //printf("hello, world\n"); この行はすべてコメント

  return 0;//「;」の後ろから行末までコメント
}
	

フリーフォーマット

C言語はフリーフォーマットです。命令の途中など、プログラム上意味のある場所に空白を入れたり、改行したりしなければ、好きなように書いてかまいません.。ただし、「#」で始まる行は、それで一行とします。

/*list-1.1.1 の主要部分を一行に書き換えた例*/
#include <stdio.h>
main(){ printf("hello, world\n"); return 0; }

/*list-1.1.1 の誤ったフォーマットの例 1
有意味な場所で改行されている*/
#include <stdio.h>
main(){
  pri
  ntf("hello, world\n");
  return 0;
}

/*list-1.1.1 の誤ったフォーマットの例 2
「#」で始まる行に*/
#include <stdio.h> main(){
  printf("hello, world\n");
  return 0;
}
	

とはいえ、あまり好き勝手に書いてしまうと見にくくなってしまうので、ある程度はお作法通りにした方が良いでしょう。この作法、ここでは説明しきれませんので、これから見ていくプログラムで徐々に慣れてください。

list-1.1.1-03

C言語ではプログラムの中心部分を

main(){ /*ここ*/ }
			
の「ここ」と示した部分に記述します。コンパイラはこの部分をプログラムの中心部分と解釈するので、「main(){}」は必ずプログラムに一つだけです。

list-1.1.1-05

C言語では「;(セミコロン)」で区切られた部分ごとをステートメント(文)と言い、命令を実行する一つの単位になっています。すると list-1.1.1 をざっと見た感じでは printf というのと return というのが何かの命令のようですね。

C言語の命令は演算関数制御文からなり、それぞれ大まかな意味は次のとおりです。

演算加減乗除やメモリの操作などの基本的な計算。
関数複数の演算を組み合わせて意味のあるひとつの機能にまとめたもの。
制御文プログラムの流れを制御するための文

関数は自分で作ることも出来ますが、よく使う機能をまとめた関数はC言語の規格として用意されていて、それを標準ライブラリ関数と呼びます。ここにでてくる printf も標準ライブラリ関数のひとつで、画面に文字を表示する機能を提供しています。一方、07行目にある return は制御文で、関数を作る際にその関数を終了する命令になります。実は「main(){}」も関数の一種で、この中で「return 0;」とするとプログラムを正常終了させる意味になります。

list-1.1.1-01

標準ライブラリ関数を使うには準備が必要です。それが最初の行で書かれている

#include <stdio.h>
			
です。ここで stdio.h はファイル名です。include はその名のとおり後ろで指定されたファイルの内容をその場所に取り込みます。では stdio.h ファイルには何が収められているのでしょう?実はここに標準ライブラリ関数のうち、printf 関数などの基本的な入出力に関わる関数が用意されているのです。ですので、stdio.h を include する、つまり含めることによって、ここに用意された printf などの関数が使えるようになるのです。また、このような ~.h のファイルをヘッダーファイルといい、自分がどんな関数を使いたいかによって変ってきます (*3) 。ちなみにstdio.hスタンダード・アイ・オー・ヘッダーの略だとされています。

標準ライブラリ関数のヘッダーファイルはコンパイラによって決められた場所に用意されるので、パスを気にする事無くファイル名だけを記述します

キーワード

return のような制御文などの特別な意味を持つ語句をキーワード(予約語)とよび、C言語で規定された用途以外に使うことは出来ません。キーワードの一覧を.に示します。これらは必要なものを順に説明していきます。

auto break case char const
continue default do double else
enum extern float for goto
if int long register return
short signed sizeof static struct
switch typedef union unsigned void
volatile while

関数

ここで関数について簡単に説明しておきます。関数は

関数名(引数)
			
という形をとります。関数を実行することを関数を呼び出すといういい方をし、関数に引数を与えることを~を渡すといいます。上で、関数は演算の組み合わせだと書きましたが、今その中身がどうなっているのかを知る必要はありません。覚えてもらいたいのは関数に何かを渡すと中でなんだかわからないが処理が行われ、その結果だけが返ってくるということです。また、この関数に渡す何かのことを引数(ひきすう)と言い、返ってくる結果のことを戻り値と言います。

C言語にはいろいろな関数が用意されていますが、それぞれの用途によって、引数の数や戻り値の有無が異なってきます。printf などは、最低でもひとつの引数が必要ですが、必要に応じていくつ書いてもかまいません。関数が複数の引数を取る場合、

関数名(第1引数, 第2引数, 第3引数,・・・);
			
のように引数をカンマで区切ります。また、関数の途中であってもプログラム上有意味なところでなければ改行してかまいません。例えば、
関数名(
	第一引数, 第二引数,
	第三引数)

は正しい記述です。

コラム

C言語のバイブル

C言語は1973年にリッチーという人が世に送り出しました。そののち、1978年に.という本がカーニハンという人とリッチーの共著で出版されました。この本は C言語 の解説書が不足していた当時、C言語のバイブルとして多くの C言語 プログラマーにK & Rの愛称で読まれていました。この本は日本でも、1981年に石田晴久氏によって翻訳されたものが.の名で共立出版から出されました。その後、1989年にC言語は ANSI という規格によって統一されましたが、それに基づいて「K & R 第2版」が出版され、日本でも再び石田氏によって翻訳されたものが出版されました。この新しいバイブル、.(共立出版) (*4) は現在でも出版されていますので大きな本屋さんへ行けば見つかると思います。このほかにもよく書かれている本はたくさんありますが、「バイブル」といういと、持っているだけで自分が C言語 プログラマーの端くれになれたような気になれるありがた~い本ですから、お守りのつもりで一冊買ってみてはいかがでしょうか。

「K & R」と言えば今ではこの第二版を指します。
The C Programming Language
プログラミング言語C
プログラミング言語 C -ANSI 規格準拠- 第2版

練習問題

問題-1.1.1

list-1.1.1 をまねて画面に

C言語は
楽しいぞ!
			
と表示させてください。ただし、printf 関数は二回使って、一つ目で「C言語は」を、二つ目で「楽しいぞ!」を表示させます。

問題-1.1.2

問題-1.1.1 をやったのち、一つ目の printf 関数をコメントで隠す(コメントアウトする)ことで「楽しいぞ!」とだけ表示されるようにしてください。

練習問題回答例

問題-1.1.1

#include <stdio.h>

main()
{
  printf("C言語は\n");
  printf("楽しいぞ\n");

  return 0;
}
			

問題-1.1.2

#include <stdio.h>

main()
{
/*printf("C言語は\n"); */
  printf("楽しいぞ\n");

  return 0;
}
			


読み込み中・・・
10秒待っても表示が変わらない場合、次の理由が考えられます。
・Javascript が無効になっています。
・検索エンジンのキャッシュを見ています。
サイトホームへ / 上位ページへ / ページトップへ / PAROFトレンドショッピングへ
Copyright (C) 2010 totobon all right reserved.