第9講 社員の分身の術(関数の再帰的使用)
第9話 変数名について
いかにしたら、
void f(){
int i,j,k,l,h;
for(i=0;i<n;i++){
x[0]=i+1;
for(j=0;j<n;j++){
if((j+1)!=x[0]){
x[1]=j+1;
for(k=0;k<n;k++){
x[2]=k+1;
h=1;
for(l=0;l<2;l++){
if(x[2]==x[l]){ //C言語では=は代入を意味していて、数学の=に相当するものは==です。
h=0;
break;
}
}
if(h==1){
cn++;
hy();
}
}
}
}
}
}
を分身の術で実現できるでしょうか。
考え方は、
x[0]、x[1]、x[2]
の[]の数字をf()の次元番号にするのです。
ですから、f()のプロトタイプ宣言は例えば、
int f(int g);
などします。
引数名は、自由でしたから、
int f(int n);
としたいところですが、nはグローバル変数にして、
for(i=0;i<n;i++){
とfor文で使いたい文字ですから、他の文字を当てます。
n以外なら何でもいいのですが、
私は、BASICでプログラムを始めた時期から、
ずっとgを当ててきました。
順列を画面に表示するときに、
12345
1はx[0]に対応しますし、
2はx[1]に対応しますとうです。
[]内の数字が画面の位置に対応しますので、
画面位置のつもりでgとしているわけです。
変数名は、禁則を犯さなければ、自由ですから、
gamenichiでもいいのですが、
私は長い変数名は好みません。
基本は、1文字から2文字にするというのがこのサイトの方針です。
gだと何の変数であるか分からない、
という考え方があり、それに英単語を当てるのが主流です。
例えば、整数型の変数であれば、
int a_integer;
などです。
ですが、私は変数名は中身が分かるような変数名すべきだという立場を取りません。
変数名を英単語にしてしまうと、
初心者はそこに意味があると思ってしまいます。
段ボールに『下着』などと書くのは、
他の段ボールと区別するためです。
変数名にも他の変数と区別するためという以上の意味はありません。
意味がないのに、
int a_integer;
等と書くとa_integer自体に意味があると考えてしまい、
挫折してしまう初心者が大変多いと考えています。
例えば、私は『勝一』と申しますが、
1番になって欲しいと意味で付けたなど言うかも知れませんが、
それは屁理屈であって、実際には他人と区別する以外の意味はもちません。
ですから、私は『007』という名前でも一向にかまいません。
他と区別できれば良いのですから、
a_integerではなくaでいいじゃないですか。
確かに、aでは何の変数であるかは分かりませんが、
int a; //aは整数型の変数
と注釈文を書いて、
aが出てくる度に//aは整数型の変数をコピペしておけば何の問題もありません。
int a; //aは整数型の変数
と書く方が、
int a_integer;
と書くより、初心者にはずっとわかりやすいですよね。
特に、小学生に皆さんは思いませんか。
少し脱線が長くなりましたので、話を戻しましょう。
といっても今話が大きくなってしまいましたので、
話を変えます。
第8話へ 第10話へ
初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門
数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