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

p.80 複合代入演算子

・今回の「sum = sum + cnt;」のように「● = ● 演算子 ■」という構文は良く用いるが、同じ変数名を2度記述するのはすっきりしない
・そこで、複合代入演算子を用いて「● 演算子= ■」とすると良い
・例: sum = sum + cnt; ⇒ sum += cnt; //sumにcntを足し込む
・「+=」のみではなく「-=」「*=」「/=」「%=」なども利用可能
・例: sum = sum - 5; ⇒ sum -= 5; //sumから5を差し引く
・例: sum = sum * 5; ⇒ sum *= 5; //sumを5倍にする
・例: sum = sum / 5; ⇒ sum /= 5; //sumを1/5倍にする
・例: sum = sum % 5; ⇒ sum %= 5; //sumを5で割った余りにする

p.81 増分演算子

・今回の「cnt = cnt + 1;」のように「● = ● + 1」という構文は良く用いるが、同じ変数名を2度記述するのはすっきりしない
・そこで、増分演算子を用いて「●++」とすると良い
・増分演算子は後置の「●++」と前置の「++●」があり、単独で用いる場合はどちらでも良い(後置の方がよく使われる)
・違いは評価のタイミングで、後置の「●++」は評価の後で+1し、前置の「++●」は評価の前に+1する
・+1することをインクリメントというので、インクリメント演算子ともいう
・-1する減分演算子「--」もあり、デクリメント演算子ともいう。仕様は同様。

アレンジ演習:p.79 演習4-2

・複合代入演算子と増分演算子を用いて書き換えよう

作成例

//アレンジ演習:p.79 演習4-2 ex0402.cpp
#include <stdio.h>
int main(void)
{
    int na, nb; //int型の2変数を宣言
    puts("二つの整数を入力せよ");
    printf("変数a:"); scanf("%d", &na); //入力案内を表示しキーボードから整数値を入力
    printf("変数b:"); scanf("%d", &nb); //入力案内を表示しキーボードから整数値を入力
    int sum = 0; //合計用の変数を0で初期化
    int start = (na < nb) ? na : nb; //開始値の変数を、変数aとbの小さいほうで初期化
    int end   = (na > nb) ? na : nb; //終了値の変数を、変数aとbの大きいほうで初期化
    int cnt = start; //カウンタ用の変数を、開始値で初期化
    do {
        sum += cnt; //【変更】合計にカウンタを足し込む)
        cnt++; //【変更】カウンタに1を足し込む
    } while (cnt <= end); //カウンタが終了値以下である間、繰返す
    printf("%d以上%d以下の全整数の和は%d。\n", start, end, sum);
    return 0;
}

p.82 while文

・do-whileを前判定にした繰返し構文
・初回の繰返しの前に条件をチェックし、繰返し内容が終わったら条件チェックに戻る
・よって、繰返し内容を1度も実行しない可能性がある場合に便利
・例:生きているモンスターがいる間、戦いを繰返す(いなければ戦わない)
・do-whileとは異なり文末の「;」は不要
p.82 list0405.cpp
//p.82 list0405.cpp
#include <stdio.h>
int main(void)
{
    int no; //入力用の変数を宣言
    printf("正の整数を入力せよ:"); scanf("%d", &no); //入力案内を表示しキーボードから整数値を入力
    while (no >= 0) { //noが0以上である間、繰返す
        printf("%d ", no); //整数値と空白を出力(改行しない)
        no--; //変数noをデクリメント(カウントダウン)
    }
    printf("\n"); //改行する
    return 0;
}

p.83 演習4-3 ヒント

・「printf("\n"); //改行する」を変数noが0か正の数である場合のみ実行すれば良い
・noの値は書き変わってしまうので、入力値をとっておくと良い

作成例

//p.83 演習4-3
#include <stdio.h>
int main(void)
{
    int no; //入力用の変数を宣言
    printf("正の整数を入力せよ:"); scanf("%d", &no); //入力案内を表示しキーボードから整数値を入力
    int enter = no; //【追加】入力値を退避
    while (no >= 0) { //noが0以上である間、繰返す
        printf("%d ", no); //整数値と空白を出力(改行しない)
        no--; //変数noをデクリメント(カウントダウン)
    }
    if (enter >= 0) { //【追加】入力値が0または正の数であれば
        printf("\n"); //改行する
    }
    return 0;
}

コメントを残す

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