Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 16 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
16
Dung lượng
160,79 KB
Nội dung
Những yếu tố Fortran Những yếu tố Fortran Bởi: PGS TS NGƯT Phạm Văn Huấn Dữ liệu cách biểu diễn liệu Fortran Fortran thao tác với sáu loại (kiểu) liệu thường gặp thực tế là: số nguyên, số thực, số phức, số thực độ xác gấp đôi, giá trị lôgic liệu văn Trong chương ta làm quen với liệu kiểu số nguyên, số thực, giá trị lôgic văn (chuỗi ký tự) Số nguyên liệt số thập phân với dấu +, ? dấu Thí dụ: ; ; ?400 ; +1234 Các số nguyên biểu diễn dạng I Giá trị cực đại số nguyên gọi khả biểu diễn số nguyên máy tính Trong Fortran có hai dạng biểu diễn số thực Dưới dạngF số thực gồm phần nguyên phần thập phân, cách dấu chấm Số thực có dấu dấu +, ? dấu Nếu phần nguyên phần thập phân không, không cần viết phần Dấu chấm thập phân thiết phải có mặt Thí dụ: ?2.583 ; 14.3 ; 0.8 ; 12 ; ; 14 Giá trị cực đại số chữ số có nghĩa cực đại dạng F phụ thuộc vào dạng, hay kiểu (kind) khai báo số thực DạngE biểu diễn số thực thành hai phần: phần thực nằm khoảng từ 0,1 đến 1,0 phần bậc Bậc bắt đầu chữ E, tiếp sau nguyên gồm không hai chữ số thập phân, có dấu không dấu Thí dụ số 25000 viết dạng E 0.25E05 Số chữ số có nghĩa phần thực nguyên tùy thuộc loại số thực khai báo 1/16 Những yếu tố Fortran Hằng với độ xác gấp đôi (dạng D) viết số với dấu chấm thập phân, chứa từ đến 16 chữ số có nghĩa, số dạng mũ với chữ D thay E, phần thực chứa tới 16 chữ số có nghĩa Thí dụ: 2.71828182 ; 0.27182818D+1 Trị tuyệt đối cực đại số thực thường độ xác gấp đôi 10 −79 đến 1075 Số phức biểu diễn cặp thực dấu ngoặc đơn cách dấu phảy Thí dụ (2.1, 0.5E2) biểu diễn số phức 2,1 + 50i toán học Hai số dấu ngoặc ứng với phần thực phần ảo phải độ xác biểu diễn Các giá trị liệu văn dùng để biểu diễn đoạn văn tên đại lượng, khái niệm, thí dụ cụm chữ "Toc do", "Temperature", "BAO CAO SO 1" Người ta gọi liệu văn liệu ký tự, xâu ký tự, liệu chữ Các chữ số 1, 2, , 9, dùng với tư cách để biểu diễn giá trị số tương ứng chúng liệu kiểu văn Dữ liệu lôgic dùng để khả có hay không kiện, hay sai biểu thức quan hệ Người ta dùng hai giá trị lôgic TRUE FALSE để hai trạng thái đối lập thí dụ ngôn ngữ Fortran xử lý với giá trị lôgic, tức thực phép tính giá trị lôgic toán học thực Sở dĩ máy tính làm việc thấy xử lý thông tin, so sánh, tính toán với kiểu liệu đưa kết luận, thông báo Tất thông tin gặp đời sống thực tế biểu diễn liệu kiểu kiểu khác Trên kiểu liệu ngôn ngữ lập trình Fortran Sau chương khác, thấy có kiểu liệu khác tổ chức dựa kiểu liệu vừa trình bày Ở cần lưu ý khái niệm liệu máy tính số nguyên, số thực nói chung giống với khái niệm tương ứng đời sống toán học Nhưng đồng thời có nét khác biệt Thí dụ, Fortran hiểu tính toán với số nguyên loại thường không lớn ⋅ 109, ngôn ngữ lập trình Pascal làm việc với số nguyên không lớn 32767 không nhỏ ?32768, hàng ngày viết giấy tính toán phép tính với số nguyên có giá trị tùy ý Tình hình tương tự số 2/16 Những yếu tố Fortran thực Vậy máy tính có giới hạn định việc biểu diễn số, số máy tính biểu diễn tính toán Tuy nhiên, với giới hạn nay, Fortran cho phép lập chương trình để tính toán, xử lý với tất giá trị số gặp đời sống khoa học kỹ thuật Hằng biến Máy tính xử lý liệu hay thực tính toán với đại lượng Tất đại lượng phải lưu giữ máy tính Những đại lượng không đổi suốt trình thực chương trình gọi hằng, đại lượng nhận giá trị khác gọi biến Với biến, nhớ máy tính giành địa để lưu giá trị Tên ký hiệu quy ước địa Tên biến tên Tên biến Fortran chuẩn biểu diễn tập hợp từ đến chữ bảng chữ la tinh (26 chữ cái) chữ số 0, 1, , 9, phải bắt đầu chữ Trong chương trình tên biến không trùng Trong phiên Fortran nay, để dùng làm tên không phân biệt chữ hoa chữ thường Ngoài ra, vài ký tự khác dùng để cấu tạo tên Phiên Fortran 90 cho phép đặt tên với số ký tự dài tên có số ký tự khác Tuy nhiên, sinh viên nên tập thói quen đặt tên gọn gàng theo Fortran chuẩn, tập hợp ký tự đủ để mô tả toán, kể toán lớn phức tạp Thí dụ, tên sau X ; A ; X1 ; B2T5 ; SOHANG ; SUM hợp lệ, tên sau sai: 1NGAY ; HE SO ; B*T tên thứ ký tự chữ số, tên thứ hai có ký tự dấu cách, tên thứ ba có ký tự (*) ký tự dùng để đặt tên Quy tắc đặt tên biến áp dụng tên chương trình, tên hằng, tên chương trình tên file (Riêng với tên file có thêm phần mở rộng gồm không ba chữ chữ số ngăn với phần tên dấu chấm) Mô tả (khai báo) kiểu biến kiểu Kiểu biến tương ứng với kiểu liệu mà biểu diễn Các biến nguyên biểu diễn liệu số nguyên, biến thực - số thực Trong chương trình phải rõ biến 3/16 Những yếu tố Fortran sử dụng biểu diễn liệu kiểu (nguyên, thực, lôgic, phức, văn bản, số thực độ xác thường hay độ xác gấp đôi ) Mỗi biến lưu giữ giá trị kiểu Một biến mô tả kiểu số nguyên dùng để lưu giá trị số thực hay giá trị lôgic Cách mô tả ẩn dùng biến nguyên thực: dùng tên biến nguyên bắt đầu sáu chữ I, J, K, L, M, N, tên biến thực bắt đầu chữ sáu chữ Nói chung, người học lập trình không nên dùng cách mô tả ẩn Cách mô tả dùng lệnh mô tả INTEGER, REAL, CHARACTER, LOGICAL, DOUBLE PRECISION, COMPLEX để kiểu liệu mà biến biểu diễn Dưới quy tắc viết lệnh mô tả kiểu liệu: nguyên, thực, lôgic, phức, thực độ xác gấp đôi ký tự văn bản: INTEGER D anh sách biến nguyên REAL D anh sách biến thực LOGICAL D anh sách biến lôgic COMPLEX D anh sách biến phức DOUBLE PRECISION D anh sách biến độ xác đôi CHARACTER D anh sách biến ký tự Trong danh sách biến liệt kê tên biến, có biến biến phải cách dấu phảy Thí dụ: INTEGER I, TT, DEM REAL X1, APSUAT, MAX, TIME, DELTA COMPLEX P1, P2, SOPH biến I, TT, DEM biểu diễn giá trị số nguyên, biến X1, APSUAT, MAX, TIME, DELTA biểu diễn giá trị số thực, ba biến P1, P2, SOPH - số phức Những giá trị giữ nguyên quán suốt chương trình (tức số) thường gán vào địa nhớ thông qua tên lệnh khai báo có dạng: 4/16 Những yếu tố Fortran PARAMETER (ten1 = biểu thức 1, tên = biểu thức 2, ) Thí dụ, chương trình ta nhiều lần dùng đến giá trị số π = 3,141593 ta gán giá trị 3,141593 cho tên PI lệnh PARAMETER (PI = 3.141593) Lệnh sau PARAMETER (HSMSD = 0.0026, RO = 1.0028) khai báo hai số: HSMSD RO, HSMSD gán giá trị 0,0026, RO gán giá trị 1,0028 Trong chương trình tất lệnh khai báo (mô tả) vừa giới thiệu thuộc loại lệnh không thực chúng phải nằm đầu chương trình, trước tất lệnh thực Khái niệm tên, kiểu liệu biến, khái niệm bản, quan trọng ngôn ngữ lập trình Ở đầu mục nói tên thực chất ký hiệu quy ước địa nhớ máy tính để lưu giá trị Lệnh khai báo biến đặt tên cho địa nhớ quy định địa lưu giữ liệu kiểu Còn cụ thể ô nhớ có chứa giá trị chưa hay chứa giá trị tùy thuộc vào lệnh thực chương trình, đoạn chương trình Điều giống ta quy ước định ngăn tủ văn phòng để chuyên giữ công văn, ngăn có công văn hay không, có công văn tùy thuộc lúc hay lúc khác Dưới nêu thí dụ để minh họa ý nghĩa việc đặt tên biến mô tả kiểu (dữ liệu) biến, đồng thời theo dõi giá trị biến thời điểm chương trình Giả sử ta viết chương trình để tính diện tích s hình tam giác giá trị độ dài đáy b 5,0 cm, chiều cao h 3,2 cm, in kết tính lên hình Chương trình sau thực việc đó: REAL DAY, CAO ! (1) DAY = 5.0 ! (2) CAO = 3.2 ! (3) DAY = 0.5 * DAY * CAO ! (4) PRINT *, ‘DIEN TICH TAM GIAC BANG’, DAY ! (5) 5/16 Những yếu tố Fortran END ! (6) Trong chương trình có sáu lệnh Lệnh (1) khai báo hai biến tên DAY CAO dự định để lưu giá trị số thực tương ứng đáy b chiều cao h tam giác Lệnh (2) gán giá trị b = 5,0 (cm) cho biến DAY Lệnh (3) gán giá trị h = 3,2 (cm) cho biến CAO Lệnh (4) tính giá trị biểu thức 0,5 × b × h, tức diện tích s tam giác, (cm2) gán cho biến DAY Lệnh (5) in lên hình dòng chữ DIEN TICH TAM GIAC BANG sau giá trị biến DAY Lệnh (6) lệnh kết thúc chương trình Sinh viên học lập trình thường không hiểu lệnh thứ năm, thấy in diện tích hình tam giác mà lại in giá trị biến DAY Trong đầu họ quen nghĩ khai báo DAY có nghĩa DAY độ dài cạnh đáy tam giác Nhưng hiểu lệnh (1) khai báo REAL DAY, CAO thực dự định dùng hai tên DAY CAO để lưu số thực, không cần biết số thực Ở chương trình trên, lệnh (2) thực xong biến DAY (trong ô nhớ có tên DAY) thực có số 5,0, tức độ dài đáy tam giác Nhưng chương trình chạy xong lệnh (4) biến DAY số 8,0 số 5,0 Và thực xong lệnh (5) hình in giá trị diện tích tam giác Nắm vững điều có nghĩa hiểu ý nghĩa biến, tên biến làm việc chương trình, tức giá trị lưu máy tính chương trình chạy Dưới hai lời khuyên có lẽ quan trọng sinh viên học lập trình: 1) Sau tìm hiểu xong toán cần giải, phải cân nhắc đại lượng toán có kiểu liệu số nguyên, số thực, ký tự văn để đặt tên khai báo kiểu cho Kinh nghiệm cho thấy sinh viên viết lệnh khai báo hệ thống tên biến đúng, vừa đủ, sáng sủa phần khai báo đầu chương trình thường sau viết chương trình Còn sinh viên đặt tên cho biến, vừa bắt tay vào soạn thảo chương trình loay hoay với lệnh mở file liệu, tính kia, thường không hiểu không làm tập 2) Nên tuân thủ cách đặt tên Fortran chuẩn Ta có quyền chọn chữ cái, chữ số để tạo thành tên tùy ý, song nên đặt tên có tính gợi nhớ đến đại lượng tương ứng tập Thí dụ, với toán vừa nói tới mục ta có ba đại lượng là: độ dài cạnh đáy, đường cao diện tích tam giác Nên khai báo tên ba biến tương ứng ba từ tắt tiếng Việt với lệnh sau: REAL DAY, CAO, DTICH ba từ tắt tiếng Anh với lệnh: REAL BASE, HEIGHT, SQRE 6/16 Những yếu tố Fortran ba chữ đầu đề tập với lệnh: REAL B, H, S lời khai báo đúng, dễ hiểu, lời khai báo có lẽ tốt nhất, lời khai báo sau ngắn gọn Còn với mục đích khai báo mà dùng lệnh sau không sai, hoàn toàn không nên, dễ gây nhầm lẫn, mệt mỏi kiểm tra chương trình: REAL X, IC, DT Biến có số (mảng) Khái niệm mảng Mảng tập hợp có xếp đại lượng ký hiệu tên Các thành phần tập hợp gọi phần tử mảng Mỗi phần tử xác định theo tên mảng vị trí phần tử mảng, tức trị số số Tên mảng đặt tuân theo quy tắc tên biến Các số nằm dấu ngoặc đơn có số số phải cách dấu phảy Thí dụ: A(1), A(2), A(3) tương ứng với cách viết thông thường cho biến a1,a2,a3 toán học Vậy ta đặt cho tập hợp giá trị tên chung A, để giá trị thứ ta thêm số vào tên - A(1), để giá trị thứ hai ta thêm số - A(2) để giá trị thứ ba ta thêm số - A(3) Tương tự, phần tử ma trận hai chiều đại số ( a11 a12 a13 a21 a22 a23 ) viết Fortran A(1,1), A(1,2), A(1,3), A(2,1), A(2,2), A(2,3) (chỉ số thứ - số hiệu dòng, số thứ hai - số hiệu cột) Thêm thí dụ mảng Một năm có 12 tháng, tháng có tên, thí dụ tiếng Việt: Tháng Giêng, Tháng Hai, , Tháng Mười hai, tiếng Anh: January, February, , December Ta hoàn toàn gộp 12 tên tiếng Anh tháng năm vào thành mảng có tên chung EMONTH Vậy mảng EMONTH mảng có 12 giá trị (12 phần tử), phần tử từ tên tháng Khi nói đến January tức nói tới giá trị thứ mảng EMONTH, ta viết EMONTH(1), nói đến December nói tới giá trị thứ 12 mảng EMONTH, ta viết EMONTH(12) 7/16 Những yếu tố Fortran Trong Fortran IV, phiên trước ngôn ngũ Fortran, cho phép dùng mảng tối đa số Chiều mảng ứng với số số,còn kích thước mảng ứng với số phần tử chứa mảng Chỉ số mảng xác định biến nguyên dương với trị số lớn Cũng số xác định biểu thức số học Nếu dùng biểu thức kiểu thực, sau tính giá trị biểu thức, giá trị số thực chuyển thành số nguyên, tức cắt bỏ phần thập phân Trong mục 2.1 nói kiểu liệu Mỗi biến kiểu liệu thời điểm chạy chương trình lưu (chứa) giá trị Bây ta thấy mảng thí dụ kiểu liệu cấu tạo từ kiểu - biến mảng thời điểm lưu nhiều giá trị số nguyên, số thực, chuỗi ký tự Nhưng cần lưu ý tất phần tử mảng, tức tất giá trị mảng phải có kiểu liệu Thí dụ với mảng EMONTH vừa xét, ta đưa giá trị ký tự January vào phần tử EMONTH(1) số thực 1.27 vào EMONTH(2) Mảng yếu tố quan trọng Fortran Sau ta thấy sử dụng mảng ngôn ngữ lập trình giúp viết đoạn chương trình ngắn gọn, sáng Đặc biệt vòng lặp, vài dòng lệnh khiến máy tính thực nhiều triệu phép tính số học Mô tả mảng Mô tả mảng thực đầu chương trình chứa thông tin tên, chiều kích thước mảng với toán tử DIMENSION: DIMENSION A(n1,n2, ,nℓ),MAT(m1,m2, ,mk) A, MAT- tên mảng; n1,n2, ,nℓ,m1,m2, ,mk − giới hạn số ? nguyên dương (giới hạn không cần định mô tả) Theo mô tả này, máy tính giành nhớ vùng địa để lưu tất phần tử mảng Các phần tử mảng nhiều chiều lưu liên tiếp cho số thứ biến đổi nhanh nhất, số sau biến đổi chậm Có thể mô tả mảng lệnh mô tả kiểu biến thông thường, thí dụ: REAL MAX, L(7), A(20,21) Trong lệnh mô tả biến MAX khai báo biến số thực, gọi biến đơn, mảng L (biến có số) mảng chiều với phần tử số thực, mảng A mảng 8/16 Những yếu tố Fortran hai chiều (hai số) với giới hạn số thứ 20, số thứ hai 21, gồm 420 phần tử Vì giới hạn số (kích thước mảng) phải định trước phần khai báo nguyên dương, biến, nên thực tiễn lập trình phải ý cân nhắc chọn giới hạn số cho chúng không lớn làm tốn nhớ, phải vừa đủ để biểu diễn hết phần tử có mảng Thí dụ cần biểu diễn bảng số giá trị nhiệt độ trung bình tháng 100 năm ta khai báo mảng TEM(100,12) hợp lý Nếu dự định giải hệ phương trình đại số tuyến tính không 20 phương trình, ta nên khai báo mảng REAL A(20,21), X(20) vừa đủ để biểu diễn ma trận hệ số ai,j (kể hệ số tự do) nghiệm xi Với mảng EMONTH vừa nhắc mục lệnh khai báo sau: CHARACTER*9 EMONTH(12) hoàn toàn hợp lý năm có 12 tháng tên tháng dài (với tiếng Anh) September gồm chữ Các hàm chuẩn Một số phép tính lấy bậc hai số, tính trị tuyệt đối số, tính hàm sin góc thường xuyên gặp nhiều thuật toán, nên xây dựng sẵn thành hàm gọi hàm riêng có Fortran (intrinsic functions) hay gọi hàm chuẩn Bảng 2.1 liệt kê số hàm chuẩn Fortran thường dùng sách Mỗi hàm chuẩn có tên Tên hàm tiếp nối với đầu vào, gọi đối số hàm, nằm cặp dấu ngoặc đơn Đối số hàm chuẩn hằng, biến, hay biểu thức Nếu hàm có nhiều đối số đối số viết cách dấu phảy Khi cho giá trị cụ thể vào đối số hàm tính giá trị hàm Vì hàm thường dùng để tính giá trị để gán vào biến khác, người ta gọi gọi hàm để tính Hàm mặt bên trái dấu ‘ = ’ lệnh gán Thí dụ, lệnh sau gọi hàm để tính số giá trị: S = SIN (0.5) TG = TAN (S) C = COS (ANGLE * 3.141593 / 180.0) 9/16 Những yếu tố Fortran Một số hàm chuẩn Fortran Tên hàm đối số Giá trị hàm SQRT (X) √x Căn bậc hai x ABS (X) ∣x∣ Trị tuyệt đối x SIN (X) sin(x)x tính rađian COS (X) cos(x)x tính rađian TAN (X) tg(x)x EXP (X) exe LOG (X) ln(x) Logarit tự nhiên x LOG10 (X) lg(x) Logarit số 10 x INT (X) Chuyển phần nguyên số thực x thành số nguyên REAL (I) Giá trị thực I (chuyển giá trị nguyên thành giá trị thực) MOD (I,J) Lấy phần dư nguyên phép chia hai số I / J tính rađian nâng lên luỹ thừa x Trong lệnh thứ ta gửi giá trị 0,5 (rađian) cho đối số hàm SIN để tính giá trị sin góc 0,5 gán giá trị cho biến S Trong lệnh thứ hai, ta gửi giá trị biến S vào đối số hàm TAN để tính tang Còn lệnh thứ ba, ta gửi biểu thức vào đối số hàm COS để tính giá trị côsin góc có độ lớn giá trị biểu thức Trong trường hợp này, máy tính trước hết phải tính (ước lượng) giá trị biểu thức đối số, sau tính côsin theo giá trị nhận Thấy hàm biểu diễn giá trị Giá trị dùng tính toán khác lưu địa nhớ khác Một hàm chuẩn làm đối số hàm chuẩn khác: XLG = LOG(ABS(X)) Trong Fortran có số hàm chuẩn cho giá trị với kiểu kiểu với đối số mình, chúng gọi hàm tự sinh (generic function) Thí dụ hàm ABS(X), đối số X số nguyên giá trị hàm ABS(X) số nguyên, X số thực ABS(X) số thực Một số hàm định kiểu đầu vào đầu Thí dụ hàm IABS hàm đòi hỏi đối số nguyên cho giá trị tuyệt đối số nguyên Danh sách đầy đủ hàm chuẩn Fortran dẫn phụ lục Khi dùng hàm chuẩn phải đọc kỹ lời mô tả xem tính giá trị gì, điều kiện đối số Thí dụ hàm lượng giác phải dùng đối số rađian, ta cho giá trị đối số độ kết tính sai 10/16 Những yếu tố Fortran Lệnh gán toán tử số học Lệnh gán Các tính toán Fortran định lệnh gán với dạng tổng quát sau: Tên biến = Biểu thức Bên trái dấu lệnh gán (dấu =) tên biến Biểu thức bên phải hằng, biến, biểu thức số học gồm toán tử số học (bảng 2.2) thực toán hạng hằng, biến hàm chuẩn hay biểu thức lôgic Khi thực lệnh gán, trước hết máy ước lượng (tính) giá trị biểu thức bên phải, gán giá trị cho biến bên trái, tức lưu giá trị tính biểu thức bên phải vào địa nhớ có tên biến bên trái Kiểu liệu biến biểu thức phải phù hợp Thí dụ lệnh gán: PI = 3.141593 S = PI * BKINH **2 I = I +1 Lệnh thứ gán số 3,141593 cho biến có tên PI Lệnh thứ hai gán giá trị biểu thức PI × (BKINH)2 cho biến có tên S Lệnh thứ ba lấy giá trị biến I cộng thêm đơn vị lại gán cho biến I Ở nói, kiểu liệu biến biểu thức phải phù hợp Trường hợp biến bên trái biến thực, biểu thức bên phải giá trị nguyên máy tính chuyển giá trị nguyên thành giá trị thực (số thực với phần thập phân không) gán cho biến Khi biến bên trái biến nguyên, biểu thức bên phải có giá trị thực, máy tính cắt bỏ phần thập phân giá trị thực, đổi số thực nhận thành số nguyên gán cho biến nguyên Các trường hợp gán sai khác chương trình dịch báo lỗi Không nên quan niệm lệnh gán dấu toán học Các phép tính số học đơn giản Các phép tính số học hay gọi toán tử số học gồm có phép tính cộng, trừ, nhân, chia nâng lên luỹ thừa ký hiệu toán tử Fortran bảng 2.2 11/16 Những yếu tố Fortran Gọi phép tính số học toán hạng phép tính giá trị số, thí dụ số nguyên, số thực, số phức Sau thấy máy tính tính toán với giá trị kiểu khác giá trị lôgic, giá trị văn Các phép tính số học Phép tính Dạng đại số Trong Fortran Cộng A+B A+B Trừ A−B A?B Nhân A×B A*B Chia A B A/B Luỹ thừa A3 A** Ước lượng biểu thức số học Khi tính giá trị biểu thức số học, biểu thức gồm nhiều phép tính đơn, máy tính toán phép tính đơn để nhận kết trung gian, sau tính giá trị cuối biểu thức gọi ước lượng Mức ưu tiên ước lượng giá trị biểu thức số học gồm nhiều phép tính đơn nêu bảng 2.3 Nếu dấu âm đứng trước tên biến biểu thức, tính với mức ưu tiên phép trừ Thí dụ: ?A**2 ?(A**2), ?A*B ?(A*B) ?A+B (?A)+B Mức ưu tiên phép tính số học Ưu tiên Phép tính Dấu ngoặc Nâng lên luỹ thừa Nhân chia Cộng trừ Khi phép tính mức ưu tiên tất phép tính thực từ trái sang phải, thí dụ: B ? C + D ước lượng (B ? C) + D Riêng phép nâng lên luỹ thừa thực từ phải sang trái: 12/16 Những yếu tố Fortran A ** B ** C ước lượng A ** (B ** C) Thí dụ: 2**3**2 29 hay 512 (2**3)**2 = 82 = 64 Khái niệm cắt phép tính hỗn hợp Khi phép tính số học thực với hai số thực đưa kết giá trị thực Thí dụ, tính chu vi hình tròn với đường kính DKINH số thực, ta dùng hai lệnh sau: CHUVI = PI * DKINH CHUVI = 3.141593 * DKINH Phép tính số học hai số nguyên cho kết số nguyên Thí dụ, cho hai số nguyên I J, I nhỏ J, tính số số nguyên INTERV nằm khoảng [I, J] thực lệnh: INTERV = J ? I + Giả sử SIDE biểu diễn giá trị thực LENGTH biểu diễn giá trị nguyên Bây xét lệnh: LENGTH = SIDE * 3.5 Phép tính nhân hai giá trị thực cho kết số thực Tuy nhiên, giá trị thực lưu vào biến nguyên Khi máy tính bỏ qua phần thập phân lưu phần nguyên số thực; kiểu làm tròn gọi cắt, khác với làm tròn thông thường cho kết số nguyên gần với giá trị số thực Khi phép tính số học thực biến có kiểu khác (hỗn hợp) thường cho kết bất ngờ Ta xét thí dụ tính thể tích V hình cầu bán kính thực R Nếu dùng lệnh: V = (4/3)*3.141593*R**3 ta thu kết sai nguyên nhân phép chia hai số nguyên 4/3 cho giá trị trung gian 1, 1,333333 Do đó, lệnh để tính V là: V = (4./3.)*3.141593*R**3 13/16 Những yếu tố Fortran Vì phép tính hỗn hợp cho kết bất ngờ, ta nên cố gắng tránh dùng biểu thức số học có phép tính hỗn hợp Khái niệm số bé số lớn (underflow overflow) Vì giá trị lớn bé lưu biến tùy thuộc vào hệ máy tính, phép tính đưa kết lớn bé Xét thí dụ sau: 1) X = 0.25E20 2) A = 0.25E?20 Y = 0.10E30 B = 0.10E+20 Z=X*YC=A/B Kết số phép nhân thí dụ 0.25E49, rõ ràng lớn, không lưu giữ máy tính với bậc cực đại 38, kết số phép chia thí dụ 0.25E?49 bé Trong trường hợp lệnh Fortran hoàn toàn đúng, lỗi phát sinh chạy chương trình Các lỗi bậc lớn bé thường bị gây lỗi đoạn trước chương trình, thí dụ biến chưa gán giá trị lại có mặt biểu thức số học Bài tập Hãy biểu diễn thành dạng F dạng E số thực sau: a) 3,14 b) 3,141593 c) 0,0026 d) 2,5 × 103 e) ?14,0 f) 28,34 g) 6,023 × 1023 Xác định tên sai tên sau đây: a) AVERG b) PTBACHAI c) REAL d) 2LOG đ) GPTB2 e) HS-A1 f) X1 g) THANG*1 h) MONTH2 Viết thành dạng Fortran biểu thức tính sau đây: a) Thể tích V hình cầu theo công thức V = πR3 ( R − bán kính) b) Hai nghiệm x1 x2 phương trình bậc hai 14/16 Những yếu tố Fortran x1,2 = − b ± √b2 − 4ac 2a ( a,b,c − hệ số phương trình) c) Giá trị hàm y = 12 sin2xcos(2x − ) (khi x cho độ) d) Giá trị hàm mật độ phân bố Gauss F(x) = x2 − 2π e e) Thêm đơn vị vào biến nguyên I lưu vào biến I f) Khoảng cách DIST hai điểm A B biết toạ độ tương ứng hai điểm (xa,ya),(xb,yb) Ước lượng giá trị biểu thức Fortran sau đây: 4/3*3.141593*(3/2)**3 SQRT (I+I/2) (nếu I = 1) SIN ((30/180)*PI) (nếu PI = 3.141593) COS (60/180*3.141593) Hãy đọc xác ngôn ngữ Fortran lệnh viết đây: a) I = I + K +1 b) SS = 0.5 * SIN (A*3.1416 / 180.) c) ERR = ABS (X1 - X2) Hai đoạn chương trình sau nhằm tính trị số trung bình A ba số nguyên i1 = 1,i2 = 2,i3 = in kết lên hình Hãy thử xem kết có không Nếu thấy sai khắc phục cách nào? a) I1 = I2 = I3 = PRINT , (I1 + I2 + I3)/3 FORMAT (1X, ' A = ',F4.1) 15/16 Những yếu tố Fortran b) I1 = I2 = I3 = PRINT 2, 1/3*(I1+I2+I3) FORMAT (3X, F4.1) Giả sử cung địa lý (tám cung) đánh số hiệu theo qui ước sau: - bắc; - đông bắc; - đông; - đông nam; - nam; - tây nam; - tây; - tây bắc Hướng gió quan trắc 165o Hãy viết biểu thức Fortran để tính số hiệu cung hướng gió 16/16 [...]... toán tử trong Fortran như trong bảng 2.2 11/16 Những yếu tố cơ bản của Fortran Gọi là những phép tính số học bởi vì các toán hạng của các phép tính là những giá trị số, thí dụ số nguyên, số thực, số phức Sau này chúng ta sẽ thấy máy tính có thể tính toán với những giá trị kiểu khác như giá trị lôgic, giá trị văn bản Các phép tính số học Phép tính Dạng đại số Trong Fortran Cộng A+B A+B Trừ A−B A?B... 14/16 Những yếu tố cơ bản của Fortran x1,2 = − b ± √b2 − 4ac 2a ( a,b,c − các hệ số của phương trình) c) Giá trị hàm y = 12 sin2xcos(2x − ) (khi x cho bằng độ) d) Giá trị hàm mật độ phân bố Gauss F(x) = x2 1 − 2 2π e e) Thêm một đơn vị vào biến nguyên I và lưu vào biến I f) Khoảng cách DIST giữa hai điểm A và B nếu biết các toạ độ tương ứng của hai điểm đó là (xa,ya),(xb,yb) 4 Ước lượng giá trị của các.. .Những yếu tố cơ bản của Fortran Lệnh gán và các toán tử số học Lệnh gán Các tính toán trong Fortran có thể chỉ định bằng lệnh gán với dạng tổng quát như sau: Tên biến = Biểu thức Bên trái dấu lệnh gán (dấu =) là tên một biến Biểu thức bên phải có thể là một hằng, một biến, một biểu thức số học gồm các toán tử số học (bảng 2.2) thực hiện giữa các toán hạng là... FORMAT (1X, ' A = ',F4.1) 15/16 Những yếu tố cơ bản của Fortran b) I1 = 1 I2 = 2 I3 = 3 PRINT 2, 1/3*(I1+I2+I3) 2 FORMAT (3X, F4.1) 7 Giả sử các cung địa lý (tám cung) được đánh số hiệu theo qui ước như sau: 1 - bắc; 2 - đông bắc; 3 - đông; 4 - đông nam; 5 - nam; 6 - tây nam; 7 - tây; 8 - tây bắc Hướng gió quan trắc được bằng 165o Hãy viết biểu thức Fortran để tính số hiệu cung của hướng gió đó 16/16 ... phép chia hai số nguyên 4/3 cho giá trị trung gian bằng 1, không phải 1,333333 Do đó, lệnh đúng để tính V sẽ là: V = (4./3.)*3.141593*R**3 13/16 Những yếu tố cơ bản của Fortran Vì các phép tính hỗn hợp đôi khi cho kết quả bất ngờ, ta nên cố gắng tránh dùng những biểu thức số học có phép tính hỗn hợp Khái niệm về số quá bé và số quá lớn (underflow và overflow) Vì các giá trị lớn nhất và bé nhất có thể... F và dạng E những số thực sau: a) 3,14 b) 3,141593 c) 0,0026 d) 2,5 × 103 e) ?14,0 f) 28,34 g) 6,023 × 1023 2 Xác định những tên sai trong những tên sau đây: a) AVERG b) PTBACHAI c) REAL d) 2LOG đ) GPTB2 e) HS-A1 f) X1 g) THANG*1 h) MONTH2 3 Viết thành dạng Fortran những biểu thức tính sau đây: a) Thể tích V của hình cầu theo công thức 4 V = 3 πR3 ( R − bán kính) b) Hai nghiệm x1 và x2 của phương trình... mức ưu tiên thì tất cả các phép tính được thực hiện từ trái sang phải, thí dụ: B ? C + D được ước lượng bằng (B ? C) + D Riêng phép nâng lên luỹ thừa thì thực hiện từ phải sang trái: 12/16 Những yếu tố cơ bản của Fortran A ** B ** C được ước lượng bằng A ** (B ** C) Thí dụ: 2**3**2 bằng 29 hay 512 chứ không phải là (2**3)**2 = 82 = 64 Khái niệm về cắt và các phép tính hỗn hợp Khi một phép tính số học... Kết quả số của phép nhân trong thí dụ 1 bằng 0.25E49, rõ ràng là có thể quá lớn, không lưu giữ được trong máy tính với bậc cực đại là 38, còn kết quả số của phép chia trong thí dụ 2 bằng 0.25E?49 sẽ quá bé Trong những trường hợp này các lệnh Fortran hoàn toàn đúng, nhưng lỗi sẽ phát sinh khi chạy chương trình Các lỗi do bậc quá lớn hoặc quá bé thường bị gây bởi những lỗi ở những đoạn trước của chương... máy ước lượng (tính) giá trị của biểu thức bên phải, rồi gán giá trị đó cho biến bên trái, tức lưu giá trị tính được của biểu thức bên phải vào địa chỉ nhớ có tên biến bên trái Kiểu dữ liệu của biến và của biểu thức phải phù hợp Thí dụ các lệnh gán: PI = 3.141593 S = PI * BKINH **2 I = I +1 Lệnh thứ nhất gán hằng số 3,141593 cho biến có tên là PI Lệnh thứ hai gán giá trị của biểu thức PI × (BKINH)2... 4 Ước lượng giá trị của các biểu thức Fortran sau đây: 4/3*3.141593*(3/2)**3 SQRT (I+I/2) (nếu I = 1) SIN ((30/180)*PI) (nếu PI = 3.141593) COS (60/180*3.141593) 5 Hãy đọc chính xác bằng ngôn ngữ Fortran những lệnh viết dưới đây: a) I = I + K +1 b) SS = 0.5 * SIN (A*3.1416 / 180.) c) ERR = ABS (X1 - X2) 6 Hai đoạn chương trình sau nhằm tính trị số trung bình A của ba số nguyên i1 = 1,i2 = 2,i3 = 3 ... giá trị thứ 12 mảng EMONTH, ta viết EMONTH(12) 7/16 Những yếu tố Fortran Trong Fortran IV, phiên trước ngôn ngũ Fortran, cho phép dùng mảng tối đa số Chiều mảng ứng với số số,còn kích thước mảng... học gồm có phép tính cộng, trừ, nhân, chia nâng lên luỹ thừa ký hiệu toán tử Fortran bảng 2.2 11/16 Những yếu tố Fortran Gọi phép tính số học toán hạng phép tính giá trị số, thí dụ số nguyên,... biến P1, P2, SOPH - số phức Những giá trị giữ nguyên quán suốt chương trình (tức số) thường gán vào địa nhớ thông qua tên lệnh khai báo có dạng: 4/16 Những yếu tố Fortran PARAMETER (ten1 = biểu