アルゴリズム

アルゴリズムとは

ソフトウェアは膨大な数のプログラムの集まりで構成されています。プログラムとはコンピューターに対する命令を記述したものです。

ソフトウェアを開発するには、これらのプログラムをひとつひとつ作成していくことが必要になります。ユーザーが目的とする作業をコンピューターが実行できるような仕組みをたくさんのプログラムの集まりで実現するのです。その際に、コンピュータの処理の手順を記述する必要があります。

この処理手順のことをアルゴリズムといい、ソフトウェアやプログラムを作成するにあたっては、最初にアルゴリズムを考えてプログラム設計する必要があります。

フローチャート

フローチャートとは、アルゴリズムを図と文字を使って視覚的に表現したものです。フローチャートを描くことで、プログラムの流れが整理され、アルゴリズムを誰が見てもわかりやすい形で表現することができます。

フローチャートでは、処理の流れを上から下に向かって線で結んで表現します。処理は、矢印の方向に流れていきます。(図5-1./図5-2.)

図5-1.フローチャートの記号図5-2.フローチャートの例

アルゴリズムの処理

すべてのアルゴリズムは、以下の3つの処理の組み合わせで記述可能です。

順次処理とは、一本の処理の流れで記述される処理のことです。(図5-3.)また、分岐処理とは、条件によって異なる処理を行う場合に発生します。(図5-4.)また、同じ処理を条件が成り立つ限り繰り返すことを、繰り返し処理と言います。(図5-5.)

図5-3.順次処理図5-4.分岐処理図5-5.繰り返し処理

プログラミング言語

プログラミング言語とは

コンピューターに命令をするには、その目的に応じたプログラムを作成する必要があります。プログラムを作成することをプログラミング、プログラムを作成するために設けられた言語をプログラミング言語と呼びます。アルゴリズムをプログラミング言語で記述することによって、コンピュータに処理を行わせることができます。

人間が会話する時に言語を必要とするのと同じで、コンピュータにプログラムを行うにも、専用の言語が必要なのです。ここでは、そんなプログラミング言語について学びます。

プログラミング言語の仕組み

マシン語とアセンブラ

すでに説明したとおり、コンピューターは0と1の信号のみで動作します。これらで記述されたプログラム言語のことを、をマシン語(または機械語)と呼びます。コンピューターが誕生した初期の頃は、人間が直接マシン語を用いてプログラムを作成していました。

しかし、機械語でのプログラミングは、私たち人間にとって非常に困難であることから、マシン語の命令と英単語(または省略された英単語表記)を1対1で対応させたアセンブリ言語が誕生しました。アセンブリ言語は、そのままではコンピュータが理解できないので、アセンブリ言語を機械語に変換する、アセンブラと呼ばれるソフトウェアが開発されまし。

高水準言語と低水準言語

しかし、アセンブラを利用しても、コンピュータのプログラミングは困難であることには変わりませんでした。そこで、より人間にとって理解がしやすいコンピュータ言語が開発されました。それが、高水準言語もしくは、高級言語と呼ばれるものです。高水準言語には、C言語、C++言語、Java言語などといったものがあります。(表6-1.)

それに対し、マシン語およびアセンブラは、低水準言語もしくは低級言語と呼ばれます。

表5-1.主な高級言語
名前 特徴
C言語 AT&Tベル研究所によって作られた言語で、省略されて「C」とも呼ばれます。元々はUNIXというOSを開発するために作られた言語です。そのような経緯により、製品のハードウェアを直接制御することができ、効率のよいプログラムを作成することがしやすいのが特徴です。
C++言語 「C++」と書いて「シープラスプラス」と読みます。C言語の拡張版として開発された言語です。省略して「シープラ」などとも呼ばれます。C言語にオブジェクト指向の考え方をプラスした言語です。
Java SunMicrosystems社によって開発されたオブジェクト指向型の言語です。「ジャバ」と呼びます。「Write Once, Run Anywhere」というコンセプトのもとに作られ、作成したプログラムがコンピューターのOSやハードウェア環境がちがっても動作するという特徴を持ちます。主にWebアプリケーションシステムや、スマートフォンのAndroidのアプリケーションの作成に用いられます。
C# Microsoft社が開発した言語で、「シーシャープ」と呼びます。C言語やC++を参考にして作られています。もともとはMicrosoft社の製品向けアプリケーションを作成する目的に特化した言語でしたが、Webシステムやモバイル、ゲーム専用機など、さまざまな領域でも使われるようになっています。
PHP Webサーバー上で動作する言語で、Webアプリケーション作成に特化した言語です。言語仕様がオープンソースとして公開されており、サンプルプログラムがインターネット上に豊富に公開されているなど、学習、開発に取り組みやすい環境にあります。また、Javaなどと比較して容易に開発できることから、小規模なWebアプリケーションシステムを迅速に開発したい場合などに手軽に利用できます。
COBOL 「コボル」と呼びます。C言語とともに非常に古くから存在する言語で、事務処理用に開発されたプログラミング言語であることから、金融機関のシステムのメインフレームコンピュータなどに現在でも採用されています。

オブジェクト指向言語

現在のプログラミング言語は、オブジェクト指向という考え方に基づいたプログラミング言語が主流になっています。「オブジェクト」とは、「もの」や「目的」を意味する英単語で、プログラムを「もの」やその関係性で記述するという考え方です。

例えば、オブジェクトとして、「自動車」や「飛行機」などを想定すると、「自動車が走る」とか「飛行機が飛ぶ」のように、「○○が××する」といったような形態でプログラムを記述できるのが、オブジェクト指向言語の特徴です。

C++やJava、C#が代表的なオブジェクト指向言語です。

図5-6.オブジェクト指向言語

コンパイラとインタープリタ

ソースコード

アセンブラと同様に、一般に高水準言語は、ソースコードという、比較的人間に理解しやすいデータで記述されています。しかし、コンピューターが直接ソースコードの内容を理解することはできません。

そこで、こういったソースコードを、コンピュータが理解できるマシン語に変換する作業が必要になります。高水準言語は、この変換方式のちがいによって、大きくコンパイラー型とインタープリター型の2種類の言語に大別することができます。

コンパイラー型

高水準言語で書かれたプログラムをコンピューターが理解できる形にあらかじめ翻訳しておく形式の言語をコンパイラー型といいます。ソースコードを機械語に翻訳する作業のことをコンパイルと呼びます。

コンパイラーは、ソースプログラムをコンパイルするという作業による手間は増えますが、実行する段階でコンピューターがそのまま理解できる形式であるため、実行速度が比較的速いという特徴があります。(図5-7.)

図5-7.コンパイラ

インタープリター型

インタープリター型では、ソースプログラムをひとつの命令ごとに翻訳しながら実行します。コンパイラー型と比べてコンパイルの手間を省くことができ、開発工程は短くて済みますが、実行時には処理が遅くなるという特徴があります。(図5-8.)

図5-8.インタープリター