マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第2章 変数って何?


第6話 整数型変数の様々な使い方

この話では整数a、整数bを使って様々な計算を行っていきます。

まず、コードを以下のように変更します。


#include<iostream>//インクルードファイルiostreamの読み込み

#include<conio.h>//while(!_kbhit());を使うためのお呪い

using namespace std;//coutを使うときに必要なお呪い

void 挨拶社員();//ぼくは挨拶を行う係です。

void 整数を扱う社員();//ぼくは整数型変数を定義してその変数に整数値を代入する係です。

int main(){//私は社長だ。

  挨拶社員();//ぼくは挨拶を行う係です。

  整数を扱う社員();//ぼくは整数型変数を定義してその変数に整数値を代入する係です。

  while(!_kbhit());//待機させるための命令

  return(0); //int main()終わるためのお呪い

}

void 挨拶社員(){//ぼくは挨拶をする係です。

  cout << "こんにちは" << endl;//コンソール画面に表示

}

void 整数を扱う社員(){//ぼくは整数を扱う社員です。

  int 整数a;//整数aを整数型の変数であると定義します。

  
int 整数b;//整数bを整数型の変数であると定義します。

  整数a = 10;//整数aという箱に10を入れます。

  
整数b = 20;//整数bという箱に20を入れます。

  cout << 整数a << endl;//コンソール画面に整数aの内容を表示

  
cout << 整数b << endl;//コンソール画面に整数bの内容を表示

  cout << 整数a + 整数b << endl;//コンソール画面に整数aと整数bの合計を表示


}

実行結果



さらにvoid 整数を扱う社員()のコードを次のように変更すると

void 整数を扱う社員(){//ぼくは整数を扱う社員です。

  int 整数a;//整数aを整数型の変数であると定義します。

  int 整数b;//整数bを整数型の変数であると定義します。

  整数a = 10;//整数aという箱に10を入れます。

  整数b = 20;//整数bという箱に20を入れます。

  
cout << "整数a = " << 整数a << endl;//コンソール画面に整数aの内容を表示

  cout << 整数b << endl;//コンソール画面に整数bの内容を表示

}
実行結果


では問題1です。実行結果が

となるようにコードを変更してください。答えは20行下に示します。

ヒントはcoutは << を使いいくらでもつなげることができるです。



もし原因不明のビルドエラーが出た場合の対処法

となってビルドエラーが起きることがあります。

このときはコードに問題があるわけではなく、

ビルドを重ねると起きる問題です。

つまり、原因は皆さんにあるのではなくシステム上の欠陥であると思われます。

このようなときの対処法はエクスプローラーを起動して

C:\Users\fmut1\source\repos\初めてのVC++プログラミング体験\x64\Debug

というフォルダに行ってください。

私の場合にはメールアドレスのfmut1621@hotmail.co.jpから最初の5文字がとられてUsersというフォルダ上にfmut1というフォルダが作られました。

自分でやって作ったのか、システムが勝手にIDから作ったのか、は覚えていません。

上は私の場合で皆さんは前に第1章第7話 F5によって作られるフォルダを探そう!で行ったフォルダ探しにしてフォルダ名を推測してください。

つまり、フォルダ構成は

C:\Users\推測されるフォルダ名\source\repos\初めてのVC++プログラミング体験\x64\Debug

になると思われます。

緑から自分のフォルダ構成を予想してそこに入って赤を右クリック削除で削除すれば

ビルドエラーは解消されます。

VC++ 2026に戻ってもう一度F5を押してビルドエラーが解消されていることを確認してください。

ときどき、実行画面がどこかに隠れてしまい見えなくなることがありますが、

慌てずにタスクバーを見てをクリックすると実行画面であるコンソールが中央の方に戻ってきます。
(以上ビルドエラーが起きた時の対処法)

ビルドエラーが出た場合の対処法は非常に重要ですから、ワードにコピペして保存しておいてください。




となることがありますが、コードミスです。

どこに問題があるかはデバッカ(デバッグを支援してくれるソフト=欠陥の修正を支援してくれるソフト)が教えてくれます。

右の赤い
四角が問題のある行を指摘して、更にその行の何が問題か教えてくれています。

実は、coutの前に全角スペースが入ってしまっていることが原因です。

Backspaceキーなどを使い削除すれば警告のは消えます。























void 整数を扱う社員(){//ぼくは整数を扱う社員です。

  int 整数a;//整数aを整数型の変数であると定義します。

  int 整数b;//整数bを整数型の変数であると定義します。

  整数a = 10;//整数aという箱に10を入れます。

  整数b = 20;//整数bという箱に20を入れます。

  cout << "整数a = " << 整数a << endl;//コンソール画面に整数aの内容を表示

  cout << "整数b = " << 整数b << endl;//コンソール画面に整数bの内容を表示

}
では問題2です。実行結果が

となるようにコードを変更してください。答えは20行下。




















