プログラミング言語Ⅰ・講義メモ7

p.94 for文

・while文の機能拡張バージョンで、前判定繰返し。
・while文でよく使われるパターンを1つにまとめて「●回繰返す」を一目で分かるように書ける構文
【while文】
 int カウンタ = 0;
 while(カウンタ < 回数) {
  繰返し内容 //回数の分だけ繰返される
  カウンタ++;
 }
【for文】
 for(int カウンタ = 0; カウンタ < 回数; カウンタ++;) { //回数分だけ繰返す
  繰返し内容 
 }
・カウンタの初期値や増加(減少)などは自由にできるので、回数がわかる繰返しはforで書くと良い
・for文の{}も対象が1文であれば省略できる
※ 業務ではローカルルールやチームルールに従うこと

p.98 演習4-13 仕様とヒント

・for文を用いること
・for文の前で「1からnum(入力値)1」と表示しておく
・for文の前で合計用の変数sumを0に初期化しておく
・for文でカウンタiを1から、num以下である間、インクリメントしながら繰返す
・for文の内容は「sumにiを足し込む」
・for文を終えてから「sumです。」を表示すれば良い

作成例

//p.91 演習4-13
#include <stdio.h>
int main(void)
{
    int num; //入力用の変数を宣言
    printf("nの値:");
    scanf("%d", &num); //キーボードから整数値を入力
    printf("1から%dまでの総和は", num);
    int sum = 0;
    for (int i = 1; i <= num; i++) { //iを1から、num以下である間、+1しながら繰返す
        sum += i; //sumにiを足し込む
    }
    printf("%dです。", sum);
    return 0;
}

p.91 演習4-14は割愛(自由参加課題とします)

p.91 演習4-15 ヒント

・「何cmから」を変数begin、「何cmまで」を変数end、「何cmごと」を変数eachに格納する。
・すると、for(int i = begin; i <= end; i += each) {…} となる

作成例

//p.91 演習4-15
#include <stdio.h>
int main(void)
{
    int begin, end, each; //入力用の変数(開始値、終了値、増分)を宣言
    printf("何cmから:"); scanf("%d", &begin); //キーボードから整数値を入力
    printf("何cmまで:"); scanf("%d", &end); //キーボードから整数値を入力
    printf("何cmごと:"); scanf("%d", &each); //キーボードから整数値を入力
    for (int i = begin; i <= end; i += each) { //iを開始値から、終了値以下である間、+増分しながら繰返す
        printf("%dcm  %.2fkg\n", i, (i - 100) * 0.9); //身長と標準体重(小数点以下2桁)を表示
    }
    return 0;
}

p.99 for文による一定回数の繰返し(追加事項)

・for文のカッコ内で初期化したカウンタ用の変数はforのブロック内でのみ有効
・よって、カウンタ用の変数をfor文の外でも用いたい場合は、for文の前で宣言すること
・例:
 int i; //前に宣言
  for (i = begin; i <= end; i += each) {…} //初期化せず代入にする
 printf("%dcm以上は表示しません", i); //forの繰返しを抜けた後のカウンタを利用できる

p.100 演習4-16、4-17は割愛(自由参加課題とします)

p.100 演習4-18 ヒント

・p.97 list0413.cppを元にすると良い
・for文の{}を記述する
・putchar('*');の後で、iを5で割った余りが0ならば、putchar('\n'); を実行
・for文の後で、個数が5の倍数でなければ改行すれば良い

作成例

//p.100 演習4-18
#include <stdio.h>
int main(void)
{
    int num; //入力用の変数を宣言
    printf("何個*を表示しますか:"); scanf("%d", &num); //キーボードから整数値を入力
    for (int i = 1; i <= num; i++) { //iを1から、num以下である間、+1しながら繰返す
        putchar('*');
        if (i % 5 == 0) { //5回ごとに
            putchar('\n'); //改行
        }
    }
    if (num % 5 != 0) { //回数が5の倍数でなければ
        putchar('\n'); //最後に改行していないので改行する
    }
    return 0;
}

提出:p.101 演習4-19 ヒント

・まず、list4-17のforとifの省略されている{}を書き込む
・forの前で個数用の変数cntを0に初期化しておく
・if文の中でcntをインクリメント
・forの後で「約数はcnt個です。」と表示
・改行がlist4-17とは異なっているので注意

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です