Ngôn ngữ lập trình Pascal bài giảng dành cho sinh viên Đại học, Cao đẳng

125 137 0
  • Loading ...
Loading...
1/125 trang
Tải xuống

Thông tin tài liệu

Ngày đăng: 03/05/2017, 10:24

Ngôn ngữ lập trình Pascal bài giảng dành cho sinh viên Đại học, Cao đẳng là bộ tài liệu hay và rất hữu ích cho các bạn sinh viên và quý bạn đọc quan tâm. Đây là tài liệu hay trong Bộ tài liệu sưu tập gồm nhiều Bài tập THCS, THPT, luyện thi THPT Quốc gia, Giáo án, Luận văn, Khoá luận, Tiểu luận…và nhiều Giáo trình Đại học, cao đẳng của nhiều lĩnh vực: Toán, Lý, Hoá, Sinh…. Đây là nguồn tài liệu quý giá đầy đủ và rất cần thiết đối với các bạn sinh viên, học sinh, quý phụ huynh, quý đồng nghiệp và các giáo sinh tham khảo học tập. Xuất phát từ quá trình tìm tòi, trao đổi tài liệu, chúng tôi nhận thấy rằng để có được tài liệu mình cần và đủ là một điều không dễ, tốn nhiều thời gian, vì vậy, với mong muốn giúp bạn, giúp mình tôi tổng hợp và chuyển tải lên để quý vị tham khảo. Qua đây cũng gởi lời cảm ơn đến tác giả các bài viết liên quan đã tạo điều kiện cho chúng tôi có bộ sưu tập này. Trên tinh thần tôn trọng tác giả, chúng tôi vẫn giữ nguyên bản gốc.Trân trọng.ĐỊA CHỈ DANH MỤC TẠI LIỆU CẦN THAM KHẢOhttp:123doc.vntrangcanhan348169nguyenductrung.htmhoặc Đường dẫn: google > 123doc > Nguyễn Đức Trung > Tất cả (chọn mục Thành viên) TR NGă IăH CăPH MăV Nă NG KHOA CÔNG NGH THÔNG TIN BÀI GI NG: NGÔN NG L P TRÌNH PASCAL Nguy n Ánh Tháng 12/2013 M cl c L IăGI IăTHI U CH NGă 1.ă CÁCă KI Nă TH Că CHUNGă V ă NGỌNă NG ă L Pă TRÌNHă PASCAL 1.1.ăGi iăthi u 1.2.ăCácăb căl pătrìnhăgi iăbƠiătoán 1.3.ăCácăkháiăni măăvƠăcácăthƠnhăph năc ăb n 1.4.ăC uătrúcăt ngăquátăc aăm tăch CH NGă2.ăCÁCăKI UăD ăLI Uă ngătrình: NăGI N 10 2.1.ăT ngăquanăv ăcácăki uăd ăli uătrongăTurboăPascal 10 2.2.ăCácăki uăd ăli uăđ năgi năchu n 11 2.3.ăKi uăli tăkêăvƠăki uăđo năcon 13 2.4 CácăhƠmăvƠăth ăt căchu n 15 BÀIăT PăCH CH NGă2 16 NGă3.ăBI UăTH CăVÀăCỂUăL NHă NăGI N 18 3.1.ăBi uăth c 18 3.2.ăCơuăl nh 19 BÀIăT PăCH CH NGă3 23 NG 4.ăCỂUăL NHăCịăC UăTRỎC 27 4.1.ăL nhăghép 27 4.2.ăL nhăIFă(cơuăl nhăr ănhánh) 27 4.3.ăL nhăCASEă(cơuăl nhăl aăch n) 29 4.4.ăL nhăFORă(L păbi tătr căs ăl n) .31 4.5.ăL nhăREPEATă(l păv iăs ăl năkhôngăbi tătr c) 33 4.6.ăL nhăWHILEă(l păv iăs ăl năkhôngăbi tătr c) 35 BÀIăT PăCH CH NGă4 37 NGă5.ăKI UăD ăLI UăT PăH P,ăKI UăM NG,ăKI UăXỂU 42 5.1.ăKi uăt păh p 42 5.2.ăKi uăm ng 44 5.3.ăKi uăxơu 50 BÀIăT PăCH CH NGă6.ăCH NGă5 54 NGăTRÌNHăCON 62 6.1.ăCácăkháiăni măm ăđ u 62 6.2.ăTh ăt c 63 6.3.ăBi nătoƠnăc căvƠăbi năđ aăph ng .66 6.4 Hàm 69 6.5.ăCh ngătrìnhăconăl ngănhau 70 6.6.ăCh ngătrìnhăconăđ ăqui 71 6.7.ă năv ăch BÀIăT PăCH CH 7.1.ă ngătrìnhăc aăng iădùng 73 NGă6 81 NGă7.ăKI UăB NăGHIă(RECORD) 83 nhăngh aăki uăvƠăkhaiăbáoăbi năki uăb năghi 83 7.2.ăCácăthaoătácătrênăki uăb năghi: 84 7.3.ăKi uăb năghiăbi năđ i 86 BÀIăT PăCH CH 8.1.ă NG 90 NGă8.ăKI UăT PăTINă(FILE) 91 nhăngh aăki uăvƠăkhaiăbáoăbi n 91 8.2.ăM tăs ăth ăt căvƠăhƠmăchu n 92 8.3.ăT pătinăđ nhăki u 94 8.4.ăT pătinăv năb n 101 BÀIăT PăCH CH NG 108 NGă9 KI UăCONăTR ă(POINTER) 111 9.1.ăM ăđ u 111 9.2.ăKi uăconătr 112 9.3.ăDanhăsáchăliênăk t 119 BÀIăT PăCH NG 124 TÀIăLI UăTHAMăKH O 124 L I GI I THI U Ngônăng ăl pătrìnhăPascalădoăNiklausăWirthăphátătri năc aăngônăng ăAlgol60ă(ngônă ng ăEuler)ăđ aăraă vƠoă n mă1970.ăPascală lƠă ngônă ng ăđ că bi tăthíchăh pă choăki uă l pătrìnhăcóăc uătrúcă vƠă lƠă ngônă ng ăchoăphépă môăt ăthu tă toánăr tăthu nă ti n.ă Choă đ nă nay,ă Pascală v nă đ că dùngă đ ă gi ngă d yă v ă l pă trìnhă trongă m tă s ă tr ngăPh ăthôngăvƠă iăh cătrênăth ăgi i BƠiăgi ngă nƠy,ăcungăc păchoăSinhă viênăchuyênă ngƠnhăS ph mătinăcácăki nă th căc ăb nă v ă ngônă ng ăl pătrìnhăPascalăc ă lýăthuy tă vƠăbƠiăt păth căhƠnh.ă Trong bƠiă gi ngă n yă chúngă tôiă cóă đ aă thêmă m tă s ă bƠiă t pă tină h că 11, đ ă sinhă viênă lƠmă quen d n v iăcácăd ngăbƠiă ăph thông N iădungănƠyăđ căh cătrongăph măviă3 tín ch ,ăph căv ăchoăvi căd yăvƠăh cătheoăph ngăphápăđƠoăt oătínăch BƠiăgi ngăbaoăg mă9ăch ngănh ăsau: Ch ngă1.ăCácăki năth căchungăv ăngônăng ăl pătrìnhăPascal: Gi iăthi uăcácă thƠnhăph năc ăb năc aăm tăngônăng ăl pătrình.ăC uătrúcăt ngăquátăc aăm t ch ngă trìnhă vi tă b ngă ngônă ng ă l pătrìnhăPascal.ăCáchă biênăd chă vƠăth căthiă m tăch ngă trìnhăvi tăb ngăngônăng ăl p trình Pascal Ch ngă2.ăCácăki uăd ăli uăđ năgi n:ăCh ngă n yăgi iăthi uăt ngăquană v ă cácăki uă d ăli uăc aăPascală vƠăđiăsơuă môăt ăcácăki u d ăli uăđ năgi năchu n cácăki uăd ăli uădoăng iădùngăđ nhăngh a.ă iăv iăm iăki uăd ăli uăgi iăthi uăcáchă khaiă báo,ăcáchăs ăd ng,ă mi năgiáătr ăcùngăcácăphépătoánătácăđ ngă lênăki uăd ă li uă Ch ngă3.ăBi uăth căvƠăcơuăl nhăđ năgi n:ăCh ngăn yăđ aăraăcácăki năth că v ăcácăthƠnhăph năt oăthƠnhăm tăbi uăth cătrongăPascal,ăcáchătácăđ ngăc aăcácătoánă t ălênăcácătoánăh ngătrongăm tăbi uăth c.ă ngăth iăgi iăthi uăcácălo iăcơuăl nhăđ nă gi n,ăcáchăkhaiăbáoăvƠăs ăd ngăcácăcơuăl nhănƠyătrongăch ngătrình Ch ngă4.ăCơuăl nhăcóăc uătrúc:ăN iădungăch ngă n yăđ aăraăcácăcơuă l nhă cóăc uătrúc.ăTrongăm iăl nhăđ aăraăcúăphápăc aăt ngăl nh.ă Ti păđ năphân tích cách s ăd ngăcácăcơuăl nhănh ăth ănƠoăchoăphùăh p Ch ngă5.ăKi uăd ăli uăt păh p,ăki uăm ng,ăki uăxơu: N iădungăch ngăn yă đ aăraăcácăki uăd ăli uăcóăc uătrúc Trongă m iăki uăd ă li uă đ aăcúă phápăc aăt ngă ki u,ăcáchăđ nhăngh aăvƠăkhaiăbáoăchúng môăt ăcácăthaoătácătrênăt ngăki uăd ăli uă Ch ngă 6.ă Ch ngă trìnhă con:ă Ch ngă nƠyă đ aă raă cáchă đ nhă ngh aă m tă ch ng trìnhăconăd ngăth ăt c,ăch ngătrìnhăconă d ngăhƠm.ă ngăth iăh ngăd nă cáchăs ăd ngăcácăch ngătrìnhăconănƠyătrongăm tăch ngătrìnhăsaoăchoăphùăh p Ch ngă7.ă Ki uă b năghi:ăN iădungăch ngă nƠyăgi iăthi uăki uăd ăki uă b nă ghi.ăCáchăđ nhăngh aăvƠăkhaiăbáoăki uăb năghiăvƠăcácăthaoătácătrênăki uăb năghi Ch ngă8 Ki uăt pătin:ăCh ngănƠyăgi iăthi uăki uăd ăli uăt pătinăcùngăcácă thao tác t pătinăđ nhăki uăvƠăt pătinăv năb n Ch ngă9.ăKi uăconătr :ăCh ngănƠyăgi iăthi uăki uăconătr ălƠăm tăki uăd ă li uăđ ngă(bi năđ ng).ăCáchăđ nhăngh aăvƠăkhaiăbáoăki u conătr ăcùng thao tác ăhoƠnăthƠnhăbƠiăgi ngănƠy,ăchúngătôiăxinăchơnăthƠnhăc mă năTh yăNguy nă Thanhă Tiênă vƠă Th yă Nguy nă H iă L că đƣă đóngă gópă ýă ki nă vƠă s aă ch aă choă hoƠnă ch nhă bƠiă gi ng.ă Tuyă nhiên,ă doă h nă ch ă v ă th iă gian,ă c ngă nh ă trìnhă đ ă nênă bƠiă gi ngăch căch năcònănhi uăsaiăsót.ăChúngătôiămongănh năđ căcácăýăki năđóngăgópă c aăcácăb năđ c,ănh măhoƠnăthi năh năn aăn iădungăbƠiăgi ngănƠy Nguy năÁnh CH NG CÁC KI N TH C CHUNG V NGÔN NG PASCAL L P TRÌNH M đ u: Gi iăthi uăcácăki năth căchungă v ă ngônă ng ă l pătrìnhăPascal.ă CácăthƠnhă ph năc ăb năc aăm tăngônăng ănh :ăB ăkýăt ,ăt ,ăt ăkhóa,ătên,ătênăchu n.ăC uătrúcă t ngăquátăc aăm tăch ngătrìnhăvi tăb ngăngônăng ăl pătrìnhăPascal Cách biên d chă vƠăth căthiăm tăch ngătrình vi tăb ngăngônăng ăl p trình Pascal M c tiêu: H căxongăch - Hi uăđ ngănƠyăSinhăviênă căcácăkháiăni măc ăb năv ăngônăng ăl pătrìnhăPascal - Bi tăcách s ăd ngăTurboăPascală7.0 - Bi tăt o,ăl uăvƠăm ăt pătinăch - Bi tăbiênăd chăch - Bi tăđ ngătrình ngătrìnhăvƠăth căthiăch căcácăkýăt ăđ ngătrình căs ăd ngătrongăNNLTăPascal - Bi tăc uătrúcăc aăm tăch ngătrìnhăPascal 1.1 Gi i thi u Pascal ngônăng ăl pătrìnhăc păcaoăc aătácăgi ăNIKLAUSWITHăđ căcôngă b ăvƠo đ uăn mă1970.ă(L yătênăPascalălƠăđ ăk ăni mănhƠătoánăh căPascală ăth ăk ă XVII) Banăđ uănóăch ălƠăm tăngônăng ăd yăh c,ăv ăsauăvìănh ngă uăđi mămƠănhi uă hƣngăđƣăphátătri nănóăthƠnhăcácăph năm măriêngăbi tăđ ăph căv ăchoăcôngăvi căriêngă c aămình Turbo Pascală lƠă m tă s nă ph mă c aă hƣngă Borlandă (M )ă đ că phátă tri nă t ă Pascal.ă ơyă lƠă m tă ngônă ng ă l pă trìnhă b că caoă cóă c uă trúc,ă đ că dùngă ph ă bi nă trongăn căc ngănh ătrênăth ăgi iăđ căbi tălƠătrongăl nhăv căd yăh căl pătrình TurboăPascalăg măcácăfileăchínhăsau: - Turbo.exe:ăLƠăfileăch ngătrìnhăso năth o,ăd chăvƠăliênăk tăv iăb ngăch n - Turbo.tplă:ăLƠăfileăth ăvi năl uăcácăđ năv ăch Turbo.exe - Graph.tpu:ăLƠăfileăđ năv ăch - *.chr ngătrìnhăchu năđ ăch yăv iă ngătrìnhăx ălíăđ ăh a : Là fileăch aăcácăfontăch ătrongăch ăđ ăd ăh a - *.bgiăăăăăăăă:ăLƠăfileăch aăcácăfontăch ămƠnăhình NgoƠiăraăcònăcácăfileăkhácăv iăcácăch ngăriêngăbi t.ă 1.2 Các b 1.2.1 Các b c l p trình gi i bƠi toán c l p trình t ng quát - B că1:ăPhơnătíchă bƠiătoán;ăXácăđ nhăd ă li uăvƠo,ăd ăli uăraălƠmăc ăs ăchoă vi căhìnhăthƠnhăgi iăthu t - B că2:ăXơyăd ngăthu tătoánă :ă Trênăc ăs ăxácăđ nhăd ă li uăvƠo, ra;ăcácăgi ă thi tăc aăbƠiătoán,ăcácăm iăliênăh ăgi aăchúngăvƠănh ngăki năth căliênăquanătaăc nă đ aăraăthu tătoánăt ngă ng -B că3:ăT ăch căd ăli uăvƠăl păch 1.2.2 Các b ngătrìnhătheoăthu tătoánăđƣăđ ăra c l p trình th c hi n (v i Turbo Pascal) B c 1: Kh iăđ ngăTurboăPascală(Turbo.exe) B c 2: So năth oăch B c 3: Biênăăd chă(nh năt ăh păphím ALT - F9) B ngătrình - N uăthƠnhăcôngăthìăchuy năquaăb că4 - N uăkhôngăthƠnhăcôngăquayăl iăb că2 c 4: Ch yăth ăch ngătrình (CTRL - F9) - N uăt tăchuy năquaăb că5 - N uăch aăt tăthìăquayăv ăb că2 B c 5: GhiăvƠoăđ a,ăD chăthƠnhăfileă*.exe B c 6: K tăthúc (M ă fileă m iă đ ă so nă th oă ch ngă trìnhă khácă ho că thoátă kh iă Turboă Pascală b ngă vi cănh năt ăh păphímăALTă- Xăđ ăthoát) 1.3 Các khái ni m vƠ thƠnh ph n c b n 1.3.1 B ký t (dùng đ so n th o ch ng trình) Baoăg măcácălo iăkýăt ăsauăđơy: Cácăch ăcái:ăa z;ăăăA Ză(Tuyănhiênăkhiăso năth oăch khôngăphơnăbi tăch ăhoaăhayăch ăth ng) ngătrình,ăTurboăPascală Cácăkýăt ăs :ă0 Cácăd uătoán:ă+ăă- * / ^ = > < Cácăkýăt ăđ căbi t:?ă; : ! [ ] { } # $ @ D uăg chăn i: _ Cácăkýăt ăđi uăkhi n T ăvƠăăt ăkhóa a T : LƠăm tădƣyăliênăti păcácăkýăt ăkhôngăch aăkýăt ătr ngăvƠăkýăt ăđi uăkhi n b T khóa: LƠăăt ădƠnhăriêngăc aăPascalăv iăch ngăvƠăcúăphápăđ căquyăđ nhăs n.ăVìă v yăkhiăs ăd ngăph iătheoăđúngăquyăđ nh, vƠăkhôngăđ căs ăd ngăcácăt ăkhóaăvƠoă cácăcôngăvi căkhác Víăd :ăBegin,ăend, if, then, const, var, function 1.3.3 Tên tên chu n a Tên: TênălƠăm tăt ăbaoăg măt iăđaă255ăkýăt ,ăch ăđ căl yătrongăcácăch ăcái,ăch ăs ,ă vƠăd uăg chă n i,ă nh ngăkhông đ căb tăđ uăb ngăs ă Tênădùngăđ ăđ tăchoăcácăđ iă t ngătrongăch ngătrìnhănh ăh ng,ăbi n,ăhƠm,ăth ăt c,ăki uăd ăli u b Tên chu n: LƠătênămƠăTurboăPascalăđƣăđ nhăngh aăs năđ ăch ăcácăhƠm,ăh ng,ăbi n,ăth ăt că th ăvi năc aănó Chú ý: Turbo Pascal cho phépă ng chu năđ ădùngăvƠoăcácăcôngăvi căkhác 1.4 C u trúc t ng quát c a m t ch M tăch iă s ă d ngă cóă th ă đ nhă ngh aă l iă cácă tênă ng trình: ngătrìnhăc aăTurboăPascalăg mă3ăph n - Tiêu đ - Khai báo đ nh ngh a - Thân ch ng trình C ăth : Tiêuăđ Program Uses Const CácăkhaiăbáoăvƠăđ nhăngh a Type Var Procedure Function Thơnăch Begin ngătrình End 1.4.1 Ph n tiêu đ T ă khóaă đ ă khaiă báoă lƠă Programă ti pă đ nă lƠă tênă c aă ch dùngăt ăđ t.ăPh nănƠyăkhôngăb tăbu căph iăcó (Chú ý: tênăc aăch ngă trìnhă doă ng iă ngătrìnhăph iătheoăđúngăquyăcáchătênăc aăTurboăPascal) 1.4.2 Ph n khai báo đ nh ngh a: Uses: Dùngăđ ăkhaiăbáoăcácăUnită(đ năv ăch ngătrình)ăc aăTurboăPascal.ăN uă cóănhi uăunităthìăs ăd ngăd uăph yă","ăđ ăng năcách Const: Dùngăđ ăkhaiăbáoăcácăh ng Cúăpháp:ăTên_h ngă=ăGiáătr Type: Dùngăđ ăđ nhăngh aăcácăki uăd ăli uăc aăng iădùng Cúăpháp:ăTênă_ki uă=ăđ nhăngh aăc ăth ăchoăt ngăki u Var: Khaiăbáoăbi n Cú pháp: Tên bi n:ăKi u_d ăli u; (Ho căkhaiăbáoătr căti păkhôngăthôngăquaăki u.) N uăcóănhi uăbi năcùngăki uăthìăs ăd ngăd uăph yă“,”ăđ ăng năcách Proedure: nhăngh aăch ngătrìnhăconăd ngăth ăt c Function: nhăngh aăch ngătrìnhăconăd ngăhƠm Chú ý: Tùyăthu căvƠo t ngăch ngătrìnhăc ăth ămƠătrongăch ngătrìnhăcóăth ă cóăcácăph năkhaiă báoăvƠăđ nhă ngh aăphùăh p,ăcóă nh ngăch ngătrìnhăcóăph năkhaiă báo,ăđ nhăngh aănƠyămƠăkhôngăcóăkhaiăbáo,ăđ nhăngh aăkiaăho căng căl i,ăth măchíă cóănh ngăch ngătrìnhăkhôngăc năđ năm tăkhaiăbáoăhayăđ nhăngh aănƠoăc 1.4.3 Ph n thân ch ng trình: căb tăđ uăb ngăt ăkhóaă"Begin"ăvƠăk tăthúcăb iăt ăkhóaă"End.".ăăGi aăc pă t ăkhóaănƠyălƠăcácăcơuăl nhăc aăch ngătrình.ăN uăcóănhi uăcơuăl nhăthìăs ăd ngăd uă “;”ăđ ăng năcáchăcácăcơuăl nh.ăPh nănƠyăb tăbu căph iăcó Chú ý: - Turboă Pascală c ngă s ă d ngă d uă “;”ă đ ă k tă thúcă ph nă nƠyă chuy nă quaă ph nă khácăc ngănh ăgi aăkhaiăbáoănƠyăquaăkhaiăbáoăkhácăc aăch ngătrình đ - Khiăso năth oăch ngătrìnhăchoăphépăđ aăvƠoăcácăcơuăchúăthíchănh ngăph iă căđ tătrongăc păd uămócă{ }ăho că(* *) CH NG CÁC KI U D LI U N GI N M đ u: - Ch ngă n yăgi iăthi uăt ngăquană v ăcácăki uăd ăli uăc aăPascal vƠăđiăsơuă môă t ă cácă ki uă d ă li uă đ nă gi nă chu n cùngă cácă ki uă d ă li uă doă ng iă dùng đ nhă ngh a.ă iăv iăm iăki uăd ăli uăgi iăthi uăcáchăkhaiăbáo,ăcáchăs ăd ng,ămi năgiáătr ă cùngăcácăphépătoánătácăđ ngălênăki uăd ăli uăđó aăraă m tăs ăth ăt că hàm chu nătrênăki uăd ă li uăđ nă gi năchu n cáchă s ă d ngă cácă th ă t că vƠă hƠmă chu n n y đ ă vi tă m tă bi u th că s ă h că thôngă th ngăsangăcúăphápăc aăngônăng ăPascal - M c tiêu: H căxongăch đ ngănƠyăSinhăviên - Bi t đ cătênăc aăm tăs ăki uăd ăli uăchu n:ăănguyên,ăth c,ăkíăt ,ălogicăbi tă căgi iăh năbi uădi năc aăm iălo iăki uăd ăli uăđó - Bi tăcách khai báo bi năđ ădùngătrongăch ngătrìnhătr căkhiăs ăd ng - Bi tăc uătrúcăchungăc aăkhaiăbáoăbi nătrongăngônăng ăPascal - Bi tăs ăd ngăm tăs ăth ăt căvƠăhƠmătrênăcácăki uăd ăli u 2.1 T ng quan v ki u d li u Turbo Pascal Trong Turbo Pascal ki uăd ăli uăđ - Cácăki uăd ăli uăđ năgi n - Cácăki uăd ăli uăcóăc uătrúc 2.1.1 Các ki u d li u đ n gi n g m: Ki uăchu n:ă - Logic - S ănguyên - S ăth c - Kýăt Ki uădoăng iădùngăđ nhăngh a: - Ki uăđo năcon - Ki uăli tăkê 2.1.2 Các ki u d li u có c u trúc: - M ng - Xâu - T păh p - B năghi - File - Conătr 10 căchiaălƠmă2ălo i: CH NG KI U CON TR (POINTER) M đ u: - Cácă bi nă thu că ki uă d ă li u đƣă h că nh ă integer,ă real,ă m ng,ă t pă h p,ă b nă ghi…ăg iă lƠăcácă bi nă t nhă vìăchúngă đ căxácăđ nhărõărƠngăkhiăkhaiă báoă vƠăsauăđóă đ că dùngă thôngă quaă tênă c aă chúng.ă Th iă giană t nă t iă c aă bi nă t nhă c ngă lƠă th iă gianăt năt iăc aăkh iăch ngătrìnhăcóăch aăkhaiăbáoăcácăbi nănƠy.ăDoăđóăn uăch ngă trình s ăd ngăm tăs ăl ngăl năcácăbi năt nhăthìăs ăkhôngăđ ăb ănh - ătránhălƣngăphíăb ănh TurboăPascalăchoăphépădùngăbi năđ ngă(dynamică variable).ă Cácă bi nă nƠyăđ că l uătr ătrongă vùngăHeap,ăkhiăc năchúngăcóăth ăđ că t oă raă đ ă ch aă d ă li u,ă khiă khôngă c nă cóă th ă xóaă chúngă điă đ ă gi iă phóngă b ă nh ă Bi năđ ngăkhôngăcóătênăvƠăqu nălý bi năđ ngănƠyălƠăbi năconătr ă M c tiêu: H căxongăch ngănƠyăSinhăviênă - Hi uăđ căki uăconătr ,ăbi tăđ báoăbi năconătr căcáchăđ nhăngh aăki uăconătr ăvƠăcáchăkhaiă - Bi tăcáchăkh iăt oăvƠălo iăb ăm tăbi năđ ng - Bi tăđ căm tăs ăthaoătácătrênăbi năconătr ăvƠăbi năđ ng.ă 9.1 M đ u 9.1.1 Phân chia b nh trong: B ă nh ă trongă (RAM)ă đ că c uă t oă b ngă cácă m chă FLIPFLOPă (m iă m chă đ căg iălƠă1ăbít)ămôăt ăđ căhaiătr ngăthái.ăM iăthanhăghiă(REGISTER)ăđ căc uă t oăb ngă16ă m chă FLIPFLOPă n iăti pă nhau,ătrongăđóă8ă m chăđ uăt oăthƠnhă m tă ôă nh ăg iălƠăByteăth păvƠă8ăm chăsauăt oăthƠnhăm tăôănh ăg iălƠăbyteăcao M iăôănh ăđ căxácăđ nhăb iăm tăđ aăch ă(adress).ăVi căxácăđ nhăđ aăch ăăchoă cácăôănh ăđ căth căhi nănh ăsau: T păh pă65535ăôă nh ăt oăthƠnhă m tăSEGMENT,ă m iăSEGMENTăđ uăđ đánhăs ăg iălƠăđ aăch ăc aăSEGMENTăđó Trongăm iăSEGMENT,ăm iăôănh ăđ uăđ hayăđ aăch ăOFFSETăc aăôănh ăđó căđánhăs ăg iălƠăđ aăch ăt că ngăđ iă Nh v yăm iăôănh ăđ căxácăđ nhăb iăhaiăđ aăch ,ăđóălƠăđ aăch ăSEGMENTăvƠă đ aăch ăOFFSET.ăHaiăđ aăch ănƠyđ căvi tăd iăd ngăc ăs ă16ă(HEXA)ăv iăcúăphápă nh ăsau: ă:ă Víăd :ăM tăôă nh ă n mătrongăSegmentăth ă nh tăvƠă v ătríăc ă nóătrongă segmentă nƠyălƠă13,ăs ăcóăđ aăch ălƠăă$0001:$000C SauăđơyălƠăcácăhƠmăxácăđ nhăđ aăch ăSEGMENTăvƠăđ aăch ăOFFSETăc aăm tă Bi n,ăđ uăcóăki uăc aăgiáătr ătr ăv ăc aăhƠmălƠăWORD: 111 SEG() OFS() Khiă ch yă m tă ch ngă trìnhă vi tă b ngă Pascală thìă b ă nh ă trongă (RAM)ă đ chiaăthƠnhăn măvùngănh ăsau: că Vùngă PROGRAMă Segmentă PREFIX,ă chi mă 256ă byteă đ ă l uă gi ă đ aă ch ă c aă cácăvùngăkhác,ăcácăbi n,ăcácăhƠm,ăcácăth ăt c VùngăCODEăSegment,ăg măcóăhaiăph n: MAINăCODEăSegment:ăVùngăch aăđo nămƣăc aăch ngătrìnhăchính UNITăCODEăSegment:ăVùngăch aăđo nămƣăc aăcácăđ năv ăch VùngăDATAăSegmentădùngăđ ăl uăcácăbi năchungăc aăch ngătrình ngătrình VùngăSTACKăSegmentădùngăđ ăch aăt măth iăcácăprocedure VùngăHEAPădùngăđ ăl uăgi ăcácăbi năđ ng a ch ăc aăôănh ăđ uătiênăc aăm iăvùngăđ căg iălƠăđ aăch ăc aăvùngăđó.ăCácă hƠmăCSEG,ăDSEG,ăSSEGăcóăgiáătr ătr ăv ăc aăhƠmăki uăWORDăl năl tălƠăđ aăch ă c aăvùngăCODEăSegment,ăDATAăSegment,ăSTACKăSegment.ă 9.1.2 Bi n tr bi n đ ng: Bi năconătr ălƠăm tăbi năđ căđ tătênăvƠăđ căkhaiăbáoăsauăt ăkhoáăVAR,ăcóă ki uăconătr ăvƠăđ căl uăgi ătrongăvùngănh ăDataăSegment.ăGiáătr ăđ căl uăgi ă ă bi nă conătr ă lƠăđ aăch ăc aă m tă bi năđ ngătrongă vùngăHEAPăhayă m tăbi nă nƠoăđóă DATA Segment Bi năđ ngălƠăm tălo iăbi năkhôngăcóătên,ăđóălƠăm tăvùngănh ăv iăkíchăth căc ă đ nhăđ căl uăgi ătrongăvùngăHEAPăvƠăđ aăch ăc aănóăđ căl uăgi ă ăm tăbi năconă tr ănƠoăđóă(cònăg iălƠăđ căqu nălýăb iăm tăbi năconătr ).ăKhiăc n,ăchúngătaăcóăth ă t oăraăm tăbi năđ ngă(cònăg iălƠăxinăc păphátăm tăbi năđ ng),ăkhiăkhôngăc nătaăcóă th ăxoáăđiăđ ătr ăl iăvùngănh ăchoăHEAP Nh ăv y,ăbi năđ ngămu năt năt iăthìăph iăcóăbi năconătr ăqu nălýăđ aăch ăc aă s ăđ ăphơnăbi tăv iăbi năđ ng,ăcácăbi năcóătênăđ căkhaiăbáoăsauăt ăkhóaăVARă căg iălƠăcácăbi năt nh.ăNh ăv y,ăbi năconătr ăc ngălƠăbi năt nh 9.2 Ki u tr 9.2.1 nh ngh a ki u khai báo bi n: nhăngh aăki u: Ki uăconătr ăđ TYPE căđ nhăngh aătheoăcúăpháp: TênKi uConTr = ; ăđơyăKi uPh nT ălƠătênăc aăki uăd ăli uăch aătrongăbi năđ ngămƠăbi năconă tr ătr ăt i 112 Khaiăbáoăbi n: Cóăhaiăcáchăkhaiăbáoăbi năconătr :ă Khaiăbáoăv iăki uăconătr ăđƣăđ căđ nhăngh a: VAR p, q : TênKi uConTr ; VAR p, q : ; ΤΨΠΕ ΤΡΟ_ΝΓΥΨΕΝ = ⊥ Ιντεγερ; ςΑΡ π,θ : ΤΡΟ_ΝΓΥΨΕΝ ; Hayăcóăth ăkhaiăbáoătr căti pănh ăsau : VAR p, q : ^Integer ; Khiăđó,ăpăvƠăqălƠăcácăbi năconătr ,ăqu nălýăđ aăch ăc aăcácăbi năđ ngăch aăd ă li uălƠăs ănguyênă(cóăkíchăth călƠă2ăbyte) Ngoài ra, TurboăPascalăchoăphépătaăkhaiăbáoăcácăbi năconătr ăkhôngăđ nhăki uă v iăki uăchu năđƣăđ căđ nhăngh aălƠăPOINTER.ăCácăbi năconătr ălo iănƠyăch ăđ că s ăd ngăđ ăqu năđ aăch ăc aăt tăc ăcácălo iăbi năđ ngă(khôngăphơnăbi tăki uăc aăd ă li uăch aătrongăbi năđ ngăđó),ătaăkhôngăth ătruyăc păd ăli uăt iăcácăbi năđ ngăthôngă quaăbi năconătr ălo iănƠy.ă ăkhaiăbáoăbi nălo iănƠyătaădùngăcúăphápănh ăsau: VAR p, q : POINTER ; 9.2.2 Kh i t o lo i b bi n đ ng: Gi ăs ăpălƠăm tăbi năconătr ăđƣăđ căkhaiăbáo,ăkhiăđó: ăxinăc păphátăm tăbi năđ ngătrongăvùngăHEAP,ăcóăđ aăch ăđ bi năconătr ăpăvƠăkíchăth căc aăbi năđ ngădoăpăquiăđ nh,ătaădùng: Th ăt c căqu nălýăb iă NEW(p); ălo iă b ă bi năđ ng,ăcóăđ aăch ăđangăqu nă lýă b iă bi năconătr ăpă vƠă đƣăđ t oăraătr căđóăb iăth ăt căNEW,ătaădùng: Th ăt c ăl yăkíchăth Hàm că DISPOSE(p); căc aăbi năđ ng,ătaădùng: SIZEOF(p^); Cóăgiáătr ătr ăv ăc aăhƠmălƠăkíchăth (đ năv ătínhălƠăbyte) căc aăbi năđ ngămƠăbi nătr ăconăpătr ăt iă Víăd : VAR p : ^Integer ; s : ^String ; Thìăgiáătr ăc aăSIZEOF(p^)ăs ă lƠă2ă byteă vƠăgiáătr ăc aăSIZEOF(s^)ăs ă lƠă256ă byte ăxinăc păphátăm tăbi năđ ngătrongăvùngăHEAP,ăcóăđ aăch ăđ căqu nălýăb iăbi nă conătr ăpăvƠăkíchăth căc aăbi năđ ngălƠăSizeă(cóăki uăWord),ătaădùng: 113 Th ăt c GETMEM(p, Size); ălo iăb ăbi năđ ngăcóăkíchăth călƠăSizeătrongăvùngăHEAP,ăcóăđ aăch ăđangă qu nălýăb iăpăvƠăđƣăđ căt oăraătr căđóăb iăth ăt căGETMEM,ătaădùng: Th ăt c: FREEMEM(p, Size); Chúă ý:ă ă Cácă th ă t că DISPOSEă vƠă FREEMEMă ă trênă ch ă cóă tácă d ngă gi iă phóngă m tă bi năđ ngăđangăđ că qu nă lýă b iă bi nă tr ăp.ăCóăth ăs ăd ngă m tă bi nă conătr ăđ ăt oătaănhi uăbi năđ ng,ăTurboăPascalăchoăphépăđánhăd uăcácăbi năđ ngăđóă vƠăth căhi năgi iăphóngăcùngăm tăl n.ăC ăth ănh ăsau: K ă t ă th iă mă nƠy,ă cácă bi nă đ ngă đ că t oă raă b iă th ă t că NEW(p)ă hayă GETMEM(p,Size)đ uăđ căđánhăd u,ătaădùng: Th ăt c MARK (p); ă gi iă phóngă t tă c ă cácă bi nă đ ngă đƣă đ că kh iă t oă b iă NEW(p)hayă GETMEM(p,Size)k ăt ăkhiăđƣăđ căđánhăd uăb iăth ăt căMARK(p), ta dùng: Th ăt c Ví d :ăă VAR RELEASE(p) ; p : POINTER; p1, p2, p3 : ^Integer ; ; NEW(p1) ; MARK(p) ; NEW(p2) ; NEW(p3) ; RELEASE(p) ; {ăK ăt ăđơy,ăcácăbi năđ ngăđ căkh iăt oăsauăth ăt căMARK(p)ăđ uăđ căgi iă phóng.ă C ă th ă lƠă cácă bi nă đ ngă đ că qu nă lýă b iă p2ă vƠă p3.ă Cònă bi nă đ ngă đangăqu nălýăb iăp1ăv năt năt iă} ; 9.2.3 Các thao tác v i bi n tr bi n đ ng: Phépăl yăđ aăch ăc aăm tăbi năt nh:ăăS ăd ngătoánăt ă@, đ ăl yăđ aăch ăc aăbi nă t nhăxăgánăchoăbi năconătr pătaăcóăth ăth căhi nănh ăsau: p := @ x ; Phépăgán:ăăTaăcóăth ăth căhi năphépăgánă(giáătr ălƠăđ aăch ăc aăbi năđ ng)ăđ iă v iăhaiăbi năconătr ăcóăcùngăki uăv iănhauăhayăm tăbi năconătr ăcóăki uăvƠăm tăbi nă conătr ăkhôngăđ nhăki uăchoănhau.ăC ăth ălƠ: Víăd ătaăcóăkhaiăbáo : VAR p, q : ^Integer ; 114 Conătr ăpăvƠăqătr ăđ năbi năđ ngăch aăd ăli uăki uăIntegerănênăcóăth ăgánăchoă : p := q ; Khiăđóăgiáătr ăđ aăch ăc aăbi năđ ngăđangăđ căqu nălýăb iăqăs ăđ p.ăT călƠăt iăth iăđi mănƠyăc ăpăvƠăqăđ uătr ăđ năcùngăm tăbi năđ ng căgánăchoă Conătr ăr ng:ăăTurboăPascalăquiăđ nhăm tăh ngăđ aăch ăkhôngălƠăNIL,ăkhiăconă tr ăkhôngăcóănhi măv ăqu nălýăm tăbi năđ ngănƠoăthìătaăgánăchoănóăđ aăch ăkhông: P := NIL ; VƠăkhiăđóătaănóiăpălƠăconătr ăr ng.ăNILăcóăth ăgánăchoăb tăc ăconătr ălo iănƠo Truyăc păd ăli uăt iăbi năđ ng:ăGi ăs ăpălƠăm tăbi năconătr ,ăđangătr ăt iăm tă bi năđ ngănƠoăđó.ăNh ăđƣătrìnhăbƠyă ătrênălƠăbi năđ ngăkhôngăcóătên,ă ăđơyăTurboă Pascalăchoăphépătruyăc păd ăli uăt iăbi năđ ngănƠyăb iăkíăphápăp^.ăNh ăv yătaăcóăth ă hi uăp^ănh ălƠătênăc aăbi năđ ngămƠăbi năconătr ăpăđangătr ăt i.ăDoăđóăp^ăs ăcóăki uă d ă li uă lƠă Ki uPh nT ă c aă bi nă conă tr ă pă vƠă cácă phépă toánă thaoă tácă đ că trênă p^ă chínhălƠăcácăphépătoánăcóăđ cătrênăki uăd ăli uălƠăKi uPh nT Víăd : VAR p : ^Integer ; m, n : Integer ; Khiăđóăp^ăs ăcóăki uăd ăli uălƠăInteger.ăNh ăv yăcácăcơuăl nhăsauăđ uăh păl : ; New(p) ; Readln(p^) ; {nh năm tăs ănguyênănh păt ăbƠnăphímăchoăbi năđ ngăđangătr ăb iăp} Write(p^) ; {vi tă raă mƠnă hìnhă giáă tr ă c aă s ă nguyên đangă l uă gi ă t iă bi nă đ ngă đangătr ăb iăp} n := 20 ; m := * p^ + n ; ; ΤΨΠΕ ςΑΡ ΗοχΣινη = ΡΕΧΟΡ∆ Τεν : Στρινγ[30] ; Τ, Λ, Η : Ρεαλ ; ΕΝ∆; π, θ : ⊥ΗοχΣινη ; ησ : ΗοχΣινη ; Khiăđóăp^,ăq^ăs ăcóăki uăHocSinhă(ki uă b năghi).ăNh ă v yătaăcóăth ăthaoătácă v iăp^,ăq^ă nh ălƠăcácăbi năcóăki uăb năghiă v iă b nătr ngă lƠ:ăTen,ă T,ăL,ăH.ăDoăđóă cácăcơuăl nhăsauăđ uăh păl : 115 ; Νεω(π) ; Write(‘Nh Write(‘Nh Write(‘Nh Write(‘Nh p p p p h đi tên: ‘); m toán: ‘); m lý: ‘); m hoá: ‘); Ρεαδλν(π⊥.Τεν); Ρεαδλν(π⊥.Τ); Ρεαδλν(π⊥.Λ); Ρεαδλν(π⊥.Η); ; Ho călƠ ; Νεω(π) ; Ωιτη π⊥ ∆ο Βεγιν Write(‘Nh Write(‘Nh Write(‘Nh Write(‘Nh Ενδ; p p p p h đi tên: ‘); m toán: ‘); m lý: ‘); m hoá: ‘); Ρεαδλν(Τεν); Ρεαδλν(Τ); Ρεαδλν(Λ); Ρεαδλν(Η); ; Ho călƠ ; Ωιτη ησ ∆ο Βεγιν Ωρite(‘Nh Write(‘Nh Write(‘Nh Write(‘Nh Ενδ; Νεω(π) ; π⊥ := ησ ; p p p p h đi tên: m toán: m lý: m hoá: ‘); ‘); ‘); ‘); Ρεαδλν(Τεν); Ρεαδλν(Τ); Ρεαδλν(Λ); Ρεαδλν(Η); ; Chúăý:ăăN uăpălƠăconătr ăkhôngăđ nhăki uă (p : Pointer) thìăpăch ăcóă nhi mă v ă l uăgi ăđ aăch ăc aăbi năđ ngănƠoăđóăch ăkhôngăth ăthôngăquaănóăđ ătruyăc păd ăli uă t iăbi năđ ngămƠănóătr ăt iăđ c,ăt călƠăkhôngăth ăthaoătácăv iăp^ 9.2.4 M t s hàm chu n khác: Hàm ADDR(Bi n); Giáătr ătr ăv ăc aăhƠmălƠăđ aăch c aăBi nă(gi ngănh ăs ăd ngătoánăt ă@) Hàm l ΠΤΡ(σεγ, οφσ : Ωορδ); Giáătr ătr ăv ăc aăhƠmălƠăđ aăch ăc aăvùngănh ăcóăđ aăch ăSegmentăvƠăOffsetăl nă tălƠăsegăvƠăofs 116 Ví d :ăăModeămƠnăhìnhăđ căđ tătrongăvùngănh ăcóăđ aăch ăSegmentăvƠăOffsetă $0000:$0449.ă Khiăđóăđ ă l yăgiáătr ăc aăModeă mƠnăhìnhătaăcóăth ă th căhi nă nh ă sau: ςΑΡ p : ^Byte ; ; p := ΠΤΡ($0000, $0449); Writeln(„ Mode hình là: „, p^) ; ; Hàm ΜΕΜΑςΑΙΛ; Giáătr ătr ăv ăc aăhƠmă(cóăki uăLongInt)ălƠăkíchăth Hàm căt iăđaăc aăvùngăHEAP ΜΑΞΑςΑΙΛ; Giáătr ătr ă v ăc aăhƠmă(cóăki uăLongInt)ă lƠă kíchăth c aăvùngăHEAP căcònă l iăch aăc păphátă 9.2.5 Ví d áp d ng: Gi ă s ă cóă m tă ki uă b nă ghiă v iă kháă nhi uă tr ng,ă t ngă kích th că c aă m tă bi năcóăki uăb năghiănƠyălƠăKă(bytes).ăN uătaăt ăch căm ngăcóăNăph năt ăđ ăl uăcácă b nă ghiă trênă thìă kíchă th că c aă m ngă ph iă lƠă N*Kă (bytes).ă Nh ă v yă n uă s ă d ngă khôngă h tă cácă ph nă t ă c aă m ngă thìă s ă lƣngă phíă b ă nh ă r tă nhi uă khiă Kă kháă l n.ă Ng căl i,ăn uăch năNăbéăh năthìătrongăquáătrìnhăx ălýăcóăth ăkhôngăcònăch ăđ ăl uă thêmă b năghiă m i.ăVìă v yătaăt ăch căm tă m ngăg măNăph năt ăđ ăl uăcácăconătr ă (m iăph năt ăch ăchi mă2ăbytes)ătr ăđ năcácăbi năđ ngăcóăki uăb năghiă ătrên.ăNh ă v yăkhiănƠoăc năl uătr ăthìăxinăc păphátăbi năđ ngăđ ăl uătr ăb năghi,ăkhiănƠoăkhôngă c năthìăgi iăphóngăbi năđ ngăđó.ăRõărƠngăb ngăcáchănƠyăchúngătaăti tăki măđ căb ă nh M ngăch aăNăconătr N-1 - - Bi n Bi n Bi n Bi n Bi n ng ng ng ng ng V iăhìnhăminhăho ănh ătrênăchoăth yătaăt ăch căđ đ ngăđ căqu nălýăb iăm ngăcácăconătr M tătínhătoánănh ăchoătaăth yăs ăti tăki măđ 117 N căm tădanhăsáchăcácăbi nă căb ănh ănh ăđƣănêuă ătrên: Gi ăs ăN=100,ăm iăb năghi cóăkíchăth că20ăbytes N uăt ăch căm ngăch aăcácăb năghiăthìăph iăm t:ă100*20=2000ăbytes.ăNh ngă th căt ăch ăcóă5ăb năghi,ăchi mă5*20=100ăbytes.ăNh ăv yăs ăbyteădƠnhăch ănh ngă khôngăs ăd ngălƠ:ă2000-100=1900 bytes N uăt ăch căm ngăconătr ăđ ăqu nălýădanhăsáchăthìăt iăth iăđi măn yăs ăl ngă bytesă đƣă chi mă d ngă lƠ:ă 100*2ă +ă 5*20ă =ă 300ă bytes,ă th că s ă s ă bytesă lƣngă phíă lƠ:ă 95*2=190ăbytesă(doă95ăph năt ăch aăconătr ăc aăm ngăch aăs ăd ng) Taăxétăvíăd ăc ăth ăsau: Vi tăch ngătrìnhăchoăng iăs ăd ngănh pădanhăsáchăthíăsinhăthiătuy năvƠoăl pă 10,ăg măh ăvƠătên,ăđi măcácămônăthiătoán,ălý,ăanhăv n.ăS ăl ngăthíăsinhădoăng iă s ăd ngănh păt ăbƠnăphímă(s ăthíăsinhăbéăh năho căb ngă1000).ăDanhăsáchăthíăsinhă l uă vƠoă cácă bi năđ ngăđ căqu nă lýă b iă m ngăcácăconătr ăYêuăc uăs păx pădanhă sáchătheoăth ăt ăgi măd năc aăt ngăđi măvƠăhi năth ădanhăsáchăđóălênămƠnăhình ΥΣΕΣ χρτ; ΤΨΠΕ ΤΗΙΣΙΝΗ = Ρεχορδ Τεν:Στρινγ[30]; Τ,Λ,Ας:Ρεαλ; Ενδ; ΜΑΝΓ_ΧΟΝΤΡΟ=Αρραψ[1 1000] Οφ ⊥ΤΗΙΣΙΝΗ; ςΑΡ π:ΜΑΝΓ_ΧΟΝΤΡΟ; Μαξ:Ωορδ; ΠΡΟΧΕ∆ΥΡΕ Ωαιτ; Βεγιν Ωριτελν; Ωριτε(‘Αν πηιµ βατ κψ δε τιεπ τυχ’); Ρεπεατ Υντιλ Κεψπρεσσεδ; Ενδ; ΠΡΟΧΕ∆ΥΡΕ ΗιενΤηι∆Σ; ςαρ ι:Ωορδ; Βεγιν Φορ ι:=1 Το Μαξ ∆ο ωριτελν(ι,’ ‘,π[ι]⊥.Τεν); Ωριτελν; Ενδ; ΠΡΟΧΕ∆ΥΡΕ Νηαπ∆Σ(ςαρ Μαξ:Ωορδ; ςαρ π:ΜΑΝΓ_ΧΟΝΤΡΟ); ςαρ ι:Ωορδ; Βεγιν Ωριτε(‘Νηαπ σο τηι σινη: ‘); Ρεαδλν(Μαξ); Φορ ι:=1 Το Μαξ ∆ο Βεγιν 118 Νεω(π[ι]); Ωιτη π[ι]⊥ ∆ο Βεγιν Ωριτε(ι,’ Ηο ϖα τεν: ‘); Ωριτε(‘∆ιεµ Τοαν: ‘); Ωριτε(‘∆ιεµ Λψ: ‘); Ωριτε(‘∆ιεµ Ανη ϖαν: ‘); Ωριτελν; Ενδ; Ενδ; Ωριτελν(‘∆α νηαπ ξονγ δανη σαχη’); Ενδ; Ρεαδλν(Τεν); Ρεαδλν(Τ); Ρεαδλν(Λ); Ρεαδλν(Ας); ΠΡΟΧΕ∆ΥΡΕ ΞεπΤηυΤυ(Μαξ:Ωορδ; ςαρ π:ΜΑΝΓ_ΧΟΝΤΡΟ); ςαρ ι,ϕ:Ωορδ; θ:ΠΟΙΝΤΕΡ; Α,Β:Ρεαλ; Βεγιν Ωριτε(‘∆ανγ ξεπ τηυ τυ γιαµ δαν τηεο τονγ διεµ’); Φορ ι:=1 Το Μαξ−1 ∆ο Φορ ϕ:=ι+1 Το Μαξ ∆ο Βεγιν Α:= π[ι]⊥.Τ+π[ι]⊥.Λ+π[ι]⊥.Ας; Β := π[ϕ]⊥.Τ+π[ϕ]⊥.Λ+π[ϕ]⊥.Ας ; Ιφ Α < Β Τηεν Βεγιν θ:=π[ι]; π[ι]:=π[ϕ]; π[ϕ]:=θ; Ωριτελν(‘∆α ξεπ τηυ τυ ξονγ’); Ενδ; Ενδ; Ενδ; ΒΕΓΙΝ Νηαπ∆Σ(Μαξ,π); ΗιενΤηι∆Σ; Ωαιτ; ΞεπΤηυΤυ(Μαξ,π); ΗιενΤηι∆Σ; Ωαιτ; ΕΝ∆ 9.3 Danh sách liên k t 9.3.1 Khái ni m v danh sách liên k t: Danhăsáchăliênăk tălƠăm tăt păh păcóăth ăt ăcácăbi năđ ng.ăM iăbi năđ ngăcóă ki uăd ăli uăb năghi,ăcóăt iăthi uăhaiătr ng,ăm tătr ngăho cănhi uătr ngădùngăđ ă l uăd ăli uăvƠăcóăm tătr ngă(d ngăconătr )ăđ ăl uăđ aăch ăc aăbi năđ ngăsauănóă(tr ă 119 đ nă bi năđ ngăsauă nó).ăBi năđ ngăđ uătiênăđ căqu nă lýă b iăm tăconătr ăLăvƠăconă tr ăch aătrongăbi năđ ngăsauăcùngălƠăconătr ăr ng.ăKhiăđó,ătaăg iăđơyălƠădanhăsáchă liênăk tăL.ă Quiă căthêm:ătaăg iădanhăsáchălƠădanhăsáchăr ngăăn uădanhăsáchăđóăkhôngăcóă bi năđ ngănƠo.ăN uăLălƠădanhăsáchăr ngăthìăLăl uăđ aăch ăr ng,ăt călƠăL=NIL Minhăho ănh ăsau: L Nh ă v yă khiă s ă d ngă danhă sáchă liênă k tă taă v nă ti tă ki mă đ că b ă nh ă nhi uă h năsoăv iăcáchăt ăch căm ngăch aăconătr ăđ ăqu nălýădanhăsáchănh ăđƣătrìnhăbƠyă ă trên.ă C ă th ă lƠă ti tă ki mă thêmă đ că vùngă nh ă trongă m ngă ch aă cácă conă tr ă ch aă đ căs ăd ng.ă 9.3.2 Cách đ nh ngh a ki u cho nút (bi n đ ng): Trongă TurboăPascală ng iătaăkhaiă báoă ki uăd ăli uăchoăcácă nútătheoăcúăphápă nh ăsau: ΤΨΠΕ Ki uConTr : < ⊥Ki uB nGhi > ; Ki uB nGhi = ΡΕΧΟΡ∆ TênTr ng1 : TênTr ng2 : TênTr ngN : ConTr : Ki uConTr ΕΝ∆ ; ; ; ; ; Trongă đó,ă Ki uConTr ă đ ă khaiă báoă cácă bi nă conă tr ă qu nă lýă đ aă ch ă c aă cácă nút.ăKi uB nGhiăđ ăkhai báoăcácănútă(bi năđ ng).ă ăminhăh a,ătaăđ aăraăcácăvíăd ă sau: Ví d 1:ă ăxơyăd ngădanhăsáchă liênă k tă ch aăcácă nút,ă m iă nútăch aă m tăs ă nguyênăd ng,ătaăđ nhăngh aăcácăki uăsau: ΤΨΠΕ ΤΡΟ = ⊥ΝΥΤ; ΝΥΤ = Ρεχορδ Σο : Ωορδ; Τιεπ : ΤΡΟ; Ενδ; Ví d 2:ă ăxơyăd ngădanhăsáchăliênăk tăch aăcácănút,ăm iănútăch aăh ăvƠătên,ă măcácămônăthiătoán,ălý,ăanhăv năc aăm tăthíăsinh,ătaăđ nhăngh aăcácăki uăsau: ΤΨΠΕ ∆ΣΤΗΙΣΙΝΗ = ⊥ΤΗΙΣΙΝΗ; ΤΗΙΣΙΝΗ = Ρεχορδ Τεν : Στρινγ[30]; 120 Τ,Λ,Ας:Ρεαλ; Τιεπ : ∆ΣΤΗΙΣΙΝΗ; Ενδ; Hay ΤΨΠΕ ∆ΥΛΙΕΥ = Ρεχορδ Τεν : Στρινγ[30]; Τ,Λ,Ας:Ρεαλ; Ενδ; ∆ΣΤΗΙΣΙΝΗ = ⊥ΤΗΙΣΙΝΗ; ΤΗΙΣΙΝΗ = Ρεχορδ ∆Λ : ∆ΥΛΙΕΥ; Τιεπ : ∆ΣΤΗΙΣΙΝΗ; Ενδ; 9.3.3 Các Ví d : Vi tăch ngătrìnhăchoămáyă l yă ng uă nhiênă m tădƣyăg măNăs ă nguyênăd ngă (Năđ cănh păt ăbƠnăphímăvƠăm iăs ăc aădƣyă
- Xem thêm -

Xem thêm: Ngôn ngữ lập trình Pascal bài giảng dành cho sinh viên Đại học, Cao đẳng, Ngôn ngữ lập trình Pascal bài giảng dành cho sinh viên Đại học, Cao đẳng, Ngôn ngữ lập trình Pascal bài giảng dành cho sinh viên Đại học, Cao đẳng

Gợi ý tài liệu liên quan cho bạn

Nhận lời giải ngay chưa đến 10 phút Đăng bài tập ngay
Nạp tiền Tải lên
Đăng ký
Đăng nhập