最大値を求めてみよう
最大値を求める方法を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)のみが含まれる配列を扱います。
表形式のデータから、特定の列の最大値を求めてみよう。
以下のデータを考えてみましょう。
name | age |
---|---|
bob | 9 |
tom | 14 |
alice | 11 |
配列,ハッシュのリファレンスで表すと以下のようになります。
$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で、すぐに試すことができます。