Fortran-기본 입력 출력

지금까지 키보드에서 데이터를 읽을 수 있음을 확인했습니다. read * 문을 사용하여 화면에 출력을 표시합니다. print*성명을 각각. 이러한 형태의 입출력은free format I / O이며 list-directed 입출력.

자유 형식의 단순 I / O는 다음과 같은 형식을 갖습니다.

read(*,*) item1, item2, item3...
print *, item1, item2, item3
write(*,*) item1, item2, item3...

그러나 포맷 된 I / O는 데이터 전송에 더 많은 유연성을 제공합니다.

형식화 된 입력 출력

형식화 된 입력 출력에는 다음과 같은 구문이 있습니다.

read fmt, variable_list 
print fmt, variable_list 
write fmt, variable_list

어디,

  • fmt는 형식 사양입니다.

  • variable-list는 키보드에서 읽거나 화면에 쓸 변수 목록입니다.

형식 사양은 형식화 된 데이터가 표시되는 방식을 정의합니다. 목록을 포함하는 문자열로 구성됩니다.edit descriptors 괄호 안에.

edit descriptor 문자와 숫자가 표시되는 정확한 형식 (예 : 너비, 소수점 이하 자릿수 등)을 지정합니다.

예를 들면

Print "(f6.3)", pi

다음 표는 설명자를 설명합니다-

설명자 기술
나는

정수 출력에 사용됩니다. 이는 r, w 및 m의 의미가 아래 표에 나와있는 'rIw.m'형식을 취합니다. 정수 값은 필드에서 올바르게 정의됩니다. 필드 너비가 정수를 수용 할만큼 충분히 크지 않으면 필드는 별표로 채워집니다.

"(3i5)"인쇄, i, j, k
에프

실수 출력에 사용됩니다. 이는 r, w 및 d의 의미가 아래 표에 나와있는 'rFw.d'형식을 취합니다. 실제 가치는 그 분야에서 정당화됩니다. 필드 너비가 실수를 수용 할만큼 충분히 크지 않으면 필드는 별표로 채워집니다.

print "(f12.3)", pi
이자형

이것은 지수 표기법의 실제 출력에 사용됩니다. 'E'설명문은 'rEw.d'형식을 취하며 여기서 r, w 및 d의 의미는 아래 표에 나와 있습니다. 실제 가치는 그 분야에서 정당화됩니다. 필드 너비가 실수를 수용 할만큼 충분히 크지 않으면 필드는 별표로 채워집니다.

소수점 세 자리의 실수를 인쇄하려면 필드 너비가 10 이상이어야합니다. 하나는 가수의 부호, 2는 0, 4는 가수, 2는 지수 자체입니다. 일반적으로 w ≥ d + 7.

print "(e10.3)", 123456.0은 '0.123e + 06'을 ​​제공합니다.
ES

이것은 실제 출력 (과학적 표기법)에 사용됩니다. 이는 r, w 및 d의 의미가 아래 표에 나와있는 'rESw.d'형식을 취합니다. 위에서 설명한 'E'설명자는 잘 알려진 전통적인 '과학적 표기법'과 약간 다릅니다. 과학적 표기법은 가수가 0.1 ~ 1.0 범위 인 E 설명자와 달리 1.0 ~ 10.0 범위의 가수를 갖습니다. 실제 가치는 그 분야에서 정당화됩니다. 필드 너비가 실수를 수용 할만큼 충분히 크지 않으면 필드는 별표로 채워집니다. 여기서도 폭 필드는 식 w ≥ d + 7을 만족해야합니다.

print "(es10.3)", 123456.0은 '1.235e + 05'를 제공합니다.

이것은 문자 출력에 사용됩니다. 이것은 r 및 w의 의미가 아래 표에 나와있는 'rAw'형식을 취합니다. 문자 유형은 해당 필드에서 올바르게 정의됩니다. 필드 너비가 문자열을 수용 할만큼 충분히 크지 않은 경우 필드는 문자열의 첫 번째 'w'문자로 채워집니다.

print "(a10)", str
엑스

이것은 공간 출력에 사용됩니다. 이것은 'nX'형식을 취합니다. 여기서 'n'은 원하는 공간의 수입니다.

print "(5x, a10)", str
/

슬래시 설명자 – 빈 줄을 삽입하는 데 사용됩니다. 이것은 '/'형식을 취하고 다음 데이터 출력이 새 행에 있도록합니다.

print "(/, 5x, a10)", str

다음 기호는 형식 설명자와 함께 사용됩니다-

Sr. 아니요 기호 및 설명
1

c

열 번호

2

d

실제 입력 또는 출력에 대한 소수점 이하 자릿수

m

표시 할 최소 자릿수

4

n

건너 뛸 공백 수

5

r

반복 횟수 – 설명자 또는 설명자 그룹을 사용하는 횟수

6

w

필드 너비 – 입력 또는 출력에 사용할 문자 수

예 1

program printPi

   pi = 3.141592653589793238 
   
   Print "(f6.3)", pi 
   Print "(f10.7)", pi
   Print "(f20.15)", pi 
   Print "(e16.4)", pi/100 
   
end program printPi

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

3.142
3.1415927
3.141592741012573
0.3142E-01

예 2

program printName
implicit none

   character (len = 15) :: first_name
   print *,' Enter your first name.' 
   print *,' Up to 20 characters, please'
   
   read *,first_name 
   print "(1x,a)",first_name
   
end program printName

위 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다. (사용자가 Zara라는 이름을 입력했다고 가정)

Enter your first name.
Up to 20 characters, please
Zara

예제 3

program formattedPrint
implicit none

   real :: c = 1.2786456e-9, d = 0.1234567e3 
   integer :: n = 300789, k = 45, i = 2
   character (len=15) :: str="Tutorials Point"
   
   print "(i6)", k 
   print "(i6.3)", k 
   print "(3i10)", n, k, i 
   print "(i10,i3,i5)", n, k, i 
   print "(a15)",str 
   print "(f12.3)", d
   print "(e12.4)", c 
   print '(/,3x,"n = ",i6, 3x, "d = ",f7.4)', n, d
   
end program formattedPrint

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

45
045
300789 45  2
300789 45  2
Tutorials Point
123.457
0.1279E-08

n = 300789 d = *******

형식 문

format 문을 사용하면 하나의 문에서 문자, 정수 및 실제 출력을 혼합하고 일치시킬 수 있습니다. 다음 예제는 이것을 보여줍니다-

program productDetails 
implicit none 

   character (len = 15) :: name
   integer :: id 
   real :: weight
   name = 'Ardupilot'
   id = 1
   weight = 0.08
   
   print *,' The product details are' 
   
   print 100
   100 format (7x,'Name:', 7x, 'Id:', 1x, 'Weight:')
   
   print 200, name, id, weight 
   200 format(1x, a, 2x, i3, 2x, f5.2) 
   
end program productDetails

위의 코드가 컴파일되고 실행되면 다음과 같은 결과가 생성됩니다.

The product details are
Name:       Id:    Weight:
Ardupilot   1       0.08