第4講 if文の学習

第2話 if文の簡単なサンプルソフト

まず、第2話で簡単なサンプルソフトを作り、話の進行とともにソフトを高度化していきましょう。
最終的には、成績一覧表を作り、合格・不合格や5段階ぐらいの講評を入れていくことにしたいと思います。

まず、
つぎのようなForm1作ってください。
Form
そして、実行をダブルクリックして、次のようにコーティングしましょう。
#pragma endregion
   private: System::Void button1_Click(System::Object^ sender, System::EventArgs^ e) {
           int w;

           //textBoxから値を取得
           w=int::Parse(textBox1->Text);

           //合否判定
           if(w>=80)textBox2->Text=L"合格";

        }
};
}
VC++には≦や≧がありませんので、<=と>=で代用します。
この辺はVisual Basicやパスカルでも共通ですから、おそらくプログラム言語一般でそうなっていると思われます。
もっとも、パスカルを勉強していたのは今から20年ぐらい前ですから記憶違いかもしれませんが。

これは、textBox1に入力される値が80以上なら合格と表示させるプログラムです。

F5を押して、0から100ぐらいまでの整数をキーボードからtextBox1に入力してから実行ボタンを押してください。
実行結果例
合否判定
ところが、このコーティングだと80未満が入力されたとき、実行を押しても何も表示されません。
If文
さらに、80を入力して実行ボタンを押してから80を消して、70と入れ直し実行ボタンを押すと、
If文による合否判定
70なのに合格と表示されてしまいます。これは、80と入力され実行されたときに合格と表示されたのがそのまま残っているからです。
この欠点を改善するには、
if(w>=80)textBox2->Text=L"合格"; をif(w>=80)textBox2->Text=L"合格";else textBox2->Text=L"不合格";
とします。elseとTextBox2の間には半角スペースを入れてください。
これを入れないと、VC++はelsetextBox2を1つの単語とご認識してエラーします。

1つ重大な話を落としていました。
コードを変更するときには、必ず起動中のソフト(自分でビルドして立ち上げたソフト)は終了してからにしてください。
ソフトが立ち上がったままだと、コードの変更が反映されません。
また、Form1[デザイン]は変更することができません。

さて、if文の記入の仕方ですが、
if(w>=80)textBox2->Text=L"合格";

if(w>=80)
textBox2->Text=L"合格";
とかいても、
if(w>=80)
  textBox2->Text=L"合格";
と書いてもいいのです。
命令文が1文しかないときには、
if(w>=80)textBox2->Text=L"合格";
のように書き、
命令文が複数のときには、
if(条件式){
  A;
  B;
  C;
}
と書くようにすることをお勧めします。
もちろん複数であっても
if(条件式){A;B;C;}
と書いてもエラーしませんが、わかりやすさは
if(条件式){
  A;
  B;
  C;
}
の方が圧倒的に優れています。
わかりやすさを優先させる、この姿勢を第1にしてください。
生徒の中には、ノートをけちって全く改行しないでノートをとる生徒もいます。
親御さんはノートを節約するように指導されているのかもしれませんが、
残念ながらこれは学力の節約です。
もちろん、そのようなノートの取り方をする生徒の学力は伸びません。

それから、
if(条件式){
A;
B;
C;
}
もエラーしませんが、段組をとるという基本の姿勢から逸脱しており、
わかりにくいプログラムの1つです。
結局わかりやすくするためには、
改行とスペース(もちろん半角スペース)を多めにとることです。
発達障害の生徒の多くは、改行やスペースを多めにとらないと理解困難であるとされていますが、
これは健常者でも全く同じです。
障害の有無にかかわらず、改行やスペースを多めにとった方がわかりやすいのです。

ですから、先の改行やスペースを全くとらないでノートをとる生徒は、
やはり発達障害を抱えている可能性があります。
普通の生徒であれば別に指導者から指導を受けなくても、
改行やスペースをとった方がわかりやすいと自然にそうするものです。
ところが、そうしないのは発達障害者特有のこだわりがある可能性があります。
もし、あなたのお子さんが改行やスペースをとらないノートの取り方をするお子さんなら発達障害の可能性を考えてください。
先に、こういう生徒の学力は伸びないと書きましたが、
実は発達障害が原因の1つであるといえると思います。

脱線ついでに、高校教師という立場で発言させていただければ、
「うちの子ちょっとヘン!」だと感じているとすれば、大いに発達障害の可能性があります。
育てにくい子供だったというのが、発達障害を抱えているお子さんの共通の特徴といえます。
発達障害は、何の治療をしないで社会に出すと後々いろいろな問題を引き起こします。
実は、大人の中にもかなり発達障害者がいることがわかっています。
「かたづけられない」「人の話を聞かない(聞けない)」「すぐキレる」
この3つを抱えていれば、発達障害である可能性があります。
発達障害者は、仕事の期日を守れなかったり、空気を読まないで発言したりしていて、
職場での評価は低く、
学校や職場で常に怒られてきているので、自尊感情も極端に低くなっています。
自分が発達障害であると認識すると、
意見を言いたくなっても我慢することができるようになり、
大幅に改善されるといいます。
発達障害者には、こだわりがあるのでいろいろな場面で意見を言ってしまい、
浮いてしまうことが多いのです。
ですから、お子さんに先の3つの特徴「かたづけられない」「人の話を聞かない(聞けない)」「すぐキレる」
があったら是非病院の門をたたかれることをお勧めします。
文科省の調べによると7%程度発達障害者がいるということになっていますが、
私の経験からすると、その2倍はいるのではないかというのが実感です。
いじめられっ子やいじめっ子そして不登校生との大半が、実は発達障害が原因であるのではないかと、
私は考えています。
場の空気が読めないので、いじめられやすい、集団不適応になり不登校になる、
また、忍耐力がない(キレやすい)のでいじめてしまう、
これが今まで見落とされてきた根本的な原因なのではないでしょうか。


ごめんなさい。脱線が長く長くなりすぎました。
話を元に戻しましょう。
if(w>=80)textBox2->Text=L"合格";else textBox2->Text=L"不合格";
のelse textBox2には半角スペースがないとエラーしました。
ではなぜ、Text=L"合格";elseの間には半角スペースはいらないのでしょうか。
理由は、;は文の終わりを意味するからです。
普通の文章も『。』に続いて文が入りますが問題がありません。
それと同じです。
しかし、やはりわかりやすさを優先し
if(w>=80)textBox2->Text=L"合格"; else textBox2->Text=L"不合格";

if(w>=80)
  textBox2->Text=L"合格";
else
  textBox2->Text=L"不合格";
と書くべきだと思います。
私の一番のお勧めはもうおわかりですね。もちろん、
if(w>=80)
  textBox2->Text=L"合格";
else
  textBox2->Text=L"不合格";
です。

正確に表示されないという問題の改善策の1つがif...else...文でした。
実は、if...else...文を使わないで、ただのif文でも解決する方法があります。
本によっては、if...else...文はプログラムをわかりにくくするので、
なるべく使わない方がよいとするものもあります。
では、皆さんif文だけで先の問題を解決する方法を考えましょう。






第1話へ 第3話へ

025


vc++講義第1部へ
vb講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座へ

数学研究室に戻る