intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

Bài giảng Tin học (Phần 1: Tin học cơ sở)(cao học Vật lý): Chương 3 - TS. Ngô Văn Thanh

Chia sẻ: Dinh Tuan | Ngày: | Loại File: PDF | Số trang:46

100
lượt xem
4
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Bài giảng "Tin học (Phần 1: Tin học cơ sở) - Chương 3: Tóm lược một số ngôn ngữ lập trình" cung cấp cho người đọc các kiến thức: Ngôn ngữ lập trình Fortran, ngôn ngữ lập trình C/C++. Mời các bạn cùng tham khảo nội dung chi tiết.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Tin học (Phần 1: Tin học cơ sở)(cao học Vật lý): Chương 3 - TS. Ngô Văn Thanh

  1. Ngo Van Thanh, IOP 11/2011
  2. Chương 3: Tóm lược một số ngôn ngữ lập trình (LT: 5, TH:5)  Ngôn ngữ lập trình Fortran  Ngôn ngữ lập trình C/C++
  3. 3.1 Ngôn ngữ lập trình Fortran  Tham khảo : http://www.liv.ac.uk/HPC/F90page.html http://iop.vast.ac.vn/~nvthanh/cours/fortran/  So sánh tốc độ tính toán: functionality F90 F77 C++ C Tính toán số 1 2 3 4 Tính toán dữ liệu song song 1 3 3 3 Dữ liệu trừu tượng 1 4 2 3 Lập trình hướng đối tượng 2 4 1 3 Lập trình hàm 1 4 2 3 Trung bình 1.2 3.4 2.2 3.2  Tính toán song song (MPI) Compiler Time (sec) F90 1339.91 F77 1550.14 C++ 2797.00
  4.  Ví dụ: MODULE Triangle_Operations IMPLICIT NONE CONTAINS FUNCTION Area(a,b,c) REAL :: Area ! function type REAL, INTENT(IN) :: a, b, c REAL :: theta, height theta=ACOS((a**2+b**2-c**2)/(2.0*a*b)) height=a*SIN(theta); Area=0.5*b*height END FUNCTION Area END MODULE Triangle_Operations ! PROGRAM Triangle USE Triangle_Operations IMPLICIT NONE REAL :: x, y, z PRINT*, 'Welcome, please enter the& & lengths of the 3 sides.' READ*, x, y, z PRINT*,'Triangle''s area: ',Area(x,y,z) END PROGRAM Triangle
  5.  I.1. Lập trình Fortran 90 Kiểu mã nguồn:  Không phân biệt chữ hoa và chữ thường  Để dễ đọc chương trình nguồn :  Luôn sử dụng câu lện: IMPLICIT NONE.  Từ khoá, tên hàm… nên viết hoa  Các khối câu lệnh nên viết lùi vào 1 hoặc 2 dấu cách (space).  Tên của các chương trình con nên viết đầy đủ sau câu lệnh END.  Từ khoá cho các đối số là tuỳ chọn. FUNCTION Area(a,b,c) REAL :: Area ! function type REAL, INTENT(IN) :: a, b, c REAL :: theta, height theta=ACOS((a**2+b**2-c**2)/(2.0*a*b)) height=a*SIN(theta); Area=0.5*b*height END FUNCTION Area
  6. Mã nguồn kiểu tự do:  Độ dài tối da trên mỗi dòng : 132 ký tự.  Chú thích : ‘!’  Nỗi các dòng lệnh: `&'  Phân cách giữa các câu lệnh : ‘;’ theta=ACOS((a**2+b**2-c**2) & /(2.0*a*b)) ! Angle \theta PRINT*, 'Welcome, please enter the& & lengths of the 3 sides.' height=a*SIN(theta); Area=0.5*b*height Mã nguồn kiểu cố định (F77)  Chú thích : ‘!’ hoặc ‘c’ tại cột đầu tiên.  Nhãn lệnh được đặt từ cột thứ 2 đến cột thứ 5  Nỗi các dòng lệnh: `&' tại cột thứ 6.  Độ dài tối da trên mỗi dòng : 72 ký tự; câu lệnh bắt đầu từ cột thứ 7
  7. Tập ký tự:  Chữ và số:  a-z, A-Z, 0-9 and _  Các ký hiệu Symbol Description Symbol Description space = Equal + Plus > Greater than - Minus < Less than * Asterisk ( Left paren / Slash ) Right paren . Period & Ampersand , Comma % Percent ‘ Single quote ! Shriek “ Double quote ? Question mark : Colon $ Dolla ; semicolon
  8. Chú thích:  Tất cả mọi ký tự phía sau dấu “!” đều là phần chú thích. ! ! Function to calculate the area of a triangle ! FUNCTION Area(a,b,c) REAL, INTENT(IN) :: a, b, c ! Three side of the triangle  Dâu “!” nằm trong chuỗi ký tự đặt giữa dẫu “ ” hoặc ‘ ’ không phải là chú thích PRINT*, “Thank you for your attention!!!” Tên (biến, hằng số, hàm số…)  Bắt đầu phải là một ký tự (a-z).  Chỉ được sử dụng các chữ, số, dấu gạch dưới.  Độ dài tối đa là 32. REAL :: 1x ! Not valid CHARACTER(LEN=8) :: user_name ! Valid name CHARACTER(LEN=8) :: user name ! Not valid
  9.  I.2. Đối tượng dữ liệu: Kiểu có sẵn (kiểu trong)  Character: CHARACTER  Boolean : LOGICAL  Numeric : REAL (and DOUBLE PRECISION) INTEGER COMPLEX CHARACTER(LEN=20) :: fullname ! String LOGICAL :: mathematician = .TRUE. ! Boolean : .TRUE. or .FALSE. REAL :: area ! Real DOUBLE PRECISION :: length ! Double precision REAL*8 :: length ! Double precision INTEGER :: index ! Integer COMPLEX :: comp_num ! x + iy
  10. Khai báo kiểu số và kiểu logic  Syntax: [,] :: [=] […] : tuỳ chọn : các kiểu như : REAL, INTEGER, LOGICAL, CHARACTER : thuộc tính như : PARAMETER, SAVE, INTENT, POINTER, DIMENSION = : Giá trị ban đầu của biến số REAL :: a, b, c INTEGER :: i, j, k REAL, DIMENSION(3) :: coords DOUBLE PRECISION :: total REAL, DIMENSION(0:9,0:9) :: latt2d, latt1d(14) LOGICAL :: well_done, in_circle Khai báo hằng số  Syntax: ,PARAMETER :: = REAL, PARAMETER :: pi = 3.1416 INTEGER, PARAMETER :: N = 100, D = 3
  11.  I.3. Biểu thức toán và phép gán Các biểu thức  2.0*pi*radius ! Numeric valued  “Ngo Van ”//name ! Character valued (where variable name =“Thanh”)  width .GT. height ! Logical valued Phép gán : =  Gán giá trị của các biểu thức bên vế phải cho đối tượng bên vế trái. a = b theta=ACOS((a**2+b**2-c**2)/(2.0*a*b)) full_name = first_name//last_name square = (a.EQ.b) Toán tử số học  ** : luỹ thừa ex.: volume = (4*pi*r**3)/3  * và / : nhân và chia ex.: area = (a*h)/2  + và - : cọng và trừ ex.: a = b-c
  12.  Ví dụ: PROGRAM Area_of_Circle IMPLICIT NONE REAL, PARAMETER :: pi = 3.14159 REAL :: r, area ! PRINT*, ‘please enter the radius’ READ*, r area = pi*r**2 PRINT*,’Circle''s area: ‘, area END PROGRAM Area_of_Circle Exercise: write a program for calculating the volume of a sphere
  13. Toán tử quan hệ  Kết quả là giá trị logic đúng hoặc sai: .TRUE. or .FALSE. Letter Symbol Description .GT. > greater than .GE. >= greater than or equal to .LE.
  14.  II.1. Câu lệnh điều khiển  Lệnh rẽ nhánh. IF statements IF … THEN … ELSEIF … ELSE … ENDIF  Lệnh lặp DO … ENDDO  Lệnh lựa chọn SELECT CASE  Nhảy không điều kiện GOTO
  15. IF Statement:  The basic form: IF ()  Nếu là .TRUE. thì thực hiện  Ex: IF (x > y) value = y IF(I/=0 .AND. J.NE.0) r = a/(i*j)  Sơ đồ khối IF (I > 12) PRINT*, “I > 12” !next statement
  16. IF có cấu trúc:  Dạng đơn giản: IF () THEN ENDIF  Ex: IF (I > 12) THEN PRINT*, “I > 12” END IF  Sơ đồ khối IF (I > 12) THEN PRINT*, “I > 12” ENDIF
  17.  IF có thêm lệnh rẽ nhãnh ELSE : IF () THEN ELSE ENDIF  Ex: IF (I > 12) THEN PRINT*, “I > 12” IF (I > 12) THEN ELSE PRINT*, “I 12” PRINT*,“I
  18.  IF có thêm rẽ nhãnh kiểu ELSEIF : IF () THEN IF (I > 12) THEN ELSEIF () THEN ELSE ELSEIF(I==12) THEN PRINT*, “I > 12” ENDIF  Ex: I = 12 IF (I > 12) THEN PRINT*, “I > 12” PRINT*, “I = 12” PRINT*, “I < 12” ELSEIF(I==12) THEN PRINT*, “I = 12” ELSE PRINT*, “I < 12” ENDIF END IF
  19. Vòng lặp DO :  Số vòng lặp xác định:  Ex: DO I=1,100 PRINT*, I ! i is 1, 2, … 100; 100 iterations ENDDO  Syntax: DO =,,[,] ENDDO DO … WHILE Loops:  Vòng lặp không xác định:  Ex: DO WHILE (a == b) … ENDDO
  20.  SELECT CASE Construct: SELECT CASE (I) CASE(1); PRINT*, “I == 1” CASE(2:9); PRINT*, “I >= 2 and I = 10” CASE DEFAULT; PRINT*, “I = 10” PRINT*, “I = 2 and I
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
19=>1