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'
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이다.
variable_name = expression
이는 오른쪽 수식을 계산하여 그 결과를 왼쪽의 변수에 지정하라는 뜻이다. 오른쪽 수식에 다른 변수가 있더라도 그 변수의 값은 바뀌지 않는다. 예로
area = pi * r**2
의 수식에서 pi나 r의 값은 바꾸지 않고, 오직 area의 값만 바뀐다.
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)
와 다르다.
2+1-10/3/4
2**3/3*2-5
-(3*4-2)**(3-2**1+1)/-2