Tài liệu Giáo trình ngôn ngữ lập trình pascal - ts. nguyễn ngọc cương (chủ biên)

  • Số trang: 221 |
  • Loại file: PDF |
  • Lượt xem: 261 |
  • Lượt tải: 0
nguyen-thanhbinh

Đã đăng 10809 tài liệu

Mô tả:

M· sè: GD 08 HM 11 LỜI NÓI ĐẦU Con người liên lạc với nhau thông qua ngôn ngữ, tạo ra các mẫu  từ ngữ và âm thanh. Ngôn ngữ lập trình cũng tương tự như vậy, đó  là  một  tập  từ  ngữ  và  ký  hiệu  cho  phép  lập  trình  viên  hoặc  người  dùng có thể tương tác với máy tính. Việc hiểu biết và nắm vững các  ngôn ngữ lập trình là thật sự cần thiết đối với các lập trình viên. Mặc  dù đã có hàng trăm ngôn ngữ lập trình được sinh ra, song chỉ có một  số  ít  là  được  sử  dụng  rộng  rãi  và  được  xem  là  một  chuẩn  công  nghiệp. Các ngôn ngữ này đều có thể được sử dụng trên nhiều loại  máy  tính  khác  nhau.  Hiện  nay,  ngôn  ngữ  lập  trình  Pascal  là  ngôn  ngữ bậc cao đang được sử dụng khá rộng rãi trong lập trình.   Nhằm giúp các bạn sinh viên, nghiên cứu sinh, lập trình viên có  được  một  tài  liệu  khá  hệ  thống  về  ngôn  ngữ  lập  trình  Pascal,  NXB  Thông tin và Truyền thông trân trọng giới thiệu cuốn sách “Giáo trình  ngôn ngữ lập trình Pascalʺ do TS. Nguyễn Ngọc Cương (Trưởng khoa  Toán tin, Học viện An ninh nhân dân) làm chủ biên.  Nội dung cuốn sách gồm 12 chương:  Chương 1: Các thành phần cơ bản của ngôn ngữ lập trình Pascal  Chương 2: Các kiểu dữ liệu đơn giản chuẩn  Chương 3: Các khai báo hằng, biến, kiểu, biểu thức và câu lệnh  Chương 4: Thủ tục nhập ‐ xuất dữ liệu  Chương 5: Kiểu vô hướng liệt kê và kiểu khoảng con  Chương 6:  Các câu lệnh có cấu trúc  Chương 7: Chương trình con  Chương 8: Kiểu xâu ký tự (String)  Chương 9: Kiểu dữ liệu có cấu trúc  Chương 10: Màn hình và chế độ đồ họa  Chương 11: Con trỏ và cấu trúc dữ liệu động  Chương 12: Tin học ứng dụng trong tính toán  Phần  cuối  của  cuốn  sách  là  một  số  đề  thi  tổng  hợp  để  bạn  đọc  tham khảo. Hy vọng cuốn sách không chỉ dành riêng cho các Học viên Học  viện An ninh Nhân dân, Học viện Cảnh sát Nhân dân, còn là tài liệu  tham khảo bổ ích cho các cán bộ giảng dạy, sinh viên các trường đại  học  cũng  như  các  kỹ  sư,  kỹ  thuật  viên  chuyên  ngành  Công  nghệ  Thông tin, Điện tử Viễn thông và Tự động hóa.  Nhà xuất bản xin trân trọng giới thiệu cùng bạn đọc và rất mong  nhận được ý kiến đóng góp của quý vị. Mọi ý kiến đóng góp xin gửi  về Nhà xuất bản Thông tin và Truyền thông ‐ 18 Nguyễn Du, Hà Nội  hoặc gửi trực tiếp cho tác giả theo địa chỉ: cuongnnhvan@yahoo.com.  Trân trọng cảm ơn./.  NXB THÔNG TIN VÀ TRUYỀN THÔNG    Ch−¬ng 1: C¸c thμnh phÇn c¬ b¶n cña ng«n ng÷ lËp tr×nh Pascal 5 Chương 1  CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ LẬP TRÌNH PASCAL 1.1. Giíi thiÖu ng«n ng÷ lËp tr×nh Turbo Pascal - Lµ ng«n ng÷ lËp tr×nh bËc cao, cã cÊu tróc vµ cã tÝnh v¹n n¨ng do gi¸o s− Niklaus Wirth (t¸c gi¶ cña cuèn "CÊu tróc d÷ liÖu + Gi¶i thuËt = Ch−¬ng tr×nh) s¸ng t¸c vµ c«ng bè vµo ®Çu nh÷ng n¨m 1970 lÊy tªn nhµ b¸c häc bËc thÇy ng−êi Ph¸p lµ Pascal ®Ó ®Æt tªn. Lóc ®Çu Pascal ®−îc s¸ng t¹o ra víi môc ®Ých lµm ng«n ng÷ d¹y häc. - Pascal lµ mét ng«n ng÷ cã ®Þnh kiÓu m¹nh mÏ. §iÒu ®ã 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. ViÖc ®Þnh kiÓu mét c¸ch chÆt chÏ nh− vËy ®ßi hái ng−êi lËp tr×nh 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µ mét 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 vµ thËm chÝ 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. Mçi khèi øng víi mét nhiÖm vô cô thÓ vµ x¸c ®Þnh, th−êng ®−îc thùc hiÖn b»ng c¸c 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 n»m ngoµi ch−¬ng tr×nh. TÝnh cÊu tróc cña Pascal ®−îc thÓ hiÖn trªn 3 mÆt: 6 Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal + CÊu tróc vÒ mÆt d÷ liÖu: Tõ c¸c d÷ liÖu ®· cã (kiÓu ®¬n gi¶n chuÈn hoÆc d÷ liÖu cã 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. + CÊu tróc vÒ mÆt ch−¬ng tr×nh: Mét ch−¬ng tr×nh cã thÓ chia thµnh c¸c m«-®un ch−¬ng tr×nh ®éc lËp (ch−¬ng tr×nh con). 1.2. C¸c thμnh phÇn c¬ b¶n cña ng«n ng÷ Pascal §−îc x©y dùng tõ mét bé ký tù, c¸c ch÷ viÕt vµ ch÷ sè ®−îc kÕt hîp l¹i thµnh c¸c tõ, c¸c tõ t¹o thµnh c¸c c©u, tÊt c¶ ®Òu ph¶i tu©n theo mét có ph¸p vµ ng÷ ph¸p chÆt chÏ. a. Bé ch÷ viÕt dïng trong Turbo Pascal - Bé 26 ch÷ c¸i La-tinh: A, B, C,.., Z; a, b, c,..z - Ký tù g¹ch nèi: "_" - Bé ch÷ sè thËp ph©n: 0, 1, 2,.., 9 - C¸c ký hiÖu to¸n häc th«ng dông: +, - , *, /, ( ) - C¸c ký hiÖu kh¸c : , =, <, >, [], &, #, $,... DÊu c¸ch (Space) thùc sù lµ kho¶ng trèng dïng ®Ó ng¨n c¸ch c¸c tõ. C¸c ch÷ ¶ RËp: α, β, γ,... vµ c¸c ch÷ sè La M· kh«ng thuéc bé ký tù cña Turbo Pascal. b. Tõ khãa Lµ c¸c tõ riªng cña Pascal, cã ng÷ nghÜa ®· ®−îc x¸c ®Þnh, kh«ng ®−îc dïng nã vµo c¸c viÖc kh¸c hoÆc ®Æt tªn míi trïng víi c¸c tõ khãa. Ch−¬ng 1: C¸c thμnh phÇn c¬ b¶n cña ng«n ng÷ lËp tr×nh Pascal 7 - Tõ khãa chung: program, begin, end, procedure, function - Tõ khãa ®Ó khai b¸o: const, var, type, label, array, string, record, set, file of - Tõ khãa cña lÖnh lùa chän: 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, goto, exit - Tõ khãa c¸c phÐp to¸n: and, or, not, in, div, mod - Tõ khãa NUL. C¸c tõ khãa cã thÓ viÕt b»ng ch÷ th−êng hay ch÷ hoa. Khi ®ã gi¸ trÞ vµ ý nghÜa cña chóng lµ nh− nhau, ®iÒu nµy kh¸c víi ng«n ng÷ C/C++ mµ chóng ta nghiªn cøu sau nµy. c. Tªn gäi (Identifier - §Þnh danh) Lµ mét kh¸i niÖm quan träng dïng ®Ó x¸c ®Þnh c¸c ®¹i l−îng kh¸c nhau trong ch−¬ng tr×nh nh− tªn biÕn, tªn h»ng, tªn kiÓu, tªn ch−¬ng tr×nh con, tªn ch−¬ng tr×nh, tªn tÖp, tªn nh·n. Tªn trong Pascal ®−îc thµnh lËp theo quy t¾c: Lµ mét d·y ký tù bao gåm ch÷ c¸i, ch÷ sè vµ dÊu g¹ch nèi. Ký tù ®Çu tiªn kh«ng ®−îc lµ ch÷ sè, tªn cã thÓ cã ®é dµi tèi ®a lµ 127 ký tù, nh−ng chØ cã 63 ký tù ®Çu tiªn lµ cã ý nghÜa. Tªn kh«ng ®−îc trïng víi tõ khãa. Pascal kh«ng ph©n biÖt ch÷ th−êng vµ ch÷ hoa trong mét tªn. Tªn chuÈn: Mét sè tªn ®· ®−îc ®Þnh nghÜa s½n trong Pascal gäi lµ c¸c tªn chuÈn. Sù kh¸c nhau gi÷a tªn chuÈn vµ tõ khãa lµ: ng−êi dïng cã thÓ ®Þnh nghÜa l¹i c¸c tªn chuÈn hoÆc 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 víi quy ®Þnh cña Pascal. Mét sè tªn chuÈn cña Pascal: boolean, char, integer, word, byte, real, text, false, true, maxint, eof, eoln. C¸c hµm chuÈn: abs, arctan, chr, cos, sin. C¸c thñ tôc chuÈn: write, writeln, read, readln... 8 Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal VÝ dô: Ta cã thÓ ®Þnh nghÜa ra mét hµm cã tªn lµ SIN(x) ®Ó tÝnh gi¸ trÞ tuyÖt ®èi cña x (nÕu muèn). Song kh«ng thÓ dïng tõ khãa Begin ®Ó lµm bÊt cø viÖc g× ngoµi quy ®Þnh cña b¶n th©n nã. d. DÊu chÊm ph¶y (;) DÊu chÊm ph¶y ";" ®−îc 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µ dÊu kÕt thóc lÖnh. e. Lêi gi¶i thÝch C¸c lêi b×nh luËn, c¸c lêi gi¶i thÝch cã thÓ ®−a vµo bÊt kú chç nµo trong ch−¬ng tr×nh ®Ó cho ch−¬ng tr×nh dÔ hiÓu, dÔ ®äc 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 ngoÆc mãc { } hoÆc gi÷a hai côm dÊu (* *). Trong ch−¬ng tr×nh cÇn cã nh÷ng lêi gi¶i thÝch ®Ó ch−¬ng tr×nh thªm dÔ hiÓu. Turbo Pascal quy ®Þnh nÕu më lêi gi¶i thÝch b»ng dÊu (* th× ph¶i ®ãng l¹i b»ng dÊu *) chø kh«ng ®−îc ®ãng l¹i b»ng dÊu }. NÕu më b»ng dÊu { th× ph¶i ®ãng l¹i b»ng dÊu } chø kh«ng ®−îc ®ãng l¹i b»ng dÊu *). DÊu më cã thÓ cã nhiÒu lÇn tr−íc mét dÊu ®ãng. 1.3. CÊu tróc chung cña mét ch−¬ng tr×nh Pascal CÊu tróc chung tæng qu¸t nhÊt cña mét ch−¬ng tr×nh Pascal gåm ba phÇn: Program Tªn_Ch−¬ng_Tr×nh; {Tiªu ®Ò} Uses..., Label...; Const...; Type...; Var... {PhÇn khai b¸o d÷ liÖu} Procedure... {PhÇn m« t¶ ch−¬ng tr×nh con} Function... Begin {Th©n ch−¬ng tr×nh chÝnh} {C¸c lÖnh ®−îc viÕt ë ®©y} End. {KÕt thóc ch−¬ng tr×nh} Ch−¬ng 1: C¸c thμnh phÇn c¬ b¶n cña ng«n ng÷ lËp tr×nh Pascal 9 1.3.1. PhÇn tªn ch−¬ng tr×nh PhÇn tªn ch−¬ng tr×nh b¾t ®Çu b»ng tõ khãa Program tiÕp theo lµ tªn do ng−êi lËp tr×nh ®Æt cã ý nghÜa nµo ®ã ®Æc tr−ng cho c«ng viÖc cña ch−¬ng tr×nh vµ kÕt thóc b»ng dÊu chÊm ph¶y ";". PhÇn tiªu ®Ò chiÕm mét dßng vµ cã thÓ kh«ng cã còng ®−îc. 1.3.2. PhÇn khai b¸o PhÇn nµy cã nhiÖm vô khai b¸o c¸c th− viÖn cã s½n cÇn sö dông trong ch−¬ng tr×nh, m« t¶ ®èi t−îng bµi to¸n, m« t¶ d÷ liÖu... sÏ ®−îc ch−¬ng tr×nh xö lý. §−îc chia thµnh 7 kiÓu khai b¸o víi c¸c tõ khãa sau: Uses Crt, Printer; (Khai b¸o sö dông c¸c th− viÖn) Label (Khai b¸o nh·n) Const (Khai b¸o c¸c h»ng sè, h»ng ký tù) Type (M« t¶ c¸c kiÓu d÷ liÖu míi) Var (Khai b¸o c¸c biÕn) Procedure (Khai b¸o thñ tôc) Function (Khai b¸o hµm) C¸c phÇn khai b¸o cã thÓ cã hoÆc kh«ng tïy theo nhu cÇu. Tuy nhiªn víi Turbo Pascal for Windows b¾t buéc ph¶i khai b¸o sö dông c¸c th− viÖn. 1.3.3. PhÇn th©n ch−¬ng tr×nh PhÇn nµy n»m gi÷a hai tõ khãa BEGIN vµ END. Sau tõ khãa END lµ dÊu chÊm ®Ó b¸o kÕt thóc ch−¬ng tr×nh. PhÇn nµy b¾t buéc ph¶i cã ®èi víi mäi ch−¬ng tr×nh, nã chøa c¸c lÖnh ®Ó xö lý c¸c ®èi t−îng sè liÖu ®· ®−îc m« t¶ trong phÇn khai b¸o. 1.3.4. Giíi thiÖu phÇn mÒm Turbo Pascal Turbo Pascal lµ s¶n phÈm cña h·ng BORLAND (Mü). Tõ ngµy xuÊt b¶n ®Çu tiªn ®Õn nay ®· qua nhiÒu lÇn t¸i b¶n, mçi lÇn t¸i b¶n ®· 10 Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal cho mét phiªn b¶n míi h¬n víi nhiÒu c¶i tiÕn h¬n. C¸c phiªn b¶n ®ang ®−îc sö dông hiÖn nay lµ 7.0 vµ Turbo Pascal for Windows. §Æc biÖt lµ Turbo Pascal 7.0 thÝch hîp cho c¸c m¸y vi tÝnh cã dung l−îng bé nhí nhá (640kB), tèc ®é thÊp, v× vËy phiªn b¶n 7.0 ®−îc chän lµm mÉu ®Ó giíi thiÖu trong phÇn nµy. a. C¸c tËp tin cña Turbo Pascal TURBO.EXE: So¹n th¶o, dÞch vµ liªn kÕt ch−¬ng tr×nh theo menu. TURBO.TPL: TËp tin th− viÖn, l−u c¸c ®¬n vÞ chuÈn ®Ó ch¹y víi TURBO.EXE TINST.EXE: Cung cÊp c¸c tiÖn Ých cho phÐp cµi ®Æt c¸c th«ng sè cña TURBO.EXE nh− mµu ch÷, mµu nÒn, viÒn cöa sæ… TPC.EXE: Tr×nh biªn dÞch ®éc lËp kh«ng th«ng qua TURBO.EXE TPMOVER.EXE: ChuyÓn c¸c ®¬n vÞ ch−¬ng tr×nh tù t¹o sang tËp tin th− viÖn chuÈn TPL README: tËp tin v¨n b¶n chøa c¸c th«ng tin cña Turbo Pascal README.COM: Ch−¬ng tr×nh giíi thiÖu c¸c hiÓu biÕt s¬ bé tr−íc khi sö dông Turbo Pascal. GRAPH.TPU: §¬n vÞ ®å häa TURBO.TPH: Cung cÊp c¸c gióp ®ì khi lËp tr×nh *.BGI: Chøa c¸c font mµn h×nh *.CHR: Chøa c¸c font ch÷ trong chÕ ®é ®å häa. b. Tæ chøc c¸c tËp tin trªn ®Üa Dïng ch−¬ng tr×nh cµi ®Æt INSTALL.EXE vµ tr¶ lêi tõng c©u hái cña ch−¬ng tr×nh, c¸c tËp tin sÏ tù ®éng bung ra ghi vµo trong ®Üa cøng. NÕu sö dông Turbo Pascal trªn ®Üa mÒm th× tèi thiÓu ph¶i cã 2 tËp tin TURBO.EXE vµ TURBO.TPL ®Ó ch¹y ®−îc ch−¬ng tr×nh. Ch−¬ng 1: C¸c thμnh phÇn c¬ b¶n cña ng«n ng÷ lËp tr×nh Pascal 11 c. Khëi ®éng phÇn mÒm Turbo Pascal - §−a hÖ ®iÒu hµnh vµo lµm viÖc trªn th− môc cã tËp tin TURBO.EXE - Sau khi gâ vµo c©u lÖnh trªn vµ bÊm phÝm Enter, chØ ®é vµi gi©y ta sÏ thÊy xuÊt hiÖn trªn mµn h×nh: + Hµng trªn cïng lµ nh÷ng thùc ®¬n chÝnh cña Pascal (Main Menu), gåm cã c¸c menu: File, Edit, Run, Compile, Option, Debug. + Cöa sæ h×nh ch÷ nhËt mµu tr¾ng ë gi÷a mµn h×nh lµ nh÷ng dßng tù giíi thiÖu v¾n t¾t cña TP7.0. Khi bÊm Enter sÏ mÊt khung cöa sæ nµy ®Ó dµnh toµn bé mµn h×nh cho ta so¹n th¶o ch−¬ng tr×nh. 1.3.5. C¸c b−íc c¬ b¶n ®Ó ch¹y mét ch−¬ng tr×nh Turbo Pascal B−íc 1: Khëi ®éng Turbo Pascal Víi Turbo Pascal ch¹y trªn m«i tr−êng DOS, chuyÓn ®Þa chØ lµm viÖc ®Õn th− môc chøa File TURBO.EXE vµ ch¹y file nµy. Víi Turbo Pascal ch¹y trªn m«i tr−êng Windows, nh¸y ®óp chuét t¹i biÓu t−îng Shortcut cña Turbo Pascal hoÆc khëi ®éng tõ nót lÖnh Start/Programs/TPW råi chän biÓu t−îng TPW. Khi ®ã xuÊt hiÖn mµn h×nh so¹n th¶o víi c¸c file ch−¬ng tr×nh ®−îc më ra lµ c¸c file mµ ta ch−a ®ãng l¹i khi tho¸t khái Pascal ë lÇn ch¹y tr−íc. NÕu muèn ta cã thÓ ®ãng c¸c file ®ã l¹i vµ më mét file míi cã tªn NANAME00.PAS. B−íc 2: So¹n th¶o néi dung ch−¬ng tr×nh a. C¸c thao t¸c víi file ch−¬ng tr×nh trong khi so¹n th¶o F2: Ghi vµo ®Üa (SAVE) F3: Më file kh¸c (LOAD) Ctrl-F2: Ghi vµo tªn file kh¸c Directory: Danh môc file ch−¬ng tr×nh OS Shell: Ra DOS t¹m thêi 12 Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal b. C¸c kü n¨ng so¹n th¶o (menu edit) Ctrl-Y: Xãa c¶ dßng ký tù chøa con trá, c¸c dßng ë d−íi sÏ dån lªn Ctrl-Q-Y: Xãa phÇn cuèi dßng kÓ tõ con trá Ctrl-K-Y: Xãa c¶ mét khèi ký tù Ctrl-Q-F: T×m kiÕm mét tõ nµo ®ã Ctrl-Q-A: T×m vµ thay thÕ mét tõ nµo ®ã B−íc 3: DÞch thö, söa lçi có ph¸p vμ ch¹y ch−¬ng tr×nh Alt-F9: Biªn dÞch ch−¬ng tr×nh ®ang lµm viÖc ®Ó kiÓm tra c¸c lçi có ph¸p, hoÆc nhÊn phÝm F9 ®Ó dÞch thö. Ctrl-F9: Ch¹y ch−¬ng tr×nh ®ang ®−îc lµm viÖc trªn mµn h×nh so¹n th¶o. B−íc 4: Gì rèi ch−¬ng tr×nh Chän chøc n¨ng ch¹y tõng b−íc ®Ó gì rèi ch−¬ng tr×nh. NhÊn phÝm F7. B−íc 5: Tho¸t khái ch−¬ng tr×nh Tho¸t khái Turbo Pascal b»ng c¸ch nhÊn tæ hîp phÝm Alt + X ®èi víi Turbo Pascal ch¹y trªn DOS hoÆc Alt + F4 ®èi víi Turbo Pascal ch¹y trªn Windows. 13 Ch−¬ng 2: C¸c kiÓu d÷ liÖu ®¬n gi¶n chuÈn Chương 2  CÁC KIỂU DỮ LIỆU ĐƠN GIẢN CHUẨN 2.1. Kh¸i niÖm vÒ kiÓu d÷ liÖu Kh¸i niÖm kiÓu d÷ liÖu trong Pascal còng nh− c¸c ng«n ng÷ lËp tr×nh kh¸c lµ rÊt quan träng, nã x¸c ®Þnh tËp hîp gi¸ trÞ mµ biÕn cã thÓ nhËn. M« t¶ kiÓu sÏ quy ®Þnh lo¹i gi¸ trÞ cña biÕn vµ cung cÊp cho ch−¬ng tr×nh dÞch nh÷ng th«ng tin cÇn thiÕt. C¸c kiÓu d÷ liÖu trong Pascal nh− kiÓu integer, real, char, boolean, byte ®−îc gäi lµ c¸c kiÓu d÷ liÖu ®¬n gi¶n v× chóng lµ c¸c d÷ liÖu kh«ng ph©n chia ®−îc n÷a. Nh− vËy, mét kiÓu d÷ liÖu ®−îc ®Þnh nghÜa lµ mét tËp hîp c¸c gi¸ trÞ mµ mét biÕn thuéc kiÓu ®ã cã thÓ nhËn ®−îc, trªn ®ã x¸c ®Þnh mét sè phÐp to¸n. Nãi c¸ch kh¸c mét kiÓu d÷ liÖu lµ mét tËp hîp ®−îc quy ®Þnh vÒ cÊu tróc, kho¶ng gi¸ trÞ, c¸ch biÓu diÔn vµ c¸c thao t¸c xö lý. D÷ liÖu trong Turbo Pascal ®−îc chia thµnh hai líp lín lµ kiÓu d÷ liÖu ®¬n gi¶n (Simple Type) vµ kiÓu d÷ liÖu cã cÊu tróc (Structure Type). KiÓu d÷ liÖu biÓu diÔn mét gi¸ trÞ ®−îc gäi lµ kiÓu d÷ liÖu ®¬n gi¶n, bao gåm: - KiÓu logic (Boolean) - KiÓu sè nguyªn (Integer) - KiÓu ký tù (Character) - KiÓu v« h−íng liÖt kª (Enumerated scalar) - KiÓu ®o¹n con (Subrage) - KiÓu sè thùc (Real) - KiÓu chuçi ký tù (String). 14 Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal N¨m kiÓu ®Çu lµ kiÓu d÷ liÖu ®Õm ®−îc (hay cã thø tù), chóng ®−îc dïng lµm chØ sè m¶ng vµ trong c¸c to¸n tö ®iÒu khiÓn. KiÓu d÷ liÖu cã cÊu tróc bao gåm: M¶ng, tËp hîp, b¶n ghi vµ tÖp. 2.2. KiÓu logic (Boolean) Mét tËp hîp Logic Boolean lµ mét tËp hîp chØ cã hai gi¸ trÞ True (§óng) hoÆc False (Sai). - Mét d÷ liÖu thuéc kiÓu logic lµ mét ®¹i l−îng chØ cã thÓ nhËn mét trong hai gi¸ trÞ logic True hoÆc False. - C¸c phÐp to¸n cã thÓ ¸p dông trªn kiÓu logic: AND, OR, NOT, XOR. Sau ®©y lµ b¶ng gi¸ trÞ cña c¸c phÐp to¸n: A B A AND B A OR B A XOR B NOT A True True True True False False True False False True True False False True False True True True False False False False False True C¸c biÓu thøc quan hÖ (so s¸nh) lu«n cho kÕt qu¶ kiÓu Boolean. Cã c¸c phÐp to¸n quan hÖ sau: <>, =, >=, <=, >, < Hai vÕ cña biÓu thøc so s¸nh ph¶i cïng kiÓu nhau (ngo¹i trõ kiÓu sè thùc vµ kiÓu sè nguyªn) vµ chóng cã thÓ lµ c¸c kiÓu: Real, Integer, Boolean, Char, v« h−íng do ng−êi sö dông ®Þnh nghÜa. Gi¸ trÞ False ®−îc coi lµ nhá h¬n (®øng tr−íc) True. 2.3. KiÓu sè nguyªn (Integer) - Trong to¸n häc, sè nguyªn lµ tËp hîp c¸c sè cã gi¸ trÞ nguyªn tõ - ∞ ÷ +∞. Nh−ng do giíi h¹n biÓu diÔn cña m¸y tÝnh còng nh− ®Ó tiÕt kiÖm bé nhí nªn Turbo Pascal cung cÊp n¨m kiÓu sè nguyªn ®−îc ®Þnh nghÜa víi c¸c tõ khãa t−¬ng øng víi ph¹m vi biÓu diÔn cña kiÓu 15 Ch−¬ng 2: C¸c kiÓu d÷ liÖu ®¬n gi¶n chuÈn vµ sè Byte cÇn thiÕt ®Ó biÓu diÔn mét gi¸ trÞ thuéc kiÓu sè nguyªn t−¬ng øng. KiÓu Ph¹m vi biÓu diÔn Sè Byte Integer -32768..32767 2 Byte 0..25 1 Word 0..65535 2 Shortint -128..127 1 Longint -2147483648..2147483647 4 - C¸c phÐp to¸n sè häc ®èi víi sè nguyªn cho kÕt qu¶ lµ gi¸ trÞ nguyªn. + Céng (+), Trõ (-), nh©n (*) + DIV: Chia lÊy phÇn nguyªn + MOD: Chia lÊy phÇn d− + Hµm ODD(n): KiÓm tra tÝnh ch½n lÎ cña mét sè nguyªn, cho kÕt qu¶ lµ True nÕu n lµ mét sè lÎ, False nÕu n lµ mét sè ch½n. + C¸c phÐp to¸n quan hÖ (<>, =, >=, <=, >, <) cã thÓ ¸p dông cho c¸c to¸n h¹ng lµ sè nguyªn vµ cho kÕt qu¶ tr¶ vÒ kiÓu Boolean. Chó ý: Khi thùc hiÖn c¸c phÐp tÝnh sè häc ®èi víi sè nguyªn, cÇn hÕt søc thËn träng xem c¸c phÐp to¸n ®ã cã cho kÕt qu¶ v−ît khái ph¹m vi biÓu diÔn sè nguyªn cña m¸y kh«ng. Trong tr−êng hîp qu¸ giíi h¹n, m¸y cã thÓ b¸o lçi. - PhÐp to¸n chia "/" hai sè nguyªn cho kÕt qu¶ lµ mét gi¸ trÞ thùc. Bëi vËy trong tËp hîp c¸c sè nguyªn kh«ng tån t¹i phÐp chia, nh−ng vÉn cã thÓ cã phÐp g¸n mµ vÕ tr¸i lµ mét biÕn thùc, cßn vÕ ph¶i lµ mét biÓu thøc to¸n häc chøa phÐp chia cña hai sè nguyªn. 2.4. KiÓu sè thùc (Real) TËp hîp c¸c sè thùc cã giíi h¹n tõ -∞ ÷ +∞ vµ c¸c gi¸ trÞ cña sè thùc lÊp ®Çy trôc sè. MÆc dï vËy do môc ®Ých tiÕt kiÖm bé nhí nªn Turbo Pascal ®Þnh nghÜa 5 kiÓu sè thùc víi giíi h¹n, kh¶ n¨ng biÓu 16 Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal diÔn sè thùc vÒ ®é chÝnh x¸c vµ sè l−îng Byte cÇn thiÕt ®Ó biÓu diÔn mét sè thùc kh¸c nhau nh»m phôc vô cho ng−êi lËp tr×nh sö dông tïy thuéc vµo yªu cÇu bµi to¸n. C¸c kiÓu sè thùc bao gåm: KiÓu Ph¹m vi biÓu diÔn Sè ch÷ sè cã nghÜa Sè Byte Single 1.5*10-45.... 3.4*1038 7-8 4 Real 2.9*10-39... 1.7*1038 11 - 12 6 Double 5.0*10-324... 1.7*10308 15 - 16 8 ... 1.1*10 19 - 20 10 18 19 - 20 8 Extended 3.4*10 -4932 -18 Comp 4932 9.2*10 ... 9.2*10 Gi¶i thÝch: Ph¹m vi biÓu diÔn cña 4 kiÓu ®Çu ®−îc hiÓu nh− sau: Gi¶ sö lÊy sè thùc Single lµm vÝ dô. M¸y cã thÓ l−u tr÷ ®−îc mét sè kiÓu Single cã gi¸ trÞ tuyÖt ®èi trong kho¶ng tõ 1.5*10-45 ®Õn 3.4*1038. Sè cã gi¸ trÞ tuyÖt ®èi nhá h¬n 1.5*10-45 ®−îc xem lµ b»ng 0. Sè cã gi¸ trÞ tuyÖt ®èi lín h¬n 3.4*1038 kh«ng biÓu diÔn ®−îc trong m¸y. Ph¹m vi biÓu diÔn cña c¸c kiÓu Real, Double, Extended ®−îc hiÓu theo nghÜa t−¬ng tù. + C¸c phÐp to¸n ®èi víi sè thùc bao gåm: Céng (+), Trõ (-), nh©n (*), chia (/), khai c¨n (hµm SQRT), lòy thõa bËc hai (hµm SQR). + C¸c phÐp to¸n quan hÖ (<>, =, >=, <=, >, <) cã thÓ ¸p dông cho c¸c to¸n h¹ng lµ sè thùc vµ cho kÕt qu¶ tr¶ vÒ gi¸ trÞ kiÓu Boolean. - C¸c hµm sè häc th−êng ®−îc dïng cho sè nguyªn vµ sè thùc: ABS(x): LÊy gi¸ trÞ tuyÖt ®èi, SQR(x): LÊy b×nh ph−¬ng cña x, SQRT(x): LÊy c¨n bËc hai cña x... Mét sè thùc bÊt kú cã thÓ biÓu diÔn b»ng tæng c¸c sè víi mò cña 2: X= i=n ∑ a i * 2i trong ®ã ai = 0 hoÆc 1 i =− m Trong ng«n ng÷ Pascal còng nh− c¸c ng«n ng÷ lËp tr×nh kh¸c cã hai c¸ch l−u sè thùc lµ: dÊu chÊm tÜnh (fixed) vµ dÊu chÊm ®éng (floating point). VÝ dô sè 110.101 (6.625) cã thÓ biÓu diÔn d¹ng 0.110101 x 23. Ch−¬ng 2: C¸c kiÓu d÷ liÖu ®¬n gi¶n chuÈn 17 Trong c¸ch biÓu diÔn sè thùc dÊu chÊm ®éng, mét phÇn cña tõ m¸y ®−îc dïng ®Ó l−u tr÷ mét sè cè ®Þnh c¸c bit cña phÇn ®Þnh trÞ, phÇn kh¸c l−u tr÷ phÇn mò. Ch¼ng h¹n sè 2.1E2 lµ 210, 5.67E-1 lµ 0.567. 2.5. KiÓu ký tù (Character) Ký tù lµ tÊt c¶ c¸c ch÷ viÕt mµ ta th−êng dïng nh− c¸c ch÷ c¸i, c¸c ch÷ sè, c¸c dÊu ph©n ®o¹n c©u,... KiÓu ký tù ®−îc ®Þnh nghÜa trong Turbo Pascal víi tõ khãa CHAR. Mét gi¸ trÞ kiÓu ký tù lµ mét phÇn tö cña mét tËp hîp h÷u h¹n c¸c ký tù ®−îc s¾p xÕp cã thø tù. Cã nhiÒu c¸ch s¾p xÕp bé ch÷ kh¸c nhau. Tuy vËy bé m· ®−îc dïng phæ biÕn ®Ó trao ®æi th«ng tin gi÷a c¸c thiÕt bÞ, nhÊt lµ m¸y vi tÝnh lµ bé m· ASCII (American Standard Code Information Interchange). PhÐp to¸n phæ biÕn cho c¸c ký tù lµ so s¸nh tuÇn tù (collating sequence). C¸c ký tù ®−îc m· hãa b»ng 1 Byte, v× vËy b¶ng m· ký tù cã thÓ m· hãa 256 ký tù. Tuy vËy sè ký tù c¬ b¶n nhÊt cã thÓ gãi gän l¹i trong 128 sè ®Çu tiªn vµ ®−îc chuÈn hãa. Cßn 128 sè sau (cã sè thø tù tõ 128 ®Õn 255) trªn m¸y vi tÝnh ®−îc gäi lµ phÇn m· më réng vµ ®−îc dïng ®Ó m· hãa c¸c ký tù riªng cña mét sè ng«n ng÷, c¸c ký tù to¸n häc, c¸c ký tù ®å häa,... cã nhiÒu b¶ng m· kh¸c nhau ë phÇn më réng. Trong Turbo Pascal chóng ta quan t©m chñ yÕu tíi phÇn 128 ký tù ®Çu cña b¶ng m· ASCII lµ phÇn chuÈn ®Ó x©y dùng bé ký tù cho ng«n ng÷ lËp tr×nh. M· cña mét ký tù chÝnh lµ sè thø tù cña nã trong b¶ng m·. VÝ dô ký tù A trong b¶ng m· ASCII cã m· lµ 65, ký tù B trong b¶ng m· ASCII cã m· lµ 66. Khi ®ã phÐp so s¸nh A>B sÏ cho kÕt qu¶ sai. Trong b¶ng m· ASCII c¸c ký tù tõ 0 ®Õn 31 lµ c¸c ký tù ®iÒu khiÓn kh«ng in ra ®−îc. Chóng dïng ®Ó ®iÒu khiÓn qu¸ tr×nh vµo ra trªn c¸c thiÕt bÞ ngo¹i vi. VÝ dô khi m¸y nhËn ®−îc ký tù sè 7 (BEL) nã sÏ ®¸nh mét tiÕng chu«ng. Khi nhËn ®−îc c¸c ký tù sè 13 (CR: Carriage Return) vµ sè 10 (LF: Line Feed), thiÕt bÞ ngo¹i vi nh− mµn h×nh vµ m¸y in sÏ chuyÓn ®iÓm lµ viÖc (con trá mµn h×nh, ®Çu kim in) xuèng ®Çu dßng tiÕp theo. 18 Gi¸o tr×nh Ng«n ng÷ lËp tr×nh Pascal C¸c ký tù cã vÞ trÝ trong b¶ng m· ASCCI tõ 45 ®Õn 57 lµ c¸c ch÷ sè. C¸c ký tù tõ 65 ®Õn 90 lµ c¸c ch÷ c¸i hoa,... §Ó biÓu diÔn mét ký tù cã thÓ dïng mét trong ba c¸ch sau: C¸ch 1: BiÓu diÔn h»ng ký tù b»ng c¸ch ®Æt ký tù trong 2 dÊu nh¸y ®¬n: 'a', 'B', '*', 'z', '0', '9', ':',... C¸ch nµy chØ biÓu diÔn ®−îc ký tù cã trªn bµn phÝm. C¸ch 2: Sö dông hµm Chr(n) Trong ®ã (0 ≤ n ≤ 255) lµ m· cña ký tù cÇn biÓu diÔn. VÝ dô: Chr(66) chÝnh lµ 'B' Chr(98) chÝnh lµ 'b' C¸ch 3: T−¬ng tù nh− c¸ch 2 nh−ng dïng c¸ch viÕt: #n thay cho Chr(n). C¸c hµm chuÈn liªn quan ®Õn kiÓu ký tù: Hµm chuÈn Ord(n): Cho sè thø tù cña ký tù n trong b¶ng m·. Hµm chuÈn Chr(n) hay #n: cho ký tù cã sè thø tù lµ n. Hµm chuÈn Pred(ch): Cho ký tù ®øng tr−íc ch trong b¶ng m·. Hµm chuÈn Succ(ch): Cho ký tù ®øng sau ch trong b¶ng m·. Do quan hÖ ORD('A') 8
- Xem thêm -