Fortranには「暗黙の型宣言」というルールがあり、変数の型(整数や実数など)を宣言しなくても自動的に決まる仕組みがあります。しかし、これが原因で思わぬエラーが発生することがあります。そこで、「implicit none」を使うことで、すべての変数を明示的に宣言することを強制し、プログラムの安全性を高めることができます。
本記事では、「implicit none」を使わない場合の問題点と、なぜ「implicit none」が重要なのかを、具体例を交えて説明します。
暗黙の型宣言とは?
Fortranでは、変数の型を宣言しなくても自動的に決まるというルールがあります。具体的には、
i, j, k, l, m, n
で始まる変数 → 整数(integer)- それ以外の変数 → 実数(real)
という規則になっています。
このため、プログラム中にスペルミスや意図しない型の変数があると、予期しない動作をすることがあります。
具体例:予想外の計算結果
まず、次のプログラムを見てみましょう。
(例1)思った通りに動かないプログラム
program ai1
boku = 2.5
kanojo = 0
love = boku * kanojo
print *, love
end program
💔 実行結果
0
→ エラーは出ないが、期待と違う結果になった!
なぜ?
boku
はb
で始まるので実数(real)kanojo
はk
で始まるので整数(integer)kanojo = 0
は整数の 0 なので、boku * kanojo
の計算結果は0.0
になった。
(例2)もっとおかしい結果
program ai2
watashi = 2.5
kareshi = 0.4
love = watashi * kareshi
print *, love
end program
💔 実行結果
0
→ 2.5 × 0.4 = 1.0 にならない!
なぜ?
watashi
はw
で始まるので 実数(real)kareshi
はk
で始まるので 整数(integer)kareshi = 0.4
だが、整数のkareshi
には0.4
は入らない
→kareshi = 0
になり、watashi * kareshi = 2.5 * 0 = 0.0
になった!
解決策:「implicit none」を使おう!
この問題を防ぐために、すべての変数の型を明示的に宣言することを強制する「implicit none」を使いましょう。
(修正後の正しいプログラム)
program ai3
implicit none ! 暗黙の型宣言を禁止
real :: watashi, kareshi, love ! 変数の型を明示的に宣言
watashi = 2.5
kareshi = 0.4
love = watashi * kareshi
print *, love
end program
💖 実行結果
1.000000
→ 期待通りの結果になった! 🎉
「implicit none」を使うメリット
✅ 1. 変数の型を明示的に指定できる
→ 予期しない整数変数や実数変数を防げる!
✅ 2. スペルミスによるバグを防げる
→ 例えば、distance
を distnace
とタイプミスしても、明示的な宣言がなければエラーとして検出できる!
✅ 3. コードが分かりやすくなる
→ 変数の型が明確になり、プログラムの可読性が向上する!
✅ 4. 最新のFortranでは「implicit none」が推奨されている
→ Fortran 90以降では、「implicit none」を書くのが標準的なスタイル!
まとめ
書き方 | 問題 |
---|---|
implicit none を書かない | 予期しない型が適用され、計算ミスやバグが起こりやすい |
implicit none を書く | すべての変数を明示的に宣言し、バグを防げる |
Fortranのプログラムを書くときは、必ず「implicit none」を書く習慣をつけましょう! 💡✨
🎯 「implicit none」を使って、安全で正確なFortranプログラムを書こう! 🚀
コメント