20140122【JS】高階関数を使う

お題

高階関数を使う

プログラム概要

円錐の体積を求め、体積をもとにサイズを分類し

サイズごとに合格/不合格を表示する

ソース


// 円錐の体積を求める関数
function calcCone(radius, height) {
    // 底面の面積
	var dimension = Math.pow(radius, 2) * Math.PI;
	// 体積 = 1/3 * 底面積 * 高さ
	return dimension * height / 3;
}
// 体積によりサイズを分離する関数1
function getSize(dimension) {
	if (dimension >= 100) {
		return 'L';	// 100以上の場合はLサイズ
	} else if (dimension >= 50) {	
		return 'M';	// 50以上100未満の場合はMサイズ
	} else {
		return 'S';
	}
}
// 体積によりサイズを分離する関数2
function getSize2(dimension) {
	if (dimension >= 80) {
		return 'L';	// 80以上の場合はLサイズ
	} else if (dimension >= 40) {	
		return 'M';	// 40以上80未満の場合はMサイズ
	} else {
		return 'S';
	}
}
// 関数を引数にとりサイズの判定を行う高階関数
function checkSize(func, dimension) {
	var size = func(dimension);
	if (size == 'L' || size == 'M') {
		return true;
	}
	return false;
}

var dimension = calcCone(3, 5);
if (checkSize(getSize2, dimension)) {
	alert('合格です: ' + dimension);
} else {
	alert('不合格です: ' + dimension);
}

実行結果

f:id:mocomei:20140122234026p:plain

※赤文字の箇所をgetSizeに変更するとサイズの分類が変わり不合格となる