105
®¹I häc th¸i nguyªn trêng ®¹I häc sph¹m Khoa Ho¸ häc TS Mai Xu©n Trêng DĐ : 0912.739.257 CQ : 0280.3856.853 NR 0280.3759.402 Bμi gi¶ng Tin häc øng dông trong ho¸ häc (2 tÝn chØ) (TÀI LIU LƯU HÀNH NI B) Th¸i nguyªn, 2011

Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

®¹I häc th¸i nguyªn tr−êng ®¹I häc s− ph¹m

Khoa Ho¸ häc

TS Mai Xu©n Tr−êng DĐ : 0912.739.257 CQ : 0280.3856.853 NR 0280.3759.402

Bµi gi¶ng

Tin häc øng dông trong ho¸ häc(2 tÝn chØ)

(TÀI LIỆU LƯU HÀNH NỘI BỘ)

Th¸i nguyªn, 2011

Page 2: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

1

Më ®Çu

Tin häc trong hãa häc (chemometric) hay ho¸ tin (computational

chemistry) lµ danh tõ dïng ®Ó chØ mét lÜnh vùc khoa häc kÕt hîp to¸n

häc - mµ chñ yÕu lµ ph−¬ng ph¸p tÝnh - víi m¸y tÝnh ®Ó gi¶i c¸c bµi to¸n ho¸ häc.

Ho¸ tin bao giê còng ®−îc cÊu thµnh bëi ba yÕu tè: thuËt to¸n (algorithm), ®o¹n

ch−¬ng tr×nh m¸y tÝnh (computer code) vµ néi dung ho¸ häc.

Tin häc øng dông trong hãa häc cã thÓ hiÓu lµ c¸c ph−¬ng ph¸p tÝnh to¸n trªn

m¸y tÝnh ®Ó gi¶i c¸c bµi to¸n ho¸ häc vµ kh«ng cã tÝnh ®Æc thï ®Çy ®ñ. Tøc lµ cã thÓ

cã nh÷ng ph−¬ng ph¸p chØ dïng ®Ó gi¶i c¸c bµi to¸n ho¸ häc, th−êng lµ nh÷ng ph−¬ng

ph¸p tæ hîp cÊu thµnh bµi to¸n lín nh− ho¸ l−îng tö (quantum chemistry), m« pháng

®éng lùc ph©n tö l−îng tö (quantum molecular dynamics simulation), vµ cã nh÷ng

ph−¬ng ph¸p kh«ng chØ ®−îc dïng trong ho¸ häc mµ cßn dïng trong c¸c lÜnh vùc

kh¸c. C¸c ph−¬ng ph¸p nµy, ®Æc biÖt lµ trong viÖc khai th¸c d÷ liÖu (datamining),

th−êng lµ nh÷ng ph−¬ng ph¸p ®¬n, kh«ng qu¸ phøc t¹p vµ xuÊt ph¸t tõ nh÷ng bµi to¸n

c¬ b¶n trong to¸n häc vÒ ph−¬ng ph¸p tÝnh nh−: ph−¬ng ph¸p håi quy phi tuyÕn, gi¶i

hÖ ph−¬ng tr×nh vi ph©n, läc Kalman (Kalman filter), m¹ng n¬ron, ...

Nh÷ng n¨m gÇn ®©y, sù ph¸t triÓn c¸c ng«n ng÷ lËp tr×nh, thuËt to¸n, c¸c

bµi to¸n ho¸ häc, c¸c phÇn mÒm tÝnh to¸n øng dông trong ho¸ häc vµ sè l−îng

ng−êi sö dông ngµy cµng nhiÒu. §Ó phôc vô c«ng t¸c gi¶ng d¹y vµ häc tËp tin häc

øng dông trong hãa häc, chóng t«i ®· biªn so¹n bµi gi¶ng "Tin häc øng dông trong

ho¸ häc". HiÖn nay cã rÊt nhiÒu thuËt to¸n, phÇn mÒm còng nh− c¸c bµi to¸n ho¸

tin øng dông ®· ®−îc t¶i lªn m¹ng INTERNET, b¹n cã thÓ t×m thÊy trªn m¹ng c¸c

thuËt to¸n d−íi d¹ng m· nguån më cho hÇu hÕt c¸c bµi to¸n øng dông trong ho¸

häc th× viÖc thay ®æi c¸ch häc thùc lµ rÊt cÊp thiÕt. Tuy nhiªn ®Ó cã thÓ hiÓu ®−îc

c¸c ch−¬ng tr×nh ®ã ta cÇn ph¶i hiÓu c¸c kh¸i niÖm c¬ b¶n cña tin häc dïng trong

ho¸ häc nh− c¸c häc thuËt to¸n, nh÷ng lÖnh rÊt c¬ b¶n cña ng«n ng÷ lËp tr×nh ®ã.

V× vËy gi¸o tr×nh nµy chñ yÕu cung cÊp nh÷ng kh¸i niÖm c¬ b¶n nhÊt cña

c¸c ng«n ng÷ lËp tr×nh ®Ó ng−êi häc cã thÓ lËp tr×nh nh÷ng ch−¬ng tr×nh ®¬n gi¶n

hay cã thÓ sö dông c¸c ch−¬ng tr×nh nguån më ®· cã.

Page 3: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

2

Ch−¬ng 1 : më ®Çu

1.1. c¸c kh¸i niÖm c¬ b¶n

1.1.1. Th«ng tin

Mäi yÕu tè cã thÓ mang l¹i sù hiÓu biÕt ®Òu ®−îc gäi lµ th«ng tin. Th«ng

tin ®−îc thÓ hiÖn d−íi nhiÒu d¹ng thøc kh¸c nhau. Th«ng tin vÒ mét ®èi t−îng

chÝnh lµ c¸c d÷ kiÖn vÒ ®èi t−îng ®ã, cµng nhiÒu th«ng tin th× ®é bÊt ®Þnh cña ®èi

t−îng cµng gi¶m xuèng.

1.1.2. §¬n vÞ ®o th«ng tin

§¬n vÞ ®o th«ng tin trong m¸y tÝnh ®−îc gäi lµ bÝt. 1 bÝt mang l−îng th«ng

tin t−¬ng øng víi 1 trong 2 kh¶ n¨ng cã thÓ x¶y ra: 1 (t−¬ng øng víi cã ®iÖn hay

bãng ®Ìn s¸ng) hoÆc 0 (t−¬ng øng víi kh«ng cã ®iÖn (bãng ®iÖn t¾t) ).

1 byte = 8 bÝt 1KB = 1024 byte 1MB = 1024KB

1GB = 1024MB

1.1.3. Xö lý th«ng tin b»ng m¸y tÝnh ®iÖn tö

M¸y tÝnh sÏ kh«ng lµm g× nÕu kh«ng cã t¸c ®éng cña con ng−êi. Ng−êi sö

dông ph¶i nhËp sè liÖu, bÊm c¸c phÝm thùc hiÖn phÐp to¸n còng nh− yªu cÇu

hiÓn thÞ kÕt qu¶ hoÆc l−u tr÷ kÕt qu¶.

1.2. CÊu tróc hÖ xö lý th«ng tin tù ®éng

Th«ng tin vµo Qu¸ tr×nh xö lý KÕt qu¶

Quy t¾c theo ®ã qu¸ tr×nh xö lý ®−îc thùc hiÖn (do con ng−êi ®Æt ra)

ThiÕt bÞ vµo

Bµn phÝm

Chuét

æ ®Üa

M¸y Scan

CPU

Bé nhí RAM

Bé nhí ROM

Bé xö lý trung t©m

Bé sè häc logic

Bé ®iÒu khiÓn

ThiÕt bÞ ra

Mµn h×nh

M¸y in

æ ®Üa

Page 4: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

3

C¸c thiÕt vµo vµ c¸c thiÕt ra gäi lµ c¸c thiÕt bÞ ngo¹i vi, tïy theo yªu cÇu

mµ ta cã thÓ thªm, bít c¸c thiÕt bÞ ngo¹i vi cho phï hîp.

M¸y tÝnh ho¹t ®éng dùa trªn nguyªn lý c¬ b¶n Von Neumann. C¸c lÖnh vµ

d÷ liÖu cïng ®−îc l−u tr÷ trong bé nhí ®−îc t¹o bëi c¸c tõ ®Þa chØ dùa trªn 2 yÕu

tè then chèt : + §iÒu khiÓn b»ng ch−¬ng tr×nh: M¸y tÝnh ho¹t ®éng theo sù chØ dÉn, ®iÒu

khiÓn cña ch−¬ng tr×nh ®−îc l−u tr÷ trong bé nhí cña nã. C¸c b−íc t¸c ®éng

®−îc tiÕn hµnh theo c¸c c©u lÖnh cña ch−¬ng tr×nh. Ch−¬ng tr×nh chØ dÉn cho

m¸y tÝnh biÕt ph¶i lµm g× vµ ph¶i lµm nh− thÕ nµo.

+ Truy xuÊt theo ®Þa chØ: D÷ liÖu theo nghÜa réng (d÷ liÖu vµo, kÕt qu¶

trung gian, kÕt qu¶ cuèi cïng, ch−¬ng tr×nh, d÷ liÖu ra, . . ) ®−îc l−u tr÷ trong

RAM t¹i mét vïng nhí ®−îc ®Þnh vÞ b»ng c¸c sè thø tù ®−îc gäi lµ ®Þa chØ. D÷

liÖu ®−îc chØ ®Þnh vµ ®−îc truy cËp (®äc hay ghi) theo ®Þa chØ « nhí chøa chóng.

1.3. phÇn mÒm

Trong tin häc, thuËt ng÷ phÇn mÒm ®−îc dïng ®Ó nãi vÒ c¸c ch−¬ng tr×nh

dïng ®Ó ®iÒu khiÓn ho¹t ®éng cña m¸y tÝnh, xö lý d÷ liÖu phôc vô cho mét øng

dông cô thÓ trong ho¹t ®éng kinh tÕ, s¶n xuÊt, kinh doanh, . . . VÝ dô: c¸c ch−¬ng

tr×nh n¹p s½n trong ROM, c¸c ch−¬ng tr×nh phÇn mÒm do ng−êi lËp tr×nh viÕt.

NÕu ta ®−a ra khái m¸y t×nh toµn bé c¸c ch−¬ng tr×nh n¹p s½n trong nã, kÓ

c¶ c¸c ch−¬ng tr×nh ghi s½n trong ROM th× nh÷ng g× cßn l¹i ®−îc gäi lµ phÇn

cøng cña m¸y tÝnh. Nh− vËy, thuËt ng÷ phÇn cøng ®−îc dïng ®Ó chØ linh kiÖn,

chi tiÕt, thiÕt bÞ l¾p r¸p thµnh m¸y tÝnh.

C¸c chuyªn gia phÇn cøng tËp trung vµo viÖc thu nhá kÝch th−íc, khèi

l−îng c¸c linh kiÖn ®iÖn tö, c¬ khÝ, bé nhí nh»m lµm gi¶m n¨ng l−îng tiªu hao

cho m¸y tÝnh, t¨ng kh¶ n¨ng l−u tr÷ vµ vËn tèc tÝnh to¸n.

C¸c chuyªn gia phÇn mÒm tËp trung vµo viÖc x©y dùng ho¹t ®éng chÝnh

x¸c, khoa häc vµ tiÖn lîi trªn c¬ së phÇn khai th¸c tèi ®a kh¶ n¨ng cña m¸y tÝnh

phôc vô cho lîi Ých cña con ng−êi. Sù phèi hîp chÆt chÏ gi÷a hai lÜnh vùc phÇn

cøng vµ phÇn mÒm lµ ®éng lùc thóc ®Èy sù ph¸t triÓn cña tin häc

Page 5: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

4

Ch−¬ng 2 : mét sè ng«n ng÷ lËp tr×nh

2.1. Më ®Çu

C¸c ng«n ng÷ lËp tr×nh lµ ph−¬ng tiÖn giao tiÕp gi÷a ng−êi vµ m¸y tÝnh.

Nh− ta ®· biÕt, muèn yªu cÇu m¸y tÝnh gi¶i mét bµi to¸n nµo ®ã, vÝ dô tÝnh gi¸ trÞ

cña biÓu thøc a = (b + c).(d + e) hoÆc a = b + c.d + e chóng ta ph¶i viÕt mét

ch−¬ng tr×nh quy ®Þnh thËt râ trËt tù thùc hiÖn c¸c thao t¸c ®Ó ®−îc kÕt qu¶ mong

muèn. Nh− vËy ch−¬ng tr×nh m¸y tÝnh chÝnh lµ mét thuËt gi¶i ®−îc viÕt d−íi

d¹ng mét quy ®Þnh b»ng mét ng«n ng÷. Ng«n ng÷ dïng ®Ó viÕt ch−¬ng tr×nh

m¸y tÝnh ®−îc gäi lµ ng«n ng÷ lËp tr×nh.

VÝ dô: §Ó tÝnh biÓu thøc a = (b + c).(d + e) th× qu¸ tr×nh thùc hiÖn viÖc tÝnh

to¸n b»ng ch−¬ng tr×nh m¸y tÝnh nh− sau:

B−íc 1. §äc gi¸ trÞ b ë b¶ng 1.

B−íc 2: §äc gi¸ trÞ c ë b¶ng 2, céng b víi c.

B−íc 3: Ghi gi¸ trÞ tæng (b + c) vµo b¶ng 5.

B−íc 4: §äc gi¸ trÞ d ë b¶ng 3.

B−íc 5: §äc gi¸ trÞ e ë b¶ng 4, céng d víi e.

B−íc 6: Ghi gi¸ trÞ tæng (d + e) ra b¶ng 6.

B−íc 7: lÊy gi¸ trÞ ë b¶ng 5 nh©n víi gi¸ trÞ ë b¶ng 6.

B−íc 8: ghi gi¸ trÞ tÝch (b + c).(d + e) ra b¶ng 7 vµ g¸n cho gi¸ trÞ a.

B−íc 9: ViÕt gi¸ trÞ a ë b¶ng 7.

B−íc 10. Dõng ch−¬ng tr×nh.

C¸c b¶ng 3, 4, 6, 7 cã thÓ dïng l¹i b¶ng 1, 2 b»ng c¸ch xãa ®i (ghi ®Ì lªn)

sau khi ®· dïng xong.

ThuËt gi¶i (c¸c b−íc) ë trªn chØ ®Ó con ng−êi thùc hiÖn, muèn cho m¸y

tÝnh cã thÓ “hiÓu” vµ thùc hiÖn ®−îc ®óng ý ®å cña chóng ta cÇn ph¶i diÔn ®¹t

thuËt gi¶i ®· cho d−íi mét d¹ng quy ®Þnh nµo ®ã. Mét trong sè c¸c d¹ng quy

®Þnh ®ã lµ hîp ng÷. Hîp ng÷ bao gåm tªn c¸c c©u lÖnh vµ c¸c quy t¾c viÕt c¸c

c©u lÖnh ®Ó m¸y tÝnh hiÓu ®−îc. Tªn c¸c cÊu lÖnh th−êng ®−îc viÕt d−íi d¹ng

tiÕng anh nh−: READ, WRITE, INPUT, ADD, PRINT, . . .

Page 6: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

5

Ngoµi ra nh− ta ®· biÕt, khi n¹p ch−¬ng tr×nh vµo bé nhí chóng ta ph¶i

dµnh chç l−u tr÷ c¸c gi¸ trÞ cña sè liÖu. VÝ dô trªn lµ c¸c gi¸ trÞ: a, b, c, d, e.

INPUT b (nhËp gi¸ trÞ b tõ bµn phÝm, ghi vµo « nhí 1)

INPUT c (nhËp gi¸ trÞ c tõ bµn phÝm, ghi vµo « nhí 2)

INPUT d (nhËp gi¸ trÞ d tõ bµn phÝm, ghi vµo « nhí 3)

INPUT e (nhËp gi¸ trÞ e tõ bµn phÝm, ghi vµo « nhí 4)

LOAD b (®äc b ë vµo « nhí 1)

ADD c (céng c ë « nhí 2 vµo « nhí 1, kÕt qu¶ gi÷ ë « nhí 1)

MOVE a (ghi kÕt qu¶ « nhí 1vµo « nhí 5)

LOAD d (®äc d ë « nhí 3)

ADD e (céng e ë « nhí 4 vµo « nhí 3, kÕt qu¶ gi÷ ë « nhí 3)

MULT a (nh©n kÕt qu¶ « nhí 3 víi « nhí 5, kÕt qu¶ gi÷ ë « nhí 3)

MOVE a (ghi kÕt qu¶ tõ « nhí 3 vµo « nhí 5)

PRINT a (In « nhí 5 ra mµn h×nh hoÆc m¸y in)

HALT (Dõng ch−¬ng tr×nh)

Ch−¬ng tr×nh nµy ph¶i sö dông c¸c « nhí (b¶ng) ®Ó l−u gi÷ sè liÖu, cô thÓ

lµ:

1 (« nhí dµnh cho a)

2 (« nhí dµnh cho b)

3 (« nhí dµnh cho c)

4 (« nhí dµnh cho d)

5 (« nhí dµnh cho e)

Ch−¬ng tr×nh hîp ng÷ trªn nhËn c¸c gi¸ trÞ b, c, d, e do ng−êi sö dông

nhËp tõ bµn phÝm cña m¸y tÝnh råi tÝnh vµ hiÓn thÞ gi¸ trÞ cña biÓu thøc ra mµn

h×nh.

Ng«n ng÷ m¸y: Sau khi n¹p ch−¬ng tr×nh hîp ng÷ trªn vµo m¸y tÝnh,

trong m¸y sÏ diÔn ra hai qu¸ tr×nh sau ®©y:

+ DÞch ch−¬ng tr×nh hîp ng÷ sang mét ch−¬ng tr×nh viÕt b»ng ng«n ng÷

m¸y.

+ Thùc hiÖn ch−¬ng tr×nh ®· dÞch.

Page 7: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

6

T¹i sao l¹i ph¶i dÞch: V× m¸y tÝnh ®−îc thiÕt kÕ vµ lµm viÖc trªn c¬ së

cña hÖ nhÞ ph©n. Ch−¬ng tr×nh viÕt b»ng ng«n ng÷ m¸y chØ chøa c¸c ký hiÖu 0

(®Ìn t¾t) vµ 1 (®Ìn s¸ng). ViÖc dÞch tõ ch−¬ng tr×nh hîp ng÷ sang ng«n ng÷ m¸y

còng ®−îc c¸c nhµ thiÕt kÕ m¸y tÝnh chuÈn bÞ tr−íc vµ n¹p s½n trong m¸y. Khi

dÞch, mçi c©u lÖnh cña hîp ng÷ sÏ ®−îc chuyÓn sang d¹ng ®Æc biÖt gäi lµ m·

m¸y hay m· nhÞ ph©n. VÝ dô c©u lÖnh LOAD (®äc) sÏ ®−îc chuyÓn thµnh 0000,

c©u lÖnh ADD (céng) sÏ ®−îc chuyÓn thµnh 0001. C¸c « nhí dµnh cho c¸c biÕn

a, b, c, d, e sÏ ®−îc g¸n ®Þa chØ cña tõ øng víi chóng. VÝ dô biÕn a sÏ chiÕm vïng

nhí b¾t ®Çu b»ng ®Þa chØ 00100000, biÕn b chiÕm ®Þa chØ 00100010, …

Khi ®ã dßng c©u lÖnh hîp ng÷: LOAD a sÏ ®−îc dÞch thµnh:

0000 00100000.

C¸c ng«n ng÷ lËp tr×nh bËc cao

Cã thÓ viÕt trùc tiÕp ch−¬ng tr×nh b»ng ng«n ng÷ m¸y ®−îc kh«ng? Cã

thÓ. Tuy nhiªn, nh− ta ®· thÊy viÖc lµm nµy rÊt vÊt v¶ vµ dÔ sinh lçi. C¸c nhµ lËp

tr×nh dùa trªn nguyªn lý m¸y tÝnh ®−îc ®iÒu khiÓn b»ng ch−¬ng tr×nh ®Ó s¸ng t¹o

ra c¸c ng«n ng÷ lËp tr×nh gÇn víi ng«n ng÷ tù nghiªn, phï hîp víi t©m lý vµ t−

duy cña ng−êi lËp tr×nh ®Ó diÔn ®¹t c¸c thuËt to¸n ®−îc trong s¸ng vµ tù nhiªn.

ViÖc ®Æt ra hîp ng÷ lµ mét cè g¾ng b−íc ®Çu gióp cho nh÷ng ng−êi lËp

ch−¬ng tr×nh ®−îc thuËn tiÖn h¬n. C¸c c©u lÖnh cña hîp ng÷ ®−îc g¸n tªn kh¸

gÇn víi ng«n ng÷ tù nhiªn, viÖc dµnh vïng nhí cho c¸c biÕn ®−îc thùc hiÖn

th«ng qua tªn biÕn.

VËn dông t− t−ëng dÞch tõ ng«n ng÷ nµy sang ng«n ng÷ kh¸c, c¸c nhµ tin

häc ®· s¸ng t¹o ra nh÷ng ng«n ng÷ lËp kh¸c nhau thuËn tiÖn h¬n n÷a víi c¸c −u

®iÓm sau:

+ C¸c c©u lÖnh cña ng«n ng÷ lËp tr×nh gÇn víi ng«n ng÷ tù nghiªn.

+ Tïy theo lÜnh vùc øng dông mµ c¸c ng«n ng÷ lËp tr×nh míi nµy cung cÊp

c¸c ph−¬ng tiÖn trî gióp ®Ó gi¶i c¸c bµi to¸n khoa häc, kü thuËt hoÆc qu¶n lý.

Ng−êi ta gäi c¸c ng«n ng÷ nãi trªn lµ c¸c ng«n ng÷ lËp tr×nh bËc cao ®Ó

ph©n biÖt víi c¸c ng«n ng÷ lËp tr×nh bËc thÊp lµ hîp ng÷ vµ ng«n ng÷ m¸y.

Page 8: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

7

Qu¸ tr×nh gi¶i c¸c bµi to¸n nhê sù gióp ®ì cña m¸y tÝnh bao gåm c¸c giai

®o¹n sau:

Giai ®äan 1: T×m hiÓu bµi to¸n bao gåm viÖc x¸c ®Þnh gi¶ thiÕt, c¸c yªu

cÇu cÇn ph¶i thùc hiÖn, môc ®Ých cÇn ph¶i ®¹t.

Giai ®o¹n 2: X¸c ®Þnh thuËt gi¶i ®Ó gi¶i bµi to¸n ®· cho.

Giai ®o¹n 3: LËp tr×nh: sö dông mét ng«n ng÷ bËc cao ®Ó diÔn ®¹t thuËt

gi¶i.

Giai ®o¹n 4: Sö dông mét hÖ trî gióp, th«ng qua viÖc bÊm c¸c phÝm thÝch

hîp trªn bµn phÝm ®Ó nhËp ch−¬ng tr×nh vµo m¸y tÝnh.

Giai ®o¹n 5: Yªu cÇu m¸y dÞch ch−¬ng tr×nh ®· n¹p sang ng«n ng÷ bËc

thÊp (ng«n ng÷ m¸y).

Giai ®o¹n 6: Yªu cÇu m¸y thùc hiÖn ch−¬ng tr×nh ®· dÞch.

NÕu t¹i mét giai ®o¹n nµo ®ã ta ph¸t hiÖn ra sai sãt th× cÇn quay l¹i giai

®o¹n tr−íc ®ã ®Ó söa lçi råi thùc hiÖn l¹i mét sè giai ®o¹n cÇn thiÕt cho tíi khi

thu ®−îc kÕt qu¶ mong muèn.

Ch−¬ng tr×nh dÞch

Trong c¸c ng«n ng÷ bËc thÊp th× ng«n ng÷ m¸y cã bËc thÊp nhÊt. CÇn nhí

lµ m¸y tÝnh chØ lµm viÖc víi ng«n ng÷ m¸y.

ViÖc dÞch mét ch−¬ng tr×nh viÕt b»ng ng«n ng÷ bËc cao sang ng«n ng÷

m¸y do mét ch−¬ng tr×nh ®Æc biÖt ®¶m nhËn gäi lµ ch−¬ng tr×nh dÞch. Ch−¬ng

tr×nh dÞch thùc hiÖn chøc n¨ng sau ®©y:

+ DuyÖt ch−¬ng tr×nh nguån ®Ó ph¸t hiÖn vµ th«ng b¸o c¸c lèi có ph¸p tøc

lµ nh÷ng lçi do ng−êi lËp tr×nh viÕt sai.

+ Trong tr−êng hîp ch−¬ng tr×nh dÞch kh«ng ph¸t hiÖn thÊy lçi trong

ch−¬ng tr×nh nguån nã sÏ dÞch ch−¬ng tr×nh nguån thµnh ch−¬ng tr×nh viÕt trªn

ng«n ng÷ m¸y gäi lµ ch−¬ng tr×nh ®Ých.

2.2. Ng«n ng÷ BAssic

Ng«n ng÷ BASIC (Beginers All purpose Symbolic Instruction ®o¹n

ch−¬ng tr×nh - th«ng dÞch) do Kemeny vµ Kuzt s¸ng lËp ra vµo n¨m 1965. §−îc

dïng nh− lµ mét ng«n ng÷ khëi ®Çu cho viÖc lËp tr×nh. HiÖn ®−îc cµi ®Æt vµ phæ

Page 9: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

8

biÕn nhÊt trªn m¸y tÝnh IBM vµ t−¬ng thÝch. Xu h−íng hiÖn nay lµ cÊu tróc hãa

ng«n ng÷ nµy vµ tiÕp cËn dÇn víi PASCAL. Mét tiªu chuÈn míi ®· ®−îc t¸c gi¶

so¹n ra víi tªn TRUE BASIC.

2.3. Ng«n ng÷ PASCAL

Do tÝnh t−êng minh vÒ cÊu tróc nªn PASCAL rÊt thÝch hîp cho viÖc gi¶ng

d¹y c¬ së lËp tr×nh, ®Æc biÖt ®èi víi nh÷ng ng−êi kh«ng chuyªn tin. B¹n ®äc cã

thÓ ®äc rÊt nhiÒu gi¸o tr×nh kh¸c nhau vÒ PASCAL c¬ b¶n (vÝ dô Qu¸ch TuÊn

Ngäc Ng«n ng÷ lËp tr×nh PASCAL).

T− liÖu §äc thªm Ng«n ng÷ PASCAL lµ ng«n ng÷ lËp tr×nh bËc cao do gi¸o s− Niklaus Wirth (tr−êng

®¹i häc kü thuËt Zurich - Thôy SÜ) s¸ng lËp vµ c«ng bè vµo ®Çu nh÷ng n¨m 1970, tªn PASCAL ®Ó kû niÖm nhµ to¸n häc ng−êi Ph¸p Blaisse PASCAL ë thÕ ký 17. Lóc ®Çu, PASCAL ®−îc s¸ng t¸c víi môc ®Ých lµm ng«n ng÷ cho m¸y tÝnh ®Ó d¹y häc cho sinh viªn ë c¸c tr−êng ®¹i häc: nã gióp cho sinh viªn còng nh− ng−êi míi häc lËp tr×nh cã ®−îc thãi quen viÕt mét ch−¬ng tr×nh cã cÊu tróc s¸ng sña, râ rµng, dÔ hiÓu vµ dÔ ®äc cho c¶ mäi ng−êi kh¸c. Tr−íc khi cã PASCAL, c¸c sinh viªn ®Òu ®−îc häc ng«n ng÷ lËp tr×nh FORTRAN, mét ng«n ng÷ l©u ®êi nhÊt vµ lµ ng«n ng÷ kh«ng cã cÊu tróc. Gi¸o s− Wirth thÊy r»ng cã thÓ tr¸nh ®−îc rÊt nhiÒu lçi khi lËp tr×nh víi mét ng«n ng÷ cÊu tróc khèi vµ cã sù kiÓm tra kü l−ìng sù t−¬ng thÝch gi÷a c¸c d÷ liÖu.

PASCAL lµ mét ng«n ng÷ cã ®Þnh kiÓu m¹nh mÏ, cã nghÜa lµ mäi biÕn vµ h»ng cña mét kiÓu d÷ liÖu kh«ng thÓ tù do ®em trén lÉn víi c¸c biÕn vµ h»ng cña mét kiÓu d÷ liÖu kh¸c. VÝ dô c¶ hai vÕ phÐp g¸n ph¶i lµ cïng mét kiÓu, ngo¹i trõ tr−êng hîp vÕ tr¸i lµ mét biÕn sè thùc (real) cßn vÕ ph¶i cã thÓ lµ sè nguyªn (integer). ViÖc ®Þnh kiÓu mét c¸ch chÆt chÏ nh− vËy b¾t buéc ng−êi lËp tr×nh lu«n lu«n ph¶i cã c¸c biÓu thøc t−¬ng thÝch nhau vÒ kiÓu d÷ liÖu.

