Những yếu tố cơ bản của ngôn ngữ FORTRAN 1.1 Sơ l ợc về ngôn ngữ lập trình FOTRAN • Tập hợp các qui tắc đặc biệt để mã hoá những kiến thức cho máy tính hiểu đ ợc gọi là ngôn ngữ lập tr
Trang 1Ng«n ng÷ lËp tr×nh FORTRAN 90
Phan V¨n T©n
Trang 2Ch ơng 1 Những yếu tố cơ bản của
ngôn ngữ FORTRAN
1.1 Sơ l ợc về ngôn ngữ lập trình FOTRAN
• Tập hợp các qui tắc đặc biệt để mã hoá
những kiến thức cho máy tính hiểu đ ợc gọi là ngôn ngữ lập trình
• ý t ởng của FORTRAN đ ợc John Backus đề
xuất vào khoảng cuối năm 1953, ở New York,
và ch ơng trình FORTRAN đầu tiên đã đ ợc
chạy vào tháng 4 năm 1957
Trang 3• N¨m 1966 lÇn ®Çu tiªn phiªn b¶n chuÈn cña ng«n ng÷ lËp tr×nh nµy ® îc Ên hµnh:
• FORTRAN cã nhiÒu bé biªn dÞch dßng kh¸c
nhau, cã thÓ lµm viÖc trªn c¸c hÖ ®iÒu
hµnh kh¸c nhau: DOS, WINDOWS, UNIX,
LINUX,
Trang 41.2 Chạy một ch ơng trình Fortran
• Yêu cầu phải có bộ phần mềm biên dịch của
FORTRAN phù hợp với hệ điều hành máy tính
và đã cài đặt vào máy tính, có thể vận
hành bình th ờng
• Làm quen dần và đi đến sử dụng thành
thạo bộ biên dịch: Cách vận hành, cách biên tập lời ch ơng trình, cách dịch kiểm tra lỗi, cách chạy ch ơng trình,
• Tr ớc hết hãy thử làm việc với những ch ơng
trình đơn giản, cố gắng hiểu rõ ch ơng
trình hoạt động nh thế nào
Trang 6!VÝ dô 2: TÝnh gi¸ trÞ cña hµm A(t)=
! khi cho vµo gi¸ trÞ cña biÕn t
PROGRAM VD2
! Tinh gia tri ham A(t)
INTEGER T ! gia tri bien t
REAL A ! gia tri ham A(t)
PRINT*,’Cho gia tri cua bien t:’ READ*, T
( 6
174 −
Trang 7VÝ dô 3: Gi¶ sö b¹n cã $1000 göi tiÕt kiÖm
trong ng©n hµng, víi tiÒn l·i 9% mçi n¨m
Hái sau mét n¨m sè tiÒn cña b¹n b»ng bao
nhiªu?
NÕu lËp tr×nh cho m¸y tÝnh ta h·y t ëng t îng c¸c
b íc thùc hiÖn cña m¸y nh sau:
1 NhËn sè liÖu (sè tiÒn göi ban ®Çu vµ l·i suÊt)
2 TÝnh tiÒn l·i (9% cña 1000, tøc 90)
3 Céng tiÒn l·i vµo sè tiÒn gèc (90+1000, tøc
1090)
4 In (hiÓn thÞ) sè b¹n sÏ cã.
Trang 8TienLai = LaiSuat * TienGoc
TienGoc = TienGoc + TienLai
PRINT*, ‘So tien se có la : ', TienGoc
END
Chạy ch ơng trình và chú ý rằng bây giờ
không đòi hỏi đầu vào (input) từ bàn phím (Tại sao?) Kết quả sẽ là 1.0900000E+03
(1090)
Trang 9Tóm tắt
• Chư ơng trình máy tính là tập hợp các kiến
thức đ ợc mã hoá để giải quyết một vấn đề riêng biệt.
• Lệnh READ* của Fortran là để nhận dữ liệu
đ a vào cho máy tính.
• Lệnh PRINT* của Fortran là để in (hiển thị)
các thông báo dẫn h ớng cho ng ời dùng và kết quả tính toán, xử lý.
Trang 101.3 Cấu trúc chung của một ch ơng
trình FORTRAN
[PROGRAM TenChuongTrinh]
[Cac cau lenh Khai bao]
[Cac cau lenh thuc hien (than Chuong trinh)] END [PROGRAM [TenChuongTrinh]]
• Cac cau lenh Khai bao : Khai báo để ch ơng
trình cấp phát bộ nhớ, phân luồng xử lý,
• Cac cau lenh thuc hien : Qui tắc và trình tự
thực hiện tính toán, xử lý để đạt đ ợc kết quả
• END là câu lệnh bắt buộc phải có.
Trang 11Cách đặt tên cho biến và hằng
• Ch ơng trình FORTRAN sẽ làm việc thông qua
các biến và hằng, đó là những vùng bộ nhớ đ ợc cấp phát để l u giữ các giá trị trong quá trình
tính toán, chúng đ ợc gán bởi Tên gọi theo qui ớc.
• Tên biến, tên hằng là một dãy ký tự viết liền
nhau, bao gồm các chữ cái tiếng Anh và chữ số
hoặc dấu gạch d ới, nh ng phải bắt đầu bằng
một chữ cái, không phân biệt chữ th ờng, chữ
Trang 12B¶ng m· ASCII
Trang 141.4 CÊu tróc c©u lÖnh
• Tõ khãa: REAL, PRINT, READ,
• C©u lÖnh g¸n: VÕ Tr¸i = VÕ Ph¶i
– VÕ Tr¸i: Tªn biÕn, Tªn h»ng
– VÕ Ph¶i: Gi¸ trÞ, BiÓu thøc
– VÝ dô: TienGoc = 1000 ; TienLai = LaiSuat *
TienGoc
• C¸c c©u lÖnh víi tõ khãa:
– VÝ dô: READ*, T ;
PRINT*, ‘So tien se cã la : ', TienGoc
• Sö dông dÊu c¸ch (SpaceBar) trong c©u lÖnh
• Lêi chó thÝch trong ch ¬ng tr×nh
• Dßng nèi tiÕp
Trang 15Gán nhãn cho câu lệnh
• Trong một ch ơng trình, mỗi câu lệnh có thể
đ ợc gán bởi một nhãn duy nhất là một số
nguyên d ơng nằm trong khoảng 1 99999
• Nhãn đ ợc ghi ở đầu và trên cùng dòng lệnh,
cách nội dung câu lệnh bởi ít nhất một dấu cách
• Nhãn câu lệnh dùng để đánh địa chỉ của
câu lệnh, nhờ đó ch ơng trình có thể chuyển
điều khiển đến câu lệnh khi cần thiết
Trang 16• Cét 6: §¸nh dÊu dßng nèi tiÕp cña c©u lÖnh
• Cét 7-72: Néi dung c©u lÖnh
Trang 17• Đối với FORTRAN 90:
– Lời chú thích:
• Bất kỳ một dòng lệnh hoặc một phần dòng lệnh nào đó nằm ở phía sau dấu chấm than (!) đều đ ợc xem là lời chú thích
• Khi gặp phần chú thích ch ơng trình dịch sẽ
bỏ qua.
Trang 18Phong cách lập trình
• Phong cách lập trình thể hiện tính chất
nghiêm túc, t duy lôgic của ng ời lập trình
• Những điều nên làm:
– Khi viết ch ơng trình nên sử dụng cả chữ th
ờng, chữ hoa để dễ theo dõi
– Dùng lời chú thích để ghi chú, giải thích nội dung các đoạn mã ch ơng trình
– Nên phân cấp các câu lệnh để bố trí sắp
xếp thụt, thò cho hợp lý, dễ kiểm soát
– Đặt tên các biến sao cho mang tính gợi nhớ,
không quá dài, cũng không quá ngắn
– Sử dụng dấu cách một cách thích hợp để nhìn
ch ơng trình sáng sủa, đẹp đẽ hơn
Trang 191.5 Các Kiểu dữ liệu
• Một cách t ơng đối FORTRAN định nghĩa
hai kiểu dữ liệu cơ bản là Kiểu Số và Kiểu
• Dung l ợng bộ nhớ mà các biến chiếm giữ xác
định bởi số byte đ ợc cấp phát
• 1 byte = 8 bit
Trang 20KiÓu D÷ liÖu Sè byte chiÕm gi÷ MiÒn gi¸ trÞ hîp lÖ
INTEGER 4 –2,147,483,648 2,147,483,647
INTEGER *1 1 –128 127
INTEGER *2 2 –32,768 32,767
INTEGER *4 4 –2,147,483,648 2,147,483,647
REAL 4 –3.4028235E+38 –1.1754944E–38 (6)
REAL *4 4 +1.1754944E–38 to +3.4028235E+38 (6)
REAL *8 8
–1.797693134862316D+308 –2.225073858507201D–308
+2.225073858507201D–308 +1.797693134862316D+308 DOUBLE PRECISION 8
COMPLEX 8 (mét cÆp hai sè thùc 4 byte)
COMPLEX *4 8
COMPLEX *8 16 (mét cÆp hai sè thùc 8 byte)
DOUBLE COMPLEX 16
Trang 21KiÓu D÷ liÖu Sè byte chiÕm gi÷ MiÒn gi¸
Trang 22PhÐp to¸n trªn c¸c kiÓu d÷ liÖu
• PhÐp to¸n sè häc:
Tªn gäi Ký hiÖu Sö dông víi
– Céng: + REAL, INTEGER, COMPLEX
– Trõ: - REAL, INTEGER, COMPLEX
– Nh©n: * REAL, INTEGER, COMPLEX
– Chia: / REAL, INTEGER, COMPLEX
– Lòy thõa: ** REAL, INTEGER, COMPLEX
• PhÐp to¸n quan hÖ:
– B»ng: EQ (==) BiÓu thøc so s¸nh c¸c – Kh«ng b»ng: NE (/=) kiÓu sè, kiÓu ký tù
– Lín h¬n: GT (>)
– Lín h¬n hoÆc b»ng: GE (>=)
– Nhá h¬n hoÆc b»ng: LE (<=)
Trang 23PhÐp to¸n trªn c¸c kiÓu d÷ liÖu
• PhÐp to¸n gép:
– Gép hai chuçi ký tù: // Chuçi ký tù
Trang 24• VÝ dô
X >= 0
Lín h¬n hoÆc b»ng
.GE hoÆc >=
B ** 2 - 4 * A * C > 0
Lín h¬n.GT hoÆc >
A /= 0 Kh«ng b»ng
.NE hoÆc /=
B ** 2 == 4 * A * C
B»ng.EQ hoÆc ==
B ** 2 LE 4 * A * C
Nhá h¬n hoÆc b»ng
.LE hoÆc <=
A < 1e-5Nhá h¬n
.LT hoÆc <
VÝ dô
ý nghÜa PhÐp to¸n
quan hÖ
Trang 25PhÐp chia sè nguyªn vµ biÓu thøc
Trang 26Thứ tự u tiên thực hiện các phép
toán
Biểu thức Phép toán và thứ tự u
tiên Thự tự thực hiện
Kiểu số * , / (2) Từ trái sang phải Kiểu số + , − (3) Từ trái sang phải
Quan hệ EQ., NE., LT., LE.,
.GT., GE. Không phân định
định
Lôgic EQV., NEQV (4) Từ trái sang phải
Trang 27(-b + SQRT(DelTa)) / 2 / a
nh ng kh«ng thÓ viÕt:
(-b + SQRT(DelTa)) / 2 * a
a 2
b + ∆
−
Trang 28.FALSE .TRUE.
KÕt qu¶ thùc hiÖn c¸c phÐp to¸n
NÕu a vµ b lµ hai biÕn L«gic
§èi víi c¸c biÓu thøc sè:
Cã thÓ sö dông pha trén gi÷a REAL vµ INTEGER, kÕt qu¶ tr¶ vÒ tïy thuéc vµo kiÓu d÷ liÖu cña biÕn nhËn gi¸ trÞ
VÝ dô: a= -22.9; b=6.1 => x=a+b= -16.8; nh ng
n=a+b = -16
a= 2.9; b=6.8 => x=a+b= 9.7; nh ng
n=a+b = 9
Trang 29Giải thích thêm về các biến lôgic
• Hai biến lôgic t ơng ứng với hai công tắc S1, S2
• Mạch nối tiếp t ơng ứng với phép toán AND.,
mạch song song t ơng ứng với phép toán OR.
• Trạng thái bóng đèn t ơng ứng với kết quả thực
hiện phép toán đối với S1 và S2
• Mạch nối tiếp: Đèn sáng khi S1 và S2 đều đóng
• Mạch song song: Đèn sáng khi S1 hoặc S2 đóng
Trang 30L = S1 and S2 ! Mac noi tiep
! L = S1 or S2 ! Mac song song
PRINT*,’ Trang thai bong den SANG la TRUE, TAT la FALSE’
PRINT*, ‘ Trang thai bong den la ‘,L
END
Trang 31Khai báo ngầm định và khai báo hiện
• Khi khai báo biến và hằng (và cả hàm),
FORTRAN qui ớc ngầm định (khai báo ẩn –
IMPLICIT ) nh sau:
– Nếu không khai báo rõ ràng kiểu dữ liệu cho các biến thì những biến có tên bắt đầu bằng một trong các chữ cái I, J, K, L, M, N là những biến nguyên, số còn lại là những biến thực
– Các biến kiểu số (nguyên và thực) có thể không cần khai báo hiện (sử dụng khai báo ẩn)
• Các biến có kiểu CHARACTER hoặc LOGICAL
đều phải đ ợc khai báo hiện
• Có thể vô hiệu hóa khai báo ẩn của FORTRAN bằng câu lệnh:
IMPLICIT NONE
• Trong tr ờng hợp này tất cả các biến sử dụng trong ch ơng trình cần phải đ ợc khai báo hiện
Trang 32• VÝ dô: H·y xÐt c¸c ch ¬ng tr×nh sau
INTEGER N REAL X
PRINT*,’ Cho mot so nguyen: ‘ READ*, N
X = 1.0 / N PRINT*,’ Nghich dao cua N = ‘, X
END
Trang 33nhau bởi dấu phẩy (,).
• Mỗi lệnh READ đòi hỏi
phải đ a vào một bản ghi
2 3 4
Nh ng:
READ*, AREAD*, BREAD*, C
Sẽ đọc 3 bản ghi,
mỗi bản ghi có 1 giá trị, chẳng hạn:
234
Trang 34¬ng øng víi c¸c biÕn trong ds_bien
Trang 35• VÝ dô:
REAL Pi, Re
PARAMETER (Pi=3.1416, Re=6370.0)
PRINT*, ‘So PI=‘,Pi,’ Ban kinh Trai dat=‘, Re
END
Trang 36Các lệnh vào ra đơn giản
• Sử dụng phép khởi tạo giá trị của biến bằng
lệnh khai báo
• Cú pháp:
Kiểu dữ liệu :: Var1= GiaTri1 , Var2= GiaTri2 ,
trong đó Var1, Var2 là tên các biến sẽ đ ợc
khởi tạo, GiaTri1, GiaTri2 là những giá trị khởi tạo gán cho các biến t ơng ứng
Trang 37bởi dấu phẩy (,).
• Mỗi lệnh PRINT hoặc WRITE
sẽ ghi ra một bản ghi mới.
• Ví dụ:
PRINT*, A, B, C
sẽ ghi một bản ghi
trên đó có 3 giá trị, chẳng hạn:
2 3 4
Nh ng:
PRINT*, APRINT*, BPRINT*, C
Sẽ ghi ra 3 bản ghi,
mỗi bản ghi có 1 giá trị, chẳng hạn:
234
Trang 39bdk mét l îng b»ng Buoc
Sai
§óng
Trang 46N2 10
CHO GIA TRI N1, N2:
I 1
0+1
TONG 1
CHO GIA TRI N1, N2:
1 10
2
I 2
1+2
TONG 3
CHO GIA TRI N1, N2:
1 10
3
I 3
3+3
TONG 6
CHO GIA TRI N1, N2:
1 10
4
I 4
6+4
TONG 10
CHO GIA TRI N1, N2:
1 10
5
I 5
10+5
TONG 15
CHO GIA TRI N1, N2:
1 10
6
I 6
15+6
TONG 21
CHO GIA TRI N1, N2:
1 10
7
I 7
21+7
TONG 28
CHO GIA TRI N1, N2:
1 10
8
I 8
28+8
TONG 36
CHO GIA TRI N1, N2:
1 10
9
I 9
36+9
TONG 45
CHO GIA TRI N1, N2:
1 10
10
I 10
45+10
TONG 55
CHO GIA TRI N1, N2:
1 10
10
TONG= 55
Trang 47VÝ dô
• TÝnh c¨n bËc hai cña sè a theo ph ¬ng ph¸p
Newton:
1 NhËp vµo sè a
2 Khëi t¹o x b»ng 1 (g¸n gi¸ trÞ cho x b»ng 1)
3 LÆp l¹i 6 lÇn c¸c b íc sau ®©y:
Thay x bëi (x + a/x)/2
In gi¸ trÞ cña x
4 KÕt thóc ch ¬ng tr×nh
Trang 48PROGRAM Newton ! Tinh can bac hai bang pp newton REAL A ! So se lay can bac hai
INTEGER I ! Bien dem phep lap
REAL X ! Gia tri gan dung cua can bac hai cua a
WRITE( *,*) ‘ Cho so se lay can bac hai: ‘
Trang 50§óng
Trang 512) IF (bthuc logic) THEN
§óng
Trang 523) IF (bthuc logic) THEN
Sai
§óng (C©u
lÖnh/Khèi lÖnh)_2
Trang 534) IF (bth_logic_1) THEN
(C©u lÖnh/Khèi lÖnh)_1 ELSE IF (bth_logic_2) THEN (C©u lÖnh/Khèi lÖnh)_2 ELSE IF (bth_logic_3) THEN (C©u lÖnh/Khèi lÖnh)_3
ELSE
(C©u lÖnh/Khèi lÖnh)_n END IF
Trang 54bthuc logic_2
(C©u lÖnh/Khèi lÖnh)_2
§óng
bthuc logic_3
(C©u lÖnh/Khèi lÖnh)_3
Sai
§óng
Sai
Trang 55PRINT*,' LOAI XUAT SAC'
ELSE IF (DIEM.GE.8) THEN
PRINT*,' LOAI GIOI'
ELSE IF (DIEM.GE.7) THEN
PRINT*,' LOAI KHA'
ELSE IF (DIEM.GE.5) THEN
PRINT*,' LOAI TRUNG BINH'
Trang 57print*,' Ket thuc sau lan
lap thu ',i
if (M.LE.N) thenwrite(*,*)' Lap tu ',M, ' den ',N
Do i=M,N
write(*,*) iEnddo
Elsewrite(*,*)' M > N'End If
END
Chó ý: Hai cÊu tróc kh«ng giao
nhau
Trang 58Lệnh nhảy vô điều kiện
• Để chuyển điều khiển đến một câu lệnh
nào đó trong tr ờng hợp cần thiết hãy dùng lệnh:
GOTO m
trong đó m là nhãn câu lệnh sẽ đ ợc chuyển
điều khiển đến
• Chú ý quan trọng: Nếu lệnh GOTO không
nằm trong chu trình lặp hoặc trong phạm
vi tập câu lệnh do các lệnh khác kiểm soát
thì nhất thiết câu lệnh sau lệnh GOTO
phải có nhãn
Trang 59IF (.NOT.L1) GOTO 10
I = 1
J = 2 GOTO 30
10 IF (.NOT.L2) GOTO 20
I = 2
J = 3 GOTO 30
20 I = 3
J = 4
30 CONTINUE
Trang 605) IF (bthuc SoHoc) m1, m2, m3
bthuc SoHoc
C©u lÖnh cã nh·n m1
= 0
< 0
C©u lÖnh cã nh·n m2
C©u lÖnh cã nh·n m3
> 0
Trang 6130 PRINT*,' DAY LA SO DUONG'
50 PRINT*,' KET THUC CHUONG TRINH' PAUSE
END
Trang 62Thao tác với hằng và biến ký tự
CHARACTER (Len=n) Danh_Sach
CHARACTER Var1*n1, Var2*n2,
trong đó:
Danh_Sach là tên các biến/hằng ký tự, đ ợc liệt
kê cách nhau bởi dấu phẩy (,)
n, n1, n2, là những số nguyên d ơng chỉ độ
dài (số ký tự) cực đại của dãy ký tự
Trang 63VÝ dô
• Ch ¬ng tr×nh sau ®©y sÏ hái tªn b¹n, khi b¹n
gâ tªn m×nh vµo, m¸y sÏ ® a ra lêi chµo mõng b¹n:
Chó ý: - Trong tr êng hîp nµy, khi nhËp gi¸ trÞ
cña biÕn ký tù, kÕt qu¶ cã thÓ kh¸c nhau gi÷a
cã dïng dÊu nh¸y vµ kh«ng dïng dÊu nh¸y
- Ph©n biÖt ch÷ th êng vµ ch÷ hoa, cã
dÊu c¸ch vµ kh«ng cã dÊu c¸ch
VÝ dô: ‘Ha Noi’ ≠ ‘HaNoi’ ≠ ‘Hanoi’ ≠ ‘hanoi’
Trang 64• Nếu độ dài dãy ký tự (giá trị) gán cho biến v
ợt quá độ dài cực đại của biến thì nội dung của biến chỉ chứa phần bên trái nhất của dãy
• Ví dụ:
CHARACTER Name*7
Name = ‘Hoang Hong Ha’
Kết quả là Name =‘ Hoang H ’
Trang 65Khèi lÖnh_2
CASE DEFAULT
Khèi lÖnh_n END SELECT [ Ten_cau_truc]
Trang 66Rẽ nhánh với lệnh CASE
• Diễn giải:
Bắt đầu: Xác định giá trị của (Bieu_Thuc_Chon)
Nếu giá trị của Bieu_Thuc_Chon thuộc tập (Chon1) thì
Trang 67• VÝ dô: TÝnh sè ngµy trong th¸ng:
INTEGER Month, Year
Print'(A\)',' Xem thang nao?'
Print*,' Thang ', Month,' Nam 2000 co 29 ngay'
Else IF (Mod(Year,4).EQ.0.AND.Mod(Year,100).NE.0) then Print*,' Thang ', Month,' Nam ', Year,' co 29 ngay'
Trang 68• VÝ dô: Go mot ky tu va cho biet do la chu cai hay chu so
WRITE (*, *) "Day la ky tu ", Char
END SELECT GET_ANSWER
END
Trang 70END DO
KÕt qu¶: 5 4 3 2 1
DO I = 6, 1, -2 WRITE( *, '(I3)', ADVANCE = 'NO' ) I
END DO
KÕt qu¶: 6 4 2
H·y kh¶o s¸t c¸c ®o¹n ch ¬ng tr×nh sau
Trang 71• Trong đó bdk là một biến nguyên, BThuc1,
BThuc2, và BThuc3 là những biểu thức nguyên hợp lệ, Ten_ChuTrinh là tên của chu trình Giá trị
ngầm định của BThuc3 là 1
• Số vòng lặp của chu trình DO đ ợc xác định bởi MAX ((BThuc2–BThuc1+ BThuc3) / BThuc3, 0)
Chú ý: FORTRAN còn cho phép sử dụng chu trình
DO với các tham số thực (bdk, BThuc1, BThuc2,
BThuc3 là những số thực)
Trang 72Vong2: DO bdk2=
Khèi lÖnh END DO Vong1 .
END DO Vong2
Trang 73• VÝ dô: TÝnh tæng ®iÓm thi §¹i hoc cña c¸c thÝ sinh
Trang 74• Nói chung không có gì khác biệt lớn giữa
cấu trúc tổng quát và cấu trúc thông th ờng
tr ớc đây đã xét, ngoại trừ thêm
trí của khối cấu trúc
Trang 76VÝ dô: LËp ch ¬ng tr×nh gi¶i Ph ¬ng tr×nh bËc 2
1 NhËp c¸c hÖ sè a, b, c
2 NÕu a=0: Gi¶i Ph ¬ng tr×nh bx + c = 0
– NÕu b=0:
1 NÕu c=0: Tr¶ lêi = V« sè nghiÖm
2 NÕu c ≠ 0: Tr¶ lêi = V« nghiÖm
– NÕu b≠ 0: Tr¶ lêi = nghiÖm x=-c/b
3 NÕu a≠ 0: Gi¶i Ph ¬ng tr×nh ax^2 + bx + c = 0
Trang 77XetDelTa: IF (DelTa<0) THEN
Print*,’Phuong trinh KHONG CO NGHIEM THUC’ ELSE XetDelTA
Trang 78• Trong nhiều tr ờng hợp lệnh chu trình th ờng
đ ợc kết hợp với các lệnh READ, PRINT hoặc WRITE để nhập hoặc kết xuất dữ liệu
• Hãy xét hai ví dụ sau đây:
2 3 4 5Kết quả là:
1 2 3
4 5
Trang 79Định dạng dữ liệu
• Để đọc/ghi dữ liệu có qui cách FORTRAN cho phép
sử dụng định dạng FORMAT d ới các hình thức sau
Ký hiệu
Trong đó: w là độ rộng tr ờng, d là số chữ số sau dấu chấm thập phân, m là số ký tự mà một số nguyên chiếm, kể cả chữ số 0 đứng tr ớc, n là số ký tự bỏ qua
Trang 80Write(*,11) J, K
11 FORMAT(1x, ‘J= ‘,I5,’ K=
‘,I7.7) Print*,’Hai so thuc X,Y:’
Write(*,’(2F10.3,)’) X,Y Print*,’Hai so thuc A,B:’
Trang 81970 FORMAT (' ABC"DEF')
WRITE (*, '('' ABC''''DEF'')')
WRITE (*,*) 'ABC''DEF'
WRITE (*,*) "ABC'DEF"
Trang 82Lặp không xác định
• Kết hợp IF & GOTO
m Câu lệnh đầu vòng lặp
Các câu lệnh tiếp theo trong vòng lặp
IF (điều kiện) GOTO m
! hoặc:
IF (điều kiện) THEN
Các câu lệnh xử lý tr ớc khi lặp lại
GOTO m
END IF