フレッシャーズの皆さん、教育担当の皆さんジャンボ!!!!
有望な新人君がシステム開発部に入ってきたのでPHPの課題を出してみました。
Linux上でbash出来る、PHPを少しだけできるとのことだったので少し難しい課題にしてみました。
課題
/**************************************************
* 課題1: うるう年判定
*
* ・起動引数で入力した年がうるう年か平年か判定し結果を出力する
* ・起動引数が西暦でない場合は、エラー内容を出力する
* ・try-catch、throw Exceptionを使用する
**************************************************/
模範解答(になってる?)
<?php
try {
$year = isset($argv[1]) ? $argv[1] : null;
$is_leap_year = false;
$result = 0;
/*
* 起動引数チェック
*/
if (2 != $argc) {
throw new Exception('引数が不正です');
}
if (!is_numeric($year)) {
throw new Exception('引数が西暦ではありません');
}
/*
* うるう年判定
*/
// 4で割り切れるか?
if (0 == $year % 4) {
// うるう年
$is_leap_year = true;
// 100で割り切れるか?
if (0 == $year % 100) {
// 平年
$is_leap_year = false;
// 400で割り切れるか?
if (0 == $year % 400) {
// うるう年
$is_leap_year = true;
}
}
} else {
// 平年
$is_leap_year = false;
}
/*
* うるう年判定
*/
$msg = "$year 年は、うるう年";
$msg .= $is_leap_year == true ? "です" : "ではありません";
$msg = "\033[0;36m$msg\033[0m";
} catch (Exception $e) {
// エラー
$msg = "\033[0;31m".$e->getMessage()."\033[0m";
$result = 1;
} finally {
// うるう年判定結果表示
echo "\033[7mうるう年判定結果:\033[0m $msg\n";
}
exit($result);
?>
動作検証
出力時の色は遊びですw
まだ正式配属前なので https://prog-8.com/ をやっておいてねーと言っておきました。
本当だったら研修カリキュラムを用意したいのですが、教育担当の私もてんてこ舞いで時間が無くネットの学習サイトを活躍しようかしら。
現場からは以上です。