1. Trang chủ
  2. » Luận Văn - Báo Cáo

Giáo trình hóa tin học

360 15 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

Thông tin cơ bản

Định dạng
Số trang 360
Dung lượng 5,72 MB

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

Nội dung

PHƯƠNG PHÁP GIẢI HỆ PHƯƠNG TRÌNH VI PHÂN ĐỘNG HOÁ HỌC XÁC ĐỊNH Cơ CHẾ PHÀN ỨNG HOÁ HỌC...287 V.1.. Lời nói đẩuHoá tin học - môn khoa học liên ngành ứng dụng phương pháp tính toán, xử lí

Trang 1

T R Â N V Ĩ N H Q U Ý

Trang 3

Mục lục

Lời nói đẩu 7

Chương Mở đầu NGÔN NGỮ LẬP TRÌNH PASCAL VÀ CÁC THUẬT TOÁN TÌM NGHIỆM Cơ BÀN DÙNG TRONG HOÁ HỌC 9

0.1 Ngôn ngữ Turbo P a sca l 7 0 9

1 Khởi đ ộ ng T u rb o P ascal 7 0 9

2 Làm v iệ c trong m ôi trường Tu rbo P asca l 9

3 Kí hiệu cơ bản và các đại lượng trong Turbo P a s c a l 10

4 Biểu thức và hàm mẫu 11

5 Cấu trúc chương trinh Turbo Pascal 13

6 Các toán tử 15

7 Biến đếm , m ảng, chu trìn h 18

8 Giải thích 20

9 Case of 21

10 Các chương trình con : PROCEDURE (Thủ tục) và FUNCTION (hàm) 21

11 Kiểu dữ liệu c ó cấu trú c (R E C O R D ) 27

12 Kiểu dữ liệu c ó cấu trúc: tệp (F IL E ) 28

0.2 Các phương p háp tìm nghiệm phương trình đại sô' 30

1 Phương ph áp dây c u n g 30

2 Phương ph áp tiế p tuyến - Phương pháp N e w to n 32

3 Phương pháp kết h ợ p 35

4 Phương ph áp chia đôi khoảng chứa n g h iệ m 37

5 Phương pháp lặp .40

6 Phương p h áp bước lặp giảm dần 41

Tài liệu tham khảo chương MỞ đầu 4 4 Chương 1 CÁC PHƯƠNG PHÁP NHIỆT ĐỘNG XÁC ĐỊNH HẰNG SÔ CÂN BẰNG HOÁ HỌC 45

/ 1 Phương p h á p phương trình N e rn st 4 5 Các b à i tập ứng dụng phương pháp phương trinh N e rn s t 60

Các b à i toán tính n g ư ợ c 63

1.2 Phương p h á p Tem kin - S ch w a rsm a n 6 5 C á c b ài tập ứng dụng phương pháp Temkin - S ch w a rsm a n 96

Các b à i toán n g ư ợ c 9 9

Trang 4

Các bài tập ứng dụng phương pháp thê phi s a o ??6

C ác bài toán tinh n g ư ợ c 7

Tài liệu tham khảo chương 1 121

Chương 2 PHƯƠNG PHÁP cơ HỌC THỐNG KẺ XÁC ĐỊNH HẰNG SỐ CÂN BẰNG HOÁ H Ọ C 123

II.1 Sơ lược về li thuyết Co học thống k ê 123

1 Hàm phân bố của hè đoan n h iê t 125

2 Hàm phân bô’ đối với hệ đẳng n h iệ t 125

11.2 Áp dụng H thuyết Co học thống kê tinh hàng s ố cản bàng hoá h ọ c 128

1 Hoá thế theo Cơ học thống k ê 129

2 Tinh hằng sô’ cân b ằ n g 130

11.3 Tinh tổng trạng thái (tổng thống k ê ) 132

1 Đôi với khi đơn nguyên tử 133

2 Tổng thống kê cùa phân tử khi hai nguyên t ử 136

3 Đối với phàn tử nhiéu nguyên tử (từ ba nguyên từ trờ lê n ) 149

II.4 ứng dụng: Tinh hàng s ó cân bàng của các phản ứng giữa các chất k h í 151

1 Tinh hằng sô' cân bằng của các phản ứng phân li ra nguyên tử 151

2 Tính hằng sô cân bằng cùa phàn ứng không phản li ra ng uyên t ử 199

Các bài tập chương 2 207

C á c bài toán tinh n g ư ợ c 210

Các bài loàn lo ạ i k h á c 272

Tài liệ u th a m k h ả o c h ư ơ n g 2 213

Chương 3 NGHIÊN cứu TÍNH CHẤT HOÁ LÍ HỆ PHÀN ỨNG CÂN BẰNG ở NHIỆT ĐỘ CAO 215

III 1 Li thuyết hệ cân b à n g 215

1 Ba định luật chi phối hệ phàn ứng cân b ằ n g 215

2 Nhặn x é t 219

111.2 Phương pháp N e w to n 220

1 Khai triển T a y lo r 220

2 Giải bài toán nghiên cứu hê cân bằng ở nhièt đô c a o 223

111.3 Phương pháp Newton cải tiến 231

1 Thiết ỉảp hệ phương trinh xác đinh nồng đô các cấu t ử 231

Trang 5

3 Bài toán cụ thể và chương trình giải theo phương pháp Newton cải tiến 235

