§¹i häc Quèc gia Hµ Néi Tr−êng §¹i häc Khoa häc Tù nhiªn −−−−−W X−−−−− Phan V¨n T©n Ng«n ng÷ lËp tr×nh Fortran 90 Hµ Néi − 2005 Môc lôc Lêi giíi thiÖu. Nh÷ng yÕu tè c¬ b¶n cña ng«n ng÷ FORTRAN .1 Ch¹y mét ch−¬ng tr×nh FORTRAN.2 CÊu tróc chung cña mét ch−¬ng tr×nh FORTRAN .3 CÊu tróc c©u lÖnh .1 ý nghÜa cña dÊu c¸ch (Blank) .2 Lêi chó thÝch .3 Dßng nèi tiÕp .3 PhÐp to¸n trªn c¸c kiÓu d÷ liÖu .7 Qui t¾c kiÓu Èn .8 Phong c¸ch lËp tr×nh .9 BiÓu thøc sè .1 PhÐp chia víi sè nguyªn .2 BiÓu thøc hçn hîp. G¸n h»ng, g¸n biÓu thøc .11 LÖnh vµo ra ®¬n gi¶n .2 §äc d÷ liÖu tõ file TEXT.3 LÖnh kÕt xuÊt d÷ liÖu .4 KÕt xuÊt ra m¸y in.12 Sö dông hµm trong fortran.37 Bµi tËp ch−¬ng 1. C¸c c©u lÖnh c¬ b¶n cña Fortran .1 LÖnh chu tr×nh (DO Loops) .2 LÖnh rÏ nh¸nh víi IF .5 LÖnh nh¶y v« ®iÒu kiÖn GOTO .6 LÖnh IF sè häc.3 KÕt hîp DO vµ IF .4 RÏ nh¸nh víi cÊu tróc SELECT CASE .5 Thao t¸c víi h»ng vµ biÕn ký tù (CHARACTER).58 Bµi tËp ch−¬ng 2.
C¸c cÊu tróc më réng.1 Chu tr×nh DO tæng qu¸t vµ chu tr×nh DO lång nhau .2 CÊu tróc IF tæng qu¸t vµ cÊu tróc IF lång nhau .3 Chu tr×nh ngÇm.4 §Þnh d¹ng d÷ liÖu b»ng lÖnh FORMAT .5 Chu tr×nh lÆp kh«ng x¸c ®Þnh.1 CÊu tróc kÕt hîp IF vµ GOTO.2 CÊu tróc DO vµ EXIT .3 CÊu tróc DO WHILE…END DO.5 Mét sè vÝ dô vÒ chu tr×nh lÆp kh«ng x¸c ®Þnh .75 Bµi tËp ch−¬ng 3. Ch−¬ng tr×nh con (SUBROUTINE vµ FUNCTION) vµ modul .2 Th− viÖn c¸c hµm trong .3 C¸c ch−¬ng tr×nh con trong.2 Thñ tôc trong (Internal SUBROUTINE).5 Mét sè vÝ dô vÒ ch−¬ng tr×nh con trong.6 BiÕn toµn côc vµ biÕn ®Þa ph−¬ng.7 §Þnh nghÜa hµm b»ng c©u lÖnh ®¬n .8 Ch−¬ng tr×nh con ngoµi.2 Khai b¸o khèi giao diÖn (INTERFACE BLOCK) .9 C¸c thuéc tÝnh cña ®èi sè .1 Thuéc tÝnh INTENT .2 Thuéc tÝnh OPTIONAL .3 Thuéc tÝnh SAVE .99 Bµi tËp ch−¬ng 4.1 Kh¸i niÖm vÒ m¶ng trong FORTRAN .3 L−u tr÷ m¶ng trong bé nhí vµ truy cËp ®Õn c¸c phÇn tö m¶ng .1 Sö dông lÖnh DATA ®Ó khëi t¹o m¶ng .2 BiÓu thøc m¶ng.3 CÊu tróc WHERE.5 KiÓu con trá .1 Tr¹ng th¸i con trá .2 CÊp ph¸t vµ gi¶i phãng biÕn con trá .6 Hµm tr¶ vÒ nhiÒu gi¸ trÞ .115 Bµi tËp ch−¬ng 5.1 Khai b¸o biÕn ký tù .4 PhÐp to¸n gép x©u ký tù .5 T¹o ®Þnh d¹ng FORMAT b»ng x©u ký tù.128 Bµi tËp ch−¬ng 6.2 Ph©n lo¹i file .1 File cã ®Þnh d¹ng (Formatted Files) .2 File kh«ng ®Þnh d¹ng (Unformatted Files).3 File d¹ng nhÞ ph©n (Binary Files).4 File truy cËp tuÇn tù (Sequential-Access Files) .5 File truy cËp trùc tiÕp (Direct-Access Files) .3 Tæ chøc d÷ liÖu trong file .1 File truy cËp tuÇn tù cã ®Þnh d¹ng .2 File truy cËp trùc tiÕp cã ®Þnh d¹ng.3 File truy cËp tuÇn tù kh«ng ®Þnh d¹ng.4 File truy cËp trùc tiÕp kh«ng ®Þnh d¹ng.5 File truy cËp tuÇn tù d¹ng nhÞ ph©n .6 File truy cËp trùc tiÕp d¹ng nhÞ ph©n.4 LÖnh më (OPEN) vµ ®ãng (CLOSE) file.1 LÖnh më file .2 LÖnh ®ãng file .5 C¸c lÖnh vµo ra d÷ liÖu víi file .1 LÖnh ®äc d÷ liÖu tõ file (READ).2 LÖnh ghi d÷ liÖu ra file (WRITE) .3 Vµo ra d÷ liÖu víi NAMELIST.4 Mét sè vÝ dô thao t¸c víi file .151 Bµi tËp ch−¬ng 7. Mét sè kiÕn thøc më réng.1 Khai b¸o dïng chung bé nhí .2 Ch−¬ng tr×nh con BLOCK DATA .5 §iÒu khiÓn con trá file.6 CÊu tróc d÷ liÖu do ng−êi dïng ®Þnh nghÜa .163 Bµi tËp ch−¬ng 8. Mét sè bµi to¸n th«ng dông .1 TÝnh trung b×nh sè häc cña mét chuçi sè liÖu.2 TÝnh ®é lÖch chuÈn cña mét chuçi sè liÖu.3 S¾p xÕp chuçi theo thø tù t¨ng dÇn vµ x¸c ®Þnh gi¸ trÞ lín nhÊt, nhá nhÊt cña chuçi .4 X¸c ®Þnh c¸c ph©n vÞ cña chuçi .5 TÝnh c¸c m«men ph©n bè.6 TÝnh mét sè ®Æc tr−ng thèng kª kh¸c .7 TÝnh m«men t−¬ng quan vµ hÖ sè t−¬ng quan .2 Mét sè bµi to¸n vÒ ma trËn.
TÝch hai ma trËn. §Þnh thøc cña ma trËn. PhÇn phô ®¹i sè. Ma trËn nghÞch ®¶o.
Gi¶i hÖ ph−¬ng tr×nh ®¹i sè tuyÕn tÝnh .3 T−¬ng quan vµ håi qui tuyÕn tÝnh. X©y dùng ph−¬ng tr×nh håi qui tuyÕn tÝnh. TÝnh hÖ sè t−¬ng quan riªng. TÝnh hÖ sè t−¬ng quan béi .4 Ph−¬ng ph¸p sè.
T×m nghiÖm ph−¬ng tr×nh. TÝnh tÝch ph©n x¸c ®Þnh. Gi¶i ph−¬ng tr×nh truyÒn nhiÖt. X©y dùng c¬ së d÷ liÖu .210 Bµi tËp ch−¬ng 9.216 Tµi liÖu tham kh¶o.
Tr×nh tù c¸c c©u lÖnh trong mét ®¬n vÞ ch−¬ng tr×nh Fortran. Tãm t¾t c¸c c©u lÖnh cña Fortran. Mét sè hµm vµ thñ thôc cña Fortran .221 6 Lêi giíi thiÖu Trong nh÷ng n¨m gÇn ®©y, cïng víi sù ph¸t triÓn m¹nh mÏ cña C«ng nghÖ Th«ng tin vµ §iÖn tö ViÔn th«ng, nhiÒu ch−¬ng tr×nh, phÇn mÒm m¸y tÝnh ®· ra ®êi vµ ®−îc øng dông réng r·i, gãp phÇn thóc ®Èy sù ph¸t triÓn kinh tÕ, x· héi. Trong sè ®ã, c¸c ng«n ng÷ lËp tr×nh còng ngµy cµng ®−îc ph¸t triÓn vµ phæ biÕn.
Ng«n ng÷ lËp tr×nh Fortran còng kh«ng ph¶i lµ mét ngo¹i lÖ. Tõ nh÷ng phiªn b¶n ®Çu tiªn víi nhiÒu h¹n chÕ cho ®Õn nay Fortran lu«n lµ mét trong nh÷ng ng«n ng÷ th«ng dông rÊt ®−îc −a chuéng trong lËp tr×nh gi¶i c¸c bµi to¸n khoa häc kü thuËt. Víi nhiÒu thÕ m¹nh v−ît tréi so víi c¸c ng«n ng÷ lËp tr×nh kh¸c, Fortran th−êng ®−îc øng dông ®Ó gi¶i c¸c bµi to¸n lín, ®ßi hái ph¶i xö lý tÝnh to¸n nhiÒu, nhÊt lµ tÝnh to¸n song song. Tr−íc nh÷ng n¨m chÝn m−¬i cña thÕ kû hai m−¬i, khi mµ thÕ hÖ m¸y PC h·y cßn míi l¹ ë ViÖt Nam, hÇu nh− c¸c bµi to¸n øng dông ®Òu ®−îc ch¹y trªn c¸c m¸y tÝnh lín (MINSK−32, EC−1022, EC−1035, IBM−360,…) víi c¸c ch−¬ng tr×nh th−êng ®−îc lËp b»ng ng«n ng÷ Fortran.
Song, khi c¸c m¸y PC ngµy cµng phæ biÕn h¬n, víi nhiÒu phÇn mÒm tiÖn dông ®i kÌm, thªm vµo ®ã lµ sù ®ßi hái vÒ cÊu h×nh m¸y tÝnh cña Fortran, ng«n ng÷ Fortran hÇu nh− ®· bÞ l·ng quªn trong mét thêi gian kh¸ dµi. NhiÒu ng−êi ®· ph¶i thay ®æi thãi quen sö dông Fortran, tù thÝch øng b»ng c¸ch chuyÓn sang tiÕp cËn víi c¸c ng«n ng÷ lËp tr×nh kh¸c hoÆc chuyÓn h−íng nghiªn cøu. Sù thiÕu th«ng tin cËp nhËt ®· lµm nhiÒu ng−êi t−ëng r»ng Fortran lµ mét ng«n ng÷ “cæ” råi, kh«ng ai dïng n÷a. Nh−ng kh«ng ph¶i nh− vËy.
Tr−íc sù ®ßi hái ph¶i gi¶i quyÕt nh÷ng bµi to¸n lín (chóng t«i muèn nhÊn m¹nh líp c¸c bµi to¸n khoa häc kü thuËt), ch¹y ë chÕ ®é thêi gian thùc (Real−time), Fortran ®· ngµy cµng ®−îc ph¸t triÓn vµ hoµn thiÖn víi nhiÒu ®Æc ®iÓm míi. §iÒu ®ã ®· cuèn hót nhiÒu ng−êi quay vÒ víi Fortran. Mét lý do kh¸c cã t¸c ®éng kh«ng nhá, khiÕn ng−êi ta tiÕp tôc lùa chän ng«n ng÷ lËp tr×nh Fortran lµ qu¸ tr×nh quan hÖ hîp t¸c quèc tÕ. Khi lµm viÖc víi c¸c ®èi t¸c n−íc ngoµi, trong nhiÒu lÜnh vùc hÇu hÕt c¸c ch−¬ng tr×nh ®−îc viÕt b»ng ng«n ng÷ Fortran, nÕu kh«ng biÕt vÒ nã, ®ång nghÜa víi viÖc ®«i bªn kh«ng cïng “tiÕng nãi”; vµ do ®ã cã thÓ dÉn ®Õn sù bÊt lîi, kÐm hiÖu qu¶ khi lµm viÖc víi nhau.
NhËn thøc ®−îc tÇm quan träng cña vÊn ®Ò nµy, nh÷ng n¨m gÇn ®©y, ng«n ng÷ lËp tr×nh Fortran ®· ®−îc ®−a vµo ch−¬ng tr×nh ®µo t¹o cña mét sè khoa trong tr−êng §¹i häc Khoa häc Tù nhiªn, §¹i häc Quèc gia Hµ Néi. MÆt kh¸c, ®èi víi nhiÒu nhµ khoa häc, hiÖn nay ng«n ng÷ Fortran ®· trë thµnh mét trong nh÷ng c«ng cô lµm viÖc kh«ng thÓ thiÕu, vµ tÊt nhiªn trong sè ®ã cã chóng t«i. Bëi vËy, quyÓn s¸ch nµy ra ®êi víi kú väng cña chóng t«i lµ cung cÊp cho b¹n ®äc nh÷ng kiÕn thøc c¬ b¶n nhÊt vÒ ng«n ng÷ lËp tr×nh Fortran 90. Qua ®ã b¹n ®äc cã thÓ øng dông nã mét c¸ch hiÖu qu¶ trong c¸c lÜnh vùc chuyªn m«n cña m×nh.
QuyÓn s¸ch cã thÓ ®−îc dïng lµm gi¸o tr×nh gi¶ng d¹y ë bËc ®¹i häc vµ sau ®¹i häc cho ngµnh KhÝ t−îng Thñy v¨n vµ H¶i d−¬ng häc, tr−êng §¹i häc Khoa häc Tù nhiªn, §¹i häc Quèc gia Hµ 7 Néi. Tuy nhiªn chóng t«i còng mong muèn nã sÏ gióp cho sinh viªn c¸c bËc ®µo t¹o thuéc c¸c ngµnh khoa häc kh¸c, nh− VËt lý häc, Hãa häc, To¸n häc trong tr−êng §¹i häc Khoa häc Tù nhiªn cã thªm mét tµi liÖu tham kh¶o bæ Ých trong qu¸ tr×nh häc tËp t¹i tr−êng. QuyÓn s¸ch còng cã thÓ lµm tµi liÖu tham kh¶o cho c¸c c¸n bé, kü s−, c¸c nhµ nghiªn cøu thuéc nhiÒu lÜnh vùc kh¸c nhau. Trong qu¸ tr×nh biªn so¹n quyÓn s¸ch, mét sè ®ång nghiÖp ®· ®Ò xuÊt chóng t«i ®−a thªm vµo phÇn ®å häa cña Fortran.
Mét sè kh¸c l¹i ®Ò nghÞ g¾n phÇn giao diÖn gi÷a nh÷ng kÕt qu¶ tÝnh to¸n kÕt xuÊt víi mét sè phÇn mÒm ®å häa kh¸c, nh− GrADS, NCAR Graphics,… Chóng t«i xin ch©n thµnh c¸m ¬n vµ ghi nhËn nh÷ng ý kiÕn ®ãng gãp quÝ b¸u ®ã. NhËn thÊy r»ng phÇn ®å häa cña Fortran chØ ®−îc tÝch hîp trong mét sè phiªn b¶n ch¹y trªn m«i tr−êng Microsoft Windows; cßn ®Ó g¾n kÕt c¸c file kÕt xuÊt cña Fortran víi c¸c phÇn mÒm ®å häa kh¸c Ýt nhÊt cÇn ph¶i cã mét sè kiÕn thøc c¬ b¶n vÒ c¸c phÇn mÒm nµy. V× khu«n khæ quyÓn s¸ch cã h¹n, chóng t«i sÏ cè g¾ng tr×nh bµy nh÷ng néi dung trªn trong mét Ên phÈm kh¸c trong t−¬ng lai. MÆc dï ®· cè g¾ng chuyÓn t¶i néi dung quyÓn s¸ch sao cho cã thÓ ®¸p øng ®−îc nhiÒu ®èi t−îng, tõ nh÷ng ng−êi míi lµm quen cho ®Õn nh÷ng ng−êi ®· tõng cã qu¸ tr×nh lµm viÖc nhÊt ®Þnh víi ng«n ng÷ Fortran, víi bè côc tõ dÔ ®Õn khã, tõ ®¬n gi¶n ®Õn phøc t¹p, song do cßn nhiÒu h¹n chÕ vÒ kinh nghiÖm vµ kiÕn thøc, quyÓn s¸ch còng kh«ng tr¸nh khái nh÷ng khiÕm khuyÕt.
Chóng t«i rÊt mong nhËn ®−îc sù ®ãng gãp ý kiÕn cña tÊt c¶ c¸c b¹n ®äc. §Ó hoµn thµnh quyÓn s¸ch nµy, chóng t«i nhËn ®−îc sù hç trî c¶ vÒ tinh thÇn vµ vËt chÊt tõ phÝa tr−êng §¹i häc Khoa häc Tù nhiªn, §¹i häc Quèc gia Hµ Néi, ®Æc biÖt tõ c¸c ®ång nghiÖp thuéc Khoa KhÝ t−îng Thñy v¨n vµ H¶i d−¬ng häc cña tr−êng, n¬i chóng t«i g¾n bã trong c«ng t¸c gi¶ng d¹y vµ ho¹t ®éng khoa häc hµng chôc n¨m nay. Nh©n ®©y chóng t«i xin bµy tá lßng biÕt ¬n ch©n thµnh vµ lêi c¸m ¬n s©u s¾c. Hµ Néi, 2−2005 T¸c gi¶ 8 Më ®Çu TËp hîp c¸c qui t¾c ®Æc biÖt ®Ó m· ho¸ nh÷ng kiÕn thøc cho m¸y tÝnh hiÓu ®−îc gäi lµ ng«n ng÷ lËp tr×nh.
Cã rÊt nhiÒu ng«n ng÷ nh− vËy, vÝ dô FORTRAN, BASIC, Pascal, C,. FORTRAN lµ tªn cÊu t¹o tõ FORmula TRANslation (diÔn dÞch c«ng thøc, hay cßn gäi lµ c«ng thøc dÞch), lµ mét trong nh÷ng ng«n ng÷ lËp tr×nh bËc cao ®Çu tiªn.