next up previous contents index
Next: 見やすいプログラミングとデバッグ Up:  C++ 言語とプログラミングの基礎 Previous: main 関数の作成   Contents   Index

プログラム開発の手順

計算機のプログラムを完成してもそれを実行するにはまだいくつかの手順が必 要です。まず、コンピュータがその内容を直接理解して実行できる命令は、機械 語とよばれる人間にとっては無味乾燥な数字列で成り立っています。このような 機械語でプログラムを組むことは、人間にとっては負担が大きいので、人間にとっ て理解しやすくてプログラムの記述が容易である様々な言語が開発されました。 このような言語を機械語に対して高水準言語とよんだりします。C や C++ もこの範疇にはいるでしょう。高水準言語で記述されたプログラムはその言語専 用の処理系によって機械語に翻訳しなければ実行できません。

高水準言語は処理系の方式によってインタプリタ言語とコンパイラ言語に分類さ れます。インタプリタとは通訳のこ とで、インタプリタ言語における処理ではプログラムを一命令づつ翻訳しては実 行します。一方、コンパイラとは翻訳家 のことで、言語では最初にプログラム全体を一括して機械語に翻訳(コンパイル) してから実行します。翻訳前のプログラムをソースプログラム、機械語に翻訳さ れたプログラムは実行可能なので実行プログラムといいます。C や C++ は、インタプリタ方式のものもありますが、普通はコンパイラ言語として利用さ れています。

1.2 にコンパイラ言語におけるプログラム開発の流れを 示します。

Figure 1.2: プログラム開発の流れ
\begin{figure}%
\begin{center}
\begin{small}
\begin{picture}(167.5,172.5)(0,-172...
...ine(1,0){115}}
\end{picture}\end{small}\end{center}\vspace{-1.5em}\end{figure}

まずエディタとよばれる文書やプログラムを編集するソフトウェアで、ソー スプログラムを作成します。これ をコンパイラとよばれる翻訳ソフトウェアで機械語に翻訳します。この際、 #include ...などに代表されるプリプロセッサ指令とよばれるコンパイルの ための様々な前処理がなされます。プリプロセッサ指令には、文字列の置換、ファ イルの取り込み、場合によってコンパイルの条件を変更するといった、コンパイ ルの前処理を指令するものがあります。#include は前節で述べたように、別の ファイルをそこにはめ込むことをします。普通は関数などの使い方を記したヘッ ダファイルというものをはめ込むために使います。

#include <...> は、先に述べたようにあらかじめ標準的に用意されている標 準関数とか組み込み関数とよばれる関数のヘッダファイルの組み込みに使われ、 計算機のあらかじめ指定された場所からファイルをもってきます。本章の例には 出てきませんでしたが、#include "..." は、自分の開発したクラスや関数の使 い方を書いたヘッダファイルの組込みに使われ、コンパイルの対象となってい るプログラムファイルの置かれている場所からファイルをもってきます。

ソースプログラムは、まずプリプロセッサ指令が処理され、続いてファイルの先 頭から順に解析処理されて、最終ゴールの機械語に近い目的プログラム とよばれるものが生成されます。 この作業は翻訳あるいはコンパイルといわれます。目的プログラムはオブジェク トプログラムともいわれますが、オブジェクト指向言語のオブジェクトと混乱す るので、本書では日本語でいうことにします。

目的プログラムは、このままではまだ実行可能ではありません。次に、各種のプ ログラムで標準的に使える関数などをあらかじめ翻訳して作られた目的プログラ ム、これをライブラリとよびますが、こ れらをリンカとよばれるソフトウェアで自作の目 的プログラムに結合、編集します。こうした手続きにより、はじめて実行可能な プログラムが生成されます。この実行プログラム を実行すれば、作者の期待通りの動作をしてくれるはずです。

しかし、すんなりここまで到達できるとは限りません。ソースプログラムをコン パイルする際に、コンパイラによって文法のミスを指摘されるかもしれません。 そうしたらコンパイラの示すエラーメッセージにしたがって、ソースプログラム を修正します。コンパイルのエラーばかりでなくリンカもエラーメッセージを出 します。ライブラリの手続きを使おうとして、その手続き名や使い方を間違って 指定してしまったりすると、そのことに関するエラーを示します。コンパイルや リンクのエラーがなくなるまで何度でもエディタを用いてソースプログラムの修 正を繰り返します。

たとえ実行プログラムができ上がったとしても、それが作者の期待通りの動作 をしてくれなければ、もう一度エディタでソースプログラムを書き直さなくては なりません。場合によるとプログラムを作成する上での問題の分析方法や設計方 法などの考え方そのものを見直さなくてはならないかもしれません。

従来は、以上のことを、コマンド入力のためのプロンプトとよばれる入力支援記 号で始まる行であるコマンドラインからエディット、コンパイル、リンク等を行 うコマンドを起動することによって行っていました。最近は、ソースプログラム の作成、編集から、コンパイル、リンク、実行までを一つのウィンドウ内で行え るようにした統合環境が多くなっ てきました。特に初心者の言語習得に向いています。


問題3   あなたの計算機環境でプログラムをコンパイル、 リンクして実際に実行してください。


next up previous contents index
Next: 見やすいプログラミングとデバッグ Up:  C++ 言語とプログラミングの基礎 Previous: main 関数の作成   Contents   Index
Yoichi OKABE 2006-05-20