4 B à i to á n cụ th ể g iả i b ằ n g cả hai phương p h á p N e w to n v à N e w to n c ả i tiế n đ ể s o s á n h 239

III 4 Cân bàng ion trong dung d ịc h 2 53 Các b à i tập ứng dụng của chương 3 261

Tài liệu tham khảo chương 3 264

Chương 4 LÍ THUYẾT HỒI QUY 265

IV 1 N ộ i dung của phương p h á p 265

1 N guyên lí tổng binh phương độ lệch cực tiể u 265

2 Phương pháp xá c định hệ sô' của phương trìn h 265

IV 2 Phép khử G a u s s 268

1 Phương pháp tổng q u á t 268

2 Sơ đồ G auss bó g ọ n 271

IV 3 Các b à i toán hoá học sử dụng li thuyết hồi q u y 273

1 Tinh các hệ s ố của phương trình IgKp = F(T) xuất phát từ các dữ liệu thực n g h iệ m 273

2 Chương trình 274

3 C ác ứng dụng khác của lí thu yết hồi q u y 276

Tài liệu tham khảo chương 4 286

Chương 5 PHƯƠNG PHÁP GIẢI HỆ PHƯƠNG TRÌNH VI PHÂN ĐỘNG HOÁ HỌC XÁC ĐỊNH Cơ CHẾ PHÀN ỨNG HOÁ HỌC 287

V.1 Phương pháp tích phân s ố hệ phương trình vi phân mô tả ca c h ế phản ứng hoá học phức tạ p 287

1 Nội dung phương p h á p 289

2 Đ ánh giá độ chính xá c của phương pháp g iả i 294

V.2 Tinh toán động học quá trình clo hoá etilen và phân tích độ chinh xác của thuật to á n 29 6 1 Hệ phản ứng hoá học và cơ c h ế 296

2 Hệ phương trình vi ph ân m õ tả cơ chê phản ứng clo hoá e t ile n 297

3 Phương pháp giải hệ phương trình vi phân m ô tả cơ c h ế phản ứng clo hoá e tile n 301

4 Đ ánh giá độ chính x á c của kết quả tích phân s ố hệ phương trình (5 1 2 ) 303

5 Giải gấn đúng phương trình vi phân thường 307

6 Chương trình, kết quả cá c đố thị của phép tích phân s ố hệ (5 1 2 ) 309

B à i tập ứng dụng chương 5 316

Tài liệu tham khảo chương 5 322

Trang 6

Mỏ đầu 323

VI 1 Co sỏ của li thuyết R R K M 323

1 Mô hình của lí thu yết R R K M 323

2 Biểu thức của S k 1(E.đE tỗE )/ k 2 .325

3 Biểu thức của ka( E * ) 326

4 Biểu thức của ku„, th e o lí thu yết R R K M 330

5 Giới hạn áp suất c a o 330

6 Giới hạn áp suất th ấ p 332

7 Những thừa sô thống kê 332

8 S ố trạng t h á i 333

9 M ật độ các trạng thái lượng tử N (E ) 333

VI.2 Các phương pháp tinh s ố trạng thái lượng tử 334

1 Sự tinh toá n trực tiếp các trạng thái dao đ ộ n g 334

3 Phép gẩn đúng của VVhitten Rabinovitch 337

VI.3 Ap dụng li thuyết RRKM nghiên cứu động học phản ứng đơn phân tử 339

1 Các đại lượng cẩn tính khi nghiên cứu các phàn ứng đơn phân tử 339

2 Áp dụng: Tính hằng s ố tốc độ của phản ứng đồ ng phân hoá m e tyl is o x ia n u a 343 3 C ác chương trinh m áy tính áp dụng cho bài toán nghiên cứu độ ng học phản ứng đổng phân hoá bằng nhiệt m etyl is o x ia n u a 348

4 Bài tập .355

Tài liệu tham khảo 358

Trang 7

Lời nói đẩu

Hoá tin học - môn khoa học liên ngành ứng dụng phương pháp tính toán, xử lí thông tin vào việc nghiên cứu các vấn đề hoá học, ngay từ khi ra đời đã thúc đẩy sự phát triển mạnh mẽ mọi lĩnh vực của môn khoa học, nhất

là lĩnh vực nghiên cứu và giảng dạy lí thuyết

Giáo trình Hoá tin học (Các bài toán nhiệt động, thống kê và lí thuyết phản ứng hoá học) trình bày từng bước phát triển của phần lí thuyết các hệ

vĩ mô của hoá học và cách ứng dụng tin học vào trợ giúp lí thuyết này vượt qua trở ngại trong sự tiến bộ của mình

Phần cốt lõi, nền tảng cơ bản của giáo trình là sự áp dụng Cơ học thống kê vào các vấn đề lí thuyết hoá học (lí thuyết cân bằng hoá học

và lí thuyết phản ứng hoá học) Giáo trình là bản tồng kết các nội dung nghiên cứu trong các bài tập lớn, luận văn của sinh viên, học viên cao học, Nghiên cứu sinh (lĩnh vực lí thuyết hệ vĩ mô) trong các năm vừa qua ỏ khoa Hoá học, trường Đại học Sư phạm Hà Nội Nội dung của giáo trình được sắp xếp theo trình tự phát triển của vấn đề bắt đầu từ:

