Giáo Trình Pascal 7.0 Phan Văn Dương

116 285 0
Giáo Trình Pascal 7.0 Phan Văn Dương

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

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 = ; [ =

Ngày đăng: 09/11/2015, 17:49

Từ khóa liên quan

Tài liệu cùng người dùng

  • Đang cập nhật ...

Tài liệu liên quan