Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 116 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
116
Dung lượng
1,05 MB
Nội dung
Giaùo trình Ch biên: Phan V n D Hi u đính b sung: Bình nh, 6-2014 ng Giáo trình t p Pascal M CL C M C L C L IM U Ch ng GI I THI U NGÔN NG L P TRÌNH PASCAL VÀ BORLAND PASCAL 7.0 I.1 GI I THI U NGÔN NG PASCAL I.1.1 Ngôn ng Pascal I.1.2 Turbo Pascal I.2 S D NG PASCAL 7.0 I.2.1 Cài đ t s d ng Borland Pascal 7.0 I.2.2 Kh i đ ng Turbo Pascal I.2.3 Các thao tác th ng s d ng Turbo Pascal Ch ng 10 CÁC THÀNH PH N C B N C A 10 NGÔN NG L P TRÌNH PASCAL 10 II.1 CÁC T P TIN C N THI T KHI L P TRÌNH V I TURBO PASCAL 10 II.2 CÁC B C C B N KHI L P M T CH NG TRÌNH PASCAL 10 II.3 C U TRÚC CHUNG C A M T CH NG TRÌNH PASCAL 10 II.4 CÁC THÀNH PH N C B N C A NGÔN NG PASCAL 11 II.4.1 T khóa – B ch vi t – Tên 11 II.4.2 Ki u d li u 12 II.4.3 Bi n – H ng s 15 II.4.4 Bi u th c – d u ch m ph u – L i gi i thích 16 II.4.5 Câu l nh 16 BÀI T P TH C HÀNH 20 LÀM QUEN V I PASCAL 20 BÀI T P M U 20 BÀI T P T GI I 22 Ch ng 24 CÁC CÂU L NH CÓ C U TRÚC 24 III.1 L NH C U TRÚC R NHÁNH 24 III.1.1 D ng Không y 24 III.1.2 D ng y 24 III.2 L NH C U TRÚC L A CH N 25 III.3 CÁC L NH VÒNG L P 26 III.3.1 Vòng l p xác đ nh 26 III.3.2 Vòng l p không xác đ nh 27 III.3.3 S khác gi a vòng l p WHILE … DO REPEATE … UNTIL FOR TO DO 29 BÀI T P TH C HÀNH 30 BÀI T P M U 30 BÀI T P T GI I 36 Ch ng 39 CH NG TRÌNH CON: TH T C VÀ HÀM 39 IV.1 KHÁI NI M V CH NG TRÌNH CON 39 Giáo trình t p Pascal IV.2 HÀM (FUNCTION) 39 IV.3 TH T C (PROCEDURE) 42 IV.4 BI N TOÀN C C VÀ BI N A PH NG 43 IV.5 V N XÂY D NG CH NG TRÌNH CON VÀ TRUY N THAM S 44 IV.6 TÍNH QUY C A CH NG TRÌNH CON 45 IV.6.1 Khái ni m đ quy 45 IV.6.2 Ch ng trình đ quy 45 IV.6.3 C u trúc c a m t ch ng trình đ quy 46 IV.6.4 Ph ng pháp thi t k gi i thu t đ quy 46 IV.7 T O TH VI N (UNIT) 46 IV.7.1 Khái ni m v Unit 46 IV.7.2 Thi t l p Unit 48 BÀI T P TH C HÀNH 51 BÀI T P M U 51 BÀI T P T GI I 54 Ch ng 56 D LI U KI U M NG (ARRAY) 56 V.1 KHÁI NI M 56 V.2 M NG M T CHI U 56 V.2.1 Khai báo 56 V.2.2 Truy xu t ph n t c a m ng 57 V.3 M NG NHI U CHI U 57 V.3.1 Khai báo 57 V.3.2 Truy xu t ph n t c a m ng 58 V.4 M T S GI I THU T S P X P TRÊN M NG 59 V.4.1 Gi i thu t Select Sort (l a ch n) 59 V.4.2 Bubble sort (n i b ) 60 V.4.3 M t s thu t toán khác 61 BÀI T P TH C HÀNH 62 Ch ng 76 XÂU KÝ T (STRING) 76 VI.1 KHAI BÁO KI U STRING 76 VI.2 TRUY XU T D LI U KI U STRING 76 VI.3 CÁC PHÉP TOÁN, TH T C VÀ HÀM TRÊN XÂU KÝ T 76 VI.3.1 Các phép toán xây ký t 76 VI.3.2 Các th t c hàm xây ký t 76 BÀI T P TH C HÀNH 79 BÀI T P M U 79 BÀI T P T GI I 85 Ch ng 87 KI U B N GHI (RECORD) 87 VII.1 KHAI BÁO D LI U KI U RECORD 87 VII.2 XU T NH P D LI U KI U RECORD 87 VII.2.1 Truy nh p tr c ti p: 87 VII.2.2 S d ng câu l nh WITH 87 VII.2.3 Gán bi n Record: 87 Giáo trình t p Pascal BÀI T P TH C HÀNH 88 BÀI T P M U 88 BÀI T P T GI I 92 Ch ng 94 D LI U KI U CON TR 94 VIII.1 KHAI BÁO 94 VIII.2 LÀM VI C V I BI N NG 94 VIII.2.1 C p phát vùng nh 94 VIII2.2 Gi i phóng vùng nh 95 VIII.3 DANH SÁCH NG 95 VIII.3.1 Khái ni m 95 VIII.3.2 Khai báo 95 VIII.3.3 Các thao tác th ng g p danh sách liên k t đ n 95 BÀI T P TH C HÀNH 98 BÀI T P M U 98 BÀI T P T GI I 111 TÀI LI U THAM KH O .116 Giáo trình t p Pascal L IM U Theo khung ch ng trình c a B Giáo D c T o, Ngôn ng L p trình Pascal m t ph n quan tr ng h c ph n Tin h c i c ng thu c kh i ngành Khoa h c T nhiên, đ c bi t ngành Công ngh Thông tin Nh m đáp ng yêu c u h c t p c a h c sinh, sinh viên b c đ u làm quen v i công vi c l p trình, biên so n b Giáo Trình Bài t p Pascal nh m giúp cho H c sinh Sinh viên có m t tài li u h c t p, rèn luy n t t kh n ng l p trình, t o n n t ng v ng ch c cho môn h c ti p theo ch ng trình đào t o C nhân Công ngh Thông tin Giáo trình bao g m r t nhi u t p t đ n gi n đ n ph c t p Các t p đ c biên so n d a khung ch ng trình gi ng d y môn Ngôn ng L p trình (MH11) Bên c ch đó, c ng b sung m t s t p d a c s m t s thu t toán chu n v i c u trúc d li u đ c m r ng nh m nâng cao k n ng, ph ng pháp l p trình cho H c sinh Sinh viên N i dung c a giáo trình đ c chia thành ch ng Trong m i ch ng đ u có ph n tóm t t lý thuy t, ph n t p m u cu i ph n t p t gi i đ b n đ c t ki m tra nh ng ki n th c kinh nghi m h c Trong ph n t p m u, đ i v i nh ng t p khó ho c có thu t toán ph c t p, th ng nêu ý t ng gi i thu t tr c vi t ch ng trình cài đ t Xin chân thành c m n đ ng nghi p T Công ngh Thông tin Tr ng Cao ng Ngh C i n – Xây D ng & Nông Lâm Trung B giúp đ , đóng góp ý ki n đ hoàn ch nh n i dung giáo trình Chúng hy v ng s m nh n đ c nh ng ý ki n đóng góp, phê bình c a b n đ c v n i dung, ch t l ng hình th c trình bày đ giáo trình ngày m t hoàn thi n h n Bình nh, Tháng 06 N m 2014 CÁC TÁC GI Giáo trình t p Pascal Ch GI I THI U NGÔN NG ng L P TRÌNH PASCAL VÀ BORLAND PASCAL 7.0 I.1 GI I THI U NGÔN NG PASCAL I.1.1 Ngôn ng Pascal Pascal m t ngôn ng l p trình b c cao Niklaus Wirth, giáo s n toán tr ng i h c k thu t Zurich (Th y S ) đ xu t n m 1970 Ông l y tên Pascal đ k ni m nhà toán h c nhà tri t h c ng i Pháp n i ti ng Blaise Pascal Pascal m t ngôn ng l p trình có c u trúc th hi n ph ng di n: - V m t d li u: Ngoài ki u d li u đ n gi n có ki u d li u có c u trúc Ta có th xây d ng ki u d li u ph c t p t ki u d li u có - V m t câu l nh: T câu l nh đ n gi n l nh có c u trúc ta có th xây d ng câu l nh h p thành - V m t ch ng trình: M t ch ng trình có th chia làm nhi u ch ng trình I.1.2 Turbo Pascal Khi m i đ i, Standart Pascal m t ngôn ng đ n gi n, dùng đ gi ng d y h c t p, d n d n u m c a đ c phát huy tr thành m t ngôn ng m nh T Pascal chu n ban đ u, đ c nhi u công ty ph n m m c i ti n v i nhi u thêm b t khác TURBO PASCAL s n ph m c a hãng Borland đ c dùng r t ph bi n th gi i nh ng u m c a nh : t c đ nhanh, c i ti n so v i Pascal chu n phù h p v i yêu c u ng i dùng TURBO PASCAL 4.0 tr có c i ti n r t quan tr ng đ a khái ni m Unit đ có th d ch s n Module đ a, làm cho vi c l p trình tr nên ng n g n, d dàng, ch ng trình vi t d hi u h n T phiên b n 5.5 (ra đ i n m 1989) tr đi, Turbo Pascal có m t ki u d li u hoàn toàn m i ki u Object cho phép đ a mã l nh xen k v i d li u Ngoài th vi n đ ho r t phong phú v i nhi u tính n ng m nh, ngôn ng l p trình c p cao Delphi c ng s d ng cú pháp t ng t nh Turbo Pascal Turbo Pascal 7.0 phiên b n cu i c a Borland Sau phiên b n hãng Borland chuy n sang Pascal For Windows m t th i gian ng n r i s n xu t DELPHI Turbo Pascal 7.0 h tr m nh m l p trình h ng đ i t ng nh ng có nh c m b l i “Devide by zero” t t c máy có xung nh p l n h n 300 MHz Gi i quy t v n đ có hai ph ng án: C p nh t file TURBO.TPL th m c \BP\BIN S d ng Free Pascal Ngoài c ng nên l u ý Turbo Pascal ch y ch đ th c (real mode) nên ch y n n Windows XP hay kh i đ ng l i máy Nên ch y Borland Pascal Giáo trình t p Pascal Khi Windows s t o m t môi tr ti n l i h n I.2 S ng DOS gi l p ch y ch đ đa nhi m D NG PASCAL 7.0 I.2.1 Cài đ t s d ng Borland Pascal 7.0 Gói cài đ t Borland Pascal th ng đ c đ t th m c BP70 M th m c ch y file cài đ t INSTALL.EXE Làm theo h ng d n trình cài đ t Thông th ng sau cài đ t xong, ch ng trình s đ c đ t C:\BP Hãy vào C:\BP\BIN đ c p nh t l i file Turbo.tpl (Chép đè file tên th m c \BP70\Huongdan\ lên file này) Thay ch y TURBO PASCAL (File th c thi: BP\BIN\Turbo.exe) t o Shorcut ch y BORLAND PASCAL (File th c thi: BP\BIN\BP.exe) Các thao tác s d ng Borland Pascal hoàn toàn gi ng v i thao tác Turbo Pascal nói d i I.2.2 Kh i đ ng Turbo Pascal N u máy tính cài đ t Turbo Pascal đ a, ta có th kh i đ ng chúng nh sau (N u máy tính ch a có, ph i cài đ t Turbo Pascal sau m i th c thi đ c) + T MS-DOS: m b o r ng th m c hi n hành v trí cài đ t (ho c dùng l nh PATH) Turbo Pascal Ta đánh vào TURBO r i Enter + T Windows: Ta nên gi l p MS-DOS Mode cho t p tin TURBO.EXE ho c Shortcut c a nó, n u không m i ta th c thi TURBO PASCAL ch ng trình s thoát kh i Windows, tr v MS-DOS Sau thoát Turbo Pascal ta ph i đánh l nh EXIT đ kh i đ ng l i Windows Cách gi l p nh sau: Nh p chu t ph i lên t p tin TURBO.EXE ho c Shortcut c a nó, ch n Properties Ch n th Program đánh check nh hình sau Click vào ch n nh hình d i Giáo trình t p Pascal Ch n OK h p tho i, sau kh i đ ng Turbo Pascal, hình so n th o sau kh i đ ng TURBO PASCAL nh d i xu t hi n I.2.3 Các thao tác th Bi u t ng ng s d ng Turbo Pascal Tên phím Di n gi i Các phím thông d ng so n th o v n b n Enter a tr xu ng dòng Up a tr lên dòng Down a tr xu ng dòng Left a tr qua trái m t ký t Right a tr qua ph i m t ký t Home Home a tr v đ u dòng End a tr v cu i dòng End Page Up Lên m t trang hình Page Down Xu ng m t trang hình Delete Xoá ký t t i v trí tr Back BackSpace Xoá ký t tr Insert Insert Thay đ i ch đ vi t xen hay vi t ch ng Pg Up Pg Down Del c tr Các thao tác kh i v n b n Ctrl + PgUp a tr v đ u v n b n Ctrl + PgDn a tr v cu i v n b n Ctrl + Y Xóa dòng t i v trí tr Ctrl + N Thêm dòng tr Ctrl + Y Xoá m t dòng t i tr c tr Ctrl + K + B ánh d u đ u kh i Ctrl + K + K ánh d u cu i kh i Giáo trình t p Pascal Ctrl + K + C Sao chép kh i Ctrl + K + V Di chuy n kh i Ctrl + K + Y Xoá kh i v n b n ch n Trong Borland Pascal thao tác kh i đ n gi n d h n nh sau: + ánh d u kh i: Shift + + Copy kh i vào clipboard: CTRL+ Ins (phím Insert) + Dán kh i (đã copy vào clipboard) vào v trí m i: SHIFT+ Ins Các phím ch c n ng th ng dùng F1 F1 G i ch F2 F2 L u t p tin l i F3 F3 T o m i ho c m t p tin F4 F4 Th c thi ch tr F5 F5 Phóng l n c a s F6 F6 Chuy n đ i c a s F7 F7 Ch y t ng dòng l nh (hàm xem nh m t l nh) F8 F8 Ch y t ng dòng l nh đ n F9 F9 Ki m tra l i ch F10 F10 Vào h th ng Menu c a Pascal Alt + F3 ng trình giúp đ ng trình đ n dòng ch a ng trình óng file so n th o Alt + F5 Xem k t qu ch y ch ng trình Alt + F9 Biên d ch ch Alt + D ch chuy n qua l i gi a file m Ctrl + F9 Ch y ch Ctrl + K + W Ghi kh i lên đ a thành m t t p tin (n i dung c a t p tin kh i ch n) Ctrl + K + R Xen n i dung m t t p tin (t đ a) vào sau v trí tr Ctrl + K + H T t/M đánh d u kh i Ctrl + F4 Ki m tra giá tr bi n ch y ch trình Alt + X Thoát kh i ch ng trình ng trình ng ng trình Giáo trình t p Pascal Ch ng CÁC THÀNH PH N C NGÔN NG B NC A L P TRÌNH PASCAL II.1 CÁC T P TIN C N THI T KHI L P TRÌNH V I TURBO PASCAL l p trình đ c v i Turbo Pascal, t i thi u c n file sau: • TURBO.EXE: Dùng đ so n th o d ch ch ng trình • TURBO.TPL: Th vi n ch a đ n v chu n đ ch y v i TURBO.EXE Ngoài ra, mu n l p trình đ ho ph i c n thêm t p tin: • GRAPH.TPU: Th vi n đ ho • *.BGI: Các file u n lo i hình t ng ng dùng đ ho • *.CHR: Các file ch a font ch đ h a II.2 CÁC B C C B N KHI L P M T CH NG TRÌNH PASCAL B c 1: So n th o ch ng trình B c 2: D ch ch ng trình (nh n phím F9), n u có l i ph i s a l i B c 3: Ch y ch ng trình (nh n phím Ctrl-F9) II.3 C U TRÚC CHUNG C A M T CH { Ph n tiêu đ } PROGRAM Tên_ch ng_trình; { Ph n khai báo } USES ; CONST .; TYPE .; VAR ; PROCEDURE ; FUNCTION ; { Ph n thân ch ng trình } BEGIN END NG TRÌNH PASCAL Ví d 1: Ch ng trình Pascal đ n gi n nh t BEGIN Write(‘Hello World!’); END Ví d 2: Program Vidu2; Const PI=3.14; 10 Giáo trình t p Pascal begin if first = nil then TroMax:= nil else begin p:= first; m:= p^.Giatri; q:= p^.Tiep; while (q nil) begin if q^.Giatri > m then begin p:= q; m:= p^.Giatri; end; q:= q^.Tiep; end; TroMax:=p; end; end; Bài t p 8.4: Gi s danh sách khác r ng Vi t th t c hàm sau: a Function GiaTriMax(First: TroNut): integer tr v giá tr l n nh t c a nút có danh sách Function GiaTriMax(First: TroNut): integer; var m: integer; p, q: Tronut; begin p:= first; m:= p^.Giatri; q:= p^.Tiep; while q nil begin if q^.Giatri > m then m:=q^.Giatri; q:= q^.Tiep; GiaTriMax:= m; end; b Function GiaTriMin(First: TroNut): Integer tr v giá tr nh nh t c a nút có danh sách Function GiaTriMax(First: TroNut): integer; var 102 Giáo trình t p Pascal m: integer; p,q: Tronut; begin p:= first; m:= p^.Giatri; q:= p^.Tiep; while q nil begin if q^.Giatri < m then m:=q^.Giatri; q:= q^.Tiep; GiaTriMin:= m; end; Bài t p 8.5: Cho danh sách liên k t đ n có nút đ u tr b i First, đ c khai báo nh sau Type TroNut = ^nut; Nut = Record Info: real; Next: TroNut; End; Var First: Tronut; Vi t th t c hàm sau: a Function Search(First: TroNut; k: word): TroNut tr v đ a ch c a nút th k (n u có, ng c l i, hàm tr v giá tr Nil) Function Search(First: TroNut; k: word): Tronut; Var d: word; p: Tronut; Begin d:=0; p:=first; while (p nil) begin inc(d); if d = k then break; p:= p^.next; end; Search:= p; End; b Procedure Delete_K(Var First: TroNut; k: word) th c hi n vi c xoá nút th k danh sách (n u có) 103 Giáo trình t p Pascal Procedure Delete_K(Var first: Tronut; k:word); var d: word; p,q: Tronut; begin d:=1; p:= first; while (p nil) and (d then begin T_duong:= T_duong + p^.info; inc(N_duong); end; if p^.info < then begin T_am:= T_am + p^.info; inc(N_am); end; p:= p^.next; end; writeln(f, T,#32,T_duong,#32,T_am); writeln(f,N_duong,#32,N_am); close(f); end; Begin Lay_du_lieu; Tinh_toan; End Bài t p 8.7: Ng i ta l u thông tin b nh nhân c a b nh vi n X danh sách liên k t đ n có nút đ u tr b i First, m i b nh nhân t ng ng v i m t nút danh sách đ c khai báo nh sau: Type St20 = String[20]; St5 = String[5]; St2 = String[2]; TroBN = ^BenhNhan; BenhNhan = Record MaBN: St5; {Mã b nh nhân} Hoten: St20; {H tên b nh nhân} Tuoi: byte; {Tu i} Tiep: TroBN; End; Chú ý: Hai ký t đ u c a mã b nh nhân mã c a khoa u tr Vi t th t c hàm sau: a Procedure BoSungBN(Var First: TroBN; Bma: St5; Bten: St20; Btuoi: byte) b sung b nh nhân có mã Bma, h tên Bten, tu i Btuoi vào cu i danh sách có nút đ u tr b i First (L u ý: Ki m tra Bma ch a có danh sách m i b sung) Procedure BoSungBN(var First: TroBN; Bma: St5; Bten: St20; Btuoi:byte); 106 Giáo trình t p Pascal var p,q: TroBN; begin p:= first; while (p nil) and (p^.MaBN Bma) begin q:= p; p:= p^.tiep; end; if p = nil then begin new(p); p^.MaBn:= Bma; p^.Hoten:= Bten; p^.tuoi:= Btuoi; p^.Tiep:= nil; if first = nil then first:= p else q^.tiep:= p; end; b Procedure KhoiTao(Var First: TroBN) nh p d li u cho danh sách có nút đ u tr b i First, trình nh p d ng mã b nh nhân đ a vào xâu r ng (Yêu c u s d ng th t c BoSungBN) Procedure KhoiTao(Var First: TroBN); var bma:St5; bten: st20; btuoi: byte; begin first:= nil; repeat write(‘Nhap ma benh nhan: ‘); readln(bma); if bma ‘’ then begin write(‘Ho ten benh nhan: ‘); readln(bten); write(‘Tuoi: ‘); readln(btuoi); BosungBN(first, bma, bten, btuoi); end; until bma = ‘’; end; 107 Giáo trình t p Pascal c Function SoBN(First: TroBN; BKhoa: St2): word tr v s l u tr t i khoa có mã BKhoa ng b nh nhân Function SoBN(First: TroBN; BKhoa: St2): word; Var p: TroBN; dem:word; Begin dem:= 0; p:= first; while p nil begin if copy(p^.MaBN,1,2) = BKhoa then inc(dem); p:= p^.tiep; end; SoBN:= dem; End; d Procedure LietKe(First: TroBN; n: byte) in thông tin c a b nh nhân có tu i nh h n ho c b ng n Procedure LietKe(First: TroBN; n: byte); Var p: TroBN; Begin p:= first; while p nil begin with p if tuoi m then inc(dem); p:= p^.next; end; DemDL:= dem; End; e Procedure XoaDL(Var First: TroDL; Tel: St6) xóa đ i lý có s n tho i Tel kh i danh sách 110 Giáo trình t p Pascal Procedure XoaDL(Var First: TroDL; Tel: St6); Var p,q: TroDL; Begin p:= first; while (p nil) and (p^.SoDT Tel) begin q:= p; p:= p^.next; end; if p nil then begin if p = first then first:= first^.next else q^.next:= p^.next; dispose(p); end; End; BÀI T P T GI I Bài t p 8.8: Vi t m t hàm đ xác đ nh xem m t danh sách liên k t cho có th t t ng d n hay không theo cách: Không đ qui đ qui Bài t p 8.10: Cho danh sách liên k t đ n đ i di n cho t p h p đ L2 Vi t ch ng trình đ hi n th : Ph n giao c a danh sách Ph n h p c a danh sách Ph n hi u c a danh sách c tr b i L1 Bài t p 8.11: Cho danh sách liên k t L1 L2 S p x p l i danh sách theo th t t ng d n Tr n danh sách l i thành danh sách L3 cho L3 v n có th t t ng d n Bài t p 8.12: Dùng danh sách móc n i đ bi u di n m t đa th c Pn(x) = anxn + an-1xn-1 + + a0 Trong đó, m i s h ng c a đa th c đ c xác đ nh b i thành ph n: h s s m i Nh v y, ta có th xây d ng c u trúc d li u cho đa th c nh sau: TYPE DATHUC = ^SOHANG; SOHANG = Record HeSo: Real; SoMu: Integer; Next: DATHUC; End; 111 Giáo trình t p Pascal Vi t ch ng trình th c hi n công vi c sau: Vi t th t c nh p vào m t đa th c Vi t th t c đ s p x p l i s h ng c a đa th c theo th t s m gi m d n Vi t th t c/hàm đ c ng đa th c Vi t hàm đ tính giá tr c a đa th c theo giá tr X Bài t p 8.13: Cho m t file v n b n có ch a t Các d u phân cách t là: ký t tr ng, d u ch m, d u ph y, d u ch m ph y, d u hai ch m, d u than, d u h i M i t đ u b t đ u b ng m t ký t t p ['A' 'Z'] Vi t th t c cho phép đ c t file v n b n cho l u t vào m ng danh sách móc n i: TuDien : ARRAY['A' 'Z'] OF DanhSach; Trong ki u DanhSach đ c cho nh sau: TYPE DanhSach = RECORD Tu : String[10]; Next : DanhSach; END; M i danh sách móc n i t n đ u ph i đ c s p th t (t ng d n), t đ c l u t n ph i khác Vi t m t th t c hi n th t t c t t n hình theo th t t ng d n Vi t m t th t c b sung m t t m i vào t n b ng cách đ c t t bàn phím, tìm t n - N u tìm th y, hi n th thông báo:"T có t n" - N u không tìm th y, chèn t vào t n v trí thích h p Bài t p 8.14: Cho dãy s nguyên s p theo th t t ng d n l u m t danh sách liên k t đ n có đ a ch nút đ u danh sách First a Vi t ch ng trình xoá t t c nút danh sách có giá tr b Vi t ch ng trình in giá tr phân bi t c a danh sách Bài t p 8.15: Cho hai dãy s th c l u hai danh sách liên k t đ n, có đ a ch c a nút đ u danh sách l n l t First1 First2 Gi s m i danh sách giá tr nút đ c s p t ng d n Hãy vi t ch ng trình t o m t danh sách liên k t đ n có nút đ u tr b i List, ch a t t c ph n t c a hai danh sách trên, danh sách m i c ng đ c s p th t Bài t p 8.16: M t công ty du l ch qu n lý t t c xe ô tô c a h b ng m t danh sách liên k t, m i nút c a danh sách đ c khai báo nh sau: Type TroXe = ^Xe; St6 = String[6]; St20 = String[20]; Xe = Record TaiXe: St20; { h tên tài x } BienSo: St6; { bi n s xe } Socho: Byte; { s ch ng i } 112 Giáo trình t p Pascal Tiep: TroXe; end; Var First: TroXe; a Vi t th t c Procedure Print(First: TroXe; n:byte); in h tên tài x , bi n s xe c a t t c xe có n ch ng i đ c l u danh sách b Vi t hàm Function SoChoNgoi(First: TroXe; Bso: St6); tr v s ch c a xe có bi n s Bso Bài t p 8.17: Ng i ta qu n lý sách th vi n b ng m t danh sách liên k t, s p theo th t c a mã sách M i đ u sách t ng ng v i m t nút danh sách có khai báo nh sau: Type TroSach = ^Sach; St4 = String[4]; St20 = String[20]; Sach = Record Ma: St4; Ten, Tacgia: St20; NamXb: word; Soluong: Byte; Next: TroSach; end; Var First: TroSach; Chú ý: Các đ u sách đ c s p theo th t mã sách a Vi t th t c Procedure CapNhat(Var First: TroSach; Bma:St4; Bten, BTgia: St20; Bnam: word; n: byte); b sung vào th vi n đ u sách có mã Bma, tên sách Bten, tác gi BTgia s l ng b sung n theo yêu c u: N u đ u sách có mã Bma có th vi n ch t ng s l ng lên n, ng c l i thêm m t đ u sách m i vào th vi n v i s l ng n b o toàn th t c a mã sách b Vi t th t c Procedure LietKeNam(First: TroSach; Nam: word) in danh sách đ u sách xu t b n vào n m Nam c Vi t hàm Function So_Dau_Sach(First: TroSach; BTgia: St20) tr v s đ u sách c a tác gi BTgia d Vi t th t c Procedure LietKeten(First: TroSach; Bten: St20) in danh sách t t c đ u sách có tên sách Bten Bài t p 8.18: M t c a hàng kinh doanh v t li u xây d ng qu n lý l ng hàng t n kho b ng m t danh sách liên k t M i lo i v t li u t ng ng v i m t nút danh sách có khai báo nh sau: Type St3 = String[3]; St10 = String[10]; 113 Giáo trình t p Pascal TroVT = ^Vattu; Vattu = Record Ma: St3; Ten: St10; DVTinh: St10; { đ n v tính} Soluong: word; Tiep: TroVattu; End; Var First: TroVattu; a Vi t th t c Procedure XuatKho(Var First: TroVattu; Bma: St3; Bdonvi: St10; n: word); l y kh i kho n bdonvi lo i v t t có mã Bma theo yêu c u sau: • N u v t t có mã Bma kho thông báo kho lo i vât t k t thúc th c hi n • Ng c l i, ki m tra Bdonvi có trùng v i DVTinh c a lo i v t t không, n u không trùng yêu c u đ i theo đ n v tính l u danh sách tr c th c hi n xu t kho • N u s l ng kho c a v t t có mã Bma nh h n n đ a thông báo h i l i có mu n xu t không, n u mu n xu t v i s l ng bao nhiêu? • Sau xu t n đ n v lo i v t t theo yêu c u, gi m s l ng v t t kho cho phù h p n u s l ng c a v t t b ng xoá kh i danh sách b Vi t th t c Procedure NhapKho(Var First: TroVattu; Bma: St3; Bten, Bdv: St10; n: word); nh p vào kho n Bdv la i v t t có mã Bma theo yêu c u: • N u lo i v t t có mã Bma có kho ch t ng s l ng v t t kho, nh ki m tra đ n v tính nh câu a • Ng c l i, b sung m t lo i v t t m i vào kho v i mã Bma, tên v t t Bten, đ n v tính Bdv s l ng t ng ng n c Vi t hàm Function SoVattu(First: TroVattu; Bma:St3); tr v s l ng v t t có mã Bma t n kho, n u v t t này, hàm tr v giá tr d Vi t th t c Procedure ThongKe(First: TroVattu); in thông tin c a t t c lo i v t t hi n có kho Bài t p 8.19: Cho danh sách s nguyên đ c t ch c nh sau: Type TRO = ^PT; PT = Record X: Integer; Link: TRO; End; Vi t th t c NHAP(Var Dau:TRO); đ nh p vào m t danh sách s nguyên có nút đ u tiên đ c tr b i tr Dau Vi t th t c LIETKE(Dau:TRO); đ in hình giá tr c a t t c nút danh sách đ c tr b i tr Dau 114 Giáo trình t p Pascal Gi s Dau tr tr đ n đ u c a m t danh sách ch a đ c s p x p, L đ c gán b ng NIL Hãy vi t th t c SAPCHON(Var Dau,L:TRO); cho phép ch n ph n t danh sách Dau t giá tr l n đ n bé, đ a vào danh sách L đ cu i Dau=Nil, L s tr thành m t danh sách đ c s p x p theo th t t ng d n Vi t hàm TANG(Dau:TRO):Boolean; đ xác đ nh xem danh sách đ c tr b i Dau có th t t ng d n hay không theo cách: Không đ qui đ qui Vi t th t c DAO(Var Dau:TRO); đ đ o ng c tr c a danh sách Dau Bài t p 8.20: Cho danh sách s nguyên đ c t ch c nh sau: Type TRO = ^PT; PT = Record Gtri: Integer; Tiep: TRO; End; Vi t hàm DXUNG(ds:TRO):Boolean; nh m ki m tra giá tr danh dách ds có ph i đ i x ng hay không theo cách: qui không đ qui.(Ví d : danh sách ch a dãy s sau đ i x ng: 2; 7 5) Vi t hàm KhaDX(ds:TRO):Boolean; đ ki m tra xem v i danh sách ds cho, có t n t i m t cách s p x p l i ph n t đ cu i nh n đ c m t danh sách đ i x ng hay không? Vi t th t c SAPLAI(Var ds:TRO); đ đ a m t cách s p x p l i ph n t đ có m t danh sách đ i x ng (gi thi t u có th làm đu c nh hàm KhaDX) 115 Giáo trình t p Pascal TÀI LI U THAM KH O [1] TS Bùi Th Tâm, Giáo trình l p trình c n b n, Nhà xu t b n giao thông, 2000 [2] Ths Ngô Bá Hùng, Ks Ph m Th Phi, Giáo trình tham kh o C, ih cC n Th 01/2005 [3] Quách Tu n Ng c, Giáo trình pascal, Nhà xu t b n giáo d c 1999 [4] Th.S Tr n c Huyên, Ph ng pháp gi i toán tin h c, Nhà xu t b n giáo d c 2003 [5] V ng c Bình, Giáo trình Pascal 7.0, 01/2008 [6] Khoa Công Ngh Thông tin, Giáo trình t p Pascal, Tr ng i h c Khoa h c Hu , 07/2004 116 [...]... nguyen to’); End; Readln; End 35 Giáo trình bài t p Pascal BÀI T P T GI I Bài t p 3.12: Vi t ch ng trình gi i ph ng trình b c hai: ax2 + bx + c = 0, a≠0 G i ý: - Tính Delta=b*b-4*a*c - Bi n lu n: Delta0: Ph ng trình có 2 nghi m phân bi t: x1,2 = (-b±SQRT(Delta))/(2*a) Bài t p 3.13: Vi t ch ng trình nh p vào t bàn phím: gi... Writeln(‘***********************************************************’); Readln; End 3 D ch và ch y ch ng trình trên 4 L u ch ng trình vào đ a v i tên BAI1.PAS 5 Thoát kh i Pascal 6 Kh i đ ng l i Turbo Pascal 7 M file BAI1.PAS 8 Chèn thêm vào dòng: CLRSCR; vào sau dòng BEGIN 9 D ch và ch y th ch ng trình 10 L u ch ng trình vào đ a 11 Thoát kh i Pascal 12 Vi t ch ng trình in ra màn hình các hình sau: * ******** ******* *** ** ** ** **... Th t c TEXTBACKGROUND(color:Byte): Thi t l p màu n n cho màn hình 19 Giáo trình bài t p Pascal BÀI T P TH C HÀNH LÀM QUEN V I PASCAL Bài t p 2.0: Làm quen v i Pascal 1 Kh i đ ng Turbo Pascal 2 Nh p vào đo n ch ng trình sau: Uses Crt; Begin Writeln(‘***********************************************************’); Writeln(‘* CHUONG TRINH PASCAL DAU TIEN CUA TOI *’); Writeln(‘* Oi! Tuyet voi! *); Writeln(‘***********************************************************’);... Shl Xor Chú ý: V i Turbo Pascal 7.0 tr lên, các t khoá trong ch th khác màu v i các t khác ng trình s đ c hi n II.4.1.2 B ch vi t B ch trong ngôn ng Pascal g m: - 26 ch cái la tinh l n: A, B, C… Z - 26 ch cái la tinh nh : a, b, c, … z - D u g ch d i _ (đánh vào b ng cách k t h p phím Shift v i d u tr ) - B ch s th p phân: 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 11 Giáo trình bài t p Pascal - Các ký hi u toán.. .Giáo trình bài t p Pascal Var R,S:Real; Begin R:=10; {Bán kính đ ng tròn} S:=R*R*PI; {Di n tích hình tròn} Writeln(‘Dien tich hinh tron = ‘, S:0:2); { In ra màn hình } Readln; End II.4 CÁC THÀNH PH N C B N C A NGÔN NG PASCAL II.4.1 T khóa – B ch vi t – Tên II.4.1.1 T khóa Các t khoá là các t dành riêng (reserved words) c a Pascal mà ng i l p trình có th s d ng chúng trong ch ng trình đ thi... nh nhau 29 Giáo trình bài t p Pascal BÀI T P M U Bài t p 3.1: Vi t ch là s ch n hay s l BÀI T P TH C HÀNH ng trình nh p vào m t s nguyên và ki m tra xem s v a nh p Uses crt; Var x:integer; Begin Write('Nhap vao mot so nguyen : '); Readln(x); If x MOD 2=0 Then Writeln('So vua nhap vao la so chan') Else Writeln('So vua nhap vao la so le'); Readln; End Bài t p 3.2: Vi t ch ng trình gi i ph ng trình b c... u tr toàn b màn hình đ h a đó? Có 2 sinh viên vi t ch ng trình tính s byte l u tr màn hình đ h a: 22 Giáo trình bài t p Pascal Program Sinhvien1; Var a,b:integer; s:Word; Begin a:=640; b:=480; s:=a*b; writeln(s); readln; End Program Sinhvien2; Var a,b:Word; s: LongInt; Begin a:=640; b:=480; s:=a*b; writeln(s); readln; End Hãy cho bi t 2 ch ng trình trên cho k t qu đúng hay sai? T i sao? Bài t p 2.9:... ',Pi:0:4); Readln; End Bài t p 3.8: Vi t ch ng trình nh p vào s nguyên N In ra màn hình t t c các c s c a N 33 Giáo trình bài t p Pascal Ý t ng: Cho bi n i ch y t 1 t i N N u N MOD i=0 thì vi t i ra màn hình Uses Crt; Var N,i : Integer; Begin Clrscr; Write('Nhap so nguyen N= '); Readln(N); For i:=1 To N Do If N MOD i=0 Then Write(i:5); Readln; End Bài t p 3.9: Vi t ch ng trình tìm USCLN và BSCNN c a 2 s a, b... đó? Có 2 sinh viên vi t ch ng trình gi i bài toán này nh sau: Program Sinhvien1; Var a,b:Word; s: LongInt; Begin a:=640; b:=480; s:=a; s:=s*b; s:=s DIV 10; writeln(s); readln; End Program Sinhvien2; Var a,b:Word; s: LongInt; Begin a:=640; b:=480; s:=a*b DIV 10; writeln(s); readln; End Hãy cho bi t 2 ch ng trình trên cho k t qu đúng hay sai? T i sao? 23 Giáo trình bài t p Pascal Ch ng 3 CÁC CÂU L NH CÓ... 2.9E-39 1.7E+38 9 Single 4 byte 1.5E-45 3.4E+38 10 Double 8 byte 5.0E-324 1.7E+308 11 Extended 10 byte 3.4E-4932 1.1E+4932 12 Comp 8 byte -9.2E-18 9.2E+18 12 Giáo trình bài t p Pascal Trong đó 7 ki u đ u g i là ki u đ m đ đ m đ c - Ki u do ng i l p trình đ nh ngh a thông qua vi c khai báo ki u Cú pháp: TYPE Ví d : c (ordinal type), còn các ki u sau là không TYPE = ; [ =