+ Ngôn ngữ lập trình Pascal và các thuật toán tìm nghiệm cơ bản dùng

trong hoá học - chương Mở đẩu, tiếp đến các chương:

+ Các phương pháp Nhiệt động xác định hằng số cân bằng hoá học -

chương 1.

+ Phương pháp Cơ học thống kê xác định hằng số cân bằng hoá học -

chương 2.

+ Nghiên cứu hệ cân bằng ở nhiệt độ cao - chương 3.

+ Lí thuyết hổi quy - chương 4.

+ Phương pháp giải hệ phương trình vi phân động hoá học nghiên cứu

Trang 8

hoá học một cách chắc chắn và có thể vận dụng trong các nghiên cứu của mình ỏ các bậc học tập hiện tại và cao hơn, nếu theo dõi một cách tuần tự các chương của giáo trinh.

Ngôn ngữ lập trình của cuốn sách là ngôn ngữ Pascal, ngôn ngữ mà các sinh viên Hoá học đều được học

Các chương của giáo trinh đều có những bài tập để người đọc có Ihể vận dụng các vấn đề lí thuyết vào giải quyết các bài toán cụ thể của tất cả các bộ môn Hoá học Các bài tập này với nội dung và sô' lượng phong phú

đã được giải cẩn thận và nghiêm túc Tuy vậy, giáo trình chỉ đưa ra các đáp

số ngắn gọn để người đọc có thể kiểm tra các tính toán của mình Phần chương trình giải các bài tập này có thể sẽ đưa vào đĩa CD kèm theo cuốn sách (nếu có đủ điều kiện làm điều đó) Một cuốn Bài tặp Hoá tin học kèm theo cuốn giáo trình này cũng sẽ là rất bổ ích trong thời gian tới

Tác giả chân thành cảm ơn Thạc sĩ Ngô Tuấn Cường đã sửa chữa và đánh máy bản thảo một cách rất nghiêm túc, Thạc sĩ Nguyễn Văn và Thạc

sĩ Nguyễn Đình Độ đã ưng thuận để tác giả được sử dụng các chương chủ yếu trong luận văn Cao học của mình làm nội dung để viết các Chương Mở

đầu, Chương 5 và Chương 6 Những đóng góp của các Thạc sĩ đã giúp tác giả hoàn thành được cuốn sách trong điều kiện thời gian và vật chất cực kì

eo hẹp như hiện nay

Cuối cùng, tác giả chúc các bạn đọc thành công trong việc đọc cuốn sách và ứng dụng nó vào việc nghiên cứu của mình Tác giả cũng thiết tha mong các bạn đọc góp ý thẳng thắn cho những thiếu sót không thể tránh khỏi về nội dung và hình thức của cuốn sách để nó có thể phục vụ các bạn một cách đắc lực hơn trong tương lai

Xin chân thành cảm ơn

T Á C G IẢ

Trang 9

Chương Mở đẩu

NGÔN NGỮ LẬP TRÌNH PASCAL

VÀ CÁC THUẬT TOÁN TÌM NGHIỆM

Cơ BẢN DÙNG TRONG HOÁ HỌC

Tổ hợp các phím Alt+X: Ra khỏi chương t r ì n h TP

2 Làm việc trong môi trường Turbo Pascal

- Soạn th ả o trong TP: Nói chung việc soạn th ả o trong T P cũng

giông n h ư tro n g các hệ so ạn thảo k hác (Word, Notepad )

Phím ( E n t e r J ) : d ù n g để tạo dòng mới

Bốn phím m ũ i tê n ( < - í - > ị ) : dù n g đê dịch chuyển con trỏ

Các phím PgDn, PgUp dù n g để lậ t trang

Phím Home: đế đưa con trỏ vê' đ ầ u dòng

Phím End: đư a con trỏ về cuối dòng

Phím I n s e rt: đê t h a y đôi chê độ chèn hoặc đè

Phím Delete: đ ể xoá kí tự tạ i vị tr í con trỏ

Phím («- Backspace): đế xoá kí tự bên tr á i con trỏ

Tổ hợp các phím C trl+K B: đế đ á n h d ấu đ ầ u khối

Tô hợp các ph ím C trl+ K K: để đ á n h d ấ u cuối khối

Tô hợp các p h ím C trl+ K C: đề sao chép khôi đã đ á n h dấu

Trang 10

Tổ hợp các phím C trl+ K Y: đẻ xoá khôi đã đ á n h dấu.

Tố hợp các phím Ctrl+K V: để chuyển khối đã sao chép tới vị tr í contrỏ

C hữ cái: T P d ù n g các chữ cái tiế n g Anh viết hoa: A B c z hoặc

viết thường: a b c z và các chữ sô 0, 1 9

Dâu:

+ - * / : Các phép toán sô học: cộng, trừ, n h â n , chia

= > > = < < = <> : Các phép toán q u an hệ: bằng, lớn hơn, không

nhỏ hơn nhỏ hơn không lỏn hơn khác

: Phép gán

: Chấm th ậ p phân, dấu h ết chương trìn h

: Mô tả

: D ấu nháy dùng cho h à n g v ă n bản

T ừ k h o á : AND DO GOTO FUX CTIO N\

3.2 Các đại lượng

H ằng (const)

Có hai loại hãng: h ả n g sô và h ằ n g v ă n bàn Các h ằ n g sô được biểu diễn dưới d ạn g nguyên và thực Ví dụ: 1076 123 là các h ằ n g nguyên

