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.

pdf 125 trang phuongnguyen 9880
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Ngôn ngữ lập trình pascal", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Ngôn ngữ lập trình pascal

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:

  • pdfbai_giang_ngon_ngu_lap_trinh_pascal.pdf