PASCAL lµ mét ng«n ng÷ cã cÊu tróc. Mét ng«n ng÷ cã cÊu tróc khèi lµ ng«n ng÷ mµ ta cã thÓ t¸ch c¸c th«ng tin d÷ liÖu (biÕn, h»ng, . . .) vµ c¸c lÖnh cÇn dïng cho mét nhiÖm vô x¸c ®Þnh thµnh nh÷ng khèi riªng, t¸ch ra khái phÇn cßn l¹i cña ch−¬ng tr×nh ®Ó ng−êi lËp tr×nh cã thÓ gi¶i quyÕt dÇn tõng phÇn mét, tõng khèi mét thËm trÝ cã thÓ cho nhiÒu ng−êi cïng tham gia lËp tr×nh, mçi ng−êi phô tr¸ch mét vµi khèi. Th«ng th−êng c¸c khèi øng víi c¸c nhiÖm vô cô thÓ vµ x¸c ®Þnh, ®−îc thùc hiÖn b»ng c¸c ch−¬ng tr×nh con víi c¸c biÕn ®Þa ph−¬ng lµ c¸c biÕn t¹m thêi cña ch−¬ng tr×nh con ®ã. B»ng c¸ch nµy ta cã thÓ viÕt c¸c ch−¬ng tr×nh con sao cho c¸c sù kiÖn x¶y ra trong ®ã kh«ng lµm ¶nh h−ëng tíi c¸c phÇn kh¸c cña ch−¬ng tr×nh n»m ngoµi ch−¬ng tr×nh con. Cã thÓ nãi tÝnh cÊu tróc cña ch−¬ng tr×nh PASCAL ®−îc thÓ hiÖn trªn 3 mÆt.

+ CÊu tróc vÒ mÆt d÷ liÖu: tõ c¸c d÷ liÖu ®· cã (kiÓu ®¬n gi¶n hoÆc d÷ liÖu cÊu tróc) ta cã thÓ x©y dùng c¸c cÊu tróc d÷ liÖu phøc t¹p h¬n.

+ CÊu tróc vÒ mÆt lÖnh: Tõ c¸c lÖnh ®· cã (lÖnh ®¬n gi¶n hoÆc lÖnh cã cÊu tróc) ta cã thÓ nhãm chóng l¹i víi nhau vµ ®Æt gi÷a hai tõ khãa BEGIN vµ END thµnh c©u lÖnh phøc t¹p h¬n, gäi lµ lÖnh hîp thµnh hay lÖnh ghÐp.

Page 10: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

9

+ CÊu tróc vÒ mÆt ch−¬ng tr×nh: Mét ch−¬ng tr×nh cã thÓ chia thµnh c¸c modun ch−¬ng tr×nh ®éc lËp (ch−¬ng tr×nh con).

Bé ch÷ viÕt cña PASCAL Ng«n ng÷ PASCAl ®−îc x©y dùng víi bé ch÷ viÕt sau: Bé 26 ch÷ c¸i la tinh: 26 ch÷ c¸i in hoa A, B, C, . . . ,Z 26 ch÷ c¸i th−êng a, b, c, . . . , z Ký tù g¹ch nèi ”_”. C¸c ch÷ sè thËp ph©n: 0, 1, 2, . . ., 9 C¸c ký hiÖu to¸n häc th«ng th−êng +, -, *, /, =, <, >, (), …

C¸c ký hiÖu ®Æc biÖt nh− c¸c dÊu chÊm c©u vµ c¸c dÊu kh¸c: .,; :[]?%\⏐!&#$’ DÊu c¸ch (Space) ®−îc dïng ®Ó ng¨n c¸ch c¸c tõ. V× khi viÕt nã kh«ng hiÖn ra ch÷ g×

nªn ®Ó tiÖn nhËn biÕt trong mét sè tr−êng hîp nh− cÇn ®Õm sè dÊu c¸ch, trong tµi liÖu th−êng dïng dÊu .

Tõ vùng cña PASCAL gåm mét sè tõ riªng PASCAL ®−îc gäi lµ tõ khãa (key word). C¸c tõ khãa nµy ng−êi sö dông ph¶i dïng ®óng víi có ph¸p, kh«ng ®−îc dïng nã vµo viÖc kh¸c hoÆc ®Æt tªn míi trïng víi c¸c tõ khãa. §ã lµ c¸c tõ:

Tõ khãa chung: PROGRAM, BEGIN, END, PROCEDURE, FUNCTION Tõ khãa ®Ó khai b¸o: CONST, VAR, LABEL, TYPE, ARRAY, STRING, RECORD,

SET, FILE, OF Tõ khãa cña lÖnh thö vµ rÏ nh¸nh: IF . . . THEN . . . ELSE. . ., CASE . . . OF. . . Tõ khãa cña lÖnh lÆp: FOR . . . TO . . DO . . . , FOR. . . DOWNTO . . . DO. . . ,

WHILE. . . DO. . . , REPEAT. . . UNTIL. . . Tõ khãa ®iÒu khiÓn: WITH, GO TO. Tõ khãa to¸n tö: AND, OR, NOT, IN, DIV, MOD Tõ khãa NUL: NUL C¸c tõ khãa nµy cã thÓ viÕt in hay viÕt th−êng, gi¸ trÞ vµ ý nghÜa cña c¸c tõ khãa kh«ng

thay ®æi. Tªn hay ®Þnh danh (identifier) Tªn hoÆc ®Þnh danh lµ mét d·y ký tù (kh«ng cã dÊu c¸ch) ®−îc dïng ®Ó chØ tªn h»ng

sè, tªn h»ng ký tù, tªn biÕn, tªn kiÓu, tªn ch−¬ng tr×nh, . . . Tªn ®−îc t¹o thµnh tõ c¸c ch÷ c¸i vµ ch÷ sè song b¾t buéc ch÷ ®Çu ph¶i lµ ch÷ c¸i. TÊt nhiªn ta ph¶i ®Æt tªn sao cho cã ý nghÜa, dÔ nhí. §Ó lµm s¸ng sña tªn, PASCAL cho phÐp dïng dÊu g¹ch d−íi "_" khi viÕt tªn.

Mét sè tªn nh− tªn cña ch−¬ng tr×nh con (SIN , COS, . . . ) ®· ®−îc PASCAL ®Þnh nghÜa s½n ®−îc gäi lµ tªn chuÈn hay tªn ®· ®−îc ®Þnh nghÜa. Sù kh¸c nhau gi÷a tªn chuÈn vµ tõ khãa lµ ng−êi sö dông cã thÓ ®Þnh nghÜa l¹i tªn chuÈn, dïng tªn chuÈn vµo viÖc kh¸c nÕu muèn cßn tõ khãa th× bÞ nghiªm cÊm dïng vµo viÖc kh¸c tr¸i quy ®Þnh.

Mét sè tªn chuÈn cña PASCAL: BOOLEAN, CHAR, INTEGER, REAL, BYTE, TEXT, FALSE, TRUE, MAXINT, ABS, ARCTAN, CHR, COS, SIN, EOF, EOLN, EXP, LN, ODD, ORD, ROUND, TRUNC, SQR, PRED, SUCC,DISPOSE, NEW, GET, PUT, READ, READLN, WRITE, WRITELN, RESET, REWRITE.

DÊu chÊm phÈy “;” dïng ®Ó ng¨n c¸ch c¸c c©u lÖnh cña PASCAL vµ kh«ng thÓ thiÕu ®−îc. Kh«ng nªn hiÓu dÊu “;” lµ kÕt thóc cÊu lÖnh.

Page 11: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

10

Lêi gi¶i thÝch (Comment) cã thÓ ®Ó bÊt kú chç nµo cña ch−¬ng tr×nh cho dÔ hiÓu, dÔ ®äc h¬n mµ kh«ng lµm ¶nh h−ëng ®Õn c¸c phÇn kh¸c. Lêi gi¶i thÝch ®−îc ®Æt gi÷a hai dÊu { } hoÆc (**) : { lêi gi¶i thÝch } hoÆc gi÷a côm dÊu (* lêi gi¶i thÝch *).

Do cã rÊt nhiÒu tµi liÖu vÒ PASCAL vµ còng do khu«n khæ cña gi¸o tr×nh

nµy nªn chóng t«i chØ tr×nh bµy nh÷ng kh¸i niÖm c¬ b¶n nhÊt vÒ PASCAL ®Ó

ng−êi ®äc cã thÓ hiÓu vµ lËp tr×nh ®−îc nh÷ng ch−¬ng tr×nh ®¬n gi¶n.

2.3.1. CÊu tróc ch−¬ng tr×nh PASCAL

Mét tËp c¸c c©u lÖnh t¹o thµnh mét ch−¬ng tr×nh. LÖnh cßn ®−îc gäi lµ chØ

thÞ dïng ®Ó h−íng dÉn m¸y tÝnh lµm viÖc. CÊu tróc cña mét ch−¬ng tr×nh

PASCAL hîp thµnh bëi c¸c phÇn sau: ®Çu ch−¬ng tr×nh, m« t¶, th©n ch−¬ng tr×nh

vµ kÕt thóc.

§Çu ch−¬ng tr×nh

PhÇn ®Çu cña ch−¬ng tr×nh bao gåm:

Trong ®ã tªn ch−¬ng tr×nh kh«ng ®−îc cã dÊu c¸ch vµ c¸c ký tù ®Æc biÖt,

kh«ng ®−îc dïng c¸c to¸n tö ®Ó ®Æt tªn ch−¬ng tr×nh, . . . kÕt thóc tªn ch−¬ng

tr×nh lµ dÊu “;”.

VÝ dô: PROGRAM GIAI_PHUONG_TRINH_BAC_2;

PhÇn m« t¶

PhÇn m« t¶ cã thÓ gåm cã 5 phÇn: m« t¶ nh·n (®Þa chØ), h»ng, kiÓu, biÕn,

thñ tôc vµ hµm (ch−¬ng tr×nh con).

M« t¶ nh·n (®Þa chØ)

Nh·n lµ mét sè nguyªn d−¬ng cã ≤ 4 ch÷ sè. M« t¶ nh·n liÖt kª tÊt c¶ c¸c

nh·n sö dông trong ch−¬ng tr×nh vµ dïng ®Ó ®Þnh vÞ c¸c to¸n tö khi cÇn ®iÒu

khiÓn ch−¬ng tr×nh ho¹t ®éng ngoµi quy t¾c th«ng th−êng (tõ trªn xuèng d−íi).

C¸ch m« t¶ :

VÝ dô: LABEL 10, 20, 123; m« t¶ 3 nh·n dïng trong khèi.

PROGRAM tªn ch−¬ng tr×nh;

LABEL sè nguyªn;

Page 12: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

11

X¸c ®Þnh h»ng

C¸c h»ng cã gi¸ trÞ kh«ng ®æi trong suèt qu¸ tr×nh thùc hiÖn ch−¬ng tr×nh.

Bëi vËy kh«ng ®−îc phÐp dïng 1 lÖnh nµo ®Ó thay ®æi gi¸ trÞ cña h»ng. C¸ch x¸c

®Þnh:

VÝ dô: CONST Pi = 3.141598; ch= ' gia tri tich phan';

X¸c ®Þnh kiÓu (TYPE)

TYPE dïng ®Ó x¸c ®Þnh c¸c kiÓu d÷ liÖu míi so víi 4 kiÓu ®· cã cña

PASCAL (Integer, Real, Char, Boolean).

C¸ch x¸c ®Þnh :

VÝ dô: TYPE city = (HANOI,TOKYO, MOSCOW, PARIS);

color = (xanh, do, trang,tim,vang);

Víi c¸c kiÓu nµy cã thÓ dïng c¸c hµm chuÈn ORD, PRED, SUCC. Sau khi

khai b¸o kiÓu th× khi m« t¶ biÕn cÇn chØ râ biÕn nµo thuéc kiÓu ®· ®−îc m« t¶.

M« t¶ biÕn

Nguyªn t¾c rÊt c¬ b¶n cña PASCAL lµ trong ch−¬ng tr×nh dïng biÕn nµo

ph¶i m« t¶ biÕn ®ã. Kh¸c víi mét sè ng«n ng÷ kh¸c, PASCAL kh«ng cã c¸c biÕn

mÆc ®Þnh. C¸ch m« t¶:

VÝ dô: VAR m,n : integer; ch : char;

x,y : real; j : boolean;

h : city;

chØ ra m, n, ch, x, y, j, h : lµ c¸c biÕn, trong ®ã: m, n lµ kiÓu nguyªn, x, y

lµ thùc, ch lµ kÝ tù, j lµ logic vµ h lµ kiÓu city (®· ®−îc ®Þnh nghÜa trong TYPE).

CONST tªn h»ng 1 = gÝa trÞ h»ng 1;

tªn h»ng 2 = gÝa trÞ h»ng 2;

TYPE Tªn kiÓu 1 = ( phæ c¸c gi¸ trÞ cña kiÓu 1);

Tªn kiÓu 2 = ( phæ c¸c gi¸ trÞ cña kiÓu 2);

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;

Page 13: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

12

M¶ng

§Ó cã thÓ truy nhËp th«ng tin vµ sö dông c¸c phÇn tö trong d·y sè

PASCAL ®−a vµo kh¸i niÖm m¶ng. M¶ng lµ mét kiÓu biÕn (hoÆc h»ng) cã chØ sè

dïng ®Ó chØ thø tù cña phÇn tö ®ã trong d·y sè.

C¸ch m« t¶ m¶ng 1 chiÒu:

hoÆc khai b¸o theo kiÓu (TYPE) råi sau ®ã míi khai b¸o biÕn nh− sau:

VÝ dô d·y sè d−íi ®©y :

x 1 2 3 4 5 ... n

y 12 3 5 10 9 ... 1

Khai b¸o biÕn x vµ y lµ biÕn sè thùc theo kiÓu m¶ng nh− sau:

x,y: array[1..n] of real;

hoÆc khai b¸o th«ng qua viÖc x¸c ®Þnh tr−íc mét kiÓu biÕn míi

TYPE M1=array[1..10] of real;

VAR X,y: M1;

C¸ch thø hai phæ biÕn h¬n khi chóng ta ph¶i sö dông c¸c ch−¬ng tr×nh con

cã c¸c biÕn h×nh thøc lµ c¸c m¶ng (xem phÇn sau). Trong c¸c tÝnh to¸n, c¸c phÇn

tö cña m¶ng ®ãng vai trß nh− c¸c biÕn ®¬n.

Ngoµi m¶ng mét chiÒu cßn cã c¸c m¶ng hai vµ ba chiÒu:

C¸ch m« t¶ m¶ng 2 chiÒu:

tªn biÕn 1, tªn biÕn 2, ... : ARRAY [1..n, 1..m] of kiÓu biÕn;

hoÆc khai b¸o theo kiÓu (TYPE) råi sau ®ã míi khai b¸o biÕn nh− sau:

tªn biÕn 1, tªn biÕn 2, ... : ARRAY [1..n] of kiÓu biÕn;

tªn biÕn 3, tªn biÕn 4, ... : ARRAY [1..m] of kiÓu biÕn;

TYPE Mang1 = array [1..n] of kiÓu biÕn;

Mang2 = array [1..m] of kiÓu biÕn;

VAR tªn biÕn 1, tªn biÕn 2,...: Mang1;

tªn biÕn 3, tªn biÕn 4,... : Mang2 ;

Page 14: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

13

TYPE Mang1=array[1..n, 1..m] of kiÓu biÕn;

VAR tªn biÕn 1, tªn biÕn 2,...: Mang1;

T−¬ng tù ta cã c¸ch m« t¶ m¶ng 3 chiÒu:

tªn biÕn 1, tªn biÕn 2, ... : ARRAY [1..n, 1..m,1..k] of kiÓu biÕn;

PhÇn th©n ch−¬ng tr×nh

Th©n ch−¬ng tr×nh bao gåm c¸c to¸n tö (cßn gäi lµ c¸c c©u lÖnh hoÆc chØ

thÞ) ®Ó thùc hiÖn c«ng viÖc chñ yÕu cña ch−¬ng tr×nh vµ ®−îc ®Æt sau tõ khãa:

PhÇn kÕt thóc

PhÇn kÕt thóc bao gåm tËp hîp lÖnh

Víi mét sè phiªn b¶n cña ch−¬ng tr×nh dÞch PASCAL c©u lÖnh READLN

kh«ng nhÊt thiÕt ph¶i cã.

2.3.2. C¸c to¸n tö

To¸n tö g¸n

To¸n tö g¸n cã d¹ng tæng qu¸t :

Khi gÆp lÖnh nµy kÕt qu¶ tÝnh to¸n cña biÓu thøc vÕ ph¶i hoÆc gi¸ trÞ biÕn,

h»ng vÕ ph¶i ®−îc g¸n cho biÕn vÕ tr¸i.

VÝ dô: Sau ®©y lµ mét ®o¹n ch−¬ng tr×nh cã chøa c¸c lÖnh g¸n

W1 := a*2; W2 := b*2; y := sin(W1 + W2);

W1 := W1 + ln(y); W2 := W2 + y ;

y := (W1 + W2)/(W1 + SQRT(W2));

To¸n tö chuyÓn (GOTO)

D¹ng tæng qu¸t

D−íi t¸c ®éng cña to¸n tö nµy ch−¬ng tr×nh chuyÓn ®Õn nh·n (®· ®−îc x¸c

®Þnh b»ng LABEL).

READLN; END.

Tªn biÕn := biÓu thøc hoÆc biÕn hoÆc h»ng;

GOTO nh·n;

BEGIN

Page 15: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

14

VÝ dô: LABEL 10;

.........

GOTO 10;

.........

10: x2 := x1;

To¸n tö xuÊt nhËp

Cã hai c¸ch nhËp d÷ liÖu PASCAL. NhËp qua bµn phÝm vµ nhËp tõ tÖp d÷

liÖu. ViÖc nhËp tõ tÖp sÏ ®−îc tr×nh bµy kü trong häc phÇn dµnh cho cao häc.

D−íi ®©y lµ c¸ch nhËp tõ bµn phÝm. Bao giê còng cã hai c©u lÖnh ®i kÌm. C©u

lÖnh viÕt WRITE ®Ó th«ng b¸o nhu cÇu nhËp liÖu, sau ®ã lµ c©u lÖnh ®äc READ.

C¸ch m« t¶:

Liªn quan ®Õn con trá trªn mµn h×nh, nÕu sau khi viÕt th«ng b¸o hoÆc

biÕn, nhËp d÷ liÖu, b¹n muèn con trá xuèng hµng th× m« t¶ nh− sau

VÝ dô ®Ó nhËp ba hÖ sè cña ph−¬ng tr×nh bËc hai a,b,c ta cÇn hai c©u lÖnh

sau:

Write(‘ nhap a, b, c: ’ );

Read(a,b,c);

NÕu sau khi nhËp d÷ liÖu, b¹n muèn con trá xuèng hµng th× viÕt

Write(‘ nhap a, b, c :’ );

Readln(a,b,c);

VÒ c¬ b¶n PASCAL dïng hai kiÓu viÕt: ®Þnh khu«n vµ kh«ng ®Þnh khu«n.

Theo kiÓu kh«ng ®Þnh khu«n th× khi viÕt ra mµn h×nh, c¸c biÕn sÏ ®−îc bè trÝ

theo kiÓu mÆc ®Þnh sè cét dµnh cho mçi biÕn hoÆc h»ng vµ c¸c biÕn thùc sÏ ®−îc

viÕt d−íi d¹ng dÊu ph¶y di ®éng.

WRITE(‘Th«ng b¸o’ hoÆc biÕn);

READ(biÕn);

WRITELN(‘Th«ng b¸o’ hoÆc biÕn);

READLN(biÕn);

Page 16: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

15

VÝ dô:

Write(a,b,c); sÏ cho ra mµn h×nh

1.2345678+01 3.00000000+02 -7.0001111-03

Trong tr−êng hîp ®Þnh khu«n chóng ta dïng c¸c sè sau dÊu “:” ®Ó m« t¶

sè cét trªn mµn h×nh dµnh cho viÖc viÕt biÕn hoÆc h»ng tr−íc ®ã. Riªng víi c¸c

sè thËp ph©n kiÓu dÊu ph¶y cè ®Þnh cã thªm sè thø hai sau dÊu ‘”:” thø hai chØ

sè sè thËp ph©n sau dÊu ph¶y.

VÝ dô:

Write (a:10, b:10:2, c:10:4); sÏ cho ra mµn h×nh

1.23456+01 300.00 -0.0070

§Þnh khu«n còng dïng cho c¸c biÕn nguyªn, biÕn ký tù, biÕn dßng vµ c¸c

kiÓu biÕn kh¸c theo nguyªn t¾c trªn. §Þnh khu«n liªn quan chñ yÕu ®Õn c¸ch

tr×nh bµy mµn h×nh sao cho ®Ñp, dÔ ®äc vµ râ rµng.

Víi tÊt c¶ c¸c ®iÒu võa tr×nh bµy ë trªn chóng ta ®· cã thÓ viÕt mét ch−¬ng

tr×nh PASCAL hoµn chØnh, vÝ dô ®Ó tÝnh tÝch cña hai sè a vµ b, tøc lµ S = a . b.

VÝ dô:

Program nhan;

Var A,B,S : real;

BEGIN

Write(‘ nhap A va B : ‘); readln(A, B);

S:=A*B;

Writeln(‘ Tich S = ‘, S:10:4);

Readln;

END.

To¸n tö ®iÒu khiÓn

To¸n tö ®iÒu khiÓn cña PASCAL cã 2 vÕ:

NÕu ®iÒu kiÖn logic sau IF ®−îc tho¶ m·n th× thùc hiÖn c©u lÖnh 1 sau

THEN. NÕu kh«ng th× thùc hiÖn c©u lÖnh 2 sau ELSE.

IF <§iÒu kiÖn logic> THEN <C©u lÖnh 1> ELSE <C©u lÖnh 2>;

Page 17: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

16

VÝ dô:

If (i=k) then a:=b else a:=d;

Trong tr−êng hîp ®¬n gi¶n nhÊt ta chØ cÇn ®Õn vÕ ®Çu:

NÕu ®iÒu kiÖn logic sau IF tho¶ m·n th× thùc hiÖn c©u lÖnh 1 sau THEN.

VÝ dô:

If (i=k) then a:=b;

Trong nh÷ng tr−êng hîp phøc t¹p, sau THEN vµ ELSE chóng ta cã thÓ

ph¶i thùc hiÖn nhiÒu c©u lÖnh, khi ®ã ph¶i dïng c¸c to¸n tö hîp thµnh b¾t ®Çu

b»ng BEGIN vµ kÕt thóc b»ng END.

Chó ý lµ c©u lÖnh tr−íc ELSE kh«ng cã dÊu “;”.

D−íi ®©y lµ vÝ dô ®o¹n ch−¬ng tr×nh sö dông to¸n tö IF … THEN.

VÝ dô 1: Gi¶i ph−¬ng tr×nh bËc hai:

If (delta>=0) then

Begin

x1:= (- b + sqrt(delta))/2/a;

x2:= (- b - sqrt(delta))/2/a;

End

Else

IF <§iÒu kiÖn logic> THEN <C©u lÖnh 1>;

IF <§iÒu kiÖn logic> THEN

BEGIN

C©u lÖnh 1;. . .; C©u lÖnh n;

END

ELSE

BEGIN

C©u lÖnh 2; ...; C©u lÖnh m;

END;

Page 18: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

17

Begin

AA: = -b/2/a; { phÇn thùc cña nghiÖm phøc }

BB:= sqrt(-delta)/2/a; { phÇn ¶o cña nghiÖm phøc }

End;

VÝ dô2: TÝnh tæng n sè nguyªn ®Çu tiªn

i:=1;

sum:=0;

1: sum:=sum+i;

i:=i+1;

If (i<n) goto 1;

VÝ dô 3: TÝnh tæng c¸c sè ch½n vµ tæng c¸c sè lÎ trong mét d·y n sè

nguyªn ®Çu tiªn

i:=1;

TONGCHAN:=0;

TONGLE:=0;

15: if (i mod 2 =0) then TONGCHAN:=TONGCHAN+i else

TONGLE:=TONGLE+i;

i:=i+1;

if i<n goto 15;

Trong ®ã cã sö dông to¸n tö lÊy sè d− khi chia sè nguyªn a cho sè nguyªn

b (c©u lÖnh lµ a mod b). NÕu muèn tÝnh tæng c¸c phÇn tö cã chØ sè ch½n vµ tæng

c¸c phÇn tö cã chØ sè lÎ cña m¶ng a[i] ta cã:

i:=1;

sum1:=0;

Page 19: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

18

sum2:=0;

1: if (i mod 2 =0) then sum1:=sum1+a[i] else sum2:=sum2+a[i];

i:=i+1;

if i<n goto 1;

2.4. Ng«n ng÷ FORTRAN

2.4.1. Giíi thiÖu ng«n ng÷ FORTRAN

FORTRAN lµ ng«n ng÷ lËp tr×nh cho m¸y tÝnh. Nã thuéc lo¹i ng«n ng÷

cap cÊp thiªn vÒ bµi to¸n, cßn gäi lµ ng«n ng÷ thuËt to¸n hay ng«n ng÷ thñ tôc.

§−¬ng nhiªn, ng«n ng÷ ch−¬ng tr×nh nµo còng dïng ®Ó thÓ hiÖn thuËt

to¸n, nh−ng ng«n ng÷ thuËt to¸n cho phÐp chuyÓn trùc tiÕp tõ m« t¶ thuËt to¸n

sang ch−¬ng tr×nh nguån kh«ng cÇn thay ®æi g× mÊy.

FORTRAN lµ tªn ghÐp cña c¸c ch÷ c¸i ®Çu “FORmula TRANslation”

nghÜa lµ “biªn dÞch c¸c c«ng thøc”, bëi v× lóc ®Çu ng«n ng÷ nµy dïng ®Ó gi¶i c¸c

bµi to¸n kü thuËt.

FORTRAN ra ®êi míi vµi chôc n¨m (1954) nh−ng sím ph¸t triÓn vµ cã

søc sèng m¹nh mÏ vµ dÎo dai.

HiÖn nay, ®· cã rÊt nhiÒu ng«n ng÷ ph¸t triÓn phøc t¹p, chÆt chÏ vµ tinh tÕ

h¬n, ®Æc biÖt lµ PASCAL nh−ng FORTRAN vÉn ®ang lµ ng«n ng÷ phæ dông trªn

thÕ giíi: h¬n 70% c¸c ch−¬ng tr×nh ®−îc viÕt b»ng FORTRAN. Tuy nhiªn ë ViÖt

Nam ch−¬ng tr×nh FORTRAN chñ yÕu ®−îc ¸p dông nhiÒu trong c¸c ngµnh

khoa häc kü thuËt, Trong gi¸o dôc ch−¬ng tr×nh FORTRAN kh«ng ®−îc phæ

biÕn nh− PASCAL.

Nh÷ng −u ®iÓm cña FORTRAN:

+ DÔ häc, dÔ viÕt, dÔ hiÖu chØnh.

+ Cã hiÖu qu¶ khi dÞch do cÊu tróc ng«n ng÷ ®¬n gi¶n.

+ Vèn t− liÖu phong phó: Cã nhiÒu kho ch−¬ng tru×nh mÉu, ch−¬ng tr×nh

phôc vô.

+ Kh¶ n¨ng vµo ra ®¬n gi¶n vµ dåi dµo, tiÖn dông.

Page 20: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

19

HiÖn nay, cã nhiÒu d¹ng FORTRAN kh¸c nhau dùa trªn FORTRAN c¬ së

(Basic FORTRAN). FORTRAN chuÈn (standard FORTRAN) Tõ phiªn b¶n thø

7 trë ®i ng«n ng÷ FORTRAN ®−îc ký hiÖu lµ “Fortran” (Fortran 90). HiÖn nay

®· cã phiªn b¶n 9 (Fortran 2003) vµ phiªn b¶n 10 (Fortran 2008).

ë ®©y, chóng t«i chØ giíi thiÖu nh÷ng nÐt, nh÷ng kh¸i niÖm c¬ b¶n chung

nhÊt ®Ó ng−êi häc cã thÓ n¾m ®−îc c¬ së cña ng«n ng÷ vµ lËp ®−îc nh÷ng

ch−¬ng tr×nh kh«ng phøc t¹p (vÒ mÆt ng«n ng÷ vµ kü thuËt lËp tr×nh mµ kh«ng

®Ò cËp ®Õn tÝnh phøc t¹p vÒ mÆt chuyªn m«n) vµ kh«ng dïng bé nhí phô.

Muèn lËp ch−¬ng tr×nh b»ng ng«n ng÷ FORTRAN, ph¶i ®äc tµi liÖu

h−íng dÉn ®Ó biÕt ®Æc ®iÓm, nh÷ng h¹n chÕ hay më réng cña d¹ng FORTRAN,

thñ tôc ®−a dÞch vµ cho thùc hiÖn ch−¬ng tr×nh nh− thÕ nµo.

Chõng nµo cµng ®i s©u vµo gi¶i quyÕt c¸c bµi to¸n thùc tiÔn ta míi cµng

thÊy kiÕn thøc ®· häc lµ ch−a ®Çy ®ñ, míi thÊy cÇn bæ sung nh÷ng g×, vµ thÊy râ

thªm mÆt m¹nh vµ mÆt yÕu cña tõng lo¹i ng«n ng÷. Quy m« bµi to¸n t¨ng lªn th×

khã kh¨n còng gÊp béi, bÊy giê míi thÊy yªu cÇu bøc thiÕt vÒ thuËt to¸n, ng«n

ng÷, cÊu tróc d÷ liÖu vµ cÊu tróc ch−¬ng tr×nh vµ míi cã h−íng ®Ó tù bæ sung

thªm.

2.4.2. ChØ thÞ vµ th«ng b¸o