Trang 11

Các h ằ n g th ự c có hai cách biểu diễn:

Dòng là một dãy kí tự, sô', kí hiệu và k h o ản g cách

Tên gọi (in d en tifie r)

Tên gọi là một dãy kí tự b ắ t đầu bằng chữ cái, tiếp theo đó là chữ cái hoặc chữ sô' Có th ể dùng các dấu nôi (_) Trong TP các tên gọi phân biệt

nh a u ở 8 kí hiệu đầu tiên Việc viết tên cần tuân th ủ các nguyên tắc sau:+ Không có k h o ả n g cách và cốc dâu

+ K hông đ ặ t chữ số lên đầu

Tên gọi được d ù n g đe đ ặ t tê n cho các biến, hàm và hằng

Biến

Trong T P có 4 loại biến cơ bản:

+ Biến nguyên (IN T E G E R ): Có giá trị là các số nguyên.

+ B iến thự c (REAL)- Có giá trị là các số thực.

+ B iến k í tự (CHAR)- Có giá trị là các chữ cái v iế t hoa và không

v iết hoa, với 10 chữ sô' th ậ p p h â n từ 0 đến 9

+ B iến logic (BOOLEAN)- Chỉ có hai giá trị: đ ú n g (TRUE) và sai

Trang 12

4.2 Hàm mầu

H àm m ẫ u với các biến nguyên

Sau đây là một số h à m m ẫ u mặc định d ù n g với biến n g u y ên của TP

ABS(x) cho giá trị tu y ệ t đối của X

SUCC(x) cho giá trị sau x: (x + 1)

PRED(x) cho giá trị trước x: (x - 1)

DIV phép chia hai số n guyên cho k ế t q u ả nguyên

X MOD y = X - (x DIV y)*y

H àm m ẫu với các biến thực

ABS(x) giá tr ị t u y ệ t đối của X

TRUNC(x) cho p h ầ n nguyên của X

Các h àm m ẫu với biến k i tự

ORD(c) (c kiểu CHAR) cho th ứ tự của c tr o n g b ả n g kí tự PRED(c) (c kiêu CHAR) cho kí tự trước c tr o n g b ả n g

succ (c) (c kiểu CHAR) cho kí tự sa u c tro n g b ả n g kí tự CHR(i) (i kiểu INTEGER) cho kí t ụ có số t h ứ tự 1

Các h àm m ẫu với biến logic

ORD (FALSE) = 0

Trang 13

4.3 Biểu thức

Biểu thức là một dãy các phép toán tác dụng lên các hằng, biên và hàm Việc viết các biểu thức T P cần tu â n t h ủ các quy tắ c sau:

+ Không để hai phép toán đứng liền n hau

+ Không v iế t h a i h ằ n g hoặc hai biến liên nhau

T h ứ tự ưu tiên các p h ép tin h

Trong các biểu thức của TP, các phép tính được ưu tiên theo thứ tự sau:

N ếu cùng mức ưu tiê n thì thực hiện tr á i trước, phải sau

5 Cấu trúc chương trình TURBO PASCAL

Chương t r ì n h T P được hợp th à n h từ các p h ầ n sau: đ ầ u chương

tr ìn h , p h ầ n mô tả, t h â n chương tr ìn h và k ế t thúc

5.1 Đấu chương trinh

P h ầ n đ ầ u của chương tr ìn h bao gồm:

PROGRAM tên_chương_trình;

5.2 Phẩn khai báo dữ liệu

P h ầ n k h a i báo gồm có 6 mục: khai báo n h ã n (địa chỉ), hàng, kiểu biến, t h ủ tục và h à m (chương t r ì n h con)

K h a i báo n h ă n (địa chỉ)

N h ã n là một s ố nguyên dương có không quá 4 chữ số Khai báo

n h ã n liệt kê t ấ t cả các n h ã n sử dụ n g trong khối và d ù n g để định vị các

to á n tử khi cần điểu k h iể n chương t r ìn h h o ạ t động ngoài quy tắc thông

th ư ờ n g (từ t r ê n xuống dưới)

Trang 14

Cách khai báo:

CO NST tên h à n g 1 = giá trị h à n g 1;

tên h à n g 2 = giá trị h ằ n g 2 :

K hai báo kiêu (T Y P E )

TYPE dù n g để xác định các kiêu dữ liệu mới so với 4 kiê u đã có của

rp (Integer Real C h a r và Boolean)

Cách khai báo:

TYPE Tên kiểu 1 = (các biến của kiểu 1):

Tên kiêu 2 = (các biến của kiê u 2);

K hai báo biến

Nguyên tác r ấ t cơ bản cùa TP là trong chương t r ì n h d ù n g biến nào

phải mô tả biên đó Khác với một sô ngôn ngữ khác T P kh ô n g cỏ các biến

mặc định

Cách khai báo:

VAR tê n biến 1 tên biến 2 kiểu 1;

tên biến 3 tên biến 4 kiểu 2;

Khai bán thù tục, hàm (xem p h ầ n 2.8).

5.3 Phán thân chương trinh

T h ân chư ơng t r ì n h bao gồm các toá n tử (còn gọi là các lệnh) để th ạ c hiện công việc của chương trìn h

Trang 15

