チュートリアル > プログラミング > タスク 3-2: while ループの作成
タスク 3-2: while ループの作成
基本 while 関数の定義
0 から n のすべての数値の和を求める関数 sigma を定義します。
1. 変数 n をとる関数 sigma を定義し、プログラムを新規作成します。
クリックしてこの式をコピー
2. 空の while ループを追加するため、「マス」タブの「演算子と記号」グループで、「プログラミング」をクリックし、次に「while」をクリックします。
クリックしてこの式をコピー
3. n>0 の間続行し、ループ内で n から 1 減分するよう while ループを指定します。
クリックしてこの式をコピー
* 
for ループとは異なり、while の反復子を増分または減分する必要があります。
4. sum に反復子の現在の値を加算するため、while 文の直後に次に示す行を入力します。
クリックしてこの式をコピー
5. sum の値を返します。
クリックしてこの式をコピー
* 
反復子は最後に更新します。先に更新すると、1 回目の反復計算が正常に行われません。
6. 5 を引数として sigma の値を計算します。
クリックしてこの式をコピー
予想どおり、このプログラムは次の和と等価です。
クリックしてこの式をコピー
continue 文の追加
特定の反復計算をスキップしながらループの実行を続けるため、continue 文を追加します。
17 で割り切れる数値を除く 0 から n のすべての数値の和を求める関数を定義します。
1. 上記の関数をコピーし、名前を sigma_not17 に変更します。
クリックしてこの式をコピー
2. while ループ内の while 文の下に、新しい行を追加します。
クリックしてこの式をコピー
3. if 文を追加し、次に示す式を入力します。
クリックしてこの式をコピー
4. 無限ループにならないように、n から 1 減分します。
5. continue 文を追加するため、「マス」タブの「演算子と記号」グループで、「プログラミング」をクリックし、次に「continue」をクリックします。
クリックしてこの式をコピー
6. 16 と 17 を引数として sigma_not17 の値を計算します。
クリックしてこの式をコピー
クリックしてこの式をコピー
break 文の追加
すべての数値の和を求め、カウンタが 20 を超えたらループを終了するプログラムを作成します。
1. 変数 sum を定義し、プログラムを新規作成します。
クリックしてこの式をコピー
2. 空の while ループを追加するため、「マス」タブの「演算子と記号」グループで、「プログラミング」をクリックし、次に「while」をクリックします。
クリックしてこの式をコピー
3. 無限に実行するよう while ループを定義します。
クリックしてこの式をコピー
* 
while ループは括弧内の式の値が 0 でない間実行します。
4. sum および i を初期化します。
クリックしてこの式をコピー
5. ループ内で、反復子 i の値を変数 sum に加算し、i を 1 増分します。
クリックしてこの式をコピー
6. sum の値を返します。
クリックしてこの式をコピー
* 
現在のところ、このループは無限ループです。
7. ループを中断するため、if i > 20 と入力し、break 文を追加します。break 文を追加するには、「マス」タブの「演算子と記号」グループで、「プログラミング」をクリックし、次に「break」をクリックします。
クリックしてこの式をコピー
8. sum を計算します。
クリックしてこの式をコピー
9. ループを中断してプログラムを終了するため、break 文を選択し、「マス」タブの「演算子と記号」グループで、「プログラミング」をクリックし、次に「return」をクリックすることで return 文に変更します。次に示すように、プレースホルダーに sum と入力します。
クリックしてこの式をコピー
* 
プログラムをただちに終了するには return を使用します。
演習
次のタスクに進む前に、while ループを使用して階乗関数を実装する関数 fact(n) を定義します。n が 1 より大きい間実行するようループを定義します。ループ内で、n に変数 product (階乗の結果を保存) を掛け合わせ、n を 1 減分します。
* 
PTC Mathcad では、プログラム変数はデフォルトで 0 に設定されます。プログラムの先頭で、product に 1 を割り当てる必要があります。割り当てていない場合、どのような引数でも 0 が返ります。
これは役に立ちましたか?