Ch−¬ng tr×nh FORTRAN lµ mét d·y c¸c c©u lÖnh thuéc 2 lo¹i: ChØ thÞ hay

th«ng b¸o. Ch−¬ng tr×nh lµ sù kÕt hîp gi÷a thuËt to¸n vµ d÷ liÖu. Nã gåm mét

mÆt lµ c¸c th«ng b¸o ®Ó m« t¶ d÷ liÖu vµ mét mÆt lµ c¸c chØ thÞ ®Ó thùc hiÖn c¸c

sù t¸c ®éng lªn d÷ liÖu ®ã theo mét thuËt to¸n (gi¶i thuËt) cho bµi to¸n.

ChØ thÞ (Statement) lµ c¸c c©u lÖnh ®−îc thùc hiÖn vµ sÏ ®−îc ch−¬ng tr×nh

dÞch biÕn thµnh d·y lÖnh m¸y trong ch−¬ng tr×nh ®Ých. ChØ thÞ cã thÓ thùc hiÖn lµ:

- Vµo/ ra d÷ liÖu.

- Trao ®æi th«ng tin gi÷a c¸c phÇn cña ch−¬ng tr×nh, gi÷a bé nhí trong vµ

bé nhí ngoµi,

- TÝnh to¸n sè häc, logic.

- KiÓm tra vµ quyÕt ®Þnh lùa chän.

- §iÒu khiÓn.

Page 21: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

20

Th«ng b¸o (Declaration) lµ c¸c c©u lÖnh kh«ng thùc hiÖn vµ kh«ng cÇn

dÞch, chØ c¸c t¸c dông th«ng b¸o (khai b¸o) víi ch−¬ng tr×nh dÞch vÒ:

- M« t¶ d÷ liÖu.

- M« t¶ kÝch th−íc m¶ng d÷ liÖu.

- M« t¶ quy c¸ch d÷ liÖu ngay khi dÞch.

- G¸n tr−íc d÷ liÖu ngay khi dÞch.

- Trao ®æi th«ng tin ë vïng chung.

- Chç cuèi ch−¬ng tr×nh cÇn dÞch.

. . .

2.4.3. PhiÕu mÉu vµ b×a FORTRAN

Trong FORTRAN kh¸i niÖm b×a vµ dßng in cã mét vai trß ®Æc biÖt.

Ch−¬ng tr×nh FORTRAN ®−îc ghi trªn phiÕu mÉu nh− sau (xem vÝ dô cô

thÓ phiÕu mÉu ë b¶ng 1).

Mçi c©u lÖnh nãi chung ghi ë 1 dßng, dï thõa chç còng ph¶i xuèng dßng

kh¸c (do ®ã nªn ghi th−a cho dÔ ®äc).

Mçi dßng cña phiÕu cã ®óng 80 vÞ trÝ (cét), cho phÐp ghi 80 ký hiÖu c¬ së

FORTRAN, kÓ c¶ ký hiÖu trèng lµ chç kh«ng ghi g× (®Ó ®¸nh dÊu chç trèng cã

thÓ ghi dÊu “b” hay “B”)

Nh÷ng ký hiÖu cña ch−¬ng tr×nh viÕt ë phiÕu mÉu ph¶i ®−îc m· ho¸ míi

®−a vµo m¸y ®−îc. M¸y thu nhËn c¸c th«ng tin m· ho¸ tõ b×a ®ôc lç (lo¹i 80

cét). Mçi b×a cã 80 cét øng 80 vÞ trÝ cña dßng phiÕu. Nh− vËy mçi dßng phiÕu

®−îc m· ho¸ bëi mét b×a.

Khi ®ôc tõng ký hiÖu th× xuÊt hiÖn c¸c tæ hîp lç ®ôc øng víi m· ký hiÖu

trªn cét t−¬ng øng cña b×a vµ phÝa trªn cïng cña cét cã in b¶n th©n ký hiÖu ®ã.

§ôc xong b×a th× néi dung cña dßng phiÕu t−¬ng øng sÏ hiÖn lªn ë mÐp trªn b×a,

nh− vËy tiÖn kiÓm tra b×a.

Ch−¬ng tr×nh vµ d÷ liÖu tr−íc khi ®−a vµo m¸y ph¶i ®−îc chuÈn bÞ thµnh

c¸c cç b×a: Cç b×a ch−¬ng tr×nh vµ cç b×a d÷ liÖu.

Page 22: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

21

N¨m cét (vÞ trÝ) ®Çu tiªn cña phiÕu dµnh ghi nh·n cña c©u lÖnh hoÆc ®Ó

trèng. Nh·n (Label) cña c©u lÖnh lµ mét sè nguyªn kh«ng dÊu, cã gi¸ trÞ tõ 1 ®Õn

99999 – Kh«ng nhÊt thiÕt ghi tõ cét ®Çu - dïng ®Ó ®¸nh dÊu c©u lÖnh ®ã.

Cét thø sau (6) lµ cét nèi tiÕp (Continuation) ®Ó ghi dÊu hiÖu nèi: NÕu c©u

lÖnh ghi mét dßng ch−a ®ñ th× xuèng dßng, ë c¸c dßng tiÕp theo (dßng phô) ph¶i

cã dÊu nèi lµ mét ký hiÖu c¬ së nµo ®ã kh¸c sè 0 vµ dÊu b, ghi ë cét 6. Tèi ®a cã

19 dßng phô.

C©u lÖnh chØ ®−îc ghi tõ cét thø 7 tíi cét 72 (tèi ®a 66 ký hiÖu). Qu·ng

trèng sÏ ®−îc bá qua - M¸y kh«ng tÝnh - trõ trong FORMAT.

T¸m cét cuèi tõ cét 73 ®Õn cét 80 dïng ®Ó ®¸nh dÉu cç b×a, ch¼ng h¹n ký

hiÖu cç b×a vµ sè thø tù cña b×a ®Ó khái lÉn lén, hoÆc ®Ó ghi tªn ch−¬ng tr×nh,

ng−êi lËp. . . Nh÷ng th«ng tin nµy kh«ng ®−îc dÞch mµ chØ in ®Ó kiÓm tra.

Riªng cét ®Çu cña phiÕu mÉu cßn cã t¸c dông ph©n biÖt dßng thuyÕt minh.

C¸c dßng cã ch÷ C (Comment: thuyÕt minh, chó thÝch) ë ®Çu dßng (cét 1) ®Òu lµ

c¸c dßng thuyÕt minh, kh«ng cã t¸c dông víi viÖc dÞch vµ ch¹y ch−¬ng tr×nh, chØ

cã t¸c dông khi in kiÓm tra ch−¬ng tr×nh, cho phÐp ng−êi ®äc dÔ dµng theo dâi

tõng ®o¹n ch−¬ng tr×nh. §Æt c¸c dßng thuyÕt minh thÝch ®¸ng, ®óng chç th×

ng−êi kh¸c ®äc còng cã thÓ hiÓu ®−îc thuËt to¸n, ch−¬ng tr×nh. C¸c dßng thuyÕt

minh cã thÓ gåm mäi ký hiÖu c¬ së vµ muèn xuèng dßng (sang b×a) chØ cÇn ghi

C ë ®Çu dßng (chø kh«ng dïng cét 6).

2.4.4. Mét sè ch−¬ng tr×nh Fortran

§Ó cã kh¸i niÖm ban ®Çu, bao qu¸t nh−ng th« s¬ vµ ®Ó h×nh dung thÕ nµo

lµ mét ch−¬ng tr×nh viÕt b»ng FORTRAN, ta sÏ xÐt mét sè ch−¬ng tr×nh ®¬n

gi¶n, qua ®ã giíi thiÖu mét sè yÕu tè cña FORTRAN.

VÝ dô 1: ViÕt ch−¬ng tr×nh tÝnh thÓ tÝch cña h×nh trô trßn xoay theo c«ng

thøc V = πR2h. Víi R lµ b¸n kÝnh ®¸y h×nh trô, h lµ chiÒu cao h×nh trô (B¶ng 1).

Page 23: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

22

B¶ng 1: PhiÕu mÉu cña ch−¬ng tr×nh tÝnh thÓ tÝch cña h×nh trô trßn xoay

C«ng thøc V = πR2h. Víi R lµ b¸n kÝnh ®¸y h×nh trô, h lµ chiÒu cao h×nh trô.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

1 C H U O N G T R I N H T I N H T H E T I C H H I N H T R U - T T R U

2 C

3 R E A D ( 5 , 1 0 ) B K I N H , C C A O

4 T T I C H = 3 , 1 4 1 6 * B K I N H * * C C A O

5 W R I T E ( 6 , 1 1 ) B K I N H , C C A O , T T I C H

6 S T O P

7 1 0 F 0 R M A T ( 2 F 1 0 , 2 )

8 1 1 F 0 R M A T ( 9 H O B K I N H b = b , F 6 . 2 ,

9 * 1 1 H B B B B C C A O B = B , F 6 . 2 ,

10 * 1 2 H T T I C H = , F 6 1 . 2 )

11 E N D

12

13

14

15

16

17

18

19

20

21

22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Page 24: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

23

ý nghÜa ch−¬ng tr×nh lµ: ®äc 1 b×a cã ghi gi¸ trÞ cña b¸n kÝnh (BKINH) vµ

chiÒu cao (CCAO), tÝnh thÓ tÝch h×nh trô (TTICH) theo c«ng thøc trªn, in ra c¸c

gi¸ trÞ t−¬ng øng cña b¸n kÝnh, chiÒu cao, thÓ tÝch råi dõng m¸y.

ý nghÜa cña tõng dßng:

1. §©y lµ dßng thuyÕt minh: tãm t¾t néi dung vµ tªn ch−¬ng tr×nh lµ

TTTRU. Ch÷ C ®Çu dßng cã thÓ ®ång thêi lµ ch÷ ®Çu cña néi dung thuyÕt minh

(CHUONG) ®ång thêi còng cho biÕt ®©y lµ dßng thuyÕt minh.

2. Dßng thuyÕt minh trèng cã ch÷ C ë ®Çu nh»m ®Ó c¸ch dßng khi in

nh»m dÔ theo dâi ch−¬ng tr×nh.

3. READ lµ “®äc”: ®äc néi dung 1 b×a ghi vµo bé nhí bao gåm: 5 lµ sè

hiÖu kªnh vµo (bµn phÝm), 10 lµ nh·n cña th«ng b¸o FORMAT t−¬ng øng cho

biÕt quy c¸ch ®äc. Nh·n ë ®©y lµ cÇn thiÕt v× cã nhiÒu FORRMAT kh¸c nhau,

cÇn ph¶i ®¸nh sè cña chóng ®Ó gäi cho ®óng.

ChØ thÞ nµy lÖnh cho m¸y vµo ®äc b×a ë kªnh 5 (bµn phÝm) theo quy c¸ch

10 vµ g¸n gi¸ trÞ ®äc ®−îc cho 2 biÕn BKINH vµ CCAO tøc lµ göi néi dung ®äc

®−îc vµo c¸c biÕn nhí cã tªn (®Þa chØ) lµ BKINH vµ CCAO.

4. Dßng tiÕp theo lµ mét chØ thÞ g¸n, cho phÐp tÝnh thÓ tÝch h×nh trô theo

b¸n kÝnh vµ chiÒu cao ®· x¸c ®Þnh (ë trªn) vµ g¸n kÕt qu¶ cho biÕn TTICH. ë ®©y

* lµ dÊu nh©n; ** lµ dÊu lòy thõa bËc 2.

5. WRITE lµ “viÕt”, ViÕt ra theo kªnh sè 6 (m¸y in) gi¸ trÞ cña ba biÕn

BKINH, CCAO vµ TTICH víi quy c¸ch th«ng b¸o FORMAT mang nh·n 11.

6. STOP lµ “dõng l¹i”, chØ thÞ cho m¸y tÝnh xong, kÕt thóc c«ng viÖc.

7. 10 lµ nh·n cña FORMAT , 2F10.2 lµ quy c¸ch ®äc: ®äc 2 sè liÒn nhau

d¹ng dÊu ph¶y tÜnh (m· F) mçi sè 10 cét vµ cã 2 sè ë ph©n thËp ph©n. FORMAT

®Ó ®©u còng ®−îc miÔn lµ ch−a kÕt thóc ch−¬ng tr×nh.

VÝ dô bbbbb10.32bbbbb61.07 th× m¸y sÏ ®äc lµ gi¸ trÞ thø nhÊt lµ 10,32 g¸n cho

BKINH vµ gi¸ trÞ thø hai 61,07 g¸n cho CCAO. ë ®©y dÊu . ®ãng vai trß nh− dÊu

ph¶y vµ lµ 1 « trong b×a, b chØ chç trèng kh«ng ®ôc g× hoÆc ®ôc c¸ch ” ”.

8. 11 lµ nh·n cña FORMAT cho biÕt quy c¸ch in ra: võa in kÕt qu¶ võa

gi¶i thÝch. Dïng h»ng ký tù (HOLLERITH) ®Ó biªn tËp kÕt qu¶.

9HOBKINHb=b chØ r»ng m¸y sÏ in ra 8 ký tù kÓ tõ ch÷ B (kÓ c¶ ký tù

tr¾ng) tøc lµ in ra “BKINH_= _“ ch÷ b cã nghÜa lµ ký tù tr¾ng.

Page 25: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

24

sè 9 cho biÕt sè l−îng ký tù sau ch÷ H lµ 9.

9H: Ch÷ H cho biÕt m· H (h»ng ký tù).

9HO: Ch÷ O lµ dÊu hiÖu kiÓm tra kÐo giÊy, kh«ng in ra, nã cã nghÜa lµ bá

c¸ch mét dßng (®Ó kÐo giÊy vµo m¸y in) vµ in tõ dßng thø 2 c¸c ký tù sau ch÷ O

víi sè l−îng ký tù tr−íc ch÷ H.

F6.2 cho phÐp in gi¸ trÞ cña BKINH sau h»ng ký tù võa råi, ph¹m vi in lµ 6

ký tù lÖch vÒ ph¶i, cã 2 sè ë phÇn thËp ph©n. Tøc lµ khi in ra giÊy ta sÏ cã:

“ BKINH = 10.32”.

T−¬ng tù víi c¸c phÇn sau.

DÊu * ë cét 6 trong dßng 9 vµ 10 lµ dÊu hiÖu nèi tiÕp cña 2 dßng phô ®ã

(tuy cho phÐp ghi 66 ký tù mçi dßng, nh−ng kh«ng nªn viÕt qu¸ dµi v× khã ®äc

vµ dÔ ®ôc sai nªn ng−êi ta th−êng xuèng dßng cho dÔ theo dâi).

T¸c ®éng cña FORMAT nh·n 11 (chiÕm 3 dßng liÒn) lµ cho in ra dßng

sau:

“ BKINH = 10.32 CCAO = 61.07 TTICH = 29120.59”

11. END “hÕt” lµ th«ng b¸o, b¸o chç chÊm hÕt ch−¬ng tr×nh cÇn dÞch. Khi

dÞch gÆp tíi END ch−¬ng tr×nh dÞch biÕt lµ ®· dÞch xong.

Qua vÝ dô nµy ta thÊy cÊu tróc cña ch−¬ng tr×nh rÊt ®¬n gi¶n, râ rµng, dÔ

hiÓu, nh−ng ®ñ minh häa cho mét ch−¬ng tr×nh ®Çy ®ñ hoµn chØnh. Nã cho phÐp

ch¹y víi nhiÒu d÷ liÖu kh¸c nhau. Mçi lÇn ch¹y, nã ®äc mét b×a ghi BKINH,

CCAO cña mét h×nh trô vµ in ra c¸c tham sè ®ã cïng víi kÕt qu¶ lµ thÓ tÝch

t−¬ng øng. CÇn in c¶ tham sè vµo v× nÕu kh«ng sau khi ch¹y víi mét lo¹t h×nh

trô sÏ kh«ng biÕt kÕt qu¶ øng víi d÷ liÖu ®Çu vµo nµo.

Ch−¬ng tr×nh trªn cã cÊu tróc cña mét ch−¬ng tr×nh tuyÕn tÝnh, c¸c chØ thÞ

®−îc thùc hiÖn tuÇn tù nhau theo thø tù tù nhiªn, viÕt tr−íc thùc hiÖn tr−íc, viÕt

sau thùc hiÖn sau. §©y lµ cÊu tróc ®¬n gi¶n nhÊt. Muèn tr¸nh ph¶i dõng mµy

lu«n mçi khi in xong 1 dßng (1 ch−¬ng tr×nh). Cã thÓ cho m¸y ®äc tiÕp b×a sau

®Ó tÝnh víi d÷ liÖu kh¸c, Thay dßng 3 lµ READ bëi chØ thÞ cã nh·n lµ 2 READ

vµ thay dßng 6 lµ STOP b»ng Go To 2 th× mçi khi in xong gÆp chØ thÞ nµy m¸y sÏ

chuyÓn tíi chØ thÞ mang nh·n 2 lµ ®äc tiÕp d÷ liÖu ë b×a sau t¹o thµnh chu tr×nh

®Ó gi¶i bµi to¸n víi nhiÒu d÷ liÖu, tíi khi hÕt d÷ liÖu (d÷ liÖu kh«ng hîp lÖ) th×

READ sÏ “lçi” vµ chÊm døt ch−¬ng tr×nh, lóc Êy m¸y sÏ tù ®éng dõng.

Page 26: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

25

B¶ng 2: TÝnh trung b×nh céng cña mét d·y sè.

C¸c sè ®Òu lµ sè nguyªn, kh«ng v−ît qu¸ 100, mçi sè 3 ký tù. §ôc 8 sè trªn 1 b×a. B×a ®Çu cã kÝch th−íc 80 cña d·y (80 ký tù)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

1 C H U O N G T R I N H T I N H T R U N G B I N H C O N G

2 C

3 I N T E G E R D A Y , T O N G

4 R E A L T B I N H

5 D I M E N S I O N D A Y ( 8 0 )

6 W R I T E ( 6 , 4 9 )

7 R E A D ( 5 , 5 0 ) K T

8 R E A D ( 5 , 5 0 ) ( D A Y ( I ) , I = 1 , K T )

9 W R I T E ( 6 , 5 1 ) ( D A Y ( I ) , I = 1 , K T )

10 T O N G = 0

11 D O 2 0 J = 1 , E T

12 2 0 T O N G = T O N G + D A Y ( J )

13 T B I N H = T O N G / K T

14 W R I T E ( 6 , 6 0 ) T B I N H

15 S T O P

16 4 9 F O R M A T ( 1 H 1 D A Y b S O b V A O )

17 5 0 F O R M A T ( 8 I 3 )

18 5 1 F O R M A T ( 8 I 5 )

19 6 0 F O R M A T ( 1 5 H O T R U N G b B I N H b L A b , 1 0 . 2 )

20 E N D 21 22 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Page 27: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

26

B¶ng 3: TÝnh trung b×nh céng cña mét d·y sè theo c«ng thøc ∑=

=N

1iiX

N1X .

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

1 C H U O N G T R I N H T I N H T R U N G B I N H C O N G

2 C T H A M S O K I C H T H U O C V A L O A I T R U N G B I N

3 C M L T B

4 C K H O I D A U G I A T R I T O N G V A C A I D E M

5 D E M X = 0

6 T O N G X = 0

7 C D O C B I A T H A M S O

8 R E A D ( 5 , 1 0 0 ) X N , M L T B

9 C D O C X

10 R E A D ( 5 , 1 0 0 ) X

11 C T A N G C A I D E M V A T I C H L U Y T O N G

12 D E M X = D E M X + 1

13 T O N G X = T O N G X + X

14 C X E M H E T X C H U A

15 I F ( D E M X . L T . X N ) G O T O 1

16 C T I N H T B C C U A X / L N X

17 X T B = T O N G X / X N

18 C I N R A

19 W R I T E ( 6 , 1 0 0 ) X T N

20 S T O P

21 1 0 0 F O R M A T ( F 1 5 . 5 , I 2 )

22 E N D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Page 28: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

27

B¶ng 4: TÝnh ®é lÖch chuÈn theo c«ng thøc ( )∑=

−=N

1i

2i XX

k1S

Gäi X(K) lµ sè liÖu thø K, K = 1 ®Õn N vµ XTB lµ gi¸ trÞ trung b×nh céng cña X(K)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

1 C H U O N G T R I N H T I N H T R U N G B I N H C O N G

2 C T H A M S O K I C H T H U O C V A L O A I T R U N G B I N

3 C M L T B

4 C K H O I D A U G I A T R I T O N G V A C A I D E M

5 D E M X = 0

6 T O N G X = 0

7 C D O C B I A T H A M S O

8 R E A D ( 5 , 1 0 0 ) X N , M L T B

9 C D O C X

10 R E A D ( 5 , 1 0 0 ) X

11 C T A N G C A I D E M V A T I C H L U Y T O N G

12 D E M X = D E M X + 1

13 T O N G X = T O N G X + X

14 C X E M H E T X C H U A

15 I F ( D E M X . L T . X N ) G O T O 1

16 C T I N H T B C C U A X / L N X

17 X T B = T O N G X / X N

18 C I N R A

19 W R I T E ( 6 , 1 0 0 ) X T N

20 S T O P

21 1 0 0 F O R M A T ( F 1 5 . 5 , I 2 )

22 E N D 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40

Page 29: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

28

VÝ dô 2: TÝnh trung b×nh céng cña mét d·y sè. C¸c sè ®Òu lµ sè nguyªn,

kh«ng v−ît qu¸ 100, mçi sè 3 ký tù. §ôc 8 sè trªn 1 b×a. B×a ®Çu cã kÝch th−íc

80 cña d·y (80 ký tù) (B¶ng 2).

VÝ dô 3: TÝnh trung b×nh céng cña mét d·y sè theo c«ng thøc ∑=

=N

1iiX

N1X .

(B¶ng 3).

VÝ dô 4: TÝnh ®é lÖch chuÈn theo c«ng thøc ( )∑=

−=N

1i

2i XX

k1S

Gäi X(K) lµ sè liÖu thø K, K = 1 ®Õn N.

XTB lµ gi¸ trÞ trung b×nh céng cña X(K) (B¶ng 4).

VÝ dô 5: T×m gi¸ trÞ bÐ nhÊt MIN trong hai sè X, Y cho tr−íc.

C

CHUONG TRINH TIM GIA TRI CUA HAI SO X, Y

C

C MO TA LOAI BIEN

REAL MIN

C DOC DU LIEU VAO

READ (5, 100) X, Y

C GAN CHO MIN MOT TRONG HAI SO

MIN = X

C NEU KHONG DUNG THI DOI LAI GIA TRI KIA

IF (MIN.GT.Y) MIN = Y

C IN RA VA DUNG MAY

WITE (6, 101) X, Y, MIN

101 FORMAT (1HO, 3E20.5)

STOP

END.

Real (thùc) th«ng b¸o MIN lµ biÕn thùc.

MIN.GT.Y lµ biÓu thøc logic ë ®©y “.GT.” lµ lín h¬n, lÊy gi¸ trÞ TRUE

(®óng) nÕu MIN > Y, nã lµ FALSE (sai) nÕu MIN kh«ng lín h¬n Y.

Page 30: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

29

IF lµ chØ thÞ kiÓm tra ®iÒu kiÖn logic. NÕu biÓu thøc logic trong ngoÆc

®óng th× thùc hiÖn chØ thÞ ®øng sau biÓu thøc logic råi chuyÓn sang thùc hiÖn chØ

thÞ sau IF, nÕu biÓu thøc logic sai th× bá qua chØ thÞ sau biÓu thøc logic vµ chuyÓn

sang th»ng chØ thÞ sau IF.

T− liÖu ®äc thªm 1. INTEGER Lµ sè nguyªn; DIMENSION DAY (80) lµ th«ng b¸o m« t¶ kÝch th−íc

m¶ng DAY, b¸o ®Ó ch−¬ng tr×nh dµnh cho m¶ng nµy 80 ký tù tèi ®a. DIMENSION (kÝch th−íc)

2. WRITE (6, 49) kh«ng cã danh s¸ch biÕn v× chØ in h»ng ký tù ë FORMAT nh·n 49. H1 lµ ký hiÖu kiÓm tra, kh«ng in ra, chØ nh¾c r»ng ph¶i in nh÷ng ký hiÖu sau ë ®Çu trang míi (sang trang).

3. READ (5, 50) KT cho ®äc kÝch th−íc thùc tÕ cña m·ng DAY. KT kh«ng ®−îc v−ît qu¸ kÝch th−íc tèi ®a cho phÐp ë DIMENSION. §äc theo m· I3 ë quy c¸ch 50

4. READ (5, 50) (DAY (I), I = 1,KT) cho ®äc c¶ mét m¶ng biÕn cã chØ sè DAY (I). ChØ sè I tù ®éng t¨ng tõ 1 tíi KT víi b−íc t¨ng 1. Quy c¸ch ®äc theo nh·n 50. Mçi b×a ghi 8 sè, mçi sè 3 ký tù.

5. WRITE (6, 51). In ra m¸y in tõng dßng, mçi dßng 8 sè, mçi sè 5 ký tù (trõ sè ®Çy cã 4 ký tù), thõa ®Ó tr¾ng bªn tr¸u tøc lµ canh ph¶i cña 5 ký tù.

6. DO 20 J = 1, KT lµ chØ thÞ chu tr×nh cho phÐp thùc hiÖn KT lÇn chØ thÞ 20 víi gi¸ trÞ cña J t¨ng tõ 1 ®Õn KT.

7. DÊu / lµ dÊu chia. YÕu tè cña ng«n ng÷ 2.4.5.1. Ký hiÖu Ch−¬ng tr×nh viÕt b»ng ng«n ng÷ FORTRAN chØ ®−îc viÕt b»ng nh÷ng ký hiÖu c¬ së,

kh«ng ®−îc chøa c¸c ký hiÖu ngo¹i lai nµo kh¸c. Ký hiÖu c¬ së gåm: + Ch÷ c¸i: Ch÷ c¸i trong FORTRAN lµ c¸c ch÷ latinh in hoa (®«i khi më réng ra víi

ch÷ c¸i nga in hoa) A B C D E F G H I J K L M

N ∅ P Q R S T U V W X Y Z + Ch÷ sè: Ch÷ sè lµ c¸c ch÷ sè A rËp: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9

§Ó tr¸nh nhÇm lÉn ch÷ O ph¶i viÕt lµ ∅, ch÷ I ph¶i viÕt in ®Ó ph©n biÖt víi sè 1, ch÷ Z ph¶i viÕt th−êng z ®Ó ph©n biÖt víi sè 2. Tuy nhiªn do thuËn tiÖn vµ thãi quen ng−êi ta vÉn viÕt O vµ Z.

+ DÊu ®Æc biÖt: + DÊu Céng * DÊu nh©n ** DÊu lòy thõa . DÊu chÊm - DÊu trõ / DÊu chia DÊu trèng , DÊu ph¶y ( DÊu më

ngoÆc ) DÊu ®ãng

ngoÆc = DÊu g¸n b DÊu trèng

DÊu . dïng víi 4 nghÜa: - Lµ dÊu thËp ph©n thay cho dÊu ph¶y.

Page 31: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

30

- Lµ dÊu ph©n ly trong m· ®Æc tr−ng F6.2 - Lµ dÊu ë phÐp logic .GT. lµ lín h¬n hay .EQ. lµ b»ng - Lµ dÊu chÊm c©u. DÊu = dïng theo nghÜa g¸n, muèn diÔn t¶ sù b¼ng nhau dïng phÐp so s¸nh quan hÖ .ED.

Tr¸nh dïng ký hiÖu ngo¹i lai nh−: π,∞,↑, §, ¥,. . . Cã thÓ më réng dÊu ®Æc biÖt nh−: ;, :, &, $

Ký hiÖu thø cÊp gåm: Tõ c¸c ký hiÖu c¬ së (s¬ cÊp) cã thÓ t¹o ra c¸c ký hiÖu thø cÊp - TrÞ logic .TRUE., .FALSE. - Quan hÖ logic: .EQ., .NE., .LT., .LE., .GT., .GE. - PhÐp logic: .NOT., .AND., .OR. - C¸c tõ khãa: CALL Gäi; COMMON Chung; COMPLEX Phøc; CONTINUE TiÕp tôc; DATA D÷ liÖu; DIMENSION KÝch th−íc; DO Lµm; DOUBLE PRECISION ChÝnh x¸c kÐp; END HÕt. Sè tõ khãa nµy nhiÒu hay Ýt tïy thuéc vµo ch−¬ng tr×nh dÞch. Tõ khãa ®Ó x©y dùng c¸c chØ thÞ, th«ng b¸o. Ngoµi ra cßn lo¹i tõ tù ®Æt do ng−êi lËp ch−¬ng tr×nh ®Æt riªng cho minh dïng ®Ó ghi c¸c tªn gäi (biÕn, hµm, thñ tôc, . . .) th−êng lµ mét d·y kh«ng qu¸ 6 ký tù b¾t ®Çu b»ng ch÷ c¸i. C¸c tõ khãa lµ tõ riªng cho ng«n ng÷, ph¶i viÕt trong ch−¬ng tr×nh theo ®ung quy t¾c chÝnh t¶ vµ ng÷ ph¸p. Trong FORTRAN kh«ng ®−îc viÕt: DIMENTION thay cho DIMENSION SUBPROGRAM thay cho SUBBROUTINE BOOLEN thay cho LOGICAL FUNKTION thay cho FUNCTION C¸c yÕu tè FORTRAN cã thÓ ph©n lo¹i nh− sau: + H»ng c¸c lo¹i + BiÕn ®¬n vµ mang chØ sè + BiÓu thøc sè häc vµ logic + ChØ thÞ g¸n sè häc vµ logic + ChØ thÞ ®iÒu khiÓn + ChØ thÞ vµo ra + Hµm vµ ch−¬ng tr×nh con + C¸c th«ng b¸o