Tên biến:= biêu thức, biến, hằng, giá trị;

Khi gặp lệnh này, k ế t quả tín h to án của biểu thức vê phải hoặc giá trị biến, h ằ n g vê p h ả i được gán cho biến v ế trái

6.2 Toán tử chuyển (GOTO)

6.3 Toán tử hợp thành

BEGINs,;

Trang 16

trong dó V, v, v„ là các biên Khi sử dụ n g READ cần lưu ý:

- Giá trị của các biến được đưa vào qua bàn phím th eo đ ú n g kiêu đã khai báo ỏ p h ầ n k h a i báo của chương trình

- Đọc xong con trỏ tr ê n m à n hình không tự động xuông dòng

WRITE (các biêu thức và các biến):

Trong d ấu ngoặc đơn có th ể là một biêu thức hoặc biến hoặc hằng Hác quy ước trong việc sủ dụ n g lệnh WRITE n h ư sau:

- S au mỗi biểu thức, biến hoặc h ằn g phái đ ậ t một d ấ u phảy

- Giá trị của biêu thức biến, h ằ n g được viết th e o b a cách sau:

Cách 1: Không viết gì th ê m sa u biếu thức, tê n biế n hoặc tê n h à n g

gọi chung là tên):

WRITE (Vị V v n);

Giá trị được viêt r a dưới d ạ n g dấu phảy động

Cách 2:

Dạng tổng quát:

Trang 17

W RIT E (v„ v2: m 2, v„:mn);

tro n g đó nrij (i = 1, .n) dù n g để quy định số vị tr í được d à n h cho đại

lượng th ứ i được đưa r a m à n h ìn h khi thực hiện câu lệnh

6.4.2.3 G hi ra đoạn k í tự: Để viết lòi giải thích, ch ú n g ta đ ặ t các

lòi giải th íc h đó vào tr o n g d ấu n h á y ‘

W R ITE('Đ oạn kí tự');

W R IT E L N (’Đoạn kí t ụ ’)

6.5 Toán tử diều kiện

D ạn g tổng q u át:

I F biểu th ứ c T H E N Việc 1 ELSE Việc 2

tro n g đó biểu th ứ c n h ậ n giá trị logic Nếu biểu thức n h ậ n giá tr ị đúng (TRUE) thì thực h iệ n Việc 1, ngược lại:

+ Nếu có E L S E th ì thực hiện Việc 2

+ Nếu kh ô n g có ELSE thì không làm gì Sau đó chuyê n sa n g toán

tử k ế tiếp IF

D Ạ I T ỀĨ Ọ C T H A I N G U Y Ê N

17

Trang 18

Chú ý:

- Trước ELSE không có d ấ u chấm phảy (;)

