05-03 戻り値

練習問題5-3-1

上のプログラムを、printBMI(h, w) という関数を使った形に書き換えなさい。

  • 身長と体重は 引数 で渡す(h は身長、w は体重)
  • 関数の中で BMI を計算し、print で表示する(戻り値はまだ使わない)
  • setup から3人分、関数を呼び出す
  let numberoftimes=1
function setup() {
  printBMI(1.65, 55);
  printBMI(1.72, 62);
  printBMI(1.58, 48);
}

function printBMI(h, w) {
  let bmi=w/(h*h)
  print(numberoftimes+"人目のBMI"+bmi)
  numberoftimes++
}
function setup() {
  printBMI(1.65, 55, 1);
  printBMI(1.72, 62, 2);
  printBMI(1.58, 48, 3);
}

function printBMI(h, w, n) {
  let bmi=w/(h*h)
  print(n+"人目のBMI"+bmi)
}
この課題ではBMIを出すことはできたのですが、一番迷ったのは何人目かを判断する方法です。
そして今回は二つの方法が思い浮かびましたので、どちらも作ってみました。三人だけなら下のほうがいいと思いますが、百人単位だと上のほうが使い勝手がいいと思います。
それ以外にもやり方があったのかもしれませんがあいにくと思い浮かびませんでした。

練習問題5-3-2

練習問題5-3-1の printBMI を、calcBMI(h, w) に作り替えなさい。

  • 関数は 計算だけ 行い、結果を return で返す
  • 表示(print)は setup に残す
  • 3人分、次のように表示しなさい(例:print("1人目のBMI: " + calcBMI(1.65, 55));
function setup() {
  print("1人目のBMI: " + calcBMI(1.65, 55));
  print("2人目のBMI: " + calcBMI(1.72, 62));
  print("3人目のBMI: " + calcBMI(1.58, 48));
}

function calcBMI(h, w){
  return w / (h * h)
}
戻り値というのは上になくても動くというのは結構意外でした。
下にあっても動く理由はある程度分かるので、これから使っていく中でその理解を深めたいです。

練習問題5-3-3

練習問題5-3-2で作った calcBMI(h, w) を使い、BMIの判定まで行いなさい。

  • judgeBMI(bmi) を作る(BMIの数値を引数で受け取り、次の文字列を 戻り値 で返す)
  • bmi が 18.5 未満 → "低体重"
  • bmi が 25 未満 → "普通体重"
  • それ以外 → "肥満"
  • setup で、身長 1.72 m・体重 62 kg のBMIを計算し、判定し、表示する
  • 表示は次の形式にする(XXX は計算したBMIの値)
function setup() {
  let bmi=calcBMI(1.72, 62)
  print("bmiが"+bmi+"のため"+judgeBMI(bmi))
}

function calcBMI(h, w) {
  return w / (h * h);
}

function judgeBMI(bmi){
  if(bmi<18.5){
    return"低体重"
  }else if(bmi<25){
    return"通常体重"
  }else{
    return"肥満"
  }
}
最初はprint(judgeBMI(calcBMI))と書いていましたが、変数と仕様が違ったのでうまくいかず、考えた結果変数を作ることにしました。あっているかは分かりませんが、動くので今のところ大丈夫そうです。
それと、変数名のこれでよかったのかという感じは否めませんが、思いつかなかったので仕方ないと思います。
それと、小数点は切り捨てたほうがよかったのでしょうか?どうなのでしょうか

練習問題5-3-4

直方体の体積を求める calcBoxVolume(w, h, d) を作りなさい。
体積は 幅 × 高さ × 奥行き です(引数は whd。ここでは width・height・depth の略。p5.js の widthheight とは別)。
計算結果は戻り値で返し、setup で表示しなさい。

function setup() {
  let v1 = calcBoxVolume(3, 4, 5);
  let v2 = calcBoxVolume(10, 2, 6);

  print("1つ目の体積: " + v1);
  print("2つ目の体積: " + v2);
}

function calcBoxVolume(w, h, d){
  return w*h*d
}
特に苦戦はしませんでしたが、簡単だったので、本当にこれで体積の求め方があっているのか心配になりました。

練習問題5-3-5

2つの関数を使って、テストの結果を判定しなさい。

  • calcAverage(a, b, c):3教科の平均点を返す
  • judgePass(avg):平均が60以上なら "合格"、それ以外は "再挑戦" を返す

計算結果は戻り値で受け取り、setup で表示しなさい。

function setup() {
  let avg = calcAverage(70, 55, 80);
  let result = judgePass(avg);

  print("平均点: " + avg);
  print("結果: " + result);
}

function calcAverage(a, b, c){
  return (a+b+c)/3
}
function judgePass(avg){
  if(avg>=60){
    return"合格"
  }else{
    return"再挑戦"
  }
}
結構楽しかったです。

コメントする