H»ng. Mäi ®¹i l−îng xuÊt hiÖn trong ch−¬ng tr×nh d−íi d¹ng tr−êng vµ kh«ng ®æi khi ch¹y

ch−¬ng tr×nh (chØ lÊy 1 gi¸ trÞ) gäi lµ h»ng (constant). Nh÷ng ®¹i l−îng xuÊt hiÖn trong ch−¬ng tr×nh d−íi d¹ng Èn (tªn gäi) vµ cã thÓ thay ®æi

gi¸ trÞ khi ch¹y ch−¬ng tr×nh (®−îc g¸n gi¸ trÞ kh¸c) gäi lµ biÕn (variable).

Page 32: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

31

Muèn ch¹y ®−îc ch−¬ng tr×nh linh ho¹t, v¹n n¨ng th× c¸c tham sè cÇn ®−a vµo d−íi d¹ng biÕn h¬n lµ h»ng.

Trong FORTRAN cã c¸c h»ng sau: + H»ng nguyªn (Integer) cã m· I lµ d·y ch÷ sè ®i sau dÊu + hoÆc -. Sè ch÷ sè h¹n chÕ,

th−êng kh«ng qu¸ 11; tèt nhÊt ®Ó ®¶m b¶o kh«ng m¾c lçi nªn viÕt kh«ng qu¸ 5, tuy nhiªn cã m¸y chÊp nhËn tíi 20 ch÷ sè.

+ H»ng thùc (REAL) : §−îc biÓu diÔn d−íi 2 d¹ng. - D¹ng dÊu chÊm tÜnh hay m· F (fixe point) th−êng kh«ng qu¸ 9 ch÷ sè viÕt gièng nh−

c¸ch th«ng th−êng, b¾t buéc ph¶i cã dÊu chÊm (dÊu thËp ph©n) thay cho dÊu ph¶y. Sè thùc nãi chung chØ ®−îc biÓu diÔn xÊp xØ vµ chØ gåm sè h÷u tû.

Sè π cã thÓ viÕt 3.1416 3.0 biÓu diÔn trong m¸y tÝnh bëi 2.9999999 hoÆc 3.000001. phÇn nguyªn cña 3.0 do ®ã

kh«ng x¸c ®Þnh. - D¹ng dÊu chÊm ®éng hay m· E (floating point) cã d¹ng chuÈn

±0.xxxxxxxE±xx X lµ ch÷ sè bÊt kú. PhÇn tr−íc E lµ ®Þnh trÞ, cã d¹ng m· F, E (Extent) thay cho c¬ sè 10, phÇn sau E lµ

bËc; bËc lµ sè m· I th−êng kh«ng qu¸ 2 ch÷ sè. DÊu + ë ®Þnh trÞ vµ ë bËc cã thÓ hiÓu ngÇm. NÕu ®Þnh trÞ cã trÞ sè tuyÖt ®èi gi÷a o.1 vµ 1. nghÜa lµ ch÷ sè ngay sau dÊu thËp ph©n

kh¸c sè 0 th× sè gäi lµ ®−îc chuÈn hãa (phÇn nguyªn b»ng kh«ng) Cã thÓ biÓu diÔn sè thùc theo m· F hay m· E. M· F ®¬n gi¶n, quen thuéc nh−ng m· E

− viÖt h¬n khi: Sè qu¸ lín hoÆc qu¸ bÐ. VÝ dô 15000000000000000000 kh«ng thÓ biÓu diÔn b»ng m·

F, víi m· E lµ 15E18, t−¬ng tù 0,0000000000000001 ®−îc viÕt lµ 1.E-16. Khi ch−a biÕt tr−íc kÕt qu¶ tÝnh lín hay bÐ nªn biÓu diÔn theo m· E. + H»ng chÝnh x¸c kÐp (Double precision) cã ®é dµi gÊp ®«i h»ng thùc, chiÕm hai ®¬n

vÞ nhí. + H»ng phøc (Complex) cã m· C biÓu diÔn bëi cÆp sè thùc chØ phÇn thùc vµ phÇn ¶o

(hai ®¬n vÞ nhí, mçi phÇn mét theo m· F hay m· E). A + bi biÓu diÔn bíi (a, b). VÝ dô 2.7, 7.25) biÓu diÔn phøc sè 2,7 + 7,25i (3.E2, 1E-1) biÓu diÔn phøc sè 3.102 + 0,1i. C¸c phÐp tÝnh ®−a vÒ phÐp tÝnh gi÷a phÇn thùc vµ phÇn ¶o. + H»ng logic (Logical) cã m· L chØ gåm 2 gi¸ trÞ .TRUE. (®óng) vµ .FALSE. (sai). + H»ng ký tù (Holerit) cã m· H cã d¹ng:nHxxx…xxx hay xxx….xxx X lµ c¸c ký hiÖu c¬ së, cã n ký hiÖu c¬ së x. c¸c ký tù trèng trong m· H vÉn ph¶i tÝnh. H»ng ký tù th−êng dïng ®Ó biªn tËp c¸c th«ng b¸o, thuyÕt minh, kÕt qu¶. BiÕn. BiÕn lµ mét ®¹i l−îng cã tªn, cã thÓ thay ®æi gi¸ trÞ khi ch¹y ch−¬ng tr×nh. Tªn biÕn

®ång thêi lµ ®Þa chØ cña ®¬n vÞ nhí chøa gi¸ trÞ biÕn Tªn biÕn lµ mét d¹y c¸c ch÷ c¸i vµ ch÷ sè, b¾t ®Çu b»ng ch÷ c¸i vµ kh«ng qu¸ 6 ký tù

viÕt liÒn nhau (kh«ng cã dÊu c¸ch).

Page 33: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

32

BiÕn ph¶i ®−îc m« t¶ vÝ dô: INTEGER CCAO hay REAL TONG, mçi biÕn kh«ng thÓ cã mÆt ë 2 th«ng b¸o m« t¶ lo¹i.

Trong FORTRAN cã c¸c lo¹i biÕn sau: + BiÕn nguyªn vµ thùc. NÕu tªn biÕn ®−îc b¾t ®Çu b»ng mét trong c¸c ch÷ cai I, J, K, L, M, N th× ®ã lµ biÕn

nguyªn, ngoµi ra lµ biÕn thùc. + BiÕn chÝnh x¸c kÐp (DOUBLE PRECISION). + BiÕn phøc (COMPLEX). + BiÕn logic (Logical) chØ gåm 2 gi¸ trÞ .TRUE. (®óng) vµ .FALSE. (sai). M¶ng. BiÕn cã thÓ cã chØ sè (viÕt trong dÊu ngoÆc ®¬n), tËp hîp thµnh m¶ng. Mçi phÇn tö cña

m¶ng øng víi mét gi¸ trÞ cña chØ sè. Sè gi¸ trÞ cña chØ sè gäi lµ kÝch th−íc cña m¶ng, sè chØ sè gäi lµ chiÒu cña m¶ng.

M¶ng A gåm n hµng, m cét ®−îc viÕt lµ (A(n, m) M¶ng X lµ m¶ng 1 chiÒu kÝch th−íc 3: X(1) X(2) X(3) M¶ng A lµ m¶ng 2 chiÒu kÝch th−íc 3: A(1,1) A(1,2) A(1,3) A(2,1) A(2,2) A(2,3) Tªn biÕn vµ tªn m¶ng theo quy c¸ch gäi tªn vµ x¸c ®Þnh lo¹i. Mçi hµng, mçi cét lµ m¶ng 1 chiÒu. (A(1, J), J=1,3) lµ hµng 1 gåm A(1,1) A(1,2) vµ A(1,3). (A(I, 2), I = 1, 2) lµ cét 2 gåm A(1,2) vµ A(2,2) M¶ng ph¶i ®−îc th«ng b¸o kÝch th−íc bëi th«ng b¸o DIMENSION (kÝch th−íc) ®Ó

ch−¬ng tr×nh dÞch biÕt dµnh vïng nhí chøa m¶ng ®ã. VÝ dô DIMENSION X(3), A(2,3) M¶ng X lµ m¶ng 1 chiÒu kÝch th−íc 3 cßn m¶ng A lµ m¶ng 2 chiÒu kÝch th−íc 3. Quy c¸ch vµo, ra. C¸c biÕn cã thÓ ®−îc g¸n mét gi¸ trÞ (c¸c h»ng) vµ ®−îc ®äc hay in ra ph¶i dïng c¸c

m· ®Æc tr−ng ®Ó gi¶i m· c¸c d÷ liÖu cña biÕn (hay h»ng) ®ã Iw lµ m· ®Æc tr−ng sè nguyªn cã w ký tù.

Fw.d lµ m· ®Æc tr−ng sè thùc dÊu ph¶y tÜnh cã w ký tù, cã d sè lÎ. Ew.d lµ m· ®Æc tr−ng dÊu ph¶y ®éng cã w ký tù cã d sè lÎ.

Hµm mÉu

ABS(X) lµ hµm ⏐X⏐ SQRT(X) lµ hµm X ALOG(X) lµ hµm lnX SIN(X) lµ hµm sinX COS(X) lµ hµm cosX EXP(X) lµ hµm eX ATAN(X) lµ hµm acrtgX 2.4.5.7. BiÓu thøc logic vµ c¸c quan hÖ

.EQ. = .NE. ≠ .GT. > .GE. ≥ .LT. <

.LE. ≤ .NOT. Kh«ng .AND. Vµ .OR. HoÆc

ChØ thÞ g¸n sè häc na = b n lµ nh·n (nÕu cã) cña chØ thÞ. a tªn biÕn b biÓu thøc sè häc ChuyÓn ®iÒu khiÓn

Page 34: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

33

Cã c¸c chØ thÞ GOTO, IF, DO, CONTINUE, PAUSE, STOP, END, CALL, RETURN, READ, WRITE

n GO TO m nghÜa lµ: n lµ nh·n (nÕu cã) cña b¶n th©n chØ thÞ, GO TO lµ chuyÓn tíi, m lµ nh·n cña chØ thÞ sÏ thùc hiÖn ngay sau ®ã.

n GO TO (n1, n2, . . .nk), i nghÜa lµ: n lµ nh·n (nÕu cã) cña b¶n th©n chØ thÞ, GO TO lµ

chuyÓn tíi, nj(j = 1 . . . k) lµ nh·n cña chØ thÞ cã trong ch−¬ng tr×nh (th−êng k ≤ 10), i biÕn nguyªn kh«ng dÊu, kh«ng chØ sè. BiÕn i khi gÆp GO TO sÏ tÝnh, cã gi¸ trÞ j th× chuyÓn tíi chØ thÞ cã nh·n nj.

n IF (e) n1, n2, n3 nghÜa lµ: n lµ nh·n (nÕu cã) cña b¶n th©n chØ thÞ, IF lµ nÕu, e lµ biÓu thøc sè häc hoÆc biÓu thøc logic, n1, n2, n3 lµ nh·n chØ thÞ cã trong ch−¬ng tr×nh.

n DO m i=j, k, l nghÜa lµ n lµ nh·n (nÕu cã) cña b¶n th©n chØ thÞ, DO lµ lµm. i, j, k, l lµ c¸c h»ng hoÆc biÕn nguyªn kh«ng dÊu, kh«ng chØ sè. i lµ biÕn chØ sè hay biÕn ®iÒu khiÓn ®ãng vai trß ®Õm vßng lÆp, kh«ng ®−îc lµ h»ng. j lµ cËn d−íi hay gi¸ trÞ ban ®Çu cu¶ i (ban ®Çu i =

j). k lµ cËn trªn (thùc hiÖn DO ®Õn khi i ≤ k). l lµ b−íc lÆp hay sè gia (i = i + l. nÕu l = 1 th× kh«ng cÇn ghi). m lµ nh·n cña chØ thÞ cuèi ph¹m vi t¸c dông cña DO.

n CONTINUE lµ chØ thÞ gi¶ (kh«ng lµm g× c¶). GÆp chØ thÞ nµy chØ viÖc chuyÓn sang chØ thÞ tiÕp theo (th−êng dïng cuèi ph¹m vi DO).

END nghÜa lµ hÕt lµ th«ng b¸o cuèi cïng cña mäi ch−¬ng tr×nh nguån (kÓ c¶ ch−¬ng tr×nh con) chØ cã t¸c dông b¸o cho ch−¬ng tr×nh dÞch ®ã lµ chç cuèi ch−¬ng tr×nh nguån. Khi gÆp END m¸y sÏ b¸o hiÖu dÞch xong ch−¬ng tr×nh t−¬ng øng.

STOP nghÜa lµ ®øng, khi gÆp chØ thÞ nµy m¸y sÏ dõng chê ng−êi thao t¸c ®iÒu khiÓn vµ nÕu tiÕp tôc thi b¾t ®Çu l¹i tõ ®Çu.

PAUSE nghÜa lµ nghØ t−¬ng tù nh− STOP nh−ng kh¸c lµ Ên nót CHAY thi m¸y tiÕp tôc thùc hiÖn ch−¬ng tr×nh.

READ (m, n) dsb nghÜa lµ ®äc tõ thiÕt bÞ m (kªnh vµo), quy c¸ch n (ghi nh·n cña th«ng b¸o FORMAT t−¬ng øng) vµ g¸n cho danh s¸ch biªn dsb.

WRITE (m, n) dsb nghÜa lµ viÕt ra thiÕt bÞ m (kªnh ra) danh s¸ch biÕn dsb víi quy c¸ch n (ghi nh·n cña th«ng b¸o FORMAT t−¬ng øng).

In ra M· I th× sè ®−îc in ra dån vÒ bªn ph¶i, thõa th× ®Ó tr¾ng, thiÕu châ in th× sè bÞ c¾t ®Çu

(mÊt c¸c sè bªn tr¸i) hoÆc in b¸o sai. M· F th× sè ®−îc in dån vÒ ph¶i dÊu, x¸c ®Þnh tïy theo d, sè lÎ ®−îc quy trßn, dÊu +

kh«ng in, thõa ®Ó tr¾ng bªn tr¸i

M· A th× sÏ in dån vÒ phÝa ph¶i (nÕu w≥ c), thõa ®Ó tr¾ng bªn tr¸i w – c ký tù. NÕu w < c th× chØ in ra w ký tù bªn tr¸i (®Çu sè) ®u«i bÞ c¾t. M· H th× in ra c¸c th«ng b¸o, tiªu ®Ò, thuyÕt minh. M· X dïng ®Ó bá tr¾ng n vÞ trÝ ë dßng in ra

Page 35: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

34

Ch−¬ng 3 : c¸c thuËt to¸n c¬ b¶n dïng trong hãa häc 3.1. tÝnh lÆp

3.1.1. Vßng lÆp cã sè b−íc x¸c ®Þnh FOR. . . TO…

Mét trong nh÷ng thuËt to¸n quan träng nhÊt cña m¸y tÝnh lµ vßng lÆp

dïng ®Ó lÆp ®i lÆp l¹i mét phÐp tÝnh hoÆc mét nhãm c¸c phÐp tÝnh nµo ®ã.

PASCAL cã mét sè to¸n tö lÆp gän gµng h¬n nhiÒu so víi viÖc dïng IF . . .

THEN . . . nh− trªn.

CÊu tróc lÖnh:

hoÆc

VÝ dô 1:

a:=0; b:=1; c:=2;

FOR i:=1 to 5 do

Begin

a:=a+ i; b=b+i; c=(c+b+a)/i;

end;

ViÖc thùc hiÖn lÖnh g¸n c¸c biÕn a, b, c sÏ ®−îc lÆp l¹i tõ gi¸ trÞ cña i b»ng

1 (a = 1; b = 2; c = 5) sau ®ã t¨ng i lªn 1 ®¬n vÞ (i=2) vµ thùc hiÖn lÖnh g¸n c¸c

biÕn a, b, c (a = 3; b = 4; c = 6) sau ®ã tiÕp tôc t¨ng i lªn 1 ®¬n vÞ i= 3 vµ i = 4

vµ cho ®Õn gi¸ trÞ cña i b»ng 5 th× thùc hiÖn xong c¸c lÖnh g¸n th× tho¸t ra khái

vßng lÆp.

FOR BiÕn_®iÒu_khiÓn:=Gi¸_trÞ_®Çu TO Gi¸_trÞ_cuèi Do <C©u lÖnh>

FOR BiÕn_®iÒu_khiÓn:=Gi¸_trÞ_®Çu DOWTO Gi¸_trÞ_cuèi Do <C©u lÖnh>

FOR BiÕn_®iÒu_khiÓn:=Gi¸_trÞ_®Çu TO Gi¸_trÞ_cuèi Do

BEGIN

C©u lÖnh 1;

. . . . . .

C©u lÖnh n;

END;

Page 36: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

35

VÝ dô2: §o¹n ch−¬ng tr×nh tÝnh tæng n sè nguyªn ®Çu tiªn

. . .

Sum:=0;

For i:=1 to n do sum:=sum+i;

Sum:=0;

For i:=1 to n do if (i mod 2 = 0) then

sum1:=sum1+i else sum2:=sum2+i;

. . .

VÝ dô 3: §o¹n ch−¬ng tr×nh t×m cùc ®¹i cña mét d·y sè

. . .

Amax:=a[1]; i:=1; imax:=1;

Repeat

If (a[i]>amax) then

Begin

amax:=a[i]; imax:=i;

end;

i:=i+1;

Until i>n;

. . .

VÝ dô 4: §o¹n ch−¬ng tr×nh nhËp gi¸ trÞ c¸c phÇn tö cña mét d·y sè

. . .

for i:=1 to n do

begin

write('nhap gia tri cua a[',i,'] ');

readln(a[i]);

end;

. . .

VÝ dô 5: §o¹n ch−¬ng tr×nh tÝnh trung b×nh mét d·y sè

. . .

Sum:=0;

Page 37: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

36

for i:=1 to n do sum:=sum+a[i];

atb:= sum/n;

. . .

VÝ dô 6: §o¹n ch−¬ng tr×nh s¾p xÕp thø tù c¸c phÇn tö cña mét d·y sè

. . .

for k:=1 to n do

begin

amax:= a[k]; imax := k;

for i:= k+1 to n do if a[i]>amax then

begin

amax:=a[i]; imax:=i;

end;

tampon:=a[k]; a[k]:=a[imax];

a[imax]:=tampon;

end;

. . .

VÝ dô 7: §o¹n ch−¬ng tr×nh viÕt mét ma trËn bËc nxn.

. . .

For k:=1 to n do

Begin

For j:=1 to n do write(a[k,j]:10:4);

Writeln;

End;

. . .

3.1.2. Vßng lÆp cã sè b−íc lÆp kh«ng x¸c ®Þnh REPEAT vµ WHILE

§«i khi FOR kh«ng dïng ®−îc v× ng−êi ta kh«ng biÕt ®Ých x¸c lóc nµo

cÇn ra khái vßng lÆp tøc lµ ch−a biÕt n. Lóc ®ã cÇn sö dông c¸c vßng lÆp bÊt ®Þnh

nh− REPEAT . . . UNTIL . . .hoÆc WHILE . . . DO. . .

CÊu tróc lÖnh REPEAT . . . UNTIL. . .

REPEAT <C«ng viÖc>; UNTIL <biÓu thøc logic>;

Page 38: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

37

ViÖc thùc hiÖn <c«ng viÖc> hoÆc <C¸c c«ng viÖc> n»m gi÷a REPEAT vµ

UNTILl sÏ ®−îc lÆp l¹i cho ®Õn khi biÓu thøc logic tho¶ m·n.

VÝ dô 1: §o¹n ch−¬ng tr×nh tÝnh tæng c¸c sè ch½n vµ tæng c¸c sè lÎ trong

mét d·y n sè nguyªn ®Çu tiªn

. . .

i:=1;

sum1:=0; sum2:=0;

Repeat

if (i mod 2 =0) then sum1:=sum1+a[i] else sum2:=sum2+a[i];

i:=i+1;

Until i>=n;

. . .

CÊu tróc CASE ... OF

Trong nh÷ng tr−êng hîp cÇn ®iÒu khiÓn ch−¬ng tr×nh theo nhiÒu h−íng

kh¸c nhau th× to¸n tö IF ... THEN trë nªn kh«ng cã hiÖu qu¶. PASCAL sö dông

CASE . . . OF . . .CÊu tróc cña to¸n tö CASE . . . OF. . . cã d¹ng:

CASE i OF

i=1: Begin

C¸c c©u lÖnh 1

End;

i=2: Begin

C¸c c©u lÖnh 2

End;

ELSE

Begin

C¸c c©u lÖnh 3

End;

End;

Page 39: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

38

CÊu tróc lÖnh WHILE . . . DO

NÕu biÓu thøc logic ®óng th× thùc hiÖn <C¸c c«ng viªc>;

3.1.3. LÖnh nh¶y v« ®iÒu kiÖn GO TO

D¹ng tæng qu¸t:

D−íi t¸c ®éng cña to¸n tö nµy ch−¬ng tr×nh chuyÓn ®Õn nh·n (®· ®−îc x¸c

®Þnh b»ng LABEL).

VÝ dô 1: LABEL 10;

. . .

GOTO 10;

. . .

10: x2 := x1;

3.2. gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh

3.2.1. Ph−¬ng ph¸p khö Gauss

Khö Gauss lµ mét ph−¬ng ph¸p ®¬n gi¶n vµ dÔ hiÓu vÒ thuËt to¸n ®Ó tÝnh

®Þnh thøc cña ma trËn còng nh− gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh. Gi¶ sö cã hÖ n

ph−¬ng tr×nh tuyÕn tÝnh n Èn sè

a11x1 + a12x2 + ............ + a1nxn = a1(n+1) (A1)

a21x1 + a22x2 + ............ + a2nxn = a2(n+1) (A2)

....................

an1x1 + an2x2 + ............ + annxn = an(n+1) (An)

sau khi thùc hiÖn phÐp khö Gauss sÏ chuyÓn thµnh d¹ng

x1 + b12x2 + ............ + b1nxn = b1(n+1) (B1)

x2 + ............ + b2nxn = b2(n+1) (B2)

...............

xn = bn(n+1) (Bn)

WHILE <biÓu thøc logic> DO

BEGIN

<C¸c c«ng viÖc>;

END;

GOTO nh·n;

Page 40: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

39

C¸ch biÕn ®æi nh− sau: Tho¹t tiªn ta khö x1 b»ng c¸ch chia c¶ hai vÕ cña

ph−¬ng tr×nh thø nhÊt cho a11

x1+ a12(1) x2 + ....... + a1n(1)xn = a1(n+1)(1) (3.1)

hoÆc x1 + b12 x2 + ............ + b1nxn = b1(n+1) (B1)

trong ®ã a1j(1) = a1j / a11 = b1j

Thay gi¸ trÞ cña x1 vÝ dô vµo ph−¬ng tr×nh thø hai ta cã:

a21(a1(n+1)(1) - a12(1)x2 + ... + a1n(1)xn) + a22x2 + ... + a2nxn = a2(n+1)

(a22 – a21a12(1))x2 + ... + (a2n – a21a1n(1)xn = a2(n+1) – a21a1(n+1)

D−íi d¹ng tæng qu¸t khi thay vµo ph−¬ng tr×nh thø m ta cã:

(am2 – am1a12(1))x2 + ... + (amn – am1a1n(1)xn = am(n+1) – am1a1(n+1)m=2,...n (3.2)

§©y chÝnh lµ hÖ n-1 ph−¬ng tr×nh míi kh«ng chøa Èn x1. TiÕp tôc thùc

hiÖn viÖc khö x2 trong hÖ n-1 ph−¬ng tr×nh míi nµy theo c¸ch tÝnh to¸n t−¬ng tù

ta sÏ ®−îc hÖ n-2 ph−¬ng tr×nh kh«ng chøa Èn x1 vµ x2 v.v... ®o¹n ch−¬ng tr×nh

m¸y tÝnh cña c¸ch khö nµy cã d¹ng

i:=1;

For k:=i to n+1 do a[i,k]:=a[i,k]/a[i,i]; (*chia 2 vÕ cho aii: pt(3.1)*)

For m:=i+1 to n do

For k:=i+1 to n+1 do a[m,k]:=a[m,k]-a[m,i]*a[i,k]; (* pt (3.2) *)

§Õn ®©y chóng ta chØ viÖc thùc hiÖn mét vßng lÆp theo i, b¾t ®Çu tõ i=1

®Õn i=n-1, tøc lµ

for i:=1 to n do

begin

For k:=i to n+1 do a[i,k]:=a[i,k]/a[i,i]; (* x¸c dÞnh c¸c (Bi) *)

If i=n then goto 1;

For m:=i+1 to n do

For k:=i+1 to n+1 do a[m,k]:=a[m,k]-a[m,i]*a[i,k];

End;

1: x[n]:=a[n,n+1]; (* t−¬ng øng víi pt (Bn)*)

ta ®−îc lêi gi¶i xn. Dùa vµo ph−¬ng tr×nh Bn-1 ta sÏ tÝnh ®−îc xn-1, sau ®ã dùa vµo

Bn-2 ®Ó tÝnh xn-2 ... dùa vµo B1 ®Ó tÝnh x1. Tøc lµ:

Page 41: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

40

for i:=n-1 down to 1 do

begin sum:=0;

for k:=i+1 to n do sum:=sum+a[i,k]*x[k];

x[i]:=a[i,n+1]-sum;

end;

Ch−¬ng tr×nh con procedure GHPTTT (xem phô lôc) dùa trªn thuËt to¸n

®· tr×nh bµy ë trªn. D−íi ®©y lµ phÇn ch−¬ng tr×nh dÉn.

Program HePTTT;

Type

M2 = array [1..10,1..10] of real;

M1 = array [1..10] of real;

var i , j, k : integer;

kk,ak,test : real;

f1 : text;

B : m2

XX : m1;

Procedure GHPTTT(n:integer; A:m2; VAR X:m1);

begin

end;

BEGIN

ASSIGN(f1,'matran'); (* më tÖp d÷ liÖu vµ ®äc*)

REWRITE(f1); Read(f1,n);

for i := 1 to n do

begin

for k:= 1 to n +1 do

begin read(f1,B[i,k]); AA(i,k):=B(i,k);

readln(f1);

end;

end;

Page 42: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

41

GHPTTT(n,B,XX);

writeln(' Thu lai nghiem cua phuong trinh');

for i:=1 to n do

begin test:= 0;

for j:=1 to n do test:= AA[i,j]*XX[j]+test;

writeln('test:=':15,test:10:4,' AA[',i,'n+1]:=',AA[i,n+1]:10:4);

end;

END.

Bµi tËp 1: Hoµn chØnh ch−¬ng tr×nh gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh. Sö

dông ch−¬ng tr×nh lËp ®−îc gi¶i hÖ ph−¬ng tr×nh duíi ®©y

3x1

+ 5x2 - x3 + 2x4 = 14.0

2x1 - 5x2 - 2x3 - 2x4 = -14.0

5x1 + 2x2 + x3 - x4 = 8.0

5x1 - 5x2 + x3 + x4 = 8.0

Bµi tËp 2: Trong tr−êng hîp cã nh÷ng hÖ sè cña hÖ ph−¬ng tr×nh b»ng 0

hoÆc qóa nhá, nÕu kh«ng quan t©m ®Õn th× m¸y sÏ b¸o lçi khi gÆp phÐp chia cho

aii =0. H·y lËp tr×nh xÕp l¹i thø tù c¸c ph−¬ng tr×nh trong hÖ ph−¬ng tr×nh ®Ó

kh¾c phôc sù cè nµy.

3.2.2. TÝnh ®Þnh thøc ma trËn

Ph−¬ng ph¸p khö Gauss còng dïng ®Ó tÝnh ®Þnh thøc cña ma trËn theo

cïng nguyªn t¾c nh− ®· tr×nh bµy ë trªn. Ma trËn A bËc n×n cã d¹ng:

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

nn3n2n1n

n3333231

n2232221

n1131211

a...aaa...

a...aaaa...aaaa...aaa

Sau khi thùc hiÖn phÐp khö Gauss ta ®−îc ma trËn A*

Page 43: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

42

⎥⎥⎥⎥⎥⎥

⎢⎢⎢⎢⎢⎢

− )1n(nn

)2(n3

)2(33

)1(n2

)1(23

)1(22

n1131211

a...000...

a...a00

a...aa0a...aaa

Trong ®ã chØ sè trong dÊu ngoÆc ®¬n lµ sè lÇn thùc hiÖn phÐp khö. VÝ dô

a22(1) lµ hÖ sè cña ph−¬ng tr×nh 2 sau khi khö biÕn x1. V× qu¸ tr×nh biÕn ®æi Gauss

kh«ng lµm thay ®æi gi¸ trÞ cña ®Þnh thøc cña ma trËn nªn

∏=

−==n

1i

)1i(iia*)Adet()Adet(

Ch−¬ng tr×nh tÝnh ®Þnh thøc cña ma trËn t−¬ng tù ch−¬ng tr×nh gi¶i hÖ

ph−¬ng tr×nh tuyÕn tÝnh. ®o¹n ch−¬ng tr×nh m¸y tÝnh cã d¹ng

Det:=1.0;

for i:=1 to n do

begin

sk:=a[i,i]; det:=det*sk;

For k:=i to n do a[i,k]:=a[i,k]/sk;

If i=n then goto 1;

For m:=i+1 to n do

For k:=i+1 to n do a[m,k]:=a[m,k]-a[m,i]*a[i,k];

End;

1: writeln ('detA=',det);

Bµi tËp 3: Hoµn thµnh procedure tÝnh ®Þnh thøc, viÕt tÖp dÉn vµ tÝnh ®Þnh

thøc cña mét sè ma trËn kh¸c nhau ®−îc ghi trong tÖp 'data'

3.2.3. TÝnh tÝch hai ma trËn

Cho hai ma trËn A vµ B cã kÝch th−íc (n1, n2) vµ (n3, n4). C¸c phÇn tö cña

ma trËn tÝch C= A.B ®−îc tÝnh theo c«ng thøc:

[ ] [ ] [ ]∑ ×= k,jBi,kAi,jC i =1,...n1 k =1,...n2=n3 j=1,...n4

§iÒu kiÖn ®Ó tÝnh ®−îc tÝch hai ma trËn lµ n2=n3. ®o¹n ch−¬ng tr×nh m¸y

tÝnh:

for i:=1 to n1 do

k=1

Page 44: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

43

for j:=1 to n4 do

begin sum:=0;

for k:=1 to n2 do sum:=sum+A[i,k]*B[k,j];

C[i,j]:=sum;

end;

Bµi tËp 4: Hoµn chØnh procedure tÝnh tÝch hai ma trËn kh«ng vu«ng. LËp

tr×nh tÝnh tÝch hai ma trËn vµ dïng ®Ó tÝnh hai tÝch ma trËn d−íi ®©y:

⎥⎥⎥

⎢⎢⎢

⎡×⎥⎥⎥

⎢⎢⎢

⎡=

211224531

121314225

A ⎥⎥⎥

⎢⎢⎢

⎡×

⎥⎥⎥⎥

⎢⎢⎢⎢

=112431

213121314225

B

3.2.4. TÝnh ma trËn nghÞch ®¶o

Theo ®Þnh nghÜa th× tÝch mét ma trËn víi ma trËn nghÞch ®¶o cña nã chÝnh

b»ng ma trËn ®¬n vÞ E, tøc lµ:

BxB-1 = E (3.3)

NÕu gäi ma trËn nghÞch ®¶o cña B lµ C th× ta cã thÓ viÕt l¹i (3.3) d−íi d¹ng

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

×

⎥⎥⎥⎥

⎢⎢⎢⎢

1...00

.....0...10

0...01

c...c.....

c...ccc...cc

b...b.....

b...bbb...bb

nn1n

n22221

n11211

nn1n

n22221

n11211

DÔ dµng nhËn thÊy r»ng chóng ta cã thÓ t¸ch ph−¬ng tr×nh (3.3) thµnh n hÖ

ph−¬ng tr×nh tuyÕn tÝnh, vÝ dô víi hÖ ph−¬ng tr×nh thø nhÊt ta cã:

⎥⎥⎥⎥

⎢⎢⎢⎢

=

⎥⎥⎥⎥

⎢⎢⎢⎢

×

⎥⎥⎥⎥

⎢⎢⎢⎢

0

...0

1

c...

cc

b...b.....

b...bbb...bb

1n

21

11

nn1n

n22221

n11211

(3.4)

C¸c hÖ ph−¬ng tr×nh cßn l¹i chØ kh¸c víi hÖ ph−¬ng tr×nh ®Çu tiªn ë vÞ trÝ

cña sè 1 trong vÐc t¬ bªn ph¶i, t−¬ng øng víi sè thø tù cét trong ma trËn ®¬n vÞ

cña ph−¬ng tr×nh (3.3). Nh− vËy, ®Ó x¸c ®Þnh c¸c phÇn tö cña ma trËn nghÞch ®¶o

C chóng ta chØ viÖc gi¶i lÇn l−ît c¸c hÖ ph−¬ng tr×nh (3.4). ThuËt to¸n cã d¹ng:

For icot:=1 to n (* vßng lÆp theo c¸c cét cña ma trËn ®¬n vÞ*)

Begin (* x¸c ®Þnh vÐct¬ cét cña ma trËn ®¬n vÞ e *)

Page 45: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

44

For I:=1 to n do

For k:=1 to n do B[I,k]:=A[I,k];

For ihang:= 1 to n do

if ihang=icot then e[ihang]:=1.0 else e[ihang]:=0;

(* ®Æt A[ihang,n+1] b»ng E[ihang] *)

for ihang:= 1 to n do A[ihang,n+1]:=E[ihang];

GHPTTT(n,B, X); *( gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh*)

For ihang:=1 to n do C[ihang,icot]:=X[ihang];

End;

Chó ý: cã thÓ lµ procedure GHPTTT sÏ kh«ng lµm thay ®æi ma trËn hÖ sè

B. Lóc ®ã viÖc g¸n l¹i A cho B tr−íc mçi lÇn gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh trë

nªn kh«ng cÇn thiÕt.

D−íi ®©y lµ ch−¬ng tr×nh dÉn tÝnh nghÞch ®¶o ma trËn

Program tinhmatran_nghichdao;

Type

M2 = array [1..10,1..10] of real;

M1 = array [1..10] of real;

var i,k,n,m : integer;

f1 : text;

A,B,C,E : m2;

tentep : string;

procedure DMT(tentep: string);

begin

end;

procedure VMT(n,m:integer;A:m2);

begin

end;

Page 46: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

45

procedure TMT(n:integer; A,B: m2; VAR C:m2);

begin

end;

procedure GHPTTT2(n: integer;A:m2; VAR XX:m1);

begin

end; (* het giai he pt tuyen tinh*)

Procedure NDMT1(n:integer; B:m2; VAR C:m2);

begin

end;

BEGIN

write(' nhap ten tep '); readln(tentep);

DMT(tentep); VMT(n,m,A);

NDMT1(n,A,C); (* thö l¹i kÕt qu¶ *)

writeln('ma tran nghich dao '); VMT(n,n,C);

TMT(n,A,C,E);

writeln(' ma tran bxc='); VMT(n,n,E);

readln;

END.

Bµi tËp 5: Hoµn thiÖn procedure NDMT1 vµ program

tinhmatran_nghichdao . Sö dông ch−¬ng tr×nh lËp ®−îc ®Ó tÝnh ma trËn nghÞch

®¶o cña ma trËn sau:

⎥⎥⎥⎥

⎢⎢⎢⎢

=

4215

3123

5214

4223

A

Page 47: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

46

3.2.5. ChÐo ho¸ ma trËn Ðcmit

Ma trËn Ðcmit

Ma trËn A ®−îc gäi lµ Ðcmit nÕu nã lµ ®èi xøng A = AT (AT lµ ma trËn

chuyÓn vÞ cña A) vµ c¸c phÇn tö ®Òu thùc. Ma trËn Ðcmit cã n sè thùc λ1, λ2, λ3,

... .λn vµ n vect¬ thùc t−¬ng øng víi chóng X1, X2, X3, ... Xn ®−îc gäi lµ c¸c vÐct¬

riªng. Nh− vËy

A Xi = λi Xi

Ma trËn chÐo

Ma trËn D ®−îc gäi lµ ma trËn chÐo nÕu : Dij = 0, i≠j . TrÞ riªng cña ma

trËn chÐo lµ c¸c phÇn tö chÐo cña nã λi= Dii. VÝ dô: Cã ma trËn

⎥⎥⎥

⎢⎢⎢

⎡=

89.700

056.40

0023.1

D λ1=1.23 λ2=4.56 λ3=7.89

Ph−¬ng tr×nh ®Æc tr−ng cã d¹ng: (1.23-λ) (4.56-λ) (7.89-λ) = 0

Ma trËn trùc giao

Ma trËn n×n ®−îc gäi ma trËn trùc giao nÕu ma trËn nghÞch ®¶o cña nã

trïng víi ma trËn chuyÓn vÞ MT = M-1 . VÝ dô:

⎥⎥⎥

⎢⎢⎢

θθ−θθ

cossin0

sincos0

001

lµ ma trËn trùc giao, bëi v×: MT M = E

⎥⎥⎥

⎢⎢⎢

⎡=

⎥⎥⎥

⎢⎢⎢

θθ−θθ×

⎥⎥⎥

⎢⎢⎢

θθθ−θ

100010

001

cossin0sincos0

001

cossin0sincos0

001

ChÐo ho¸ ma trËn

ChÐo ho¸ ma trËn lµ qu¸ tr×nh biÕn ®æi trùc giao mét ma trËn A thµnh ma

trËn chÐo B

B = RTA R

Page 48: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

47

VÝ dô, ®Ó chÐo ho¸ ma trËn A , ⎥⎦

⎤⎢⎣

⎡0110

chóng ta dïng ma trËn R2

= ⎥⎦

⎤⎢⎣

⎡θ−θθθ

cossinsincos

víi θ = 450 . Qu¸ tr×nh chÐo ho¸ x¶y ra nh− sau:

⎥⎦

⎤⎢⎣

⎡θ−θθθ

×⎥⎦

⎤⎢⎣

⎡×⎥⎦

⎤⎢⎣

⎡θ−θθθ

sincoscossin

0110

cossinsincos

=

2 2

2 2

sin cos cos sin 1 02sin cos sin coscos sin sin cos 0 1sin cos 2sin cosθ θ θ θ θ θ θ θθ θ θ θ θ θ θ θ

⎡ ⎤−⎡ ⎤ ⎡ ⎤ ⎡ ⎤× × =⎢ ⎥⎢ ⎥ ⎢ ⎥ ⎢ ⎥− − −− −⎣ ⎦ ⎣ ⎦ ⎣ ⎦⎣ ⎦

Ma trËn R th−êng ®−îc gäi lµ ma trËn quay.

BiÕn ®æi trùc giao - ph−¬ng ph¸p Jacobi

Trõ truêng hîp chÐo ho¸ ma trËn Ðcmit 2x2 ®· tr×nh bµy ë trªn, viÖc biÕn

®æi trùc giao ma trËn A cã bËc ≥3 ®Ó thu ®−îc mét ma trËn chÐo theo ph−¬ng

ph¸p Jacobi ®−îc thùc hiÖn bëi hµng lo¹t to¸n tö

B = MT A M

trong ®ã ma trËn M lµ ma trËn trùc giao. ThuËt to¸n sö dông c¸ch tÝnh lÆp

b»ng c¸c ma trËn M t−¬ng øng lÇn l−ît ®−a vÒ 0 phÇn tö nµo kh«ng n»m trªn

®−êng chÐo chÝnh cã gi¸ trÞ tuyÖt ®èi lín nhÊt cho ®Õn khi héi tô; tøc lµ kh«ng

cßn phÇn tö nµo kh«ng n»m trªn ®−êng chÐo chÝnh cã gi¸ trÞ tuyÖt ®èi lín h¬n

mét sè epsilon nµo ®ã. Do kÕt qu¶ cña to¸n tö, mét trong c¸c phÇn tö kh«ng n»m

trªn ®−êng chÐo cña A sÏ trë vÒ 0. Sau ®ã chän mét ma trËn M thø hai, l¹i ®−a

thªm mét phÇn tö n÷a vÒ 0 vµ cø thÕ tiÕp tôc cho ®Õn khi nhËn ®−îc ma trËn chÐo

D

MrT ..... M3

T M2T M1

T A M1 M2 M3 .... Mr = D

hay ST A S = D

KÝ hiÖu ST vµ S biÓu diÔn tÝch c¸c ma trËn Mi vµ MiT trong qu¸ tr×nh lÆp nãi

trªn. C¸c phÇn tö n»m trªn ®−êng chÐo chÝnh cña D x¸c ®Þnh trÞ riªng cña ma

trËn. C¸c vÐc t¬ cét cña ma trËn S x¸c ®Þnh vÐc t¬ riªng t−¬ng øng.

Cã thÓ minh ho¹ thuËt to¸n nh− sau:

Gi¶ sö cÇn chÐo ho¸ ma trËn A bËc ba ®èi xøng:

Page 49: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

48

A=⎥⎥⎥

⎢⎢⎢

010101010

Ta sö dông ma trËn quay, vÝ dô ®Ó ®−a phÇn tö a12 vÒ 0. Muèn vËy, cÇn x¸c lËp

mét ma trËn quay bËc 3 (R3) dùa trªn ma trËn quay bËc 2 (R2) nªu trªn

⎥⎥⎥

⎢⎢⎢

⎡θ−θθθ

1000cossin0sincos

t¸c dông lªn c¸c phÇn tö a12, a21 vµ a11, a22. Gãc quay θ ®−îc x¸c ®Þnh tõ hÖ thøc:

tan2θ = 2aij/(aii-ajj )

trong ®ã aij lµ phÇn tö kh«ng n»m trªn ®−êng chÐo chÝnh ta muèn ®−a vÒ 0, aii vµ

ajj lµ c¸c phÇn tö n»m trªn ®−êng chÐo chÝnh t−¬ng øng. Víi tr−êng hîp ®ang

xÐt, tan2θ = 2.1/0 = ∝ vµ θ = 450 , sinθ= cosθ = 0.7071. Qu¸ tr×nh ®−a phÇn tö

a12 vÒ 0 nh− sau:

⎥⎥⎥

⎢⎢⎢

−−−=

⎥⎥⎥

⎢⎢⎢

⎡θ−θθθ

×⎥⎥⎥

⎢⎢⎢

⎡×

⎥⎥⎥

⎢⎢⎢

⎡θ−θθθ

0707.0707.0707.10707.001

1000cossin0sincos

010101010

1000cossin0sincos

B©y giê phÇn tö cã gi¸ trÞ tuyÖt ®èi lín nhÊt sÏ lµ a13, a31 hoÆc a23 vµ a32.

NÕu chän a13 vµ a31 ®Ó ®−a vÒ 0 th× ma trËn quay R3 míi sÏ cã d¹ng

⎥⎥⎥

⎢⎢⎢

θ−θ

θθ

cos0sin010sin0cos

tang2θ = 2. 0.7071/(1-0) = 1.4142; cosθ = 0.888074; sin θ = 0.4597008.

Qóa tr×nh ®−a a31 vµ a13 vÒ 0 diÔn ra nh− sau:

⎥⎥⎥

⎢⎢⎢

−−−

⎥⎥⎥

⎢⎢⎢

θ−θ

θθ×

⎥⎥⎥

⎢⎢⎢

−−−×

⎥⎥⎥

⎢⎢⎢

θ−θ

θθ

366.0627963.00627963.0132506.0032506.0366.1

cos0sin010

sin0cos

0707.0707.0707.10707.001

cos0sin010

sin0cos

Nh− vËy, mÆc dï c¸c phÇn tö ®−îc ®−a vÒ 0 ë b−íc 1 th× sau b−íc 2 l¹i cã

gi¸ trÞ kh¸c 0 nh−ng gi¸ trÞ tuyÖt ®èi cña phÇn tö lín nhÊt kh«ng n»m trªn ®−êng

Page 50: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

49

chÐo chÝnh ®· gi¶m ®i râ rÖt. NÕu tiÕp tôc lÆp l¹i qu¸ tr×nh nµy, chóng ta sÏ thu

®−îc ma trËn chÐo.

Trong thuËt to¸n trªn cÇn mét sè procedure ®Ó x¸c ®Þnh phÇn tö lín nhÊt

kh«ng n»m trªn ®−êng chÐo chÝnh, ma trËn quay Rn, tÝch ma trËn vµ tÝch ma trËn

hµng víi ma trËn cét. D−íi ®©y lµ ®o¹n ch−¬ng tr×nh m¸y tÝnh.

T×m phÇn tö cã gi¸ trÞ tuyÖt ®èi lín nhÊt kh«ng n»m trªn ®−êng chÐo chÝnh

Amax:=abs(a[1,2]);

imax:= 1; kmax:=2;

For i:=1 to n do

For k:=I+1 to n do if abs(a[i,k])>amax then

Begin

Amax:=a[i,k]; imax:=i; kmax:=k;

End;

X¸c lËp ma trËn quay Rn

For I:=1 to n do { tr−íc hÕt lµ x¸c lËp mét ma trËn ®¬n vÞ }

For k:=1 to n do if I=k then R[I,k]:=1.0 else R[I,k]:=0.0;

(* chän phÇn tö cã gi¸ trÞ tuyÖt ®èi lín nhÊt kh«ng n»m trªn ®−êng chÐo chÝnh *)

FMAX(n,A, imax,kmax); (* x¸c ®Þnh gãc quay teta *)

da:=A[imax,imax] - A[kmax,kmax];

if da <>0 then

begin

tan2teta:= 2*A[imax,kmax]/da;

teta:= arctan(tan2teta)/2;

sinteta:=sin(teta);

costeta:=cos(teta);

end

else begin

sinteta :=1/sqrt(2);

costeta:=sinteta;

end;

Page 51: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

50

(* x¸c ®Þnh ma trËn R *)

R[imax,kmax]:=sinteta;

R[kmax,imax]:=sinteta;

R[imax,imax]:=costeta;

R[kmax,kmax]:=-costeta;

TÝch ma trËn hµng víi ma trËn cét ®Ó kiÓm chøng qu¸ tr×nh chÐo ho¸ :

ASi = λiSi

trong ®ã S lµ ma trËn quay tÝch luü ( tøc lµ tÝch cña c¸c ma trËn quay trong qu¸

tr×nh lÆp) vµ λ lµ c¸c phÇn tö n»m trªn ®−êng chÐo chÝnh cña ma trËn chÐo nhËn

®−îc.

for j:=1 to n do

begin

for i:=1 to n do

begin

sum:=0;

for k:=1 to n do sum:=sum+a[i,k]*s[k,j];

lamdax:=lamda[j]*s[i,j];

writeln(sum:15:4,lamdax:15:4,'':5,sum-lamdax:10);

end;

writeln;

end;

3.3. c¸c bμi to¸n håi quy

Trong thùc nghiÖm ho¸ häc, ®Ó cã thÓ ®¸nh gi¸ ®é tin cËy, còng nh− cung

cÊp d÷ liÖu cho c¸c qu¸ tr×nh tÝnh to¸n c«ng nghÖ, viÖc biÓu diÔn hÖ d÷ liÖu d−íi

d¹ng hµm xÊp xØ lµ rÊt cÇn thiÕt. Trªn thùc tÕ, cã rÊt nhiÒu phÇn mÒm cã thÓ sö

dông cho c«ng viÖc nµy. Tuy vËy, trong khu«n khæ cña mét gi¸o tr×nh ho¸ tin c¬

së, viÖc t×m hiÓu thuËt to¸n vµ ®o¹n ch−¬ng tr×nh m¸y tÝnh cña c¸c procedure c¬

b¶n vµ th«ng dông còng lµ rÊt cÇn thiÕt ®èi víi sinh viªn. Chóng ta sÏ nghiªn cøu

mét sè bµi to¸n håi quy c¬ b¶n sau ®©y:

+) §a thøc 1 biÕn (bao gåm tuyÕn tÝnh khi ®a thøc bËc 1)

Page 52: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

51

+) TuyÕn tÝnh nhiÒu biÕn

+) Phi tuyÕn nhiÒu biÕn.

