第7講 結果を報告しない社員
第4話 構造化プログラミングの思想
BASICが、変数の適用範囲をプログラム全体にしていた頃、
BASICはスパゲティプログラムであると揶揄されました。
なぜなら、BASICのプログラムはGOTO文であちらこちらのサブプログラムに飛びました。
そして、変数はいろいろなサブプログラムで書き換えられてしまうのです。
変数が同名であると、中身が書き換えられてしまう心配が常にあったのです。
ですから、プログラマーは常に全体を見ていないとプログラムを組めなかったのです。
BASICの頃は、サブプログラムをサブルーチンといっていました。
メインのプログラムとサブルーチンからプログラムは構成されていたのですが、
メインとサブルーチンが分業して協力しているとはいえず、
社長は部下に仕事を任せることができなくて、
結局は社長一人で仕事をしているのと同じ状態でした。
あっち行ったり、こっちに行ったりしてスパゲティのように複雑に混線してしまうプログラム
=スパゲティプログラム
それに対してC言語やパスカルははじめから構造化プログラミンの思想が徹底していました。
では、構造化プログラミングの思想とは何でしょうか。
実は大変簡単なことです。
プロモデルのように独立部品から構成しようということです。
プラモデルは、パーツからの単純結合です。
単純結合というのは、他のパーツのせいぜい数カ所のみと結合しているということです。
それに対して、脳細胞やWebサイトは複雑に有機的に結びついています。
脳細胞のネットワークが複雑であるほど、知能は高くなります。
Webサイトは軍事部門の研究から生まれたといわれていますが、
1局集中型=中央管理型から、中央のないサイトへと軍事部門の連絡手段が移行していったのは、
複雑に絡み合うネットワークの方が、伝達効率が高かったからです。
有機的に高度に複雑に結びついていることが、
脳細胞とWebサイトの優れた点ですが、
全体を見通すことは難しくなっているという点があります。
かつてのBASICは、サブプログラムという考え方はありましたが、
個々の部品が独立しておらず、
変数の内容が他の部品で書き換えられしまう心配がありました。
しかも、BASICの場合GOTO文であちらこちらに飛び、
プログラム全体がスパゲッティのように複雑に混線したものになり、
全体を見通すことが難しく、分業することが困難な言語でした。
それに対して、C言語やパスカルは最初から構造化プログラミングの思想が徹底していて、
部品は独立していました。
独立というのは、例え同じ変数名であっても、部品(社員)が違えば書き換えられることがないということです。
つまり、変数は基本的には関数
(C言語では社員のことを関数といいます。VBAではプロシージャでした。)
内でしか通用しないローカル変数だということです。
そして、部品(社員)同士の結合はプラモデルのように単純結合です。
プラモデルのように独立パーツから、単純に組み立てる=これが構造化プログラミングです。
VBAとなったBasicも現在では、構造化プログラミング思想が徹底しています。
この利点を活かしたプログラムを組むことを意識しながら、
プログラミングの学習をする姿勢が大切です。
構造化プログラミングを徹底するということは、わかりやすいプログラミングを心がけるということです。
以上の話から、前話の問いに答えてください。
前話の問いは、なぜ箱の使用範囲をその箱を作った社員のみに限定したかです。
答えは、30行下。
答え
構造化プログラミングが組めるようになった結果、
プログラミングがわかりやすくなり、分業することが可能になった。
では、皆さん問題のある
Private Sub CommandButton1_Click()
Dim w As Long, i As Byte
wa
seki
End Sub
Private Sub CommandButton2_Click()
Rows("6:200").Select
Selection.ClearContents
Cells(1, 1).Select
End Sub
Sub wa()
w = 0
For i = 1 To 10
w = w + i
Next
Cells(6, 1) = "1から10までの和"
Cells(6, 3) = w
End Sub
Sub seki()
w = 1
For i = 1 To 10
w = w * i
Next
Cells(7, 1) = "1から10までの積"
Cells(7, 3) = w
End Sub
を正しい文章に変更してください。
第3話へ 第5話へ
vc++講義へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
vb講義へ
VB講義基礎へ
初心者のためのJava 入門 基礎から応用まで
数学研究室に戻る