- Việc 1 và Việc 2 có th ể là các lệnh hợp t h à n h ( đ ặ t tro n g B E G IN

Ngoài các biến đơn giản trong các tín h toán toá n học, v ậ t lí hoá học còn cần dù n g các biến có chi sô a„ a,r b,|k (Ví dụ: các t h à n h p h ầ n cùa một vectơ, các p h ầ n tử của ma trận, )

Chú ý: Chỉ sô' buộc phải có giá trị nguyên.

+ n là giá tr ị cực đại của chỉ sô;

+ Sau từ khoá OF là kiểu biếu diễn của các p h ầ n tử của m ang(INTEGER, REAL hoặc CHAR )

C ũng có th ể khai báo m ả n g như một TYPE Cách k h a i báo n h ư sau:

Trang 19

m l = ARRAY [1 10] of in te g er m2 = ARRAY [1 100] of real;

VARb: m l;

a: m 2 ;

7.2 Vòng lặp xác định: toán tử FOR

D ạn g tổ ng quát:

FOR biến đếm = giá trị đ ầ u TO giá trị cuối DO Công việc;

FOR biến đếm = giá tr ị đ ầ u DOWNTO giá trị cuối DO Công việc;

Có th ề diễn giải các vòng lặp tr ê n n h ư sau:

Việc th ự c h iệ n Công việc được lặp lại một số lần xác định tương ứng với các giá tr ị của biến đêm từ giá trị đầu đến giá trị cuối của nó Vòng lặp FOR được thực hiện theo các bước sau:

1 Tính giá trị đầu, giá trị cuôi của biến đếm

2 Bỏ q u a vòng lặp FOR n ế u biến đếm đã có giá trị n ằm ngoài

k h o ả n g giá trị nói trên

3 Biến đ ếm n h ậ n giá trị đầu

4 Thực hiện công việc

5 Biến đếm n h ậ n giá tr ị tiếp theo, chương tr ìn h q u a y về điếm 4 cho đến khi biến đếm có giá tr ị đứng sa u giá trị cuối cùng một đơn vị thì ra khỏi vòng lặp

7.3 Toán tử WHILE (vòng lặp không xác định)

D ạn g tổng quát:

W H ILE (biểu thức logic) DO

BEGIN Công việc

END;

Trang 20

W H ILE cũng dù n g để lặp lại Công việc.

Vòng lặp WHILE DO được thực hiện n h ư sau:

1 Kiểm tr a biểu thức logic

2 N ếu TRUE thực hiện công việc;

Nếu FALSE thì thực hiện Công việc sa u từ k h o á End; của vòng lập WHILE (tức là ra khỏi vòng lặp WHILE)

3 Q uay lại bước 1 nếu bước 2 chưa k ế t thúc

U N TIL biểu thức logic;

Trong vòng lặp n à y không cần BEGIN END

Vòng lặp R EP EAT được thực hiện n h ư sau:

1 Thực hiệ n các Công việc

2 Kiểm t r a biểu thức lôgic N ếu FALSE th ì q u a y lại bước 1, nếu TRUE ra khỏi vòng lặp REPEAT

Chú ý: C ũng giống n h ư với WHILE, sự th ự c h iệ n các Công việc cần

phải dẫn đến các th a y đổi giá tr ị của biểu thức lôgic để có t h ế k ế t th úc vòng lặp

Trang 21

CASE 0 F được thực hiện n h ư sau:

+ T ín h giá trị của biểu thức

+ Nếu giá tr ị biểu thức b ằ n g h ằ n g nào thì thực hiện Công việc sau

10 Các chương trình con: PROCEDURE (Thủ tục) và FUNCTION (hàm)

P R O C E D U R E và FUN CTIO N là tậ p hợp toán tử tạo nên một khối con có k h ả n ă n g sử d ụ n g n h iề u lần ở n h ữ n g ndi k hác n h a u tro n g chương

t r ì n h lớn Ưu điểm:

+ Tiết kiệm bộ nhớ và công sức lập trìn h

+ Tạo cho chư ơng tr ìn h một cấu trúc rõ r à n g và gọn

Trang 22

10.1 FUNCTION (hàm)

F UN C TIO N là phương tiệ n để tạo các h à m mới được sử d ụ n g trong chương t r ìn h

V i dụ: Trong các h à m m ẫ u của T P kh ô n g có h à m giai th ừ a n! Vậy

muốn tín h các biêu thức có chứa n! có thê lặp một chương t r ì n h con dưới dạng FUNCTION (hàm) tương đương với việc định n g h ĩa h à m mới bên cạnh các h à m sin, COS có sẵn Để làm công việc này, cần thực hiệ n hai bước b ắ t buộc s a u đây:

+ Khai báo FUNCTION

+ Gọi FUNCTION' trong chương tr ìn h chính

10.1.1 K h a i báo

T hủ tục k h a i báo FUNCTION n h ư sau:

FUNCTION tê n h à m (các t h a m số h ìn h thức: kiểu của t h a m số): kiêu

dủ liệu của hàm :(*các k hai báo cục bộ: k hai báo Label Const Type V ar của riêngFunction nếu cần*)

P h ầ n t h â n chương t r ì n h con (CTC) - F U N C T I O N b ắ t buộc phải kết

th úc b ằn g lệnh gán giá trị cho tên hàm Do vậy khi sử d ụ n g ta có thể dùng tên C T C -F U N C T IO X chứa kết quà đế viết tr o n g các biểu thức

P h ầ n k h a i báo cục bộ chì có tác d ụ n g tr o n g F U N C T IO N , kh ô n g có tác dụng trong chư ơng t r ì n h chính Cần t r á n h k h a i báo t r ù n g lặp các tên giữa CTC và chư ơng t r ì n h chính

V i dụ: Với h à m Giai th ừ a n! ta có

FUNCTION G iai_thưa(n: integer): in te ger:

V ar i.k: integer:

Begin

Trang 23

i:=0 ; k:=l; {phải dùng biến địa phương để chứa kết quả trung gian} while i<n do

begin i:=i+l;

S au khi đã k h a i báo thì việc sử d ụ n g F UN C TIO N tro n g chương

t r ì n h chính đơn giản n h ư đối với các h àm m ẫu khác Ta chỉ cần viết:

Biến:= tên hàm (các th a m sô’ thực);

Trang 24

th am số này vẫn giữ nguyên giá trị đã bị th a y đổi tr o n g P R O C E D U R E+ Các tham số không được đặt sau chữ Var là các th a m số giá trị hay ngắn gọn hơn là t h a m t r ị Đó là các tham số mà CTC -P R O C E D U R E chì (có quyền) d ù n g giá tr ị của chúng mà không (đ ư ợ c quyền) t h a y đôi giá trị của chúng.

Đê’ p h â n biệt kĩ hơn hai loại th a m số này, ta đưa r a ví dụ sau:Program Tham_so;

V ar

a.b: in te ger;

(* - - *)Procedure Thidu_thamso(x: integer: V ar y: integer);

a:=0; b:=3:

Thidu_tham so(a.b):

w riteln (a :6 b:6 );

End

Kêt quả cho ra:

1 4 (kêt quả do lệnh viết ra m àn h ình n ằm tr o n g Procedure)

0 4 (kêt quả do lệnh viêt ra màn hình sau khi đã ra khỏi Procedure)

Trang 25

T ro n g C T C -P R O C E D U R E nói trên, có hai lệ nh làm th a y đổi giá trị của a và b b à n g cách t ă n g th ê m 1 Trước khi gọi PROCEDUR E, hai t h a m

số thực a và b có giá tr ị a = 0, b = 3 Lệnh ghi r a m à n h ìn h Writeln(x,y)

n à m tro n g PR O C E D U R E cho k ế t quả 1 và 4 tư ơng ứng với giá trị của X

và y tro n g nội bộ PROCEDURE Tuy n hiê n sa u khi ra khỏi PROCEDUR E, lệ nh ghi r a m à n h ìn h w riteln(a,b) báo cho ta chỉ có b giữ

n guyên giá trị đã bị th a y đổi trong CTC vì b là th a m biến, còn a vẫn giữ nguyên giá tr ị của nó từ trưóc khi gọi t h ủ tục (tức là a v ẫ n b ằ n g 0 vì a chỉ là t h a m trị)

N h ư vậy, khi chuyể n một th a m sô cho C T C -P R O C E D U R E , nếu ta

m uốn bảo vệ giá t r ị của th a m số đó khỏi bị CTC "vô t ìn h p h á ” thì th a m

s ố đó phải dược d ù n g n h ư t h a m trị Còn một th a m số m uôn d ù n g để lấy

k ế t q u ả t h ì t h a m sô đó p h ả i là t h a m biến

Với ý n g h ĩa đó, tê n h à m FUNCTION đóng vai trò n h u một th a m biến; còn t h a m số tro n g p h ầ n khai báo của F UN C TIO N là t h a m trị

10.2.2 S ử d ụ n g P R O C E D U R E

Khi m uôn gọi một t h ủ tục để thực hiện thì chỉ cần câu lệnh sau:

Tên t h ủ tục (danh sách các th a m sô thực);

D anh sá ch các t h a m sô thực phải tu â n theo các đòi hỏi sau:

- Bàng về sô lượng, theo đú n g th ứ tự

- Tương ứ n g về kiểu và quy tắc mô tả với các th a m số h ìn h thức

tr o n g p h ầ n k h a i báo

10.3 Lựa chọn giũa PROCEDURE và FUNCTION

Khi q uyết đ ịn h lập CTC chúng ta cần xác địn h hai điều sau:

Đ iều 1: CTC là FUN CTIO N hay P ROCEDURE?

CTC là FUNCTION khi và chỉ khi thoả mãn đồng thời các yêu cầu sau:+ Nếu ta m uôn n h ậ n lại một (và chi một) kết quá;

+ Kết q u ả đó p hái là kiêu đơn gián:

+ Tên CTC (chứa k ế t quả), dù n g đê viết trong các biểu thức

Trang 26

Nếu không th oả m ã n các yêu cầu tr ê n thì ( TC là P R O C E D l RE.

Vi dụ: Viết CTC tín h bình phương của một số

Để hiể u rõ cách sử dụ n g các CTC này ta xét tiếp ví dụ sa u: Già sử trong chương t r ì n h chính cần tính c = a ' + b" thì:

- Nêu dù n g FUNCTION’ có th ể viết

Nếu có t h a m s ô 'th i là t h a m b i ế n hay t h a m t r ị

Trang 27

- Các th a m sô đóng vai trò cu ng cấp "tư liệu d ầ u vào" sẽ là các

t h a m t r ị

- Các k ế t quả th u lại đ ư ợ c thì đó là th a m biến

11 Kiểu dữ liệu có cấu trúc (RECORD)

Chúng ta đã biết ARRAY (mảng) là kiểu dữ liệu có cấu trúc nhưng chỉ bao gồm các phần tử có cùng kiểu RECORD (bản ghi) dùng đề tạo một kiêu

dữ liệu có câu trúc nhưng bao gồm các phần tử có kiêu khác nhau

S au khi đã mô tả bản ghi, ta phải k h a i báo các biến có kiểu thuộc

bả n ghi vừa mô tả trước khi dùng D ạn g tổng quát:

VAR tên biến: tên bản ghi;

T rong t h â n chương t r ì n h với các lệnh vào/ra, ta cần v iế t theo th ứ

tự sau:

tê n biên, tê n trường (tên trường riêng nếu có)

Trang 28

11.3 Lệnh WITH

Để làm đơn giản cách viết khi d ù n g bản ghi, c h ú n g ta d ù n g lệnh:

WITH tên biến DO BEGIN

END;

Trong p h ầ n BEGIN END; chúng ta có thể’ chì c ầ n viết:

Tên trường (tên trường riê n g n ế u có);

hoặc đơn giản hơn nếu lồng ghép hai lệnh WITH:

WITH tên biến DO WITH tên trường DO hay WITH tên biển, tên trư ờ n g DO

S au đó chi việc viết tê n trường riêng

Bằng việc sử d ụ n g WITH DO ta có th ể xâm n h ậ p trự c tiếp vào các trường r iêng của b ả n g ghi

12 Kiểu dữ liệu có cảu trúc: tệp (FILE)

Tệp hay tệp dữ liệu là một tậ p hợp các dữ liệu có liên q u a n và cùng kiểu (type) được nhóm lại với n h a u tạo t h à n h một tệp Tệp được chứa trong th iế t bị nhó ngoài của máv tín h (Vi dụ: đĩa mềm, đĩa cứng ) có mang tên nào đó Vì được chứa ó bộ nhớ ngoài nên k h ô n g bị h u ý khi ngát điện Tệp có ý n ghĩa n h ư m ả n g (tức là bao gồm m ột d ã y các dữ liệu cùng kiểu) n hư ng ỏ đây nên hiểu một cách tông q u á t hơn dưới d ạ n g kiếu RECORD (tức là có th è bao gồm nhiề u kiểu cơ b ản k h á c nhau)

Trang 29

S au khi mỏ tệ p xong, dù n g lệnh WRITE để c ấ t dữ liệu vào tệp:

W RIT E (biến tệp, các giá trị cần ghi vào);

12.4 Kết thúc - Đóng tệp

S au k h i đã k ế t thúo việc n h ậ p dữ liệu cần một t h ủ tục đóng tệp lại:

CLOSE (biến tệp);

V í dụ: T ín h các giá trị n h iệ t du n g của CdCl2 (Cp = 14,64+0,0096T) ở

1000K, 2000K, 3000K và ghi các giá trị tín h được vào file có tê n là

"ket_qua.doc" đ ặ t ở 0 c Đoạn chương t r ì n h sẽ n h ư sau:

Trang 30

1 Phương pháp dây cung

Đe tìm nghiệ m của phương t r ì n h f(x) = 0 , ta láy điểm a b ê n t r á i của nghiệm và điểm b bên p hải của nghiệm

Giả sử f(a) < 0: f(b) > 0

Nổì các điểm A[a f(a)] và B[b f(b)] b ằ n g đường th ẳ n g Đ ường này

cắ t trục h o àn h tạ i X| Coi Xj là nghiệm gần đ ú n g câ"p m ột của phương

t rìn h cần giải trên Giá trị gần đú n g này có th ế được tìm từ công thức:

( b - a ) f ( a )

1 f ( b ) - f ( a )

Lại giả t h i ế t (x,.b) là k h o ả n g chứ a nghiệ m mối Nôi A,[x,.f(x,)] và B[b.f(b)] n h ậ n được điếm cá t của dây cung với tr ụ c h o à n h là X, Coi XJ là nghiệm gần đ ú n g cấp hai của phương t r ì n h cần giải Nó sẽ được tín h từ công thức:

Trang 31

( b - x , ) f ( x )

2 1 f ( b ) - f ( x , )

và cứ n h ư vậy, chuỗi sô’ a, Xị, x2 sẽ tiế n tới nghiệm cần tìm

Phương p h á p n à y có nhược điểm là nó đòi hỏi ta p hải b iê t k h o ản g chứ a nghiệm

END

Trang 32

WriteC Cho a = ');readln(a);

WriteC Cho b = ');readln(b);

WritelnC N ghiem la: ',x:8:5):

WritelnO So lan lap la: ',i);

2 Phương pháp tiếp tuyến - Phương pháp Newton

Ta lấy x„ n ằ m bên p h ả i nghiệm , từ x„ kè đường song song với trục

tu n g cắ t đường biểu diễn h à m f(x) tạ i B[x0.f(x0)] Từ điêm nàv kè dưòng

Trang 33

tiếp tu y ê n với đường f(x), đường tiếp tuyến này c ắ t tr ụ c h o à n h tạ i (x, được coi là nghiệm gần đúng cấp một) Từ X , lại kẻ đường song song với

tr ục tu n g cắ t đường biểu diễn hàm f(x) tạ i Bjfxj.fCx,)] Từ điểm B, lại kẻ tiếp tuyến với đường f(x), để được x2 (x2 là nghiệm gần đúng cấp hai),

