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

p.149 演習6-4 作成例

//p.149 演習6-4 ex0603.cpp 整数の4乗値を求める
#include <stdio.h>
//--- nの2乗値を返す ---//
int sqr(int n)
{
    return n * n;
}
//--- nの4乗値を返す ---//
int pow4(int n)
{
    return sqr(n) * sqr(n);
}
int main(void)
{
    int x;
    printf("整数:");   scanf("%d", &x);
    printf("4乗は%dです。\n", pow4(x));
    return 0;
}

p.150 値渡し

・関数の引数として変数を指定できる
・この時、変数名と引数名が違っても良い(違うことが望ましい)
・というのも、C言語の基本は値渡しであり、変数の値が引数にコピーされるから
・よって、関数の内部で引数を変数のように用いて、値を変更しても良い
・コピーなので、引数の値を変更しても、呼び出し側の変数とは無関係だから

p.150 list0606.cpp

//p.150 list0606.cpp べき乗を求める(その2)
#include <stdio.h>
//--- xのn乗を返す ---//
double power(double x, int n)
{
    double tmp = 1.0;
    while (n-- > 0) { // 引数nの値をデクリメントしているが、コピーなので悪影響はない
        tmp *= x;    // tmpにxを掛ける
    }
    return tmp;
}
int main(void)
{
    double a;
    int b;
    printf("aのb乗を求めます。\n");
    printf("実数a:");   scanf("%lf", &a);
    printf("整数b:");   scanf("%d", &b);
    printf("%.2fの%d乗は%.2fです。\n", a, b, power(a, b)); //bの値が関数内で引数nにコピーされている
    return 0;
}

p.151(引数における暗黙の型変換)

・関数の呼び出しにおける引数(実引数)と、関数で定義している引数(仮引数)の型は一致させるのが基本。
・しかし、自動的に型を変換できる場合は、型が違っても良い
・これを引数における暗黙の型変換という
・例: double sqrt(double x) { return x * x; } に対して、sqrt(5)と整数を与えると、
 暗黙の型変換により sqrt(5.0) となるのでOK
・例: sqrt("ABC")と文字列を与えると、型変換できないのでエラー

p.151 演習6-5 ヒント

・関数の中で、for/while文による繰返しを行えば良い

作成例 その1

//p.151 演習6-5
#include <stdio.h>
//--- 1からnまでの全整数の和を返す ---//
int sumup(int n)
{
    int sum = 0; //合計値
    for (int i = 1; i <= n; i++) { // nまで繰返す
        sum += i; // 合計値に足し込む
    }
    return sum;
}
int main(void)
{
    int x;
    printf("整数:");   scanf("%d", &x);
    printf("1から%dまでの全整数の和は%d\n", x, sumup(x));
    return 0;
}

作成例 その2

//p.151 演習6-5
#include <stdio.h>
//--- 1からnまでの全整数の和を返す ---//
int sumup(int n)
{
    int sum = n; //合計値
    while (n-- > 0) { // nが0超である間、デクリメントしながら繰返す(値渡しなのでOK)
        sum += n; // 合計値に足し込む
    }
    return sum;
}
int main(void)
{
    int x;
    printf("整数:");   scanf("%d", &x);
    printf("1から%dまでの全整数の和は%d\n", x, sumup(x));
    return 0;
}

コメントを残す

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