MENU

「While文」「for文」の解説

当ページのリンクには広告が含まれています。
目次

While文 for文 とは?

「while文」とは、多くのプログラミング言語に用意されている繰り返し処理を記述するための制御構文の一つであり、指定した条件が満たされている間だけ指定された範囲のコードを繰り返し実行します。

「for文」とは、多くのプログラミング言語に用意されている繰り返し処理を記述するための構文の一つであり、決まった回数の繰り返しを記述するために用いられることが多いです。

While文

言語により仕様や構文は異なるが、C言語の場合は「while(条件)文」という構造になっています。条件が満たされている間、文を繰り返し実行されます。文が複数に渡る場合は{}で括ってブロックとすることができます。JavaやJavaScriptなどC言語の記法を受け継ぐ言語の多くも同じように記述します。

while文は、ループの先頭で条件を評価して継続か終了かを判断する前判定ループとなっています。ループの開始前に条件が満たされていない場合には、繰り返し部分が一度も実行されません。ループの末尾で条件を評価したい場合には、「do-while」文などを利用する必要があります。

繰り返し処理の途中で、ループの制御が可能な構文が用意されている場合もあります。C言語系の言語では「break文」によってループをその場で強制終了、「continue文」でその回のループ終端までの処理をスキップすることができます。

for文

言語により仕様や構文は異なるが、C言語の場合は「for(初期化;条件;更新)文」という構造になっています。最初に初期化処理を実行し、条件が成り立つ間だけ文を実行し、毎回の文の実行の後に更新処理を実行します。文が複数に渡る場合は{}で括ってブロックとします。JavaやJavaScriptなどC言語の記法を受け継ぐ言語の多くも同じように記述します。

初期化と更新には何を記述しても良いが、カウンタ変数の初期値の代入と数え上げを記述して決まった回数だけ繰り返す処理を行なわせることが多いです。例えば、for(i=0;i<10;i++) のように記述すると、最初に変数iに0を代入し、毎回の処理の後iに1を加算します。これをiが10未満の間だけ繰り返し、iが10に到達するとループを終了します。繰り返し処理中にiを変更しなければ10回繰り返されます。

言語によっては、上記のような伝統的な記法の他に for(変数 in コレクション) あるいは for(変数:コレクション) のようにコレクションの要素を順番に取り出すイテレータ構文が用意されていることもあります。

他の繰り返し文と同じように、処理の途中でループの制御が可能な構文が用意されている場合もあります。C言語系の言語では「break文」によってループをその場で強制終了、「continue文」でその回のループ終端までの処理をスキップすることができます。

While文 for文 に関する問題

関数 checkDigit は,10進9桁の整数の各桁の数字が上位の桁から順に格納された整数型の配列 originalDigit を引数として,次の手順で計算したチェックデジットを戻り値とする。プログラム中のaに入れる字句として,適切なものはどれか。ここで,配列の要素番号は1から始まる。

〔手順〕

(1):配列 originalDigit の要素番号1~9の要素の値を合計する。

(2):合計した値が9より大きい場合は,合計した値を10進の整数で表現したときの各桁の数字を合計する。この操作を,合計した値が9以下になるまで繰り返す。

   ア.    j ← j-10×k   

イ.    j ← k+(j-10×k)  

  ウ.    j ← k+(j-10)×k

  エ.    j ← k+j

出典:令和4年度  ITパスポート試験公開問題 問78

〔プログラム〕

◆確認問題の解答(イ)、解説・・・解説は、次の通り

while文に入ったときの変数 j には、for文の繰返し処理により、

〔手順〕(1)の結果、すなわち配列 originalDigit の要素番号1~9の要素の値を合計した値が格納されています。

〔手順〕(2)によると、変数 j が9より大きい場合は、「合計した値を10進の整数で表現したときの各桁の数字を合計する」ことになっています。※例えば j = 36 であれば、十の位の数字である3と一の位の数字の6の合計である9を変数 j に格納することになります。

プログラムを見ると空欄aの1行前では、k ← j ÷ 10の商という処理を行っています。これは変数 k に変数 j の十の位の数字を求める処理になります。上記の例では、36÷10=3 あまり 6なので、kに3が格納されます(変数kは整数型なので小数点以下は切り捨てられます)。

次に解答を見ると、空欄aは変数 j に代入する処理なので、変数 j の一の位の数字を求めてそれと変数 k (十の位の数字)とを足し合わせる処理をしなければならないことがわかります。

2桁の数の一の位の数字を求めるには、以下になります。

 36-30=6 → 36-3×10=6

2桁の数からその十の位の数字×10を引くことによって実現できます。また、これを変数 k と変数 j を使って表したとき「j-k×10」式になります。

十の位を表す式が k、一の位を表す式が j-k×10 なので、これを足し合わせている「イ」の式が正解になります。

While文 for文

この記事が気に入ったら
フォローしてね!

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次