第7講 社員(子分)

第7話 社員(子分)が社員(子分)に命令をする


#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;
  
seki();
}

void seki(){
  cout<<"1から10までの積=";
  int w,i;
  w=1;
  for(i=1;i<11;i++){
    w*=i;
  }
  cout<<w<<endl<<endl;
}
実行画面
C言語
そうです。
#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 f();
void g();

int main(){
  f();
}

void f(){
  cout<<"私は子分f()である"<<endl;
  g();
}

void g(){
  cout<<"私は子分g()である"<<endl;
  f();
}
答えは例によって30行下。

























実行画面
入門
と無限に続いてしまいます。
これは、鏡を平行に置くと鏡に中に鏡が無限に続く場合と同じです。
void f(){
  cout<<"私は子分f()である"<<endl;
  g();
}

void g(){
  cout<<"私は子分g()である"<<endl;
  f();
}
お互いに命令し合って、終わりがないわけです。
プログラミングは、
ちょっとうっかりするだけで
無限に続いてしまうプログラムを作ってしまう場合があります。
このように無限に繰り返されることを無限ループといいます。
無限ループはプログラミングの宿痾です。
常に、この病気にかからないようにプログラマーは気をつけなければなりません。
では、
#include<iostream>
using namespace std;
void f();
void g();

int main(){
  f();
}

void f(){
  cout<<"私は子分f()である"<<endl;
  g();
}

void g(){
  cout<<"私は子分g()である"<<endl;
  f();
}
をどのように改良したら、
無限ループから抜けることができるでしょうか。
今回は難しすぎるので、
問題という形にしません。
次話をご覧ください。

第6話へ 第8話へ

a

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