void 整数を扱う社員() {//ぼくは整数を扱う社員です。

  int 整数a;//整数aを整数型の変数であると定義します。
  
  int 整数b;//整数bを整数型の変数であると定義します。

  整数a = 10;//整数aという箱に10を入れます。

  整数b = 20;//整数bという箱に20を入れます。

  cout << 整数a << " + "<< 整数b << " = " << 整数a + 整数b << endl;//10 + 20 = 30と表示

}


次に「1 + 2 + 3」の計算を1つの整数型の変数を使って計算させることを考えます。

えっ!1つの整数型の変数で計算するなんて不可能じゃない?

と思うでしょう。だけど、出来るんですよ。

ヒントは「整数a = 10;」は等式でないことと、変数の箱は累積させることができるです。

実は、for文でやった方がずっとエレガントな解法になります。

そして、for文なら 1 + 2 + 3 + ・・・ + 10000 のような計算も簡単にできてしまいます。

for文が楽しみですね。

さらに、if文をやるとプログラミングは一段と面白くなります。

if文とはドラえもんのもしもボックスです。

for文とif文を勉強した後には魔方陣の自動生成にも挑戦します。

そして、その挑戦は私たちの最終目的である数独の自動生成ソフトに直につながります。

もちろん、配列・ポインタ・関数の再帰的な使用・マルチスレッドプログラミングなどの基礎を学んだ後でなければ

最終目的に到達できません。

最後まで私についてくればあなたはプログラミングが大変得意になり、

この講義のように自分でも人に教えたくなりますよ。


「1 + 2 + 3」の算出のコード例

#include<iostream>//インクルードファイルiostreamの読み込み

#include<conio.h>//while(!_kbhit());を使うためのお呪い

using namespace std;//coutを使うときに必要なお呪い

void 挨拶社員();//ぼくは挨拶を行う係です。

void 整数を扱う社員();//ぼくは整数型変数を定義してその変数に整数値を代入する係です。

int 合計計算社員();//ぼくの任務は「1 + 2 + 3」の合計を算出して社長に報告することです。

int main() {//私は社長だ。 挨拶社員();//ぼくは挨拶を行う係です。

  整数を扱う社員();//ぼくは整数型変数を定義してその変数に整数値を代入する係です。

  cout << "1 + 2 + 3 = " << 合計計算社員() << endl;

  while (!_kbhit());//待機させるための命令

  return(0); //int main()終わるためのお呪い

}

void 挨拶社員() {//ぼくは挨拶をする係です。

  cout << "こんにちは" << endl;//コンソール画面に表示

}

void 整数を扱う社員() {//ぼくは整数を扱う社員です。

  int 整数a;//整数aを整数型の変数であると定義します。

  int 整数b;//整数bを整数型の変数であると定義します。

  整数a = 10;//整数aという箱に10を入れます。

  整数b = 20;//整数bという箱に20を入れます。

  cout << 整数a << " + "<< 整数b << " = " << 整数a + 整数b << endl;//コンソール画面に整数aの内容を表示

}

int 合計計算社員(){//ぼくの任務は「1 + 2 + 3」の合計を算出して社長に報告することです。

  int 合計;

  合計 = 0;//和の合計は0から出発 積の合計は1から出発

  合計 = 合計 + 1;

  合計 = 合計 + 2;

  合計 = 合計 + 3;

   return(合計);//合計値を社長に報告

}

実行結果


解説

  合計 = 0;//和の合計は0から出発 積の合計は1から出発

によって合計という箱の中に0が入ります。

変数に最初に値を入れることを初期化と言います。

他のプログラム言語では0に初期化されていることが多いですが、

C言語やC++では初期化されていないので必ず初期化の作業をやってください。

  合計 = 合計 + 1;

これは初心者にとって謎のコードです。

等式なら右辺の合計を左辺に移行して

    合計 - 合計 = 1
    0 = 1

とおかしなことになります。

  合計 = 合計 + 1;

は前に説明した通り左辺と右辺では意味が違います。

左辺の「合計」は合計という名の整数を入れるための箱です。

ところが、右辺「合計 + 1」において合計は箱ではなく何ですか。

ではシンキングタイムです。

考えるための材料は読者の皆さんにすでに与えてあります。

答えは20行下。




















答え 

合計の箱の中に入っている値0です。

なぜなら、

  合計 = 0;//和の合計は0から出発 積の合計は1から出発

において0が入れられていたからです。

  合計 = 合計 + 1;

つまり、同じ合計であっても左辺にあるときと右辺にあるときでは意味が違います。

左辺では箱そのものです。右辺では箱に入っている整数値です。

つまり、右辺では箱の中が参照されるわけです。

ですから、

  合計 = 合計 + 1;


  合計 = 0 + 1;

となり合計という箱の中身は1になります。

すると、

  合計 = 合計 + 2;

から

  合計 = 1 + 2;

から合計という箱の中身は3ということになります。

同様にして、

  合計 = 合計 + 3;


  
  合計 = 3 + 3;

となり合計という箱には6が入ることになります。

こうして無事「1 + 2 + 3」の算出に成功するわけです。

では次話への課題です。

「1 + 2 + ・・・ + 10」の算出に変更してください。




第1章第5話へ 第1章第7話へ

本講義トップ