1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Introduction to fortran 90

193 6 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

LA VĂN HIỂN GIỚI THIỆU NGÔN NGỮ LẬP TRÌNH Fortran 90 Tài liệu lập trình bản dành cho sinh viên :  Khối khoa học kỹ thuật  Khối khoa học tự nhiên Tà i liệ u được trình bà y dưới hình thức tự họ c Bao gò m cá c nọ i dung bả n nhá t củ a Fortran 90 Thực hà nh lạ p trình ở cuó i mõ i chương Kết hợp phần mềm GNUPLOT để vễ đò thị 05/2020 Lời nói đầu Tài liệu “ Giới thiệu NGÔN NGỮ LẬP TRÌNH Fortran 90 “ được biên soạn nhằm giúp các bạn sinh viên các khối, ngành khoa học kỹ thuật, khoa học tự nhiên quan tâm đến ngôn ngữ Fortran nắm được phương pháp bản để viết văn bản chương trình và chạy các chương trình tính toán bằng Fortran 90, phục vụ yêu cầu học tập , thực hiện các bài tập lớn ,luận văn tốt nghiệp Fortran có lịch sử phát triển lâu đời qua nhiều thế hệ máy tính với các phiên bản khác , đến vẫn là ngôn ngữ có nhiều ưu thế lĩnh vực tính toán số Fortran được xem là ngôn ngữ lập trình rất phố biến đối với các sinh viên, kỹ sư, khoa học gia thuộc các lĩnh vực khoa học , kỹ thuật tại các nước Âu – Mỹ Việc học tập Fortran còn giúp các bạn sinh viên có điều kiện học tập ở nước ngoài , đọc hiểu các chương trình viết bằng ngôn ngữ Fortran được trình bày các sách , tài liệu , bài báo nước ngoài Hai phiên bản Fortran được sử dụng phổ biến nhất hiện là FORTRAN 77 và Fortran 90 , đó phiên bản Fortran 90 được xem là một phiên bản quan trọng lịch sử phát triển Fortran Fortran 90 có rất nhiều điểm mới so với các phiên bản trước văn bản chương trình được phép viết theo kiểu “ định dạng tự “ ( free format ) khác với kiểu “ định dạng cố định theo cột “ ( fixed format ) , các cấu trúc điều khiển , xử lý mảng , xử lý vào / , chương trình , cấp phát động , đơn vị module …tạo nhiều thuận lợi cho người lập trình Từ kiến thức Fortran 90 , bạn có thể dễ dàng tiếp cận phiên bản tiếp theo Fortran 95 , Fortran 2003 (hỗ trợ lập trình hướng đối tượng ) Fortran 2008 Tài liệu này sử dụng các trình biên dịch miễn phí G77/GFortran của GNU Compiler Collection (GCC) và G95 thông qua phần mềm Force 2.0 là một môi trường phát triển tích hợp ( IDE ) gọn nhẹ dùng để viết văn bản chương trình , tiến hành biên dịch , liên kết và chạy thử chương trình Tài liệu giới thiệu thêm trình biên dịch Fortran g95 Silverfrost FTN95 Personal Edition để bạn đọc tham khảo , chạy kiểm chứng chương trình Phần phụ lục giới thiệu tổng quát phần mềm GNUPLOT dùng để vẽ các đồ thị 2D, 3D lấy dữ liệu từ kết quả tính toán của Fortran và một chương trình mẫu bộ LINPACK dùng để giải hệ phương trình tuyến tính là các ví dụ về các tiện ích miễn phí từ các tổ chức phát triển Fortran cung cấp cho người sử dụng Các bạn sinh viên cần tham khảo , sử dụng các chương trình tiện ích rất phong phú đã được lập trình sẵn từ các thư viện Fortran Internet , phục vụ cho việc học tập, nghiên cứu Mặc dù đã cố gắng rà soát kỹ các nội dung tài liệu chạy kiểm tra các chương trình ví dụ khó tránh khỏi có những sai sót hoặc những điểm trình bày chưa phù hợp Tác giả rất mong và xin cám ơn sự đóng góp của các bạn đọc , các bạn sinh viên gần xa để tài liệu ngày càng hoàn thiện Tháng 12 năm 2019 Phiên bản tháng 5-2020 La Văn Hiển Email : hienbk58@yahoo.com hienemmc6@gmail.com CHƯƠNG : GIỚI THIỆU CHUNG VỀ NGƠN NGỮ LẬP TRÌNH FORTRAN 1.1 Sơ lược về lịch sử ngơn ngữ lập trình Fortran 1.1.1 Nguồn gốc Fortran ( hay FORTRAN ) được viết tắt từ cụm từ Mathematical FORmula TRANslating System ( hệ thống dịch công thức toán học ) , là ngơn ngữ lập trình cấp cao đầu tiên , kiểu biên dịch ( compiler ) , John Warner Backus ( 1924 – 2007 ) cùng một nhóm kỹ sư điện tốn tḥc tập đoàn cơng nghiệp máy tính IBM ( International Business Machines ) thiết kế và phát triển từ giữa những năm 50 của thế kỷ XX Ban đầu tên ngôn ngữ được viết là FORTRAN , xu hướng hiện được viết chuẩn hóa thành Fortran ( viết hoa kí tự đầu ) 1.1.2 Phạm vi ứng dụng Ngôn ngữ lập trình Fortran hiện có đầy đủ tính của một ngôn ngữ lập trình cấp cao hiện đại, hỗ trợ nhiều kiểu lập trình , có khả ứng dụng nhiều lĩnh vực khác , nhiên Fortran thích hợp cho các ứng dụng tính tốn số lĩnh vực khoa học kỹ thuật , khoa học tự nhiên và được xem ngôn ngữ lập trình rất phở biến đới với các sinh viên, kỹ sư, khoa học gia thuộc các lĩnh vực nêu tại các nước Âu Mỹ 1.1.3 Các phiên ngôn ngữ Fortran FORTRAN (1957) , FORTRAN II ( 1958) , FORTRAN III (1958) , FORTRAN IV (1961) , FORTRAN 66 (1966) được xem phiên bản cũ , lỗi thời Các phiên bản được sử dụng phổ biến hiện FORTRAN 77 , Fortran 90 (chuẩn hóa năm 1991) Fortran 95 Phiên bản Fortran 90 , được xem cột mốc quan trọng lịch sử phát triển ngôn ngữ Fortran , có rất nhiều điểm mới so với FORTRAN 77 văn bản chương trình hay tập tin ng̀n ( source code ) được phép viết theo kiểu “ định dạng tự “ ( free format ) , khác với kiểu “ định dạng cố định theo cột “ ( fixed format ) của phiên bản trước ; các cấu trúc điều khiển , xử lý mảng , xử lý vào/ra , cấp phát động , chương trình , đơn vị chương trình module tạo nhiều thuận lợi cho người lập trình Phiên bản Fortran 95 bổ sung một số ít các nội dung mới vào Fortran 90 và bỏ một vài điểm lỗi thời vẫn còn giữ Fortran 90 Hai phiên bản sau Fortran 2003 ( hỗ trợ lập trình hướng đối tượng ) Fortran 2008 Một số công ty, tổ chức phát triển ngôn ngữ Fortran đã cho đời nhiều biến thể khác từ Fortran chuẩn ( Standard Fortran ) bằng cách thêm vào một số chức mở rộng Các phiên bản Fortran chuẩn được ANSI ( American National Standards Institute - Viện tiêu chuẩn quốc gia Hoa Kỳ ) ISO ( International Organization for Standardization - Tổ chức quốc tế về tiêu chuẩn hóa ) xem xét cơng bớ Chương trình viết bằng Fortran chuẩn đảm bảo tính khả chuyển ( portable ) , chạy ổn định hệ máy tính khác có cài đặt trình biên dịch Fortran Phần trình bày tài liệu sẽ tập trung vào phiên bản Fortran 90 sử dụng trình biên dịch Fortran nền hệ điều hành Windows Phần thực hành minh họa các chương trình Fortran 90 , sử dụng phần mềm miễn phí Force 2.0 ,version 2.0.9p , được download tại trang web : http://force.lepsch.com/2009/05/downloads.html Tên tập tin download : Force209G95Setup.exe , kích thước 3,55 MB Phần mềm Force là một mơi trường phát triển tích hợp IDE ( Integrated Development Environment ) gọn nhẹ , có chức biên dịch chạy các chương trình viết bằng FORTRAN 77 hoặc Fortran 90 Force sử dụng trình biên dịch miễn phí G77/GFortran của GNU Compiler Collection (GCC) và G95 Khi cài đặt xong , mở file Force2.exe , sẽ thấy hiển thị cửa sổ môi trường phát triển tích hợp IDE của Force 2.0 Trong mơi trường , sẽ soạn tập tin nguồn ( văn bản chương trình dạng text ) , tiến hành biên dịch , liên kết ( lệnh compile ) và nếu không có lỗi sẽ tiến hành chạy thử ( lệnh run ) chương trình Ngoài , có thể chọn trình biên dịch Fortran khác sau để chạy kiểm tra một chương trình nguồn :  Sử dụng môi trường IDE của SilverFrost qua chương trình FTN95 Personal Edition ( chương trình miễn phí phục vụ học tập , chạy test ) với file có tên ftn95_personal.exe ( kích thước 70, 996 MB ) , được download tại trang web : https://www.silverfrost.com/32/ftn95/ftn95_personal_edition.aspx Khi download về máy tính xong , chạy file ftn95_personal.exe để cài đặt chương trình vào mợt thư mục tùy chọn , ví dụ D :\FTN95 Sau đó chúng ta chạy file plato.exe để mở môi trường IDE Plato Từ , có thể soạn thảo , biên dịch , liên kết chạy các chương trình Fortran  Để có thể biên dịch trực tiếp tại cửa sổ Command Prompt của Windows , chúng ta có thể vào trang web The Fortran Company có địa sau để download về trình biên dịch g95 qua một file cài đặt có tên g95-Mingw_201210.exe ( 5381 KB ) : http://www.fortran.com/the-fortran-company-homepage/whats-new/g95-windowsdownload/ Phần hướng dẫn sơ lược sử dụng các trình biên dịch này sẽ được trình bày ở ći chương 1.2 Bộ kí tự Fortran Văn chương trình Fortran ( source code , source file ) 1.2.1 Bộ kí tự Fortran Bộ kí tự của Fortran bao gồm : a) Chữ viết thường : từ a đến z ; ( 26 chữ tiếng Anh ) b) Chữ viết hoa : từ A đến Z ; c) Chữ số : đến ; ( 10 chữ sớ ) d) Kí tự nối chân : _ ; ( underscore ) e) Các kí tự khác : = + - * /( ) < > ,.;:‘“!&%$? f) Kí tự trớng ( blank , space ) Các đơn vị văn bản chương trình từ khóa ( keyword ) , tên biến , tên hằng , tên chương trình , xâu kí tự , biểu tượng …sử dụng các kí tự bộ kí tự Fortran Kí hiệu các phép toán số học cộng, trừ, nhân, chia được viết : + - * / ; riêng phép lũy thừa sử dụng hai dấu * viết liên tiếp ( ví dụ : 2**3 = 23 = ) 1.2.2 Soạn thảo văn chương trình ( tập tin nguồn dạng *.f90 ) Để soạn một văn bản chương trình Fortran 90 , có thể dùng trình soạn thảo văn bản Notepad hoặc soạn thảo môi trường Force Tập tin nguồn phải được lưu ( save as ) dưới dạng có phần là *.f90 , ví dụ hinhtron.f90 , để trình biên dịch có thể nhận dạng được loại tập tin phiên bản Fortran phù hợp ( Tập tin văn bản soạn theo định dạng cố định có phần là *.f , được giới thiệu ở cuối chương ; tập tin văn bản của Fortran 95 có phần là *.f95 ) Fortran 90 khơng phân biệt chữ hoa với chữ thường văn bản chương trình ( case insensative ) trừ việc thể hiện nợi dung xâu kí tự ( string of characters ) Trong các văn bản chương trình trước , người lập trình viết dịng lệnh bằng chữ IN HOA xu hướng hiện viết văn bản bằng chữ thường hoặc kết hợp cả hai 1.3 Phương thức chung tạo tập tin thi hành (executable file) từ văn chương trình a) Trong mơi trường DOS hoặc Windows , các ngơn ngữ lập trình cấp cao ( Fortran, C, Pascal,…) tạo tập tin thi hành có đuôi *.exe theo hai bước : Bước : Biên dịch ( compiling ) tập tin nguồn ( source code , file dạng text người lập trình soạn thảo ) sang tập tin đối tượng ( object code ) dạng nhị phân ( binary code ) Bước : Liên kết ( linking ) một hoặc vài tập tin đối tượng tập tin thư viện có liên quan để tạo thành tập tin thi hành được ( executable file ) Tập tin thi hành *.exe sau đó có thể chạy độc lập bên ngoài môi trường IDE b) Sơ đồ minh họa : Tập tin đối tượng ( Object code ) Tập tin nguồn ( Source code ) Biên dịch ( Compiling ) Tập tin thi hành ( Executable code ) Liên kết ( Linking ) File1.f90 File1.obj File2.f90 File2.obj Program.exe Thư viện Libraries Hình 1.1 : Các bước biên dịch và liên kết 1.4 Một ví dụ về chương trình Fortran Để có một cái nhìn tổng quát về việc soạn thảo tập tin nguồn của Fortran và cách thức biên dịch , liên kết và chạy chương trình môi trường Force , chúng ta xem qua một ví dụ đơn giản dưới 1.4.1 Văn chương trình tính chu vi diện tích hình trịn Trong cửa sở Force , vào menu File , chọn New Khung cửa sổ soạn thảo hiện trỏ xuất hiện ở dòng đầu tiên Chúng ta vào nội dung văn bản chương trình dưới và lưu tập tin dưới tên hinhtron.f90 ( cần tạo trước một thư mục chứa tập tin văn bản Fortran để tiện việc thực hành ,ví dụ thư mục có tên D :\work ) Văn bản chương trình được xem một tập thị ( tập lệnh ) được sắp xếp theo một thứ tự từ xuống dưới và được viết theo quy tắc về cú pháp rất chặt chẽ của ngôn ngữ Fortran nhằm lệnh cho máy tính thực hiện một nhiệm vụ xác định nào đó Phần đánh sớ dịng cửa sở soạn thảo tự đợng nhằm giúp người lập trình dễ dàng tham chiếu đến dòng lệnh Khi chúng ta soạn thảo tập tin ng̀n , các từ khóa văn bản , dịng ghi mợt sớ đơn vị cú pháp văn bản sẽ tự đợng có màu thích hợp giúp dễ phân biệt các đối tượng khác văn bản Trong văn bản ví dụ dưới , các từ khóa ( keyword ) của Fortran được in đậm program HinhTron implicit none ! phan khai bao real :: r,chuvi,dientich ! khai bao bien real, parameter :: pi = 3.14159 ! khai bao hang pi ! phan tinh toan print*,'Cho biet ban kinh r :' ; read*,r chuvi = 2.0*r*pi dientich = r*r*pi ! ket qua print*,'Chu vi : ',chuvi print*,'Dien tich : ',dientich read* ! tam dung man hinh de xem ket qua end program HinhTron Hình 1.2 : Soạn thảo tập tin nguồn cửa sổ Force 1.4.2 Biên dịch, liên kết chạy chương trình hinhtron.f90 Bước biên dịch,liên kết : chọn menu Run , chọn mục Compile (phím tắt Ctrl – F9) Khi biên dịch , liên kết xong , nếu không có lỗi cửa sổ Process hiển thị sau : Hình 1.3 : Cửa sổ Process thông báo việc biên dịch hoàn tất , không có lỗi Trường hợp xảy lỗi cú pháp ( syntax error ) sẽ có thơng báo thích hợp tại cửa sở phía dưới vùng soạn thảo để hướng dẫn người lập trình chỉnh sửa lại tập tin nguồn , sau đó lưu (save ) chạy lại trình biên dịch Ví dụ dòng thứ bảy của văn bản , chúng ta viết read , r thay vì viết đúng là read*, r Cửa sổ Process sẽ báo lỗi và có thông báo vị trí ( dòng ) bị lỗi In file D:\work\hinhtron.f90:7 print*,'Cho biet ban kinh r :' ; read,r Error: Syntax error in READ statement at (1) Hình 1.4 : Cửa sổ Process thông báo lỗi và vị trí có lỗi cú pháp Bước chạy thử tập tin thi hành : chọn menu Run, mục Run ( phím tắt F9) Máy tính sẽ tạm thời thoát khỏi môi trường Force và cho chạy tập tin hinhtron.exe một cửa sổ màu đen riêng Tại , trỏ chương trình sẽ dừng lại sau câu Cho biet ban kinh r : và đợi chúng ta nhập một giá trị trực tiếp từ bàn phím ( ví dụ 3.0 ) và nhấn phím Enter để xác nhận Các kết quả tính toán được hiển thị màn hình Sau xem xong kết quả , chúng ta nhấn phím Enter để thoát khỏi cửa sổ chạy chương trình và trở về môi trường IDE của Force Hình 1.5 : Kết quả chạy tập tin hinhtron.exe Để chạy file *.exe trực tiếp thư mục có lưu file nguồn *.f90 ví dụ , menu chọn Options , chọn Environment Options , chọn tiếp thẻ Run , chọn Run with  EXE (direct ) Trường hợp chọn Console , chương trình sẽ được chạy cửa sổ cmd ( command prompt ) của Windows Hình 1.6 : Chọn cửa sổ chạy chương trình đã được biên dịch và liên kết Trường hợp có lỗi chạy chương trình ( run time error ) hoặc kết quả không đúng với kết quả mà chúng ta đã biết trước ( chạy test chương trình ) thì cần quay lại văn bản chương trình để rà soát lại thuật giải , các biểu thức tính toán , nội dung các câu lệnh để chỉnh sửa , sau đó thực hiện lại việc biên dịch, liên kết và chạy chương trình Để lưu kết của cửa sổ màu đen này vào file Word hoặc Notepad ,chúng ta để trỏ lên tiêu đề hinhtron.exe bấm phím phải chuột , xuất hiện menu ,chọn Edit , chọn Select All , nội dung chọn được chiếu sáng , bấm Enter ( tương đương lệnh Copy) để đưa nội dung này vào clipboard sau đó dán vào file Word đã mở sẵn ( Word bấm phím phải chuột , chọn Paste hoặc dùng tổ hợp phím Ctrl – V ) Hình 1.7 : Cách đưa nội dung kết quả của chương trình vào Clipboard 1.5 Giải thích sơ lược văn chương trình hinhtron.f90 Chương trình Fortran ví dụ nêu có một đơn vị chương trình là chương trình chính ( main program ) Chương trình Fortran tổng quát thường gồm một chương trình chính và nhiều đơn vị chương trình khác có liên quan ( sẽ được trình bày ở phần sau ) 1.5.1 Cấu trúc tổng quát chương trình program tên_chương_trình ! [ tùy chọn , optional ] implicit none ! [ tùy chọn , optional ] ! < các câu lệnh không thực thi , khai báo các đối tượng [ biến ,hằng, mảng,…] sử dụng ! chương trình , luôn phải đặt trước các câu lệnh thực thi > ! end program tên_chương_trình ! có thể viết đơn giản end Các từ program , end program, implicit none thuộc bộ từ khóa ( keyword ) của Fortran Một số quy định về soạn thảo văn chương trình Fortran 90 :  Văn bản chương trình gồm các dòng text , dòng có không quá 132 kí tự  Nội dung văn bản bên phải sau dấu chấm than ! là phần chú thích , dùng để giải thích các câu lệnh hoặc các phần khác của chương trình nhằm giúp người đọc văn bản hiểu rõ các câu lệnh Trình biên dịch sẽ bỏ qua thích  Trình biên dịch bỏ qua dịng trớng ( dịng trắng ) văn bản chương trình  Thông thường một câu lệnh được đặt một dòng văn bản riêng biệt , nếu viết hai hoặc nhiều câu lệnh cùng một dòng thì phải dùng dấu chấm phẩy ; để phân cách các câu lệnh Ví dụ : print*,'Cho biet ban kinh r :' ; read*, r ! dòng có câu lệnh  Câu lệnh dài nếu cần phải viết nhiều dòng liên tiếp thì phải dùng dấu nối & (ampersand) đặt ở cuối dòng và có thể phải đặt ở đầu dòng tiếp theo ( trường hợp x́ng dịng ở giữa chừng xâu kí tự thì bắt buộc phải đặt dấu nối & ở đầu dòng tiếp theo ) Ví dụ : integer :: dai , rong , & chuvi , dien tich ! khai báo biến kiểu số nguyên print*, ‘ Tri so chu vi cua & & duong tron la : ‘ , chuvi ! bắt buộc phải có dấu & ở đầu dòng tiếp theo dientich = r*r & *pi ! không cần dấu & ở đầu dòng , nếu có cũng khơng có lỡi Sớ dịng tiếp theo cho phép : 39 dòng ( Thay đổi theo trình biên dịch )  Các khoảng trớng được chèn vào giữa các đơn vị văn bản từ khóa, tên biến , tên hằng , các biểu tượng , vừa dùng để tách rời các đơn vị (quy định bắt buộc ) vừa giúp cho chương trình dễ đọc Số lượng khoảng trống nhiều không ảnh hưởng đến kết quả ( trừ trường hợp xuất hiện xâu kí tự ) Tuy nhiên khơng được chèn khoảng trớng vào giữa kí tự cấu thành một đơn vị văn bản ( từ khóa , tên ) hoặc biểu tượng Ví dụ : Viết real :: r,chuvi,dientich giống real :: r, chuvi, dientich ; nhiên lưu ý dấu :: không được viết tách rời thành : : Không được viết re al thay cho real Không được viết > = thay cho >= ( kí hiệu phép toán so sánh lớn hay bằng )  Nợi dung của mợt xâu kí tự được đặt giữa hai dấu nháy đơn ‘ string ‘ , hoặc hai dấu nháy kép “ string “ có giá trị Phải dùng thống nhất một kiểu dấu nháy giữa mợt xâu kí tự Để thể hiện It’s a book , chúng ta viết ‘It’’s a book.’ (đặt hai dấu nháy đơn sau chữ t ) , để thể hiện Say “Hello !” , viết ‘Say “Hello !” ‘ hoặc “ Say “”Hello !”” “ Khi nhập xâu kí tự có khoảng trắng từ từ bàn phím , phải nhập giữa hai dấu nháy đơn hoặc kép 1.5.2 Câu lệnh implicit none Câu lệnh implicit none câu lệnh tùy chọn ( optional ) , được đặt sau từ khóa program , ḅc người lập trình phải khai báo rõ ràng ( explicitly ) tất biến , hằng , mảng … tham gia vào chương trình cùng kiểu dữ liệu tương ứng ( số nguyên, số thực , số phức , kí tự , logic …) Fortran 90 vẫn chấp nhận quy tắc ngầm định (implicit rule) về kiểu biến số học các phiên bản trước , nghĩa là có thể không cần phải khai báo biến văn bản chương trình , mà vào kí tự đầu của tên biến để biết biến thuộc loại dữ liệu : cụ thể những biến có tên bắt đầu bằng các chữ I,J,K,L,M,N tḥc loại sớ ngun mặc định ( integer ) có tên bắt đầu bằng các chữ khác thuộc loại số thực mặc định ( real ) Tuy nhiên , việc khai báo đầy đủ các đối tượng biến, hằng kiểu dữ liệu từ đầu chương trình trước sử dụng chúng mợt thói quen lập trình tớt , tránh được nhiều sai sót khó phát hiện biên dịch chương trình Trong tài liệu , sử dụng câu lệnh implicit none văn bản chương trình 1.5.3 Khai báo biến ( variable) Biến dùng để lưu trữ dữ liệu , kết quả tính toán bộ nhớ máy tính Biến có tên, địa , kiểu dữ liệu , kích thước , nợi dung (giá trị ) ; biến có thể được gán giá trị ban đầu có thể thay đởi giá trị q trình thực thi chương trình Khai báo biến gồm khai báo tên biến ( variable name ) kiểu liệu ( data type ) của biến Fortran quy định tên biến xâu kí tự từ đến 31 kí tự , gồm chữ viết (a z , A Z ) , chữ sớ (0 9) kí tự nới chân (underscore _ ) , tên biến phải bắt đầu bằng chữ viết ( letter ) Tên biến khơng được có khoảng trớng chen giữa hoặc kí tự đặc biệt Ví dụ về tên biến đúng : ChuVi, chu_vi, dientich, NhanVien_01, x, y, z Ví dụ về tên biến đặt sai :1x , dien tich , chu-vi Fortran không phân biệt chữ hoa với chữ thường tên biến Các tên biến : DienTich , dientich , Dientich là Quy tắc đặt tên biến được áp dụng cho việc đặt tên ( định danh , identifier ) cho các đối tượng khác hằng , mảng, tên chương trình ,tên hàm ,tên cấu trúc Tên biến nên được đặt phù hợp với ý nghĩa của đối tượng tham gia chương trình Ghi : Tên biến FORTRAN 77 giới hạn kí tự , Fortran 2003 63 kí tự Fortran 90 khơng cấm việc dùng tên các từ khóa ( keyword) để đặt tên ( identifier ) cho đối tượng biến, hằng , mảng …như một số ngôn ngữ lập trình khác , nên tránh việc làm dễ gây nhầm lẫn Câu lệnh real :: r ,chuvi ,dientich , khai báo biến kiểu số thực ( từ khóa real ) có tên r, chuvi, dientich ; giữa real dãy tên biến dấu :: viết liền Trong trường hợp đơn giản dấu :: có thể bỏ mà khơng ảnh hưởng đến kết quả ( real r, chuvi , dientich ) Lưu ý các tên biến phải được phân cách bằng dấu phẩy 1.5.4 Khai báo (named constant ) Câu lệnh real , parameter :: pi = 3.14159 , khai báo pi một hằng kiểu số thực có giá trị được gán 3,14159 Ở tḥc tính parameter mợt từ khóa báo cho biết biến pi được khai báo mợt hằng ,cịn gọi hằng biểu tượng , hằng có tên (named constant ) để phân biệt với hằng trực tiếp 1975 , 2.345 Hằng có giá trị khơng đổi suốt chương trình , không được viết câu lệnh làm thay đổi giá trị của hằng Lưu ý dấu :: trường hợp bắt buộc phải có Việc khai báo hằng giúp cho chương trình dễ đọc , dễ hiểu câu lệnh và dễ chỉnh sửa giá trị của hằng theo yêu cầu của bài toán Có thể sử dụng chữ in hoa PI , FOOT để đặt tên cho hằng 1.5.5 Xuất ( viết ) liệu hình ( thiết bị xuất chuẩn ) Câu lệnh print *, dùng để xuất ( viết ) màn hình nợi dung xâu kí tự , giá trị biến , giá trị biểu thức Dấu * cho biết các đối tượng được viết theo định dạng ( format ) tự động ( mặc định ) , phụ thuộc vào cấu trúc máy tính Các đối tượng xuất khác được phân cách bởi dấu phẩy và được viết một dòng màn hình (trường hợp dữ liệu xuất nhiều một dịng , kết quả sẽ được c̣n sang dịng tiếp theo ) Thực hiện xong lệnh print * , trỏ tự đợng x́ng đầu dịng tiếp theo Câu lệnh print* không kèm đối tượng xuất dùng để tạo mợt dòng trớng (blank line) hình Câu lệnh print tổng quát : print format , < list > , đó format phần định dạng hoặc điều khiển cho các đối tượng xuất theo một sự sắp xếp định trước , list danh sách các đới tượng x́t hình Câu lệnh write (*,*) < đối tượng xuất màn hình > có ý nghĩa tương đương lệnh print*, Dấu * đầu tiên cho biết kênh xuất là màn hình ,dấu * thứ hai quy định kiểu định dạng là tự động Hai câu lệnh sau là tương đương : write (*,*) ‘Cho biet ban kinh r : ‘  print*, ’Cho biet ban kinh r : ‘ Ghi : lệnh print dùng để x́t hình , lệnh write có nhiều lựa chọn dùng để xuất hình , tập tin , máy in 1.5.6 Nhập liệu từ bàn phím ( thiết bị nhập chuẩn ) Câu lệnh read *, < danh sách tên biến > dùng để nhập giá trị trực tiếp từ bàn phím và gán cho các biến theo thứ tự danh sách Khi chương trình thực hiện đến câu lệnh read*, r máy tính sẽ dừng lại chờ nhập một giá trị là bán kính r từ bàn phím , ví dụ nhập sớ 3.0 , xong nhấn Enter để xác nhận Biến r sẽ lấy giá trị 3.0 biểu thức tính tốn tiếp theo Câu lệnh read (*,*) < tên các biến > có ý nghĩa tương tự read*,< tên các biến> Dấu * đầu tiên read (*,*) cho biết kênh nhập dữ liệu bàn phím , dấu * thứ hai cho biết kiểu định dạng dữ liệu kiểu tự động Lệnh read (*,*) r  read*, r Nếu x,y,z ba biến kiểu sớ thực gặp câu lệnh read*, x,y,z , có thể nhập giá trị cho biến , sau giá trị nhập phải nhấn Enter ; hoặc có thể nhập lúc ba giá trị vào một hàng lúc này số phải được viết cách bằng dấu phẩy hoặc cách một hay vài khoảng trống , xong nhấn Enter để xác nhận việc nhập liệu cho cả ba số Vẽ đồ thị từ kết xếp theo dạng cột tập tin Chúng ta có file ‘d:\dataplot.dat’ từ chương trình Fortran sau : program main implicit none real,dimension(10) :: x,y1,y2,y3 integer :: i i = 1,10 x(i) = real(i) end y1 = x*x ! y1 = x2 y2 = x*x +3.*x ! y2 = x2 + 3x y3 = sqrt(x*x +x ) ! y3 = x  x open (10,file = 'd:\dataplot.dat') i = 1,10 write (10,'(4f10.2)') x(i),y1(i),y2(i),y3(i) ! ghi vào file d:\dataplot.dat write (*,'(4f10.2)') x(i),y1(i),y2(i),y3(i) ! xuất màn hình để kiểm tra end close(10) read* end Ghi chú : các cột 1,2,3,4 file kết quả tương ứng với dãy số x,y1,y2,y3 + Để vẽ đồ thị x  y1(x) bằng cách nối các điểm (x,y1(x)) , dùng lệnh sau : set grid set title ‘ Quan he y1=x**2 ‘ plot ‘d:\dataplot.dat ‘ using 1:2 with lines Nhận xét : sau lệnh plot là tên file dấu ngoặc đơn ( kể cả đường dẫn ) ; cụm từ using 1:2 cho biết đồ thị dùng cột (dãy x) và cột ( dãy y1) ; cụm từ with lines cho biết đồ thị dùng các đoạn thẳng để nối các điểm (x,y) lại với 178 Tương tự chúng ta có đồ thị thể hiện mối quan hệ giữa cột và cột : set grid set title ‘ Quan he y2=x**2 + 3*x ‘ set ylabel ‘y2’ plot ‘d:\dataplot.dat ‘ using 1:3 with linespoints Ở đồ thị này , cụm từ with linespoints vừa dùng đoạn thẳng để nối , vửa có ghi dấu điểm tại các tọa độ tập tin Đồ thị dưới vẽ cả hàm cùng một cửa sổ , dùng mẫu lệnh : plot ‘tên_file’ using 1:3 with linespoints , ‘tên_file’ using 1:2 with lines , \ ‘tên_file’ using 1:4 with linespoints < Enter > 179 Lưu ý : Trong trường hợp câu lệnh dài cần phải viết ở dòng tiếp theo , chúng ta đặt dấu \ ở cuối câu xong và viết tiếp câu lệnh Soạn chạy tập tin script Trong Notepad chúng ta soạn tập tin sau và lưu lại với tên d:\dothi001.txt # Tap tin d:\dothi001.txt # Du lieu lay tu file d:\dataplot.dat # Ket qua xuat man hinh va file anh d:\y2y4.jpeg # set title 'Quan he y2(x), y4(x)' set ylabel 'y2 & y4' set xlabel 'Thoi gian' set grid plot 'd:\dataplot.dat' using 1:2 with linespoints ,\ 'd:\dataplot.dat' using 1:4 with linespoints set terminal png set output 'd:\y2y4.jpeg' replot set terminal windows Ghi chú : dòng có dấu # ở đầu là dòng ghi chú , gnuplot sẽ bỏ qua các dòng này Các lệnh đã trình bày ở các phần trước được nhóm lại thành một tập lệnh ( file dạng text ) và đặt vào một tập tin có tên d:\dothi001.txt Để thi hành tập lệnh này , tại dấu nhắc của gnuplot , đánh lệnh sau : gnuplot> load ‘d:\dothi001.txt’ Lúc này toàn bộ các lệnh của tập tin được thực thi lần lượt giống chúng ta vào lệnh ở dòng command line chế độ tương tác Nếu câu lệnh có lỗi, gnuplot sẽ đưa câu thông báo Kết quả sẽ có một đồ thị màn hình và một file ảnh y2y4.jpeg ổ đĩa D Cú pháp nạp một tập tin vào gnuplot : > load ‘’ [Enter] 180 Trong chương trình Fortran ở mục , chúng ta có thể gọi gnuplot và nạp tập tin dothi001.txt , đồ thị sẽ hiển thi chạy chương trình : … open (10,file = 'd:\dataplot.dat') i = 1,10 write (10,'(4f10.2)') x(i),y1(i),y2(i),y3(i) ! ghi dữ liệu vào tập tin ở dạng cột write (*,'(4f10.2)') x(i),y1(i),y2(i),y3(i) ! ghi hình end close(10) call system ('d:\gnuplot\bin\wgnuplot d:\dothi001.txt') read* end Dùng thủ tục call system với đối số là tên tập tin chương trình wgnuplot cùng đường dẫn và tập tin script d:\dothi001.txt chứa tập lệnh dùng để vẽ đồ thị Lưu ý chúng ta cần phải đặt lệnh pause 10 ( dừng lại 10 giây ) sau lệnh plot file script này để có đủ thời gian quan sát đồ thị hoặc lệnh pause -1 , lúc sau quan sát xong , nhấn để chương trình tiếp tục # Tap tin d:\dothi001.txt # Du lieu laytu file d:\dataplot.dat # Ket qua xuat file anh d:\func_y2y4.jpeg set title 'Quan he y2(x), y4(x)' set ylabel 'y2 & y4' set xlabel 'Thoi gian' set grid plot 'd:\dataplot.dat' using 1:2 with linespoints ,\ 'd:\dataplot.dat' using 1:4 with linespoints # lenh pause 10 : dung 10 giay de xem hinh hoac dung lenh pause -1 pause 10 # Tao file anh jpeg de luu thi set terminal png set output 'd:\func_y2y4.jpeg' replot # Tro ve terminal windows set terminal windows Vẽ đồ thị 3D z = f(x,y) lệnh splot +Để vẽ đồ thị 3D thể hiện quan hệ z = f(x,y) , dùng lệnh : splot Ví dụ : z = -x3 –y  Lệnh vẽ : splot (-x**3 – y) + Dùng lệnh set xrange [x1:x2] , set yrange [y1:y2] , set zrange [z1:z2] để thay đổi phạm vi của x,y,z theo yêu cầu Ví dụ : set grid set hidden3d ( dấu các đường khuất để dễ quan sát ) splot [-2: 2] [ -2:2 ] 2*(x**2 + y**2)*exp(-x**2 – y**2) Để tăng độ phân giải của đồ thì 3D nói , vào lệnh : set isosamples 40,40 replot 181 z = -x3-y z = 2*(x**2 + y**2)*exp(-x**2 – y**2) Đồ thị với độ phân giải 40,40 182 Vẽ mặt thể hiện mảng hai chiều + Để vẽ mặt thể hiện mảng chiều f(i,j) , với i,j : n , ví dụ hàm z = x2 + y2 với x,y lấy giá trị 1,2,3,4 , sắp xếp file dữ liệu sau , lưu ý sau ghi các giá trị của cột thứ của ma trận f (i,j) , phải để mợt dịng trớng # z = x**2 + y **2 # d:examsp.dat 1 2 10 17 ! Dịng phải để trớng 2 2 13 20 ! Dòng phải để trống 3 3 10 13 18 25 ! Dòng phải để trống 4 4 17 20 25 32 Các câu lệnh gnuplot : gnuplot > set surface gnuplot > set hidden3d gnuplot > set grid gnuplot > splot ‘d:examsp.dat’ u 1:2:3 w lines 183 Ghi : gnuplot cho phép viết tắt câu lệnh , ví dụ u thay cho using , w thay cho with Vẽ vectơ mặt phẳng 2D Để vẽ một trường vectơ , tập tin dữ liệu phải bố trí số liệu thành 04 cột : cột cho biết tọa độ điểm gốc của vectơ , cột cho biết thành phần số ( tọa độ ) của vectơ theo phương X và phương Y theo định dạng sau : Tọa độ x Tọa độ y Thành phần số X Thành phần số Y Lệnh vẽ các vectơ tập tin ‘d:\vevecto.dat’ sau : plot ‘d:\vevecto.dat’ using 1:2:3:4 with vectors head filled lt lw Vẽ vectơ Ngoài các đồ thị vẽ theo hệ tọa độ Descartes thông thường , gnuplot còn cho phép vẽ các đường cong tham số , đường cong hệ tọa độ cực , biểu diễn số liệu có kèm theo sai số , biểu diễn số liệu theo dạng thống kê, tạo ảnh động ( animation ) Bạn đọc quan tâm chi tiết , có thể download các tài liệu mới nhất về gnuplot internet để nghiên cứu , tham khảo thêm ***** 184 PHỤ LỤC B : CHƯƠNG TRÌNH LINPACK GIẢI HỆ n PHƯƠNG TRÌNH TUYẾN TÍNH Ax = b BẰNG PP KHỬ GAUSS Văn chương trình : Chương trình có hai module : module kinds định nghĩa hằng r dùng để khai báo số thực có độ chính xác kép và module ppgauss có chứa subroutine gauss dùng để giải hệ phương trình Trong chương trình chính , các ma trận A , vectơ b , vectơ nghiệm số x được khai báo là các mảng được cấp phát động Các dữ liệu đầu vào : _ Khai báo số phương trình n _ Khai báo các hệ số của ma trận A , dữ liệu được vào theo dòng _ Khai báo các phần tử của vectơ b , vế bên phải _ Chương trình có kiểm tra và thông báo trường hợp ma trận A suy biến ( singular) Văn bản chương trình : module kinds implicit none integer,parameter :: r = selected_real_kind (15,307) end module kinds module ppgauss implicit none contains subroutine gauss(a,n,b,x,suybien) use kinds implicit none !Khai bao cac doi so (arguments ) integer,intent(in) :: n real(r),intent(inout) :: a(:,:),b(:) real(r),intent(out) :: x(:) ! vecto nghiem so x logical,intent(out) :: suybien !Khai bao bien cuc bo integer :: i,j,k,pivot_row real(r):: pivot,sum,trunggian real(r),parameter :: eps = 1.e-13_r ! nhỏ giá trị eps xem số ! Kiểm tra ,xử lý theo từng cợt ( từ phần tử đường chéo trở xuống ) k = 1,n-1 ! Tim dong co phan tu lon nhat cua cot k ve tri tuyet doi de pivot ( chuyển đổi vị trí dịng ) pivot_row = maxval(maxloc(abs(a(k:n,k)))) + k - ! Test xem ma tran a co suy bien ! Neu co thi tro lai main program if (abs(a(pivot_row,k))

