第5講 プロシージャ(1)
第1話 プロシージャによるプログラム例
プロシージャとは何でしょうか。
C言語ではプロシージャのことを関数と呼びます。
この講義では、C言語やC++が盛んに取り上げられますが、
この2つのプログラム言語が与えた影響は大変甚大であるからです。
いろいろなプログラム言語ランキングで第1位になることが多いJavaも、
C言語に大変似ています。
VBもC言語の良い点を取り入れて現在の姿になっています。
C言語の関数に相当するものが、
プロシージャであると聞いて、渋い顔をする方もいらっ猿と思いますが、
全然苦手意識を持つ必要はありません。
プロシージャとはプログラムを構成する部品=パーツにすぎないからです。
プラモデルがパーツを組み立てて作るように、
VBプログラムもプロシージャを組み合わせて作ります。
そして、プロシージャのことを本サイトではしばしば社員とか子分と呼んでいます。
社員は、今までは社長であるSub Main()しかいませんでしたので、
社長自らすべての仕事をしてしまっていましたが、
出来るだけ部下に仕事をさせ、
しかも、仕事ごとに分業するようにした方が良いのです。
ですから、多くの社員を雇い会社の組織のようにヒエラルキーにして、
組み立てるのが良いのです。
SubがMain()についていますが、
社員には2種類あります。
SubプロシージャとFunctionプロシージャです。
Subプロシージャは命じられた仕事だけを遂行する社員であるのに対して、
Functionプロシージャは、
命令された仕事を実行した後に結果を命令者(仕事依頼した人)に報告する社員です。
結果を報告するというのはイメージしにくいと思いますので、
例を挙げておくと、仕事を依頼する人は、
1+2+3+・・・+100
の答えがなになるか調べて、答えを報告して下さいと頼むわけです。
Sub Main()は社長ですから、
誰からも仕事を命令されません。
したがって、仕事の結果を誰かに報告する必要はありませんから、
結果を報告しない社員であるSubプロシージャの1つであるわけです。

では、社員を採用するにはどうしたらよいでしょうか。
具体例を先に出してから、
説明するのが本講義のやり方ですから、
事例を出してから説明しましょう。
社員を採用するには
Module Module1

  Sub Main() '私は社長だ。

  End Sub
  
ここ
End Module
ここと書いてあるところで、
結果を報告しない社員の場合は
Sub f()と打ってエンターするだけです。
Module Module1

  Sub Main() '私は社長だ。

  End Sub
  
Sub f()
    
  End Sub


End Module
これで新しい社員Subプロシージャが雇えたわけです。
結果を報告する社員を採用したい場合には、
先ほどのここでFunction f()と打ってエンターすれば良いのです。
Module Module1

  Sub Main() '私は社長だ。

  End Sub
  
Function f()
    
  End Sub


End Module

それぞれの社員の仕事内容は
  Sub f()
    
ここ
  End Sub

  Function f()
    ここ
  End Sub

ここに書き込みます。
ここは複数の命令文になる場合ももちろんあります。

では、社長が仕事を命じるのはどうしたらよいんでしょうか。
実例を示します。
Module Module1

  Sub Main() '私は社長だ。
    
Call f()  'f()君、仕事をしなさい!
  End Sub
  Sub f() '私は社員です。
    
Console.WriteLine("社長、私を雇っていただいてありがとうございます。")
    Console.WriteLine("全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。")

  End Sub

End Module
実行画面
社長、私を雇っていただいてありがとうございます。
全身全霊を傾けて会社のための頑張りますのでよろしくお願いします。


『社員に仕事を命じる』あるいは『他の社員に仕事を依頼する』にはどうしたらよいかと申しますと、
名前をコール(呼ぶ)だけです。
Callがコールです。
普通仕事を命令したり、頼んだりするときには、
『何何君、〜という仕事をやってくれ』
『〜さん、A社の見積もりを出して下さい。』
等の仕事の内容をいって、仕事を頼みますね。
なのに、VBにおいては、名前をCallするだけで良いのはどうしてでしょうか。
理由は簡単です。
VBにおいて採用される社員は、1つの仕事しか出来ない専門馬鹿なのです。
仕事の内容が1つに限定されているのです。
資本主義社会における労働者は、経済の流動性に対応できるように、
教育によって万能人に育てられていますが、
封建主義時代の働き手は、靴職人なら靴作りしか出来ないなど、
出来る仕事の内容が限定されていました。
チャップリンは、モダンタイムズによって人間が機械に使われ、
1つのことしか出来ない人間=一面的に発達した人間を育てると予言しましたが、
現実の資本主義社会は、他の企業との競争に勝つために、
万能人を育てざるをなかったのです。
資本主義は必然的に資本主義を否定する部分を作り出します。
生産力を上げるためには、
コミュニケーションの能力を育て、
協調して協力し合いながら連携して仕事をする−−−
仕事を社会化せざるを得ないのです。
ですが、皆を信頼して助け合う体制は、
社会主義的あるいは共産主義的な考え方です。
資本主義社会は自分を否定する思想を必然的に生み出していくのです。
マルクスは、資本主義の発展は資本主義の墓堀人を育成していくと述べました。
マルクスには資本主義が自動的に崩壊するという考え方はありません。
自覚した労働者=階級的任務に覚醒した労働者が、
資本主義を倒し社会主義革命を引き起こすのだ! −−−
これがマルクスの考えなのです。
すみません。脱線しました。
話を元に戻すと、VBに登場する社員は、
封建主義時代の働き手と同じように専門化されていて、
仕事の内容が決まっているので、
仕事の内容を伝える必要がないのです。
ただし、仕事の内容を簡単に伝えることもあります。
例えば、1から
1000までの和を求めて報告しなさいなどです。
この場合に仕事を依頼するときには、f(1000)となります。
そのために社員名にはf()のように()が必ず付いているのです。
()の中の値を
引数(ひきすう)といいます。
そして結果を報告する場合には、結果を返しますが、
返す値のことを
戻り値といいます。
引数はこの講の真ん中で扱い、
戻り値については後半で説明します。

尚、命令と依頼という言葉が出てくる理由は、
仕事は社員同士でも頼むことが出来るからです。
社長がすべての仕事を命じてプログラムを実行するのではなくて、
社員同士も連携し合いながら仕事を進めていくのです。


では問題です。
実行画面が
こんにちは!
今日は良い天気ですね。

となるプログラムを考えて下さい。
ただし、こんにちは!は社員f()が担当し、
今日は良い天気ですね。は社員g()が担当するものとします。



第4講第9話へ   第2話へ
 
002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