Ng ônng ữlậptrìnhFORTRAN90
PhanVănTân
Chương 1.Những yếutố c ơbảnc ủang ônng ữ
FORTRAN
1.1 Sơlược về ngôn ngữlập trình FOTRAN
ã Tập hợp các quitắc đặc biệt để mho á những kiến
thức cho máy tính hiểu được gọi là ng ônng ữlập
trình
ã Có nhiều ngôn ngữlập trình: FORTRAN, BASIC,
Pascal, C,...
ã FORTRAN là tên cấu tạo từ FORmula TRANslation
(công thức dịch), là ngôn ngữlập trình bậc cao
ã ý tưởng của FORTRAN được J ohn 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.
ã 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 66
ã Phiên bản chuẩn mới, Fortran 77, được ấn hành
vào năm 1978
ã Phiên bản chuẩn FORTRAN 90 (hoặc Fortran
90), ra đời vào tháng 8 năm 1991
ã Cho đến nay đà có các phiên bản mới khác, như
FORTRAN 95, FORTRAN 2000
ã 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,...
1.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
! Vi du 1.
! Loi Chao mung!
CHARACTER NAME*20
PRINT*, 'Ten ban la gi?'
READ*, NAME
PRINT*, 'Xin chao ban ', NAME
END
Khi chạy chương trình sẽ nhận được:
Ten ban la gi?
THANH
Xin chao ban THANH
174.6 ( t 1981.2 )3
!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
A =174.6 * (T - 1981.2) ** 3
PRINT*,'Gia tri ham A(t) khi t=', T, ' la :', A
END
Khichạychươngtrìnhs ẽđược:
Cho gia tri cua bien t:
2000
Gia tri ham A(t) khi t=2000 la : 1.1601688E+06
Ví 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ã.
ã Lời chương trình:
PROGRAM TinhTien
REAL TienGoc, TienLai, LaiSuat
TienGoc =1000
LaiSuat =0.09
TienLai =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)
Tómtắ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ý.
1.3 Cấu trúc chung của một chương
trình FORTRAN
[PROGRAM Te nChuongTrinh]
[Caccaule nhKhaibao]
[Caccaule nhthuchie n(thanChuongtrinh)]
END [PROGRAM [Te nChuongTrinh]]
ã Caccaule nhKhaibao:Khai báo để chương
trình cấp phát bộ nhớ, phân luồng xử lý,...
ã Caccaule nhthuchie n: 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ó.
Cá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ê ng ọ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 p hảib ắtđầub ằng m ộ tc hữc ái, không phân
biệt chữthường, chữhoa (A, B, C,..., a, b, c)
ã Ví dụ:
Tên hợp lệ
Tên không hợp lệ
DienTich
Dien tich
Tien2003
2003Tien
AB
A,B
DoLa
$
B¶ng m· ASCII
B¶ng m· ASCII
1.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ơ: Tie nGoc = 1000 ; Tie nLai = LaiS uat*Tie nGoc
ã Các câu lệnh với từ khóa:
Ví dụ: R EAD*, T ;
PR INT*, ‘S o tie n s e cã la : ', Tie nGoc
• 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
Gá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 nhn duy nhất là một số ng uyêndươ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
ã Ví dụ:
10 PRINT*,Cho mọt so nguyen duong:
....
PRINT*, ‘Sai so lieu. Hay nhap lai.’
GOTO 10
Qui ước biên tập chương trình:
ã Đối với FORTRAN 77:
Tên file chương trình có phần mở rộng là *.FOR, *.F
Một dòng chương trình có tối đa 72 ký tự:
ã Cột 1-5: Dùng để đánh Nhn câu lệnh (1-99999). Nếu
không có nhÃn thìđểtrố ng
ã 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
Dòng chú thích:
ã Bất kỳ dòng lệnh nào có ký tự C hoặc c ở cột 1 đều đư
ợc xem là dòng chú thích
ã Phần dòng lệnh nằm phía sau dấu chấm than ( ! ) cũng đư
ợc hiểu là lời chú thích
ã Có thể sử dụng các cột 73-80 trên dòng làm chú thích
ã Khi gặp phần chú thích chương trình dịch sẽ bỏ qua.
ã Đối với FORTRAN 90:
Tên file chương trình có phần mở rộng là *.f90, *.F90
Đối với MicroSoft FORTRAN, một dòng chương trình
có thể dài tời 7200 ký tự, trên đó có thể có nhiều
câu lệnh, các câu lệnh cách nhau bởi dấu chấm
phẩy (;)
ã Lời chương trình bắt đầu từ cột 1
ã Nếu không muốn đề dòng lệnh quá dài có thể
dùng ký tự (&) ở cuối dòng để ngắt dòng lệnh
xuống dòng dưới
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.
Phong 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
1.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ểuS ố và KiểuKhông
p h¶i s è :
– KiĨu S è : REAL (sè thùc), INTEGER (số
nguyên), COMPLEX (số phức)
KiểuKhông p hảis ố : CHARACTER (ký tự),
LOGICAL (lôgic)
ã Tùy theo từng kiểu dữliệu mà các biến/hằng sẽ
chiếm dung lượng bộ nhớ tương ứng
ã Dung lượng bộ nhớ mà các biến chiếm giữxác
định bởi số b y te được cấp phát
ã 1b y te =8b it
Kiểu Dữliệu
INTEGER
INTEGER *1
INTEGER *2
INTEGER *4
Số byte chiếm giữ
Miền giá trị hỵp lƯ
4
–2,147,483,648 .. 2,147,483,647
1
–128 .. 127
2
–32,768 .. 32,767
4
–2,147,483,648 .. 2,147,483,647
4
–3.4028235E+38 .. –1.1754944E–38 (6)
4
+1.1754944E–38 to +3.4028235E+38 (6)
8
–1.797693134862316D+308 .. –2.225073858507201D–308
+2.225073858507201D–308 .. +1.797693134862316D+308
DOUBLE PRECISION 8
REAL
REAL *4
REAL *8
COMPLEX
COMPLEX *4
COMPLEX *8
DOUBLE COMPLEX
8
8
16
16
(mét cỈp hai sè thùc 4 byte)
(mét cỈp hai sè thùc 8 byte)
Kiểu DữliệuSố byte chiếm giữ Miền giá trị hợp lệ
CHARACTER
CHARACTER *n
1
n
Các ký tự trong bảng mà ASCII
DÃy các ký tự trong b¶ng m· ASCII
LOGICAL
LOGICAL *1
LOGICAL *2
LOGICAL *4
4
1
2
4
.TRUE. , .FALSE.
Phé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
Cộng:
+
Trừ:
Nhân:
*
Chia:
/
Lũy thừa:
**
ã Phép toán quan hệ:
Bằng:
Không bằng:
Lớn hơn:
Lớn hơn hoặc bằng:
Nhỏ hơn:
Nhỏ hơn hoặc bằng:
Sử dụng với
REAL, INTEGER, COMPLEX
REAL, INTEGER, COMPLEX
REAL, INTEGER, COMPLEX
REAL, INTEGER, COMPLEX
REAL, INTEGER, COMPLEX
.EQ. (==)
.NE. (/=)
.GT. (>)
.GE. (>=)
.LT. (<)
.LE. (<=)
BiĨu thøc so s¸nh c¸c
kiĨu sè, kiÓu ký tù
Phép toán trên các kiểu dữ liệu
ã Phép toán gộp:
Tên gọi
Gộp hai chuỗi ký tự:
ã Phép toán lôgic:
Phủ định:
Và:
Hoặc:
Tương đương:
Không tương đương:
Ký hiệu
//
.NOT.
.AND.
.OR.
.EQV.
.NEQV.
Sử dụng với
Chuỗi ký tự
Biểu thức lôgic
ã Ví dụ
Phép toán
quan hệ
.LT. hoặc <
ý nghĩa
Ví dụ
Nhỏ hơn
A < 1e-5
B ** 2 .LE. 4 * A * C
.EQ. hoặc ==
Nhỏ hơn hoặc
bằng
Bằng
.NE. hoặc /=
Không bằng
A /= 0
.GT. hoặc >
Lín h¬n
B ** 2 - 4 * A * C > 0
.GE. hoặc >=
Lớn hơn hoặc
bằng
X >= 0
.LE. hoặc <=
B ** 2 == 4 * A * C
Phép chia số nguyên và biểu thức pha
trộn
ã Cần đặc biệt lưu ý phép toán chia đối với các số nguyên:
10 / 3 cho giá trị bằng 3
19 / 4 cho gia trị bằng 4
4 / 5 cho giá trị bằng 0
- 8 / 3 cho giá trị bằng -2
3 * 10 / 3 cho giá trị bằng 10
10 / 3 * 3 cho giá trị bằng to 9
ã Đối với các biểu thức pha trộn nhiều kiểu dữliệu:
10 / 3.0 cho giá trị bằng 3.333333
4. / 5 cho giá trị bằng 0.8
2 ** (- 2) cho giá trị bằng 0 (?)
3 / 2 / 3.0 cho giá trị bằng 0.333333