1
0

More than 3 years have passed since last update.

新人君向けの課題(うるう年判定プログラム)

Last updated at Posted at 2020-04-08

フレッシャーズの皆さん、教育担当の皆さんジャンボ!!!!

有望な新人君がシステム開発部に入ってきたので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);
?>

動作検証

2020-04-08_16h13_56.png

出力時の色は遊びですw
 
 
 

まだ正式配属前なので https://prog-8.com/ をやっておいてねーと言っておきました。

本当だったら研修カリキュラムを用意したいのですが、教育担当の私もてんてこ舞いで時間が無くネットの学習サイトを活躍しようかしら。
 
 
 

現場からは以上です。

1
0
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0