Dạng E biểu diễn số thực thành hai phần: phần hằng thực nằm trong khoảng từ 0,1 đến 1,0 và phần bậc. Bậc bắt đầu bằng chữ E , tiếp sau là hằng nguyên gồm không quá hai chữ số thập phân, có thể có dấu hoặc không dấu. Thí dụ số 25000 có thể viết dưới dạng E là 0.25E05. Số chữ số có nghĩa của phần hằng thực và hằng nguyên cũng tùy thuộc loại số thực khai báo. Hằng với độ chính xác gấp đôi (dạng D ) có thể viết như số với dấu...
vào dạng, hay kiểu (kind) khai báo số thực Chương - Những yếu tố Fortran 2.1 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 +, − khơng có 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ạng F 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 +, − khơng có dấu Nếu phần ngun 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 Dạng E 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 ngun gồm khơng q 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 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 10 75 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 + 50 i 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 12 .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 tố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 tố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ịn 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 tốn với số nguyên loại thường không lớn ⋅ 10 , 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 tốn phép tính với số ngun có giá trị tùy ý Tình hình tương tự số 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 tốn Tuy nhiên, với giới hạn nay, Fortran cho phép lập chương trình để tính tốn, xử lý với tất giá trị số gặp đời sống khoa học kỹ thuật 2.2 Hằng biến Máy tính xử lý liệu hay thực tính tố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, cịn đạ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 2.2.1 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 Ngồi ra, cịn 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ự (*) khơng phải 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) 13 2.2.2 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 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ố ngun khơng thể 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ữ ngồi 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 Danh sách biến nguyên REAL Danh sách biến thực LOGICAL Danh sách biến lôgic COMPLEX Danh sách biến phức DOUBLE PRECISION Danh sách biến độ xác đơi CHARACTER Danh 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: 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 14 đị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 để chun giữ cơng văn, cị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 DAY = 5.0 ! (2) CAO = 3.2 ! (3) DAY = 0.5 * DAY * CAO PRINT *, ‘DIEN TICH TAM GIAC BANG’, DAY ! (5) END ! (1) ! (4) ! (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,5 (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 tốn cần giải, phải cân nhắc đại lượng tốn có kiểu liệu số ngun, 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 tố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: 15 REAL BASE, HEIGHT, SQRE 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, hồn tồ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 2.3 Biến có số (mảng) 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 hồn tồ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) 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 2.3.1 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 , a , 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 ⎜⎜ ⎝ a 21 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) a12 a 22 a13 ⎞ ⎟ a 23 ⎟⎠ 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ử 16 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 2.3.2 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 , , nl ), MAT (m1 , m2 , , mk ) A, MAT - tên mảng; n1 , n , , nl , m1 , m2 , , mk − giới 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 q 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ố a i , j (kể hệ số tự do) nghiệm x i 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ữ hạn số − nguyên dương (giới hạn không cần định mô tả) 2.4 Các hàm chuẩn 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 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 cịn gọi hàm chuẩn Có thể mơ tả mảng lệnh mô tả kiểu biến thơng thường, thí dụ: Bảng 2.1 liệt kê số hàm chuẩn Fortran thường dùng sách 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, cị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 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ố 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 khơng có 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ị: 17 S = SIN (0.5) TG = TAN (S) C = COS (ANGLE * 3.141593 / 180.0) Bảng 2.1 Một số hàm chuẩn Fortran Tên hàm đối số Giá trị hàm SQRT (X) x ABS (X) x Căn bậc hai x Trị tuyệt đối x tính rađian x tính rađian x tính rađian SIN (X) COS (X) TAN (X) sin(x ) EXP (X) nâng lên luỹ thừa x ln( x ) Logarit tự nhiên x lg( x ) Logarit số 10 x Chuyển phần nguyên số thực x thành số nguyên Giá trị thực I (chuyển giá trị nguyên thành giá trị thực) Lấy phần dư nguyên phép chia hai số I / J LOG (X) LOG10 (X) INT (X) REAL (I) MOD (I,J) cos(x ) tg ( x) e x x e Thấy hàm biểu diễn giá trị Giá trị dùng tính tố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 2.5 Lệnh gán tốn tử số học 2.5.1 Lệnh gán Các tính tốn Fortran định lệnh gán với dạng tổng quát sau: Tên biến = Biểu thức 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 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 18 Bảng 2.2 Các phép tính số học 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) 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ị ngun 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 ngun, 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 2.5.2 Các phép tính số học đơn giản Các phép tính số học hay cịn gọi tố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 Gọi phép tính số học tố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 tốn với giá trị kiểu khác giá trị lôgic, giá trị văn Phép tính Cộng Trừ Nhân Dạng đại số Trong Fortran A+ B A+B A−B A*B A−B A× B A Chia A/B B Luỹ thừa A A** 3 2.5.3 Ướ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 tố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 Bảng 2.3 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ụ: 19 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: A ** B ** C ước lượng A ** (B ** C) Thí dụ: * *3 * *2 hay 512 (2 * *3) * *2 = 82 = 64 2.5.4 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, khơng phải 1,333333 Do đó, lệnh để tính V là: V = (4./3.)*3.141593*R**3 Vì phép tính hỗn hợp đơi 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 2.5.5 Khái niệm số bé số lớn (underflow overflow) Vì giá trị lớn bé lưu biến tuỳ 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*Y C=A/B Kết số phép nhân thí dụ 0.25E49, rõ ràng q lớn, khơng lưu giữ máy tính với bậc cực đại 38, cịn 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 × 10 20 e) −14,0 g) 6,023 × 10 23 f) 28,34 Hãy đọc xác ngơn ngữ Fortran lệnh viết 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 = π R ( R − bán kính) x1, = − b ± b − 4ac 2a 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, i = 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) b) Hai nghiệm x1 x phương trình bậc hai đây: I1 = I2 = I3 = ( a, b, c − hệ số phương trình) c) Giá trị hàm y = sin x cos(2 x − ) PRINT , (I1 + I2 + I3)/3 (khi x cho độ) d) Giá trị hàm mật độ phân bố Gauss F ( x) = e 2π − x2 b) I1 = I2 = I3 = 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 ( x a , y a ), ( 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) FORMAT (1X, ' A = ',F4.1) 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ó COS (60/180*3.141593) 21 hình Thí dụ, xét đoạn chương trình sau đây: GOC = 30.0 PRINT* , ' Khi X = ', GOC , ' 1/2 SinX = ', 0.5 * SIN (GOC * * 3.141593 / 180.) Chương - Nhập xuất liệu đơn giản 3.1 Các lệnh xuất nhập liệu Máy tính nhập liệu từ nguồn, thiết bị khác Tương tự, ta hướng xuất liệu thiết bị khác Trong chương này, ta xét cách nhập liệu từ bàn phím xuất liệu hình máy in Việc xuất nhập liệu có dùng file liệu xét chương Lệnh xuất liệu định hướng hình: Ghi chú: Trong lệnh PRINT vừa có dấu nối dòng Ở dùng dấu hoa thị bên hình nhữ nhật nhỏ * để phân biệt với dấu hoa thị bình thường ký hiệu phép tính nhân Từ sau sách dịng lệnh có dấu nối dịng quy ước dùng ký hiệu Còn soạn chương trình hình máy tính, nói mục 1.5, cần viết dấu hoa thị vào vị trí thứ dịng lệnh Ta thấy danh sách mục in lệnh PRINT có mục liệt kê theo thứ tự là: 1) Cụm chữ ' Khi X =' 2) Biến có tên GOC lưu giá trị 30° 3) Cụm chữ ' 1/2 SinX =' 4) Biểu thức PRINT * , Danh sách mục in 0.5 * SIN (GOC * 3.141593 / 180.0) Lệnh nhập liệu từ bàn phím: biểu thị nửa sin góc 30° đổi thành rađian READ * , Danh sách biến Như vậy, mục in thứ thứ ba văn bản, mục in thứ giá trị biến số thực GOC mục in thứ tư biểu thức số thực Trước in mục thứ tư, máy tính phải tính giá trị biểu thức (bằng 0,25), sau in giá trị lên hình Kết hình sau: Các mục in lệnh in hằng, biến, biểu thức Nếu danh sách mục in có từ hai mục trở lên, mục phải cách dấu phảy Trong danh sách biến lệnh nhập (đọc) liệu, có biến cần đọc liệu, biến phải liệt kê cách dấu phảy Các mục in dịng hình theo thứ tự liệt kê danh sách Nếu danh sách khơng có mục in nào, máy tính đơn giản xuống dòng Khi X = 30.00000 1/2 SinX = 0.2500000 Hãy ý với lệnh PRINT * mục in cụm 22 liệu văn in ta nhìn thấy dịng lệnh, ký tự một, kể dấu trống Các giá trị biến biểu thức thực in sau khoảng trống số chữ số có nghĩa sau dấu chấm thập phân khác Nếu giá trị biến số nhỏ lớn, máy in giá trị dạng biểu diễn E D (xem mục 2.1) Kiểu in liệu gọi in không định dạng hay in khơng có format Chú ý rằng, READ *, sau dấu phảy danh sách biến, thực lệnh này, máy tính chờ ta gõ từ bàn phím giá trị (các ký tự văn bản, số nguyên, số thực ) tương xứng kiểu với danh sách biến, giá trị cách dấu phảy hay dấu trống, riêng ký tự văn phải nằm cặp dấu nháy (' ') Kết thúc danh sách giá trị phải gõ lệnh phím Enter (↵) Máy tính gán giá trị nhận từ bàn phím vào biến tương ứng danh sách biến lệng READ Nếu ta gõ chưa đủ số giá trị theo danh sách biến, máy chờ ta gõ đủ giá trị kết thúc thực lệnh READ Nếu kiểu liệu gõ vào sai so với kiểu liệu biến, chương trình ngừng thực báo lỗi chạy chương trình Thí dụ lệnh READ * , I , NAM , TEMP , GHICHU địi hỏi ta gõ vào từ bàn phím số nguyên cho biến I, số nguyên cho biến NAM số thực cho biến TEMP, xâu ký tự cho biến văn GHICHU, muốn nhập u cầu ta gõ vào bàn phím sau: 1982 25.36 'SL quan trac' ↵ hay 1,1982,25.36,'SL quan trac' ↵ Lệnh in có quy cách (có định dạng): Cũng giống lệnh in không định dạng, danh sách mục in hằng, biến hay biểu thức cần in theo thứ tự liệt kê Tham số k nguyên dương tới nhãn lệnh FORMAT mô tả quy cách in thông tin vị trí in, khoảng cách mục in, số chữ số thập phân cần in giá trị số thực Dạng tổng quát lệnh FORMAT sau: k FORMAT (Danh sách đặc tả) k nhãn dịng lệnh FORMAT Danh sách đặc tả nằm cặp dấu ngoặc đơn báo cho máy tính biết cách dãn dịng theo chiều thẳng đứng bố trí ký tự dịng thơng tin in Nếu in giấy máy in, tuỳ chọn dãn dịng báo cho máy in điều khiển kéo giấy để in sang đầu trang mới, xuống dòng mới, xuống hai dòng hay in dịng thời Máy tính thiết lập dòng in bên nhớ trước thực in dịng lên giấy Vùng nhớ bên gọi vùng đệm buffer Những ký tự vùng buffer gọi ký tự điều khiển kéo giấy máy in có ý nghĩa sau: Sang trang Dấu trống Xuống dịng Xuống hai dịng + Khơng xuống dòng Bây ta làm quen với đặc tả đơn giản sau Trong chương trở lại vấn đề định dạng phức tạp làm việc với file liệu PRINT k , Danh sách mục in 23 ... 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ử 16 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... 3,141593 c) 0,0 026 d) 2, 5 × 10 20 e) −14,0 g) 6, 023 × 10 23 f) 28 ,34 Hãy đọc xác ngôn ngữ Fortran lệnh viết Xác định tên sai tên sau đây: a) AVERG b) PTBACHAI c) REAL d) 2LOG đ) GPTB2 e) HS-A1 f)... thứ 12 mảng EMONTH, ta viết EMONTH( 12) 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 2. 3.1