Snippets

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

Created by sironekotoro

File simple_calc.pl Added

  • Ignore whitespace
  • Hide word diff
+#!/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";
+}
+
HTTPS SSH

You can clone a snippet to your computer for local editing. Learn more.