Snippets

sironekotoro Perl入学式 2018 第4回 練習問題 simple_calc.pl

Created by sironekotoro
#!/usr/bin/env perl
use strict;
use warnings;

# Perl入学式 2018 第4回 練習問題
# https://github.com/perl-entrance-org/workshop-2018/blob/master/4th/slide.md
# 練習問題(simple_calc.pl)

# 次のような機能を持つコードを,
# simple_calc.plという名前で作成しよう.
#   2つの引数の和を計算するaddと同様に, 2つの引数の差を計算するmin, 積を計算するmul,
#   商を計算するdivというサブルーチンを作ってみよう.
#
#   これらのサブルーチンが正しく実装できているか
#   (与えた2つの引数に対して, 適切な値を返すか)を
#   確認するコードを書いてみよう

# 2つの引数を受け取り, その和を返すサブルーチンadd
sub add {
    my ( $left, $right ) = @_;
    return $left + $right;
}

# サブルーチンaddの確認コード
if ( add( 2, 5 ) == 7 ) {
    print "ok:add subroutin test\n";
}
else {
    print "NG:add subroutin test\n";
}



# 2つの引数を受け取り, 第一引数から第二引数を引いた
# 差を返すサブルーチンmin
sub min {
    my ( $left, $right ) = @_;
    return $left - $right;
}

# サブルーチンminの確認コード
if ( min( 2, 5 ) == -3 ) {
    print "ok:min subroutin test\n";
}
else {
    print "NG:min subroutin test\n";
}



# 2つの引数を受け取り, 積を返すサブルーチンmul
sub mul {
    my ( $left, $right ) = @_;
    return $left * $right;
}

# サブルーチンmulの確認コード
if ( mul( 2, 5 ) == 10 ) {
    print "ok:mul subroutin test\n";
}
else {
    print "NG:mul subroutin test\n";
}



# 2つの引数を受け取り, 第一引数を第二引数で
# 割った商を返すサブルーチンdiv
sub div {
    my ( $left, $right ) = @_;

    # 第二引数が0の場合にはエラーメッセージを返す
    if ( $right == 0 ) {
        return 'divided by zero';
    }

    return $left / $right;
}

# サブルーチンdivの確認コード その1
if ( div( 2, 5 ) == 0.4 ) {
    print "ok:div subroutin test(normal)\n";
}
else {
    print "NG:div subroutin test(normal)\n";
}

# サブルーチンdivの確認コード その2
if ( div( 2, 0 ) eq 'divided by zero' ) {
    print "ok:div subroutin(divided by zero)\n";
}
else {
    print "NG:div subroutin(divided by zero)\n";
}

Comments (0)