第5講 サブプロシージャを理解しよう

第7話 構造化プログラミングについて
A 関数(VBAの場合プロシージャ)の独立性の確保
とは何でしょうか。
独立とは何でしょうか。
今は、余り使われなくなっていますが、
私は、抽象化等というより構造化プログラミングという、
言い方の方が好きです。
私が、プログラミングの世界にBASICやC言語から入ったせいか、
Javaのオブジェクト指向の必要性が未だに感じられません。
C言語等の手続き型言語で何が問題?
を思ってしまいます。
VBとVBAも手続き型言語です。
C言語やVBが好きなのは、私が志向しているのが、
数独(ナンプレ)自動生成ソフトであったり、
巨大整数演算による素数や完全数の研究等であったり、
することにも関係するかも知れません。
私がもっとも重視するのは、
演算速度です。
数独自動生成ソフトにしても、
巨大素数研究にしても膨大な演算処理を必要とするからです。
そして、処理速度のチャンピオンはC言語といわれます。
ですが、おそらく現時点ではVBAも大差はないと思います。
BASIC時代の様々な問題は、
Visual Basic
(VB、因みにVBAはVisual Basic for Applications
応用のためのVisualBasicです。)
になり、すべて解消されています。
BASIC時代の大きな問題点は、
@ コンパイラでなくインタプリタである
A 構造化プログラミングができない
の2つでした。
ですが、今では2つの問題はクリアされています。
@のコンパイラとインタプリタは、今のところ気にしないで下さい。
知らないカタカナ用語は気になるでしょうが、
当面は、知らなくても何も問題はありません。
先のオブジェクト指向もそうですよ。

今皆さんに知って頂きたいのはAの方です。
かつてのBASICにもサブルーチン(部品)という考え方がありました。
ところが、このサブルーチンで定義される変数は、
すべてグローバル変数だったのです。
メインルーチンやサブルーチンで定義される変数は、
他のサブルーチンで書き換えられてしまう心配があったのです。
ということは、プログラマーは常にプログラム全体を見ていないと、
プログラミングできないということを意味していたのです。

それに対して、C言語やVBAの変数は、
関数内で宣言すればすべてローカル変数です。
例え、変数名が同じであったとしても、
関数(プロシ−ジャ)が違えば別の変数です。
なぜなら、変数の有効範囲(スコープ)が関数内に限定されているからです。
ですから、他の関数で変数の値が書き換えられてしまう心配がありませんから、
プログラマーは部品である関数の開発に専念すればよいわけです。
他の部品のことは知らなくてよいのです。
他の部品の中身が見えないことを抽象化というのです。
(私は、抽象化といういい方は好きではありません。
もしいうなら「ブラックボックス化」「見えない化」「蓋をして中身を見えなくする」
等で十分だと思いませんか。
用語の難しさがプログラミングの敷居を高くしていることは間違いないと思います。
同じく「オブジェクト指向」も好きではありません。
「ものを目指す考え方」や「具体化」などで十分です。)
電卓は、使い方さえ知っていればどのような仕組みをしているのかを知らなくても、
問題なく使うことが出来ます。
それと同じで、部品の中身を知らなくても、
部品の使い方さえ知っていれば、
プログラムにおいて使用できる、
ということなのです。
かつてのBASICは、サブルーチンの中身も常に見ていなければなりませんでした。
そして、GOTO文であちらこちらのサブルーチンに飛んだりしますので、
スパゲティプログラムであると揶揄されたのです。

それに対してC言語もVBAも完全に独立な部品の単純結合です。
プラモデルのパーツが、せいぜい数カ所で他の部品と繋がっているように、
C言語やVBAのパーツは、数カ所(基本は1カ所)で結合している単純結合なのです。
かつてのBASICは、サブルーチン同士が脳細胞やWebのように複雑に連結していました。
GOTO文で行ったり来たりしていたためです。
部品=パーツ=関数=プロシージャ同士の単純結合の方が、
ずっとわかりやすいプログラミングです。
パーツの単純結合を構造化プログラミングと呼んでいたのです。
私は「構造化プログラミング」という用語の復権を強く望んでいます。

今話では、具体例がなかったのでわかりにくかったと思います。
次話で具体例を出して、今話を理解する糸口としましょう。
次話の具体例を読んでから、もう一度第6話を読んでください。

第6話へ 第8話へ

004

eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
vc++講義へ
excel 2013 2010 2007 vba入門へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
専門用語なしの C言語 C++ 入門(Visual C++ 2010で学ぶ C言語 C++ 入門)
専門用語なしの excel vba マクロ 入門 2013 2010 2007 対応講義 第1部
eclipse java 入門へ
excel 2016 vba 入門へ第2部へ
小学生からエンジニアまでのRuby入門へ
小学生からエンジニアまでのC言語入門 基礎から応用まで
本サイトトップへ