問題解決

コンピュータの特性とアルゴリズム

コンピュータは,人間が命令したプログラムを忠実に実行できますが,命令していないことを実行することはできません.そのため,コンピュータで情報処理をする場合は,人間が正確なプログラムを書かないといけません.

よって,プログラムの元となる,問題解決のための手順や考え方を表すアルゴリズムが大切になります.同じ処理をするプログラムでも,アルゴリズムの善し悪しによって,処理の効率が左右されます.

アルゴリズムの例を考えます.1から100までの数の内,偶数の和の合計を求めるアルゴリズムはどうなるでしょうか.

2つとも正しい答えを求められますが,アルゴリズムとしては後者の方が優れています.前者の方法では,1から100までの数を毎回2で割り切れるかどうか判断します.つまり,100回も割り算をしないといけません.しかし,後者の方法では,偶数の性質をうまく使っているため,割り算をする必要がありません.よって,後者の方が効率が良くなります.

プログラミングの基本

アルゴリズムは日本語で書いても構いませんが,コンピュータは日本語で書かれた手順を解釈することができません.コンピュータが解釈できるのは,0と1だけで書かれた機械語です.しかし,機械語では人間が解釈できないため,両者の橋渡しをするプログラミング言語が用意されています.

ここでは,具体的なプログラミング言語を使ってアルゴリズムを表すことはしませんが,どのプログラミング言語でも共通する考え方について簡単に説明します.

プログラミング言語では,数や文字を記憶する箱のようなもの(変数)を定義(変数の宣言)できます.変数に値を入れることを代入と言います.

先ほどの前者のアルゴリズムをプログラム風に記述したものを示します.

変数 i を宣言 変数 sum を宣言 (合計を求める変数) i ← 1 (iに1を代入) sum ← 0 (sumに0を代入) iが100以下の場合は以下を繰り返す | もし i が 2 で割り切れたら : sum ← sum + i | i ← i + 1 sum の値を表示する

変数は自由に宣言できますが,宣言した直後に何の値が入っているかは分かりません.そのため,合計を求める変数 sum には,最初に0を代入する必要があります(初期値の代入).

このアルゴリズムでは,繰り返し条件分岐を使っています.

続いて,後者のアルゴリズムを同様にして示します.

変数 i を宣言 変数 sum を宣言 (合計を求める変数) i ← 2 (iに2を代入) sum ← 0 (sumに0を代入) iが100以下の場合は以下を繰り返す | sum ← sum + i | i ← i + 2 sum の値を表示する

表計算ソフトの活用

各社から色々な製品がでているので,一概に全てを説明することは難しいですが,ここでは多くの製品に共通している機能を説明します.

表計算ソフトの作業領域をワークシートと言います.列はAから始まるアルファベットでつけられ,行は1から始まる番号がつけられています.図示すると以下のようになります.

ABC
1
2
3

データを入力する領域をセルと言います.セルの表し方にはアルファベットと番号を使います.例えば,上の図の青い部分はB2です.

セルには数値や文字列の値の他に,計算式を入力できます.数式も使えますし,セルの名前を指定して計算することもできます.例えば,B2に「A1+A2」と入力すると,A1とA2の数字の和が表示されます.また,A1やA2のデータが変更されると,B2の内容も直ちに変更されます.

セルのデータはコピーできますが,コピー元のデータがセルの名前を利用した数式だった場合,コピー先によって計算式が変わります.例えば,B2がA1+A2なら,B3にコピーすればA2+A3となり,C2にコピーすればB1+B2となり,C3にコピーすればB2+B3となります.

これをセルの相対参照と言いますが,セルを固定したいときは記号 $ を使います.$は行と列の前の両方につけられます.例えば,B2が$A1+$A2なら,C2にコピーしてもA1+A2(行が固定されている)となります.これを絶対参照と言います.

多くの表計算ソフトでは,指定したセルの範囲の合計や最大値・最小値を求める等の関数が用意されています.また,一連の操作手順をまとめて登録し,その機能をいつでも簡単に引きだして実行できるようにしたマクロ機能や,数値データをグラフにするグラフ化機能,データの並び替え(ソート)検索等,簡易的なデータベースの機能もついています.

Column

縦横に区切られた長方形のセル内にデータや計算式を入力するという操作によって表の作成,セル間の計算処理ができるソフトウェアをスプレッドシートと言います.

表計算ソフトは事務としての用途もありますが,数式や関数を使えることから,アルゴリズムやプログラムの擬似練習としても使えます.