Xem mẫu

  1. ®¹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
  2. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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ã. 1
  3. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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ö 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) 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 ThiÕt bÞ vµo CPU ThiÕt bÞ ra Bé nhí ROM Bµn phÝm Bé nhí RAM Mµn h×nh Chuét Bé xö lý trung t©m M¸y in æ ®Üa Bé sè häc logic M¸y Scan Bé ®iÒu khiÓn æ ®Üa 2
  4. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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 3
  5. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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, . . . 4
  6. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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. 5
  7. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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. 6
  8. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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æ 7
  9. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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. 8
  10. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn + 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. 9
  11. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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: PROGRAM tªn ch−¬ng tr×nh; 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¶ : LABEL sè nguyªn; VÝ dô: LABEL 10, 20, 123; m« t¶ 3 nh·n dïng trong khèi. 10
  12. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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: CONST tªn h»ng 1 = gÝa trÞ h»ng 1; tªn h»ng 2 = gÝa trÞ h»ng 2; 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 : 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); 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¶: 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; 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). 11
  13. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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: 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; hoÆc khai b¸o theo kiÓu (TYPE) råi sau ®ã míi khai b¸o biÕn nh− sau: 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 ; 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: 12
  14. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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: BEGIN PhÇn kÕt thóc PhÇn kÕt thóc bao gåm tËp hîp lÖnh READLN; END. 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 : Tªn biÕn := biÓu thøc hoÆc biÕn hoÆc h»ng; 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 GOTO nh·n; 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). 13
  15. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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¶: WRITE(‘Th«ng b¸o’ hoÆc biÕn); READ(biÕn); 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 WRITELN(‘Th«ng b¸o’ hoÆc biÕn); READLN(biÕn); 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. 14
  16. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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Õ: IF THEN ELSE ; 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. 15
  17. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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: IF THEN ; 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. IF 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; 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 16
  18. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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
  19. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn sum2:=0; 1: if (i mod 2 =0) then sum1:=sum1+a[i] else sum2:=sum2+a[i]; i:=i+1; if i
  20. TS Mai Xu©n Tr−êng - Tr−êng §¹i häc S− ph¹m - §¹i häc Th¸i Nguyªn 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. 19
nguon tai.lieu . vn