Các nghiệ m g ầ n đ ú n g k ế tiếp của phương p h á p n à y sẽ hội tụ khi f(x) liên tục và có đạo h à m tạ i lân cận nghiệm

Q uá t r ì n h tiếp tục tối khi hai nghiệm gần đú n g k ế tiế p thoả m ãn điều kiện I x„- xntl I < E (e là đại lượng dương vô cùng nhỏ cho trước)

y

y = f(x)

f(x)

Trang 34

dx:=f(x)/f (x);

Đ úng

x:=xi:=i

-dx; + 1ịdx:=fl x)/f(x)

Trang 35

W ritelnC N ghiem la: ',x:8:5);

W ritelnC So la n lap la: \i);

f(b)-f(a)

f ( x jX,, = X

f ( x „ )

Trang 37

F u n ctio n dh_f(x:real):real;

begin dh_f:= l/x; end;

BEGIN

WritelnC 0 < a< b < 6 ');

WriteC Cho a = ’);readln(a);

W rite(' Cho b = ');readln(b);

W ritelnC N ghiem la: ’,x:8:5);

W ritelnC So la n lap la: ’,i);

4 Phương pháp chia đôi khoảng chứa nghiệm

G iải phương t r ì n h phi tu y ế n f(x) = 0 b ằ n g phương p h á p chia đôi

k h o ả n g chứa nghiệm N ếu tích số f(a).f(b) < 0 thì tồn tạ i nghiệ m X thuộc

k h o ả n g [a b]

Lần lượt chia đôi k h o ả n g [a, b] và tiếp tục kiểm tr a điề u kiện trê n cho tới khi Iyi+1 - y, I < epsi, ta tìm được nghiệm gần đ ú n g với độ chínhxác đã cho

Trang 39

Write(' Cho a = ');readln(a);

W rite(' Cho b = ');readln(b);

w ritelnC N ghiem la: ',x:8:5);

w ritelnC So la n lap la: ',i);

Trang 40

5 Phương pháp lặp [4]

Nếu phương tr ìn h cần giải quy được về d ạ n g X = ọ(x) tr o n g đó |<f>'(x)|

< 1 thì ta có th ể tiế n tới nghiệm bằng các bước lặp k ế tiế p x u ấ t p h á t từ

Ngày đăng: 18/02/2021, 22:05

TỪ KHÓA LIÊN QUAN

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