Bài giảng Ngôn ngữ lập trình pascal
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ù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ă
đó.
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.
Tóm tắt nội dung tài liệu: Bài giảng Ngôn ngữ lập trình pascal
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 2 Mục lục LӠIăGIӞIăTHIӊU ........................................................................................................ 4 CHѬѪNGă 1.ă CÁCă KIӂNă THӬCă CHUNGă Vӄă NGỌNă NGӲă LҰPă TRÌNHă PASCAL...................................................................................................................... 6 1.1.ăGiӟiăthiӋu .......................................................................................................... 6 1.2.ăCácăbѭӟcălұpătrìnhăgiҧiăbƠiătoán........................................................................ 6 1.3.ăCácăkháiăniӋmăăvƠăcácăthƠnhăphầnăcѫăbҧn ........................................................ 7 1.4.ăCҩuătrúcătổngăquátăcӫaămӝtăchѭѫngătrình: ........................................................ 8 CHѬѪNGă2.ăCÁCăKIӆUăDӲăLIӊUăĐѪ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ѬѪNGă2. ............................................................................................. 16 CHѬѪ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ѬѪNGă3. ............................................................................................. 23 CHѬѪ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ѬѪNGă4. ............................................................................................. 37 CHѬѪ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ѬѪNGă5 .............................................................................................. 54 CHѬѪNGă6.ăCHѬѪNGăTRÌNHăCON .................................................................... 62 6.1.ăCácăkháiăniӋmămӣăđầu. ................................................................................... 62 6.2.ăThӫătục. ........................................................................................................... 63 3 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ѭѫngătrìnhăcӫaăngѭӡiădùng. ............................................................ 73 BÀIăTҰPăCHѬѪNGă6. ............................................................................................. 81 CHѬѪNGă7.ăKIӆUăBҦNăGHIă(RECORD) ............................................................. 83 7.1.ăĐӏ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ѬѪNG 7. ............................................................................................. 90 CHѬѪNGă8.ăKIӆUăTҰPăTINă(FILE)....................................................................... 91 8.1.ăĐӏ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ѬѪNG 8. ........................................................................................... 108 CHѬѪ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 9 ............................................................................................ 124 TÀIăLIӊUăTHAMăKHҦO ....................................................................................... 124 4 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ӳăAlgol- 60ă(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ù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ă đó. 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 và 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. 5 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 trên 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 các thao tác trên nó. ĐӇă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 6 CHѬѪNG 1. CÁC KIӂN THӬC CHUNG Vӄ NGÔN NGӲ LҰP TRÌNH PASCAL 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ѭѫngănƠyăSinhăviênă - HiӇuăđѭӧ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ѭѫngătrình. - BiӃtăbiênădӏchăchѭѫngătrìnhăvƠăthựcăthiăchѭѫngătrình. - BiӃtăđѭӧcăcácăkýătựăđѭӧ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 là 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ѭѫngătrìnhăchuẩnăđӇăchҥyăvӟiă Turbo.exe. - Graph.tpu:ăLƠăfileăđѫnăvӏăchѭѫngătrìnhăxӱălíăđӗăhӑa. - *.chr : Là các 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ӭcănĕngăriêngăbiӋt.ă 1.2. Các bѭӟc lұp trình giҧi bƠi toán 1.2.1. Các bướ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. 7 - 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ѭѫngătrìnhătheoăthuұtătoánăđƣăđӅăra. 1.2.2. Các bước lập trình và 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ѭѫngătrình. Bước 3: Biênăădӏchă(nhҩnătổăhӧpăphím ALT - F9). - 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. Bướ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Ơ các 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ѭѫngătrình,ăTurboăPascală khôngăphơnăbiӋtăchӳăhoaăhayăchӳăthѭӡng). Cácăkýătựăsӕ:ă0..9. 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ӭcănĕ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... 8 1.3.3. Tên và 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ѭӡiă sӱă dụngă cóă thӇă đӏnhă nghĩaă lҥiă cácă tênă 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ѭѫng trình: MӝtăchѭѫngătrìnhăcӫaăTurboăPascalăgӗmă3ăphần. - Tiêu đề - Khai báo và định nghĩa - Thân chương trình CụăthӇ: Program TiêuăđӅ. Uses Const Type Var Procedure Function CácăkhaiăbáoăvƠăđӏnhănghĩa Begin End. Thơnăchѭѫngătrình 1.4.1. Phần tiêu đề Từă khóaă đӇă khaiă báoă lƠă Programă tiӃpă đӃnă lƠă tênă cӫaă chѭѫngă trìnhă doă ngѭӡiă 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ăphҧiătheoăđúngăquyăcáchătênăcӫaăTurboăPascal). 1.4.2. Phần khai báo và đị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ӏ. 9 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ӫ ... EMEMă ӣă 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ă đ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 RELEASE(p) ; Ví dụ:ăă VAR 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ăđang đѭӧ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 con trỏ và 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 ; 115 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ă nhau : p := q ; KhiăđóăgiáătrӏăđӏaăchỉăcӫaăbiӃnăđӝngăđangăđѭӧcăquҧnălýăbӣiăqăsӁăđѭӧcăgánăchoă 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. 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 := 2 * p^ + n ; .............. ; TYPE HocSinh = RECORD Ten : String[30] ; T, L, H : Real ; END; VAR p, q : ^HocSinh ; hs : HocSinh ; 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Ӌ: 116 .............. ; New(p) ; Write(‘Nhập họ tên: ‘); Readln(p^.Ten); Write(‘Nhập điểm toán: ‘); Readln(p^.T); Write(‘Nhập điểm lý: ‘); Readln(p^.L); Write(‘Nhập điểm hoá: ‘); Readln(p^.H); .............. ; HoặcălƠ .............. ; New(p) ; With p^ Do Begin Write(‘Nhập họ tên: ‘); Readln(Ten); Write(‘Nhập điểm toán: ‘); Readln(T); Write(‘Nhập điểm lý: ‘); Readln(L); Write(‘Nhập điểm hoá: ‘); Readln(H); End; .............. ; HoặcălƠ .............. ; With hs Do Begin Write(‘Nhập họ tên: ‘); Readln(Ten); Write(‘Nhập điểm toán: ‘); Readln(T); Write(‘Nhập điểm lý: ‘); Readln(L); Write(‘Nhập điểm hoá: ‘); Readln(H); End; New(p) ; p^ := hs ; .............. ; 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 PTR(seg, ofs : Word); GiáătrӏătrҧăvӅăcӫaăhƠmălƠăđӏaăchỉăcӫaăvùngănhӟăcóăđӏaăchỉăSegmentăvƠăOffsetălầnă lѭӧtălƠăsegăvƠăofs. 117 BiӃn Đӝng 5 BiӃn Đӝng 4 BiӃn Đӝng 3 BiӃn Đӝng 2 BiӃn Đӝng 1 Ví dụ:ăăModeămƠnăhìnhăđѭӧcăđặtătrongăvùngănhӟăcóăđӏaăchỉăSegmentăvƠăOffsetă là $0000:$0449.ăKhiăđóăđӇă lҩyăgiáătrӏăcӫaăModeămƠnăhìnhătaăcóăthӇă thựcăhiӋnănhѭă sau: VAR p : ^Byte ; ........................................ ; p := PTR($0000, $0449); Writeln(„ Mode màn hình là: „, p^) ; .............. ; Hàm MEMAVAIL; GiáătrӏătrҧăvӅăcӫaăhƠmă(cóăkiӇuăLongInt)ălƠăkíchăthѭӟcătӕiăđaăcӫaăvùngăHEAP. Hàm MAXAVAIL; GiáătrӏătrҧăvӅăcӫaăhƠmă(cóăkiӇuăLongInt)ă lƠăkíchăthѭӟcăcònă lҥiăchѭaăcҩpăphátă cӫaăvùngăHEAP. 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ӓ 1 2 3 4 5 6 N-1 N --- --- VӟiăhìnhăminhăhoҥănhѭătrênăchoăthҩyătaătổăchӭcăđѭӧcămӝtădanhăsáchăcácăbiӃnă đӝ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ăđѭӧcăbӝănhӟănhѭăđƣănêuăӣătrên: 118 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. USES crt; TYPE THISINH = Record Ten:String[30]; T,L,AV:Real; End; MANG_CONTRO=Array[1..1000] Of ^THISINH; VAR p:MANG_CONTRO; Max:Word; PROCEDURE Wait; Begin Writeln; Write(‘An phim bat ky de tiep tuc’); Repeat Until Keypressed; End; PROCEDURE HienThiDS; Var i:Word; Begin For i:=1 To Max Do writeln(i,’. ‘,p[i]^.Ten); Writeln; End; PROCEDURE NhapDS(Var Max:Word; Var p:MANG_CONTRO); Var i:Word; Begin Write(‘Nhap so thi sinh: ‘); Readln(Max); For i:=1 To Max Do Begin 119 New(p[i]); With p[i]^ Do Begin Write(i,’. Ho va ten: ‘); Readln(Ten); Write(‘Diem Toan: ‘); Readln(T); Write(‘Diem Ly: ‘); Readln(L); Write(‘Diem Anh van: ‘); Readln(AV); Writeln; End; End; Writeln(‘Da nhap xong danh sach’); End; PROCEDURE XepThuTu(Max:Word; Var p:MANG_CONTRO); Var i,j:Word; q:POINTER; A,B:Real; Begin Write(‘Dang xep thu tu giam dan theo tong diem’); For i:=1 To Max-1 Do For j:=i+1 To Max Do Begin A:= p[i]^.T+p[i]^.L+p[i]^.AV; B := p[j]^.T+p[j]^.L+p[j]^.AV ; If A < B Then Begin q:=p[i]; p[i]:=p[j]; p[j]:=q; Writeln(‘Da xep thu tu xong’); End; End; End; BEGIN NhapDS(Max,p); HienThiDS; Wait; XepThuTu(Max,p); HienThiDS; Wait; END. 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ӓă 120 đӃ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 các 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: TYPE KiểuConTrỏ : ; KiểuBảnGhi = RECORD TênTrường1 : ; TênTrường2 : ; .................. TênTrườngN : ; ConTrỏ : KiểuConTrỏ ; END ; 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: TYPE TRO = ^NUT; NUT = Record So : Word; Tiep : TRO; End; 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,ă điӇ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: TYPE DSTHISINH = ^THISINH; THISINH = Record Ten : String[30]; 121 T,L,AV:Real; Tiep : DSTHISINH; End; Hay là TYPE DULIEU = Record Ten : String[30]; T,L,AV:Real; End; DSTHISINH = ^THISINH; THISINH = Record DL : DULIEU; Tiep : DSTHISINH; End; 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ă<ă500).ăDƣyăsӕăđѭӧcălѭuătrongăcácănútă cӫaămӝtădanhăsáchăliênăkӃt.ăTrҧălӡiătrênămƠnăhình,ădƣyăsӕăcóăbaoănhiêuăsӕăchẵn. USES CRT; TYPE TRO = ^NUT; NUT = Record So : Word; Tiep : TRO; End; VAR L : TRO; PROCEDURE TaoDanhSach(Var L:TRO); Var p,M:TRO; N,i:Word; Begin Write('Nhap N= '); Readln(N); Randomize; L := Nil; For i:=1 To N Do Begin New(p); p^.so := Random(500); p^.Tiep := Nil; If L=Nil Then L:=p Else M^.Tiep := p; M := p; End; End; FUNCTION SoChan(L:TRO):Word; Var p:TRO; dem:Word; Begin 122 Dem := 0; P := L; While pNil Do Begin If p^.So mod 2 0 Then dem:=dem+1; P:=p^.Tiep; End; Sochan:=dem; End; BEGIN TaoDanhSach(L); Write('So luong so chan la: ',SoChan(L)); Readln END. 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,ăđӃnăchừngănƠoănhұpăhӑătênă thíăsinhălƠăxơuărổngăthìăkӃtăthúc.ăDanhăsáchăthíăsinhălѭuăvƠoăcácăbiӃnăđӝngăcӫaămӝtă danhăsáchăliênăkӃtăquҧnălýăbӣiăbiӃnătrӓăL.ăSauăđóăchoăhiӇnăthӏădanhăsáchăthíăsinhălênă mƠnăhình.ăTừădanhăsáchăđƣăcóăhƣyăhoánăđổiăcácăbҧnăghiătrongăcácăbiӃnăđӝngăsaoăchoă khiăduyӋtădanhăsáchătaăđѭӧcătổngăđiӇmăcӫaăthíăsinhăđѭӧcăxӃpătheoăthӭătựăgiҧmădầnă cӫaătổngăđiӇm. USES CRT; TYPE DSTHISINH = ^THISINH; THISINH = Record Ten : String[30]; T,L,AV:Real; Tiep : DSTHISINH; End; VAR L:DSTHISINH; Max:Word; PROCEDURE Wait; Begin Writeln; Write('An phim bat ky de tiep tuc'); Repeat Until Keypressed; End; PROCEDURE HienThiDS(L:DSTHISINH); Var p:DSTHISINH; Begin 123 P:=L; While pNIL DO Begin Writeln(i,'. ',p^.Ten); P:=P^.Tiep; End; Writeln; End; PROCEDURE NhapDS(Var L:DSTHISINH); Var M,p:DSTHISINH; St:String; Begin L:=NIL; Write('Nhap so thi sinh: '); Repeat Write('Ho va ten: '); Readln(st); If st" Then Begin New(p); With p^ Do Begin Ten:=st; Write('Diem Toan:'); Readln(T); Write('Diem Ly: '); Readln(L); Write('Diem Anh van:'); Readln(AV); If L=NIL Then L:=p Else M:=p; M:=p; End; End; Until st="; Writeln('Da nhap xong danh sach'); End; PROCEDURE XepThuTu(Max:Word; Var p:MANG_CONTRO); Var i,j:Word; q:POINTER; A,B:Real; Begin Write('Dang xep thu tu giam dan theo tong diem'); For i:=1 To Max-1 Do For j:=i+1 To Max Do Begin A:= p[i]^.T + p[i]^.L + p[i]^.AV; B:= p[j]^.T + p[j]^.L + p[j]^.AV; If A < B Then Begin 124 q:=p[i]; p[i]:=p[j]; p[j]:=q; End; End; Writeln('Da xep thu tu xong'); End; BEGIN NhapDS(Max,p); HienThiDS; Wait; END. BÀI TҰP CHѬѪNG 9 1. Giҧă sӱă trênă đĩa,ă tҥiă thѭă mụcă hiӋnă thӡiă cóă tұpă tină dҥngă vĕnă bҧnă vӟiă tênă DAYSO.DATăchӭaădƣyăsӕă nguyên,ăgiӳaăhaiă sӕăcáchă nhauă ítă nhҩtămӝtăkíă tựă trắng.ă ViӃtăchѭѫngătrìnhăthựcăhiӋnăcácăcôngăviӋcăsau: ĐӑcădƣyăsӕăvƠălѭuăvƠoămӝtădanhăsáchăliênăkӃt,ămỗiănútăchӭaămӝtăsӕănguyên. TrênădanhăsáchănӃuăcóăhaiănútăchӭaăsӕănguyênăbằngănhauăthìăloҥiăbӓăbӟtămӝtă nútăchoăđӃnăkhiătrênădanhăsáchăchỉăcònăcácăsӕănguyênăkhácănhauătừngăđôiămӝt. Trênăcѫăsӣădƣyăsӕăđƣăcó đѭӧcăsauăkhiăloҥiăbӓănhѭăcơuăb),ăhƣyăhoánăđổiăsӕălѭuă trongăcácănútăđӇădanhăsáchălѭuădƣyăsӕătheoăthӭătựătĕngădần. ChoănhұpătừăbƠnăphímănӝtăsӕănguyênăN,ănӃuăNăchѭaăđѭӧcălѭuăӣănútănƠoăthìătìmă vӏătríăđӇăchènăvƠoămӝtănútămӟiăchӭaăNăsaoăchoădƣyăsӕălѭuătrongădanhăsáchăvҩnăbҧoă đҧmătheoăthӭătựătĕngădần. HiӇnăthӏădƣyăsӕăcóătrongădanhăsáchălênămƠnăhình. 2. ĐӇăxӱălýăsӕănguyênă lӟnă(víădụă536523472378239)ăngѭӡiătaătổăchӭcăcҩuătrúcădӳă liӋuănhѭăsau:ăMỗiăsӕănguyênăđѭӧcălѭuătrongămӝtădanhăsáchăliênăkӃt,ămỗiănútălѭuămӝtă chӳă sӕă cӫaă sӕă nguyênă đó,ă đѭӧcă lѭuă theoă chiӅuă ngѭӧcă cӫaă sӕă nguyênă (tӭcă chӳă sӕă hƠngăđѫnăvӏă lѭuăӣănútăđầuătiên,ăcácănútătiӃpătheoă lƠăchӳăsӕăhƠngăchục,ăhƠngătrĕm,ă hàng ngàn...) HƣyăviӃtăchѭѫngătrìnhăthựcăhiӋnăcácăcôngăviӋcăsau: NhұpătừăbƠnăphímămӝtăsӕănguyênălӟn. HiӇnăthӏămӝtăsӕănguyênălӟnălênămƠnăhình. Cӝng,ătrừ,ănhơn,ăchiaăhaiăsӕănguyênălӟn. Mỗiăcôngă viӋcăđѭӧcă viӃtă trongămӝtăchѭѫngă trìnhăconă vƠăxơyădựngămenuă đӇă ngѭӡiăsӱădụngăchӑnăcôngăviӋc. TÀI LIӊU THAM KHҦO [1]ăHӗăSĩăĐƠm,ăTrầnăVĕnăĐҥo,ăTin học 11, NXB Gíáoădục,ă2007 125 [2]ăQuáchăTuҩnăNgӑc,ăNgôn ngữ lập tnh Pascal - Tập 1 & 2,ăNĕmă1994 [3]ăĐỗăNgӑcăPhѭѫng,ăGiáo trình Pascal - Tập 1 & 2,ăTrѭӡngăTinăhӑcă&ăNgoҥiăngӳă TPăHӗăChíăMinh.
File đính kèm:
- bai_giang_ngon_ngu_lap_trinh_pascal.pdf