Ngày đăng: 05/01/2022, 17:03

Xem thêm:

HÌNH ẢNH LIÊN QUAN

1.4.1 Văn bản chương trình tính chuvi và diện tích hình trịn. - Introduction to fortran 90
1.4.1 Văn bản chương trình tính chuvi và diện tích hình trịn (Trang 5)
Hình 1. 2: Soạn thảo tập tin nguờn trong cửa sở Force. - Introduction to fortran 90
Hình 1. 2: Soạn thảo tập tin nguờn trong cửa sở Force (Trang 6)
1.4.2 Biên dịch,liên kết và chạy chương trình hinhtron.f9 0. - Introduction to fortran 90
1.4.2 Biên dịch,liên kết và chạy chương trình hinhtron.f9 0 (Trang 6)
Hình 1.1 1: Cửa sở IDE của Plato và vị trí menu Build. Nếu khơng cĩ lỗi , trong cửa sở output phía dưới  cĩ nợi dung sau :   Compiling and linking file: hinhtru.f90  - Introduction to fortran 90
Hình 1.1 1: Cửa sở IDE của Plato và vị trí menu Build. Nếu khơng cĩ lỗi , trong cửa sở output phía dưới cĩ nợi dung sau : Compiling and linking file: hinhtru.f90 (Trang 14)
Hình 1.1 0: Cửa sở New File. - Introduction to fortran 90
Hình 1.1 0: Cửa sở New File (Trang 14)
Hình 1.1 3: Văn bản chương trình circle.f viết theo định dạng cớ định. - Introduction to fortran 90
Hình 1.1 3: Văn bản chương trình circle.f viết theo định dạng cớ định (Trang 15)
1.9 Văn bản chương trình Fortran90 viết theo kiểu định dạng cớ địn h( tham khảo ). - Introduction to fortran 90
1.9 Văn bản chương trình Fortran90 viết theo kiểu định dạng cớ địn h( tham khảo ) (Trang 15)
3.5 Bảng tởng hợp các phép toán và mức độ ưu tiên trong Fortran. - Introduction to fortran 90
3.5 Bảng tởng hợp các phép toán và mức độ ưu tiên trong Fortran (Trang 40)
4.6.2 Ứng dụng vòng do xác định để tính gần đúng tích phân xác định bằng cơng thức hình - Introduction to fortran 90
4.6.2 Ứng dụng vòng do xác định để tính gần đúng tích phân xác định bằng cơng thức hình (Trang 67)
Lệnh call system (‘cls’) gọi lệnh lau màn hình cls của hệ thớn g( clear screen ), các nợi dung cũ bị xĩa và bắt đầu mợt phiên làm việc mới  - Introduction to fortran 90
nh call system (‘cls’) gọi lệnh lau màn hình cls của hệ thớn g( clear screen ), các nợi dung cũ bị xĩa và bắt đầu mợt phiên làm việc mới (Trang 69)
Ghi chú : Fortran dành sớ 6 cho thiết bị xuất chuẩn là màn hình nên : + Lệnh xuất write (6,*) tương đương với lệnh write (*,*) ;   - Introduction to fortran 90
hi chú : Fortran dành sớ 6 cho thiết bị xuất chuẩn là màn hình nên : + Lệnh xuất write (6,*) tương đương với lệnh write (*,*) ; (Trang 74)
doi =1, n! Xuất ra màn hình - Introduction to fortran 90
doi =1, n! Xuất ra màn hình (Trang 110)
+ Về hình thứ c: văn bản chương trình trên gờm chương trình chính main và chương trình con dạng external subroutine Test3 được viết nối tiếp  sau từ khĩa end program main  - Introduction to fortran 90
h ình thứ c: văn bản chương trình trên gờm chương trình chính main và chương trình con dạng external subroutine Test3 được viết nối tiếp sau từ khĩa end program main (Trang 122)
Các đới hình thức trong chương trình con có thể được gán thuợc tính optional ,trong trường hợp này các đới thực sự tương ứng với các đới optional cĩ thể xuất hiện hoặc khơng xuất hiện trong  danh sách các đới đầu vào được gọi  - Introduction to fortran 90
a ́c đới hình thức trong chương trình con có thể được gán thuợc tính optional ,trong trường hợp này các đới thực sự tương ứng với các đới optional cĩ thể xuất hiện hoặc khơng xuất hiện trong danh sách các đới đầu vào được gọi (Trang 132)
function tichphan(f,a,b,n) Cơng thức hình thang : real :: tichphan  - Introduction to fortran 90
function tichphan(f,a,b,n) Cơng thức hình thang : real :: tichphan (Trang 134)
end subroutine rotation Hình 7. 3: Hệ trục Oxy và Oxryr end program main  - Introduction to fortran 90
end subroutine rotation Hình 7. 3: Hệ trục Oxy và Oxryr end program main (Trang 135)
real ,intent(in):: x! khai báo interface cho đới hình thức là chương trình con.      end function f               ! khai báo mẫu ( template ) hàm sử dụng trong function  - Introduction to fortran 90
real intent(in):: x! khai báo interface cho đới hình thức là chương trình con. end function f ! khai báo mẫu ( template ) hàm sử dụng trong function (Trang 149)
Lưu ý : phần Type các source files Fortran90 trong hình cĩ kiểu Force 2.0 là do lựa chọn mặc định của người dùng sử dụng máy có cài đặt cùng lúc nhiều trình biên dịch Fortran  - Introduction to fortran 90
u ý : phần Type các source files Fortran90 trong hình cĩ kiểu Force 2.0 là do lựa chọn mặc định của người dùng sử dụng máy có cài đặt cùng lúc nhiều trình biên dịch Fortran (Trang 163)
Mợt sớ hình ảnh kết quả quá trình tạo project và chạy test chương trình : - Introduction to fortran 90
t sớ hình ảnh kết quả quá trình tạo project và chạy test chương trình : (Trang 166)
Hình ảnh danh sách liên kết được tạo từ phải sang trái. - Introduction to fortran 90
Hình a ̉nh danh sách liên kết được tạo từ phải sang trái (Trang 173)
2) Cửa sở gnuplot : - Introduction to fortran 90
2 Cửa sở gnuplot : (Trang 176)
Dòng lệnh trên ra lệnh vẽ đờ thị hàm sin(x) với phạm vi thay đởi của đới sớ hình thức x từ 0 đến 2 .Cách viết các hàm , phép tính sớ học , hằng sớ   (pi) trong gnuplot tương tự như trong  văn bản Fortran  - Introduction to fortran 90
o ̀ng lệnh trên ra lệnh vẽ đờ thị hàm sin(x) với phạm vi thay đởi của đới sớ hình thức x từ 0 đến 2 .Cách viết các hàm , phép tính sớ học , hằng sớ  (pi) trong gnuplot tương tự như trong văn bản Fortran (Trang 176)

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN