第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;
}
実行画面
そうです。
#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話へ
初心者のためのjava 入門 基礎から応用まで
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第1部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第2部
初心者のための VC++による C言語 入門 C++ 入門 基礎から応用まで第3部
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座へ
VC++入門
VBA入門
専門用語なしのVBA入門
VB入門
初心者のためのEclipseによるJava入門