6. ¼ö½Ä°ú ÁöÁ¤ (Expressions and assignment)

»ó¼ö (Constants)

°¡Àå °£´ÜÇÑ ¼ö½ÄÀº »ó¼ö constantÀÌ´Ù. 6 °¡Áö data ÇüÅ¿¡ µû¶ó 6 °¡Áö »ó¼ö°¡ ÀÖ´Ù. ´ÙÀ½Àº Á¤¼ö »ó¼ö(integer constant)ÀÌ´Ù:
      1
      0
      -100
      32767
      +15
½Ç¼ö »ó¼ö(real constant)´Â:
      1.0
      -0.25
      2.0E6
      3.333E-1
E·Î ³ªÅ¸³½ °ÍÀº ´ÙÀ½ÀÇ »ó¼ö¸¦ 10ÀÇ Áö¼ö·Î ÇÏ¿© °öÇÏ¿© ÁÖ¶ó´Â ÀǹÌÀÌ´Ù Áï 2.0E6Àº 2.0 x 1000000 = 2000000.0ÀÌ°í 3.333E-1Àº ¾à 1/3¸¦ ÀǹÌÇÑ´Ù.

real·Î ³ªÅ¸³¾ ¼ö ÀÖ´Â ¼ýÀÚº¸´Ù Å« »ó¼ö ¶Ç´Â Á¤¹Ðµµ°¡ ÇÊ¿äÇÒ °æ¿ì¿¡´Â double precisionÀ» »ç¿ëÇÏ¿©¾ß ÇÑ´Ù. "E"¸¦ "D"·Î ¹Ù²Ù´Â °Í ÀÌ¿Ü¿¡´Â realÀÇ°æ¿ì¿Í ¶È °°´Ù.

      2.0D-1
      1D99
2.0D-1Àº double precisionÀ¸·Î 1/5À», 1D99´Â 1 ´ÙÀ½¿¡ 0ÀÌ 99°³ ÀÖ´Â ¼ýÀÚÀÌ´Ù.

¶Ç ´Ù¸¥ ÇüÅ´ º¹¼Ò¼ö »ó¼ö complex constantÀÌ´Ù. ÀÌ ¶§´Â (real ¶Ç´Â integer) »ó¼ö ÇÑ ½ÖÀ» ½°Ç¥(comma)·Î ºÐ¸®ÇÏ°í °ýÈ£ (paranthese)·Î µÑ·¯½Î¼­ ³ªÅ¸³½´Ù.

      (2, -3)
      (1., 9.9E-1)
ù ¹ø° ¼ýÀÚ´Â ½Ç¼öºÎ, µÎ¹ø° ¼ýÀÚ´Â Çã¼öºÎÀÌ´Ù.

´Ù¼¸ ¹ø° ÇüÅ´ ³í¸® »ó¼ö (logical constant)ÀÌ´Ù. ÀÌ »ó¼ö´Â µÎ °ª Áß ÇϳªÀÌ´Ù.

      .TRUE.
      .FALSE.
¹®ÀÚ ¾ÕµÚ¿¡ ¹Ýµå½Ã Á¡(.)À» Âï¾î¾ß ÇÑ´Ù.