Nguyªn t¾c chung cña c¸c ph−¬ng ph¸p nµy lµ t×m cùc tiÓu hµm sè liªn hÖ

gi÷a c¸c tham sè aj j=1, n cña m« h×nh y=F(a1, a2, ... am; x1, x2 ,...xn) víi gi¸ trÞ

quan s¸t ®−îc Y, tøc lµ ∑=

→−=n

1i

2ii min)yY(Q (3.5)

Q ®−îc gäi lµ tæng b×nh ph−¬ng sai sè.

Håi quy ®a thøc 1 biÕn

Hµm xÊp xØ cã d¹ng ®a thøc mét biÕn (x) vµ cã thÓ viÕt:

∑=

==m

0i

iim xa)x(P)x(f (3.6)

Thay thÕ vµo (3.5) ta cã: min)xay(Qn

1i

m

0k

2kiki →−= ∑ ∑

= =

T¹i ®iÓm cùc tiÓu ®¹o hµm riªng cña Q theo c¸c tham sè cÇn t×m ph¶i b»ng

0, tøc lµ

∑ ∑= =

−∂∂

=∂∂ n

1i

m

0j

2jiji

kk)xay(

aaQ

m,...0k0xaa

)xay(2m

0j

jij

k

n

1i

m

0j

jiji ==∂∂

−= ∑∑ ∑== =

(3.7)

(3.7) cã thÓ ®−îc viÕt d−íi d¹ng kh¸c

m,...0k0xyxaxn

1i

kii

n

1i

m

0j

jij

ki ==+= ∑∑ ∑

== =

(3.8)

HoÆc:

∑ ∑ ∑ ∑=+++ −−

mii

mi0

1m2i1m

m2im x.yxa...xaxa ... (3.9)

∑ ∑ ∑ ∑=+++ −−

0ii

0i0

1mi1m

mim x.yxa...xaxa

HÖ (m+1) ph−¬ng tr×nh tuyÕn tÝnh (3.9) ®−îc gi¶i theo ph−¬ng ph¸p lo¹i

Gauss. §é lÖch chuÈn cña hµm håi quy ®−îc tÝnh theo c«ng thøc sau:

mnpont

))x(Py(S

2imi

−= ∑

Chó ý: Trong hÖ ph−¬ng tr×nh (3.9) c¸c hÖ sè cña hµm håi quy ®a thøc bËc

m ®ãng vai trß c¸c Èn sè cña hÖ (m+1) ph−¬ng tr×nh tuyÕn tÝnh

Page 53: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

52

am = x(1), am-1 = x(2),............ a0 = x (m+1).

Ch−¬ng tr×nh

PROGRAM HOI_QUY_DT_1_BIEN;

uses crt;

TYPE m1 = ARRAY [0..100] of real;

m2 = ARRAY [1..10,1..11] of real;

VAR x, y,sum,sum2,B : m1;

a , aa : m2;

npont,m,bm,i,j,k,tampon : integer;

tamp,bpss,delta : real;

function ymux(a,b:real):real;

begin

...

end;

procedure GHPTTT2(n: integer;A:m2; VAR XX:m1);

begin

...

end; (* het giai he pt tuyen tinh*)

BEGIN

clrscr;

write ('So diem thuc nghiem'); readln(npont);

write ('Bac cua da thuc'); readln(m);

BM:= 2 * m;

for i:=1 to npont do

begin

write ('x[',i,'] =?'); readln(x[i]);

write ('y[',i,'] =?'); readln(y[i]);

end;

for k := 1 to bm do

begin

Page 54: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

53

sum[k]:= 0;

for i:=1 to npont do sum[k] := sum[k] + ymux(x[i],k);

end;

sum[0]:= npont;

for i:= 0 to bm do write(' sum[',i,']:=',sum[i]:10:4);

for k := 0 to m do

begin

sum2[k]:= 0;

for i:=1 to npont do sum2[k] := sum2[k] + y[i]*ymux(x[i],k);

end;

writeln;

for i:=0 to m+1 do write(' sum2[',i,']:=',sum2[i]:9:4);

writeln('*cac he so cua he phuong trinh tuyen tinh*');

for i:=1 to m+1 do

begin

for j:=1 to m+1 do

Begin

tampon:=bm-i-j+2;

a[i,j]:= sum[tampon];

write ('a[',i,',',j,']:=',a[i,j]:10:4);

aa[i,j]:=a[i,j];

end;

end;

for j:= 1 to m+1 do

begin

tampon:=m-j+1;

a[j,M+2]:= sum2 [tampon];

writeln(' a[',j,',',m+2,']=',a[j,m+2]);

aa[j,M+2]:=a[j,M+2];

end;

Page 55: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

54

writeln(' giai he pt tuyen tinh');

GHPTTT2 (m+1,A,B);

(*thu lai nghiem - so sanh gia tri tinh toan va thuc nghiem*)

writeln(' stt tamp y delta ');

bpss:=0;

for i:=1 to npont do

begin

tamp:=0;

for k:=1 to m+1 do tamp:=tamp+ymux(x[i],m-k+1)*B[k];

delta:= tamp - y[i];

bpss:=bpss+delta*delta;

writeln(i:5, tamp:10:4,y[i]:10:4,delta:10:6);

end;

writeln('tong bpss= ',bpss); READLN;

END.

Bµi tËp 6: Hoµn thiÖn ch−¬ng tr×nh håi quy ®a thøc dùa trªn procedure

HQDT(npont,m: integer; Y,X:m1; VAR A:m1); (xem phô lôc) vµ xö lý hÖ sè liÖu

thùc nghiÖm d−íi ®©y

(gi©y), 60, 120, 200, 600, 900, 1200, 1800, 2000, 4800

Q%, 172, 199, 219, 216, 228, 264, 298, 422, 464

TÝnh ®é lÖch chuÈn cña hµm håi quy S= mnpont

))x(Py( 2imi

−∑ vµ cña c¸c tham sè

∑= j2ij xSSa . So s¸nh c¸c kÕt qu¶ thu ®−îc khi thay ®æi bËc cña ®a thøc tõ 1

®Õn 5.

Håi quy tuyÕn tÝnh nhiÒu biÕn.

Víi hÖ n sè liÖu thùc nghiÖm cña yk (k=1,2,...n) t−¬ng øng víi )k(ix (k=1,n;

i=1,m) vµ d¹ng hµm håi quy ®−îc chän lµ tuyÕn tÝnh nhiÒu biÕn tøc lµ:

321 cxbxaxy ++= (3.10)

HoÆc cã thÓ viÕt d−íi d¹ng tæng qu¸t

Page 56: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

55

∑=

=m

1iiixa)x(f (3.11)

Tæng b×nh ph−¬ng sai sè ®−îc x¸c ®Þnh bëi c«ng thøc:

min)xay(Qm

1i

2)k(ii

n

1kk →−= ∑∑

==

(3.12)

Theo cïng mét c¸ch nh− ®· thùc hiÖn víi håi quy ®a thøc, ®¹o hµm riªng cña Q

theo c¸c tham sè al cã d¹ng:

0xaa

)xay(2)xay(a

Qa

m

1i

)k(ii

l

m

1i

)k(ii

n

1kk

m

1i

2)k(ii

n

1kk

ll∑∑∑∑∑=====

=∂∂

−=−∂∂

=∂∂ (3.13)

Tõ ®ã thu ®−îc hÖ ph−¬ng tr×nh tuyÕn tÝnh:

m,...1l0xyxxan

1k

)l(ik

n

1k

m

1i

)l(i

)k(ii ==− ∑∑∑

== =

(3.14)

(3.14) ®−îc gi¶i theo c¸ch khö Gauss ®· tr×nh bµy ë trªn.

Håi quy phi tuyÕn nhiÒu biÕn

Trong nh÷ng tr−êng hîp mµ xÊp xØ ®a thøc nhiÒu biÕn kh«ng thÓ biÓu diÔn

tèt hÖ d÷ liÖu, chóng ta ph¶i sö dông hµm phi tuyÕn nhiÒu biÕn. Còng cã nhiÒu

c¸ch kh¸c nhau ®Ó gi¶i bµi to¸n håi quy trong tr−êng hîp nµy. Trong khu«n khæ

gi¸o tr×nh ho¸ tin øng dông, chóng t«i sÏ tr×nh bµy hai c¸ch: c¸ch gÇn ®óng tuyÕn

tÝnh ®−îc tr×nh bµy trong môc nµy vµ c¸ch ®¬n h×nh ®−îc tr×nh bµy trong phÇn

dµnh cho cao häc.

Gi¶ sö r»ng hÖ thùc nghiÖm y – x ®−îc biÓu diÔn b»ng mét hµm phi tuyÕn

nhiÒu biÕn

f(x1i, x2i, ... xni, a1, a2, a3, …..ak) = 0 i=1,m (3.15)

trong ®ã x1i ... xni lµ c¸c d÷ liÖu thùc nghiÖm thu ®−îc t¹i m ®iÓm thùc nghiÖm

t−¬ng øng. Ph−¬ng tr×nh (3.15) lµ kh«ng thÓ gi¶i chÝnh x¸c. Theo c¸ch gÇn ®óng,

chóng ta ph¶i t×m tËp gi¸ trÞ cña {ai , i=1, k} sao cho

S= m

21i 2i ni 1 k

i 1

f(x , x , ... x ,a ,...,a )=∑ (3.16)

cã gi¸ trÞ cùc tiÓu. §Ó gi¶i bµi to¸n nµy, chóng ta khai triÓn Taylo cña S xung

quanh gi¸ trÞ ban ®Çu f0 vµ chØ lÊy ®Õn c¸c sè h¹ng bËc 1, ta cã :

Page 57: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

56

S = 2m

0 1 2 k1 2 ki 1 0 0 0 i

f f ff da da ... da

a a a=

⎛ ⎞⎛ ⎞ ⎛ ⎞ ⎛ ⎞∂ ∂ ∂+ + + +⎜ ⎟⎜ ⎟ ⎜ ⎟ ⎜ ⎟⎜ ⎟∂ ∂ ∂⎝ ⎠ ⎝ ⎠ ⎝ ⎠⎝ ⎠

∑ (3.17)

§Æt j0

j 0

ff

a

⎛ ⎞∂=⎜ ⎟⎜ ⎟∂⎝ ⎠

(3.18)

ta cã S = 2

m k(j)

0 j0i 1 j 1 i

f f da= =

⎛ ⎞⎜ ⎟+⎜ ⎟⎝ ⎠

∑ ∑ (3.19)

§Ó S cùc tiÓu 0aS

l

=∂∂ víi mäi l, lÊy ®¹o hµm (3.19) theo al ta cã:

0daffa

daff2i

k

1jj

)j(00

l

m

1i i

k

1jj

)j(00 =

⎟⎟

⎜⎜

⎛+

∂∂

⎟⎟

⎜⎜

⎛+ ∑∑ ∑

== =

l=1,...k (3.20)

V× ®¹o hµm cña tæng theo al b»ng 0 nªn

( )m m k

(j)(l) (l)0 j0 0 0ii 1 i 1 j 1 i

f .f f f da= = =

⎛ ⎞⎜ ⎟+⎜ ⎟⎝ ⎠

∑ ∑ ∑ = 0 l=1,...k (3.21)

(3.21) t¹o nªn mét hÖ k ph−¬ng tr×nh tuyÕn tÝnh x¸c ®Þnh c¸c biÕn thiªn tham sè

daj , j = 1, k cña hµm håi quy. C¸c gi¸ trÞ míi cña tham sè aj ®−îc tÝnh bëi

aj = aj0 + daj (3.22)

§Ó x¸c ®Þnh ®−îc hÖ ph−¬ng tr×nh (3.21) cÇn tÝnh c¸c ®¹o hµm riªng cña f

theo c¸c tham sè aj (ph−¬ng tr×nh (3.18)). Gi¶i hÖ (3.21) b»ng ph−¬ng ph¸p khö

Gauss thu ®−îc c¸c biÕn thiªn tham sè daj vµ tÝnh ®−îc tham sè míi theo (3.22).

Qu¸ tr×nh ®−îc lÆp l¹i cho ®Õn khi héi tô nghiÖm.

D−íi ®©y lµ mét vÝ dô sö dông thuËt to¸n håi quy phi tuyÕn ®Ó x¸c ®Þnh

®ång thêi c¸c th«ng sè nhiÖt ®éng cña c©n b»ng ion trong dung dÞch khi dùa vµo

tËp {pH} ®o ®−îc tõ thùc nghiÖm ë c¸c lùc ion kh¸c nhau bao gåm pK, hÖ sè

ho¹t ®é cña c¸c ion vµ cña c¸c ph©n tö trung hoµ trong dung dÞch ®iÖn ly1. Hµm

xÊp xØ cã d¹ng:

221a cIbI

Ia3291.01

I5115.0IIkIkpKpK −−

+−−−=∗ (3.23)

Page 58: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

57

Trong ®ã pK* lµ gi¸ trÞ pK biÓu kiÕn x¸c ®Þnh tõ thùc nghiÖm do pH t−¬ng

øng víi lùc ion I. pKa lµ h»ng sè c©n b»ng ph©n ly, k1, k2 lµ c¸c tham sè x¸c ®Þnh

ho¹t ®é chÊt kh«ng ®iÖn ly vµ 3 sè h¹ng cuèi cïng biÓu diÔn hÖ sè ho¹t ®é cña

ion trong dung dÞch ®ang xÐt. C¸c ch−¬ng tr×nh con cÇn thiÕt cho bµi to¸n nªu

trªn gåm cã:

FUNCTION tÝnh hµm vµ c¸c ®¹o hµm riªng cña (3.23):

FUNCTION F(ii:integer;x:m1):DOUBLE;

const aa=0.5115; bb=0.3291;

var lgphia,lgfha,tamp,a1,a2,b1,b2 : double;

exsi,a3,b3,a4,si,pka,sqrti,yy : double;

begin

yy:=x[1]; si:=x[2];

a1:=a[1]; a2:=a[2]; b1:=a[3]; b2:=a[4]; b3:=a[5];

pka:=a[6];

sqrti:=sqrt(si);

LGFHA:=a1*sqrti+a2*si*sqrti;

tamp:=1.0+bb*b1*sqrti;

lgphia:=aa*sqrti/tamp-b2*si-b3*si*si;

case (ii) of

0: f:=-pka+lgphia+lgfha+yy; (*yy la pkc do duoc*)

1: f:= sqrti;(* dao ham rieng f theo tham so 1*)

2: f:= si*sqrti; (* 2*)

3: f:= -aa*sqrti/tamp/tamp*bb*sqrti; (* 3*)

4: f:= -si; (* 4*)

5: f:=-si*si; (* 5*)

6: f:= -1.0; (* 6*)

end;

END; (* het function *)

trong ®ã ii lµ biÕn ®iÒu khiÓn ®Ó tÝnh hoÆc hµm (nÕu ii=0) hoÆc c¸c ®¹o hµm

riªng theo c¸c biÕn aii t−¬ng øng.

Page 59: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

58

Procedure INIT x¸c lËp ma trËn gi¸ trÞ ban ®Çu cña c¸c tham sè b[i,j]

Procedure INIT (v:real;sz:integer;a:m1;VAR b:m22);

VAR

i, j : integer;

BEGIN

for i:=1 to (2*sz+1) do

begin

for j:=1 to nconst do

begin

if (i=1) then b[i,j]:=a[j]

else

begin

if i<(sz+2) then

b[i,j]:= a[j]* exp((i-1)*ln(v)) else

b[i,j]:= a[j]/exp((i-1-sz)*ln(v));

end;

end;

end;

END;

Procedure XL_KETQUA dïng ®Ó xö lý c¸c kÕt qu¶ nhËn ®−îc sau khi thu

®−îc gi¸ trÞ c¸c tham sè tho¶ m·n ®iÒu kiÖn héi tô. Còng nh− c¸c ch−¬ng tr×nh

kh¸c, ë ®©y cã thÓ lµ c¸c c©u lÖnh ghi tÖp, in ra mµn h×nh, tÝnh so s¸nh gi÷a thùc

nghiÖm vµ tÝnh to¸n tuú ý ®Þnh cña ng−êi lËp tr×nh vµ môc ®Ých cña bµi to¸n.

Procedure GHPTTT2 gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh (xem phô lôc)

program Tinh_pKa;

label 1,2,3;

Page 60: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

59

type

m1=array[1..70{50}] of double;

m1i=array[1..70{50}] of integer;

m2=array[0..100,0..3] of double;

m22=array[0..10,0..100] of double;

var

i,j,k,l,sz,nconst,m,nvar : integer;

a,x,d,lfia,lfha : m1;

c : m1i;

meres : m2;

b,functi,s,t : m22;

v,s0,eps,sum,tt,xx,yy,u,uu,test,si,sqrti : double;

sum1,sum2,lgphia,lgfha,pkc,tamp,aa,bb: double;

ch : char;

f1,f3,f2 : text;

FUNCTION F(ii:integer;x:m1):DOUBLE;

begin

...

end; (* hÕt function *)

procedure GHPTTT2(n: integer;A:m22; VAR XX:m1);

begin

...

end; (* hÕt gi¶i hÖ pt tuyÕn tÝnh*)

Page 61: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

60

Procedure INIT (v:real;sz:integer;a:m1;VAR b:m22);

begin

...

end;

(* hÕt procedure x¸c ®Þnh ma trËn gi¸ trÞ ban ®Çu cña c¸c tham sè*)

procedure XL_KETQUA;

begin

writeln('pKa tinh pKa thuc nghiem');

writeln(a[6]:10:4);

end;

BEGIN (* main program*)

nconst:=6; (* sè tham sè *) nvar:=2;

(* víi bµi to¸n pH nvar lu«n b»ng 2. 1 lµ pK* vµ 2 lµ lùc ion*)

eps:=1.e-10; (* ®é héi tô*)

(*gi¸ trÞ ban ®Çu cña c¸c tham sè*)

a[1]:=1.0; a[2]:=1.0; a[3]:=1.0; a[4]:=1.0; a[5]:=1.0; a[6]:=1.0;

assign(f1,'PH_Dly.txt'); reset(f1); (*tÖp d÷ liÖu*)

readln(f1,m); (* sè ®iÓm thùc nghiÖm*)

for i:=1 to m do

begin (* ®äc d÷ liÖu thùc nghiÖm *)

readln(f1,meres[i,2],meres[i,1]);

writeln(meres[i,2],meres[i,1]);

end;

writeln(' tim bo gia tri ban dau B cua nghiem'); readln;

sz:=10; v:=1.5;

INIT (v,sz,a,b);

for i:=1 to nconst do c[i]:=1; (* chän c¸c gi¸ trÞ ban ®Çu*)

l:= nconst;

1: s0:=exp(100*ln(10.0));

for i:=1 to nconst do a[i]:=b[c[i],i];

Page 62: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

61

repeat

for i:=0 to nconst do

begin

for j:=1 to m do

begin

(* cÊp ph¸t c¸c gi¸ trÞ thùc nghiÖm cho x*)

for k:=1 to nvar do x[k]:=meres[j,k];

(*tÝnh hµm vµ c¸c ®¹o hµm riªng*)

functi[i,j]:=f(i,x);

end;

end;

for i:= 0 to nconst do

begin (* tÝnh c¸c tæng ij trong pt (3.21)*)

for j:= i+1 to nconst do

begin

s[i,j]:=0;

for k:=1 to m do s[i,j]:=s[i,j]+functi[i,k]*functi[j,k];

end;

end;

for i:=0 to nconst do

begin (* tÝnh c¸c tæng ii trong pt (3.21)*)

s[i,i]:=0;

for k:=1 to m do s[i,i]:= s[i,i]+ functi[i,k]*functi[i,k];

end;

if s[0,0]>s0 then (* nÕu S[0,0] qu¸ lín lùa chän c¸c*)

begin (*gi¸ trÞ ban ®Çu kh¸c cho c¸c tham sè*)

3: j:= c[l]+1;

if j=(2*sz+1) then

Page 63: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

62

begin

if l=1 then

begin

WRITELN(' ERROR'); readln; halt;

end;

l:=l-1; goto 3;

end;

c[l]:=j;

if l<nconst then

begin

for i:=l+1 to nconst do c[i]:=1;

l:= nconst;

end;

goto 1;

end;

s0:=s[0,0]; (* x¸c lËp ®Çy ®ñ ma trËn tham sè *)

for i:=0 to nconst do

for j:=0 to i-1 do s[i,j]:=s[j,i];

for i:=1 to nconst do

for j:=1 to nconst do t[i,j]:=s[i,j]; (* g¸n S cho T*)

for i:=1 to nconst do t[i,nconst+1]:=-s[i,0];

GHPTTT2(nconst,T,d); (* gi¶i hÖ PTTT theo T*)

for i:=1 to nconst do a[i]:=a[i]+d[i]; (*tÝnh nghiÖm míi*)

sum:=0.0;

for i:=1 to nconst do (* ®iÒu kiÖn héi tô nghiÖm*)

sum:=sum+abs(d[i]/a[i]); writeln(' sum=',sum);

until sum<eps; (* kÕt thóc vßng lÆp *)

writeln('values of constants');

for i:=1 to nconst do write(i:5,a[i]:14); writeln;

XL_KETQUA; (* xö lý kÕt qu¶*)

Page 64: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

63

close(f1);readln;

END.

B¶ng 4 tr×nh bµy kÕt qu¶ x¸c ®Þnh ®ång thêi c¸c tham sè c©n b»ng ion

trong dung dÞch tõ d÷ liÖu ®o pH ë c¸c lùc ion kh¸c nhau cña hÖ axit axetic trong

m«i tr−êng NaCl. D÷ liÖu vµo gåm cã lùc ion vµ pK* biÓu kiÕn thùc nghiÖm ®·

qua xö lý thèng kª vµ lµm nh½n. Sè tham sè tuú biÕn cÇn x¸c ®Þnh trong tr−êng

hîp nµy lµ 6 bao gåm: pKa h»ng sè ph©n ly cña axit axetic, k1, k2 lµ c¸c tham sè

x¸c ®Þnh lgfHA vµ a,b,c lµ c¸c tham sè x¸c ®Þnh lgϕA- . Gi¸ trÞ c¸c tham sè thu

®−îc gåm cã :

k1 6.75195E-0002 k2 2.71146E-0002

a 3.25717E+0000 b -2.46469E-0002 c -3.32994E-0003

pKa 4.75962E+0000 (tµi liÖu tham kh¶o pKa = 4.741)

Sö dông c¸c hÖ sè k1 vµ k2 còng nh− a, b vµ c ta tÝnh ®−îc lÇn l−ît c¸c gi¸

trÞ lgfHA vµ lgϕA theo ph−¬ng tr×nh (3.23). KÕt qu¶ tÝnh to¸n ®−îc tr×nh bµy trong

b¶ng 3.1

B¶ng 4: KÕt qu¶ x¸c ®Þnh ®ång thêi c¸c tham sè c©n b»ng ion

I pK* (TT) pK* [TK] lgfHA[TK} lgfHA (TT) lgϕA-[TK] lgϕA- (TT)

0.05 4.65320 4.648±0,002 0.01540 0.118 0.09102

0.10 4.61910 4.612±0,006 0.013 0.02221 0.11830

0.15 4.59570 4.587±0,006 0.02773 0.13620

0.20 4.57740 4.568±0,006 0.024 0.03262 0.149 0.14960

0.25 4.56230 4.555±0,008 0.03715 0.16010

0.30 4.54940 4.500±0,006 0.04144 0.16880

0.40 4.52770 4.526±0,012 0.043 0.04956 0.181 0.18240

0.50 4.50970 4.502±0,012 0.05733 0.19260

0.60 4.49420 4.492±0,006 0.061 0.06490 0.199 0.20050

0.70 4.48050 4.479±0,014 0.07237 0.20670

0.80 4.46810 4.464±0,014 0.079 0.07979 0.210 0.21170

Page 65: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

64

0.90 4.45670 4.460±0,014 0.08721 0.21570

1.00 4.44610 4.448±0,014 0.096 0.09463 0.218 0.21890

1.20 4.42670 4.422±0,006 0.113 0.10960 0.223 0.22330

1.50 4.40070 4.408±0,016 0.138 0.13250 0.226 0.22640

1.70 4.38490 4.388±0,018 0.154 0.14810 0.226 0.22660

2.00 4.36250 4.364±0,010 0.177 0.17220 0.225 0.22490

2.20 4.34840 4.360±0,012 0.193 0.18860 0.228 0.22260

2.50 4.32800 4.351±0,012 0.215 0.21390 0.220 0.21770

2.70 4.31480 4.341±0,014 0.23120 0.21350

3.00 4.29560 4.333±0,014 0.252 0.25780 0.211 0.20620

3.50 4.26440 4.329±0,014 0.287 0.30390 0.199 0.19130

Sù phï hîp gi÷a tÝnh to¸n vµ thùc nghiÖm lµ râ rµng. Thµnh c«ng c¬ b¶n

cña viÖc sö dông thuËt to¸n håi quy phi tuyÕn chÝnh lµ ë chç x¸c ®Þnh ®−îc ®ång

thêi nhiÒu tham sè chØ tõ mét tËp sè liÖu pH cña dung dÞch ë c¸c lùc ion kh¸c

nhau.

3.4. Ph−¬ng ph¸p m« pháng monte – carlo tÝnh to¸n hÖ ®éng hãa häc

ThuËt to¸n

k XÐt ph¶n øng bËc mét: A → B

cã ph−¬ng tr×nh vi ph©n bËc mét dA/dt = - kA

vµ lêi gi¶i At = A0 e-kt.

H·y chän k lµ ®¬n vÞ cña h»ng sè tèc ®é vµ A0 nång ®é ban ®Çu cña chÊt

A. Ph¶n øng x¶y ra ®−îc (1 b−íc ph¶n øng) nÕu mét sè ngÉu nhiªn ξ trong

kho¶ng (0,1) tho¶ m·n ®iÒu kiÖn: ξ ≤ kA

Trong tr−êng hîp nµy nång ®é cña A vµ B sau mçi b−íc ph¶n øng ®−îc x¸c ®Þnh

nh− sau: V1

AA −= vµ V1

BB +=

Page 66: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

65

V lµ thÓ tÝch cña b×nh ph¶n øng. Râ rµng khi A gi¶m th× x¸c suÊt x¶y ra ph¶n

øng gi¶m ®i. Khi t¨ng V vµ sè ®iÓm ngÉu nhiªn N ®Õn ∞ th× c¸ch gi¶i trªn cho

kÕt qu¶ chÝnh x¸c.

S¬ ®å khèi vµ ®o¹n ch−¬ng tr×nh m¸y tÝnh

ThuËt to¸n ®−îc thÓ hiÖn thµnh s¬ ®å khèi tr×nh bµy trªn h×nh 3.1. ®o¹n

ch−¬ng tr×nh m¸y tÝnh ®−îc biÓu diÔn trong procedure MC_REAC

Procedure MC_REAC(n:integer; sk: real; VAR a: real);

VAR r,v,aa : real;

i,itime,N,nint,j : longint;

Begin

Randomize;

writeln('T':10,'A':16,'A0.exp(-kt)':24);

v:=n; nint:=round(n/20);

for j:=1 to 20 do

begin

for i:=1 to nint do

begin

r:=random;

if r<(k*a) then a:=a - 1/v;

end;

itime:=j*nint; aa:=exp(-0.0002*itime);

writeln(itime:10,a:16:4,'':14,aa:10);

end;

end;

Khi ¸p dông cho hÖ ph¶n øng vÝ dô:

k1 A + B C + D

k2 k3

B + C D + E ®−îc m« t¶ bëi 3 ph−¬ng tr×nh ®éng häc:

v1 = k1 A B k1 = 1

Page 67: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

66

v2 = k2 C D k2 = 0.25

v3 = k3 B C k3 = 0.5

j=j+1

START

Doc k, Ao, i, N, V

nint= N/20

j=1

i=1

random<kA?

itime=j*nint

j>20?

END

i>nint?

yes

no

no

yes

A=A-1/V

i:=i+1

no

H×nh 1: S¬ ®å thuËt to¸n tÝnh Monte-Carlo hÖ ®éng hãa häc

ThuËt to¸n cÇn cã mét thay ®æi nhá cho phï hîp. V× cã tíi 3 ph¶n øng

song song nªn sè ngÉu nhiªn còng ®−îc chia lµm 3 phÇn:

0 ..... 0.3333 thuéc vÒ ph¶n øng 2

0.3334 ...... 0.6666 thuéc vÒ ph¶n øng 3

0.6667 ...... 1.0000 thuéc vÒ ph¶n øng 1

C¸ch chia nµy kh«ng ¶nh h−ëng ®Õn tÝnh ngÉu nhiªn cña thuËt to¸n, v× sè

ngÉu nhiªn RANDOM cã ph©n bè ®Òu. §Ó tÝnh to¸n ®éng häc ph¶n øng cña hÖ,

ch−¬ng tr×nh cÇn cã mét ch−¬ng tr×nh con tÝnh nång ®é c¸c chÊt ph¶n øng sau

mçi b−íc ph¶n øng theo vËn tèc v.

Page 68: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

67

procedure RP (v:real; var r1,r2,p1,p2:real);

begin

r1 :=r1 - 1/v;

r2 :=r2 - 1/v;

p1:=p1 + 1/v;

p2:=p2 + 1/v;

end;

trong ®ã: r1, r2 kÝ hiÖu nång ®é c¸c chÊt gi¶m ®i sau ph¶n øng (r lµ reaction), p1,

p2 kÝ hiÖu nång ®é c¸c chÊt t¨ng lªn sau ph¶n øng (p lµ product).

Thay cho MC_REAC chóng ta cã MC_REACSYS biÓu diÔn ®o¹n ch−¬ng

tr×nh m¸y tÝnh cho hÖ 03 ph¶n øng

procedure MC_REACSYS(v: real; K:m1; VAR C: m1);

VAR

ir , : integer; r, temp : real;

BEGIN

ir:=random(10000);

r:=ir/9999; ir:=3;

if r<0.3333 then ir:=1;

if ((r>0.3333) and (r<0.6666)) then ir:=2;

case ir of

1: begin (* k2*) (* C+D → A+B *)

temp:=k[2]*c[3]*c[4];

if r<=temp then RP(v,c[3],c[4],c[1],c[2]);

end;

2: begin (* k3 *) (* B+C → D+E*)

temp:=k[3]*c[2]*c[3];

r:=r-0.3333;

if r<=temp then RP(v,c[2],c[3],c[4],c[5]);

end;

3: begin (* k1 *) (* A+B → C+D *)

Page 69: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

68

temp:=k[1]*c[1]*c[2];

r:=r-0.6666;

if r<=temp then RP(v,c[1],c[2],c[3],c[4]);

end;

end;

END;

trong ®ã c[i] víi i=1...5 t−¬ng øng víi nång ®é cña c¸c chÊt A, B, C, D, E; k[i] :

h»ng sè tèc ®é ph¶n øng 1, 2, 3. Sö dông c¸c ch−¬ng tr×nh con nªu trªn ta cã thÓ

thiÕt lËp ch−¬ng tr×nh tÝnh ®éng häc ph¶n øng b»ng ph−¬ng ph¸p Monte – Carlo.

PROGRAM REACTION3;

(* cc[i] i=1..5 lµ nång ®é cña c¸c chÊt A,B,C,D,E sau khi ®· qui vÒ ®¬n vÞ

c[i]max; kk[i] : h»ng sè tèc ®é cña ph¶n øng 1,2,3 sau khi ®· qui vÒ ®¬n vÞ

k[i] max

Nång ®é ban ®Çu cña A vµ B lµ 1, cña C,D,E lµ 0.

C¸c tham sè cña hÖ bao gåm:

Sè lÇn thö ngÉu nhiªn N = 250000;

ThÓ tÝch V = 25000*)

TYPE

m1=array[1..5] of real;

VAR kmax,cmax, r,v,temp : real;

k,kk,c: m1;

nint,i,itime,n,ir,j,ki: longint;

procedure RP (v:real; var r1,r2,p1,p2:real);

begin

...

end;

procedure MC_REACSYS(v: real; K:m1; VAR C: m1);

begin

...

end;

Page 70: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

69

BEGIN

RANDOMIZE;

writeln('Nhap du lieu');

(* writeln('Nong do ban dau cua cac chat');

for i:=1 to 5 do

begin

write('c',i:5,'=?');readln(c[i]);

end;

writeln('Hang so toc do phan ung');

for i:=1 to 3 do

begin

write('k',i:5,' =?');readln(k[i]);

end;

write('n,v');readln(n,v);

So lieu dung de test *)

c[1]:=1.0; c[2]:=1.0; c[3]:=0.0; c[4]:=0.0; c[5]:=0.0;

k[1]:=1.0; k[2]:=0.25; k[3]:=0.5;

n:=250000; v:=25000;

itime:=0; nint:=round(N/20);

(*Qui nong do ban dau va hang so toc do ve don vi cmax,kmax*)

cmax:=c[1];

for i:=2 to 5 do if c[i]>cmax then cmax:=c[i];

kmax:=k[1];

for i:=2 to 3 do if k[i]>kmax then kmax:=k[i];

for i:=1 to 3 do k[i]:=k[i]/kmax;

for i:=1 to 5 do c[i]:=c[i]/cmax;

writeln('itime':10,'A':10,'B':10,'C':10,'D':10,'E':10);

for i:=2 to 21 do

begin

for j:=1 to nint do MC_REACSYS(v,K,C);

Page 71: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

70

itime:=(i-1)*nint;

write(itime:10);

for ki:=1 to 5 do write(c[ki]:10);

writeln;

end;

readln;

END.

Ch−¬ng 4 : Mét sè ch−¬ng tr×nh tÝnh cho hãa häc 4.1. Sù tÝnh Ab – Initio cho hÖ HeH+

Giíi thiÖu phÇn mÒm vµ c¸ch sö dông

4.2. Sù tÝnh b¸n kÝnh kinh nghiÖm

Giíi thiÖu phÇn mÒm vµ c¸ch sö dông

4.3. ThiÕt kÕ ph©n tö vμ tÝnh ho¸ l−îng tö

Giíi thiÖu phÇn mÒm vµ c¸ch thiÕt kÕ

Ch−¬ng 5 : phÇn mÒm d¹y häc

5.1. phÇn mÒm tra cøu: b¶ng tuÇn hoμn c¸c nguyªn tè

Ngoµi phÇn mÒm B¶ng tuÇn hoµn c¸c nguyªn tè mçi sinh viªn s−u tÇm mét sè phÇn mÒm hãa häc ®Ó lång ghÐp vµo c¸c bµi d¹y thùc tÕ (Ýt nhÊt 2 phÇn mÒm).

5.2. giíi thiÖu mét sè bμi d¹y c¬ b¶n

Mçi sinh viªn sö dông c¸c phÇn mÒm hãa häc ®· s−u tÇm ®−îc vµ lång ghÐp vµo c¸c bµi d¹y thùc tÕ.

Page 72: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

71

Ch−¬ng 6 : thùc hμnh 6.1. vËn hμnh m¸y

Khởi động máy tính, copy, cài đặt và khởi động chương trình PASCAL,

thoát ra khỏi chương trình PASCAL, tắt máy tính. 6.2. NhËp ch−¬ng tr×nh vμo m¸y tÝnh

Nhập các chương trình ở các ví dụ có trong tài liệu và chạy thử. Lưu tất cả

các file của mình vào thư mục họ và tên của sinh viên; tất cả các thư mục họ và

tên của sinh sinh viên được lưu trong thư mục lớp mình. Ví dụ thư mục:

C:\Hoa43A\Nguyễn Văn A\... . (Nộp kết quả bài thực hành cho giáo viên sau khi

thực hành xong là 1 thư mục lớp\các sinh viên\các file) 6.3. thñ tôc vμo ra c¸c d÷ liÖu

1. Viết chương trình in ra màn hình dòng chữ:

CONG HOA XA HOI CHU NGHIA VIET NAM

DOC LAP – TU DO – HANH PHUC

HO VA TEN: NGUYEN VAN A

LOP: HOA 43 A

NAM HOC 2010 - 2011

Rồi dừng màn hình. Khi nhấn phím bất kỳ thì thoát ra khỏi chương trình.

2. Viết chương trình nhập số liệu từ bàn phím với tất cả các kiểu số liệu

đã học rồi viết các giá trị đó ra màn hình, Viết ra màn hình: họ và tên của mình,

lớp, năm học rồi dừng lại chờ ấn phím bất kỳ mới thoát ra.

3. Viết chương trình theo yêu cầu sau:

+ Tên chương trình là họ và tên của mình.

+ Chương trình nhập số liệu a, b, c, d, e từ bàn phím với a, b, c, d, e có

các kiểu số liệu khác nhau.

+ Viết các giá trị a, b, c, d, e ra màn hình rồi dừng lại chờ ấn phím bất kỳ

mới tiếp tục.

+ Tính toán KETQUA theo các biến a, b, c, d, e đã nhập.

+ Viết KETQUA, họ và tên của mình, lớp, năm học ra màn hình rồi dừng

lại chờ ấn phím bất kỳ mới tiếp tục.

Page 73: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

72

6.4. Dïng c¸c to¸n tö FOR ; REPEAT ; WHILE…DO ; IF…THEN.

1. Viết chương trình PASCAL thực hiện công việc sau:

- Tên chương trình: Tìm tổng hai số bé nhất.

- Viết ra màn hình thông báo: Nhap gia tri cua a (kieu so nguyen):

- Nhập số a là số nguyên từ bàn phím.

- Viết ra màn hình thông báo: Nhap gia tri cua b (kieu so thuc):

- Nhập số b là số thực từ bàn phím.

- Cho giá trị của c = giá trị bất kỳ.

- Cho TONG1 = a + b, TONG2 = a + c, TONG3 = b + c.

- Cho MIN = TONG1.

- Nếu MIN > TONG2 thì MIN = TONG2.

- Nếu MIN > TONG3 thì MIN = TONG3.

- Viết ra màn hình giá trị của a, b c (mỗi giá trị dành 15 chỗ để viết,

mỗi số có 4 chữ số phần thập phân). Xuống dòng.

- Viết ra màn hình thông báo: Gia tri tong nho nhat la:

- Viết ra màn hình giá trị MIN với 5 chữ số ở phần nguyên, 2 chữ số ở

phần thập phân.

- Viết ra màn hình: họ và tên của mình, lớp, năm học

2. Viết chương trình PASCAL thực hiện công việc sau:

- Tên chương trình: Tìm tích hai số lớn nhất.

- Viết ra màn hình thông báo: Nhap gia tri cua a (kieu so nguyen):

- Nhập số a là số nguyên từ bàn phím.

- Viết ra màn hình thông báo: Nhap gia tri cua b (kieu so thuc):

- Nhập số b là số thực từ bàn phím.

- Cho giá trị của c = giá trị bất kỳ

- Cho TICH1 = a x b, TICH2 = a x c, TICH3 = b x c.

- Cho TICH = TICH1.

- Nếu TICH < TICH2 thì TICH = TICH2.

- Nếu TICH < TICH3 thì TICH = TICH3.

Page 74: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

73

- Viết ra màn hình giá trị của a, b c (mỗi giá trị dành 10 chỗ để viết, mỗi

số có 3 chữ số phần thập phân). Xuống dòng.

- Viết ra màn hình thông báo: Gia tri tich hai so lon nhat la:

- Viết ra màn hình giá trị TICH với 10 chữ số ở phần nguyên, 4 chữ số ở

phần thập phân.

Viết ra màn hình: họ và tên của mình, lớp, năm học 6.5. FUNCTION vμ PROCEDURE

Viết chương trình sử dụng 1 chương trình con đã học 6.6. LËp tr×nh tÝnh nång ®é c©n b»ng cña hÖ.

VÝ dô 1: C©n b»ng t¹o phøc trong dung dÞch Cu++ vµ EDA cã d¹ng sau:

Cu2+ + EDTA ⇌ CuEDTA2+ K1

CuEDTA2+ + EDTA ⇌ Cu(EDTA)22+ K2

Cho biÕt nång ®é mol ban ®Çu cña Cu2+ lµ C1 vµ cña EDTA lµ C2. TÝnh

nång ®é c©n b»ng cña c¸c ion vµ ph©n tö trung hoµ trong qu¸ tr×nh chuÈn ®é Cu2+

b»ng EDTA.

Bµi gi¶i: C©n b»ng (1) vµ (2) ®−îc viÕt l¹i d−íi d¹ng sau:

Cu2+ + EDTA ⇌ Cu EDTA2+ + Cu (EDTA)22+ (6.1)

ë thêi ®iÓm ban ®Çu t=0 ta cã:

[Cu2+] = C1

[EDTA] = C2

[CuEDTA2+] = [Cu(EDA)22+] = 0

T¹i thêi ®iÓm c©n b»ng nång ®é CuEDTA2+ ®−îc ký hiÖu lµ x vµ cña

Cu(EDTA)22+ lµ y. Lóc ®ã

[Cu2+] = C1 - x - y

[EDTA] = C2 - x - 2y

[CuEDTA2+] = x

[Cu(EDTA)22+] = y

Ta cã c¸c ph−¬ng tr×nh liªn hÖ sau:

Page 75: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

74

[ ]2+1 2

1 2+

Cu × EDTA (C -x-y)(C -x-2y)K = =xCuEDTA

⎡ ⎤⎣ ⎦⎡ ⎤⎣ ⎦

(6.2)

[ ]2+2

2 2+2

CuEDTA × EDTA x(C -x-2y)K = =yCu(EDTA)

⎡ ⎤⎣ ⎦⎡ ⎤⎣ ⎦

(6.3)

Tõ (6.3) ta rót ra:

2

2

(C -x)xy=K +2x

(6.4)

22 2 2

22

(C -2x)(K +2x)-2(C x-x )y'=(K +2x)

(6.5)

Sö dông (6.3) ta cã thÓ quy (6.2) vÒ ph−¬ng tr×nh 1 Èn.

)y2xC)(yxC(xK)x(F 211 −−−−−= (6.6)

)y2xC)('y1()'y21)(yxC(K)x('F 211 −−+++−−+= (6.7)

PROGRAM can_bang_ion;

LABEL 10;

VAR

X,FX,FFX,K1,K2,Cl,C2,epsilon,GAM : real;

delta,Y,CC1,CC2 : real;

PROCEDURE FUNC(X: real; VAR FX,FFX: real);

VAR

AA,AB,AC,AD,YF,Y : real;

BEGIN

AA:= C2 * X - X*X;

AB:= K2 + 2 * X;

Y:= AA/AB;

AC:= Cl - X - Y;

AD:= C2 - X - 2 * Y;

YF:= (C2 - 2 * X) * AB - 2 * AA;

YF:= YF/AB /AB;

FX:= K1 *X-AC*AD;

FFX:=K1 +AC*(1 +2*YF)+(1 +YF)*AD;

Page 76: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

75

END;

BEGIN

WRITE ('Do chinh xac cua loi giai :=?'); READLN (epsilon);

WRITE (' nhap hscb kl, k2,..'); READLN (K1, K2);

WRITE(' nhap Nong Do Cu2+'); READLN (Cl);

WRITE (' nhap Nong Do EDTA va bien thien ND');

READLN (C2, GAM);

WRITELN ('GIA TRI ND CAC ION CAN BANG');

WRITELN ('Cu':10,'EDTA ':10,'CUEDTA':10,'Cu(EDTA)2':12);

WRITELN ('nhap x dau') ; READLN (x);

(* sau lan tinh dau, cac x dau duoc chon la x cua phep tinh truoc *)

10: FUNC (x,FX,FFX);

delta := FX / FFX; X:= X - delta;

IF abs(delta)> epsilon THEN GOTO 10;

Y:= (C2 - X) * X/(K2 + 2 * X);

CC1 := Cl - X - Y; CC2:= C2 - X - 2*Y;

WRITELN (CC1:10:4, CC2:10:4, X:10:4,Y:10:4);

C2:= C2 + GAM;

IF (C2/2)<=Cl THEN GOTO 10;

READLN;

END.

VÝ dô 2:. C©n b»ng t¹o phøc trong dung dÞch Fe3+ vµ SCN- ®−îc x¸c ®Þnh

bëi c¸c ph−¬ng tr×nh sau:

Fe3+ + SCN- ⇌ Fe(SCN)2+ K1

Fe(SCN)2+ + SCN- ⇌ Fe(SCN)2+ K2

Fe(SCN)2+ + SCN- ⇌ Fe(SCN)3 K3

Fe(SCN)3 + SCN- ⇌ Fe(SCN)4

- K4

Fe(SCN)4- + SCN- ⇌ Fe(SCN)5

2- K5

Page 77: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

76

Fe(SCN)52- + SCN- ⇌ Fe(SCN)6

3- K6

Fe3+ + OH- ⇌ Fe(OH)2+ K7

SCN- + H+ ⇌ HSCN K8

H+ + OH- ⇌ H2O KH2O

T¹i thêi ®iÓm t = 0 nång ®é mol cña Fe3+ lµ C1 vµ cña SCN- lµ C2. T¹i thêi

®iÓm c©n b»ng ta cã:

Fe(SCN)2+ : x1

Fe(SCN)2+ : x2

. . . .

Fe(SCN)63-

: x6

Fe(OH)2+ : x7

HSCN : x8

Fe3+ : x9

SCN- : x10

vµ c¸c ph−¬ng tr×nh liªn hÖ : 6

9 1 i 7i=1

x =C - x -x∑ 6

10 2 i 8i-1

x =C - ix -x∑

1 9 10 1K =x x /x 2 1 10 2K =x x /x

........

-7 9 7K =x OH /x⎡ ⎤⎣ ⎦

+8 10 8K =x H /x⎡ ⎤⎣ ⎦

Tõ ®ã ta cã thÓ quy vÒ bµi to¸n mét ph−¬ng tr×nh mét Èn

1 9 10 1x =x x /K

2 1 10 2 9 10 10 1 2x =x x /K =x x x /K /K

hay ii 9 10 1 ix =x x /(K ...K ) i=1..6

i -9 1 9 10 i 9 7x =C -x x PK -x OH /K⎡ ⎤⎣ ⎦∑

Page 78: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

77

19 6

i -10 i 7

i=1

Cx =1+ x PK + OH /K⎡ ⎤⎣ ⎦∑

∏=

=i

1m mi K

1PK

i +10 2 9 10 i 10 8x =C -x i.x PK -x H /K⎡ ⎤⎣ ⎦∑

Tõ ®ã ta cã ph−¬ng tr×nh 1 biÕn theo x10 +

10 i10 10 2 9 10 i

8

x HF(x )=x -C + +x i.x PK =0

K

⎡ ⎤⎣ ⎦ ∑

+

10 1 28

H u'.v-v'uF'(x )=1+ +CK v

⎡ ⎤⎣ ⎦

Trong ®ã

6

i10 i

i=1

u= i.x PK∑

-6

i10 i

i=1 7

OHv=1+ x PK +

K

⎡ ⎤⎣ ⎦∑

2 i-110 iu'= i x PK∑

i-110 iv'= i.x PK∑

ViÖc tÝnh to¸n PKi vµ c¸c tæng trong u, v, u', v' ®−îc thùc hiÖn trong c¸c

procedure riªng.

TÝnh PKi:

PK:= 1;

FOR M:= 1 TO i DO PK:= PK * KK[M];

PKi:= 1/PK;

Ch−¬ng tr×nh con tÝnh F(x) vµ F'(x)

x:= x10;

sum1:= 0; sum2:= 0;

sum3:= 0; sum4:= 0;

FOR i:= 1 TO 6 DO

BEGIN

PK:= 1;

FOR m:= 1 TO i DO PK:= PK * KK[m];

Page 79: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

78

PKK[i]:= 1/PK;

tamp1:= exp(i *In (x) )* PKK[ i];

tamp2:= tamp1/ i ;

tamp2 := tamp2*i * i / x ;

tamp4:= tamp2 /i;

sum 1:= sum 1 + tamp1;

sum 2 := sum 2+ tamp2;

sum 2 := sum 2 + tamp2;

sum 4 := sum 4 + tamp4;

END;

W:= 1 + sum 2 + NDOH/K[7];

FX:= X - C2 + X * NDH/K[8] + C1* sum1/W;

FFX:= 1 + NDH/K[8] +Cl * (sum2 * W - sum 4 * sum1)/W/W;

Trong ®ã NDH vµ NDOH lÇn l−ît lµ nång ®é H+ vµ OH-, K lµ m¶ng mét chiÒu

chøa c¸c h»ng sè bÒn cña phøc.

Bµi tËp.

LËp tr×nh PASCAL hoµn chØnh ch−¬ng tr×nh tÝnh c©n b»ng ion trong dung

dÞch Fe3+ SCN-.

VÝ dô 4: C©n b»ng t¹o phøc trong dung dÞch Ag+ vµ NH3 ®−îc x¸c ®Þnh bëi

c¸c ph−¬ng tr×nh sau:

Ag+ + NH3 ⇌ [Ag(NH3)]+ K1

[Ag(NH3)]+ + NH3 ⇌ [Ag(NH3)2]+ K2

Ag+ + OH- ⇌ Ag(OH) K3

NH3 + H+ ⇌ NH4+ K4

H+ + OH- ⇌ H2O KH2O

T¹i thêi ®iÓm t = 0 nång ®é mol cña Ag+ lµ C1 vµ cña NH3 lµ C2. T¹i thêi

®iÓm c©n b»ng ta cã:

[Ag(NH3)]+ : x1

Page 80: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

79

[Ag(NH3)2]+ : x2

Ag(OH) : x3

NH4+ : x4

Ag+ : x5

NH3 : x6

vµ c¸c ph−¬ng tr×nh liªn hÖ : 2

5 1 i 3i=1

x =C - x -x∑ 2

6 2 i 4i-1

x =C - ix -x∑

1 5 6 1K =x x /x 2 1 6 2K =x x /x

........

-3 5 3K =x OH /x⎡ ⎤⎣ ⎦

+4 6 4K =x H /x⎡ ⎤⎣ ⎦

Tõ ®ã ta cã thÓ quy vÒ bµi to¸n mét ph−¬ng tr×nh mét Èn

1 5 6 1x =x x /K

2 1 6 2 5 6 6 1 2x =x x /K =x x x /K /K

i -5 1 5 6 i 5 3x =C -x x PK -x OH /K⎡ ⎤⎣ ⎦∑

15 2

i -6 i 3

m=1

Cx =1+ x PK + OH /K⎡ ⎤⎣ ⎦∑

i

im=1 m

1PK =K∏

i +6 2 5 6 i 6 4x =C -x i.x PK -x H /K⎡ ⎤⎣ ⎦∑

Tõ ®ã ta cã ph−¬ng tr×nh 1 biÕn theo x6 +

6 i6 6 2 5 6 i

4

x HF(x )=x -C + +x i.x PK =0

K

⎡ ⎤⎣ ⎦ ∑

+

6 1 24

H u'.v-v'uF'(x )=1+ +CK v

⎡ ⎤⎣ ⎦

Trong ®ã

2

i2 i

i=1u= i.x PK∑

Page 81: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

80

-2

i6 i

i=1 3

OHv=1+ x PK +

K

⎡ ⎤⎣ ⎦∑

2 i-16 iu'= i x PK∑

i-16 iv'= i.x PK∑

ViÖc tÝnh to¸n PKi vµ c¸c tæng trong u, v, u', v' ®−îc thùc hiÖn trong c¸c

procedure riªng.

TÝnh PKi:

PK:= 1;

FOR M:= 1 TO i DO PK:= PK * KK[M];

PKi:= 1/PK;

Ch−¬ng tr×nh con tÝnh F(x) vµ F'(x)

x:= x6;

sum1:= 0; sum2:= 0; sum3:= 0; sum4:= 0;

FOR i:= 1 TO 2 DO

BEGIN

PK:= 1;

FOR m:= 1 TO i DO PK:= PK * KK[m];

PKK[i]:= 1/PK;

tamp1:= exp(i *In (x) )* PKK[ i];

tamp2:= tamp1/ i ;

tamp2 := tamp2*i * i / x ;

tamp4:= tamp2 /i;

sum 1:= sum 1 + tamp1;

sum 2 := sum 2+ tamp2;

sum 2 := sum 2 + tamp2;

sum 4 := sum 4 + tamp4;

END;

W:= 1 + sum 2 + NDOH/K[3];

FX:= X - C2 + X * NDH/K[4] + C1* sum1/W;

FFX:= 1 + NDH/K[4] +Cl * (sum2 * W - sum 4 * sum1)/W/W;

Page 82: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

81

Trong ®ã NDH vµ NDOH lÇn l−ît lµ nång ®é H+ vµ OH-, K lµ m¶ng mét chiÒu

chøa c¸c h»ng sè bÒn cña phøc.

Bài tập:

Viết chương trình tính nồng độ cân bằng các ion trong hệ chứa

Ag+ 0,001 M và NH3 1M. pH = 10; Biết β1 = 103,03; β2 = 107,32; W = 10-14;

KNH3 = 10-4,76. η = 10-10.

Page 83: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

82

Phô lôc

C¸c ch−¬ng tr×nh con c¬ b¶n vµ c¸c ch−¬ng tr×nh nguån §Ó tiÖn lîi cho ng−êi ®äc, trong phô lôc nµy chóng t«i xÕp c¸c ch−¬ng tr×nh con vµ

ch−¬ng tr×nh nguån theo thø tù c¸c vÊn ®Ò. 1. §¹i sè tuyÕn tÝnh

1.1 §äc ma trËn tõ tÖp 1.2 ViÕt ma trËn 1.3 TÝnh tÝch hai ma trËn vu«ng 1.4 TÝnh ®Þnh thøc cña ma trËn 1.5 Gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh 1.6 NghÞch ®¶o ma trËn vu«ng 1.7 ChÐo ho¸ ma trËn

2. Ph−¬ng tr×nh vi ph©n 2.1 GÇn ®óng Runge-Kutta 2.2 Gi¶i ph−¬ng tr×nh vi ph©n th−êng 2.3 Gi¶i hÖ ph−¬ng tr×nh vi ph©n th−êng

3. XÊp xØ nghiÖm vµ hµm 3.1 Ph−¬ng ph¸p chia kho¶ng gi¶i ph−¬ng tr×nh mét Èn. 3.2 Håi quy ®a thøc

Mét sè ký hiÖu sau ®©y ®−îc sö dông thèng nhÊt trong tÊt c¶ c¸c ch−¬ng tr×nh con: m1 lµ kiÓu m¶ng mét chiÒu thùc m2 lµ kiÓu m¶ng hai chiÒu thùc im2 lµ kiÓu m¶ng hai chiÒu nguyªn Nh÷ng ch−¬ng tr×nh con trong th− viÖn nµy kh«ng cã tÝnh tæng qu¸t, lµ tèi gi¶n, lµ chØ

®óng trong nh÷ng tr−êng hîp riªng mµ bá qua c¸c t×nh huèng phøc t¹p hoÆc c¸c ®iÓm dÞ th−êng. Trong khu«n khæ cña gi¸o tr×nh c¬ së vÒ ho¸ tin, Th− viÖn nµy chØ nh»m môc ®Ých phôc vô cho c¸c bµi to¸n ®−îc ®Ò cËp ®Õn trong Gi¸o tr×nh. 4. C¸c ch−¬ng tr×nh nguån sau ®©y ®−îc viÕt theo ng«n ng÷ PASCAL:

4.1. TÝnh c©n b»ng ion Fe3+ SCN- (P) 4.2. Ch−¬ng tr×nh m« h×nh thùc nghiÖm bËc hai t©m trùc giao (P) Trong ®ã cã nh÷ng ch−¬ng tr×nh t−¬ng ®èi dµi nh−ng ®· ®−îc gi¶i thÝch chi tiÕt c¶ vÒ

thuËt to¸n vµ code m¸y tÝnh trong c¸c ch−¬ng t−¬ng øng cña gi¸o tr×nh. Ng−êi häc rÊt nªn ®äc kü c¸c ch−¬ng ®ã tr−íc khi sö dông c¸c ch−¬ng tr×nh nguån nµy.

Page 84: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

83

1. §¹i sè tuyÕn tÝnh 1.1. §äc ma trËn tõ tÖp

procedure DMT(tentep: string); VAR f1: text; tamp:real; BEGIN assign(f1,tentep); reset(f1); read(f1,n,m); writeln(' du lieu luon duoc ghi vao mang A'); for i:=1 to n do begin for k:=1 to m do begin read(f1,A[i,k]); end; readln(f1); end; END;

1.2. ViÕt ma trËn procedure VMT(n,m:integer;A:m2); BEGIN writeln('ma tran bac ',n:1,'x':1,m:1); for i:=1 to n do begin for k:=1 to m do write(A[i,k]:10:4); writeln; end; END;

1.3. TÝnh tÝch hai ma trËn vu«ng procedure TMT(n:integer; A,B: m2; VAR C:m2); VAR I,j,k: integer; sum: real; BEGIN

{n lµ bËc cña ma trËn, A,B lµ c¸c ma trËn vµo; C lµ ma trËn kÕt qu¶} for i:=1 to n do for j:=1 to n do begin sum:=0; for k:=1 to n do sum:=sum+A[i,k]*B[k,j]; C[i,j]:=sum; end; END;

1.4. TÝnh ®Þnh thøc cña ma trËn procedure DTMT(n: integer; A: m2; VAR det: real);

{ n lµ bËc cña ma trËn, A lµ ma trËn cÇn t×m ®Þnh thøc; det lµ ®Þnh thøc cña ma trËn} label 10; VAR sk :real; i,j,k,n :integer; BEGIN det:=1.0;

Page 85: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

84

for i:=1 to n do begin (* khu lan luot xi, i=1...n-1*) sk:=A[i,i]; det:=det*sk; (* chia ca hai ve cua phuong trinh dau tien cho a(i,i) *) for j:=i to n+1 do A[i,j]:=A[i,j]/sk; if i=n then goto 10; (* thay xi vao cac phuong trinh con lai *) for k:=i+1 to n do for j:=i+1 to n+1 do

A[k,j]:=A[k,j]-A[k,i]*A[i,j]; end; 10 : writeln(' det= ',det:10:4); END;

1.5. Gi¶i hÖ ph−¬ng tr×nh tuyÕn tÝnh b»ng ph−¬ng ph¸p khö Gauss procedure GHPTTT(n:integer; A:m2; VAR X:m1); LABEL 10; VAR i,j,k : integer; sk,sum : real; BEGIN for i:=1 to n do begin sk:=a[i,i]; for j:=i to n+1 do a[i,j]:=a[i,j]/sk; if i=n then goto 10; for k:=i+1 to n do for j:=i+1 to n+1 do a[k,j]:=a[k,j]-a[k,i]*a[i,j]; end; 10 : x[n]:=a[n,n+1]; for i:=n-1 downto 1 do begin sum:=0; for k:=i+1 to n do sum:=sum+a[i,k]*x[k]; x[i]:=a[i,n+1]-sum; end; writeln(' nghiem cua phuong trinh'); for i:=1 to n do write('x',i:1,'= ',x[i]:10:4); END;

Page 86: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

85

procedure GHPTTT2(n: integer;A:m22; VAR XX:m1); LABEL 10; VAR i,j,k : INTEGER; KK,AK,TEST,tamp : double; AA : M2; BEGIN For i:=1 to n do

For k:=1 to n+1 do AA[i,k]:=A[i,k]; For k:=1 to n-1 do begin {1} for i:=k+1 to n do begin {2} if a[k,k]<>0 then begin {3} if a[i,k]=0 then goto 10; tamp:= -a[i,k]/a[k,k]; for j:= k+1 to n+1 do a[i,j]:= a[i,j] +tamp*a[k,j]; goto 10; end; {3} if a[i,k]<>0 then begin {4} for j:=k to n+1 do begin {5} tamp:=a[k,j];

a[k,j]:= a[i,j]; a[i,j]:=tamp;

end; {5} goto 10; end; {4} 10: i:=i; end; {2} end; {1} For k := n downto 1 do begin {6} a[k,n+1]:=a[k,n+1]/a[k,k]; xx[k]:=a[k,n+1]; if k>1 then begin {7} for i:= k-1 downto 1 do a[i,n+1]:=a[i,n+1]-xx[k]*a[i,k]; end; {7} end; {6}

END; { het giai he pt tuyen tinh} 1.6. NghÞch ®¶o ma trËn vu«ng

Procedure NDMT1(n: integer; B: m2; VAR C: m2); VAR B1 : m2; I,k,icot,ihang: integer; BEGIN

for i:=1 to n do (* g¸n B cho B1 ®Ó gi¶i hÖ pttt *) for k:=1 to n do B1[i,k]:=B[i,k];

Page 87: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

86

for icot:=1 to n do begin {1}

(* gi¶i lÇn l−ît tõng hÖ ph−¬ng tr×nh tuyÕn tÝnh øng víi tõng cét cña ma trËn nghÞch ®¶o. c¸c phÇn tö cña ma trËn cét chÝnh lµ nghiÖm cña hÖ pt *) (* X¸c lËp c¸c cét cña ma trËn ®¬n vÞ *)

for ihang:=1 to n do begin {2} If ihang=icot then b[ihang,n+1]:=1 else b[ihang,n+1]:=0; end; {2} GHPTTT2(n,B,X);

(* g¸n nghiÖm cho c¸c phÇn tö cña ma trËn nghÞch ®¶o C *) for k:=1 to n do C[k,icot]:=X[k];

(* g¸n l¹i gi¸ trÞ ban ®Çu cña ma trËn B *) for i:=1 to n do for k:=1 to n do B[i,k]:=B1[i,k];

(* xong mét cét cña ma trËn nghÞch ®¶o *) end; {1} END; procedure INVMAT(n:integer; A:m2; VAR d: real; C:m2); LABEL 301, 300; CONST tol=1.0e-35; VAR ipv : im2; d,amax,swapl,pivot,t,sum : real; k,irow,j,icolumn,l,l1,nswap,jrow,jcolumn,i,n :integer; AA: m2; BEGIN

(* a: ma trËn n*n, n:bËc cña a, d:®Þnh thøc a, C lµ ma trËn nghÞch ®¶o*) d:=1.0; for i:=1 to n do

begin {1} for j:=1 to n do begin {2} AA[i,j]:=A[i,j]; end; {2} end; {1} for j:=1 to n do IPV[j,n]:=0; for i:=1 to n do begin {3} amax:=0.0; for j:=1 to n do begin {4} if IPV[j,n]<>1 then begin {5} for k:=1 to n do begin {6}

if ((IPV[k,n]<>1) or (amax<abs(A[j,k]))) then begin {7} irow:=j; icolumn:=k; amax:=abs(A[j,k]); end; {7}

Page 88: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

87

end; {6} end; {5} end; {4} if amax<=tol then goto 300; IPV[icolumn,n]:=1; IPV[i,1]:=irow; IPV[i,2]:=icolumn; if irow<>icolumn then begin {8} for l:=1 to n do begin {9} swapl:=A[irow,l]; A[irow,l]:=A[icolumn,l]; A[icolumn,l]:=swapl; end; {9} end; {8} pivot:=A[icolumn,icolumn]; d:=d*pivot; A[icolumn,icolumn]:=1.0; for l:=1 to n do A[icolumn,l]:=A[icolumn,l]/pivot; for l1:=1 to n do begin {10} if (l1<>icolumn) then begin {11} t:=A[l1,icolumn]; A[l1,icolumn]:=0.0; for l:=1 to n do A[l1,l]:=A[l1,l] - A[icolumn,l]*t; end; {11} end; {10} end; {3} nswap:=0; for i:=1 to n do begin {12} l:=n-i+1; if IPV[l,1]<> IPV[l,2] then begin {13} jrow:=IPV[l,1]; jcolumn:=IPV[l,2]; nswap:=nswap+1; for k:=1 to n do begin {14} swapl:=A[k,jrow]; A[k,jrow]:=A[k,jcolumn]; A[k,jcolumn]:=swapl; end; {14} end; {13} end; {12} if (nswap mod 2) = 0 then d:=d else d:=-d; goto 301; 300: d:=0.0;

301: writeln; END;

Page 89: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

88

1.7. ChÐo ho¸ ma trËn

Procedure CHMT1(n: integer; B:m2; VAR A,S:m2); {B : ma trËn Ðcmit; A ma trËn chÐo; S: ma trËn vect¬ riªng}

const eps=1.e-10; VAR R,T : m2; i,j,k, imax, kmax: integer; da,tan2teta,teta,sinteta,costeta :real;

(* x¸c ®Þnh ma trËn S ban ®Çu lµ ma trËn ®¬n vÞ *) BEGIN

for i:=1 to n do for j:=1 to n do begin {1}

if i=j then S[i,j]:=1 else S[i,j]:=0; A[i,j]:=B[i,j]; {luu B}

end; {1} (* chän phÇn tö cã gi¸ trÞ tuyÖt ®èi lín nhÊt kh«ng n»m trªn ®−êng chÐo chÝnh *)

FMAX(n,A, imax,kmax); repeat

(* x¸c ®Þnh gãc quay teta *) da:=A[imax,imax] - A[kmax,kmax]; if da <>0 then begin {2} tan2teta:= 2*A[imax,kmax]/da; teta:= arctan(tan2teta)/2; sinteta:=sin(teta); costeta:=cos(teta); end {2}

else begin {3} sinteta :=1/sqrt(2); costeta:=sinteta; end; {3}

(* x¸c ®Þnh ma trËn R *) for i:= 1 to n do for k:=1 to n do If i=k then R[i,k]:=1 else R[i,k]:=0; R[imax,kmax]:=sinteta; R[kmax,imax]:=sinteta; R[imax,imax]:=costeta; R[kmax,kmax]:=-costeta;

(* x¸c ®Þnh ma trËn S *) TMT(n,S,R,T);

for k:=1 to n do for i:=1 to n do S[k,i]:=T[k,i];

(* nh©n ma trËn R víi A *) TMT(n,R,A,T);

(* nh©n ma trËn T víi R *) TMT(n,T,R,A);

(* x¸c ®Þnh ®iÒu kiÖn héi tô *) (* t×m phÇn tö cùc ®¹i *)

FMAX(n,A, imax,kmax);

Page 90: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

89

until abs (A[imax,kmax])< eps ; END;

Trong ®ã ®· sö dông PROCEDURE FMAX ®Ó t×m phÇn tö cã gi¸ trÞ tuyÖt ®èi cùc ®¹i

kh«ng n»m trªn ®−êng chÐo chÝnh cña ma trËn A.

Procedure FMAX(n:integer; A:m2;VAR imax, kmax: integer); { lµ bËc cña ma trËn, A lµ ma trËn, imax vµ kmax lµ chØ sè cña phÇn tö kh«ng n»m trªn ®−êng chÐo chÝnh cã gi¸ trÞ tuyÖt ®èi lín nhÊt }

VAR i,k : integer; amax: real; BEGIN amax:=abs(A[1,2]); imax:=1; kmax:=2; for i:=1 to n do for k:=i+1 to n do begin {1} if abs(A[i,k])>amax then begin {2} amax:=abs(A[i,k]); imax:=i; kmax:=k; end; {2} end; {1} END;

2. Ph−¬ng tr×nh vi ph©n 2.1. GÇn ®óng Runge-Kutta Procedure RK4(x0,y0,h0:real; VAR y:real); VAR k1,k2,k3,k4 : real; h,h2,x : real; BEGIN h2:=h0/2; k1:=h0*func(x0,y0); k2:=h0*func(x0+h2,y0+k1/2); k3:=h0*func(x0+h2,y0+k2/2); k4:=h0*func(x0+h0,y0+k3); y:=y0+(k1+2*k2+2*k3+k4)/6; END; 2.2. Gi¶i ph−¬ng tr×nh vi ph©n th−êng

Procedure RK2(x0,y0,h0 :real; k :integer; VAR y:real); VAR h,h2,x: real;

i : integer; BEGIN

h:=h0/k; x:=x0; y:=y0; for i:=1 to k do begin {1} RK4(x,y,h,y); x:=x+h; end; {1}

END;

Page 91: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

90

Procedure RK3(xa,xb,delx,ya,eps,h0 :real); { xa, xb: cËn lÊy tÝch ph©n

ya: gi¸ trÞ y t¹i ®IÓm xa eps: ®é chÝnh x¸c nghiÖm delx: kho¶ng b−íc lÊy tÝch ph©n trong (xa,xb); h0: kho¶ng chia delx itermax: sè lÇn lÆp tèi ®a ®Ó héi tô nghiÖm } LABEL 10; VAR

Npont,nint,iint,irepeat,k,ipont,itermax : integer; H,yold,temp : real;

procedure RK2(x0,y0,h0 :real; k :integer; VAR y:real); VAR h,h2,x : real;

i : integer; BEGIN

h:=h0/k; x:=x0; y:=y0; for i:=1 to k do begin {1} RK4(x,y,h,y); x:=x+h; end; {1}

END; BEGIN

itermax:=20; npont:=round((xb-xa)/delx); nint:=round(delx/h0); for ipont:=1 to npont do begin {2} for iint:=1 to nint do begin {3} k:=1; RK2(xa,ya,h0,k,yold); for irepeat:=1 to itermax do begin {4} k:=k*2; h:=h0/k; RK2(xa,ya,h0,k,y); if yold=0 then yold:=1; temp:=abs((y-yold)/yold); if temp<eps then goto 10; yold:=y; end; {4} write('Nghiem khong on dinh');readln; 10: ya:=y; xa:=xa+h0; end; {3} writeln(ipont:3,xa:10:4,ya:20:10); end; {2}

END; 2.3. Gi¶i hÖ ph−¬ng tr×nh vi ph©n th−êng

Procedure RKSYS (xa,h0:real; YA: m1; k,ndim :integer; VAR Y1: m1); (* ndim lµ sè ph−¬ng tr×nh cña hÖ ph−¬ng tr×nh vi ph©n FUNC lµ hµm liªn hÖ *)

VAR h,h2,x : real; i,jj : integer;

Page 92: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

91

YY,RK,Y : m1; BEGIN h:=h0/k; h2:=h/2; x:=xa; for i:=1 to ndim do Y[i]:=YA[i]; for jj:=1 to k do Begin {1} FUNC(x,Y, DERY); For i:=1 to ndim do Begin {2} YY[i]:=Y[i]+h2*DERY[i]; (*yo+h0 func/2*) RK[i]:=DERY[i];

End; {2} (*k1/h=func*) x:=x+h2; FUNC(x,YY,DERY); For i:=1 to ndim do

Begin {3} YY[i]:=Y[i]+h2*DERY[i]; RK[i]:=RK[i]+ 2*DERY[i];

end; {3} (*2k2/h=2func*) FUNC(x,YY,DERY); For i:=1 to ndim do Begin {4} YY[i]:=Y[i]+h*DERY[i]; RK[i]:=RK[i]+ 2*DERY[i];

end; {4} (*2k3/h=2func*) x:=x+h2; FUNC(x,YY,Dery); For i:=1 to ndim do Begin {5} RK[i]:=RK[i]+ DERY[i]; (*k4/h = func*) Y[i]:=Y[i]+h*RK[i]/6.0; end; {5} End; {1} for i:=1 to ndim do Y1[i]:=Y[i]; END; (*End of RKSYS*)

3. XÊp xØ nghiÖm vµ hµm 3.1. Ph−¬ng ph¸p chia kho¶ng gi¶i gÇn ®óng ph−¬ng tr×nh mét Èn.

Procedure PPCK(a,b,eps: real; VAR x:real); VAR fa,fb : real; BEGIN fa:= FF(a); fb:= FF(b); while abs (a-b) > eps do begin {1} c:=(a+b)/2; x:= c; fc:= FF(x); d:= fa * fc; if d > 0 then

begin {2}

Page 93: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

92

fa:= fc; a:= c; end {2}

else begin {3}

fb:= fc; b:= c; end; {3} end; {1} END;

trong ®ã cã sö dông FUNCTION FF(x). Khi dïng PPCK b¹n cÇn so¹n riªng mét function FF(x) cho hµm sè trong ph−¬ng tr×nh f(x) = 0. 3.2. Håi quy ®a thøc

Procedure HQDT(npont,m: integer; Y,X:m1; VAR A:m1); (* npont lµ sè ®iÓm thùc nghiÖm x¸c ®Þnh Y vµ X *) (* m lµ bËc cña ®a thøc, A lµ c¸c hÖ sè cña ®a thøc håi quy*)

VAR bm,tampon,i,npont,j,k :integer; ab: real; xx: array [ 1.. 10] of real; sum,sum2 : array [ 0..20] of real; a,aa : array [1..20,1..20] of real;

function ymux(y,x:real): real; VAR kqtg : real; BEGIN kqtg:=x*ln(y); ymux:=exp(kqtg); END; procedure GHPTTT(n:integer; A:m2; VAR X:m1); BEGIN …. END; BEGIN bm:= 2 * m;

for k := 1 to bm do begin {1}

sum[k]:= 0; for i:=1 to npont do sum[k] := sum[k] + ymux(x[i],k);

end; {1} sum[0]:= npont; for k := 0 to m do begin {2}

sum2[k]:= 0; for i:=1 to npont do sum2[k] := sum2[k] + y[i]*ymux(x[i],k);

end; {2} for i:=1 to m+1 do (*cac he so cua he ptrinh tuyen tinh*) begin {3}

for j:=1 to m+1 do Begin {4}

tampon:=bm-i-j+2; a[i,j]:= sum[tampon]; aa[i,j]:=a[i,j]; end; {4} end; {3}

Page 94: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

93

for j:= 1 to m+1 do begin {5}

tampon:=m-j+1; a[j,M+2]:= sum2 [tampon]; aa[j,M+2]:=a[j,M+2];

end; {5} GHPTTT(m+1,AA,X); (* giai he pt tuyen tinh *);

END; 4. C¸c ch−¬ng tr×nh nguån 4.1. TÝnh c©n b»ng ion Fe3+ SCN-

PROGRAM CBION_FE_SCN; (* He Fe3+- SCN- *) LABEL 10; VAR

FX,FFX,C1,C2,epsilon,GAM,W,NDOH,NDH : real; delta,Y,CC1,CC2,sum1,sum2,sum2,sum4,PK : real;

PKK : array[1..6] of real; K,x: array[1..10] of real; i,m,j : integer;

PROCEDURE FUNC(X: real; VAR FX,FFX: real); VAR tamp1,tamp2,tamp2,tamp4 : real; i : integer; BEGIN

sum1 := 0 ; sum2 := 0; sum2 := 0; sum4 := 0; FOR i:= 1 TO 6 DO begin {1}

tamp1:= exp( i * ln ( x ) )* PKK[ i ]; tamp2:= tamp1 / i ; tamp2:=tamp2* i * i/ x; tamp4:=tamp2/i; sum1:=sum1 + tamp1; sum2:=sum2 + tamp2; sum2:=sum2 + tamp2; sum4:=sum4 + tamp4;

end; {1} W:= 1 + sum2 + NDOH/K[7]; FX := X - C2 + X * NDH/K[8] + C1 * sum1/W; FFX:= 1 + NDH/K[8] + C1 * (sum2 * W - sum4*sum1)/W/W; END;

BEGIN Write('Do chinh xac cua loi giai :=?'); Readln (epsilon); Writeln (' nhap hscb:');

for i:=1 to 8 do begin {2}

write('InK[',i,']='); readln( K[i]); K[i]:=exp(K[i]);

end; {2} (*Tap so lieu dung de tinh thu K[1]:=1; K[2]:=5; K[2]:=2; K[4]:=1.5; K[5]:=2; K[6]:=4; K[7]:=10;K[8]:=12; *)

Write (' nhap Nong Do Fe3+'); READLN (C1); write(' nhap pH cua dung dich'); readln ( NDH);

Page 95: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

94

NDH:=exp(-NDH); NDOH:=1.e-14/NDH; Write (' nhap Nong Do SCN- va the tich GIOT '); Readln (C2, GAM); Writeln ('nhap x10 dau'); Readln (x[10]);

(* Vi du x[10] 1.e-5 *) Writeln ('GIA TRI ND CAC ION CAN BANG');

Writeln('FeSCN':12,'FeSCN2':12,'FeSCN2':12,'FeSCN4':12,'FeSCN5':12,'FeSCN6':12);

Writeln('FeOH':20,'HCNS':12,'Fe':12,'SCN':12); {sau lan tinh dau, cac x dau duoc chon la x cua phep tinh truoc } (*tinh PKi*)

for i:=1 to 6 do begin {3} PK:= 1;

For M:= 1 to i do PK:= PK * K[M]; PKK[i]:= 1.0/PK; end; {3} i:=0;

10: FUNC (x[10],FX,FFX); j:=j+1; delta := FX/FFX; X[10] := X[10]- delta; IF abs(delta)> epsilon THEN GOTO 10; x[9]:=C1/W; x[8]:=x[10]*NDH/K[8]; x[7]:=x[9]*NDOH/K[7]; x[1]:=x[9]*x[10]/K[1];

for i:=2 to 6 do x[i]:=x[i-1]*x[10]/K[i]; for i:=1 to 6 do write(x[i]:12); writeln; write('':12); for i:=7 to 10 do write(x[i]:12); writeln; if (j mod 10) = 0 then readln; C2 := C2 + GAM; IF (C2/2) <= C1 THEN GOTO 10; Readln;

END.

4.2. Ch−¬ng tr×nh m« h×nh thùc nghiÖm bËc 2 t©m trùc giao ®Çy ®ñ Program MO_HINH_HOA_THUC_NGHIEM_ BAC_HAI_TAM_TRUC_GIAO_DAY_DU; Uses Crt; LABEL nn2,nn3,nn4; TYPE M1= array [1..60] Of real; im1= Array[1..10] of integer; M2 = Array [1..30,1..38] Of Real; VAR f1,f2,f3,ii,i,n,m,j,o,q,qs,l : integer; s1,r,sfh,ss,so,skq,ssum,ysum,sl,ts,ms,d,v : Real; tb,y,s,mg,bt,kqtn,tts,tms,b : m1; xt,a,kq : m2; c : im1; z : Boolean; ch : char; finput, fout : text;

Page 96: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

95

(*================chuong trinh con nhap so lieu==============*) Procedure Input; BEGIN

Write('Ban nhap so lieu truc tiep (t) hay tu file (f)'); readln(ch); if (ch='f') or (ch='F') then

begin {1} assign(finput,'d:\nhap.dat'); reset(finput); read(finput,n); For J:=2 to N+1 do Read(finput,MG[J]); For J:=2 to N+1 do Read(finput,BT[J]); end {1} else begin {2}

write('xin moi nhap so yeu to (n<=5) anh huong toi phan ung : '); Readln(N); Writeln('Nhap muc goc va khoang bien thien cua cac yeu to anh huong');

For J:=2 to N+1 do Begin {3}

Write('Yeu to anh huong thu ',J-1,' co muc goc: '); Readln(MG[J]); Write(' Khoang bien thien: '); Readln(BT[J]); End; {3} end; {2} END; (****************Chuong trinh con ghi ket qua ra file***********) Procedure ghiketqua; VAR ch, filename:string; BEGIN

Write('Ban co ghi ket qua ra file khong (C/K)?');readln(ch); If (Ch ='C') or (Ch='c') then begin {4}

Write('Ban nhap ten file ghi ket qua (*.txt)'); Readln(filename); Assign(fout,filename); Rewrite(fout); Writeln(fout,' KET QUA'); Writeln(fout,'');

Writeln(fout,'Hang so d la ', D:5:4, ' Hang so phi la ',V:5:4); Writeln(fout,''); Writeln(fout,'LAM THI NGHIEM NHU SAU'); Writeln(fout,''); For I:= 1 to M do For J:= 2 to N+1 do Begin {5}

XT[I,J]:=(MG[J] + A[I,J]*BT[J]); end; {5}

For I:=1 to M do Begin {6} Write(fout,'Thi nghiem thu ',I:2) ; For J:=2 to N+1 do Write(fout, XT[I,J]:6:3); Writeln(fout,''); End; {6} Writeln(fout,'DANH GIA DO LAP LAI CUA THI NGHIEM');

Page 97: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

96

Writeln(fout,''); If Z THEN Begin {7}

Writeln (fout,'Sai so thi nghiem nho hon sai so toan bo thi nghiem'); Writeln(fout,' Thi nghiem co tinh lap lai'); End; {7} Writeln(fout,''); Writeln(fout,'*** MA TRAN THUC NGHIEM ***');Writeln(fout,''); For i:=1 to M do Begin {8} For J:=1 to O do Write(fout,A[I,J]:6:2); Write(fout,KQTN[I]:6:2); Writeln(fout); End; {8}

Writeln(fout,'TIM CAC HE SO B PHUONG TRINH HOI QUY');Writeln(fout,'');

For J:=1 to O do Begin {9}

TS:=0; MS:=0; For I:=1 TO M DO Begin {10}

TS:=TS+(A[I,J]*KQTN[I]); MS:=MS+(A[I,J]*A[I,J]);

End; {10} TTS[J]:=TS; TMS[J]:=MS; B[J]:=TTS[J]/(TMS[J]); End; {9} For j:=1 to O do Begin {11}

Write(fout,'He so B[',J,']= ', B[J]:6:3) ; Writeln(fout,''); End; {11} SO:=SQRT(SSUM/SQR(M)); TB[1]:=12.706; TB[2]:=4.303; TB[3]:=3.182; TB[4]:=2.776; TB[5]:=2.571; TB[10]:=2.228; TB[27]:=2.050;

TB[15]:=2.131; TB[9]:=2.262; TB[18]:=2.101; TB[30]:=1.960; TB[25]:=2.060;

If F2>30 then TB[F2]:=1.960; SS:=SO*TB[F2]; For J:=1 to O do If (ABS(B[J])< ABS(SS)) then Writeln(fout,' Phai loai he so B[',J,']'); L:=0; For J:=1 to O do If (ABS(B[J])> ABS(SS)) then Begin {12} Writeln(fout,'He so hoi quy con lai la: B[',J,']= ',B[J]:7:3); L:=L+1; End; {12} Writeln(fout,''); Writeln(fout,'So he so co y nghia la ',l);

Close(fout); end; {4}

Page 98: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

97

END; (*======ham x mu y==============================*) Function mu(x,y:integer):integer; VAR tg,q:integer; BEGIN tg:=1; For q:=1 to y do tg:=tg*x; mu:=tg; END; (*======Ham tinh giai thua=========================*) Function Gthua(w:integer):integer; VAR gt,i:integer; BEGIN If w=0 then gt:=1 else Begin {13}

gt:=1; For i:=1 to w do gt:= gt*i; End; {13} Gthua:=gt; END; Function t(i,k:integer):integer; VAR tt,t1,t2,q:integer; BEGIN t1:=i Div k; t2:=I Mod k; If t2=0 then tt:=t1 else tt:=t1+1; t:=tt; END; Procedure XDMTTN(Var a:m2); Label 11; VAR KT,U:integer; BEGIN O:=1+N; For I:=1 to N do Begin {14} C[I]:=(Gthua(N) DIV (Gthua(I)* Gthua(N-I))); O:=O+C[i]; End; {14} Writeln('So he so B can tim la: ',O); For I:=1 to M do A[I,1]:= 1; For J:=2 to N+1 do Begin {15} KT:=MU(2,J-2); For I:=1 to Q do Begin {16}

U:= T(I,KT); A[I,J]:= MU(-1,U); End; {16} End; {15} Case n of 1:goto 11;

Page 99: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

98

2:Begin {17} For I:= Q+1 to M do Begin {18} For J:=2 to N+1 do Begin {19} if J=2 then

Begin {20} A[Q+1,J]:=D; A[Q+2,J]:=-D;

End; {20} if J=3 then

Begin {21} A[Q+3,J]:=D; A[Q+4,J]:=-D;

End {21} else A[I,J]:=0;

End; {19} End; {18} For I:= 1 to M do Begin {22} A[I,4]:=A[I,2]*A[I,3]; A[I,5]:=(A[I,2]*A[I,2])-V; A[I,6]:=(A[I,3]*A[I,3])-V; End; {22} End; {17} 3:Begin {23} For I:= Q+1 to M do Begin {24} For J:=2 to N+1 do Begin {25} If J=2 Then

Begin {26} A[Q+1,J]:=D; A[Q+2,J]:=-D;

End; {26} If J=3 Then

Begin {27} A[Q+3,J]:=D; A[Q+4,J]:=-D;

End; {27} If J=4 Then

Begin {28} A[Q+5,J]:=D; A[Q+6,J]:=-D;

End {28} else A[I,J]:=0;

End; {25} End; {24} For I:= 1 to M do Begin {29} A[I,5]:=A[I,2]*A[I,3]; A[I,6]:=A[I,2]*A[I,4]; A[I,7]:=A[I,4]*A[I,3]; A[I,8]:=A[I,5]*A[I,4]; A[I,9]:=(A[I,2]*A[I,2])-V; A[I,10]:=(A[I,3]*A[I,3])-V;

A[I,11]:=(A[I,4]*A[I,4])-V; End; {29} end; {23}

Page 100: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

99

4:Begin {30} For I:= Q+1 to M do Begin {31} For J:=2 to N+1 do Begin {32} If J=2 Then

Begin {33} A[Q+1,J]:=D; A[Q+2,J]:=-D;

End; {33} If J=3 Then

Begin {34} A[Q+3,J]:=D; A[Q+4,J]:=-D;

End; {34} If J=4 Then

Begin {35} A[Q+5,J]:=D; A[Q+6,J]:=-D;

End; {35} If J=5 Then

Begin {36} A[Q+7,J]:=D; A[Q+8,J]:=-D;

End {36} Else A[I,J]:=0;

End; {32} End; {31} For I := 1 to M do Begin {37} A[I,6]:=A[I,2]*A[I,3]; A[I,7]:=A[I,2]*A[I,4]; A[I,8]:=A[I,2]*A[I,5]; A[I,9]:=A[I,4]*A[I,3]; A[I,10]:=A[I,5]*A[I,3]; A[I,11]:=A[I,4]*A[I,5]; A[I,12]:=A[I,4]*A[I,6]; A[I,13]:=A[I,6]*A[I,5]; A[I,14]:=A[I,2]*A[I,11]; A[I,15]:=A[I,11]*A[I,3]; A[I,16]:=A[I,11]*A[I,6]; A[I,17]:=(A[I,2]*A[I,2])-V; A[I,18]:=(A[I,3]*A[I,3])-V; A[I,19]:=(A[I,4]*A[I,4])-V; A[I,20]:=(A[I,5]*A[I,5])-V; End; {37} End; {30} 5:Begin {38} For I:= Q+1 to M do Begin {39} For J:=2 to N+1 do Begin {40} If J=2 Then

Begin {41} A[Q+1,J]:=D; A[Q+2,J]:=-D;

End; {41} If J=3 Then

Begin {42} A[Q+3,J]:=D; A[Q+4,J]:=-D;

End; {42} If J=4 Then

Begin {43}

Page 101: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

100

A[Q+5,J]:=D; A[Q+6,J]:=-D; End; {43}

If J=5 Then Begin {44}

A[Q+7,J]:=D; A[Q+8,J]:=-D; End; {44}

If J=6 Then Begin {45}

A[Q+9,J]:=D; A[Q+10,J]:=-D; End {45} Else A[I,J]:=0;

End; {40} End; {39} For I:= 1 to M do Begin {46} A[I,7]:=A[I,2]*A[I,3]; A[I,8]:=A[I,2]*A[I,5]; A[I,9]:=A[I,4]*A[I,3]; A[I,10]:=A[I,2]*A[I,6]; A[I,11]:=A[I,4]*A[I,3]; A[I,12]:=A[I,5]*A[I,3]; A[I,13]:=A[I,6]*A[I,3]; A[I,14]:=A[I,4]*A[I,5]; A[I,15]:=A[I,4]*A[I,6]; A[I,16]:=A[I,5]*A[I,6]; A[I,17]:=A[I,7]*A[I,4]; A[I,18]:=A[I,7]*A[I,5]; A[I,19]:=A[I,7]*A[I,6]; A[I,20]:=A[I,8]*A[I,5]; A[I,21]:=A[I,8]*A[I,6]; A[I,22]:=A[I,9]*A[I,6]; A[I,23]:=A[I,11]*A[I,5]; A[I,24]:=A[I,11]*A[I,6]; A[I,25]:=A[I,12]*A[I,6]; A[I,26]:=A[I,14]*A[I,6]; A[I,27]:=A[I,14]*A[I,7]; A[I,28]:=A[I,15]*A[I,7]; A[I,29]:=A[I,11]*A[I,6]; A[I,30]:=A[I,7]*A[I,16]; A[I,31]:=A[I,8]*A[I,16]; A[I,32]:=A[I,27]*A[I,6]; A[I,33]:=(A[I,2]*A[I,2])-V; A[I,36]:=(A[I,5]*A[I,5])-V; A[I,34]:=(A[I,3]*A[I,3])-V; A[I,37]:=(A[I,6]*A[I,6])-V; A[I,35]:=(A[I,4]*A[I,4])-V; End; {46} End; {38} END; 11: Writeln; Writeln(' MA TRAN THUC NGHIEM NHU SAU'); For I:= 1 to M do Begin {47} For J:= 1 to O do Write('A[',I,',',J,'] = ', A[I,J]:5:3); Writeln; End; {47} END; Procedure nhapketqua; VAR sqk,smax,gg:Real; g,gt: m2; BEGIN Write('So lan lap thuc nghiem o tam la: '); Readln(II); Writeln('CAC THI NGHIEM O TAM ') ; For J:=1 to II do Begin {48}

Write('KQ[M,',J,']='); Readln(KQ[M,J]); End; {48}

Page 102: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

101

SKQ:=0; For J:=1 to II do Begin {49}

SKQ:=SKQ+KQ[M,J]; End; {49}

KQ[M,II+1]:= SKQ/II; KQTN[M]:=KQ[M,II+1]; Writeln('KET QUA THI NGHIEM THU DUOC LA:'); For i:=1 to m-1 do Begin {50}

Write('KQTN[',i,']= '); Readln(kqtn[i]); End; {50}

Writeln('KQTN[',m,']= ',kqtn[m]:5:3); If II=1 then Begin {51} Writeln('Nen lam lap thi nghiem de co ket qua chinh xac hon'); Exit; End; {51} SSUM:= 0; For J:=1 to II do Begin {52}

S[I]:=SQR(KQ[M,J]-KQ[M,II+1]); End; {52}

SSUM:= SSUM+ S[I]; SMAX:= S[1]; For I:=2 to II do If SMAX<S[I] then SMAX:=S[I]; GG:=SMAX/SSUM; F1:=II-1; F2:= M*F1; Gt[F1,F2]:=GG; {CAC GIA TRI TRA BANG CHUAN G VOI Q = 0.05}

G[1,5]:=0.8412; G[1,9]:=0.6385; G[1,15]:=0.4709; G[1,25]:=0.3400; G[2,10]:=0.4450; G[2,18]:=0.2900 ; G[2,30]:=0.1980; G[3,15]:=0.2758; G[3,27]:=0.1742; G[4,20]:=0.1921; G[4,36]:=0.1400;

If (Gt[F1,F2]<G[F1,F2]) then Z:=TRUE; END; Procedure PTHQ; VAR Y1,Y2:M1; F3 :integer; FFT :real; FT,FB:M2; BEGIN

Writeln('DANH GIA TINH PHU HOP CUA PHUONG TRINH HOI QUY'); For I:=1 to M do Begin {53} Y1[I]:=0; Y2[I]:=0; For J:=1 to O do Begin {54}

Y1[I]:=Y1[I]+B[J]*A[I,J]; If ABS(B[J])<ABS(SS) then Y2[I]:=Y2[I]+B[J]*A[I,J]; End; {54}

Page 103: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

102

Y[I]:=Y1[I]-Y2[I]; End; {53} For I:=1 to M do Begin {55} Write('KQLT thu ',I:2,Y[I]:6:3,' KQTN ',KQTN[I]:6:3); Writeln; End; {55} YSUM:=0; For I:= 1 to M do YSUM:= YSUM+ SQR(KQTN[I]- Y[I]); F3:=M-L; SFH:=(1/F3)*YSUM; FFT:=SFH/(SSUM/F1); FT[F3,F1]:=FFT; FB[2,1]:=199.5; FB[2,2]:=19.00; FB[2,3]:=9.55; FB[3,1]:=215.7; FB[3,2]:=19.16; FB[3,3]:=9.28; FB[4,1]:=224.6; FB[4,2]:=19.25; FB[5,1]:=230.2; FB[5,2]:=19.30; FB[4,3]:=19.12; FB[5,3]:=19.01; FB[6,1]:=234.0; FB[6,2]:=19.33; FB[7,1]:=236.8; FB[8,1]:=238.9; FB[7,2]:=19.35; FB[8,2]:=19.37; FB[9,1]:=240.5; FB[9,2]:=19.38; FB[10,1]:=241.9; FB[12,1]:=243.9; FB[12,2]:=19.41; FB[10,2]:=19.40; R:=SSUM/(YSUM+SSUM); Writeln('He so tuong quan la: ',R:8:3); Write('Danh gia muc do tuong quan: '); If R<0.7 then Writeln('Kem tuong quan'); If (R>=0.7) and (R<0.8) then Writeln('Kha tuong quan'); If (R>=0.8) and (R<0.9) then Writeln('Tuong quan tot'); If R>=0.9 then Writeln('Rat tuong quan') ; SL:=SQRT(YSUM/(M-L)); Writeln('Do lech chuan SL :',SL:8:3); If FT[F3,F1]<FB[F3,F1] then Begin {56}

Writeln('MO HINH MO TA DUNG THUC NGHIEM'); End {56}

Else Writeln('MO HINH MO TA KHONG DUNG THUC NGHIEM. PHAI LAM LAI ');

END; (*======CHUONG TRINH CHINH=========================*) BEGIN

CLRSCR; GOTOXY(20,5);Writeln('DAI HOC THAI NGUYEN '); GOTOXY(18,8);Writeln('DAI HOC SU PHAM '); GOTOXY(26,9);Writeln('KHOA HOA HOC'); GOTOXY(12,15);Writeln('THUC HANH MON TIN HOC UNG DUNG TRONG

HOA HOC'); GOTOXY(8,17);Writeln('MO HINH HOA THUC NGHIEM BAC HAI TAM TRUC

GIAO DAY DU '); GOTOXY(22,25);Writeln('Nguoi thuc hien: Mai xuan Truong '); GOTOXY(22,27);Writeln('Bo mon: Hoa phan tich'); GOTOXY(20,35);Writeln('XIN MOI AN ENTER DE BAT DAU CHUONG TRINH '); Readln; CLRSCR;

Page 104: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

103

input; Q:=MU(2,N) ; Writeln('So thi nghiem ma tran goc la ',Q); QS:=2*N; Writeln('So thi nghiem diem sao la ',QS); M:=Q+QS+1; Writeln('So thi nghiem can lam la ',M); case n of 1: exit; 2: Begin d:=1.000; v:=0.667; End; 3: Begin d:=1.1254; v:=0.7303; end; 4: begin d:=1.4142; v:=0.8000; End; 5: Begin d:=1.7244; v:=0.8433; End; End; Writeln('Hang so d la ', D:5:4, ' Hang so phi la ',V:5:4); XDMTTN(A); Writeln('LAM THI NGHIEM NHU SAU'); For I:= 1 to M do For J:= 2 to N+1 do Begin XT[I,J]:=(MG[J] + A[I,J]*BT[J]); end; For I:=1 to M do Begin

Write('Thi nghiem thu ',I:2) ; For J:=2 to N+1 do Write( XT[I,J]:6:3); Writeln;

End; Readln; nhapketqua; If II=1 then GOTO nn2; Writeln('DANH GIA DO LAP LAI CUA THI NGHIEM'); If Z THEN Begin

Writeln ('Sai so thi nghiem nho hon sai so toan bo thi nghiem'); Writeln(' Thi nghiem co tinh lap lai');

End Else Begin

Writeln('Sai so thi nghiem nho hon sai so toan bo thi nghiem'); Writeln(' BAN PHAI LAM THEM THI NGIEM'); GOTO nn3;

End; CLRSCR; Writeln; nn2:Writeln('*** MA TRAN THUC NGHIEM ***'); For i:=1 to M do Begin

For J:=1 to O do Write(A[I,J]:6:2); Write(KQTN[I]:6:2); Writeln;

End; Writeln('TIM CAC HE SO B PHUONG TRINH HOI QUY'); For J:=1 to O do

Page 105: Bài giảng tin học ứng dụng trong hóa học - Đại học Thái Nguyên

TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn

104

Begin TS:=0; MS:=0; For I:=1 TO M DO Begin

TS:=TS+(A[I,J]*KQTN[I]); MS:=MS+(A[I,J]*A[I,J]);

End; TTS[J]:=TS; TMS[J]:=MS; B[J]:=TTS[J]/(TMS[J]);

End; For j:=1 TO O DO Begin

Write('He so B[',J,']= ', B[J]:6:3) ; Writeln; Readln;

End; If II=1 then GOTO nn3; SO:=SQRT(SSUM/SQR(M)); TB[1]:=12.706; TB[2]:=4.303; TB[3]:=3.182; TB[4]:=2.776; TB[5]:=2.571; TB[10]:=2.228; TB[27]:=2.050; TB[15]:=2.131; TB[9]:=2.262; TB[18]:=2.101; TB[30]:=1.960; TB[25]:=2.060; If F2>30 then TB[F2]:=1.960; SS:=SO*TB[F2]; For J:=1 to O do If (ABS(B[J])< ABS(SS)) then Begin Writeln(' Phai loai he so B[',J,']'); end; Readln; L:=0; For J:=1 to O do If (ABS(B[J])> ABS(SS)) then Begin

Writeln('He so hoi quy con lai la: B[',J,']= ',B[J]:7:3); L:=L+1;

End; Writeln('So he so co y nghia la ',l); PTHQ; ghiketqua; nn3: writeln('Xin chan thanh cam on'); Writeln(CHR(7)); Readln; END.