Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
739,15 KB
Nội dung
PHƯƠNG PHÁP TÍNH VÀ LẬP TRÌNH FORTRAN MỤC TIÊU • Vẽ lưu đồ, viết thuật toán để giải toán • Viết chương trình FORTRAN • Dùng phần mềm Origin, Xmgrace để xử lý số liệu vẽ đồ thị • Các phương pháp tính dùng kỹ thuật khoa học: sai số, giá trị hàm, giải phương trình, hệ phương trình, … LƯU ĐỒ-THUẬT TOÁN Start Condi+on no End yes VD1: so sánh số nhập từ bàn phím VD2: Tìm nghiệm phương trình bậc ẩn VD3: giải phương trình bậc hai ẩn ax2+bx+c=0 Thuật toán: - Nhập hệ số a,b,c + a=0: (giải phương trình bậc bx + c = 0) b≠0: nghiệm x=-c/b b=0: c=0: vô số nghiệm c≠0: vô nghiệm + a≠0 Tính Δ=b2-4ac: Δ0: nghiệm phân biệt x1,2=-b±√Δ/2a - Xuất kết hình Sơ lược chương trình viết bằng FORTRAN Cấu trúc tổng quát chương trình Fortran: ♣ Tên chương trình ♣ Phần khai báo: Khai báo biến số, số, kiểu tự định ♣ Phần chương trình chính: gồm câu lệnh chạy chương trình ♣ Kết thúc chương trình ♣ Các chương trình (nếu có) Ví dụ: [PROGRAM tên_chương_trình] PROGRAM tong2so [Các câu lệnh khai báo] INTEGER :: a,b,tong [Các câu lệnh chạy] tong=a+b PRINT*, ‘tong so =’, tong END [PROGRAM [tên_chương_trình]] END PROGRAM Lưu ý: - In đậm từ khóa chương trình, - Bắt buộc phải có từ khóa END để kết thúc chương trình Tóm lược ngôn ngữ lập trình FORTRAN Fortran sở 1.1 Kiểu liệu Fortran 1.2 Hằng số biến số 1.3 Mảng 1.4 Các phép toán, hàm thông dụng Các câu lệnh 2.1 Các biểu thức lệnh gán 2.2 Lệnh nhập/xuất liệu 2.3 Lệnh điều kiện IF-THEN 2.4 Vòng lặp DO xác định không xác định Chương trình Hàm thủ tục Kiểu liệu Fortran Kiểu số (số thực, số nguyên số phức) Từ khóa: REAL, DOUBLE PRECISION (số thực), INTEGER (số nguyên), COMPLEX (số phức) Ví dụ cách khai báo: REAL :: r0, REAL :: pi=3.14d0 DOUBLE PRECISION :: r1 INTEGER :: i0 INTEGER*4 :: i1 COMPLEX :: c0 Kiểu logic (.true., false.) Từ khóa: LOGICAL Kiểu kí tự Từ khóa: CHARACTER Ví dụ cách khai báo: Ví dụ cách khai báo: CHARACTER(len=3) :: cha0 LOGICAL :: L0=.TRUE LOGICAL*4 :: L1=.FALSE Hằng số biến số 1. Hằng số: Từ khóa: PARAMETER - Giá trị không đổi trong toàn chương trình Ví dụ: INTEGER, PARAMETER :: n=100, m=50 REAL, PARAMETER :: pi=3.1416 Biến số: - Giá trị thay đổi trong chạy chương trình (thông qua lệnh gán) - Có thể được gán giá trị ban đầu Ví dụ: REAL :: radius=3.5D0 ! Biến số gán giá trị ban đầu REAl :: x, y ! Biến số không gán giá trị ban đầu x = 3.1416; y = 2.D0*x*radius ! Gán giá trị chạy Từ khóa: DIMENSION Mảng Ví dụ cách khai báo: Mảng chiều: REAL, DIMENSION(5) :: x ! x tập hợp phần tử x(1), x(2), x(3), x(4), x(5) số thực x(4) = 10.1 ! Gán cho phần tử x(4) giá trị 10.1 Mảng chiều: INTEGER, DIMENSION(2,4) :: int ! int ma trận hàng cột có phần tử int(1,1),int(1,2),int(1,3,), DO i=1,2 int(i,1)=i ENDDO ! Gán giá trị ban đầu ! cho int(1,1)=1, int(2,1)=2 Các câu lệnh 1. BIỂU THỨC VÀ LỆNH GÁN Cú pháp: vname = expr - expr biểu thức: số, phép tính đại số, ký tự, logic, … - vname tên biến gán giá trị biểu thức *Lưu ý: vname ‘nên’ có kiểu liệu với giá trị expr Ví dụ: REAL :: x INTEGER : i CHRACTER(len=10) :: charac i=2 ! Gán cho i giá trị nguyên = charac=‘12345’ ! Gán cho biến charac chuỗi ký tự 12345 x=2.2*i ! Gán x= 4.4 x=charac ! Máy báo lỗi charac x không kiểu liệu x=i ! x=2.0, máy chuyển giá trị nguyên i thành giá trị ! thực gán vào x, không báo lỗi kiểu số LỆNH NHẬP XUẤT DỮ LIỆU 2.1 Nhập liệu từ bàn phím, xuất hình: a) Nhập từ bàn phím: Từ khóa: READ* Ví dụ 1: READ*, a,b,c READ*,a READ*,b READ*,c ⇒ Nhập vào hình a=1, b=2, c=3 Lưu ý: số nhập vào hình cách dấu ENTER b) Xuất hình: Từ khóa: PRINT*, WRITE(*,*) ! Dấu (*,*) options từ khóa Write, ! dùng để ghi file format liệu Ví dụ 2: tong = a+b PRINT*, ‘tổng số a b là’, tong ! Write(*,*) ‘tổng số a b là’, tong 2.2 Đọc, ghi liệu file a) Mở file: Từ khóa OPEN(unit=i,file=‘filename’,status=‘xxx’,action=‘yyy’) Trong i mã số file (kiểu integer), filename tên file (kiểu character), xxx=unknown, replace, old, new, …, yyy=read, write, readwrite b) Đọc từ file: Từ khóa: READ(unit=i, ‘(fmt)’) data cần đọc c) Ghi file: Từ khóa: WRITE(unit=i,’(fmt)’) data cần ghi d) Đóng file: Từ khóa CLOSE(i) Ví dụ: OPEN(unit=1,file=‘fileread.txt’,status=‘old’,action=‘read’) OPEN(unit=2,file=‘filewrite.txt’,status=‘new’,action=‘write’) READ(1,’(3(f6.3))’)a,b,c d=a+b+c WRITE(2,’(i5)’) d CLOSE(1); CLOSE(2) Các phép toán Các phép toán Cộng Trừ Nhân Chia Lũy thừa + - * / ** Các phép phép toán quan hệ Nhỏ Nhỏ Bằng Lớn Lớn < LT GT >= GE Các phép toán logic Phủ định Và Hoặc NOT .AND .OR *Thứ tự ưu tiên phép toán ** *, / +, - NOT .OR .AND Các hàm thông dụng Từ khóa: Chức năng: INT(x) NINT(x) REAL(x) ABS(x) SQRT(x) EXP(x) LOG(x), LOG10(x) SIN(x), COS(x), TAN(x) MOD(x,y) MAX(x1,x2,…,xn) MIN(x1,x2,…,xn) Phần nguyên x Làm tròn x thành số nguyên Chuyển x thành số thực Giá trị tuyệt đối x Căn bậc x Tính ex Tính lnx, log10x Sin, cos, tan Phần dư phép chia x cho y GTLN dãy n số GTNN dãy n số Lệnh điều kiên IF Cấu trúc: IF (Điều kiện 1) THEN Lệnh thực ELSEIF (Điều kiện 2) THEN Lệnh thực ELSE Lệnh thực END IF Ví dụ: IF (a > b) THEN x=a ELSEIF (a == b) THEN x = 0.0 ELSE x=b ENDIF Bắt đầu ĐK1 Đ Lệnh A Kết thúc S ĐK2 S ĐK Đ Lệnh B Lệnh N Vòng lặp DO 1. Vòng lặp xác định: DO var=start,end,step Lệnh thực END DO Vòng lặp không xác định: DO WHILE (điều kiện) Lệnh thực ENDDO Ví dụ 1: Tính 10! gt=1 DO i=1,10 gt=gt*i ENDDO gt=1 DO WHILE (i