¸¶Áö¸· »ó¼ö´Â ¹®ÀÚ »ó¼ö(character constant)ÀÌ´Ù. ÀÌ´Â ¹®ÀÚÀÇ array Áï ¹®ÀÚ¿­ string ·Î °¡Àå ¸¹ÀÌ »ç¿ëÇÑ´Ù. single quote ¶Ç´Â apostrophe¶ó°í ÇÏ´Â (')·Î µÑ·¯ ½Ñ ¹®ÀÚÀÇ ¼ø¼­¿­ÀÌ´Ù.

      'ABC'
      'Anything goes!'
      'It is a nice day'
¹®ÀÚ¿­(string)°ú ¹®ÀÚ(character) »ó¼ö´Â ´ë¼Ò¹®ÀÚ¸¦ ±¸ºÐÇÑ´Ù. Áï 'ch', 'Ch', 'CH'°¡ ¸ðµÎ ´Ù¸¥ °ÍÀÌ´Ù. ¹®ÀÚ¿­¿¡ apostrophe (')¸¦ Æ÷ÇÔ½ÃÅ°°íÀÚÇÏ¸é ¿¬¼ÓÇÏ¿© µÎ ¹ø »ç¿ëÇÑ´Ù.
      'It''s a nice day'

¼ö½Ä (Expressions)

°¡Àå °£´ÜÇÑ ¼ö½ÄÀÇ ÇüÅ´Â
      operand operator operand
      ÇÇ¿¬»êÀÚ ¿¬»êÀÚ ÇÇ¿¬»êÀÚ
ÀÌ°í ±× ¿¹·Î´Â
      x + y
ÀÌ´Ù. ¼ö½ÄÀÇ °á°ú´Â operand ÀÚüÀ̱⿡ ´ÙÀ½°ú °°ÀÌ °ãÃļ­(nest) »ç¿ëÇÒ ¼ö ÀÖ´Ù.
      x + 2 * y 
ÀÌ °æ¿ì ¿ì¼± ¼øÀ§ÀÇ ¹®Á¦°¡ »ý±ä´Ù. ÀÌ ½ÄÀº x + (2*y) Àΰ¡ ¾Æ´Ï¸é (x+2)*yÀΰ¡? Fortran 77 ¿¡¼­ ¼ö½Ä ¿¬»êÀÇ ¼øÀ§´Â (³ôÀº °Í ¿¡¼­ ³·Àº °Í ¼øÀ¸·Î):
      **   {exponentiation}
      *,/  {multiplication, division}
      +,-  {addition, subtraction}
ÀÌ ¸ðµç ¿¬»êÀÚ(operator)ÀÇ °æ¿ì ¿ÞÂÊÀ» ¿ì¼±À¸·Î ÇÏ¿© ¿À¸¥ÂÊÀ¸·Î °è»êÇÏ¿© ³ª°£´Ù. ´Ü Áö¼ö ¿¬»êÀÚ **´Â ¿À¸¥ÂÊÀÌ ¿ÞÂʺ¸´Ù ¿ì¼±ÀÌ´Ù. ÀÌ Á¤ÇØÁø ¿ì¼± ¼øÀ§¸¦ ¹Ù²Ù°íÀÚÇÏ¸é °ýÈ£¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.

À§ÀÇ ¿¬»çÀÚ´Â ¸ðµÎ ÀÌ¿ø ¿¬»êÀÚ (binary operator)ÀÌ´Ù. ºÎÁ¤ (negation)À» ³ªÅ¸³»´Â -´Â ÀÏ¿ø ¿¬»êÀÚ (unary operator)·Î ´Ù¸¥ °Í º¸´Ù ¿ì¼±ÇÑ´Ù. µû¶ó¼­ -x+yÀÇ ¼ö½Ä¿¡µµ È¥¶õÀÌ ¾ø´Ù.

³ª´©±â ¿¬»êÀÚ¸¦ »ç¿ëÇÒ ¶§¿¡´Â Á¤¼ö(integer)ÀÇ °æ¿ì¿Í ½Ç¼ö(real)ÀÇ °æ¿ì°¡ ¸Å¿ì ´Ù¸£¹Ç·Î ¸Å¿ì ÁÖÀÇÇÏ¿©¾ß ÇÑ´Ù. ÇÇ¿¬»êÀÚ°¡ µÑ ´Ù Á¤¼öÀ̸é Á¤¼ö ³ª´°¼ÀÀ» ÇÏ°í ¾Æ´Ï¸é ½Ç¼ö ³ª´°¼ÀÀ» ÇÑ´Ù. ¿¹¸¦ µé¸é 3/2Àº 1ÀÌÁö¸¸, 3./2.Àº 1.5ÀÌ´Ù.

ÁöÁ¤ (Assignment)

ÁöÁ¤¹®Àº ´ÙÀ½°ú °°Àº ÇüÅÂÀÌ´Ù.
      variable_name = expression
ÀÌ´Â ¿À¸¥ÂÊ ¼ö½ÄÀ» °è»êÇÏ¿© ±× °á°ú¸¦ ¿ÞÂÊÀÇ º¯¼ö¿¡ ÁöÁ¤Ç϶ó´Â ¶æÀÌ´Ù. ¿À¸¥ÂÊ ¼ö½Ä¿¡ ´Ù¸¥ º¯¼ö°¡ ÀÖ´õ¶óµµ ±× º¯¼öÀÇ °ªÀº ¹Ù²îÁö ¾Ê´Â´Ù. ¿¹·Î
      area = pi * r**2
ÀÇ ¼ö½Ä¿¡¼­ pi³ª rÀÇ °ªÀº ¹Ù²ÙÁö ¾Ê°í, ¿ÀÁ÷ areaÀÇ °ª¸¸ ¹Ù²ï´Ù.

Á¾·ù ¹Ù²Ù±â (Type conversion)

ÇÑ ¼ö½Ä¿¡¼­ ´Ù¸¥ ÇüÅÂÀÇ data°¡ ¼¯¿© ÀÖÀ¸¸é Á¾·ù ¹Ù²Ù±âtype conversion°¡ ÀÏ¾î ³­´Ù. Fortran¿¡¼­´Â ³»ºÎÀûÀ¸·Î ´ÙÀ½°ú °°ÀÌ Á¾·ù¸¦ ¹Ù²Û´Ù.
      real x
      x = x + 1
ÀÌ ½Ä¿¡¼­´Â Á¤¼ö 1À» real·Î ¹Ù²Ù¾î x¿¡ 1 ¸¸Å­ ´õÇÑ´Ù. ±×·¯³ª º¹ÀâÇÑ ¼ö½Ä¿¡¼­´Â À̸¦ ¸í¹éÇÏ°Ô Ç¥½ÃÇØÁÖ´Â °ÍÀÌ ¹Ù¶÷Á÷ÇÏ´Ù. ¼ýÀÚ¸¦ ¹Ù²Ù·Á¸é ´ÙÀ½ ÇÔ¼ö¸¦ »ç¿ëÇÒ ¼ö ÀÖ´Ù.
      int
      real
      dble
      ichar
      char
óÀ½ ¼¼ °³´Â ÀÚ¸íÇÏ´Ù. ichar´Â ¹®ÀÚ(character)¸¦ Á¤¼ö(integer)·Î ¹Ù²Ù°í, char´Â ±× ¹Ý´ë ±â´ÉÀ» ÇÑ´Ù.

¿¹ : How to multiply µÎ °³ÀÇ ½Ç¼ö º¯¼ö x¿Í y ¸¦ double precisionÀ» »ç¿ëÇÏ¿© °öÇÏ°í ±× °á°ú¸¦ double precision º¯¼ö w¿¡ ÀúÀåÇÏ´Â ¹æ¹ý:

      w = dble(x)*dble(y)
ÀÌ´Â
      w = dble(x*y)
¿Í ´Ù¸£´Ù.

Exercises

Exercise A
´ÙÀ½ Fortran 77 ¼ö½ÄÀÇ °ªÀ¸·Î (¼ÕÀ¸·Î) ±¸ÇÏ¿©¶ó.
      2+1-10/3/4
      2**3/3*2-5
      -(3*4-2)**(3-2**1+1)/-2

Exercise B
´ÙÀ½°ú °°Àº Fortran 77 ÇÁ·Î±×·¥À» ÀÛ¼ºÇ϶ó. x¿Í y¸¦ ½Ç¼ö º¯¼ö·Î Á¤ÀÇÇÏ°í °¢°¢ 1/3°ú 2/3¸¦ ÁöÁ¤Ç϶ó. w¸¦ double precisionÀ¸·Î ÇÏ°í w = x*y¿Í w = dble(x)*dble(y)·Î ÁöÁ¤ÇÑ µÚ wÀÇ °ªÀ» ºñ±³Ç϶ó. write(*,*) ¸í·ÉÀ» »ç¿ëÇÏ¿© °á°ú¸¦ ºñ±³Ç϶ó. ±× °á°ú°¡ 0.22222222...°¡ µÇ´ÂÁö ¾È µÇ´ÂÁö »ìÆ캸°í ±× ÀÌÀ¯¸¦ °£´ÜÈ÷ ¼³¸íÇ϶ó.

[Fortran Tutorial]
Ãæ³²´ëÇб³ ¹°¸®Çаú ¿À º´¼º