最大値を求めてみよう

最大値を求める方法をPerlプログラムを用いて説明します。

配列の最大値を求めてみよう。

以下のような正の数(>0)のみが含まれる配列を考えてみます。

@array = (1, 8, 3, 5, 7);

配列の最大値を求めるサンプルプログラム

実際に配列から最大値を求めます。List::Utilモジュールにmax関数がありますが、この例では利用しません。

最大値を保存するための変数を用意し、配列の要素と1つずつ比較することで最大値を求められます。

use strict;
use warnings;

my @array = (1, 8, 3, 5, 7); 

my $max = 0;

for my $num (@array) {
  if ($max < $num) {
    $max = $num;
  }
}

print "$max\n";

実行結果

8

1つ1つ比較していて処理がとてもわかりやすいかと思います。

※コードを単純化するために正の数(>0)のみが含まれる配列を扱います。

表形式のデータから、特定の列の最大値を求めてみよう。

以下のデータを考えてみましょう。

nameage
bob9
tom14
alice11

配列,ハッシュのリファレンスで表すと以下のようになります。

$array_ref = [
  {name => 'bob',  age => 9},
  {name => 'tom',  age => 14},
  {name => 'alice',age => 11}
];

age列の最大値を求めるサンプルプログラム

参照するデータが複雑になったためデータアクセスも少し難しくなりましたが、

チェックする方法は先ほどと同じです。

use strict;
use warnings;

my $array_ref = [
  {name => 'bob', age => 9},
  {name => 'tom', age => 14},
  {name => 'alice',age => 11}
];

my $max = 0;

for my $info (@{$array_ref}) {
  if ($max < $info->{'age'}) {
    $max = $info->{'age'};
  }
}

print "$max\n";

実行結果

14

リファレンスを扱った以外は先ほどと同じ処理になります。

このプログラムは、コピー&ペーストして、PerlBanjoで、すぐに試すことができます。

関連情報