1. Trang chủ
  2. » Công Nghệ Thông Tin

Giới thiệu về Fortran 90 - Bùi Hoàng Hải pot

19 361 3
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 49,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

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

Trang 1

Giới thiệu về Fortran 90

Bùi Hoàng Hải

Trang 2

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

Trang 3

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

Trang 4

Cấu trúc một chương trình

PROGRAM program-name

IMPLICIT 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

Trang 5

Phần khai báo

[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

Trang 6

Phần khai báo

• Khai báo mảng

o Real, Dimension(Nx) :: Rx

o Real, Dimension(Ny) :: Ry

• Khai báo mảng động

Var2

o

-o Allocate(Var1(100,100))

o

-o DeAllocate(Var1)

Trang 7

Phép gán với mảng

o Real, Dimension(Nx) :: Rx

o Real, Dimension(Ny) :: Ry

o A = B

o A(1,:) = Ry

o B(Ny,:) = Rx

Trang 8

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

Trang 9

• 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:

gọi là các chương trình con module);

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:

• Một module này có thể sử dụng module khác

Trang 10

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

Trang 11

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.f90

Trang 12

Quan hệ giữa các đơn v ch ơng trình ị chương trình

Trang 13

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 = …

Trang 14

VD Kiểu người dùng định nghĩa

module pipedef

type pipe

real diameter

real flowrate

integer length

character(len=10) :: flowtype

end type pipe

end module pipedef program

Trang 15

VD Kiểu người dùng định nghĩa

Program main

use pipedef

type(pipe) water1, gas1

water1 = pipe(4.5,44.8,1200,"turbulent") gas1%flowrate = 91.284

gas1%length = 2550

gas1%flowtype = 'laminar'

gas1%diameter = 14.9

end program

Trang 16

Để 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

Trang 17

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:

của X, từ phần tử có chỉ số lớn nhất đến phần tử có chỉ số nhỏ nhất;

50 số nguyên dương chẵn đầu tiên cho 50 phần tử tiếp theo của X;

tử của X

dòng, mỗi dòng 10 số sao cho thẳng hàng thẳng cột.

Trang 18

Bài tập – (viết trên ngôn ngữ f90)

• BT2 – Tạo một module định nghĩa kiểu dữ liệu thời gian: module_datetime,

o trong đó định nghĩa kiểu dữ liệu mới là datetime có chứa các biến thành viên: year, month, day, hour

o Viết chương trình con module kiểm tra tính đúng đắn của một biến datetime

o Viết chương trình con module để cộng một số giờ (<24) vào một biến datetime

o Viết chương trình chính sử dụng module trên

Trang 19

Buổi sau

• Biên dịch fortran trên linux

• Thực hành & chữa bài tập

Ngày đăng: 03/07/2014, 01:20

TỪ KHÓA LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w