Giới thiệu về Fortran 90 - Bùi Hoàng Hải
Số trang: 19
Loại file: ppt
Dung lượng: 49.50 KB
Lượt xem: 14
Lượt tải: 0
Xem trước 2 trang đầu tiên của tài liệu này:
Thông tin tài liệu:
Yêu cầu & Nội dung:Yêu cầu – đã nắm được fortran 77 (Nếu không thì tựđọc bài giảng của PGS Phan Văn Tân).Nội dung:o Free form vs fixed formo Biến và khai báo biếno Cấu trúc điều khiểno Moduleo Kiểu biến người dùng định nghĩa
Nội dung trích xuất từ tài liệu:
Giới thiệu về Fortran 90 - Bùi Hoàng HảiGiới thiệu về Fortran 90 Bùi Hoàng Hải Yêu cầu & Nội dung• Yêu cầu – đã nắm được fortran 77 (Nếu không thì tự đọc bài giảng của PGS Phan Văn Tân)• Nội dung o Free form vs fixed form o Biến và khai báo biến o Cấu trúc điều khiển o Module o Kiểu biến người dùng định nghĩa Free form (f90) vs Fixed form (f77)• Phần mở rộng file: .for vs .f90• Dòng lệnh không bị giới hạn về độ dài, không cần thụt đầu dòng• Comment bắt đầu từ dấu ! Đến hết dòng• Dấu & nối dòng o Write(*,*), This is a long output line,& this is the second part• Nhiều lệnh trên một dòng o A = 0.0 ; B = 1.0 ; C = 2.0 Cấu trúc một chương trìnhPROGRAM program-nameIMPLICIT NONE ! Nên có phần này[Phần khai báo][Phần thực thi][Các chương trình con]END PROGRAM program-name Phần khai báo• [Kiểu Biến], [Các thuộc tính] :: [Danh sách các biến]• Khai báo biến đơn: o Integer :: i, j, number_Tcs o Real :: Radius, Rmax, Vmax• Khai báo hằng số o Real, Parameter :: Pi=3.14156, g=9.81• K h ai b áo u ỗi ký ự ch t o Character (Len=11) :: Str1 o Character (Len=*), Parameter:: Str2 = “Hello Phần khai báo• Khai báo mảng o Integer, Parameter :: Nx=101, Ny=101 o Real, Dimension(Nx) :: Rx o Real, Dimension(Ny) :: Ry o Real, Dimension(Nx,Ny) :: U, V, W, SLp• Khai báo mảng động o Real, Dimension(:,:), Allocatable :: Var1, Var2 o --- o Allocate(Var1(100,100)) o --- o DeAllocate(Var1) Phép gán với mảngo Integer, Parameter :: Nx=121, Ny=101o Real, Dimension(Nx) :: Rxo Real, Dimension(Ny) :: Ryo Real, Dimension(Nx,Ny) :: A, B, Co A = Bo A(1,:) = Ryo B(Ny,:) = Rx Dịch 1 file f90 trong Cygwin• File nguồn: test.f90 Integer :: i Do i=1,10 Write(*,*)i Enddo End• Dịch o g95 test.f90• Hoặc o g95 test.f90 –o test.out• Chạy chương trình o ./test.out Module• FORTRAN định nghĩa 3 khái niệm đơn vị chương trình là: Chương trình chính, Chương trình con ngoài, và module.• Modul khác với các chương trình con ở 2 điểm quan trọng: o Module có thể chứa trong đó nhiều hơn một chương trình con (được gọi là các chương trình con module); o Modul có thể chứa những câu lệnh khai báo và đặc tả mà chúng có thể tham chiếu được đối với tất cả các đơn vị chương trình có sử dụng modul• Các module cũng có thể được biên dịch một cách độc lập• Để sử dụng module hãy dùng câu lệnh khai báo USE ngay đầu chương trình:• USE Tên_Các_Modul_được_sử_dụng• Một module này có thể sử dụng module khác VD về module• Module_mydata.f90 Module mydata Implict none Integer, Parameter :: Nx=10 Real, Dimension(Nx) :: dat Contains Subroutine init_data integer :: i Do i=1,10 dat(i)=i Enddo End Subroutine init_data End Module mydata VD về module• main.f90 Program main Implicit none Use mydata Call init_data ! Gọi ct con từ module Do i=1,Nx ! Sử dụng dữ liệu của module write(*,*)dat(i) Enddo End Program main• Biên dịch (sẽ báo lỗi) o G95 main.f90 module_mydata.f90QuanhÖgi÷ac¸c®¬nvịch¬ngtr×nh Kiểu người dùng định nghĩa• Để nhóm các kiểu biến khác nhau thành 1 kiểu biến mới• Cú pháp Type tên_kiểu [danh sách khai báo các biến (dữ_liệu)] End Type tên_kiểu• Sử dụng Type(Tên_kiểu) :: [Tên biến] Tên_biến%dữ_liệu = … VD Kiểu người dùng định nghĩamodule pipedeftype pipe real diameter real flowrate integer length character(len=10) :: flowtypeend type pipeend module pipedef program VD Kiểu người dùng định nghĩaProgram mainuse pipedeftype(pipe) water1, gas1water1 = pipe(4.5,44.8,1200,turbulent)gas1%flowrate = 91.284gas1%length = 2550gas1%flowtype = laminargas1%diameter = 14.9end program Để viết chương trình sáng sủa và ít lỗi• Luôn dùng implicit none• Các khối cấu trúc điều khiển (if, do,…) khi mở một khối cần đóng khối ngay sau đó, tiếp theo mới chèn các lệnh vào trong khối• Các khối lệnh cần phân cấp theo mức độ thò thụt của dòng lệnh (thông thường 1 cấp 3 space)• Sử dụng comment khi cần• Tên biến: sensible, không quá ngắn hoặc quá dài• Hạn chế sử dụng lệnh goto và nhãn Bài tập – (viết trên ngôn ngữ f90)• BT1 – Nhập từ bàn phím ba số a, b, c, giải và biện luận phương trình bậc 2 với các hệ số nói trên• BT2 - Ký hiệu X là mảng một chiều gồm 100 phần tử. Viết chương trình: o a) Gán 100 số nguyên dương đầu tiên cho các phần tử tương ứng của X, từ ph ...
Nội dung trích xuất từ tài liệu:
Giới thiệu về Fortran 90 - Bùi Hoàng HảiGiới thiệu về Fortran 90 Bùi Hoàng Hải Yêu cầu & Nội dung• Yêu cầu – đã nắm được fortran 77 (Nếu không thì tự đọc bài giảng của PGS Phan Văn Tân)• Nội dung o Free form vs fixed form o Biến và khai báo biến o Cấu trúc điều khiển o Module o Kiểu biến người dùng định nghĩa Free form (f90) vs Fixed form (f77)• Phần mở rộng file: .for vs .f90• Dòng lệnh không bị giới hạn về độ dài, không cần thụt đầu dòng• Comment bắt đầu từ dấu ! Đến hết dòng• Dấu & nối dòng o Write(*,*), This is a long output line,& this is the second part• Nhiều lệnh trên một dòng o A = 0.0 ; B = 1.0 ; C = 2.0 Cấu trúc một chương trìnhPROGRAM program-nameIMPLICIT NONE ! Nên có phần này[Phần khai báo][Phần thực thi][Các chương trình con]END PROGRAM program-name Phần khai báo• [Kiểu Biến], [Các thuộc tính] :: [Danh sách các biến]• Khai báo biến đơn: o Integer :: i, j, number_Tcs o Real :: Radius, Rmax, Vmax• Khai báo hằng số o Real, Parameter :: Pi=3.14156, g=9.81• K h ai b áo u ỗi ký ự ch t o Character (Len=11) :: Str1 o Character (Len=*), Parameter:: Str2 = “Hello Phần khai báo• Khai báo mảng o Integer, Parameter :: Nx=101, Ny=101 o Real, Dimension(Nx) :: Rx o Real, Dimension(Ny) :: Ry o Real, Dimension(Nx,Ny) :: U, V, W, SLp• Khai báo mảng động o Real, Dimension(:,:), Allocatable :: Var1, Var2 o --- o Allocate(Var1(100,100)) o --- o DeAllocate(Var1) Phép gán với mảngo Integer, Parameter :: Nx=121, Ny=101o Real, Dimension(Nx) :: Rxo Real, Dimension(Ny) :: Ryo Real, Dimension(Nx,Ny) :: A, B, Co A = Bo A(1,:) = Ryo B(Ny,:) = Rx Dịch 1 file f90 trong Cygwin• File nguồn: test.f90 Integer :: i Do i=1,10 Write(*,*)i Enddo End• Dịch o g95 test.f90• Hoặc o g95 test.f90 –o test.out• Chạy chương trình o ./test.out Module• FORTRAN định nghĩa 3 khái niệm đơn vị chương trình là: Chương trình chính, Chương trình con ngoài, và module.• Modul khác với các chương trình con ở 2 điểm quan trọng: o Module có thể chứa trong đó nhiều hơn một chương trình con (được gọi là các chương trình con module); o Modul có thể chứa những câu lệnh khai báo và đặc tả mà chúng có thể tham chiếu được đối với tất cả các đơn vị chương trình có sử dụng modul• Các module cũng có thể được biên dịch một cách độc lập• Để sử dụng module hãy dùng câu lệnh khai báo USE ngay đầu chương trình:• USE Tên_Các_Modul_được_sử_dụng• Một module này có thể sử dụng module khác VD về module• Module_mydata.f90 Module mydata Implict none Integer, Parameter :: Nx=10 Real, Dimension(Nx) :: dat Contains Subroutine init_data integer :: i Do i=1,10 dat(i)=i Enddo End Subroutine init_data End Module mydata VD về module• main.f90 Program main Implicit none Use mydata Call init_data ! Gọi ct con từ module Do i=1,Nx ! Sử dụng dữ liệu của module write(*,*)dat(i) Enddo End Program main• Biên dịch (sẽ báo lỗi) o G95 main.f90 module_mydata.f90QuanhÖgi÷ac¸c®¬nvịch¬ngtr×nh Kiểu người dùng định nghĩa• Để nhóm các kiểu biến khác nhau thành 1 kiểu biến mới• Cú pháp Type tên_kiểu [danh sách khai báo các biến (dữ_liệu)] End Type tên_kiểu• Sử dụng Type(Tên_kiểu) :: [Tên biến] Tên_biến%dữ_liệu = … VD Kiểu người dùng định nghĩamodule pipedeftype pipe real diameter real flowrate integer length character(len=10) :: flowtypeend type pipeend module pipedef program VD Kiểu người dùng định nghĩaProgram mainuse pipedeftype(pipe) water1, gas1water1 = pipe(4.5,44.8,1200,turbulent)gas1%flowrate = 91.284gas1%length = 2550gas1%flowtype = laminargas1%diameter = 14.9end program Để viết chương trình sáng sủa và ít lỗi• Luôn dùng implicit none• Các khối cấu trúc điều khiển (if, do,…) khi mở một khối cần đóng khối ngay sau đó, tiếp theo mới chèn các lệnh vào trong khối• Các khối lệnh cần phân cấp theo mức độ thò thụt của dòng lệnh (thông thường 1 cấp 3 space)• Sử dụng comment khi cần• Tên biến: sensible, không quá ngắn hoặc quá dài• Hạn chế sử dụng lệnh goto và nhãn Bài tập – (viết trên ngôn ngữ f90)• BT1 – Nhập từ bàn phím ba số a, b, c, giải và biện luận phương trình bậc 2 với các hệ số nói trên• BT2 - Ký hiệu X là mảng một chiều gồm 100 phần tử. Viết chương trình: o a) Gán 100 số nguyên dương đầu tiên cho các phần tử tương ứng của X, từ ph ...
Tìm kiếm theo từ khóa liên quan:
tin học ứng dụng Giới thiệu về Fortran 90 Ngôn ngữ lập trình Fortran 90 khai báo biến Cấu trúc điều khiển ModuleGợi ý tài liệu liên quan:
-
Đồ án tốt nghiệp đề tài: Xây dựng chương trình quản lý nhân sự Khoa Công nghệ thông tin
85 trang 256 0 0 -
Giáo trình Lập trình cơ bản với C++: Phần 1
77 trang 229 0 0 -
114 trang 228 2 0
-
Tài liệu bồi dưỡng giáo viên sử dụng SGK Tin học 10 Cánh diều (Định hướng Tin học ứng dụng)
61 trang 226 0 0 -
80 trang 205 0 0
-
101 trang 198 1 0
-
20 trang 181 0 0
-
Giáo trình Mạng máy tính (Nghề: Tin học ứng dụng - Trung cấp) - Trường Cao đẳng Cộng đồng Đồng Tháp
189 trang 163 0 0 -
Giáo trình Tin học ứng dụng: Phần 1 - Trường ĐH Tài nguyên và Môi trường Hà Nội
125 trang 149 0 0 -
Bài giảng Tin học ứng dụng: Kiểm định trung bình - Trường ĐH Y dược Huế
25 trang 143 0 0