ÀÛ ¼º : ½Åº´Ãá(Àü³²´ë º´·Ä°è»ê¿¬±¸½Ç)
ÁÖ±³Àç
: Æ÷Æ®¶õ 95 (SaeRon Publishing Co. ÀÓ¼º¼ø Àú)
0. Fortran
ÄÄÆÄÀÏ
1.1 Intel compiler
Chapter 1. ÇÁ·Î±×·¥ÀÇ ±âº»»çÇ×
1.1 »ç¿ë¹®ÀÚ
1) ¿µ¹®ÀÚ(26°³)
a b c ... z A B C ... Z
´ë¹®ÀÚ ¼Ò¹®ÀÚ ±¸ºÐÀÌ ¾øÀ½
2) ¾Æ¶óºñ¾Æ ¼ýÀÚ(10°³)
0 1 2 3 4 ... 9
3) Ư¼ö¹®ÀÚ(22°³)
°ø¹é(blank) = + - * / ( ) . , ' " ! $ : ; % & < > ? \
' => ¹®ÀÚÇü º¯¼ö°ª
ÁöÁ¤À̳ª ÀÔÃâ·ÂÀÇ ¼½Ä¹®¿¡ »ç¿ë
"
=> ƯÁ¤ ¹®ÀÚÀÚ·á°ªµéÀ» ÀοëÇÏ´Â ÀÔÃâ·ÂÀÇ ¼½Ä¹®¿¡¼ »ç¿ë
!
=> °¨ÅººÎÈ£ÀÌÈÄÀÇ ¹®ÀÚµéÀº ¼³¸í¹®
:
=> ¹è¿ÀÇ º£À̽º ¹× ÁõºÐ·® Ç¥½Ã
REAL
:: a(-1:3:2, 1:2)
;
=> ÇÑ ÁÙ¿¡ ¿©·¯ °³ÀÇ ¸í·É¾î³ª Ç¥Çö½ÄÀ» ÀÛ¼ºÇÒ ¶§
a=3;
b=4; c=5;
% =>
»ç¿ëÀÚ Á¤ÀÇÀÇ º¯¼öÇü ¼±¾ð±¸Á¶ Áï, ÆÄ»ýÇü¿¡¼ º¯¼ö¼ÓÀÇ ÀÚ·á°ª¿¡ Á¢±ÙÇÒ ¶§
&
=> ¿¬¼Ó ±âÈ£·Î½á Ç¥Çö½ÄÀ̳ª ¼½Ä¹® µîÀ» ÇÑ ÁÙ¿¡ ÀÛ¼ºÇϱ⿡ ³Ê¹« ±æ ‹š
Print *, 'Department of Mathematics,&
&Chonnam
National University'
Print *, 'Department
of Mathematics,&
&
Chonnam National University'
(È¥¿ë »ç¿ë¹®ÀÚ)
== just equal to Á¿캯 ÀÚ·á°ªÀÌ °°À½
/= not equal to Á¿캯 ÀÚ·á°ªÀÌ ¼·Î Á¤È®È÷ Ʋ¸²
>= greater than or equal to
<= less than or equa to
** double asterisk °ÅµìÁ¦°ö
// concatennation ¿¬¼ÓµÈ ¹®ÀÚÀÚ·á°ªÀ» µ¡ºÙ¿© ÇÕ¼ºÇÔ
¿¹) ¹®ÀÚÇü º¯¼ö a='Fortran', b='Language'
d=a//' '//b// => d='Fortran Language'
::
double colon º¯¼ö¼Ó¼º°ú º¯¼ö¸ñ·ÏÀ» ±¸º°
REAL,
DIMENSION(3,2) :: a, b, c
4) ±âŸ(1°³)
_ (underscore)
1.2 ÇÁ·Î±×·¥ ±¸¼º
¸ðµâ ¼±¾ðºÎºÐ (Module) |
ÁÖ ÇÁ·Î±×·¥ (Program) |
³»ºÎ ºÎ ÇÁ·Î±×·¥(Subroutine) |
¿ÜºÎ ºÎ ÇÁ·Î±×·¥(Subroutine) |
¿¹Á¦) See ch1_1.f
1.4 ÇÁ·Î±×·¥ Çü½Ä
1) ÀÚÀ¯Çü½Ä(Free Form) : Fortran 90/95
2) ±¸Á¶È ÇÁ·Î±×·¡¹Ö : µ¶¸³µÈ ÇÁ·Î½ÃÁ®·Î È®½ÇÈ÷ ±¸ºÐ
±¸Á¶ÀÇ Á¾·ù |
±¸Á¶ÀÇ ½ÃÀÛ |
±¸Á¶ÀÇ ³¡ |
ÇÁ·Î½ÃÁ® ±¸Á¶ |
Program username |
End [Program [username]] |
Subroutine username |
End [Subroutine [username]] |
|
Function username |
End [Function [username]] |
|
Module username |
End [Module [username]] |
|
Block Data username |
End [Block Data [username]] |
|
º¯¼ö¼±¾ð±¸Á¶ |
Type username |
End Type username |
¼±Åñ¸Á¶ |
If-Then-Elseif-Then-Else-Endif |
End If |
¼øȯ±¸Á¶ |
Do Loop, Do While, Forall |
End Do |
Username Àº 31°³ À̳»ÀÇ ±ÛÀÚ¸¦ ÀÌ¿ë, [ ]Àº »ý·«°¡´É
Program MainProcedure Type Usertype Type(usertype) :: º¯¼ö¸í
... End Program MainProcedure
|
°£´ÜÇÑ IF ¹® |
ºí·Ï IF ¹® |
Select Case ¹® |
If (Cond) Statement |
If (Cond1) Then |
Select Case (Selector) |
Condition ÀÌ ÂüÀ̸é Statement ½ÇÇà |
Selector ÀÇ ÀÚ·á°ªÀÌ
|
|
Program Main !
( Ch1_if.f ) |
Program MainProcedure !
(Ch1_select.f) |
Do ¼øȯ¹® |
Do While ¼øȯ¹® |
[Username :] Do
[var = init, limit, incrm] |
[Username
:] Do While (Condition) Statement |
Username : ¼øȯ±¸Á¶
À̸§ + Ư¼ö¹®ÀÚ : (Çʼö) |
Condition ÀÌ ÂüÀ̸é Statement ½ÇÇà |
Ch1_do.f ( Bisection Method ÀÇ ¿¹) |
! Bisection Method for f(x)=x^3+4*x^2-10 = 0 Program MainProcedure Loop : Do i=1,maxit !
Loop ¸íÀÇ Do ¹® ½ÃÀÛ End Program MainProcedure |
! Bisection Method for f(x)=x^3+4*x^2-10 = 0 Program MainProcedure 10 Print *, ' Type a and b : ' ; Read *, a,b Loop : Do While (Abs(fp)>1.0E-20
.AND. (b-a)/2>tol .AND i<=maxit) ! ÂüÀ̸é
½ÇÇà End Program MainProcedure |
3) º¯¼ö Ư¼º(Properties) ¹× ¼Ó¼º(attributes)
±¸ºÐ |
¸í·É¾î |
ÀÇ¹Ì |
Ư¼º |
Kind |
º¯¼öÀÇ ±â¾ïÀå¼Ò Å©±â¸¦ byte ´ÜÀ§·Î ÁöÁ¤ |
Len |
¹®ÀÚÇü º¯¼öÀÇ ¹®ÀÚ¼ö¸¦ ÁöÁ¤(¿µ¹® ÇÑ ¹®ÀÚ=1byte) |
|
¼Ó¼º |
Dimension |
¹è¿ÀÎ º¯¼ö Á¤ÀÇ |
Parameter |
º¯¼ö°¡ ºÒº¯ÀÎ »ó¼öÀÎ º¯¼ö Á¤ÀÇ |
|
Allocatable |
½ÇÇà µµÁß¿¡ Å©±â°¡ ÁöÁ¤µÇ´Â ¹è¿º¯¼ö Á¤ÀÇ |
|
Intrinsic |
³»ÀåÇÔ¼ö³ ³»Àå ÇÁ·Î½ÃÁ®ÀÎ º¯¼ö Á¤ÀÇ |
|
Intent |
ÇÁ·Î½ÃÁ® ³»¿¡¼ ÀÚ·á°ªÀÇ º¯È¸¦ ÁöÁ¤ÇÏ´Â º¯¼ö Á¤ÀÇ |
|
Pointer |
Æ÷ÀÎÅÍÀÎ º¯¼ö Á¤ÀÇ |
|
Target |
ŸÄÏÀÎ º¯¼ö Á¤ÀÇ |
|
External |
¿ÜºÎ¿¡¼ Àü´ÞÇÏ´Â º¯¼ö Á¤ÀÇ |
¿¹Á¦)
Program DeclareVariables ............ |
Chapter 2. »ó¼ö(Constant) ¿Í º¯¼ö(Variable) (À§·Î)
2.1 ÀÚ·á°ª 󸮹æ¹ý
1) ¸Þ¸ð¸®ÀÇ ´ÜÀ§
2) ÀÚ·áÀÇ Ã³¸®¹æ¹ý
[Example] ÁÖ¼ÒÀÚ°¡ 1024, 1025, 1026ÀÎ ¸Þ¸ð¸® À§Ä¡¿¡ ÀúÀåµÈ
ÀÚ·á°ªÀÌ ÀÖ´ÙÇÏÀÚ.
óÀ½
µÎ °÷ÀÇ ÀÚ·á°ªÀ» °öÇÏ¿© ¼¼ ¹ø° ÀÚ·á°ª¿¡ ´õÇÑ °è»ê°á°ú¸¦ ÁÖ¼ÒÁö
1027ÀÇ
¸Þ·Î¸® À§Ä¡¿¡ ÀúÀåÇÏ´Â ¿¬»ê
´Ü°è |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
1 |
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
|
2 |
|
|
1 |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
|
1 |
3 |
|
|
1 |
|
|
|
1 |
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
1 |
|
4 |
|
|
|
1 |
|
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
|
|
|
|
|
|
|
|
1 |
1 |
±¸ºÐ |
Á¶ÀÛºÎÈ£ |
¿¬»ê´ë»óÀÚ |
3) ¼öÄ¡ ÀÚ·á ü°è
1 byte = 8 bits,
1 word = 4 byte = 32 bits : ¹ÙÀÌÆ®³ª ¿öµå´Â °¢°¢ ÁÖ¼Ò(address)¸¦ °¡Áö°í
ÀÖ´Ù.
ÀÚ·áÀÇ Á¢±ÙÀº ÁÖ¼ÒÁö¸¦ ã´Â
ÀϺÎÅÍ ½ÃÀÛÇÑ´Ù.
»ç¿ëÇÏ´Â ¼ö ü°è
4) Áø¹ý¹Ù²Ù±â(10Áø¹ý=>2Áø¹ý)
½ÊÁø¹ýÀÇ ÀÚ¿¬¼ö NÀ» 2Áø¹ýÀÇ ¼ö·Î Ç¥ÇöÇغ¸¶ó.
N = aj *2j + aj-1 *2j-1 + ... + a1 *21 + a0 *20
N/2 = aj *2j-1 + aj-1 *2j-2 + ... + a1 *20 + a0 /2 => mod(N, 2) = a0
Set Q0 = aj *2j-1 + aj-1 *2j-2 + ... + a1 *20
Q0/2 = aj *2j-2 + aj-1 *2j-3 + ... + a2 *20 + a1 /2 => mod(Q0 , 2) = a1
Set Q1 = aj *2j-2 + aj-1 *2j-3 + ... + a2 *20
Q1/2 = aj *2j-3 + aj-1 *2j-4 + ... + a3 *20 + a2 /2 => mod(Q1 , 2) = a2
.....
°è¼Ó ¹Ýº¹Çϸé a0 , a1 , ... , aj ¸¦ ãÀ» ¼ö ÀÖ´Ù.
¿¹] 24 = 2*12 ...
0,
12 = 2*6 ...
0,
6
= 2*3 ... 0,
3
= 2*1+1 ... 1,
1
= 2*0+1 ... 1
=> 24 = 110002
¿¹] ½ÊÁø¹ýÀÎ ¼Ò¼ö R = 7/10 À» 2Áø¹ýÀÇ
¼Ò¼ö·Î
2 R = 1.4 d1
= int(1.4) = 1, F1 = frac(1.4) = 0.4
2
F1 = 0.8 d2 = int(2 F1)
= 0, F2 = frac(2 F1) = 0.8
2
F2 = 1.6 d3 = int(2 F2)
= 1, F3 = frac(2 F2) = 0.6
2
F3 = 1.2 d4 = int(2 F3)
= 1, F4 = frac(2 F3) = 0.2
2
F4 = 0.4 d5 = int(2 F4)
= 0, F5 = frac(2 F4) = 0.4
2
F5 = 0.8 d6 = int(2 F5)
= 0, F6 = frac(2 F5) = 0.8
2
F6 = 1.6 d7 = int(2 F5)
= 1, F7 = frac(2 F6) = 0.6
=> 2 F1 = 1.6 = 2 F5
=> d2 = d6 =
d10 .... d3 = d7 = d11
=> dk = dk+4
for k=2,3,4, ...
R = 7/10 =
0.1[0110]2 = 0.101100110011001100110 .....2 ¹«ÇѼҼö
2.2 »ó¼ö(Constant)
1) »ó¼öÀÇ Á¾·ù
2) 32ºñÆ® ÄÄÇ»ÅÍÀÇ »ç¿ë ÀÚ·á°ªÀÇ ¹üÀ§
Çü(Type) |
¹ÙÀÌÆ® |
»ç¿ë¹üÀ§ |
À¯È¿ÀÚ¸®¼ö |
Integer |
1 |
-127 - 127 |
3 |
2 |
-32,768 - 32,767 |
5 |
|
4 |
-2,147,483,647 - 2,147,483,647 |
10 |
|
8 |
-9,223,372,036,854,775,808 - 9,223,372,036,854,775,808 |
19 |
|
Real |
4 |
-1.18 E-38 ~ 3.40 E+38 |
7~8 |
8 |
2.23 E-308 ~ 1.79 E+308 |
15~16 |
|
16 |
1.0 E-4931 ~ 1.79 E-4932 |
¾à 33 |
|
Complex |
4 |
-1.18 E-38 ~ 3.40 E+38 |
7~8 |
8 |
2.23 E-308 ~ 1.79 E+308 |
15~16 |
|
16 |
1.0 E-4931 ~ 1.79 E-4932 |
¾à 33 |
|
Logical |
1 |
.True. ¿Í .False. |
|
4 |
.True. ¿Í .False. |
|
|
Character |
1 |
Ascii ¹®ÀÚÀÚ·á |
|
ºñ°í |
|
Default kinds(±âº»ÀûÀÎ ¹ÙÀÌÆ®¼ö) |
|
3) Á¤¼öÇü ÀÚ·á°ª Ç¥Çö ¹æ¹ý
ºñÆ® |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
2Áø¹ýÇ¥Çö |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
1 |
0 |
|
|
À¯È¿¼ýÀÚ |
||||||||||||||
|
ºÎÈ£ 0 => + 1 => - |
4) ½Ç¼öÇü ÀÚ·á°ª Ç¥Çö ¹æ¹ý
ºñÆ® |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
°ª |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
1 |
2 |
|
À¯È¿¼ýÀÚ ºÎºÐ(mantissa) |
|
Áö¼ö(exponent) |
||||||||||||||||||||||||||||
3 |
ºÎÈ£ 0 => + 1 => - |
ºÎÈ£ |
5) ³í¸®Çü°ú ¹®ÀÚÇü ÀÚ·á°ª
5) »ó¼ö ¼±¾ð¹æ¹ý
¼±¾ð¹® ÀÌ¿ë º¯¼öÇü, Parameter :: »ó¼öº¯¼ö=ÀÚ·á°ª ! Parameter ´Â °íÁ¤»ó¼ö°ª ÁöÁ¤
ÃʱⰪ ÁöÁ¤ º¯¼öÇü :: º¯¼ö=ÀÚ·á°ª
Ç¥Çö½Ä ÀÌ¿ë º¯¼ö=ÀÚ·á°ª
6) º¯¼ö »ç¿ë¹æ¹ý
Integer, Parameter :: ar_size=5, ss=10 Character(Len=ss) :: elem_name Integer, Dimension(ar_size) :: arlist, chart
|
Integer ar_size, ss Parameter (ar_size=5, ss=10) Character(Len=ss) elem_name Integer arlist, chart Dimension arlist(ar_size), chart(ar_size)
|
3. Ç¥Çö½Ä(Expression)°ú ÇÒ´ç¹®(Assignment)
(À§·Î)
3.1 Ç¥Çö½Ä
1) »ê¼ú½Ä(Arithmetic Expression)
2) °ü°è½Ä(Relational Expression)
3) ³í¸®½Ä(Logical Expression)
4) ¹®ÀÚ½Ä(Literal Expression)
3.2 ÇÒ´ç¹®
1) Çü º¯È¯ÇÔ¼ö
Á¾·ù |
Àμö |
°á°ú |
Real(a) |
Á¤¼ö, º¹¼Ò¼ö |
½Ç¼ö |
Float(a) |
Á¤¼ö |
½Ç¼ö |
Dble(a) |
Á¤¼ö, ½Ç¼ö |
¹èÁ¤µµ ½Ç¼ö |
Int(r) |
½Ç¼ö, º¹¼Ò¼ö |
Á¤¼ö |
Cmplx(r) |
ÇϳªÀÇ ½Ç¼ö |
º¹¼Ò¼ö |
cmplx(r1,r2) |
µÎ °³ÀÇ ½Ç¼ö |
º¹¼Ò¼ö |
2) È¥µ·Çϱ⠽¬¿î Çüº¯È¯ ³»ÀåÇÔ¼ö
ÇÔ¼ö |
°á°ú |
¿ë¾î |
³»¿ë |
Real(a) |
½Ç¼ö |
Çü º¯È¯ |
|
Float(a) |
½Ç¼ö |
Çü º¯È¯ |
|
Int(r) |
Á¤¼ö |
0À¸·Î Àý»è |
Á¤¼öºÎºÐ |
Floor(r) |
Á¤¼ö |
-00À¸·Î Àý»è |
Àμöº¸´Ù ÀÛÀº °ª Áß °¡Àå Å« Á¤¼ö |
Ceiling(r) |
Á¤¼ö |
00À¸·Î Àý»è |
Àμöº¸´Ù Å« °ª Áß °¡Àå ÀÛÀº Á¤¼ö |
Nint(r) |
Á¤¼ö |
¼Ò¼öÁ¡ÀÌÇÏ ¹Ý¿Ã¸² Á¤¼ö |
Àμö¿¡ °¡Àå °¡±î¿î Á¤¼ö |
Anint(r) |
½Ç¼ö |
¼Ò¼öÁ¡ÀÌÇÏ ¹Ý¿Ã¸² ½Ç¼ö |
Àμö¿¡ °¡Àå °¡±î¿î Á¤¼ö¸¦ ½Ç¼ö·Î º¯È¯ |
Aint(r) |
½Ç¼ö |
¼Ò¼öÁ¡ÀÌÇÏ Àý»è |
ÀμöÀÇ ¼Ò¼öÁ¡ÀÌÇϸ¦ »èÁ¦ÇÑ ½Ç¼ö |
3) Çü º¯È¯ÇÔ¼öÀÇ »ç¿ë¹ý
ÀÚ·á°ª |
-1.00 |
-0.99 |
-0.50 |
-0.49 |
0.00 |
0.49 |
0.50 |
0.99 |
1.00 |
Aint(r) |
-1.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
0.0 |
1.0 |
Int(r) |
-1 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
1 |
Anint(r) |
-1.0 |
-1.0 |
-1.0 |
0.0 |
0.0 |
0.0 |
1.0 |
1.0 |
1.0 |
Nint(r) |
-1 |
-1 |
-1 |
0 |
0 |
0 |
1 |
1 |
1 |
Floor(r) |
-1 |
-1 |
-1 |
-1 |
0 |
0 |
0 |
0 |
1 |
Ceiling(r) |
-1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
1 |
4) ¼öÄ¡¿¬»ê ³»ÀåÇÔ¼ö
4. º¯¼öÀÇ ¼Ó¼º(attribute) (À§·Î)
4.1 Ç¥Çö½Ä
¼Ó ¼º |
¼³ ¸í |
||
Parameter |
»ó¼öº¯¼öÀÓÀ» ¼±¾ð |
||
Allocatable |
¹è¿º¯¼ö°¡ ÇÒ´ç¹è¿ÀÓÀ» ¾Ë¸² |
||
Dimension[(Shape)] |
Å©±â ¹× Çü»ó Shape¸¦ °¡Áø ¹è¿º¯¼öÀÓÀ» ¾Ë¸² |
||
Intent(spec) |
Intent(IN) |
ÇØ´çÇÁ·Î½ÃÁ®·Î ÀÚ·á°ªÀ» Àü´Þ¸¸ ÇÏ´Â °¡Àμö ¼Ó¼º |
|
spec |
In, Out |
Intent(Out) |
»óÀ§¸£·Î½ÃÁ®·Î ÀÚ·á°ªÀ» Àü´Þ¸¸ ÇÏ´Â °¡Àμö |
InOut |
Intent(InOut) |
»óÇÏÀ§ ÇÁ·Î½ÃÁ®·Î ÀÚ·á°ªÀ» Àü´ÞÇÏ´Â °¡Àμö |
|
Intrinsic |
³»ÀåÇÔ¼öÀÓÀ» ¾Ë¸² |
||
External |
»óÀ§ÇÁ·Î½ÃÁ®¿¡¼ Àü´ÞµÇ´Â ³»ÀåÇÔ¼öÀÓÀ» ¾Ë¸² |
||
Public |
Àü¿ªº¯¼öÀÓÀ» ³ªÅ¸³¿ |
||
Private |
Áö¿ªº¯¼öÀÓÀ» ³ªÅ¸³¿ |
||
Optional |
Á¶°ÇÀû °¡ÀμöÀÓÀ» ³ªÅ¸³¿ |
||
Pointer |
Æ÷ÀÎÅÍ º¯¼öÀÓÀ» ¾Ë¸² |
||
Target |
ŸÄÏ º¯¼öÀÓÀ» ¾Ë¸² |
||
Save |
ºÎÇÁ·Î½ÃÁ®¿¡¼ ÀÚ·á°ªÀ» ÀúÀåÇÑ ÈÄ ¸®ÅϵǴ º¯¼ö |
||
Sequence |
ÀÚ·á°ªÀ» ¼øÂ÷ÀûÀÎ ÀúÀå Áö½ÃÇÏ´Â º¯¼ö ¼Ó¼º |
1) Parameter ; ÇØ´ç ÇÁ·Î½ÃÁ®¿¡¼ º¯¼öµéÀÇ ÀÚ·á°ªÀÌ ´Ã ÀÏÁ¤ÇÑ »ó¼ö·Î Ãë±ÞÇÏ´Â »ó¼öº¯¼ö
2) Allocatable ; ¹è¿ÀÌ ÇÒ´ç¹è¿ÀÓÀ» ³ªÅ¸³»´Â ¸í·É¾î
3) Dimension ; º¯¼ö°¡ ¹è¿ÀÓÀ» ³ªÅ¸³»´Â ¸í·É
4) Intent ; °¡Àμö°¡
ÀÚ·á°ªÀ» ÇÏÀ§ ÇÁ·Î½ÃÁ®·Î Àü´ÞÇϰųª »óÀ§ ÇÁ·Î½ÃÁ®·Î
Àü´ÞÇϴ Ư¼ºÀ» Á¤ÀÇ
5) Intrinsic ; »ç¿ëº¯¼ö°¡ ³»Àå ÇÔ¼ö¸íÀÓÀ» ³ªÅ¸³»´Â ¸í·É
6) External ; ȗˤ
ÇÁ·Î½ÃÁ®¿¡¼ Á¤ÀÇÇÑ ÇÔ¼ö¸¦ ÇÏÀ§ÇÁ·Î½ÃÁ®¿¡¼ »ç¿ëÇϱâ À§ÇÏ¿©
°¡Àμö·Î
Àü´Þ ÇÒ ¶§ ÇØ´ç ÇÁ·Î½ÃÁ® ¹Û¿¡¼ Á¤ÀÇÇÑ ÇÔ¼öÀÓÀ» ³ªÅ¸³»´Â ¸í·É
7) Public ; Á¤ÀÇÇÏ´Â
º¯¼ö°¡ ÇØ´ç ÇÁ·Î½ÃÁ®°¡ ¾Æ´Ñ ´Ù¸¥ Àüü ÇÁ·Î½ÃÁ®¿¡¼µµ ¶È °°Àº Àǹ̷Î
»ç¿ëµÇ´Â
Àü¿ªº¯¼öÀÓÀ» ³ªÅ¸³»´Â ¸í·É
8) Private ; Á¤ÀÇÇÏ´Â º¯¼ö°¡ ÇØ´ç ÇÁ·Î½ÃÁ® ¾È¿¡¼¸¸ Àû¿ëµÇ´Â Áö¿ªº¯¼öÀÓÀ» ³ªÅ¸³»´Â ¸í·É
9) Optional ; È£ÃâÇÏ´Â
»óÀ§ÇÁ·Î½ÃÁ®¿¡¼ ½ÇÀμö°¡ Ç¥ÇöµÇ¸é ÇÏÀ§ ÇÁ·Î½ÃÁ®¿¡¼ ÀÚ·á°ªÀ»
Àü´Þ¹Þ´Â
Ư¼ºÀ» °¡Áø °¡Àμö ¼Ó¼ºÀ» ³ªÅ¸³»´Â ¸í·É
10) Pointer ; Æ÷ÀÎÅÍ º¯¼ö³ª ¹è¿ÀÇ Æ¯¼ºÀ» ³ªÅ¸³»´Â ¸í·É
11) Target ; Æ÷ÀÎÅÍ¿Í ¿¬°üµÈ Ÿ°Ù ¼Ó¼ºÀ» °¡Áø °´Ã¼¸í ¸ñ·ÏÀ» Á¤ÀÇ
10) Save ; ÇÏÀ§
ÇÁ·Î½ÃÁ®¿¡¼ °è»êÀ» Á¾·áÇÑ ÈÄ ¼±¾ðÇÑ ¸ðµç °´Ã¼ÀÇ ¿¬°á»óÅÂ, ÇÒ´çÀ§Ä¡,
Á¤ÀÇ,
ÀÚ·á°ªÀÇ ÀúÀåÀ» Áö½ÃÇÏ´Â ¸í·É
11) Sequence ; º¯¼öµéÀÌ
¼øÂ÷Á¢±Ù ¼Ó¼ºÀ» °¡Áö°í ÀÖÀ½À» Á¤ÀÇÇÏ´Â ¼±¾ð¹®
ÆÄ»ýÇü
¼±¾ð±¸Á¶¿¡¼ º¯¼öƯ¼º Á¤ÀÇ¿¡¼¸¸ »ç¿ëÇϸç DefaultÀÌ´Ù
5. ¼±Åù®°ú ¼±Åñ¸Á¶ (À§·Î)
5.1 ¼±Åù®°ú ¼±Åñ¸Á¶
5.2 ¼±Åù® : If, Merge, Where, Forall
1) ³í¸®Çü If ¹®
2) ºí·Ï If ¹®
3) Merge ¹® : ³í¸®Çü Á¶°Ç½Ä¿¡ µû¶ó ½ÇÇ๮À» ¼±ÅÃÇÏ¿© ½ÇÇàÀ» Á¦¾îÇÏ´Â ¼±Åù®
4) Where ¹® : ³í¸®Çü Á¶°Ç½Ä¿¡ µû¶ó ¹è¿ÀÚ·á°ªÀ» ÇÒ´çÇÏ´Â ¼±Åù®
5) Forall ¹® : Ç¥Çö½Ä maskÀÇ ³í¸®°ª°ú Ç¥Çö½Ä triplets¿¡ µû¶ó ÇØ´ç ¸í·É¹® assignment¸¦ ½ÇÇà
5.3 ¼±Åñ¸Á¶¹® : If, Select Case, Where, Forall
1) (Select) Case ±¸Á¶¹® :
2) Where ±¸Á¶¹®
3) Forall ¹® : Ç¥Çö½Ä maskÀÇ ³í¸®°ª°ú Ç¥Çö½Ä triplets¿¡ µû¶ó ÇØ´ç ¸í·É¹® assignment¸¦ ½ÇÇà
6. ¼øȯ¹®°ú ¼øȯ±¸Á¶ (À§·Î)
6.1. Ƚ¼öÁ¦¾î ¼øȯ±¸Á¶
1) ±¸Á¶¸íÀÌ ÀÖ´Â ¼øȯ±¸Á¶
2) Á¦¾îº¯¼ö°¡ ¾ø´Â ¼øȯ±¸Á¶
6.2. ÀÏ¹Ý ¼øȯ±¸Á¶
1) Do Exit ¼øȯ±¸Á¶ ; Do Exit ¼øȯ±¸Á¶¿¡¼ ¿ÏÀüÈ÷ ¹þ¾î³ª¼ ¿¬À̾î ÀÛ¼ºÇÑ ¸í·É¹® ½ÇÇàÀ» Áö½Ã
2) Do Cycle ¼øȯ±¸Á¶ ; Á¦¾îº¯¼ö¸¦ º¯È½ÃÄÑ ´ÙÀ½ ´Ü°èÀÇ ¹Ýº¹ ¿¬»ê°úÁ¤À¸·Î ¸í·É ºÐ±â
3) Do While ¼øȯ±¸Á¶ ; Á¶°Ç½ÄÀÌ ÂüÀÏ ¶§¸¸ ¹Ýº¹¿¬»ê ½ÇÇà
4) ³»ºÎ¼øȯ±¸Á¶ ; ÀÔÃâ·Â¹®¿¡¼ ¹è¿ÀÚ·á°ªÀ» ÀÔ·ÂÇϰųª Ãâ·ÂÇÒ ¶§ »ç¿ë
5) Àç±Í ¼øȯ±¸Á¶ ; Àç±Í ÇÁ·Î½ÃÁ®¸¦ ¿¬¼Ó È£ÃâÇÏ¿© ¹Ýº¹°è»êÀ» ¼öÇàÇÏ´Â ±¸Á¶
6) ´ÙÁß ¼øȯ±¸Á¶
7. ºÐ±â¹®°ú ½ÇÇàÁ¦¾î¹® (À§·Î)
7.1 GoTo¹® (µÇµµ·ÏÀÌ¸é »ç¿ëÇÏÁö ¸» °ÍÀ» ±ÇÀå)
7.2 ½ÇÇàÁ¦¾î¹® (µÇµµ·ÏÀÌ¸é »ç¿ëÇÏÁö ¸» °ÍÀ» ±ÇÀå)
1) Continue ¹® : Ưº°ÇÑ Àǹ̾øÀÌ ¿¬»ê°úÁ¤À» ³ªÅ¸³»°Å³ª ¸í·É¹®ÀÇ ºÐ±â¸¦ À§ÇØ ÀÛ¼º
2) Pause ¹® : ÇÁ·Î±×·¥ ½ÇÇàÀ» Àá½Ã ÁßÁö½ÃÅ°´Â ¸í·É¹®
3) Return ¹® : ºÎÇÁ·Î½ÃÁ®¸¦ ½ÇÇàÇÑ ÈÄ °è»ê°á°ú°ªÀ» »óÀ§ ÇÁ·Î½ÃÁ®¿¡ µÇµ¹·Á ÁÖ´Â ¸í·É
4) Stop ¹® : ½ÇÇàÁ¾·á¸¦ Áö½ÃÇÏ´Â ¸í·É
8. ÀÔÃâ·Â¹® (À§·Î)
8.1 Read ¹®(ÀԷ¹®)
8.2 Print ¹®°ú Write ¹® (Ãâ·Â¹®)
9. ¹è¿(Array or Matrix or Vector) (À§·Î)
9.1 ¹è¿ÀÇ Á¾·ù
9.2 ¹è¿ ÇÔ¼ö
10. ÇÁ·Î½ÃÁ® (Procedure) (À§·Î)
10.1 ÇÁ·Î½ÃÁ®ÀÇ Á¾·ù
Á¾·ù ¹× ¼³¸í |
ÇÁ·Î½ÃÁ®ÀÇ ½ÃÀÛ |
ÇÁ·Î½ÃÁ®ÀÇ ³¡ |
ÁÖÇÁ·Î±×·¥ |
Program UserName |
End [Program UserName] |
¼ºê·çƾ |
Subroutine UserName |
End [Subroutine UserName] |
ÇÔ¼ö |
Function UserName |
End [Function UserName] |
¸ðµâ |
Module UserName |
End [Module UserName] |
ºí·Ï Å×ÀÌÅÍ |
Block Data [UserName] |
End [Block Data [UserName]] |
10.2 ¼ºê·çƾÀÇ Á¾·ù
ºñÇ¥ÁØ ³»Àå ¼ºê·çƾ : ÄÄÆÄÀÏ·¯ Á¦Á¶»ç¿¡¼ µ¶ÀÚÀûÀ¸·Î Á¦°øÇÏ´Â ¼ºê·çƾ
Program Main
Implicit
None
Interface
Function F2c(t)
Real
:: f2c
Real,
Intent(IN) :: t
End
Function F2c
End Interface
Real : f, c
Print *,
" Ⱦ¾¿Âµµ´Â ? "
Read *, f
c = f2c(f)
Print *,
" ¼·¾¾¿Âµµ´Â ? ", c
End Program Main
Function
F2c(t)
Implicit None
Real
:: f2c
Real, Intent(IN) :: t
f2c
= (t-32)/1.8
End Function F2c
11. ¿ÜºÎÆÄÀÏ »ç¿ë¹æ¹ý (Open,
Close) (À§·Î)
11.1 Open ¹® : ¿ÜºÎÆÄÀÏ°ú ÀÔÃâ·ÂÀåÄ¡¹øÈ£¸¦ ¿¬°á ¶Ç´Â
À翬°á½ÃÅ°´Â ¸í·É¹®
OPEN (Specs)
11.2 Close ¹® : ¿ÜºÎÆÄÀÏ°ú ¿¬°áÇØÁ¦
CLOSE(list)
11.3 ´ëÇ¥ÀûÀÎ ÆÄÀÏ¿¬°á¹®°ú ÀÔÃâ·Â¹®ÀÇ »ç¿ë¹ý
11.4 Rewind ¹® :
11.5 BackSpace ¹® :
11.6 EndFile ¹® :
11.7 Entry ¹® :
12. ¿©·¯
°¡Áö ¿¹Á¦µé (À§·Î)