マルチスレッド版数独自動生成ソフトC++コードを題材とする超初心者のためのVisual Studio C++講義
第4章 if文(もしもボックス))

第3話 srand((unsigned)time(NULL))の謎の解明と『if(P)A; else B;』


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

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

#include<string> //文字列変数を使えるようにするために組み込む

#include <iomanip> //setprecisionを使えるように組み込む

#include <cmath>//powなどを使うときに必要

#include <ctime>//time()(←現時刻発生する関数)を使うために必要

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

void ランダムデータの生成と判定();//0以上99以下の整数データを生成して合否判定をする。

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

  ランダムデータの生成と判定();

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

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

}

void ランダムデータの生成と判定() {
  //0以上100以下の整数データを生成して合否判定をする。

  srand((unsigned)time(NULL));

  for (int i = 0; i < 10; i++) {

    int テスト結果 = rand() % 100;//0以上100未満の整数データを生成する。2026年2月7日訂正

    cout << テスト結果;

    if (テスト結果 >= 50)cout << ":合格" << endl;

    if (テスト結果 < 50)cout << ":不合格" << endl;

  }

}

前話の謎に答えましょう。

srand(シード値);

とは、ことなる乱数系列を与えるものです。

シード値には整数値が入ります。

シード値のことを乱数系列の種と言います。

そして、(unsigned)time(NULL)と現在時刻(0時00分00秒から何秒すぎているか)を与えるものです。

シード値は正の整数でなければならないので(unsigned)が入っています。

皆さんの実行画面と私の実行画面が異なるのは、

F5を押して実行した時刻が異なっているからです。

ですから、乱数を使いたいときは、

  srand((unsigned)time(NULL));//シード値を現在時刻から取得

入れるものだと思ってください。

ただ、同じ結果を再現したいときは、

  srand(0);

などとします。

そうすると毎回同じ結果になります。

毎回変えたいときに

  srand((unsigned)time(NULL));//シード値を現在時刻から取得

を入れるわけです。

さて、話題をif文に戻しましょう。

    if (テスト結果 >= 50)cout << ":合格" << endl;

    if (テスト結果 < 50)cout << ":不合格" << endl;

は1文にまとめることができます。

  if (テスト結果 >= 50)cout << ":合格" << endl; else cout << ":不合格" << endl;

です。

  if (条件式)A; else B;

は条件式が正しいときにはAを実行して、正しくないときはBを実行せよという意味です。

ところで、

  if (テスト結果 >= 50)cout << ":合格" << endl; else cout << ":不合格" << endl;



  if (テスト結果 >= 50) {

    cout << ":合格" << endl;

  }
  else {
    
    cout << ":不合格" << endl;

  }

と書くこともできます。

私は、この書き方しか使いません。

ですから、初心者の方にはこの書き方を勧めます。

私は、簡略に書くことは推奨しません。

竹下登政権のときや1989年のときには付加価値税や消費税は、

逆累進性があると野党はいっていたのに、

それが逆進性と省略されて使うようになると、

野党から大事な思想が抜け落ちてしまいました。

それは、新自由主義とは金持ち優遇思想であるという思想です。

レーガンが新自由主義的政策を始めるまで、

アメリカの所得区分は20区分あり、

最富裕層は所得の95%の所得税を払っていました。

レーガンは20区分を3区分に組み直して、

最富裕層でも所得の50%を支払えばよいとしました。

つまり、残る所得は5%から50%と10倍になったのです。

20億円の所得があった人はレーガン以前は19億円もの所得税を払っていましたが、

レーガン以降は10億円払えばよいとなったのでした。

つまり、たった一人ついて9億円も所得税が減ってしまったのです。

そして、日本では税源不足を補うために消費税が導入されたのです。

金持ちを優遇して、生活困窮者からも税をとる政策こそが新自由主義的政策なのです。

ですから、自民党が税源がないといっているのは最初から嘘です。

その嘘に野党も騙されてしまったということこそが真実です。

累進税率を元に戻すだけ税不足は解消されます。

累進課税とは所得の再分配と呼ばれ重要な社会保障政策だったのですが、

レーガンとサッチャーが冷酷に切り捨てたのです。

マルクスの資本論を読まなくても資本家が労働者から搾取していることは誰でも直感的に理解していたことです。

資本家が搾取したお金を取り戻す政策こそが累進課税制だったのです。

すみません。

脱線しました。話を元に戻します。

  if (テスト結果 >= 50) {

    cout << ":合格" << endl;

  }
  else {
    
    cout << ":不合格" << endl;

  }

初心者は省略した書き方を選ばずに、わかりやすさを優先すべきだが私の考えです。

  if (条件式) {

    A;

  }
  else {
    
    B;

  }

と書くようにしてください。

私がプログラミング講義を始めて、

カタカナを追放して、長い英単語を使わないという方針で

講義を進めた時に、

私は専門家からバカにされました。

ですが、私が始めた2010年に『初心者のための世界で一番やかりやすいVC++入門講義』を始めると、

Googleランキングをあっという間に上げていき、

講義を始めてから2週間後に『VC++ 入門』で検索すると第一位になり、

『VC++ 初心者』で検索すると第一位から第十二位までがすべて私のページになったのです。

つまり、上位を独占したのです。

そして、時代がやっと私に追いついてきました。

私の講義はプログラミング会社の正式教材に採用され、

アクセス数は1日の平均で3千から6千を数えるようになったのです。

そして、現在ではカナカナを使わずに漢字で説明することが普通になったのです。





第4章第2話へ 第4章第4話へ

本講義トップへ