(8) 第4章 プログラムの流れの繰返し(1)

プログラムの流れ

C言語での繰返しの使い方(教科書を離れて説明)

命令 do while for
文法
do{
  繰返したい文 ;
  ・・・
}while(繰返しをする条件);
while(繰返しをする条件){
  繰返したい文 ;
  ・・・
}
for(初期設定; 繰返しをする条件; 繰返すたびに実行する文){
  繰返したい文 ;
  ・・・
}
特徴
  • 繰返しを続けるかの判定を最後に行うので、少なくとも一回は文を実行する
  • 最初に繰返すか判断するので一回も実行しない場合もある
  • 最初に繰返すか判断するので一回も実行しない場合もある
  • 繰返す前に設定しておくこと、繰返すたびに実行すること、を書いておくことができる
主な使 用例
  • 処理をもう一回続けるかどうか聞いて、1が入力されたら繰返し、0が入力されたら終わる
  • 入力されたデータが範囲外だった場合にもう一度入力させる
  • いろいろ
  • 回数が決まった繰返し
使用頻 度
プログ ラム例1:10回繰返す(カウントアップ)
int i=1;
do{
printf("%d\n", i);
i++;
}while(i<=10);
int i=1;
while(i<=10){
printf("%d\n", i);
i++;
}
int i;
for(i=1; i<=10; i++){
printf("%d\n", i);
}
プログ ラム例2:10回繰返す(カウントダウン)
int i=10;
do{
printf("%d\n", i);
i--;
}while(i>0);
int i=10;
while(i>0){
printf("%d\n", i);
i--;
}
int i;
for(i=10; i>0; i--){
printf("%d\n", i);
}
それぞ れの特徴ある使い方1
/* もう一回やるか聞く */
int key;
do{
  printf("繰返しますか?[yes:1 no:1以外]");
  scanf("%d", &key);
}while(key==1);
/* 例2のC言語特有の書き方 */
int i=10;
while(i--){
printf("%d\n", i+1);
}
/* 例1の別の書き方 */
int i;
for(i=0; i<10; i++){
printf("%d\n", i+1);
}
それぞ れの特徴ある使い方2
/* 範囲外だったら再入力 */
int tensuu;
do{
  printf("点数を入力:");
  scanf("%d", &tensuu);
if(tensuu<0 || tensuu>100){
printf("0-100で入力してくだい\n");
}
}while(tensuu<0 || tensuu>100);
/* 合計を求める(カウントアップ) */
int i=1, sum=0;
while(i<=100){
sum+=i;
i++;
}
printf("1から100までの合計は%d", sum);
/* 合計を求める(カウントアップ) */
int i, sum=0;
for(i=1; i<=100; i++){
sum+=i;
}
printf("1から100までの合計は%d", sum);

補足説明

演習8-1


4-1 do文 (教科書から)

do
 文;
while(条件);
do{
 文;
}while(条件);

do文の例

その他

論理否定演算子 !

複合代入演算子

増分演算子・減分演算子

演習8-2

課題8

次の動作をするプログラムを作る

  1. 整数を入力し、1からその入力した数までを足した数を表示する プログラムを作る
    実行例)
    整数を入力:10
    1から10までを足した数は55
    
  2. 1.のプログラムを改良し、ゼロ以下の数が入力された場合は再 入力するようにする
    実行例)
    整数を入力:-5
    もう一度入力してください
    整数を入力:0
    もう一度入力してください
    整数を入力:10
    1から10までを足した数は55
    
  3. 2.のプログラムを改良し、もう一度繰り返すか聞くようにする
    実行例)
    整数を入力:-5
    もう一度入力してください
    整数を入力:0
    もう一度入力してください
    整数を入力:10
    1から10までを足した数は55
    繰返す?(yes:1)1
    整数を入力:-100
    もう一度入力してください
    整数を入力:100
    1から100までを足した数は5050
    繰返す?(yes:1)0
    

注意

次回予告

第4章 繰返し続き