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

p.148 関数の返却値を引数として関数に渡す

・関数に渡す引数として式を記述できる
 例: max2(10 + 30, 40 * 2);
・また、関数の呼び出しも式の一種で、評価は返却値(戻り値)になる
 例: max2(1, 2)の戻り値は2であり、この式の評価も2になる
・よって、関数の返却値を引数として関数に渡すことができる
 例: printf("%d", max2(1, 2));
・自作の関数においても同様
 例: max2(max2(10, 20), 30) ⇒ max(20, 30) ⇒ 30

p.148 list0603.cpp

//p.148 list0603.cpp 二つの整数の2乗値の差を求める
#include <stdio.h>
//--- nの2乗値を返す ---//
int sqr(int n)
{
    return n * n;
}
//--- aとbの差を返す ---//
int diff(int a, int b)
{
    return a > b ? a - b : b - a;        // 大きいほうから小さいほうを引く
}
int main(void)
{
    int x, y;
    puts("二つの整数を入力せよ。");
    printf("整数x:");   scanf("%d", &x);
    printf("整数y:");   scanf("%d", &y);
    printf("xの2乗とyの2乗の差は%dです。\n", diff(sqr(x), sqr(y))); //diff関数にsqr関数の戻り値を渡す
    return 0;
}

p.148 演習6-3

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

p.149 自作の関数を呼び出す関数

・基本的に関数は単機能にすると使い勝手が良い場合が多い
・そして、関数から関数を呼び出すようにすることで、記述の重複を避け、ミスの防止が可能になる
・例えば、list0603のsqrをdiffを1つの関数sqrdiffにすることも可能だが、別々にしておけば、再利用しやすい

p.149 list06004.cpp

//p.149 list06004.cpp 四つの整数の最大値を求める
#include <stdio.h>
//--- 大きいほうの値を返す(mainでは使われていない) ---//
int max2(int a, int b)
{
    return a > b ? a : b;
}
//--- 四つの整数の最大値を返す ---//
int max4(int a, int b, int c, int d)
{
    return max2(max2(a, b), max2(c, d)); //aとbの大きいほうと、cとdの大きい方を得て、大きい方を返す
}
int main(void)
{
    int n1, n2, n3, n4;
    puts("四つの整数を入力せよ。");
    printf("整数n1:");   scanf("%d", &n1);
    printf("整数n2:");   scanf("%d", &n2);
    printf("整数n3:");   scanf("%d", &n3);
    printf("整数n4:");   scanf("%d", &n4);
    printf("最も大きい値は%dです。\n", max4(n1, n2, n3, n4));
    return 0;
}

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;
}

コメントを残す

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