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
lượt xem 4
download
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.
Bình luận(0) Đăng nhập để gửi bình luận!
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
- Ngo Van Thanh, IOP 11/2011
- 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.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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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
- 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.
- 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
- 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
- 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
- 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
- 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
- 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
- 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
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng Tin học phần 2 - Chương 1: Làm quen với Excel 2010
38 p | 57 | 14
-
Bài giảng Tin học (Phần 1: Tin học ứng dụng)(cao học Vật lý): Chương 2 - TS. Ngô Văn Thanh
84 p | 89 | 9
-
Bài giảng Tin học cơ sở 1: Phần 2
87 p | 51 | 8
-
Bài giảng Tin học cơ sở 1: Phần 1
110 p | 38 | 7
-
Bài giảng Tin học: Phần 1 - Trường TC Kinh tế Kỹ thuật Hòa Bình
73 p | 66 | 6
-
Bài giảng Tin học: Phần 2 - Trường TC Kinh tế Kỹ thuật Hòa Bình
186 p | 66 | 6
-
Bài giảng Tin học đại cương (Phần 1): Chương 1 - Phạm Đăng Hải
121 p | 16 | 5
-
Bài giảng Tin học đại cương (Phần 1): Bài 1.1 - Thông tin và tin học
50 p | 14 | 5
-
Bài giảng Tin học đại cương (Phần 1): Bài 3.1 - Các hệ thống quản lý thông tin
28 p | 8 | 5
-
Bài giảng Tin học căn bản: Phần 1 Chương 1 - KS. Lê Thanh Trúc
24 p | 126 | 5
-
Bài giảng Tin học ứng dụng (Phần 1): Chương 1 - Kỹ thuật soạn thảo văn bản nâng cao
59 p | 11 | 5
-
Bài giảng Tin học (Phần 1: Tin học ứng dụng)(cao học Vật lý): Chương 1 - TS. Ngô Văn Thanh
49 p | 85 | 5
-
Bài giảng Tin học (Phần 1: Tin học cơ sở)(cao học Vật lý): Chương 1 - TS. Ngô Văn Thanh
61 p | 63 | 5
-
Bài giảng Tin học đại cương (Phần 1) - Chương 1: Thông tin và biểu diễn thông tin
40 p | 17 | 3
-
Bài giảng Tin học (Phần 1: Tin học cơ sở)(cao học Vật lý): Chương 2 - TS. Ngô Văn Thanh
26 p | 78 | 3
-
Bài giảng Tin học: Chương 1 - Trường CĐ Cộng đồng Lai Châu
32 p | 53 | 2
-
Bài giảng Tin học đại cương (Phần 1): Chương 1 - TS. Nguyễn Kim Hiếu
8 p | 45 | 1
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn