第7講 社員(子分)

第5話 なぜ全社員共有の箱は使わない方が良いの?


全社員共有の箱(グローバル変数)はなぜ使わない方が良いの?
答え
① C言語やC++の最大の魅力の1つは構造化プログラム徹底していることなのに、
  グローバル変数を使ったのでは、
  構造化プログラムとは正反対のスパゲティプログラムになってしまう可能性がある。
② メモリー節約の観点からもグローバル変数はよろしくない。

メモリーの節約???
なにそれ???
ですよね。
後で『常にある箱(スタティック変数=静的変数)』と『そのときにしかない箱(動的変数)』を学習するときに、
もう一度説明しますが、
実は、ローカル変数は『そのときにしかない箱(動的変数)』です。
そのときにしかない???
これも謎ですね。
そのときというのは、社員が呼び出されて働いているときです。
実は、社員と呼んでいますが、社員は呼び出される(コールされる)まで
この世に存在していないのです。
社員waは

#include<iostream>
using namespace std;
void wa();
void seki();

int main(){

  
wa();

  seki();

}
実際上の社長main()から呼び出されるまで、
この世にいないのです。
コールされて(呼ばれて)はじめてこの世に生まれて、
働き出します。
そして、仕事が終わってしまうとまたこの世から消滅してしまうのです。
それは社長main()も同じです。
社長main()は、いつ呼び出されるかと申しますと、
int main(){の時点からです。
社長main()も任務が終了すると、この世から消える運命にあります。
さて、比喩でこの世に生まれる、この世から消滅するといっていますが、
実際には『この世』とは何ですか。
それは、コンピュータのメモリーです。
各社員は、社長main()も含めて呼び出されたときだけ、
コンピュータのメモリー上に登場するのです。
コンピュータのメモリーに常駐しているソフト(ウィルス監視ソフトなど)もありますが、
一般的にソフトは、起動したときのみコンピュータのメモリー上に存在して活躍します。
メモリーはプログラムやソフトが働く場です。
メモリーは、データを記憶するだけでなく、プログラムが働く場を提供するのです。
プログラムやソフトは、メモリーという舞台がないと踊ることはできません。

さて、問題です。2つのプログラム
#include<iostream>
using namespace std;
void wa();
void seki();

int main(){

  wa();

  seki();

}

void wa(){
  cout<<"1から10までの和=";
  int w,i;
  w=0;
  for(i=1;i<11;i++){
    w+=i;
  }
  cout<<w<<endl<<endl;
}

void seki(){
  cout<<"1から10までの積=";
  int w,i;
  w=1;
  for(i=1;i<11;i++){
    w*=i;
  }
  cout<<w<<endl<<endl;
}

#include<iostream>
using namespace std;
void wa();
void seki();
int w,i;

int main(){

  wa();

  seki();

}

void wa(){
  cout<<"1から10までの和=";
  
  w=0;
  for(i=1;i<11;i++){
    w+=i;
  }
  cout<<w<<endl<<endl;
}

void seki(){
  cout<<"1から10までの積=";
  
  w=1;
  for(i=1;i<11;i++){
    w*=i;
  }
  cout<<w<<endl<<endl;
}
におけるそれぞれの箱iとwの生きている時間(メモリー上にある時間)を考えてみてください。





第4話へ 第6話へ

a

初心者のためのjava 入門 基礎から応用まで
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
VC++入門
VBA入門
専門用語なしのVBA入門
VB入門
初心者のためのEclipseによるJava入門