みなさんこんにちは!

今回は、C言語のwhile文とdo while文について解説したいと思います。

 

今回の記事では、いきなり例題を載せ、その後にwhile文とdo while文の解説を載せています。

 新しいことを理解するには、例題を通して勉強した方が身に付くものです。ですから、初めてだからといって倦厭せずに、まずは第一項の例題を見てみましょう!そのあと、補足として2,3項を呼んでもらえれば幸いです(^^

 

目次

1.while文

2.do while文

3.まとめ

 

1.while文

 ①while文をつかって、入力された値から5を引く計算を繰り返すプログラムを作ってみましょう。ただし、値が10以下になったら繰り返しは終了してください。

 実行結果の例は図1のとおりです。


図1

1

 

◆解答

 では、解答例を図2に示します。


図3

2 解答例

 

while文とは

 while文とは、いわゆる繰り返しを行う文です。次のように記述します。

 

 while(繰り返し条件){

  ループさせたいプログラム

}

 

 

 ここで、while文について先に説明しておきます。

 

while

213とナンバリングされた行を見てください。

while文の括弧の中に条件式が書き込まれています。(a>10)と書いてあるので、「変数a1のときに{}内のことを繰り返す」という意味になります。これはループとも呼ばれます。

 

 そして、while(条件式){}の中身は14行目~18行目にあたります。

 

 条件式が真、つまり今回はa10より大きい限り、14行目~18行目の内容を繰り返すことになります。

 

では、プログラム全体の流れを見てみましょう。

 

◆プログラム全体の流れ

 

1行目 #include “stdafx.h”

 

 ヘッダーファイルを呼び出します。このファイルの中には、C言語用にあらかじめ定義された関数がたくさん入っています。

私は環境にVisual Studioを使用しておりますので、”stdafx.h”というファイルを呼び出しますが、通常は”stdio.h”と記述することが多いかと思います。

C言語初心者の方は、C言語でプログラミングするためにはほぼ確実に必要なおまじないのようなものだと考えていただいて差し支えありません。

 

4行目 main関数

 

 int main()で定義されたmain関数です。

 その名の通り、メインの関数となりますから、ここにいろいろと記述して実行していくことになります。

 

67行目 int a; int b;

 

 変数を定義します。ここで、変数awhile文の条件式、変数bは計算ように定義しました(^^

 

9行目 printf関数

 

 ダブルクオーテーション””内に記述された文字や数字を表示するための関数です。

 

10行目 scanf_s関数

 

 キーボードから文字列を取得するための関数です。入力された数字は、6行目で定義した変数aに代入されます。よって、図1の例では50と入力されましたから、この時点で変数aの値は50となっています。

 

13行目 while文内

 ・14行目 b = a-5

  計算式の通り、変数ba-5を代入します。図1の例では、変数aには入力された値50が代入されておりますので、ここで変数b45となります。

 

 ・16行目 printf関数

  ここでは、変数aと変数bの値を表示します。

  図1の例でいえば、変数a50、変数b45ですから、これらをそれぞれ表示します。

 

 ・18行目 a = b;

  変数aに変数bを代入します。図1の例で行くと、先ほどb14行目の計算結果より45ですから、ここで変数a45となります。

 

 今回のwhile文では、ここまでの動作を条件式(a>10)が真である限り繰り返します。条件が偽になったとき、つまり変数aの値が10より小さくなったとき、ループは終了します。

 このプログラムも、ループが終了したら21行目の文を表示して終了するようになっています。

 

ちなみに、このプログラムでは、はじめに10以下の値が入力された場合は、次のようになります。


図2

3

 

 これは、変数aが、入力された時点ですでに10以下であったため、ループが実行されなかったのですね。

 

 では、今度はどんな値が入力されても、最低1回はループを実行するプログラムを作成してみましょう!

 

2.do while

 

では、今度はdo while文について勉強しましょう。下記の例題を解いてみてください。

 

while文をつかって、入力された値から5を引く計算を繰り返すプログラムを作ってみましょう。ただし、値が10以下になったら繰り返しは終了してください。また、入力された値が10以下だったとしても、1回は計算するようにしてください。

 

 実行結果の例を下記に示します。

 図4

◆解答

 

それでは解答です。まず、解答例を図5に示します。

 図5

5

 

 while文では、条件式が真でない場合は実行されないのでした。よって、図4のように条件式に合わない数値が入力されてしまうと、一度もループが行われません。

 しかし、今回の問題では、1回は計算することが要求されています。よって、今回はdo while文を使ってみましょう(*^^*)

 

do whilewhile文との違いは、「条件に関わらず一度do文を実行すること」です。その後while文の条件を満たせば、do文の内容を実行し続けます。

 一般的に、do while文は下記のように記述されます。

 

 do{

  

  ループさせたいプログラム

 

 }while(条件文)

 

4の例では、入力された値810以下ですから、20行目の条件文(a>10)は真ではありません。しかし、図4では、do文内のプログラムが1回は実行されました。しかし、2回目以降は条件文(a>10)を満たしていなかったため、ループは終了しました。

これがもしwhile文であれば、数値8が入力された時点で条件文(a>10)を満たしておりませんので、この時点でループは実行されないこととなります。

これが、while文とdo while文の違いです。

 

3.まとめ

 ・while文は、条件文が真であればループを繰り返す文である。

 ・do while文は、1度目はdo文のプログラムを実行し、それ以後は条件文が真であればループを実行する。