Giáo trình Tin học đại cương - Phần II: Ngôn ngữ lập trình Turbo Pascal

pdf 79 trang ngocly 2770
Bạn đang xem 20 trang mẫu của tài liệu "Giáo trình Tin học đại cương - Phần II: Ngôn ngữ lập trình Turbo Pascal", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfgiao_trinh_tin_hoc_dai_cuong_phan_ii_ngon_ngu_lap_trinh_turb.pdf

Nội dung text: Giáo trình Tin học đại cương - Phần II: Ngôn ngữ lập trình Turbo Pascal

  1. PH N II NGÔN NG L P TRÌNH TURBO PASCAL CH ƯƠ NG I: C U TRÚC C A CH ƯƠ NG TRÌNH PASCAL 1. Gii thi u v ngôn ng lp trì nh 1.1. Ngôn ng lp trì nh làgì ? Ngôn ng lp trì nh là mt h th ng cá c kí hi u, h th ng cá c quy t c cúphá p và mt bcá c chth (hay cò n g i là câu l nh) dù ng ñ vi t cá c thu t toá n gi i cá c bà i toá n thà nh cá c ch ươ ng trì nh má y tí nh. Nh ng ch ươ ng trì nh nà y sñư c ñư a và o má y "ch y" ñtí nh toá n, x líbà i toá n. Ngôn ng lp trì nh ra ñi cù ng v i s ra ñi c a MT ðT vì khi MT ðT ra ñi ñươ ng nhiên ng ư i ta ph i nghĩñ n vi c xây d ng ngôn ng cho chú ng. Cá c th h MT ðT liên t c phá t tri n, do ñó ngôn ng lp trì nh cũ ng phá t tri n theo. Có nhi u lo i ngôn ng lp trì nh khá c nhau, t ngôn ng bc th p chuy n lên ngôn ng bc cao. + Ngôn ng bc th p (ngôn ng má y): Ch sd ng 2 kí hi u 0 và 1 ñmãhoám i ñi lư ng vàphé p toá n. Ngôn ng nà y cóưu ñim là ch ươ ng trì nh ch y nhanh, không ph i qua khâu d ch. Tuy nhiên nh ng ch ươ ng trì nh vi t b ng ngôn ng nà y r t c ng k nh, vi t m t r t nhi u th i gian, d sai só t, khó ki m tra; m t khá c m i lo i má y có mt ngôn ng má y riêng. + Ngôn ng tp h p: Kh c ph c m t s nh ư c ñim trên ng ư i ta nghĩcá ch thay th mt smãnh phân b ng cá c ch cá i và cho ra ñi ngôn ng tp h p (cò n g i là ngôn ng kí hi u). Ưu ñim là vi c l p trì nh ñã ddà ng h ơn, tuy nhiên c n ph i có ch ươ ng trì nh d ch t ngôn ng tp h p ra ngôn ng máy, và vn cò n ph thu c và o t má y. + Ngôn ng bc cao: Ch ươ ng trì nh ñư c vi t g n v i ngôn ng t nhiên c a con ng ư i, do ñó d dà ng cho ng ư i l p trì nh, tuy nhiên ch ươ ng trì nh sch y ch m h ơn. Năm 1958, ALGOL - ngôn ng lp trì nh b c cao ñu tiên ra ñi. Năm 1960 nóñư c b sung, ch nh lívà có nh h ư ng sâu s c ñ n cá c ngôn ng lp trì nh b c cao sau nà y nh ư FORTRAN, C, BASIC, PASCAL, 1.2. Turbo Pascal PASCAL là ngôn ng lp trì nh b c cao c a tá c gi Niklaus Wirth (giá o s ư ng ư i Thu sĩ ), ñư c công b và o ñu nh ng n ăm 1970. Tên PASCAL làñk ni m nhàToá n h c ng ư i Phá p B. Pascal. PASCAL là ngôn ng lp trì nh có tí nh cu trú c vàtí nh h th ng : cá c ki u d li u ña d ng, cá c c u trú c ñiu khi n ch t ch , cá c c u trú c kh i trong ch ươ ng trì nh rõrà ng PASCAL là ngôn ng lp trì nh có ñnh ki u rõrà ng : cá c ñi l ư ng (bi n và hng) ñã ñư c khai bá o ñ sd ng v i ki u d li u nà y thì không th ñem dù ng l n v i ki u khá c. PASCAL ban ñu ñư c sá ng tá c ñlà m ngôn ng d y h c cho nh ng ng ư i m i h c l p trì nh. ð c tí nh sá ng s a, d hi u, d ñc c a nógiú p ng ư i m i h c có th vi t mt ch ươ ng trì nh má y tí nh m t cá ch d dà ng. Sau khi ra ñi, do có nhi u ưu ñim,PASCAL ñãñư c nhi u hã ng má y tí nh phá t tri n và cà i ñt cho nhi u h th ng má y tí nh, nh ư: ISO PASCAL (PASCAL chu n ), ANSI PASCAL v.v. Ph bi n nh t hi n nay nư c ta cũ ng nh ư trên th gi i là vi c cà i ñt TURBO PASCAL cho cá c h th ng má y tí nh. TURBO PASCAL ñư c hã ng BORLAND INTERNATIONAL hoà n thi n v i cá c ưu ñim là ch ươ ng trì nh vi t g n, 112 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 112
  2. d ch nhanh, không ng ng ñưc c i ti n ñáp ng yêu c u c a ng ư i s d ng. TURBO PASCAL ñãñư c phá t tri n qua cá c phiên b n ngà y cà ng m rng và ph c t p. Vi c khai thá c sâu cá c tí nh n ăng c a t ng phiên b n là do kh năng và nhu c u c a ng ư i l ptrì nh. Giá o trì nh nà y ch n version 5.0 là m chu n ñ minh ho , tuy nhiên ng ư i ñc có th á p d ng cho cá c phiên b n sau nà y nh ư 6.0, 7.0. 2. Yêu c u ph n m m vàcá ch kh i ñng 2.1. Yêu c u ph n m m Ph n m m TURBO PASCAL cókhá nhi u File, tuy nhiên ñcó th bư c ñu h c và s d ng ñư c, trên ñĩa c n có ti thi u cá c file sau: TURBO.EXE file chí nh, ch a c ch ươ ng trì nh d ch, h so n th o vàcá c d ch v g ri TURBO.TPL là th ư vi n cá c ch ươ ng trì nh m u có sn c a TURBO PASCAL Nu có sd ng ñhothì cn ché p thêm ñơ n v GRAPH.TPU và mt s file ph tr khá c tuỳ theo ki u mà n hì nh và ki u ch sd ng. 2.2. Kh i ñng vàthoá t TURBO PASCAL Thông th ư ng cá c file nó i trên n m trong th ư m c TP (ho c TURBO hay TP5, TP7 tuỳ theo phiên b n hay ng ư i s d ng) Ta chuy n và o th ư m c nà y b ng l nh CD TP ↵, sau ñógõ TURBO ↵ . Mà n hì nh s hi n ra nh ư sau: File Edit Run Compile Options Debug Break/Watch Line 1 Col 1 Insert Indent Unindent C:NONAME.PAS | F1-Help F5-Zoom F6-Switch F7-Trace F8-Step F9-Make F10-Menu Dò ng 1: làdò ng menu chí nh, trên ñócó ghi cá c m c c ơ b n nh t ñ ng ư i s d ng có th ch n b ng cá ch n ñng th i Alt+ ch cá i ñu c a m c. Víd : Alt+F ñ mm c File. Dò ng 2: làdò ng tr ng thá i, cho ng ư i dù ng bi t m t s thông s so n th o nh ư toñ con tr , ch ñso n th o là vi t chè n hay vi t ñè, tên t p ñang là m vi c Dò ng cu i cù ng làdò ng h ư ng d n, nh c ng ư i s d ng m t s phí m ch c n ăng chí nh. Ph n mà n hì nh r ng gi a là ph n so n th o ñ ta nh p vàch y ch ươ ng trì nh. Ng ư i m i h c l p trì nh nên ghi nh ngay cá c phí m ch c n ăng: F2 ghi t p ñang so n th o và o ñĩa. Nu ch ưa ñt tên scó thông bá o ñ ta gõ tên và o (tên ñư c ñt theo quy ñnh c a MS-DOS ) 113 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 113
  3. F3 m tp m i Alt+F9 d ch ch ươ ng trình Ctrl+F9 d ch và cho ch y ch ươ ng trì nh Alt+X K t thú c PASCAL tr v hñiu hà nh 3. Nh ng quy ñnh v cá ch vi t bi u th c và ch ươ ng trì nh 3.1. Bkí t TURBO PASCAL s d ng b ch vi t nh ư sau: - B 26 ch cá i Latinh: A, B, , Z ; a, b, , z - B cá c ch s: 0, 1, , 9 -Cá c kí hi u Toá n h c: +, -, * , /, =, , - D u g ch n i, d u ch m, d u ngo c vàcá c kí hi u ñc bi t khá c: _ . , ; ? [ ] ( ) $ % 3.2 T khóa Tkhoálà mt s tdà nh riêng c a TURBO PASCAL, nh ng t nà y ñãñư c gá n s n nh ng ch c n ăng ñc bi t, ta không ñư c dù ng và o vi c ñt tên hay cá c công vi c khá c. Sau ñây l à mt s t quan tr ng, b n ñc s ln l ư t bi t cá c t khoávà ch c n ăng c a t ng t qua cá c bà i h c. -Cá c t khoá chung: Program, begin, end -Cá c t khoáñ khai bá o: uses, const, type, label, var procedure, function array, string, record, -Cá c t khoá lnh: if then else case of for to do while do repeat until - M t s tên chu n: Boolean, char, integer, real, read, readln, write, writeln, abs, cos, sin, sqrt, exp 3.3 Tên Tên là mt dã y kí tdù ng ñch tên cá c ñi l ư ng nh ư tên h ng, tên bi n, tên ki u hay tên ch ươ ng trì nh con. Tên ñư c ñt theo quy t c sau: bt ñu b i m t ch cá i, r i ñ n ch s hay d u g ch n i và không dà i quá 127 kí t (!). Tên th ư ng ñư c ñt mang tí nh g i nh . TURBO PASCAL không phân bi t ch hoa và ch th ư ng khi vi t t khoá hay tên. Ví d : khi vi t ch ươ ng trì nh gi i ph ươ ng trì nh b c 2, ta có th ñt tên ch ươ ng trì nh là GIAI_PHUONG_TRINH_BAC2, ñt tên bi n ch a bi t th c ∆là delta (không ñư c dù ng kí hi u ∆), ñt tên cá c nghi m là X1 và X2, - D u ch m ph y (;) dù ng ñ ng ăn cá ch cá c câu l nh trong m t ch ươ ng trì nh - L i gi i th ích ñư c ñt trong c p d u (* *) ho c { }, cá c n i dung ñư c ch a trong c p du nà y sb ch ươ ng trì nh b qua trong khi d ch 114 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 114
  4. 4. C u trú c chung c a m t ch ươ ng trì nh PASCAL Ta hi u m t ch ươ ng trì nh má y tí nh là mt dã y cá c l nh, cá c chth hư ng d n má y th c hi n m t nhi m v , m t x línà o ñó trên t p cá c d ki n và o và cho ra k t qu . Mt ch ươ ng trình PASCAL có c u trúc chung nh ư sau: PROGRAM Tên_ ch ươ ng_ trì nh; USES Danh sách ñơ n vi.; LABEL Danh sách nhãn; CONST Danh sách h ng; TYPE Danh sách ki u; VAR Danh sách bi n; PROCEDURE Khai báo th t c; FUNCTION Khai báo hàm; BEGIN { Các câu l nh; } END. Mt ch ươ ng trì nh PASCAL ñin hì nh g m 3 ph n: Ph n tiêu ñ, ph n khai báo, ph n thân ch ươ ng trình. 4.1. Ph n tiêu ñ Ph n nà y cód ng PROGRAM Tên_ ch ươ ng_ trì nh; bt ñu b ng t khoá PROGRAM, ít nh t m t d u cá ch r i ñ n tên ch ươ ng trì nh, k t thú c b i du ch m ph y (;). Tên_ ch ươ ng_ trì nh do ta ñt ra, mang ýnghĩ a n i dung c a ch ươ ng trì nh, du ; là bt bu c ph i có . Víd : Program Giai_PT_bac2; Ph n tiêu ñlàtuỳch n, có th có hay không cũ ng ñư c, nh ưng n u ñãcóthìph i ñcá c thà nh ph n nh ư trên. 4.2. Ph n khai bá o Ph n nà y mô tcá c ñi t ư ng c a bà i toá n mà ch ươ ng trì nh s xlí . Cá c khai bá o khá c nhau ñư c vi t cá ch nhau b i d u ;. Gm: Khai báo ñơ n v uses Khai bá o nhã n label Khai bá o h ng: const Khai bá o ki u: Type Khai bá o bi n: Var Khai bá o ch ươ ng trì nh con: Procedure Function Cá c khai bá o c a ph n nà y tuỳ thu c t ng bà i toá n c th màcó th có hay không, ho c có mt ho c m t và i khai bá o. Cá ch khai bá o và sd ng c th sñư c gi i thi u trong m i ph n sau. 4.3. Ph n thân ch ươ ng trì nh 115 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 115
  5. Ph n nà y ñư c b t ñu b i t khoá BEGIN , k tthú c b i t khoá END và du ch m (.) ht. ð t gi a BEGIN và END làcá c l nh c a ch ươ ng trì nh , cá c l nh ñư c vi t cá ch nhau b i d u ; nh ư sau: BEGIN Lnh 1; Lnh 2; Lnh n; END. Ph n nà y b t bu c ph i cóñi vi m i ch ươ ng trì nh, nó ch a cá c l nh x lícá c d li u ñã ñư c mô t ph n khai bá o. ðây là ph n chí nh c a ch ươ ng trì nh ñ gi i quy t bà i toá n. Ng ư i l p trì nh ph i b nhi u công s c ñ thi t k thu t gi i và vi t ch ươ ng trì nh cho ph n nà y. 4.4. Cá c b ư c c ơ b n khi l p trì nh Tr ư c khi vi t m t ch ươ ng trì nh gi i quy t m t bà i toá n nà o ñó, ng ư i l p trì nh ph i bi t cá ch gi i bà i toá n ñó hay chí nh xá c h ơn ph i bi t thu t gi i ñgi i bà i toá n vàtrì nh bà y thu t gi i bng ngôn ng lp trì nh . Bư c 1: So n th o ch ươ ng trì nh ðây là bư c vi t m i m t ch ươ ng trì nh, có th vi t trên gi y tr ư c r i nh p và o má y, sa l i, c p nh t. Cá c ch ươ ng trì nh nà y ñư c g i là ch ươ ng trì nh ngu n, tên chú ng ñư c t ñng gá n ñuôi PAS. Ta có th dù ng m t h so n th o v ăn b n nà o ñó, th ư ng là hso n th o văn b n c a chí nh TURBO PASCAL. Bư c 2: D ch ch ươ ng trì nh (Alt+F9) G i ch ươ ng trì nh d ch (compiler) d ch ch ươ ng trì nh ngu n ñã vi t bư c 1 sang d ng mãmá y, k t qu th ư ng t o ra cá c t p d ng *.EXE, *.OBJ. Bư c nà y s cho phé p ta phá t hi n cá c l i ñ sa. Th ư ng cá c l i cúphá p nh ư thi u d u ; ho c vi t sai t khoá , sai tên sñư c thông bá o. Ta ph i s a h t cá c l i r i chuy n sang b ư c 3. Bư c 3: Ch y ch ươ ng trì nh và th (Ctrl+F9) Nu cá c d ki n ñư c cung c p chí nh xá c mà ch ươ ng trì nh cho k t qu sai thì ta ph i xem l i thu t gi i. ðây là li ñc bi t nghiêm tr ng vìnó không th hi n ra ngoà i qua cá c thông bá o l i vàcó th là m sai toà n b bà i toá n. Ta cũ ng ph i quay l i b ư c 1 ñ sa vàch y l i. Câu h i ôn t p ch ươ ng I 1- Nêu quy t c ñ t tên trong Turbo Pascal. Cho 3 ví d tên ñt ñúng, 3 ví d tên ñt sai. 2- Nêu c u trúc chung c a m t ch ươ ng trình Turbo Passcal. 116 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 116
  6. CHƯƠ NG II CÁC KI U D LI U C Ơ S VÀ CÁCH KHAI BÁO 1. Khá i ni m d li u, ki u d li u 1.1. Khá i ni m d li u D li u là tt ccá c thông tin có th t ñư c má y tí nh x lí . Chú ng có nhi u d ng khá c nhau, th hi n qua cá c ñi t ư ng c n x lí nh ư văn b n, s li u, âm thanh, hì nh nh, 1.2. Ki u d li u Ki u d li u là tp h p t t ccá c giátrmà mt ñi l ư ng thu c ki u ñócó th nh n ñư c, trên ñóxá c ñnh m t s phé p toá n. ðiu ñócónghĩ a là mt ñi l ư ng (bi n, h ng, ) chcó th nh n m t t p h p cá c g iátr nh t ñnh (ch không ph i m i giátrcó th có ) và trên t p h p cá c giátrñócóxá c ñnh m t sphé p toá n. Ch ng h n ki u s nguyên thông th ư ng ch nh n cá c giátr trong ph m vi -215 ñ n 2 15 -1, trên ñócócá c phé p toá n s h c +, -, *, /, div, mod vàcá c phé p so sá nh =, . 1.3. Phân lo i cá c ki u d li u TURBO PASCAL phân lo i cá c ki u d li u nh ư sau Ki u d li u Ki u vô hư ng ñơ n gi n Ki u d li u có cu tr úc Con tr Ki u c ơ s Ki u do ng ư i dù ng ñnh nghĩ a Ki u Ki u s Ki u Ki u Ki u li t Ki u M ng B n Tp Tp Ki u logic nguyên s kí t kê kho ng con ghi hp xâu Bool th c kí t 2. Cá c ki u d li u ñơ n gi n 2.1. Ki u s nguyên Ki u s nguyên bao g m t t ccá c s nguyên có th bi u di n ñư c trên má y tí nh. T khoá : Integer Ph m vi bi u di n: t -32768 ñ n 32767 , t c -215 ñ n 2 15 -1 ( dù ng 2 byte=16 bit ) Nh ư vy ki u integer chlà mt ño n c a t p s nguyên Cá c phé p toá n: Ki u integer ñư c th c hi n v i t t c cá c phé p toá n dà nh cho s nguyên thông th ư ng 117 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 117
  7. + Cá c phé p toá n s h c: + ( cng) , - ( tr ), * ( nhân ) , / ( chia ) , DIV ( phé p chia l y ph n nguyên, víd : 7 div 3=2), MOD ( phé p chia l y ph n d ư, víd : 7 mod 3=1) + Cá c phé p so sá nh: = ( bng ) , ( ln h ơn) , >= ( ln h ơn ho c b ng ), <> ( khá c ) Trong TURBO PASCAL, ngoà i ki u s nguyên ñư c khai bá o v i t khoá integer nó i trên cò n cócá c ki u s nguyên khá c ( xem b ng ) ph c v cho cá c m c ñích tí nh toá n khá c nhau Ki u Ph m vi bi u di n Kí ch th ư c (byte) ( tkhoá ) Byte 0 255 1 Shortint -128 127 1 Integer -32768 32767 2 Word 0 65535 2 Longint -2147483648 2147483647 4 2.2. Ki u s th c Ki u s th c là tp h p t t ccá c s th c có th bi u di n ñư c trên má y tí nh. Không ph i t t ccá c s th c ñ u có th bi u di n ñư c trên má y tí nh màñ ln vàñ tinh xá c c a nóph thu c và o má y và ch ươ ng trì nh d ch. - Ki u s th c ñư c khai bá o v i t khoá real -Ph m vi bi u bi n: t 1.9x10 -39 ñ n 1.7x10 38 -Cá c phé ptoá n: Ki u real có th th c hi n v i t t ccá c phé p toá n c a s th c thông th ư ng: +, -, *, / vàcá c phé p so sá nh ( không cóphé p div và mod dà nh cho s th c ). -Cá ch vi t s th c d ng d u ph y ñng: Trong má y tí nh s th c ñư c vi t dù ng d u ch m ñ ng ăn gi a ph n nguyên và ph n l th p phân. Trong d ng d u ph y ñng s th c ñư c vi t theo d ng: AE+b, trong ñó A g i là ph n ñnh tr , E+b g i là ph n mũ . Víd : Ta xem xé t cá c cá ch vi t khá c nhau c a cù ng 1 s 824.12345=8.2412345x10 2 hay 8.2412345E+2 =824123.45x10 -3 hay 824123.45E-3 Trong TURBO PASCAL, ngoà i ki u s th c ñư c khai bá o v i t khoá real nó i trên cò n có cá c ki u s th c khá c ( xem b ng ) ph c v cho cá c m c ñích tí nh toá n v i ñ ln vàñchí nh xá c khá c nhau Ki u Ph m vi biu di n Ch scónghĩ a Kí ch th ư c ( byte ) ( tkhoá ) Single 1.5E-45 3.4E+38 7-8 4 Real 2.9E-39 1.7E+38 11-12 6 Double 5.0E-324 1.7E+308 15-16 8 Extended 3.4E-4932 1.1E+4932 19-20 10 118 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 118
  8. * Cá c hà m s h c chu n dù ng cho ki u s nguyên và s th c: ðây là nh ng hà m ñư c ñnh nghĩ a s n trong TURBO PASCAL, ta có th sd ng nh ư cá c công cñtí nh toá n Tên hà m ( trong TP ) Cho k t qu ( hà m) ABS(X) | X ( giátr tuy t ñi c a X) SQR(X) X 2 ( X bì nh ph ươ ng) SQRT(X) X (căn b c 2 c a X ) LN(X) lnX (Logarit Nepe) EXP(X) eX SIN(X) sinX ; X cho b ng radian COS(X) cosX; X cho b ng radian ARCTAN(X) arctangX SUCC(n) n+1 ( s ti p theo c a n ) , n nguyên PRED(n) n-1 ( s k tr ư c c a n ) , n nguyên TRUNC(X) ct, cho ph n nguyên c a X ROUND(X) Là m trò n ph n lc a X 2.3. Ki u kí t Ki u kí tlà tp h p t t ccá c kí tc a b ng mãmá y tí nh ( ASCII ) Tkhoá Char Có th sd ng cá c phé p toá n so sá nh ñi v i ki u kí t, kí tnà o ñng tr ư c theo th tc a b ng mãmá y tí nh sñư c coi lành hơn, kí tñng sau ñư c xem là ln h ơn Víd : 'a' , Ki u logic boolean chcó 2giátr : True và False Ng ư i ta ñnh nghĩ a: False < True 119 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 119
  9. 2.5. Ki u li t kê (Enumerated scalar type) Là ki u cho phé png ư i l p trì nh có th tñnh nghĩ a ra cá c ki u vô hư ng b ng cá ch li t kê cá c giátrc a ki u vô hư ng ra thông qua cá c tên do ng ư i l p trì nh t o ra. Danh sá ch cá c giá trnà y ñư c ñt trong ngo c ñơ n vàñư c mô t bng m t tên ki u trong ph n mô t (Ph n TYPE). Tkhoá : TYPE Víd : TYPE Boolean=(False, True); Color=(Red, Blue, Green, While, Black); Mt bi n vô hư ng có th ñnh nghĩ a thông qua cá c ki u ñãñư c mô t trong ph n TYPE nh ư sau: VAR Ketqua: Boolean; Mau1, Mau2: Color; Ho c khai bá i tr c ti p v i mô t ki u d li u: VAR Gioitinh: (Nam, nu); Ngay: (Chunhat, Hai, Ba, Tu, Nam, Sau, Bay); Víd : Ketqua:= True; Mau1:=Blue; Gioitinh:=Nam; Ngay:=Chunhat; 2.6. Ki u kho ng con (Sub- range Type) Là ki u vô hư ng ñư c d ng khi m t bi n chñư c lá y giátr trong m t kho ng (xá c ñnh bi c n trên và cn d ư i). • Quy t c ñnh nghĩ a: Hang_can_duoi Hang_can_tren; Trong ñó: Hang_can_duoi < Hang_can_tren, vàcù ng ki u. • Tá c d ng: - Ti t ki m ô nh . -Có th ki m tra giátrc a bi n khi ch y ch ươ ng trì nh không ñư c v ư t ra kh i gi i h n c a kho ng con. Víd : TYPE Ngay= (Chunhat, Hai, Ba, Tu, Nam, Sau, Bay); Chu_cai_hoa='A' 'Z'; VAR ch : Chu_cai_hoa; Ngay_lam_viec: Hai Bay; 120 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 120
  10. 3. Cá c khai bá o 3.1. Khai báo ñơ n v ðơ n v là m t ki u t ch c c a ch ươ ng trinh Pascal, trong ñó có các ch ươ ng trình con, nh m th c hi n m t m t ch c n ăng nào ñó. Ta khai báo các ñơ n v s d ng trong ch ươ ng trình theo cú pháp sau: Uses Tên_ ñơ n_vi; CRT là ñơ n v chun qu n lý màn hình, bàn phím; GRAPH là ñơ n v ñ h a. PRINTER là ñơ n v khai báo máy in, máy in ñưc cài ñt tên là LST. Ví d 1: Uses crt; Ví d 2: Uses crt, graph, printer; 3.2. Khai báo nhãn Nhãn là m t tên trong Pascal. Nhãn dùng ñánh d u m t câu l nh trong ch ươ ng trình ñ có th chuy n ñiu khi n t i ñó. Khai báo nhãn trong ch ươ ng trình theo cú pháp sau: Label Tên_nhãn; Cách ñánh d u nhãn cho câu l nh nh ư sau: Tên_nhãn : Câu l nh; Ví d : Label Tiep; . . . Tiep : Readln(x); 3.3. Khai bá o h ng Hng làñi l ư ng không thay ñi giátr trong quátrì nh x lí . Ta khai bá o h ng theo cú phá p: const Tên_h ng=Giátr ; ñó: Tên_h ng do ta ñt ra, Giátrlàgiátrmà tên h ng s nh n và gi không ñi su t quátrì nh x lí . Víd : const n=10; { khai bá o h ng s nguyên n=10} pi=3.1416; { khai bá o h ng s pi } ki_tu='Y'; { khai bá o h ng kí t ki_tu nh n kí t Y} 3.4. Khai báo ki u Khai báo ki u là ñnh ngh ĩa m t ki u d li u do ng ưi s d ng t o ra. Khai báo ki u có cú pháp sau: Type Tên_ki u = Mô_ t _ki u; Ví d : Type Mau = (do, xanh, vang, tim, nau); Type Phuong_tien_GT = (xe_dap, xe_may, o_to, tau_hoa); Type Tuoi_nguoi = 1 300; 121 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 121
  11. 3.5. Khai bá o bi n Bi n làñi l ư ng có th thay ñi giátr trong quátrì nh x lí . Bi n c a ch ươ ng trì nh là tên c a ô nh ct gi d li u. Mu n sd ng bi n nà o ta ph i khai bá o tr ư c bi n ñó bng cá ch vi t tên bi n trong ph n khai bá o ñu ch ươ ng trì nh sau t khoá Var. Cúphá p: Var Tên_bi n:Ki u_d _li u; ñó: Tên_bi n do ta ñt ra, Ki u_d _li u là tên c a m t trong cá c ki u d li u c a TURBO PASCAL, d u hai ch m b t bu c ph i có ñ ng ăn gi a 2 ph n c a khai bá o, d u ch m ph y k t thú c dò ng khai bá o. Cá c bi n cócù ng ki u có th ñư c khai bá o cù ng nhau bng cá ch vi t cá c tên bi n cá ch nhau b i dâúph y (,), nhó m cá c bi n khá c ki u nhau ñư c vi t cá ch nhau b i d u ; Víd : Var i:integer; { khai bá o m t bi n có tên là I, bi n nà y có ki u nguyên} x,y,z:real; { khai bá o 3 bi n x,y,z nh n cá c giátrcó ki u th c } t: char; { khai bá o bi n t có ki u kí t } kiem_tra:boolean; { khai bá o bi n logic } Tuoi: 1 300; ð i v i m i bà i toá n, khi phân tí ch thu t toá n, ta ph i xá c ñnh rõ ngay ch ươ ng trì nh c n ph i nh p và o cá c d ki n gì ? cá c k t qu trung gian nà o c n ph i ñư c ch a, d li u ra là nh ng gì ? ñ tñócó ph n khai bá o chí nh xá c, không b thi u màcũ ng không th a gây lã ng phí ô nh (!) 4. Bi u th c và câu l nh 4.1. Bi u th c Bi u th c là mt công th c tí nh toá n ñcó mt giátr theo m t công th c toá n h c nà o ñó. Mt bi u th c bao g m cá c toá n t kt h p v i cá c toá n h ng. Cá c toá n t trong TURBO PASCAL g m: cá c phé p toá n s h c ( +, -, *, / ), cá c phé p so sá nh ( =, , ), cá c phé p toá n logic ( NOT, AND, OR); Cá c toá n h ng: gm cá c h ng, cá c bi n, cá c hà m ñư c d nh nghĩ a trong TURBO PASCAL Th tưu tiên cá c phé p toá n nh ư sau: 1. du ngo c ( ) ni dung vi t trong d u ngo c ñư c ưu tiên th c hi n tr ư c nh t 2. phé p l y ñi ( - ), phé p NOT 3. cá c phé p tí nh lo i nhân, chia: *, /, DIV, MOD, AND 4. cá c phé p tí nh lo i c ng, tr : +, -, OR 5. cá c phé p so sá nh: +, , Chú ý: Bi u th c trong Pascal ch ñưc vi t trên 1 dong do ñó ph i chú ý dùng các d u ( ) ñ vi t cho chính xác. b 2 − 4ac Ví d : Bi u th c toán h c vi t là: 1 + 2ab Trong Pascal vi t là: (b*b- 4*a*c)/(1+sqrt(2*a*b)) 2 + sin x + cos x Bi u th c toán hc vi t là: 2sin x + 1 Trong Pascal vi t là: (2+ sqrt (sin(x)+cos(x)))/(2* sin(x)+1) 122 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 122
  12. 4.2. Câu l nh Câu l nh xá c ñnh công vi c, thao tá c mà ch ươ ng trì nh ph i th c hi n ñ xlícá c d li u ñã mô t , khai bá o. Cá c lnh vi t cá ch nhau b i d u (;), TURBO PASCAL phân lo i cá c l nh nh ư sau: - L nh ñơ n: làcá c l nh không ch a cá c l nh khá c - L nh có cu trú c: th ư ng ch a nhi u h ơn m t l nh ñơ n, bao g m kh i l nh, cá c l nh th và rnhá nh, cá c l nh l p. - L nh h p thà nh ( cò n g i là lnh ph c hay l nh ghé p ): gm m t nhó m cá c l nh ñư c ñt gi a c p t khoá begin end; ( du ch m ph y (;) kt thú c ch không ph i d u ch m ) nh ư sau: begin lnh1; lnh2; lnhn; end; D ng l nh nà y cho ta th y tí nh có cu trú c c a TURBO PASCAL. Mt nhó m cá c l nh gi i quy t tr n v n m t công vi c nà o ñósñư c t ch c trong m t kh i l nh d ng nà y, và tng công vi c c a bà i toá n l n sñư c giao cho t ng ng ư i là m tr ư c khi ghé p l i ñgi i bà i toá n tng th . Chú ng ta sñ cp kĩ hơn v vn ñnà y ph n ch ươ ng trì nh con ( tht c vàhà m ). Bài t p ch ươ ng 2 Hãy vi t các khai báo bi n cho các bài toán sau: 1. Tí nh n giai th a: n! =1.2 n v i n>1 2. Tí nh cá c t ng: S=1/2 + 1/4 + + 1/(2k) Q=1.1!+2.2!+ +n.n! 3. Tì m và in ra t t ccá c s chí nh ph ươ ng nh hơn m t s cho tr ư c, cho bi t có bao nhiêu s chí nh ph ươ ng nh ư v y. 4. Vi t ch ươ ng trì nh gi i bà i toá n c : " Va gà va chó , ból i cho trò n, ba m ươ i sá u con, m t tr ăm chân ch n. H i có bao nhiêu gà , bao nhiêu chó ?" 5. Vi t ch ươ ng trì nh tì m ư c s chung l n nh t c a 2 s nguyên d ươ ng cho tr ư c. 2 n x x x -4 n 6. Tí nh Ex= 1+ + + + + v i ñchí nh xá c ε=10 ( ABS(x /n!) < ε ), giátr x ñư c nh p và o t bà n 1! 2! n! phí m khi ch y ch ươ ng trì nh. 7. Cn có 50000 ñ tcá c lo i gi y b c 1000 ñ, 2000 ñ và 5000 ñ. Tì m t t ccá c ph ươ ng án có th . 8. Chuy n m t s th p phân nguyên d ươ ng thà nh m t s nh phân, in ra mà n hì nh d ng X10 = Y 2 123 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 123
  13. CH ƯƠ NG III CÁC TH T C VÀO RA D LI U VÀ CÁC C U TRÚC ðIU KHI N 1. Phé p gá n Phé p gá n dù ng ñgá n giátrc a m t bi u th c cho m t bi n. Kí hi u phé p gá n là := Cúphá p Tên_bi n:=Bi u th c; Ý nghĩ a: Khi g p l nh nà y, tr ư c h t má y stí nh giátrc a bi u th c vph i r i gá n giá trtí nh ñư c cho bi n vtrá i. Chú ý: ki u d li u c a bi u th c ph i phù h p v i ki u d li u c a bi n v trái. Víd : Vi cá c bi n ñãñư c khai bá o thí ch h p ñu ch ươ ng trì nh, trong thân ch ươ ng trì nh ta có th vi t x:=5; nghĩlà bi n x nh n giátr 5 x:=x+1; giátrc a bi n x ñư c thay th bi giátrc a chí nh nó tăng thêm m t delta:=b*b-4*a*c; tí nh giátrc a delta trong ch ươ ng trì nh gi i ph ươ ng trì nh b c 2 doan:= true; chu_cai:= 'A'; 2. Cá c tht c Và o- Ra d li u 2.1. Cá c tht c và o d li u Cá c bi n c a ch ươ ng trì nh có th nh n giátr thông qua phé p gá n trong ch ươ ng trì nh, tuy nhiên, ñgá n giátr cho bi n thông qua cá c thi t b nh p chu n nh ư bà n phí m ta dù ng m t trong 2 tht c sau read( danh sá ch cá c tên bi n); readln(danh sá ch cá c tên bi n); ý nghĩ a: nh p giátr cho t ng bi n trong danh sá ch tên bi n b ng cá ch gõ và o t bà n phí m. Cá c bi n trong danh sá ch cá c tên bi n vi t cá ch nhau bi d u ph y (,). Khi nh p cá c giá trc th , cá c giátrph i phù hp v i cá c bi n trong danh sá ch v s lư ng bi n, ki u c a bi n vàvtrícá c bi n trong danh sá ch. Các giá tr s ñưc vi t cá ch nhau b i ít nh t m t d u kho ng tr ng (du cá ch). Các bi n trong th t c này cho phép là các ki u sau: Nguyên, th c, kí t , xâu kí t , kho ng con, Không ñưc là ki u logic. Víd : vi cá c khai bá o trên (bà i 2.III), ta có th vi t read(x,y,z); readln(t); khi ch y ch ươ ng trì nh ta có th gõ : 3 6 4 ↵ N↵ nghĩ a là bi n x nh n giátr 3, bi n y nh n giátr 6, bi n z nh n giátr 4 cò n bi n t nh n giátr N ( ki u char). 124 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 124
  14. Hai cá ch vi t read và readln cóýnghĩ a nh ư nhau v tá c d ng nh p d li u, chkhá c là sau khi th c hi n xong ch c n ăng nà y thì lnh readln sñư a con tr vñu dò ng ti p theo, cò n l nh read thì không. Ngoà i 2 cá ch vi t trên cò n cótht c readln; không có tham s cho phé p d ng ch ươ ng trì nh ch gõ mt phí m b t kì tr ư c khi ti p t c. Chú ý: Khi vào d li u cho bi n kí t ho c bi n xâu kí t ta dùng th t c Readln( ) và mi bi n trong m t th t c. Ví d : ð u ch ươ ng trình khai báo các bi n Var t: string; p: char; i,j,k : integer; Trong thân ch ươ ng trình vào d li u cho các bi n trên có th vi t nh ư sau: Readln(t); readln(p); readln(i,j,k); 2.2. Cá c tht c ra d li u Có 2 cá ch vi t d li u ra mà n hì nh: write( cá c m c c n ghi ra ); writeln( cá c m c c n ghi ra ); -ýnghĩ a: ñư a ra mà n hì nh cá c k t qutí nh toá n trong ch ươ ng trì nh, giátrcá c bi n, hay tt c nh ng gì nm gi a c p d u nhá y ' ' -Víd : write(x,y); In ra mà n hì nh cá c giátr x và y, k t qu trên mà n hì nh là 36 Có th vi t thà nh write(x); write(y); hay rõ hơn write('x=',x);write('y=',y); thì kt qulà x=3 y=6 cá c kí t 'x=' và 'y=' n m trong c p d u ngo c chcótá c d ng trì nh bà y, là m phân bit rõ cá c giátrñư c vi t ra. Hai cá ch vi t trên cóýnghĩ a nh ư nhau v vi c th hi n d li u ra mà n hì nh, tuy nhiên th t c writeln s chuy n con tr xu ng ñu dò ng ti p theo sau khi th c hi n, con th tuc write gi nguyên v trí con tr . Ngoà i 2 d ng trên cò n cótht c writeln; không có tham s chcótá c d ng ñư a ra m t dò ng tr ng không ch a gì . 2. 3. Kt h p read, readln và write, writeln ñ nh p d li u Ta có th kt h p cá c tht c trên ñt o ra d ng nh p d li u sá ng s a vàñp m t theo m u: write(' câu nh c nh p d li u '); readln(bi n); Ví d : write( ' Hã y nh p d li u cho bi n x:'); hay write('x='); readln(x); readln(x); kt quslà : Hã y nh p d li u cho bi n x:( ta gõ ) 3 hay x= ( ta gõ ) 3 nên vi t câu d n nh p g i ý bi n sñư c nh p và o, không nên b qua ho c vi t writeln( ' Hã y nh p d li u cho bi n x:'); hay writeln('x='); read(x); read(x); vì nh ư th khi ch y ch ươ ng trì nh con tr nh p snh y xu ng dò ng d ư i dò ng h ư ng d n, nhì n không ñp m t th nà y Hã y nh p d li u cho bi n x: hay x= ( ta gõ ) 3 ( ta gõ ) 3 125 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 125
  15. 2.4. Vi t ra d li u có quy cá ch Mt trong nh ng yêu c u khi trì nh bà y d li u ra mà n hì nh làph i sá ng s a, ñúng quy cá ch, dñc, d hi u. TURBO PASCAL cócá c quy ñnh cho cá c ki u d li u nh ư sau *. Vi t ra ki u s nguyên write(i:n); ho c writeln(i:n); trong ñó I là s nguyên c n ghi ra, n là s ch dà nh ñ vi t ra s nguyên ñó trên mà n hì nh, má y s btrí s nguyên t ph i sang trá i, n u th a sb tr ng bên trá i. Víd : vi I=23, j=234 thì writeln(i);writeln(i:5); writeln(j:5); s cho 23 _ _ 23 _ 234 Nh ư vy vi t không có quy cá ch s căn l trá i, trong khi vi t có quy cá ch s căn ph i. *- Vi t ra ki u s th c mu 1: write(r:m:n); ho c writeln(r:m:n); trong ñó r là s th c c n ghi ra, m là s ch dà nh cho c s th c ( kc du ch m ng ăn cá ch ph n nguyên và ph n l , n u có ) n là s ch dà nh cho ph n l th p phân. mu 2: write(r:n); trong ñó n là s ch cho c s th c vi t d ư i d ng e-mũ Víd : vi r=123.45 thì writeln(r); writeln(r:8:3); writeln(r:7); s cho k t qu 1.234500000E+02 ( 10 ch sdà nh cho ph n l ) 123.450 1.2E+00 ( cólà m trò n ) *- Vi t ra ki u kí t Vi ki u kí t, vi t không quy cá ch s cho ra kí tbì nh th ư ng, m i kí t chi m m t ch , cò n vi t có quy cá ch thìcá c kí tsñư c b trí tph i sang trá i, thêm cá c d u kho ng cá ch và o bên trá i n u th a ch . Víd : vi t='Y' thì writeln(t); writeln(t:3); writeln('PASCAL'); writeln('PASCAL':8); s cho Y Y PASCAL PASCAL *- Vi t ra ki u boolean ki u boolean v i 2 giátrlà TRUE và FALSE cũ ng ñư c vi t ra theo d ng write(ok); ho c writeln(ok:n); trong ñó ok là bi n ki u boolean, n là s ch ñ vi t ra bi n ok. e- In ra má y in Cá c tht c write và writeln cũ ng dù ng ññư a d li u ra má y in. Mu n v y, ñu ch ươ ng trì nh ph i có li g i ch ươ ng trì nh chu n USES PRINTER; ñu ch ươ ng trì nh và ph i có thà nh ph n Lst và du ph y (,) ñng tr ư c n i dung c n in ra. Víd : writeln(Lst, 'k t q a là ', S:8:2); 126 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 126
  16. *-Cá c tht c trì nh bà y mà n hì nh c a TURBO PASCAL ðây là nh ng th t c có sn c a TURBO PASCAL ph c v cho vi c trì nh bà y mà n hì nh. Mu n dù ng cá c tht c nà y ph i có li g i ch ươ ng trì nh chu n USES CRT; ñu ch ươ ng trì nh. Cá c tht c ñólà : CLRSCR; xoátoà n b mà n hì nh, chuy n con tr vgó c trên bên trá i c a mà n hì nh. CLREOF; xoácá c kí t bên ph i vtrí con tr hi n th i GOTOXY(x,y); chuy n con trmà n hì nh ñ n ñim cótoñ (x,y) ( mà n hì nh v ăn b n có 25 dò ng, 80 ct, trong tht c nà y x làtoñ ct, y làtoñdò ng ) TEXTCOLOR(Mau); thi t l p mà u cho v ăn b n, Mau là s nguyên có th nh n giátr t 0 tr lên, giátr ln nh t c a Mau ph thu c lo i mà n hì nh c a má y. Ta có th chñnh Mau b ng mt ch cá i ti ng Anh chmà u ( xem b ng ) S nguyên chmà u Tên mà u 0 Black 1 Blue 2 Green 3 Cyan 4 Red 5 Magenta 6 Brown 7 LightGrey 8 DarkGrey 9 LightBlue 10 LightGreen 11 LightCyan 12 LightRed 13 LightMagenta 14 Yellow 15 White TEXTBACKGROUND(Mau); xá c l p mà u n n cho v ăn b n. Víd : ño n l nh ch ươ ng trì nh in dò ng ch THU DO HA NOI mà u xanh trên n n và ng lên mà n hì nh uses CRT; textbackground(14); textcolor(blue); write(' THU DO HA NOI'); 2.5. Các ch ươ ng trình ng d ng nh ng l nh ñã h c * Bài toán 1: Tính di n tích và chu vi c a hình tròn. Phân tích bài toán :Trong bài toán này bi n vào là R; bi n ra là: s (di n tích), cv ( chu vi); các bi n ñ u có ki u s th c. Tính toán theo công th c sau: s = 3.14* R 2 ; cv = 2* 3.14 * R. 127 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 127
  17. Ch ươ ng trình ñưc vi t nh ư sau: Program Dien_tich_chu_vi_hinh_tron; Uses crt; Var cv, s, r : real; Begin Clrscr; Write(' hay nhap vao ban kinh r: '); Readln(r); S:= 3.14 * r*r; Cv:=2*3.14*r; Writeln(' Dien tich = ', s:8:2); Writeln(' Chu vi = ', cv:8:2); Readln; End. * Bài toán 2: Bài toán tính l ươ ng, b o hi m xã h i, b o hi m y t và ti n l ĩnh c a cán b công ch c nhà n ưc. Theo quy ñ nh hi n nay thì l ươ ng = h s l ươ ng * 350000; b o hi m xã h i = 5% * l ươ ng ; b o hi m y t = 1% * l ươ ng; ti n l ĩnh = l ươ ng - b o hi m xã h i - b o hi m y t . Phân tích bài toán: Trong bài toán này các bi n vào là Ht ( h và ten) ki u xâu kí t và bi n HS (h s l ươ ng) ki u s th c. Các bi n ra là Ht, HS, luong, BHXH ( b o hi m xá h i) ki u th c, BHYT ( b o hi m y t ) ki u th c, TL ( ti n l ĩnh ) ki u th c. Tính toán theo các công th c ñã cho trên. Trong ch ươ ng trình có s dung các câu l nh trình bày màn hình. Ch ươ ng trình nh ư sau: Program Tinh_luong; Uses Crt; Var HT:string[25]; LUONG, HS, BHXH, BHYT, TL:Real; Begin Clrscr; Textcolor(red); Textbackground(Blue); Gotoxy(10,5); Write(' Nhap ho va ten: '); Readln(HT); Write(' Nhap he so luong '); Readln(HS); LUONG:= HS * 350000; HBXH:= LUONG * 0.05; BHYT:= LUONG * 0.01; TL:= LUONG-BHXH-BHYT; WRITELN(HT:25,HS:6:2,LUONG:10:1,BHXH:10:1,BHYT:10:1,TL:10:1); READLN; END. 128 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 128
  18. 3. Các l nh ñiu ki n Ph n nà y ta s nghiên c u cá c l nh cho phé p ch ươ ng trì nh r nhá nh th c hi n m t công vi c d a trên giátr mt ñiu ki n nà o ñó. Có 2 d ng l nh ñiu ki n là câu l nh ñiu ki n (cho phé p r ti ña 2 nhá nh) và câu l nh l a ch n (cho phé p r nhi u nhá nh). 3.1. Câu l nh ñiu ki n a. D ng l nh • D ng ñơ n gi n IF THEN ; trong ñó là mt bi u th c ñiu ki n liên h bi cá c toá n t : =, , = và (ho c) cá c phé p toá n logic NOT, AND, OR có th là mt câu l nh ñơ n gi n ho c ph c h p. -ýnghĩ a : khi g p l nh nà y, tr ư c tiên má y s ki m tra , n u làñúng thìs cho th c hi n , cò n n u sai thìmá y sb qua và chuy n sang công vi c ti p theo. • D ng t ng quá t IF THEN ELSE ; -ýnghĩ a : khi g p l nh nà y, tr ư c tiên má y cũ ng s ki m tra , n u là ñúng thìs cho th c hi n , cò n trá i l i là sai thìmá y s th c hi n . Sơ ñ kh i c a câu l nh ñiu ki n nh ư sau §óng Sai §iÒukiÖn LÖnh1 LÖnh 2 b. Vídá p d ng VD1: Vi t ch ươ ng trì nh nh p và o m t s a tuỳý , r i ki m tra n u a không âm thì in ra c ăn bc 2 c a a, trá i l i in ra thông bá o 's âm không có căn b c 2' Ch ươ ng trì nh ñư c vi t nh ư sau: Program canbac2; Uses crt; Var a: real; Begin write(' Hay nhap vao so a:'); readln(a); if a >= 0 then writeln(' Can bac hai cua a la:', sqrt(a)) else writeln(' So am khong co can bac hai'); Readln; End. 129 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 129
  19. VD2: Vi t ch ươ ng trì nh gi i ph ươ ng trì nh b c hai ax 2+bx+c=0 Program GPTB2; Uses crt; var a,b,c,x1,x2,dta:real; Begin clrscr; gotoxy(5,5); writeln('CHUONG TRINH GIAI PHUONG TRINH BAC HAI'); writeln; write('Vao cac he so:'); readln(a,b,c); dta:=b*b-4*a*c; if dta>0 then begin writeln('Phuong trinh co 2 nghiem thuc:'); X1:=(-b+sqrt(dta))/(2*a); X2:=(-b-sqrt(dta))/(2*a); writeln('X1=',X1:6:2); writeln('X2=',X2:6:2); end; if dta=0 then writeln('Phuong trinh co nghiem kep X=',-b/(2*a):6:2); if dta 0 má y ph i th c hi n c 5 lnh trong c p tkhoá begin end; sau t khoá then, cò n ng v i tr ư ng h p dta=0 thìmá y chph i th c hi n ñúng mt l nh, do ñó không c n dù ng câu l nh ph c h p. -Cá c câu l nh ñiu ki n có th vi t l ng nhau. Tc làcá c và l i có th là câu l nh ñiu ki n d ng IF THEN IF THEN ELSE khi ñó cn l ưu ý IF nà o ñi v i THEN nà o. Ch ng h n xem ño n ch ươ ng trì nh phân lo i k t quh c t p sau: IF diem>=5 THEN IF diem>=7 THEN loai:='Kha gioi' ELSE loai:='TB' ELSE IF diem>=3 THEN loai:='Yeu' ELSE loai:='Kem'; 130 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 130
  20. 3.2. Câu l nh l a ch n: CASE OF Câu l nh ñiu ki n ch cho phé p ta th c hi n r 2 nhá nh ng v i hai giátrñúng hay sai c a bi u th c ñiu ki n. ðcó th th c hi n r nhi u nhá nh ng v i nhi u giátrkhá c nhau c a mt bi u th c, ta ph i s d ng câu l nh l a ch n. a. D ng l nh D ng ñơ n gi n: D ng t ng quá t: CASE OF CASE OF hng1: ; hng1: ; hng2: ; hng2: ; hngn: ; hngn: END; ELSE ; END; Trong ñó vàcá c h ng ph i có cù ng ki uvàph i làcá c ki u vô hư ng ñ m ñư c (cá c ki u s nguyên ki u kí t, ki u Boolean ñã bi t). ýnghĩ a: Khi g p câu l nh rnhá nh, ñãñư c nh n m t giátrnà o ñó, giátrnà y là mt h ng (s ho c kí t). Nu nh n giátrlà hng nà o thì t ươ ng ng v i nósñư c th c hi n. Cò n n u nh n giátr không r ơi và o h ng nà o thìmá y sb qua l nh ñi v i d ng ñơ n gi n, má y s th c hi n sau t khoá ELSE ñi v i d ng tng quá t. Lưu ý: Tkhoá END v i d u ch m ph y (;) trong câu l nh nà y ñch rng k t thú c câu lnh l a ch n ch không ph i k t thú c ch ươ ng trì nh con. b. Vídá p d ng VD1: Vi t ch ươ ng trì nh xem th i khoá bi u c a m t ngà y trong tu n. Yêu c u: má y in ra câu h i ' B n mu n xem th i khoá bi u c a th my?' ta gõvà o ngà y th (c a tu n) mu n xem và má y s in ra th i khoá bi u c a ngà y hôm ñó. Ch ươ ng trì nh ñư c vi t nh ư sau: ( gi s xem th i khoá bi u c a m t l p ph thông, b n ñc có th hi u ch nh theo ýmì nh) Program XEM_TKB; Uses crt; Var thu: 2 7; {bi n thu ñ ch a cá c th ngà y trong tu n} Begin write(' Ban muon xem thoi khoa bieu cua thu may?'); readln(thu); CASE thu OF 2:writeln('Toan Ly Van'); 3:writeln('Sinh Ki Hoa'); 4: writeln('Toan Hoa Ly'); 5: writeln('Van Sinh The duc'); 6: writeln('Su Dia Chinh tri'); 7: writeln('Van Toan Sinh hoat'); END; Readln; End. 131 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 131
  21. B n ñc có th á p d ng câu l nh d ng t ng quá t ñ m rng ch ươ ng trì nh xem th i khoá bi u nà y sao cho khi gõvà o m t s nà o ñó không ph i là th trong tu n (2 7) má y s in ra thông bá o r ng ñólàngà y ngh . Lưu ý: - Sau m i h ng má y ch th c hi n ñúng m t l nh. Do ñó nu mu n dù ng nhi u h ơn mt l nh thì ta ph i s d ng câu l nh ph c h p. -Cá c h ng có th vi t g p l i v i nhau. Ch ng h n n u th 3 và th 5 cócù ng th i khoá bi u thì thay vìph i vit 2 dò ng l nh, ta có th vi t: 3,5: writeln('Sinh Ki Hoa'); -Cá c câu l nh l a ch n có th lng nhau. Tc là trong câu l nh l a ch n l i có th ch a câu l nh l a ch n khá c. 4. Cá c l nh l p Trong l p trì nh gi i quy t cá c bà i toá n, ta có th gp tr ư ng h p ch ươ ng trì nh ph i th c hi n l p ñi l p l i m t công vi c nà o ñó. Vi c th c hi n l p ph i theo m t quy lu t nà o ñó. S ln l p có th ñư c xá c ñnh tr ư c ho c không xá c ñnh. Sau ñây ta s ln l ư t xé t cá c l nh lp d ng nà y. 4.1- L nh l p có s ln l p xá c ñnh ðây là mt câu l nh có cu trú c cho phé p th c hi n l p ñi l p l i m t công vi c (ño n lnh) nà o ñó vi s ln th c hi n ñư c xá c ñnh tr ư c. ð d hi u tr ư c h t ta xé t m t víd ñơ n gi n sau: Gi s ta ph i vi t ra cá c s t 1 ñ n 10, m i s chi m m t dò ng trên mà n hì nh. Ta có th th c hi n công vi c nà y b i 10 lnh writeln nh ư sau: writeln(1); writeln(2); writeln(10); ðây làcá ch vi t dà i dò ng vàñơ n ñiu trong khi ta có th th c hi n công vi c trên b i mt dò ng l nh ng n g n: FOR I:=1 TO 10 DO writeln(I); ýnghĩ a c a câu l nh nà y là : cho m t bi n nh n giátr nguyên I ch y t 1 ñ n n ( bi n I ln l ư t nh n cá c giátr s nguyên t 1 ñ n n), v i m i giátrc a I má y s th c hi n công vi c sau t khoá DO là in ra giátrc a I. Chi ti t cá c b ư c th c hi n c a vò ng l p FOR nà y nh ư sau: ð u tiên bi n I nh n giátr kh i ñu là 1 (do l nh gá n I:=1), má y ki m tra giátrnà y không v ư t quágiátr cu i là 10 nên cho th c hi n l nh writeln(I) vi t ra giátr 1. Sau ñó bi n I ñư c t ăng thêm m t ñơ n v , t c là I:=I+1. Bây gi I=2, ch ưa v ư t qua giátr cu i là 10 nên l nh writeln(I) l i ñư c th c hi n ñ in ra giátrc a I là 2 lên mà n hì nh. Ri I l i ñư c tăng lên giátr cu i cù ng c a I ñ lnh writeln(I) ñư c th c hi n là I:=10. Quátrì nh k t thú c khi I nh n giátr 11 vư t quágiátr cu i 10. Câu l nh trên là mt vídñơ n gi n c a l nh t ng quá t sau: a. D ng l nh l p t ăng (d ng ti n) FOR Bi n_ ñiu_khi n:=Bi u_th c1 TO Bi u_th c2 DO ; 132 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 132
  22. Trong ñó Bi n_ ñiu_khi n, Bi u_th c1 và Bi u_th c2 ph i cù ng ki u d li u vàph i là cá c ki u vô hư ng ñ m ñư c (nh ư cá c ki u s nguyên, ki u kí t ) ý nghĩ a c a câu l nh nà y nh ư sau: Tr ư c tiên Bi n_ ñiu_khi n nh n giá tr kh i t o là Bi u_th c1, má y ki m tra n u giá tr ñó không v ư t quá Bi u_th c2 thì cho th c hi n . Th c hi n xong l nh nà y, Bi n_ ñiu_khi n ñư c t ăng thêm m t ñơ n v , má y l i ki m tra v i Bi u_th c2 ñ th c hi n Qú a trì nh ti p di n ñ n khi Bi n_ ñiu_khi n nh n giátr vư t qu á Bi u_th c2 thì dng. S ln th c hi n l p ñi l p l i ñư c xá c ñnh tr ư c b i giá tr c a Bi u_th c1 và Bi u_th c2 nên câu l nh trên cò n ñư c g i là lnh l p có s ln l p xá c ñnh. Lưu ñc a l nh l p FOR: B¾t®Çu BiÕn_®iÒu_khiÓn:=BiÓu_thøc1 §óng BiÕn_®iÒu_khiÓn>BiÓu_thøc2 Sai KÕtthóc DO BiÕn_®iÒu_khiÓn:=Succ(BiÕn_®iÒu_khiÓn) *Víd VD1: Vi t ch ươ ng trì nh tí nh t ng c a n s t nhiên ñu tiên S=1+2+ +n theo ph ươ ng phá p cng d n. Ph ươ ng phá p c ng d n ñư c th c hi n nh ư sau: ban ñu ta kh i t o S:=0, r i l y S cng v i 1, r i c ng v i 2, cng ñ n n. Nh ư vy ta sph i s d ng m t vò ng l p FOR v i mt bi n ñiu khi n I ch y t Bi u_th c1 là 1 ñ n Bi u_th c2 là n. Ta sdù ng chí nh giátr c a bi n ñiu khi n nà y ñtí nh t ng S. Ch ươ ng trì nh ñư c vi t nh ư sau: Program Tinh_tong; Uses crt; Var i,n:integer; S:real; Begin Write('Cho biet gia tri cua n:'); Readln(n); S:=0; For I:=1 to n do S:=S+i; Writeln(' Tong tinh duoc la S:',S:10:2); 133 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 133
  23. Readln; End. VD2: Mt ng ư i g i ti n ti t ki m v i s ti n ban ñu là A ñng, th i gian g i t tháng, lãi su t tháng là p. H i sau t tháng g i ng ư i ñó thu ñư c s ti n lãi là bao nhiêu ñng? Phân tí ch bà i toá n: Ta bi t r ng g i ti t ki m thì s ti n thu ñư c sau m i thá ng s bng s ti n thá ng tr ư c c ng v i lã i c a thá ng ñó. Nu g i S là s ti n thu ñư c sau m i thá ng, t là s thá ng g i thì ta có : Ban ñu S 0=A t=1 > S 1=S 0 +S 0*p (gi 1 thá ng) t=2 > S 2= S 1 +S 1*p (gi 2 thá ng) t=n > Sn= S n-1 +S n-1*p (gi nthá ng) ðây chí nh là quy lu t ñ th c hi n vò ng l p tí nh s ti n thu ñư c. Ch ươ ng trì nh ñư c vi t nh ư sau: Program Tinh_tien_lai; Uses crt; Var i,t:integer; A,P,S:real; Begin Write('Cho biet so tien gui ban dau: '); Readln(A); Write('Cho biet so thang gui: '); Readln(t); Write('Cho biet lai suat theo thang: '); Readln(P); S:=A; For I:=1 to t do S:=S+ S*P; Writeln(' Lai thu duoc la : ',S-A:10:2); Readln; End. b. Dng l nh l p gi m (d ng lùi) FOR Bi n_ ñiu_khi n:=Bi u_th c1 DOWNTO Bi u_th c2 DO ; ýnghĩ a hoà n toà n tươ ng t nh ư d ng trên, chkhá c là Bi n_ ñiu_khi n nh n giátrgi m d n ch không ph i t ăng d n, và ñiu ki n ki m tra là Bi n_ ñiu_khi n không nh quá Bi u_th c2. Lưu ñc a l nh l p FOR: B¾t®Çu BiÕn_®iÒu_khiÓn:=BiÓu_thøc1 §óng BiÕn_®iÒu_khiÓn BiÕn_®iÒu_khiÓn:=Pred(BiÕ n_®iÒu_khiÓn) 134 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 134
  24. Vi d ng nà y t hì câu l nh FOR trong víd 1 trên ñư c vi t là : For I:=n downto 1 do S:=S+i; Tng S sñư c c ng d n theo th t t n ñ n 1, t c là S=n+(n-1)+ +2+1. Ví d : Vi t ch ươ ng trình in ra các kí t trong b ng mã ASCII theo th t gi m dn. Các kí t trong b ng mã ASCII có mã gi m d n t 255 ñ n 0. Ta dùng hàm CHR(n) ñ nh n ñưc kí t . Ch ưng trình ñưc vi t nh ư sau: Program In_cac_ki_tu; Uses crt; Var I:integer; Begin Clrscr; For i:=255 downto 0 do write(chr(i):4); Readln; End. c. Cá c l ưu ý 1) Sau t khoá DO chñư c vi t m t l nh, do ñó nu c n th c hi n nhi u h ơn m t lnh ñơ n thìph i s d ng câu l nh ph c h p 2) Cá c l nh l p có th lng nhau, ch ng h n d ng: FOR I:=1 TO n DO FOR J:=1 TO m DO Khi ñó vi m i giátrc a bi n ñiu khi n c a vò ng l p ngoà i thì bi n ñiu khi n c a vò ng l p trong sch y h t cá c giátrc a nó . Tc là vi m i giátrc a I thì J sch y t 1 ti m. Xé t ví dño n ch ươ ng trì nh sau: For I:= 1 to 2 do For J:=1 to 3 do begin k:=i+j; writeln(k); end; s cho k t qulà : 2 3 4 3 4 5 3) sau t khoá DO không ñư c tuỳ ti n thay ñi giátrc a Bi n_ ñiu_khi n, là m nh ư vy ta có th không ki m soá t ñư c giátrc a Bi n_ ñiu_khi n vàcó th là m r i vò ng l p. Ví d : In ra t t c các ch s có 3 ch s mà t ng các ch s chia h t cho 3. 135 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 135
  25. Trong bài toán này m i s ñ u có 3 ch s , ch s hàng tr ăn có th nh n giá tr t 1 ñn 9, ch s hàng ch c, ch s hàng ñơ n v ñ u có th nh n giá tr t 0 ñ n 9. ð quét h t các ch s có 3 ch s ta dùng 3 vòng l p l ng nhau, sau ñó ta ki m tra ñièu ki n n u t ng các ch s chia h t cho 3 thì in ra s ñó. Ch ươ ng trình ñưc vi t nh ư sau: Program In_cac_so; Uses crt; Var t,c,v:integer; Begin Clrscr; For t:=1 to 9 do For c:=0 to 9 do For v:=0 to 9 do If (t+c+v) mod 3 = 0 then writeln(t,c,v); Readln; End. 4.2- L nh l p có s bư c l p không xá c ñnh trên ta ñãxé t l nh l p có s bư c l p xá c ñnh, t c là s ln th c hi n công vi c l p ñi l p l i làñư c ñnh tr ư c. Nh ưng trong khi l p trì nh có nh ng bà i toá n yêu c u th c hi n mt công vi c nà o ñómà s ln l p là không th xá c ñnh tr ư c ñư c, màph thu c và o m t bi u th c ñiu ki n nà o ñó. Có hai d ng l nh l p v i s bư c l p không xá c ñnh. a. Lnh l p v i ñiu ki n tr ư c • D ng l nh: WHILE DO ; ýnghĩ a: Khi g p câu l nh nà y, tr ư c tiên má y s ki m tra . Nu cógiá trñúng (TRUE) thì ñư c th c hi n. Th c hi n xong l nh nà y má y s quay l i ki m tra ñ th c hi n quátrì nh ti p di n ñ n khi sai thì dng. Sơ ñ Sai §óng • Víd : VD1: Mt ng ư i g i ti t ki m không kìh n v i s ti n ban ñu là A ñng H i sau bao nhiêu thá ng ng ư i ñó thu ñư c s ti n là B ñng, bi t r ng lã i su t là 1.8%? 136 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 136
  26. Phân tí ch bà i toá n: Ta bi t r ng g i ti t ki m không kìh n thì s ti n thu ñư c sau m i thá ng s bng s ti n thá ng tr ư c c ng v i lã i c a thá ng ñó. Nu g i S là s ti n thu ñư c sau m i thá ng, t là sthá ng g i, ls làlã i su t thì ta có : nu t=0 > S 0=A (gi 0 thá ng) nu t=1 > S 1=S 0 +S 0*ls (gi 1 thá ng) nu t=2 > S 2= S 1 +S 1*ls (gi 2 thá ng) ðây chí nh là quy lu t ñ th c hi n vò ng l p tí nh s ti n thu ñư c. Nh ư vy ta ph i so sá nh s ti n thu ñư c S sau m i thá ng v i s ti n c n ñt B: nu S ñt ho c v ư t B thì ta có kt lu n c a bà i toá n. ðây cũ ng làñiu ki n d ng vò ng l p. Ta s sd ng mt bi n ñ m t ññ m s ln th c hi n l p, cũ ng chí nh là sthá ng g i. Ch ươ ng trì nh ñư c vi t nh ư sau: Program Gui_tiet_kiem; Const ls=0.018; Var A,B,S:real; t:integer; Begin Clrscr; Write('Cho biet so tien gui ban dau:'); Readln(A); Write('Cho biet so tien can dat :'); Readln(B); S:=A; t:=0; WHILE S<B DO begin S:=S+S*ls; t:=t+1; end; Writeln(' Ban can gui it nhat la ', t, ' thang'); Readln; End. VD2: Ta có th vi t l i ch ươ ng trì nh tí nh t ng S=1+2+ +n s d ng l nh l p WHILE DO nh ư sau: Program Tinh_tong1; Var i,n:integer; S:real; Begin Write('Cho biet gia tri cua n:'); Readln(n); S:=0; i:=1; While i<= n do begin S:=S+i; i:=i+1; end; 137 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 137
  27. Writeln(' Tong tinh duoc la S:',S:10:2); End. Nh ư vy ta có th dù ng l nh l p có s bư c l p không xá c ñnh ñ thay cho l nh l p có s bư c l p xá c ñnh. Tuy nhiên khi ñó bi n ñiu khi n vò ng l p không t ñng thay ñi mà ta ph i ñư a nóvà o thân vò ng l p (bi n i trong VD trên). b. Lnh l p v i ñiu ki n sau • D ng l nh: REPEAT UNTIL ; ýnghĩ a: Khi g p câu l nh nà y, tr ư c tiên má y s cho th c hi n , sau ñó ki m tra . Nu có gi átr sai (FALSE) thì quay l i th c hi n . Th c hi n xong lnh nà y má y sl i ki m tra ñ th c hi n quátrì nh ti p di n ñ n khi ñúng thì dng. Sơ ñ LÖnh §óng §iÒukiÖn Sai • Víd : L yl i VD g i ti t ki m trên. Bây gi ta s vi t l i ch ươ ng trì nh s d ng d ng lnh l p v i ñiu ki n sau. Ch ươ ng trì nh ch cn thay ñi m t chú t lnh l p. Program Gui_tiet_kiem; Const ls=0.018; Var A,B,S:real; t:integer; Begin Write('Cho biet so tien gui ban dau:'); Readln(A); Write('Cho biet so tien can dat :'); Readln(B); S:=A; t:=0; REPEAT S:=S+S*ls; t:=t+1; UNTILS>=B; Writeln(' Ban can gui it nhat la ', t, ' thang'); Readln; 138 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 138
  28. End. Ta th y r ng trong ph n thân c a vò ng l p cá c l nh ñt gi a REPEAT và UNTIL không c n sd ng câu l nh ph c h p begin end; B n ñc có th sd ng l nh nà y ñ vi t l i ch ươ ng trì nh tí nh t ng trên. c. Cá c l ưu ý khi s d ng cá c l nh l p WHILE và REPEAT 1) Trong thân vò ng l p ph i cóí t nh t m t l nh là m thay ñi giátrc a bi u th c ñiu ki n nh m d ng vò ng l p. Nu ñiu ki n luôn ñư c thomã n thì lnh có th rơi và o vò ng l p vô tn. Khi ñóchcò ncá ch là tt má y ho c d ng ch ươ ng trì nh. Xem víd sau: I:=1; WHILE I<2 DO write('Stop!'); Vò ng l p nà y sch y vô tn vì trong thân vò ng l p sau t khoá DO chcó mt l nh in ra xâu ch 'Stop!', không có lnh nà o là m thay ñi giátrc a I. Tc là vi I ñư c kh i t o ban ñu là 1 luôn nh hơn 2, ñiu ki n luôn thomã n. 2) Trong l nh l p v i ñiu ki n tr ư c WHILE thì thân vò ng l p (sau t khoá DO) ph i sd ng câu l nh ph c h p begin end; cò n trong l nh l p v i ñiu ki n sau thì không c n. 3) Trong l nh l p v i ñiu ki n tr ư c, má y luôn ki m tra ñiu ki n tr ư c khi th c hi n lnh, do ñó nu ñiu ki n sai ngay t ñu thì lnh không ñư c th c hi n l nnà o. Cò n trong lnh l p v i ñiu ki n sau, má y luôn th c hi n l nh m t l n r i m i ki m tra ñiu ki n, dù ban ñu ñiu ki n có th ñúng. Nh rng trong l nh l p v i ñiu ki n sau l nh ñư c quay l i th c hi n ch khi ñiu ki n sai. 4) Cá c l nh l p có th vi t l ng nhau 5) Ng ư i ta th ư ng dù ng cá c l nh l p có s bư c l p không xá c ñnh ñ quay vò ng th c hi n nhi u l n c mt công vi c nà o ñó ho c c ch ươ ng trì nh, cho phé p t o s tương tá c gi a ng ư i s d ng vàmá y. Xem víd mu sau: Program VD; Var tieptuc:char; { c ác bi n c a ch ươ ng trì nh } Begin Repeat { ño n ch ươ ng trì nh th c hi n công vi c và thay ñi ñiu ki n ki m tra} write(' Ban co tiep tuc nua hay khong (C/K)'); readln(tieptuc); UNTIL (tieptuc='k') or (tieptuc='K'); End; d. Lnh nh y vô ñiu ki n GOTO Lnh GOTO cho phé p ch ươ ng trì nh nh y vô ñiu ki n t i m t v trínà o ñó thông qua tên nhã n. Nhã n là mt s nguyên ho c m t tên ñư c khai bá o trong ph n LABEL ñu ch ươ ng trì nh. Trong ch ươ ng trì nh nhã n ñư c ñt và o vtríphù hp kè m theo m du hai ch m (:). Xem víd sau: Program VDNHAN; Uses crt; Label N1,N2; Var a,b,s:real; 13 9 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 139
  29. Begin a:=1; b:=2; N1: a:=a+1; if a 1 2. Tí nh cá c t ng: S=1/2 + 1/4 + + 1/(2k) Q=1.1!+2.2!+ +n.n! 3. Tì m và in ra t t ccá c s chí nh ph ươ ng nh hơn m t s cho tr ư c, cho bi t có bao nhiêu s chí nh ph ươ ng nh ư vy. 4. Vi t ch ươ ng trì nh gi i bà i toá n c : " Va gà va chó , ból i cho trò n, ba m ươ i sá u con, m t tr ăm chân ch n. H i có bao nhiêu gà , bao nhiêu chó ?" 5. Vi t ch ươ ng trì nh tì m ư c s chung l n nh t c a 2 s nguyên d ươ ng cho tr ư c. x x2 x n 6. Tí nh Ex= 1+ + + + + v i ñchí nh xá c ε=10 -4 ( ABS(x n/n!) < ε ), giátr x 1! 2! n! ñư c nh p và o t bà nphí m khi ch y ch ươ ng trì nh. 7. Cn có 50000 ñ tcá c lo i gi y b c 1000 ñ, 2000 ñ và 5000 ñ. Tì m t t ccá c ph ươ ng án có th . 8. Chuy n m t s th p phân nguyên d ươ ng thà nh m t s nh phân, in ra mà n hì nh d ng X10 = Y 2 9. Tí nh tí ch phân xá c ñnh c a m t hà m s trên m t ño n cho tr ư c 10. Vi t ch ươ ng trì nh tì m và in ra mà n hì nh cá c s nguyên t nh hơn m t s cho tr ư c. 140 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 140
  30. CH ƯƠ NG IV KI U D LI U CÓ C U TRUC: KI U M NG, KI U XÂU KÍ T , KI U T P H P 1 - Ki u m ng 1.1-Khá i ni m m ng (array) a. Khái ni m m ng : M ng là mt ki u d li u có cu trú c bao g m m t s xá c ñnh cá c ph n t cócù ng ki u, có mt tên chung. Cá c ph n t c a m ng ñư c truy nh p thông qua cá c ch s. Trong khái ni m này ta c n chú 2 ñim sau: - S ph n t c a m ng ph i là m t s xác ñinh, không ñưc khai báo là bi n. Ta có th khai báo b ng m t giá tr c th ch ng h n nh ư 5,10,20, ; ho c có th khai báo là h ng. - Các ph n t c a m ng ph i cùng ki u. Có th là các ki u ñơn gi n ho c ki u có cu trúc. Víd : M ng A g m 6 ph n t là các s nguyên: A[1] A[2] A[3] A[4] A[5] A[6] . Nh ư vy tên m ng là A, cá c ch slà 1,2,3,4,5,6. b. Công d ng : M ng làdù ng ñ lưu tr mt dã y d li u cócù ng m t tí nh ch t. Víd nh ư h tên c a cá c thí sinh trong 1 lp, l ươ ng c a cá c nhân viên trong 1 c ơ quan, Trong b nh c a má y tí nh cá c ph n t c a m ng ñư c l ưu tr bi cá c t má y k ti p nhau. Trong ví d trên m ng A ñư c l ưu tr trong b nh bng 6 t má y k ti p nhau, m i t máy có ñ dài là 2 bytes. 1.2- Khai bá o m ng ð khai bá o m ng dù ng c m t sau: ARRAY [ Ki u_ ch _s 1, Ki u_ ch _s 2, . . . ] OF Ki u_ph n_t ; - Khai bá o b ng ñnh nghĩ a ki u TYPE Tên_ki u_ m ng = ARRAY [ Ki u_ ch _s 1, Ki u_ ch _s 2, . . . ] OF Ki u_ph n_t ; VAR Tên_bi n_ m ng : Tên_ki u_ m ng ; - Khai bá o bi n m ng tr c ti p qua khai bá o VAR: VAR Tên_bi n_ m ng :ARRAY [ Ki u_ ch _s 1, Ki u_ ch _s 2, . . . ] OF Ki u_ph n_t ; Trong ñó: Ki u ph n t là ki u c a m i ph n t trong m ng. Ki u ph n t có th là ki u b t kỳ . Ch sñ truy nh p ñ n cá c ph n t c a m ng. Ki u ch sch cho phé p làcá c ki u ñơ n gi n sau ñây: Ki u kí t ( CHAR), ki u BOOLEAN, ki u mi n con ( kho ng con), ki u li t kê. Ki u ch s không ñư c là ki u REAL ho c INTEGER. S ch slà s chi u c a m ng, m ng 1 chi u có 1 ch s, m ng 2 chi u có 2 ch s, , m ng n chi u có n ch s. Kí ch th ư c t i ña c a m ng ph i ñư c khai bá o là mt s xá c ñnh ( là hng), ch ng h n ta có th khai bá o là 5 ho c 10 hay 100, ch không ñư c khai bá o là mt bi n nh ư n,m, 141 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 141
  31. Víd 1 var B: array[ 1 5] of char ; víd 1 m ng B cókí ch th ư c t i ña là 5. Víd 2 TYPE AB = ARRAY [1 5] OF INTEGER ; COLOR = ( Red, Blue, Green, While, Black ); VAR X,Y,Z : AB; MAO, MKHAN : COLOR; Víd 3 VAR DSHodem,DSTen : Array [1 200] of string [20] ; DSHeso, DSLuong, DSPhucap,DSTong : array [1 200] of real; So_lap : array [ ‘a’ ‘z’] of integer; 1.3- Truy nh p m ng Có th truy nh p và o b t kỳ ph n t nà o trong m ng. ð truy nh p và o m t ph n t trong m ng ta vi t theo qui cá ch sau: Tên_bi n_ m ng [ ch -s1, ch _s 2, , ch _s n ] Cá c ph n t c a m ng ñư c coi nh ư mt bi n, có th tham gia và o cá c tht c và o/ra, cá c bi u th c, l i g i hà m. Ví d : Var a:array[1 20] of integer; A[1]:=1; readln(a[2]; a[3]:=a[1]+a[2]; Writeln(a[3]); 1.4-M ng 1 chi u * Khai bá o m ng m t chi u: Dù ng c m t sau ARRAY [ki u_ ch _s ] OF ki u_ph n_t ; -Dù ng khai bá o ki u: TYPE Tên_ki u_ m ng = ARRAY [ ki u_ ch _s ] OF ki u_ph n_t ; VAR Tên_bi n_ m ng: Tên_ki u_ m ng ; -Dù ng khai bá o bi n : VAR Tên_bi n_ m ng : ARRAY [ ki u-ch _s ] OF ki u_ph n_t ; M ng m t chi u chcó mt ch s. * Cá ch dù ng : M ng 1 chi u th ư ng ñư c dù ng cho d li u d ng danh sá ch tuy n tí nh, ví d nh ư dã y s , dã y xâu kí t, Víd 1: Mt dã y s nguyên a 1 , a 2 , , a n ta khai bá o nh ư sau VAR a: ARRAY [ 1. . 100 ] OF integer ; Trong khai bá o nà y n cógiátr ti ña là 100. Víd 2: M t danh sá ch có n tên h c sinh ta khai bá o nh ư sau: VAR Ten: ARRAY [ 1 200 ] OF String [ 25] ; Trong khai bá o nà y n cógiátr ti ña là 200, m i tên có ti ña là 25 kí t. Víd 3: Danh sá ch s ln xu t hi n ( tn s ) c a cá c ch cá i vi t hoa trong m t v ăn b n ta khai bá o nh ư sau: VAR Tan_so : ARRAY [ 'A' . . 'Z' ] OF integer ; 142 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 142
  32. Trong khai bá o nà y m ng cókí ch th ư c t i ña là 26 ( 26 ch cá i hoa trong b ng ch cá i ti ng Anh). * Có th truy nh p và o b t kỳ ph n t nà o trong m ng. ð truy nh p và o m t ph n t trong m ng m t chi u ta vi t theo qui cá ch sau: Tên_bin_ m ng [ ch -s ] Víd : Ch ra ph n t th 5 trong víd 1 ta vi t a[5] Ch ra tên th 10 trong danh sá ch tên ta vi t Ten[10] Ch ra t n s c a ch ‘B’ ta vi t Tan_so[ 'B' ] 1.5. Cá c ch ươ ng trì nh dù ng m ng m t chi u Bà i toá n 1 : Cho m t dã y n s nguyên vi t ch ươ ng trì nh nh p d li u và o, tí nh và in ra trung bì nh c ng, ph n t ln nh t, ph n t nh nh t c a dã y s ñó. -Tư tư ng c a thu t toá n tì m ph n t max, ph n t min : Tr ư c tiên gá n ph n t ñu tiên là a[1] cho c max và min, nh ư vy vtrí max, vtrí min ñ u là 1. Sau ñó duy t l n l ư t cá c ph n t t ph n t ñu cho t i ph n t cu i, n u ph n t ñang xé t l n h ơn max thìgá n giátr ph n t ñó cho max, vtríc a nó cho vtrí max, n u ph n t ñang xé t nh hơn min thìgá n giá tr ph n t ñó cho min, vtríc a nó cho vtrí min. Ch ươ ng trì nh Program Trung_binh_max_min; Uses crt; Var a:Array [ 1 100] of integer ; i,n,max,min,vtmax,vtmin : integer ; tb : real ; Begin Clrscr; { Nhap du lieu } Write(' Nhap n: '); readln( n); for i:=1 to n do begin Write( ' a[', i, ']=' ); readln( a[i]); end; { Tinh toá n } tb:=0; max:= a[1]; min:=a[1]; vtmax:=1; vtmin:=1; for i:=1 to n do begin tb:=tb + a[i]; if max a[i] then begin min :=a[i]; vtmin:=i; end; end; { in ket qua } writeln(' Trung binh = ', tb/n :8:2) ; writeln(' max= ', max, ' tai vi tri : ', vtmax); writeln(' min= ', min, ' tai vi tri : ', vtmin); readln; end. Bà i toá n 2 : Cho dã y n s th c a 1, a 2, , a n s p x p dã y theo th t tăng d n. 143 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 143
  33. Trong bà i toá n nà y ta dù ng thu t toá n tì m ph n t nh nh t c a dãy ch ưa s p vàñư a v ñng vtríñu tiên c a dã y ñó. Dã y có n ph n t thì ta ph i th c hi n n-1 ln tì m ph n t ln nh t. T ư tư ng c a thu t toá n nh ư sau: -Ta so sá nh ph n t ñu tiên c a dã y ch ưa s p l n l ư t v i cá c ph n t ñng sau nó , n u có ph n t nà o nh hơn nóthì ta sñi giátr cho nhau. ðñi giátr 2 ph n t cho nhau ta dù ng m t ph n t trung gian. - L p l i b ư c trên cho ñ n khi dã y ch ưa s p không chcò n m t ph n t . Nh ư vy dã y có n ph n t thì ta l p l i n-1 ln. Ch ươ ng trì nh PROGRAM SAP_DAY_TANG; USES CRT; VAR I,J,N: INTEGER; A:ARRAY[1 100] OF REAL; X:REAL ; BEGIN CLRSCR; (* NHAP SO LIEU *) WRITE(' HAY NHAP SO PHAN TU N ? ');READLN(N); FOR I:=1 TO N DO BEGIN WRITE('A[',I,']= '); READLN(A[I]); END; (* SAP XEP *) FOR I:=1 TO N-1 DO FOR J:=I+1 TO N DO IF A[I]>A[J] THEN BEGIN X:=A[I]; A[I]:=A[J]; A[J]:=X; END; (* IN KET QUA *) WRITELN(' DAY DA SAP THEO THU TU TANG'); FOR I:=1 TO N DO WRITELN(A[I]:8:2); READLN; END. Bà i toá n 3: Nh p và o m t xâu kí t. Hã y in ra t n s xu t hi n c a cá c ch cá i, không bi t ch hoa và ch th ư ng. In ra ch cá i xu t hi n nhi u nh t. Ch ươ ng trì nh program Tan_so_chu_cai ; uses crt; var s:string; ts: array [‘A’ ’Z’ ] of integer ; n,j,m: integer ; i,vt: char ; Begin clrscr ; { nhap xau ki tu } Write(‘ Nhap xau ki tu : ‘); readln(s); n:=length(s); { Tinh tan so } for i:=’A’ to ‘’Z’ do ts[i] :=0 ; 144 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 144
  34. for j:= 1 to n do for i:=’A’ to ‘Z’ do if upcase(s[j])=i then ts[i]:=ts[i] + 1; for i:=’A’ to ‘Z’ do writeln(i,’ co tan so = ‘,ts[i]); { Tin tan so max } m:=ts[‘A’] ; vt:=’A’ ; for i:=’B’ to ‘Z’ do if m<ts[j] then begin m:=ts[j]; vt:=i ; end ; Writeln(‘ki tu ‘,vt, ‘co tan so lon nhat la : ‘,m); readln; end. 1.6-M ng nhi u chi u Trong ph n trì nh bà y m ng 2 chi u, m ng nhi u h ơn 2 chi u ñư c suy di n m t cá ch t ươ ng tư. * Khai bá o m ng 2 chi u: Dù ng c m t sau ARRAY [ki u_ ch _s 1, ki u_ ch _s 2] OF ki u_ph n_t ; -Dù ng khai bá o ki u: TYPE Tên_ki u_ m ng = array [ ki u_ ch _s 1, ki u_ ch _s 2 ] OF ki u_ph n_t ; VAR Tên_bi n_ m ng: Tên_ki u_ m ng ; -Dù ng khai bá o bi n : VAR Tên_bi n_ m ng : ARRAY [ ki u_ ch _s 1,ki u_ ch _s 2 ] OF ki u_ph n_t ; M ng 2 chi u có 2 ch s. * Cá ch dù ng : M ng 2 chi u th ư ng ñư c dù ng cho d li u d ng b ng hay ma tr n, víd nh ư ma tr n s có m dò ng ,n c t, M ng hai chi u có 2 ch s , ch s 1 ch dòng, ch s 2 ch ct. Víd 1: Mt ma tr n s nguyên a có 2 dò ng, 3 ct ñư c khai bá o nh ư sau VAR A: ARRAY [ 1. . 2, 1 3 ] OF integer ; Trong b nh máy l ưu tr các ph n t c a m ng A k ti p nhau theo th t sau: A[1,1], A[1,2], A[2,1], A[2,2], A[3,1], A[3,2] Víd 2: Mt b ng có 8 dò ng, 8 ct, cá c ô c a b ng ch a cá c ch cá i sñư c khai bá o nh ư sau: VAR Bang: ARRAY [ 1. . 8, 1 8 ] OF char ; * Có th truy nh p và o b t kỳ ph n t nà o trong m ng. ð truy nh p và o m t ph n t trong m ng hai chi u ta vi t theo qui cá ch sau: Tên_bi n_ m ng [ ch _s 1, ch _s 2 ] Cách vi t trên ñ ch ra ph n t dòng có giá tr b ng ch s 1 và c t có giá tr b ng ch s 2. Ví d : Var A:array[1 10,1 5] of integer; A[1,1]:= 1; A[1,2]:=3*A[1,1]; Readln(A[2,1]); 145 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 145
  35. Writeln(A[1,2]); 1.7. Cá c ch ươ ng trì nh dù ng m ng 2 chi u Bà i toá n 1: Vi t ch ươ ng trì nh nh p m t ma tr n m dò ng , n c t vàtì m giátr ln nh t, giátr nh nh t, tí nh t ng c a cá c ph n t , ñ m s ph n t âm. Ch ươ ng trì nh PROGRAM TINH_MA_TRAN; (*TIM MAX, MIN, TINH TONG, DEM SO PHAN TU AM *) USES CRT; VAR I,J,M,N,MAX,MIN,T,SOPTAM:INTEGER; A:ARRAY[1 30,1 20] OF INTEGER; BEGIN CLRSCR;T:=0;SOPTAM:=0; (* NHAP SO LIEU *) WRITE('NHAP SO DONG M, SO COT N ');READLN(M,N); FOR I:=1 TO M DO FOR J:=1 TO N DO BEGIN WRITE('A[',I,',',J,']=? '); READLN(A[I,J]); END; (* TINH TOAN *) MAX:=A[1,1]; MIN:=MAX; FOR I:=1 TO M DO FOR J:=1 TO N DO BEGIN T:=T+A[I,J]; IF A[I,J] A[I,J] THEN MIN:=A[I,J]; END; (* IN KET QUA *) WRITELN; WRITELN('TONG T= ',T); WRITELN('SO PHAN TU AM LA ',SOPTAM); WRITELN('GIA TRI LON NHAT = ',MAX); WRITELN('GIA TRI NHO NHAT = ',MIN); READLN; END. Bà i toá n 2 : Nhân ma tr n a có m dò ng, n c t v i ma tr n b có n dò ng, l c t. Kt qulà ma tr n c có m dò ng, l c t. Cá c ph n t c a ma tr n c ñư c tí nh theo công th c sau: n C[i,j] = ∑ a[,]*[,] i k b k j v i i : 1 → m ; j: 1 →l k = 1 146 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 146
  36. Ch ươ ng trì nh (* nhan hai ma tram *) program nhan_ma_tran; uses crt; type mang=array[1 20,1 30] of integer; var i,j,k,m,l,n:integer; a,b,c: mang; begin clrscr; (* nhap ma tran a *) write('nhap so dong, so cot m,n ? ');readln(m,n); for i:=1 to m do for j:=1 to n do begin write('a[', i, ',' ,j, ']= '); readln(a[i,j]); end; (* nhap ma tran b *) write('nhap so cot l ? ');readln(l); for i:=1 to n do for j:=1 to l do begin write('b(',i,',',j,')= '); readln(b[i,j]); end; (* Tinh toan *) for i:=1 to m do for j:=1 to l do begin c[i,j]:=0; for k:=1 to n do c[i,j]:=c[i,j]+a[i,k]*b[k,j]; end; (* In ket qua *) writeln(' Ma tran tich '); for i:=1 to m do begin for j:=1 to l do write( ' ',c[i,j]:4 ); writeln; end; readln; end. 2. Ki u xâu kí t 2.1. Khai bá o ki u xâu kí t a. ðnh nghĩ a : D li u ki u xâu là ki u d li u có cu trú c, dù ng ñ xlýcá c xâu kí t 147 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 147
  37. D li u ki u xâu ñư c khai bá o b ng t khoá STRING , ñdà i t i ña c a m t xâu kí tlà 255 kí t. Có th khai bá o ñdà i t i ña c a m t xâu kí t trong d u ngo c vuông sau t khoá STRING nh ư sau: STRING[ ] Ví d : Tên ng ưi, quê quán, trình ñ v ăn hóa là các d li u ki u xâu kí t . b. Khai xâu kí t ð khai báo xâu kí t dùng t khóa String n u nh ư khai báo ñ dài xâu t i ña là 255 kí t , dùng t khóa String [n] n u nh ư khai báo ñ dài xâu t i ña là n kí t . - Khai báo ki u xâu: Type Tên_ki u_xâu = String[n]; - Khai báo bi n xâu Var Tên_bi n: String[n]; Trong ñó n là skí t ti ña c a xâu, n u không có ph n [n] thì skí t ti ña c a xâu m c nh n là 255. Víd Var Hoten: string[30]; Ngaysinh: string[10]; Quequan: string; H ng xâu kí t trong Pascal ñư c vi t trong ' ' Hoten:='Le Thu Ha'; Ngaysinh:='20-10-1960'; Quequan:='Gia lam - Ha noi '; c. Truy nh p xâu kí t M i kí t trong xâu ñư c ch ra b ng 1 s th tñư c g i làch s vi t trong [ ], kí tñu tiên có ch s là 1. Có th truy nh p t i t ng kí t trong xâu theo cá ch vi t sau: Tên_bi n[ch _s ] V i ví d trên Hoten[2] là 'e', Ngaysinh[8] là 9. Xâu kí tñư c l ưu tr nh ư sau: Byte ñu tiên ch a kí tlàñdà i th c c a xâu, cá c byte ti p theo làcá c kí tc a xâu. V i ví d trên Hoten:='Le Thu Ha'; ñư c l ưu tr nh ư sau: 0 1 2 3 4 5 6 7 8 9 . . . 30 L e T h u H a Kí tñu ch a ñdà i th c c a xâu làkí t 9. ðdà i c a xâu = ORD( Hoten[0]) d. Hà m chu n Length(St) : Cho ta ñdà i c a xâu kí t. Mt xâu kí t không ch a kí tnà o là rng , khi ñó Length(St)=0, xâu kí t rng ñư c kí hi u ''. 2.2. Cá c thao tá c trên xâu kí t a. Phé p c ng xâu • Kí hi u + làghé p n i cá c xâu kí t • Víd Que:= 'Gia lam ' + 'Ha noi'; Cho k t qu Que= 'Gia lam Ha noi' b. Phé p So sá nh hai xâu kí t Khi so sá nh 2 xâu kí t, so sá nh mã ASCI I c a t ng c p kí t tươ ng ng t 2 xâu theo trì nh t ttrá i sang ph i, s xu t hi n 1 trong cá c tr ư ng h p sau: - N u g p m t c p cómãkhá c nhau thì xâu ch a kí t cómãnh hơn là xâu nh hơn. - N u t t ccá c c p kí tñ u cómã gi ng nhau thì 2 xâu b ng nhau. 148 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 148
  38. - N u 2 xâu cóñdà i khá c nhau song cá c c p kí tñ u cómã gi ng nhau ñ n ñdà i c a xâu ng n thì xâu ng n s là xâu nh hơn. K t quc a phé p so sá nh làgiátr logic True ho c False. 'hang' 'nhung' cho giátr Flase. • ðc xâu kí t tbà n phí m: Readln(St); ðdà i th c c a xâu St là skí tgõvà o t bà n phí m. Nu không gõkí tnà o màgõ Enter luôn thì xâu St r ng. • Vi t xâu kí t ra mà n hì nh: Write(St) và Writeln(St) 2.3. Cá c tht c vàcá c hà m chu n x lý xâu kí t Gi thi t St là xâu kí tcóñdà i chu n là 255 kí t. a. Hà m Length(St) Hà m nà y cho ñdà i c a xâu kí t. St:='Tin h c' ; Length(St) cógiátrlà 7. b. Tht c Delete(St,m,n) Tht c nà y xoáñi n kí t, b t ñu t vtrí m trong xâu St. St:='Cong trinh khoa hoc'; Delete(St,6,5); K t qu St scò n 'Cong khoa hoc' . N u m+n > Length(St) thìchxoáñi nh ng kí t nm trong Length(St). c. Th tc Insert (s1,St,m) Tht c nà y chè n xâu s1 và o xâu St t i vtrí m. St:='Hoc tot'; s1:='Toan '; Insert(s1,St,5); K t qu St slà 'Hoc Toan tot'. N u Length(s1)+Length(St) > ñdà i c c ñi cho phé p c a xâu thìch nh ng kí tnà o n m trong kho ng ñdà i c c ñi cho phé p m i ñư c gi la . d. Hà m Copy(St,m,n) Hà m nà y sao ché p n kí tc a xâu St t vtrí m. St:='Lao dong'; s1:=Copy(St,5,2); K t qus cho s1='do'. N u m > Length(St) thì Copy s cho 1 xâu r ng. N u m + n > Length(St) thì Copy ch nh n cá c kí t nm trong xâu St. e. Hà m Concat(St1,St2, ,Stn) Hà m nà y ghé p n i t t ccá c xâu kí t St1,St2, ,Stn thà nh m t xâu kí t theo th tñã vi t. T ng s chi u dà i c a cá c xâu kí t không ñư c l n h ơn 255. St1:='Lao dong '; St2:='Hoc tap '; St3:='Vui choi'; St:=Concat(St1,St1,St3); K t qu St là 'Lao dong Hoc tap Vui choi'. f. Hà m Pos(s1,St) Hà m nà y cho vtríñu tiên c a xâu s1 trong xâu St. Nu không tì m th y thìhà m cho giá trlà 0. St:='12345abc'; 149 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 149
  39. s1:='345'; s2:='35ab'; Pos(s1,St) cho giátrlà 3. Pos(s2,St) cho giátrlà 0. g. Tht c Str(x,St) Tht c nà y bi n ñi giátr s nguyên ho c th c x thà nh m t xâu kí t St bi u di n s ñó. Cá ch bi u di n c a xâu St sñư c qui ñnh do qui cá ch c a x. I:=1234; Str(I:5,St) s cho St =' 1234' x:=1234.56789111; Str(x:9:4,St) s cho St='1234.5678' h. Tht c Var(St,x,m) Tht c nà y bi n ñi xâu kí t St ( bi u di n s nguyên ho c th c ) thà nh m t s nguyên ho c th c ch a trong x. Bi n m là bi n nguyên ch a mã li, n u bi n ñi ñúng thì m=0, n u bi n ñi sai thì m cho giátrlàvtríc a kí t sai. Víd 1: St:='1234.567'; x là bi n th c, m là bi n nguyên. Var(St,x,m); cho ta x=1234.567 và m=0. Víd 2: St:='1234'; x là bi n nguyên, m là bi n nguyên. Var(St,x,m); cho ta x=1234 và m=0 Víd 3: St:='123ab'; x là bi n th c, m là bi n nguyên. Var(St,x,m); kt qu sai v à m≠0. 2.4. Cá c ch ươ ng trì nh Bà i toá n 1: Nh p 1 xâu kí t tbà n phí m, ki m tra xem xâu cóñi x ng không. Xâu kí t S có ñ dài n, là xâu ñi x ng khi có t t c các c p kí t S[i] = S[n-i+1] v i i t 1 ñn (n Div 2). Ch ng h n xâu ‘1234321’ và xâu ‘abccba’ là các xâu ñi x ng, xâu ‘12343321’ là xâu không ñi x ng. Ch ươ ng trì nh: Program KT_xau_doi_xung; Uses crt; Var s: string; i,n : integer; t: boolean; Begin clrscr; Witeln('Nhap xau ki tu'); readln(s); n:=length(s); t:=true; for i:=1 to n div 2 do if s[i] <> s[n-i+1] then t:=false; if t then writeln(' Xau ki tu doi xung') else writeln(' Xau khong doi xung'); readln; end. Bài toán 2: Nh p vào 2 xâu kí t có ñ dài nh ư nhau. Xây d ng xâu m i ch a các kí t xen k c a 2 xâu nh p vào theo th t t trái sang ph i,. Ch ng h n s1=’123’ s2=’abc’ thì các xâu mi xây d ng là s3=’1a2b3c’, s4=’a1b2c3’ 150 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 150
  40. Ch ươ ng trình: Program Ghep_xen_ke_xau_ki_tu; Uses crt; Var s1,s2,s3,s4: string; i,n : integer; Begin clrscr; Witeln('Nhap xau ki tu mot s1: ‘); readln(s1); Witeln('Nhap xau ki tu hai s2: ‘); readln(s2); s3:=’’; s4:=’’; n:=length(s1); for i:=1 to n do begin s3:=s3+s1[i]+s2[i]; s4:=s4+s2[i]+s1[i]; end; Writeln(‘ Cac xau ki tu moi tao’); Writeln(s3); Writeln(s4); readln; end. Bà i toá n 3: Chu n hoá văn b n. Nôi dung chu n hoá văn b n nh ư sau: Nh p và o cá c dòng văn b n t bà n phì m, chu n hoá theo cá c qui ñnh : -Cá c t chcá ch nhau 1 kho ng cá ch. - Sau d u ch m ph i vi t hoa. - Tr ư c cá c dâu . , ; : không cókho ng cá ch. - Sau cá c dâu . , ; : có 1 kho ng cá ch. Ch ươ ng trì nh { xuly tep van ban ve cac dau .,;: } PROGRAM XU_LY_VAN_BAN; USES CRT; VAR S,T:STRING;TIEP:CHAR; PROCEDURE SUA(VAR P:STRING); VAR I:INTEGER; BEGIN { xoa khoang cach thua } I:=1; WHILE I ' ') 151 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 151
  41. THEN BEGIN INSERT(' ',P,I+1); I:=I+1; END ELSE I:=I+1; { Viet hoa sau dau . } I:=1; WHILE I<LENGTH(P)-2 DO IF P[I]='.' THEN BEGIN P[I+2]:=UPCASE(P[I+2]); I:=I+1; END ELSE I:=I+1; END; { Than chuong trinh chinh} BEGIN CLRSCR; TIEP:='C'; WHILE UPCASE(TIEP)='C' DO BEGIN WRITELN('NHAP XAU KI TU '); READLN(S); SUA(S); WRITELN(S); WRITE('CO TIEP TUC KHONG(C/K) '); READLN(TIEP); END; READLN; END. 3. Ki u t p 3.1.Khá i ni m t p T p là mt b cá c ñi t ư ng vô hư ng vàcù ng ki u. M i ñi t ư ng g i là mt ph n t c a T p. Tp có ti ña là 256 ph n t . Nu ph n t là ki u sthìch cho phé p làcá c s nguyên cógiátr t 0 255. Khá i ni m T p g n li n v i khá i ni m T p h ơp trong trong toá n h c. Víd : T p cá c ch cá i hoa, t p nà y có 26 ph n t . T p cá c s nguyên d ươ ng có 2 ch s, t p nà y có 90 ph n t . 3.2. Khai bá o t p Khai bá o T p dù ng c m t : SET of Ki u_ph n_t ; Ki u ph n t ph i là mt ki u vô hư ng. - Dù ng khai bá o ki Type Tên_ki u=Set of ki u _ph n_t ; Var Tên_bi n: Tên _ki u; Víd : Type t=set of 1 200; 152 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 152
  42. Chu_hoa: Set of 'A' 'Z'; Var tuoi : t; Chu_in: chu_hoa; - Khai bá o tr c ti p trong khai bá o bi n Var Tên_bi n: Set of Ki u_ph n_t ; Víd : Type mau=(do,xanh,vang,tin,nau); hinh=(tam_giac,tron,chu_nhat); Var mau_ao: Set of mau; hinh_ve: set of hinh; chu_so: 1 9; 3.3- Xây d ng mt t p Xây d ng m t t p b ng cá ch li t kê cá c ph n t c a t p, chú ng ñư c cá ch nhau b i d u phy vàñư c vi t trong d u mó c vuông ( [ ]) . T p r ng là tp không ch a m t ph n t nà o, ñư c vi t là [] [1 99] ; t p nà y có 100 ph n t . [ 2,4,6,8 12]; t p cócá c ph n t là 2,4,6,8,9,10,11,12. ['a' 'd',' m','n'] ; t p nà y cócá c ph n t 'a', 'b', 'c', 'd', 'm', 'n'. [xanh,do,tim,vang]; Cá c ph n t c a t p cũ ng có th cho b ng bi n ho c bi u th c. [2*i+j, i*j-2] ; n u i=2 và j=3 thì tp cócá c ph n t là 7, 4. Ta ñưc dùng ki u kho ng con ñ ch ra các ph n t c a t p. 3.4-Cá c phé p toá n trên t p a. Phé p gá n Gá n m t t p cho bi n ki u t p. Víd var chu: Set of 'A' 'Z'; tuoi: Set of 1 200; Khi ñócó th th c hi n cá c phé p gá n sau: chu:=['A', 'C'', 'M' . .'P']; tuoi:=[50 80, 90,100]; T p r ng có th ñem gá n cho m i bi n ki u t p khá c nhau. Chu:=[]; tuoi:=[]; Không th gá n cá c t p ki u c ơ b n không t ươ ng thí ch. Ch ng h n n u gá n chu:=[1 10] là sai. b. Phé p h p Phé p h p ñư c kí hi u b ng d u + H p c a 2 tp là mt t p cócá c ph n t thu c hai t p. Víd A:=[1,3,5 10]; B:=[2,4,6,8]; C:=[1,5,9]; D:=A+B; t p D slà [1 10] E:=B+C; t p E slà [1,2,4,5,6,8,9] c. Phé p giao 153 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 153
  43. Phé p giao ñư c kí hi u b ng d u * Giao c a 2 tp là 1 tp cócá c ph n t làcá c ph n t chung c a c 2 tp. M:=A*B; t p M slà [6,8] N:=B*C; t p N=[] d. Phé p hi u Phé p hi u ñư c kí hi u b ng d u -. Hi u c a 2 tp là 1 tp ch a cá c ph n t thu c t p th nh t nh ưng không thu c t p th 2. G:=A - B ; t p G slà [1,3,5,7,9,10] H:=C - A; t p H slà tp r ng. e. Phé p thu c v Phé p thu c v kí hi u là IN Phé p thu c v cho bi t 1 ph n t hay 1 tp có thu c v 1 tp khá c không ?, k t quc a phé p thu c v làgiátr ki u boolean (True ho c False). 1 In A; k t qulà true. B in A; k t q a là False. C in A; k t qulà True; Phé p so sá nh =, = Hai t p ñem so sá nh ph i cù ng ki u. K t quc a phé p so sá nh làgiátr ki u boolean. - Hai t p b ng nhau (=) nu chú ng cócá c ph n t nh ư nhau t ng ñôi m t. Víd : x:=['a' . .'d']; y:=['a' 'd', 'e', 'f']; z:=['a', 'b', 'c', 'd'] x=y; k t qulà False. x=z; k t qulà True. - Hai t p làkhá c nhau ( y ; k t qulà True; x = tp th 2 nu m i ph n t c a t p th 2 ñ u thu c t p th 1. y >= x; k t qu cho True. z >= y; k t qulà False. 3.5-Cá c ch ươ ng trì nh v tp Bà i toá n : T o m t t p ch a cá c s có ti ña là 2 ch s nguyên d ươ ng< 256 chia h t cho 7, in t p ñó ra. Sau ñó nh p 1 s bt kỳ ki m tra xem nócó thu c và o t p ñó không. Ch ươ ng trì nh Program thao_tac_tap; uses crt; var a: set of 1 99; i,n: byte; lap: char; Begin clrscr; 154 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 154
  44. { Tao tap cac so chia het cho 7 } a:=[]; for i:=7 to 255 do if (i mod 7) = 0 then a:=a+[i]; { In t p } Writeln(' Tap cac so chia het cho 7'); for i:=7 to 255 do if i in a then writeln(i); { Kiem tra so nhap thuoc tap chi het cho 7} Repeat write(' Nhap so bat ky '); Realn(n); if i in a then writeln('Chia het cho 7') else witeln('Khong chia het cho 7'); Write(' Co tiep tuc khong (C/K) ? '); readln(lap); Until upcase(lap)= 'K'; readln; end. Bài t p ch ươ ng 4 Hãy vi t ch ươ ng trình cho các bài toán sau: 1. Cho dã y s sau: a 1,a 2, ,a n . Vi t ch ươ ng trì nh tì m ph n t ln nh t, ph n t nh nh t c a dã y s ñó. 2. Cho dã y s sau: a 1,a 2, ,a n . Vi t ch ươ ng trì nh s p x p dã y theo th t tăng d n . 3. Cho dã y s sau: a 1,a 2, ,a n . Vi t ch ươ ng trì nh ñ m s ph n t dươ ng vàxoáñi ph n t th m trong dã y (m<=n) . 4. Cho dã y s sau: a 1,a 2, ,a n . Vi t ch ươ ng trì nh tì m cá c ph n t cógiátrlà x nh p và o t bà n phí m. 5. Cho dã y s sau: a 1,a 2, ,a n . Vi t ch ươ ng trì nh thêm ph n t cógiátrlà x, và o vtrí m trong dã y. Sau ñótí nh t ng cá c ph n t c a dã y m i. 6. Cho ma tr n có m dò ng và n c t, cá c ph n t là nguyên. Tì m ph n t nh nh t c a ma tr n. 7. Cho ma tr n có m dò ng và n c t, cá c ph n t là nguyên. Tí nh t ng và trung bì nh c ng cá c ph n t c a ma tr n. 8. Vi t ch ươ ng trì nh nh p và o m t xâu ký t. Hã y xây d ng xâu ch a cá c ký tño c a xâu ñó, ñ m xem có bao nhiêu ký t 'a ' ho c ‘A’ trong xâu. 9. Vi t ch ươ ng trì nh nh p và o m t xâu ký t. Hã y ki m tra xem xâu ñócóñi x ng không. In kí tñu vàkí t cu i c a xâu ñó. 10. Vi t ch ươ ng trì nh nh p và o hai xâu ký t có ñ dài b ng nhau. Hã y xây d ng xâu ch a cá c ký t xen k c a hai xâu ñó, theo th t m t kí t c a xâu1 r i ñ n 1 kí t c a xâu 2. 155 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 155
  45. CH ƯƠ NG V CH ƯƠ NG TRÌNH CON: HÀM VÀ TH T C 1 - C u trú c c a hà m vàtht c 1.1- Ch ươ ng trì nh con Khi l p trì nh g p ño n ch ươ ng trì nh c n dù ng nhi u l n, ñ trá nh vi t l p l i thì ño n ch ươ ng trì nh ñóñư c t ch c thà nh ch ươ ng trì nh con và mi khi c n g i t i ch ươ ng trì nh con ñó. M t khá c khi xây d ng ch ươ ng trì nh cho cá c bà i toá n l n, ph c t p, ñ d cho vi c thi t k ch ươ ng trì nh, hi u ch nh ch ươ ng trì nh, g ri khi ch y ch ươ ng trì nh, bà i toá n l n ñư c phân thà nh cá c ph n nh , m i ph n xây d ng thà nh cá c ch ươ ng trì nh con. Ch ươ ng trì nh chí nh s g i t i cá c ch ươ ng trì nh con . Trong Pascal có 2 lo i ch ươ ng trì nh con ñólàhà m ( Function) vàtht c (Procedure). a - C u trú c c a hà m ( Function) và li g i hà m • Hà m có cu trú c ñy ñ như sau: Function Tên_ hà m(Tham_s 1 : ki u; Tham_s 2: ki u; Var tham_s 3: ki u;. . .): ki u; Label {Khai bá o cá c nhã n } Const { Khai bá o cá c h ng } Type { ðnh nghĩ a cá c ki u d li u c a ng ư i s d ng } Var { Khai bá o cá c bi n c c b } . . . Begin . . . { Thân ch ươ ng trì nh con } Tên_ hà m:= Giá _tr ; End; Cá c ph n n u cóthì theo ñúng th tñã nêu. Ki u c a tham s làcá c ki u c ơ b n, ki u có cu trú c nh ư ki u xâu kí tvà ki u mang, n u là ki u m ng thìph i khai bá o b ng ñnh nghĩ a ki u ph n ñnh nghĩ a khi u ñu ch ươ ng trì nh chí nh, không ñư c khai bá o trc ti p. Ki u c a hà m có th làcá c ki u c ơ b n, ki u xâu kí t. Cá c tham s khai bá o trong hà m ñư c g i là tham s hì nh th c. • Li g i hà m Trong thân ch ươ ng trì nh chí nh s d ng hà m ph i có li g i hà m. Li g i hà m ñư c vi t nh ư sau: Tên_ hà m( danh sá ch cá c tham s th c s ) Cá c tham s th c s tươ ng ng c v s lư ng vàc v ki u d li u v i cá c tham s hì nh th c khai bá o trong hà m. L i g i hà m ñư c coi nh ư 1 bi n, có th tham gia và o bi u th c, tham gia và o cá c tht c và o/ ra. Víd 1: Ch ươ ng trì nh có xây d ng Function Bà i toá n : Tí nh di n tí ch c a tam giá c bi t 3c nh a,b,c. 156 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 156
  46. Ch ươ ng trì nh Program Tinh_dien_tich; uses crt; var a,b,c : real; Function DT(x,y,z : real) : real; var s,p : real; begin p:=(x+y+z)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); DT:=s; end; begin { than chuong trinh chinh } clrscr; a:=2;b:=3;c:=2; writeln(' dien tich tam giac 1 = ', DT(a,b,c):8:2); write('Nhap 3 canh c a tam giac a,b,c: '); readln(a,b,c); writeln(' dien tich tam giac 2 = ', DT(a,b,c):8:2); readln; end. -Hà m ñt vtrí sau khai bá o bi n trong ch ươ ng trì nh chí nh và tr ư c thân ch ươ ng trì nh chí nh. -Chñư c g i t i hà m sau khi ñã khai bá o hà m. - Ơ víd 1 ta khai bá o hà m có tên là DT có ki u real, cá c tham s hì nh th c c a hà m là : x,y,z. Trong thân ch ươ ng trì nh có 2 li g i hà m, chú ng ñ u n m trong l nh Writeln. Trong li g i hà m th nh t, 3 tham s th c s là a=2, b=3, c=2. Trong l i g i hà m th hai, 3 tham s th c s là a,b,c cógiátrñư c nh p và o t bà n phí m. b - C u trú c c a tht c (Procedure) và li g i tht c • Tht c có cu trú c ñy ñ nh ư sau: Procedure Tên_ th _t c(Tham_s 1 : ki u; Tham_s 2: ki u; Var tham_s 3: ki u;. . .); Label {Khai bá o cá c nhã n } Const { Khai bá o cá c h ng } Type { ðnh nghĩ a cá c ki u d li u c a ng ư i s d ng } Var { Khai bá o cá c bi n c c b } Begin . . . { thân ch ươ ng trì nh con } End; Cá c ph n n u cóthì theo ñúng th tñã nêu. Ki u c a tham s làcá c ki u c ơ b n, ki u có cu trú c nh ư ki u xâu kí tvà ki u mang, nu là ki u m ng thì ph i khai bá o b ng ñnh nghĩ a ki u ph n ñnh nghĩ a khi u ñu ch ươ ng trì nh chí nh, không ñư c khai bá o tr c ti p. Trong ch ươ ng trì nh chí nh tht c ñng tr ư c thân ch ươ ng trì nh chí nh, sau khai bá o bi n. Cá c tham s khai bá o trong hà m ñư c g i là tham s hì nh th c. • Li g i tht c Trong thân ch ươ ng trì nh chí nh s d ng tht c ph i có li g i tht c L i g i tht c ñư c vi t nh ư sau: Tên_ th _t c( danh sá ch c ác tham s th c s ); 157 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 157
  47. Cá c tham s th c s tươ ng ng c v ki u và s lư ng v i cá c tham s hì nh th c khai bá o trong tht c. L i g i tht c nh ư 1 câu l nh ñng ñc l p. Víd 2: ch ươ ng trì nh có xây d ng Procedure Bà i toá n: Tí nh t ng và trung bì nh c ng c a dã y s a1, a 2, . . ., a n . Ch ươ ng trì nh Program Tinh_tong_tb; uses crt; type mang= array[ 1 50 ] of real ; var i,n: integer; a: mang; tg,tb: real; Procedure tong(m: integer; x: mang; var s, p : real); Var j: integer ; t: real; begin t:=0; For j:=1 to m do t:=t + x[j] ; s:= t; p:=t/m; end; begin { than chuong trinh chinh } clrscr; write(' nhap so phan tu cua day n '); readln(n); for i:= 1 to n do begin write(a[', i, ']=' ); readln(a[i]); end; tong(n,a,tg,tb); writeln(' tong= ', tg: 8: 2, 'trung binh = ', tb: 8: 2 ); readln; end. 1.2 - S khá c nhau gi a hà m vàtht c -Hà m cho 1 giátr thông qua tên hà m. Tên hà m trong l i g i hà m ñư c coi nh ư mt bi n có th tham gia và o bi u th c, cá c tht c và o ra. Cu i thân hà m ph i có lnh gá n giátr cho tên hà m. - Tên tht c không cho 1giátrnà o c . -Cá c tham s vi t sau tên hà m, sau tên tht c ñư c g i là tham s hì nh th c. Tham s hì nh th c có 2 lo i: + Tham s không có tkhoá Var ñi kè m tr ư c g i là tham tr . + Tham s có tkhó a Var ñi kè m tr ư c g i là tham bi n. - Trong hà m th ư ng ch a cá c tham tr , ít khi ch a cá c tham bi n. Trong tht c th ư ng có cá c tham bi n. -Cá c tham s trong l i g i hà m, l i g i tht c g i là tham s th c s . Cá c tham s th c sph i t ươ ng ng v s lư ng và ki u v i cá c tham s hì nh th c. Cá c tham s th c s tươ ng ng v ơícá c tham trñ ch a cá c d li u và o. Cá c tham s th c s tươ ng ng v ơícá c tham bi n ñ ch a k t quc a tht c. -Hà m l y k t qu tên hà m, tht c l y k t qucá c tham s th c s tươ ng ng v i cá c tham bi n. 158 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 158
  48. - Nh ư vy n u ñ ly 1 k t qu ta có th t ch c hà m ho c tht c. Nu mu n l y nhi u h ơn 1 k t quthìph i t ch c ch ươ ng trì nh con d ng tht c. 2 - Bi n toà n c c, bi n c c b và truy n d li u 2.1 - Bi n toà n c c Bi ntoà n c c là bi n khai bá o ñu ch ươ ng trì nh chí nh. Bi n toà n c c t n t i su t th i gian là m vi c c a ch ươ ng trì nh . Bi n toà n c c có th sd ng c trong ch ươ ng trì nh chí nh và ch ươ ng trì nh con. Víd 1 m c 1 (tính di n tích tam giac) có a,b,c là bi n toà n c c. Víd 2m c 1 ( tính t ng và trung bình) có i, n, a, tg, tb là bi n toà n c c. 2.2 - Bi n c c b Bi n c c b làcá c bi n ñư c khai bá o ñu ch ươ ng trì nh con. Bi n c c b ñư c c p phá t b nh khi ch ươ ng trì nh con ñư c g i t i vàbxoá khi ra kh i ch ươ ng trì nh con. Bi n c c b chñư c dù ng trong ch ươ ng trì nh con. Bi n toà n c c và bi n c c b có th trù ng tên nhau nh ưng ch ươ ng trì nh v n phân bi t 2 bi n khá c nhau. Trong víd 1m c 1 (tính di n tích tam giác) có s, p là bi n c c b . Trong víd 2 muc 2 ( tính t ng và trung bình) có j, t là bi n c c b . 2.3 - Truy n d li u Khi g p l i g i ch ươ ng trì nh con má y s th c hi n cá c b ư c sau: - C p phá t b nh cho cá c tham s và cho cá c bi n c c b trong ch ươ ng trì nh con. - Truy n giátrc a cá c tham s th c s cho tham trvà truy n ña ch cho cá c tham bi n. - Th c hi n cá c l nh trong thân ch ươ ng trì nh con. - Th c hi n xong ch ươ ng trì nh con má y gi i phó ng cá c tham s vàcá c bi n c c b , r i tr v ch ươ ng trinh chí nh. 3 -Tí nh ñ quy c a ch ươ ng trì nh con Trong Function và Procedure có th có li g i t i chí nh nó . Tí nh ch t nà y ñư c g i làtí nh ñ qui. Ph ươ ng phá p ñ qui ñư c áp d ng cho cá c bà i toá n thu t gi i mang tí nh ñ qui. Thuât gi i ñ qui là m cho ch ươ ng trì nh ng n g n, ñp ñ nh ưng l i t n th gian tí nh toá n và b nh . Có nh ng bài toán ch có th gi i quy t ñưc b ng xây d ng các ch ươ ng trình con ñ quy. Víd 1: Bà i toá n tí nh giai th a - Tr ưng h p suy bi n: n! = 1 khi n=0 - Tr ưng h p t ng quát: n! = (n-1)! . n khi n >= 1 Có th xây d ng hà m Giaithua cótí nh ch t ñ qui nh ư sau: Function Giaithua( n: longint): longint ; begin 159 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 159
  49. if n=0 then Giaithua:= 1 else Giaithua:= Giaithua(n-1) * n ; end; * Mu n xây d ng ñư c ch ươ ng trì nh con ñ qui ta ph i xá c ñnh ñư c 2 tr ư ng h p: - Tr ư ng h p suy bi n , ñólà tr ư ng h p ñc bi t màxá c ñnh ñư c gi átrc a hà m. - Tr ư ng h p t ng quá t l n th n ñư c tí nh d a và o l n th (n-1). Víd 2: Tì m ư c s chung l n nh t c a 2 s x và y có th ñư c ñnh nghĩ a nh ư sau (x>y): USCLN(x,y)= x n u y=0 ( ñây là tr ưng h p suy bi n) USCLN(x,y)= USCLN( y, ph n d ư c a x/y) nu y y, n u y>x thì ch ươ ng trình tráo ñi giá tr gi x và y. Hà m USCLN ñư c vi t nh ư sau: Function USCLN(x,y: integer) : integer ; Var t:Integer; Begin If y>x then begin t:=x; x:=y; y:=t; end; if y=0 then USCLN:= x else USCLN := USCLN(y, x mod y) ; end; 4. Mt s ch ươ ng trì nh con c a turbo pascal Pascal ñã xây d ng s n m t s hàm và th th c, Ta có th g i t i các hàm, th t c ñó theo ñúng quy cách c a nó ñ s d ng. Ngoà i cá c hà n vàtht c ñãxé t cá c ph n trên, trong ph n nà y b sung thêm m t s tht c sau ñây: * Procedure GotoXY(Xpos, YPos); ðư a con tr (cursor) c a mà n hì nh v vtrí cótoñ Xpos và Ypos trên mà n hì nh. Xpos, Ypos ki u s nguyên. * Procedure ClrScr; Xoátoà n b mà n hì nh vàñt con trvà o vtríphí a trên, bên trá i. * Procedure ClrEof; Xoátoà n b cá c kí t bên ph i con trmà n hì nh. Sau khi xoá con tr vn t i ch . * Procedure Deline; Xoátoà n b dò ng mà n hì nh ch a con tr , sau ñó dn cá c dò ng dư i lên. * Procedure InsLine; Xen m t dò ng tr ng và o mà n hì nh t vtrí con tr . * Procedure LowVideo và NormVideo; Sau khi g i LowVideo m i kí t vi t ra mà n hì nh ñ u cóñsá ng y u ñi cho t i khi g i tht c NormVideo (Normal Video). * Procedure Delay(Time); T o ra th i gian tr Time (kho ng ms). Time là mt s nguyên. Delay th ư ng ñư c dù ng ñlà m ch m ch ươ ng trì nh l i cho ta quan sá t, kh o sá t * Procedure Sound(F) và NoSound; 160 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 160
  50. T o ra dao ñng âm thanh v i t n s là F (F: s nguyên) cho ñ n khi ta g i NoSound; Bài t p ch ươ ng 5 m 1. Vi t ch ươ ng trì nh tí nh t hp ch p m c a n ph n t : C n Ch ươ ng trì nh vi t có ch ươ ng trì nh con. 2. Vi t ch ươ ng trì nh tí nh P n(x)=(. . . ( ( a n*x+a n-1 )*x+an-2 )*x+. . . +a 1)*x+a 0 Ch ươ ng trì nh có ch ươ ng trì nh con. 3. Cho dã y s sau: a 1,a 2, ,a n . Vi t ch ươ ng trì nh tí nh t ng, trung bì nh c ng cá c ph n t c a dã y s ñó. Ch ươ ng trì nh vi t có ch ươ ng trì nh con. 4. Lp ch ươ ng trì nh tí nh di n tí ch và chu vi c a cá c hì nh: Tam giá c bi t 3 c nh a,b,c, hì nh ch nh t bi t hai c nh a,b, hì nh trò n bi t bá n kí nh. Ch n hì nh ñtí nh thông qua câu h i ' Ban tí nh cho hì nh gì TG=1, CN=2, TR =3 '. Ch ươ ng trì nh vi t c ó sd ng ch ươ ng trì nh con. 5. Cho hai s nguyên x1 và x2, l p ch ươ ng trì nh nh p x1 và x2 tbà n phí m, s d ng tí nh ñ quy c a ch ươ ng trì nh con ñtì m ư c s chung l n nh t c a x1 và x2. 161 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 161
  51. CH ƯƠ NG VI KI U D LI U CÓ C U TRUC: KIU B N GHI VÀ KI U T P 1 - Ki u b n ghi (record) 1.1 -Khá i ni m Ki u b n ghi là mt ki u d li u có cu trú c g m m t s cñnh cá c ph n t có ki u khá c nhau. Ki u b n ghi dù ng ñ mô tcá c d li u có nhi u thà nh ph n khá c ki u liên k t v i nhau nh ư d li u c a cá c b ng, cá c c t c a b ng làcá c thà nh ph n, m i c t có mt ki u d li u khá c nhau, cá c c t liên k t v i nhau ñ bi u di n m t n i dung nh t ñnh. Víd 1: B ng l ươ ng bao g m cá c c t: S th t, Hvà tên, Ngà y sinh, H s, L ươ ng, B o hi m xã hi, T ng lĩ nh. Mi dò ng c a b ng l ươ ng thu c ki u d li u b n ghi. Cá c c t làcá c thà nh ph n cò n ñư c g i làcá c ph n t . 1.2 - Khai bá o ki u d li u b n ghi Ki u d li u b n ghi có cá c ph n t liên k t v i nhau. Ph n t ñư c g i là tr ư ng, m i tr ư ng có mt tên, tên tr ư ng gi ng nh ư tên bi n. Mi tr ư ng thu c m t ki u d li u nà o ñó. Khi bá o ki u d li u b n ghi ñư c vi t trong c m t record end; Trong c m t là danh sá ch tên cá c tr ư ng kè m theo sau là ki u d li u c a nó . Khai bá o ki u b n ghi nh ư sau: Type Tên_ki u= Record Tên_tr ư ng1 : ki u; Tên_tr ư ng2 : ki u; . . . Tên_tr ư ngN : ki u; End; Víd 1: B ng l ươ ng trong vídm c 1 ñư c khai bá o nh ư sau: Type bang_luong = record Stt : Integer; Hoten : String[25]; Ns : String[10]; Heso,Luong,Bhxh,Tong : Real; End; Var luong1,luong2:bang_luong; Víd 2: Danh sá ch khá ch hà ng bao g m cá c d li u nh ư hvà tên, s nhà , ph , qu n, Thà nh ph , s ñin tho i. Type khach_hang = record hoten : string[25]; sonha : string[20]; Pho, quan, thanhpho : string[30]; tel : longint; end; Var Bangkh1,bangkh2: khach_hang; 162 Trưng ði hc Nông nghip 1 - Giáo trình Tin hc ñi cương 162