コンピュータに作業手順を伝えることをプログラミングという。C言語やJavaなどプログラミング言語には様々な種類があり、各々が多彩なプログラムを実現している。ここでは、システム開発全体の流れを把握するために必要となる基礎知識と他業種との類似点をまとめる。
情報処理推進機構のシラバスにおいては「36.データ構造」「37.アルゴリズム」「38.プログラミング・プログラム言語」に対応している。
1 プログラミング言語とは
プログラミング言語とは、コンピュータに作業指示を伝えるための言葉である。
代表的な言語とその特徴
代表的なプログラミング言語には次のようなものがある。
- C言語:OSやアプリケーションなど、広範囲で用いられている言語。UNIXというOSの移植性を高める目的で作られた言語であるため、柔軟性を持つ
- BASIC:初心者向けとして古くから使われている言語。簡便な記述方法である他、書いたその場ですぐ実行して確かめることができるインタプリタ方式が主流
- COBOL:事務処理用に古くから使われていた言語。古い大型の汎用コンピュータなどで使われている
- Java:インターネットのWebサイトや、ネットワークを利用した大規模システムなどで使われることが多い言語。特定機種に依存しないことを目標とした言語でもあるため、Java仮想マシンという実行環境を用いることで、OS間の違いを気にせず作成したプログラムを動かすことができる
インタプリタとコンパイラ
ソースコード(書いた中身)を機械語に翻訳することで、プログラムはコンピュータが実行できる形式となる。この翻訳の方式には、以下の2つがある。
- インタプリタ方式:ソースコードに書かれた命令を1つずつ機械語に翻訳しながら実行するもの。実行速度は比較的遅い。BASICなど
- コンパイラ方式:ソースコードの内容を最初にすべて翻訳して、機械語のプログラムファイル(実行形式ファイル)を作成するもの。実行速度は比較的早い。C言語、COBOL、Javaなど
2 構造化プログラミング
構造化プログラミングとは、プログラムを機能単位の部品に分けて、その組み合わせによって全体を形作る考え方である。
制御構造として使う3つの約束
構造化プログラミングでは、原則的に次の3つの制御構造だけを使ってプログラミングを行う。
- 順次構造:上から順番に処理を実行する
- 選択構造:何らかの条件によって分岐させ、いずれかの処理を実行する
- 繰返し構造:ある条件が満たされるまで、一定の処理を繰り返す
3 変数は入れ物として使う箱
変数はメモリの許す限りいくらでも使うことができる。個々の変数には、名前をつけて管理する(例:日常生活における「訪問者」)。変数に値を格納することを「代入する」という。
4 アルゴリズムとフローチャート
コンピュータは、プログラムに書かれたアルゴリズム(作業手順)にのっとって動作する。このアルゴリズムをわかりやすく記述するために用いられるのがフローチャート(流れ図)である。
フローチャートで使う記号
フローチャートでは次のような記号を使って、処理の流れを表す。
- だ円:処理の開始と終了
- □:処理
- ⇆:処理の流れ。上から下、左から右という原則から外れる場合明示
- ひし形:条件によって流れが分岐する判定処理
- 上短台形:繰り返し(ループ)処理の開始
- 下短台形:繰り返し(ループ)処理の終了
5 代表的なアルゴリズム
探索は箱の中から特定のデータを見つけるアルゴリズムで、整列は箱の中のデータを並べ替えるアルゴリズムである。
データの探索(二分探索法)
探索とは検索のこと。二分検索法とは、データの集合を2つに分けながら対象を絞り込んでいくのが特徴である。昇降順に並んでいるなど規則性を持つ場合に適している。
データの整列(バブルソート)
整列とはデータを昇順や降順に並べ替えること。バブルソートとは、隣のデータを比較して右(左でも可)が小さければ入れ替える、という作業を繰り返すこと。
6 データの持ち方
「プログラムの中でどのようにデータを保持するか」は、アルゴリズムを考える上で欠かせない検討項目である。
配列
メモリ上の連続した領域にずらりとデータを並べて管理すること。 個々のデータはみな同じ幅(サイズ)なのが特徴である。添字として配列名を指定することで、配列内の各データに直接アクセスすることができるようになる。しかし、データの挿入や削除は不得手である。
リスト
データとデータを数珠つなぎにして管理すること。ポインタと呼ばれる番号がセットになっており、メモリ上の位置を表している。データの挿入・削除が容易だが、各データに直接アクセスすることはできない。
木(ツリー)構造
ツリー上に分岐した階層構造の中に、データを格納して管理すること。分岐箇所を節と呼び、この時点を上の階層から順にたどっていくことで、データを取り出すことができる。補助記憶装置のファイルシステムやインターネットのドメイン名などは、いずれも木構造を用いて管理されている。
キュー
待ち行列ともいわれ、最初に格納したデータから順に処理を行う、先入れ先出し(First In First Out:FIFO)方式のデータ構造のこと。
スタック
最後に格納したデータから順に処理を行う、後入れ先出し(Last In First Out:LIFO)方式のデータ構造のこと。
最後に
プログラミングの基礎知識として、プログラミング言語、構造化プログラミング、変数、アルゴリズムとフローチャート、代表的なアルゴリズム、データの持ち方についてまとめた。
本稿で取り上げたことは、プログラミングで使われている用語の解説である。ダフニー・コラー 「オンライン教育が教えてくれること」でも挙げたように、現在は自学自習でプログラミングを学べるサイトが数多く出てきている。こういったサイトや著書を参考に、一度自分でプログラムを作ってみると知識が身に付きやすいだろう。
システム開発の流れとそのマネジメント手法について学び、プログラミングの立ち位置を理解した後に、ぜひとも挑戦してみてほしい。
次回はシステム構成と故障対策についてまとめる。
|
キタミ式イラストIT塾 「ITパスポート」 平成24年度 CBT対応
|