コンピュータは、私たちが書いたプログラムに従って動作します。
その背景には、問題解決の手順であるアルゴリズムを、自動的に実行させる仕組みがあります。
本記事では、プログラムの基本構造から実行の仕組み、さらに誤差や計算爆発といった重要概念までを、情報Ⅰの内容に基づいて整理します。
プログラムとは何か
プログラミングと言語の関係
問題を解決するための手順はアルゴリズムと呼ばれます。
そして、このアルゴリズムをコンピュータに自動実行させる手段として用いられるのがプログラミング言語です。
プログラミング言語は、人間が理解しやすい形でアルゴリズムを記述できるように設計されています。
そして、プログラミング言語によって記述されており、コンピュータに処理の手順を指示する命令の集まりのことをプログラムといいます。
つまり、プログラミング言語は、プログラムをつくるためのルールのことです。
プログラムをつくることをプログラミング、ある処理をプログラミング言語を使って具体的に表すことをコーディングといいます。
ソースコードと機械語の違い
プログラミング言語で書かれたプログラムはソースコードと呼ばれます。
一方で、コンピュータが直接理解できるのは0と1で表される機械語です。
そのため、ソースコードはそのままでは実行できず、機械語に変換する必要があります。
プログラミング言語を機械語に変換することを翻訳といいます。
ソースコードを機械語に変換する方法(翻訳)には主に次の2つがあります。
- コンパイル:あらかじめ全体を機械語に変換してから実行する
- インタプリタ:実行しながら1行ずつ変換する
これにより、コンピュータがプログラムを実行できるようになります。
プログラムの基本構造
変数とは何か
プログラムは、主記憶装置の値の書き換えによって実行されます。
変数とは、データを一時的に保存するための名前付きの領域です。
例えば、数値や文字列などの値を入れておき、後で再利用することができます。
もう少し詳しく説明すると、変数に値を代入するときは、実際には次のようなことが起きています。
- メモリの中に領域が確保される
- その領域に名前(変数名)が付けられる
- 値がその領域に保存される
つまり、変数 = メモリ上の領域 + 名前と考えると理解しやすいです。
変数を用いることで、処理を柔軟に記述することが可能になります。
配列とリストの考え方
配列やリストは、複数のデータをまとめて扱うための仕組みです。
- 配列:同じ種類のデータを順番に並べて管理する構造
- リスト:複数の要素をまとめて扱う構造
これらを用いることで、大量のデータを効率よく処理できます。
プログラムが動くまでの流れ

ここまでの説明と被る部分もありますが、プログラムが動くまでの流れを説明します。
まず、問題解決のための手順であるアルゴリズムを作成します。アルゴリズムの作成は、人によって行われることが多いですが、近年、AIによって行われることも増えています。アルゴリズムは、例えば、フローチャートによって表現されます。
次に、プログラミングをすることによってソースコードを完成させます。プログラミングも、最近AIによって行われることが増えています。
次に、ソースコードを翻訳します。これにより、プログラミング言語は、コンピュータが理解可能な機械語に変換されます。
次に、機械語の命令をCPUが実行します。この際、CPUが実行中のプログラムは、主記憶装置に保存されています。
CPUが次々に命令を実行していくことで、結果を得ることができます。
データ処理と誤差
数値表現と誤差の発生
コンピュータは数値を有限の桁数で表現します。
これは、メモリの容量が限られていることで数値を表現するための桁数を無限に確保することができないことや、2進数で情報を表現していることが原因です。
そのため、小数などを正確に表せない場合があり、これを誤差といいます。
誤差が問題になる場面
誤差は次のような場面で問題になります。
- 繰り返し計算による誤差の蓄積
同じ計算を何度も行うと、わずかな誤差が積み重なり、最終結果が大きくずれることがあります。 - 比較処理における誤差
本来は等しいはずの値でも、内部表現の違いにより一致しない場合があります。
例えば、小数の計算結果をそのまま「=」で比較すると誤判定が起こることがあります。 - 非常に大きい値や小さい値の計算
扱える桁数に制限があるため、桁あふれや丸めが発生し、正確な値が得られないことがあります。 - 現実世界のシミュレーション
物理現象などを数値で近似する際に、誤差が結果の信頼性に影響することがあります。
このように、誤差は単なる小さなずれではなく、用途によっては重大な問題につながる可能性があります。
計算量と計算爆発
計算量の基本的な考え方
計算量とは、問題を解くために必要な計算の回数や時間の目安です。
入力データの量が増えると、必要な計算量も増加します。
計算爆発とは何か
計算爆発とは、問題の規模が少し大きくなるだけで、必要な計算量が急激に増加する現象です。
計算爆発の具体例
例えば、並び替えや組み合わせを全て調べる問題を考えます。
- 10個の要素の並び方は、約360万通りあります。
- 15個になると、約1兆通りになります。
このように、要素数が少し増えるだけで、必要な計算回数が急激に増加します。
また、次のような問題でも計算爆発が起こります。
- 最短経路を全ての経路から探す問題
- 条件を満たす組み合わせを全探索する問題
このような場合、単純な方法では現実的な時間で解くことができなくなります。
そのため、効率的なアルゴリズムを考えることが重要になります。

確認問題
【問題1】プログラムとは何か。
【問題2】機械語とは何か。
【問題3】次の流れを正しい順番に並べ替えなさい。
A:機械語をCPUが実行する
B:アルゴリズムを作成する
C:ソースコードを作成する
D:機械語に翻訳する
【問題4】なぜ効率的アルゴリズムが重要か答えよ。
答え:【問題1】コンピュータに処理を指示する命令の集まり。 【問題2】コンピュータが直接理解できる0と1で表された言語。 【問題3】B → C → D → A 【問題4】計算爆発により、単純な方法では現実的な時間で処理できなくなるため。
まとめ
プログラムは、アルゴリズムをプログラミング言語で記述し、それを機械語に変換することで実行されます。
また、変数や配列などの基本構造を理解することで、効率的なデータ処理が可能になります。
さらに、誤差や計算爆発といった性質を理解することは、正確で効率的なプログラムを作る上で重要です。
