[Fortran] ν”„λ‘œμ‹œμ € (Procedure)

[원본 링크]

ν¬νŠΈλž€μ€ νƒœμ΄ˆμ–Έμ–΄λ‹€λ³΄λ‹ˆ, μ–Έμ–΄ μ„€κ³„μžλ“€μ˜ μž‘λ‹€ν•œ 번민이 μ§€μ €λΆ„ν•˜κ²Œ λ¬»μ–΄μžˆλ‹€.
κ·Έ 예둜, μš”μ¦˜ μ–Έμ–΄λ“€μ—μ„œ "ν•¨μˆ˜"라고 λΆ€λ₯΄λŠ” λ‹¨μœ„κ°€ 2κ°€μ§€λ‘œ λΆ„λ¦¬λ˜μ–΄ μžˆλ‹€.

ν•˜λ‚˜λŠ” ν•¨μˆ˜, ν•˜λ‚˜λŠ” μ„œλΈŒλ£¨ν‹΄μ΄λ‹€.




ν•¨μˆ˜ (Function)

ν¬νŠΈλž€μ˜ ν•¨μˆ˜λŠ” μƒλ‹Ήνžˆ μ›μ‹œμ μΈ ꡬ쑰λ₯Ό κ°–κ³  μžˆλ‹€.
μ•„λž˜λŠ” μ •μˆ˜ 2개λ₯Ό λ°›μ•„μ„œ λ”ν•œ ν›„ λ°˜ν™˜ν•˜λŠ” κ°„λ‹¨ν•œ μ½”λ“œλ₯Ό ν•¨μˆ˜λ‘œ κ΅¬ν˜„ν•œ 것이닀.

ν•¨μˆ˜λͺ… 였λ₯ΈνŽΈμ— 인자λ₯Ό λ‚˜μ—΄ν•˜λŠ”κ±΄ νŠΉλ³„ν• κ²Œ μ—†μ§€λ§Œ, μ§€μ—­λ³€μˆ˜ μ„ μ–ΈμœΌλ‘œ 또 νƒ€μž…μ„ μ§€μ •ν•΄μ„œ λͺ…μ‹œμ μœΌλ‘œ μ„ μ–Έν•΄μ€˜μ•Όν•˜λŠ”κ²Œ 쑰작슀런 뢀뢄이닀.

κ²Œλ‹€κ°€ ν•¨μˆ˜μ˜ λ°˜ν™˜κ°’μ„ μ§€μ •ν•˜λŠ” 뢀뢄도 λ»‘μ μ§€κ·Όν•˜κ²Œ λ˜μ–΄μžˆλ‹€.
ν•¨μˆ˜λͺ…κ³Ό λ™μΌν•œ μ΄λ¦„μ˜ λ³€μˆ˜λ₯Ό μ„ μ–Έν•΄λ†“μœΌλ©΄, 그게 λ°˜ν™˜κ°’μœΌλ‘œ μ‚¬μš©λœλ‹€.
named return이 λ„ˆλ¬΄ 이λ₯΄κ²Œ νƒ„μƒν–ˆλ‹€...

ν˜ΈμΆœλ°©λ²•λ„ μ›μ‹œμ μΈκ±΄ λ§ˆμ°¬κ°€μ§€λ‹€.

ν•΄λ‹Ή μŠ€μ½”ν”„ 내에 ν˜ΈμΆœν•  ν•¨μˆ˜μ˜ 이름과 λ™μΌν•œ λ³€μˆ˜λ₯Ό μ„ μ–Έν•΄μ€˜μ•Ό ν•œλ‹€.
λ³€μˆ˜μ˜ νƒ€μž…μ€ ν•¨μˆ˜μ˜ λ°˜ν™˜νƒ€μž…μ΄μ–΄μ•Ό ν•œλ‹€.

κ·Έλž˜μ•Ό νƒ€μž…μ„ μ°ΎλŠ”λ‹€.

μ•„λ¬΄νŠΌ 그러면 싀행은 될 것이닀.




μ„œλΈŒλ£¨ν‹΄

ν•¨μˆ˜κ°€ μž…λ ₯을 λ°›κ³  좜λ ₯은 λ°˜ν™˜ν•˜λŠ” ν˜•νƒœλ‘œ λ™μž‘ν–ˆλ‹€λ©΄, μ„œλΈŒλ£¨ν‹΄μ€ μž…λ ₯값에 λŒ€ν•΄ mutation을 κ°€ν•˜λŠ” κΈ°λŠ₯을 κ°€μ§„λ‹€. κ·Έ λŒ€μ‹  λ°˜ν™˜ κΈ°λŠ₯이 λ”°λ‘œ μ—†λ‹€.

λͺ¨λ“  νŒŒλΌλ―Έν„°λ₯Ό 사싀상 ν¬μΈν„°λ‘œ λ°›μ•„μ„œ μ²˜λ¦¬ν•˜λŠ” 것과 닀름이 μ—†λ‹€.

μ•„λž˜λŠ” μ„œλΈŒλ£¨ν‹΄μ„ μ΄μš©ν•΄μ„œ swap을 μˆ˜ν–‰ν•˜λŠ” μ½”λ“œ μ˜ˆμ œλ‹€.

νŒŒλΌλ―Έν„°λ₯Ό μ„ μ–Έν•˜λŠ” 방법은 ν•¨μˆ˜μ™€ 닀름이 μ—†λ‹€.


그리고 μ‚¬μš©ν•  λ•ŒλŠ” call ν‚€μ›Œλ“œλ₯Ό 톡해 ν˜ΈμΆœν•  수 μžˆλ‹€.
그러면 μ„œλΈŒλ£¨ν‹΄μ΄ μ‹€ν–‰λ˜κ³ , λ‚΄λΆ€μ˜ λ‘œμ§μ„ μ‹€ν–‰ν•΄μ„œ λ³€μˆ˜μ˜ 값을 μΉ˜ν™˜ν•  것이닀.


잘 λ™μž‘ν•œλ‹€.