第12講 for文以外の様々なループ文の学習

第6話 条件式を1にすることの謎の正体は?
  while(1){
    w+=i;
    i++;
    if(i==11)break;
  }

  if(f(w)){
    printf("1から%dまでの合計は100未満です。\n",w);
  }
  else{
    printf("1から%dまでの合計は100以上です。\n",w);
  }
という奇妙な使い方の意味を説明しましょう。
そもそも、
  while(i<100){
    w+=i;
    i++;
    if(i==11)break;
  }
の中のi==11のような条件式について、
皆さんはコンピュータが、
iが11に等しいと判断したから、
break文を実行されたとイメージされていますよね。
そのイメージは、ほぼ正しいのですが、
実際上の処理は少し違うのです。
コンピュータが扱っているものは、
1と0だけだったことを思い出して下さい。
というか0と1しか扱えないといった方が正確です。
平仮名や漢字もそれを表す2進数(0と1のみで表される数)のコードがあって、
コードに対応する文字を画面に表示しているだけなのです。
コンピュータは、漢字や平仮名を直接読めるわけでも、
直接書けるわけでもないのです。
では、0か1しか扱えないコンピュータが、
どのようにして、
    if(i==11)break;

  while(w<10){
    printf("こんにちは\n");
    w++;
  }
等を判断して処理しているのでしょうか。
実は・・・・
なんと「w<10」「i==11」という式自体が、
0か1の値をもっているのです。
例えば、「3<5」という式は1という値を、
「5<3」という式は0という値をもっているのです。
「文字をもっていない」=「0か1の数しか扱えない」コンピュータは、
正しいということを1で表し、
正しくないということを0で表すことによって、
    if(i==11)break;

  while(w<10){
    printf("こんにちは\n");
    w++;
  }
を処理しているのです。
正しい:1
正しくない:0
で表すことを考えた人は天才です。
この発想がなければ、
ハリウッド版のゴジラのようなすごすぎるCGも、
世界No.1の囲碁棋士を破ったり、
将棋の佐藤天彦名人に完勝したりするAIも存在していなかったのです。
AIは
小説を書くことも、
絵画を描くことも、
作曲をすることも出来るし、
車を自動的に運転することも出来ます。
ハンドルもアクセルもブレーキも完全自動運転車が実用化されるまで、
後20年はかからないでしょう。
そんなすごいことをコンピュータは0と1のみによって行っているのです。
そして、それが行えるのは、
正しい:1
正しくない:0
という普通の人が思いつかないことを思いついた人がいるからなのです。

今この講義を読んでいる小学生は、
C言語に挑戦するぐらい意欲的であり、
能力も高い小学生ですから、
言うまでもないことですが、
算数や数学は無限の可能性をもっているのですよ。
高度な数学の塊であるAIが、
やがては人間が出来ることのすべてを行い、
そして、人間を越えてしまうのです。
ですから、算数の勉強を大切にして下さい。
もし、あなたがプログラマーを夢見ているなら、
算数は絶対の条件です。
さらに、国語・社会・理科・家庭科などの教科もしっかり勉強して下さい。
算数以外どうして必要なのか分かりますか。
プログラマーには、
エンジン制御プログラム、
会計アプリ、
ご飯をおいしく炊く炊飯制御プログラム
等のいろいろな仕事が依頼されます。
効率的なエンジン制御のプログラムを組むには、
エンジンの構造、ガソリンの燃焼の仕組みなどを知らなければなりません。
プログラミングの専門知識だけを学べばプログラマーになれるというものではないのです。
近い将来に弁護士はAIを利用するようになります。
裁判に使えるアプリを作るには、
法学(法に関する学問、法とは法律や条令などが入ります。)
政治学(法学の基礎理論です。)
経営学
(会計アプリなどを作るときに必要ですし、
大きな会社には顧問弁護士が必ずいます。
不正会計に関する裁判にも弁護士は関わります。)
等の社会科の知識が必要になります。
もちろん、すべての専門知識を学ぶことは不可能ですから、
君たちは、仕事が依頼されたときに、
専門分野調べることの出来る基礎知識をもっていれば良いのです。

学生の皆さん、
特に高校生以下の生徒・児童の皆さん、
是非ともAI時代の生き方・学びかたを熟読して下さい。
ここに提案する学び方をしないと、
必ず将来リストラ(会社を辞めさせられること)され泣くことになります。


話を元に戻しましょう。
  while(1){
    w+=i;
    i++;
    
if(i==11)break;
  }
if(i==11)break;
がないと永久ループになってしまうことお分かりですね。

次の話ではdo〜while文について学びます。

第5話へ 第7話へ

a


初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座

初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