第5講 if文を理解しよう
第4話 注釈文
第3話課題解答例
#include<iostream>
using namespace std;
using namespace System;
int main(){
   int a,i;
   for(i=1;i<21;i++){
     srand(i);
     a=rand()%101;
     cout<<a;
     if(a>=50){
        cout<<"は合格"<<endl;
     }
     if(a<50){
        cout<<"は不合格"<<endl;
     }
   }
}
実は、for文を使うならsrand(シード値)使わなくてもよいですね。
そこをカットして
int main(){
   int a,i;
   for(i=1;i<21;i++){
     a=rand()%101;
     cout<<a;
     if(a>=50){
        cout<<"は合格"<<endl;
     }
     if(a<50){
        cout<<"は不合格"<<endl;
     }
   }
}
とすると、
入門
とランダムに出ている様子がわかります。
しかし、Ctrl+F5をする度に同じ結果になってしまいます。
シード値を手で入れるのでは芸がありませんので、
現在の時間を取得して、それをシード値にすれば毎回異なった結果になります。
現在の時間を取得するには#include<ctime>を入れる必要があります。
#include<インクルードファイル名>の説明をしていませんでしたが、
#includeはインクルードといって、ファイルを読み込むことという意味です。
インクルード(読み込み)されるファイルをインクルードファイルといいます。
インクルードファイルとは、よく使われる関数や定義などをまとめたファイルのことです。
例えば、string型変数を使うときは、#include<string>とインクルードファイルstringを読み込みます。
現在の時間を取得して、それをシード値すなわち整数に変換するには、
static_cast<unsigned int>(time(0))とします。ですから、コードを次のように変更してみましょう。
#include<iostream>
#include<ctime>   //現在の時刻を取得するtimeを使うのに必要
using namespace std;
using namespace System;
int main(){
   int a,i;  //aは100点以下のランダムデータを入れる変数、iはfor文で使用する制御変数
   srand(static_cast<unsigned int>(time(0)));  //現在の時刻を取得して、それを整数に変換してシード値にしている
   for(i=1;i<21;i++){  //iはfor文で使用する制御変数
     srand(i);
     a=rand()%101;  //aは100点以下のランダムデータを入れる変数
     cout<<a;
     if(a>=50){
        cout<<"は合格"<<endl;
     }
     if(a<50){
        cout<<"は不合格"<<endl;
     }
   }
}
これだとビルドしたとき毎回異なった結果になります。
はじめての
今回のコードで紺色の部分に注目して下さい。
//のついた文を注釈文といいます。
//のついた部分は、コンピュータは読み飛ばします。
つまり、プログラムには何の影響も与えません。
では、何のために入れるかと申しますと、プログラムを読む人のためです。
プログラムの解説です。
変数名は、短く1文字か2文字程度でよいと主張するひとつの根拠は、
この注釈文の存在です。
int a,i;  //aは100点以下のランダムデータを入れる変数、iはfor文で使用する制御変数
のように書けば、何の変数であるかがわからなくなることはありません。
aを例えばscoreなどという変数名にしてもプログラムが長くなり、
複雑になってくると結局scoreは何であるかわからなくなったりします。
コピペで注釈文は簡単に貼り付けできますから、むしろ注釈文で詳しく説明する方が、よっぽど合理的です。
皆さんも、プログラムがわかりやすくなるように解説である注釈文をまめに入れる習慣を付けましょう。
行単位で注釈文を入れるには、
/*と*/で挟みます。
#include<iostream>
#include<ctime>   //現在の時刻を取得するtimeを使うのに必要
using namespace std;
using namespace System;
int main(){
   int a,i;  //aは100点以下のランダムデータを入れる変数、iはfor文で使用する制御変数
   srand(static_cast<unsigned int>(time(0)));  //現在の時刻を取得して、それを整数に変換してシード値にしている
   for(i=1;i<21;i++){  //iはfor文で使用する制御変数
     srand(i);
     a=rand()%101;  //aは100点以下のランダムデータを入れる変数
     cout<<a;
     /*
     以下の前半は、50点以上なら合格を
     後半は、50点未満なら不合格と表示させるif文である。
     今回は後半が否定文になるif~else文は使用しなかった。
     */

     if(a>=50){
        cout<<"は合格"<<endl;
     }
     if(a<50){
        cout<<"は不合格"<<endl;
     }
   }
}
実は、//や/*と*/はビルドエラー対策としても有効に使えます。
どの文がエラーの原因になっているのかを調べるのに、
1文単位で一時的に外すには//を数文単位ときは、/*と*/を使います。
詳しくは、初心者のためのVC++入門講義第1部の第1講 始めようVisual C++☆☆第6話 ビルドエラーとその対策
を参照してください。
ついでですから、第1講 始めようVisual C++☆☆第7話 バックアップの方法とソースを書くコツ
初心者のためのVC++入門講義第2部の第19講 特殊種による魔方陣ソフトの高速化 ☆第8話 ソースを書く際のコツ☆☆☆
も合わせて読んでいただくと、効率的にプログラミングするための参考になると思います。
内容で理解できない部分があってもビルドエラー対策とソースを書くコツの部分がわかればよいわけですから、是非とも熟読してください。
そして、時々読み返してください。1回ではでは頭に入りませんし、また、すぐに忘れてしまうものですよね。



第3話へ 第5話へ


戻る


VB講義へ
VB講義基礎へ

vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)