404
GIAÙO TRÌNH PASCAL Trang 1 TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng Phong I)Caáu truùc cuûa moät chöông trình pascal : [program teân chöông trình ;] [const ] :khai bao caùc haèng soá trong chöông trình [uses] :khai baùo caùc thö vieän trong chöông trình [type] :ñònh nghóa caùc kieåu döõ lieäu [procedure vaø function ]: khai baùo caùc haøm vaø thuû tuïc duøng trong chöông trình [var] :khai baùo caùc bieán duøng trong chöông trình <begin> : [caùc leänh keát thuùc baèng ;] <end.> II) BIEÁN: 2.2 Coâng duïng vaø caùch ñaët teân bieán: caùch ñaët teân bieán vaø chöông trình cuõng gioáng nhö caùch ñaët teân thö muïc vaø file nhöng ñoái vôùi teân bieán khoâng ñöôïc ñaët kí töï ñaàu tieân laø soá coâng duïng cuûa bieán : -nhaân dieän caùc soá lieäu vaø yeâu caàu cuûa ngöôøi söû duïng chöông trình -thöïc hieän caùc pheùp toaùn chuyeån ñoåi töø caùc soá lieäu nhaäp ñeå cho ra keát quaû -Xuaát caùc keát quaû ra cho ngöôøi duøng chöông trình .Ngoaøi rea caùc bieán coøn ñöôïc duøng ñeå löu tröõ caùc soá lieäu nhaäp,caùc soá lieäu trung gian trong quaù trình xöû lyù keát quaû 2.3 Khai baùo bieán : muoán khai baùo bieán ta ñaët vaøo phaàn var cuûa chöông trình vôùi caâu truùc nhö sau : <teân bieán > :<kieåu >;1.1 Bieán laø moät oâ nhôù naèm trong boä nhôù chính ,noäi dung coù theå thay ñoåi ñöôïc .Moåi bieán coù moät teân cho pheùp ngöôøi laäp trình coù theå doïc ghi noäi dung cuûa oâ nhôù thpoâng qua teân bieán maø khoâng caàn bieát ñòa chæ chính xaùc cuûa bieán -caùc teân bieán cuøng kieåu ta coù theå lieät keâ lieàn gaàn nhau ,caùch nhau baèng daáu phaåy -kieåu ta seõ ñònh nghóa nhö ôû phaàn sau III)KIEÅU DÖÕ LIEÄU : A)Kieåu soá : Goàm hai loaïi : nguyeân vaø thöïc Nguyeân bao goàm Loaïi kích thöôùc faïm vi löu tröõ Bieân soaïn : Tröông vaên Tuyeán 1

Pascal 1

Embed Size (px)

Citation preview

Page 1: Pascal 1

GIAÙO TRÌNH PASCAL Trang 1TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong I)Caáu truùc cuûa moät chöông trình pascal :[program teân chöông trình ;][const ] :khai bao caùc haèng soá trong chöông trình [uses] :khai baùo caùc thö vieän trong chöông trình [type] :ñònh nghóa caùc kieåu döõ lieäu[procedure vaø function ]: khai baùo caùc haøm vaø thuû tuïc duøng trong chöông trình [var] :khai baùo caùc bieán duøng trong chöông trình<begin>:[caùc leänh keát thuùc baèng ;]<end.>II) BIEÁN:2.2 Coâng duïng vaø caùch ñaët teân bieán:caùch ñaët teân bieán vaø chöông trình cuõng gioáng nhö caùch ñaët teân thö muïc vaø file nhöng ñoái vôùi teân bieán khoâng ñöôïc ñaët kí töï ñaàu tieân laø soá coâng duïng cuûa bieán :-nhaân dieän caùc soá lieäu vaø yeâu caàu cuûa ngöôøi söû duïng chöông trình-thöïc hieän caùc pheùp toaùn chuyeån ñoåi töø caùc soá lieäu nhaäp ñeå cho ra keát quaû -Xuaát caùc keát quaû ra cho ngöôøi duøng chöông trình .Ngoaøi rea caùc bieán coøn ñöôïc duøng ñeå löu tröõ caùc soá lieäu nhaäp,caùc soá lieäu trung gian trong quaù trình xöû lyù keát quaû2.3 Khai baùo bieán :muoán khai baùo bieán ta ñaët vaøo phaàn var cuûa chöông trình vôùi caâu truùc nhö sau :<teân bieán > :<kieåu >;1.1 Bieán laø moät oâ nhôù naèm trong boä nhôù chính ,noäi dung coù theå thay ñoåi ñöôïc .Moåi bieán coù moät teân cho pheùp ngöôøi laäp trình coù theå doïc ghi noäi dung cuûa oâ nhôù thpoâng qua teân bieán maø khoâng caàn bieát ñòa chæ chính xaùc cuûa bieán

-caùc teân bieán cuøng kieåu ta coù theå lieät keâ lieàn gaàn nhau ,caùch nhau baèng daáu phaåy-kieåu ta seõ ñònh nghóa nhö ôû phaàn sau III)KIEÅU DÖÕ LIEÄU :A)Kieåu soá :Goàm hai loaïi : nguyeân vaø thöïc Nguyeân bao goàm

Loaïi kích thöôùc faïm vi löu tröõByte 1 byte 0=>255Integer 2 byte -32768=>32767Word 2 byte 0=>65535Logint 4 byte -2147483648=>2147483647

Bieân soaïn : Tröông vaên Tuyeán 1

Page 2: Pascal 1

GIAÙO TRÌNH PASCAL Trang 2TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGSoá thöïc kích thöôùc faïm vi löu tröõ

4 byte -29x1039=>17x1038b)Kieåu luaän lyù :kí hieäu Boolean : baogoàm hai giaù trò TRUE vaø FALSEc)Kieåu kí töï vaø chuoåi -kieåu kí töï laø bieán coù kích thöôùc 1 byte goàm caùc kí töï coù trong baûng maõ ASSCII kí hieäu laø Char-kieåu string laø taäp hôïp 1 chuoåi caùc kí töï coù toái ña 255 kí töï 2)Caùc pheùp toaùn :a)Pheùp toaùn kieåu soá :bao goàm caùc pheùp toaùn +,-,*ñoái vôùi pheùp toaùn chia phaân thaønh hai loaïi -Nguyeân : mod ,div-Thöïcmod laø pheùp toaùn laáy phaàn dö nguyeân cuûa pheùp chiadiv :laø pheùp toaùn laáy phaàn thöông nguyeân cuûa pheùp chiaví duï : 9 mod 5=4

9 div 5 =1b)Caùc pheùp toaùn treân kieåu luaän lyù :AND ,OR,NOTA B A AND B A OR B A NOT B1 1 1 1 1 01 0 0 1 0 10 1 0 1 0 00 0 0 0 0 1C)Caùc pheùp toaùn treân kí töï : (char)Haøm ord traû ra maõ ascii cuûa kí töï Haøm CHR Traû ra maõ ASCII töông öùng Ví duï :ORD ('A')=65CHR(65)='A'3)Pheùp toaùn gaùn :duøng theo caáu truùc sau :bieán :=giaù trò caàn gaùn ;ví duï : a byte gaùn a:=5;muoán gaùn a:=266;khoâng ñöôïc vì a chæ nhaän giaù trò ñeán 255 chuù yù : kieåu soá khoâng ñöôïc gaùn cho caùc kieåu khaùc vaø ngöôïc laïi VÍ DUÏ A:=’PASCAL’ khoâng ñöôïc

S:=a khoâng ñöôïc vì s laø string VI)Caùc leänh xuaát nhaäp :1/Leänh xuaát :leänh naøy cho pheùp xuaát ra maøn hình or maùy in caùc döõ lieäu ,keát quaû vaø caùc thoâng baùo caàn thieát cuù phaùp write (<bieåu thöùc >);

or writeln (<bieåu thöùc >);

Page 3: Pascal 1

GIAÙO TRÌNH PASCAL Trang 3TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong-Leänh write xuaát ra maøn hình giaù trò cuûa bieåu thöùc taïi vò trí con troû hieän haønh .sau leänh naøy con troû seõ ôû cuoái giaù trò ñöôïc xuaát treân maøn hình -Leänh writeln xuaát leân maøn hình giaù trò cuûa bieåu thöùc taïi vò trí con troû hieän haønh sau ñoù con troû seõ ñöôïc ñöa veà doøng môùi coù ba loaïi :-Xuaát chuoåi thoâng baùo : thoâng baùo seõ ñöôïc ñaët trong ‘ ‘Viduï : write(‘LCÑTHBRVT’)-Xuaát giaù trò of bieân trong bieåu thöùc soá thì khoâng caàn (‘ ‘)Ví duï write ( R )OR Write ( a*b*c/4);-Xuaát hoån hôïp bao goàm hai caùch xuaát treân giöõa hai caùch xuaát phaûi coù daâu (,)ví duï write (‘baùn kính ñöôøng troøn laø :’,R);ñònh daïng luùc xuaát ñoái vôùi soá thöïc trong PASCAL seõ ñöôïc bieåu dieån nhö daáu chaám ñoäng 1.8367=0.18367E+01caùc ñònh daïng nhö sau :bieán thöïc : m:nm : laø toång soá oâ troâng toái thieåu ñeå in giaù trò bieán thöïc khi m =0 thì soá oâv troáng laø tuyø yù n : laø soá soá leû maø bieán thöïc caàn coù ( ôû phaån thaäp phaân )ví duï write (a*b*c /4/s:0:2)ví duï a:=1.692845

write (a:5:2)

Leänh nhaäp :Leänh naøy cho pheùp chöông trình nhaän soâ lieäu vaø ghi vaøo bieán töông öùng ñöôïc ñöa ra Cuù phaùp : readln (bieán )Nhaäp nhieàu bieán :Readln (bieán 1 ,bieán 2 ,….bieán n);Ví duï a,b :real C1 : readln(a);

readln (b);C2 : readln(a,b);Baøitaäp:Cho tröôùc hai bieán soá thöïc laø a vaø b .Sau khi gaùn giaù trò cho hai bieán naøy ,khoâng duøng baát cöù bieán trung gian naøo haõy ñoåi giaù trò cuûa hai bieán a,bgiaûi:Program bt;

Bieân soaïn : Tröông vaên Tuyeán 3

Page 4: Pascal 1

GIAÙO TRÌNH PASCAL Trang 4TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGUses crt;var a,b:real;

beginclrscr;write(‘ cho a va b=’); readln(a,b);a:=a+b;b:=b-a;a:=a-b;writeln(‘a=’,a:4:3,’b=’,b:4:3);readln;end.Bt: Cho tröôùc caùc giaù trò X,Y,Z .Vieát ñoaïn chöông trình hoaùn vò voøng quanh caùc giaù trò treân.:X nhaän giaù trò Y,Y nhaän giaù trò Z,Z nhaän giaù trò XGiaûi :Program bt;Uses crt;VarX,Y,Z ,tam:real;BeginClrscr;Write(‘x,y,z=’);readln(x,y,z);Tam:=x;X:=y;Y:=z;Z:=tam;

Write(‘X=’,X,’y=’,Y,’Z=’,Z);Readln;End.--Aùp duïng caùc pheùp toaùn MOD, DIVt1inh thôøi gian cuûa vieäc naøo ñoù laø X giaây .haõy chuyeån ñoåi vaø vieát ra treân maøn hình soá thôøi gian treân döôùi daïng bao nhieâu giôø ,bao nhieâu phuùt,bao nhieâu giaâyvarx,gio,phut:integer;begin write('X( giay)=');readln(X); gio:=X div 3600; x:=x mod 3600; phut:=x div 60; x:=x mod 60;{ so giay con lai } writeln('x=',gio,'gio,',phut,'phut,',x,'giay.'); readln;

Page 5: Pascal 1

GIAÙO TRÌNH PASCAL Trang 5TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong end.----Do khai baùo X laø integer neân haïn cheá cuûa chöông trình treân chæ coù theå chuyeån ñoåi vôùi X<=32767.Muoán chuyeån ñoåi vôùi X lôùn hôn ta phaûi khaûi khai baùo laø real vaø ta phaûi duøng haøm caét TRUNC .Qua ñaây chuùng ta thaáy roû theâm caùch duøng soá Integer vaø real,pheùp DIV,mod vôùi trunc vaø pheùp chia /varx:real;gio,phut:integer;begin write('X( giay)=');readln(X); gio:=trunc(X / 3600); x:=x -gio*3600; phut:=trunc(x/60); x:=x -phut*60;{ so giay con lai } writeln('x=',gio,'gio,',phut,'phut,',x:0:0,'giay.'); readln; end.

--Xuaát ra hoaù ñôn tieàn dieän ñöôïc bieåu dieãn nhö sau :CTY ÑIEÄN LÖÏC COÄNG HOAØ XAÕ HOÄI CHUÛ NGHÓA VIEÄT NAMBRVT Ñoäc laäp –töï do –haïnh phuùc

HOAÙ ÑÔN TIEÀN ÑIEÄNHoï vaø teân chuû hoä :Ñòa chæ :Soá cuõ :Soá môùi :

BRVT,ngaøy thaùng naêm 1999

Moät soá haøm vaø thuû tuïc ñeå trình baøy Uses crt;Clrscr;(xoaù maøn hình )Gotoxy (x,y) : döa crusor veà coät x doøng y Gotoxy(70,22)Haøm whery :traû veà doøng hieän haønh cuûa crusorHaøm wherx : traû veà coät hieän haønh program hoa_don_tien_dien;uses crt;varstt,sm,sc : INTEGER;HT,DC:STRING;begin

Bieân soaïn : Tröông vaên Tuyeán 5

Page 6: Pascal 1

GIAÙO TRÌNH PASCAL Trang 6TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGclrscr;gotoxy(1,1);write('CONG TY DIEN LUC');gotoxy(3,2);write('BR - VT');gotoxy(20,1);write('CONG HOA XA HOI CHU NGHIA VIET NAM');gotoxy(23,2);write('DOCLA-TU DO -HANH PHUC');gotoxy(35,5);write('HOA DON TIEN DIEN');gotoxy(1,7);write('HO TEN CHU HO : ');READLN(HT);gotoxy(1,8);write('DIA CHI : ');READLN(DC);gotoxy(1,9);write('CHI SO CU : ');READLN(SC);gotoxy(1,10);write('CHI SO MOI : ');READLN(SM);STT:=SM-SC;gotoxy(1,11);write('so kw tieu thu : ',stt);gotoxy(1,12);write('tien phai tra : ',stt*680);gotoxy(30,17);write('BR-VT,NGAY.... THANG....NAM....');READLNEND.Program hoa_don_tien_dien;uses crt;varstt,sm,sc : REAL;HT,DC:STRING;beginclrscr;gotoxy(1,1);write('CONG TY DIEN LUC');gotoxy(3,2);write('BR - VT');gotoxy(20,1);write('CONG HOA XA HOI CHU NGHIA VIET NAM');gotoxy(23,2);write('DOCLA-TU DO -HANH PHUC');gotoxy(35,5);write('HOA DON TIEN DIEN');gotoxy(1,7);write('HO TEN CHU HO : ');REDLN(HT);gotoxy(1,8);write('DIA CHI : ');READLN(DC);gotoxy(1,9);write('CHI SO CU : ');READLN(SC);gotoxy(1,10);write('CHI SO MOI : ');READLN(SM);STT:=SM-SC;IF(STT<=150) THEN BEGIN gotoxy(1,11);write('SO KW TIEU THU: ',STT:10:2,' KW'); gotoxy(1,12);write(STT,' KW GIA 550 DONG' ); gotoxy(1,13);write('SO TIEN PHAI TRA: ',STT*550:0:2,' dong'); ENDELSE IF(STT<=250) THEN BEGIN gotoxy(1,11);write('SO KW TIEU THU: ',STT:10:2,' KW'); gotoxy(1,12);write(150,' KW GIA 550 DONG' ); gotoxy(1,13);write(STT-150,' KW GIA 850 DONG' );

Page 7: Pascal 1

GIAÙO TRÌNH PASCAL Trang 7TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong gotoxy(1,14);write('SO TIEN PHAI TRA: ',150*550+(STT-150)*850:0:2,' dong'); END ELSE BEGIN gotoxy(1,11);write('SO KW TIEU THU: ',STT:10:2,' KW'); gotoxy(1,12);write(150,' KW GIA 550 DONG' ); gotoxy(1,13);write(100,' KW GIA 850 DONG' ); gotoxy(1,14);write(STT-250:0:0,' KW GIA 1100 DONG' ); gotoxy(1,15);write('SO TIEN PHAI TRA: ',150*550+100*850+(STT-250)*1100:0:2,' dong'); END;gotoxy(30,17);write('BR-VT,NGAY.... THANG....NAM....');READLNEND.Program hoa_don_tien_dien;uses crt;varstt,sm,sc : INTEGER;HT,DC:STRING;beginclrscr;gotoxy(1,1);write('CONG TY DIEN LUC');gotoxy(3,2);write('BR - VT');gotoxy(20,1);write('CONG HOA XA HOI CHU NGHIA VIET NAM');gotoxy(23,2);write('DOCLA-TU DO -HANH PHUC');gotoxy(35,5);write('HOA DON TIEN DIEN');gotoxy(1,7);write('HO TEN CHU HO : ');READLN(HT);gotoxy(1,8);write('DIA CHI : ');READLN(DC);gotoxy(1,9);write('CHI SO CU : ');READLN(SC);gotoxy(1,10);write('CHI SO MOI : ');READLN(SM);STT:=SM-SC;CASE STT OF1..150: BEGIN gotoxy(1,11);write('SO KW TIEU THU: ',STT,' KW'); gotoxy(1,12);write(STT,' KW GIA 550 DONG' ); gotoxy(1,13);write('SO TIEN PHAI TRA: ',STT*550,' dong'); END;151..250: BEGIN gotoxy(1,11);write('SO KW TIEU THU: ',STT,' KW'); gotoxy(1,12);write(150,' KW GIA 550 DONG' ); gotoxy(1,13);write(STT-150,' KW GIA 850 DONG' ); gotoxy(1,14);write('SO TIEN PHAI TRA: ',150*550+(STT-150)*850,'

Bieân soaïn : Tröông vaên Tuyeán 7

Page 8: Pascal 1

GIAÙO TRÌNH PASCAL Trang 8TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGdong'); ENDelse BEGIN gotoxy(1,11);write('SO KW TIEU THU: ',STT,' KW'); gotoxy(1,12);write(150,' KW GIA 550 DONG' ); gotoxy(1,13);write(100,' KW GIA 850 DONG' ); gotoxy(1,14);write(STT-250,' KW GIA 1100 DONG' ); gotoxy(1,15);write('SO TIEN PHAI TRA: ',150*550+100*850+(STT-250)*1100,' dong'); END; END;gotoxy(30,17);write('BR-VT,NGAY.... THANG....NAM....');READLNEND.{ Nhap vao tuoi hien tai cua cha va con sau do in ra ket qua khi nao tuoi cha gap hai lan tuoi con}{vi du tuoi cha 35 tuoi con 20 thi cach day 5 nam tuoi cha gap hai lan tuoi con ví duï : tuoåi cha 35 ,tuoåi con 20 thì caùch ñaây 5 naêm tuoåi cha gaáp ha X’-Y’=Y’X’-Y’=X-YY’=X-Y }

program tuoi;USES CRT;var X,Y :BYTE;BEGINWRITE (' NHAP TUOI CHA :');READLN(X);WRITE (' NHAP TUOI CON :');READLN(Y);IF (X-Y=Y) THEN writeln('HIEN TAI TUOI CHA GAP HAI LAN TUOI CON') ELSE IF(X-Y>Y) THEN WRITELN('can',X-Y-Y,'nam de tuoi cha gap 2 tuoi con') else WRITELN('cach day',Y-x+y,'nam tuoi cha gap 2 tuoi con'); readln; end.

Page 9: Pascal 1

GIAÙO TRÌNH PASCAL Trang 9TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong

V) MOÄT SOÁ HAØM CÔ BAÛN :Haøm ABS(X) : TRAÛ VEÀ TRÒ TUYEÄT ÑOÁI CUÛA SOÁ XHaøm SQRT(X) : traû veà caên baäc 2 cuûa soá xEXP(X) : Traû veà giaù trò cuûa ex

LN(X) : TRAÛ veà giaùtrò cuûa logarit cô soá e cuûa xTRUNC(X) : Traû veà phaàn nguyeân cuûa soá xFRAC(X) :traû veà phaàn soá leû cuûa xRound(x) :haøm laøm troøn soá xSUCC(I) : TRAÛ VEÀ giaù trò ñöùng sau I vduï : succ(5)=6PRED (I) :traû veà giaù trò ñöùng tröôùc I PRE(6)=5Ord(c) traû veà thöù töï cuûa kí töï c trong baûng maõ ASCIIOrd (‘A’)->65CHR(N) : Traû veà kí töï coù soá thöù töï n trong baûng maõ ASCIIVD WRITE(CHR(65));UPCASE(c) : traû veà kí töï hoa öùng vôùi kí töï cVí duï : writeln(upcase(‘a’)); ->ALength(s) traû veà chieàu daøi cuûa chuoåi sOdd(x) cho ra kieåu boolean ( xem x co phai la so le hay khong )program vd;uses crt;begin clrscr; TEXTBACKGROUND(RED);TEXTCOLOR(YELLOW); gotoxy(10,5); writeln('CHAO EM '); GOTOXY(10,7);TEXTBACKGROUND(YELLOW);textcolor(RED);writeln('CHAO EM ');

READLN;end.{ tim ki tu khi biet ma ASCII } PROGRAM KY_TU; VAR ma:byte; tl:chAr; begin repeat writeln('TIM KY TU KHI BIET MA ASCII '); writeln('--------------------------- '); WRITE(' Cho biet Ma ASCII '); READLN(MA); WRITELN('+Ki tu ma ASCII :',ma:2,' la :',chr(ma)); writeln('co tiep tuc nua khong ?');reaDln(tl); until (tl='K') or (tl='k') end.{ tim ki tu khi biet ma ASCII }

Bieân soaïn : Tröông vaên Tuyeán 9

Page 10: Pascal 1

GIAÙO TRÌNH PASCAL Trang 10TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG PROGRAM KY_TU; VAR ma:byte; tl:chAr; begin repeat writeln('TIM KY TU KHI BIET MA ASCII '); writeln('--------------------------- '); WRITE(' Cho biet Ma ASCII '); READLN(MA); WRITELN('+Ki tu ma ASCII :',ma:2,' la :',chr(ma)); writeln('co tiep tuc nua khong ?');realn(tl); until (tl='K') or (tl='k') end.{nhap mot so co 4 chu so xuat ra cac chu so do }PROGRAM CHU_SO;VAR n:integer;begin writeln('XUAT CAC CHU SO CUA SO NGUYEN DUONG :'); Writeln('- cho biet so nguyen ');readln(n); writeln('so nguyen ',n:5,' co cac chu so sau :'); writeln('',n div 10000); n:=n mod 10000; writeln('',n div 1000); n:=n mod 1000; writeln('',n div 100); n:=n mod 100; writeln('',n div 10); n:=n mod 10; writeln('',n); writeln; writeln(' bam phim enter de ket thuc '); readln;end.{ doi chu thuong ra chu hoa bang cach dung ham upcase(ch) hoac dung bang ma ASCII}PROGRAM BT;VAR ch,c1,c2:char;begin writeln('DOI CHU THUONG RA CHU HOA '); WRITE('-----------------------------'); writeln('nhap mot ki tu bat ky '); readln(ch); c1:=upcase(ch); c2:=chr(ord(ch)-32); writeln('-Cach thu nhat ,dung ham Upcase : ',c1); writeln('-Cach thu hai ,khong dung ham Upcase : ',c2); readln;end.

Page 11: Pascal 1

GIAÙO TRÌNH PASCAL Trang 11TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong{ doi chu HOA ra chu thuong bang dung bang ma ASCII}PROGRAM BT;VAR ch,c1,c2:char;begin writeln('DOI CHU THUONG RA CHU HOA '); WRITE('-----------------------------'); writeln('nhap mot ki tu bat ky '); readln(ch); c1:=upcase(ch); c2:=chr(ord(ch)-32); writeln('-Cach thu nhat ,dung ham Upcase : ',c1); writeln('-Cach thu hai ,khong dung ham Upcase : ',c2); readln;

end.

BT : MOÄT KHAÙCH HAØNG GÖÛI VAØO NGAÂN HAØNG SOÁ TIEÀN GÖÛI N ÑOÀNG LAÛI SUAÁT KHOÂNG KYØ HAÏN LAØ 0,5% THAÙNG vioeát chöông trình tính soá tieàn ruùt ñöôïc sau thôøi gian t thaùng ( t ñöôïc nhaäp vaøo )program bt;uses crt;const l=0.005;var n:real;t:integer;begin textbackground(red);textcolor(yellow); write('nhap so tien goi ');readln(n); write('nhap so thang goi ');readln(t); write('so tien rut duoc la :=',n*exp(t*ln(1+l)):8:2); readln; end. Chuù yù : logax=ln(x)/ln(a); ax=eln(a^x)=exlna

S=n*( 1+l)t=n*eln((1+l)^t)=n*EXP(T*ln(1+l))

Baøi 5 : Laäp trình vôùi caáu truùc dieàu kieän I)Caùc ñònh nghóa laäp trình vôùi caùc caáu truùc ñieàu khieån :caâu leänh :laø moät leänh coù trong chöông trình :ví duï write (‘ho teân chuû hoä ‘); readln (ht);2,khoái leänh laø taäp hôïp moät hay nhieàu caâu leänh ñoái vôùi khoái leänh coù hai caâu leänh trôû leân thì phaûi ñeå trong caëp begin end;3/Ñieàu kieän laø caùc bieåu thöùc so saùnh bao goàm caùc pheùp

Bieân soaïn : Tröông vaên Tuyeán 11

Page 12: Pascal 1

GIAÙO TRÌNH PASCAL Trang 12TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGtoaùn so saùnh >< ,=,>=, <=, ví duï a,b :byte ;a:=5;b:=6;c:=a>b =>F4) khoái ñieàu kieän laø taäp hôïp moät hay nhieàu ñieàu kieän ñöôïc keát noái vôùi nhau baèng caùc pheùp toaùn AND ,OR & NOT Caùc ñieàu kieän phaûi ñeå trong ngoaëc ñôn ()II)Caáu truùc reõ nhaùnh :1/caáu truùc IF THEN Cuù phaùp if <khoái ñk A > then khoái leänh SYù nghóa : neáu khoái ñieàu kieän laø true thì thöïc hieän khoái leänh S Hình ve vaøoWait DataRehurn

ÑK Ñuùng saib. Caáu truùc reõ nhaùnh . c. Daïng 1: Caáu truùc IF THEN .

Coâng vieäc

ra

ví duï : vieát chöông trình tính tieàn cuûa moät maët haøng bieát soâ löôïng vaø ñôn giaù bieát raèng mua moät haøng vôùi soá löôïng >20 thì giaûm 5% toång giaù trò 19x 2000ñ21x2000ñx 95%giaûi hoûi SL,DG ?TIEÀN=SL*DGIF SL >20 THEN TIEÂN=TIEÀN *95%Xuaát tieàn Giaûi Program tt;Var SL,DG,T: real;BeginWrite(‘nhap SL,DG ‘);readln(sl,dg);T:=sl*dg;If SL>20 then t:=t*95/100;Write (T);End.Baøi toaùn ñieän :Hoûi sc,sm :

Page 13: Pascal 1

GIAÙO TRÌNH PASCAL Trang 13TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongKwtt=sm-scIf kwtt<=150 then tt=kwtt*680If (kwtt>100) then tt=150*680+(kwtt-150)*700If kwtt>250 then tt=150*680+100*7000+(kwtt-250)*850Bt : giaûi vaø bieän luaän phöông trình baäc hai 1) ax2+bx+c=02) giaûi vaø bieän luaän heä phöông trình baäc nhaát program hinh_vuong;uses crt;varR:real;beginclrscr;write('Nhap canh hinh vuong=');readln(R);writeln('Dien tich hinh vuong=',R*R:8:2);writeln('Chu vi hinh vuong=',4*R:8:2);readlnend.3)PROGRAM GPTBAC_NHAT;VARA,B,C,X:REAL;BEGINWRITE('NHAP A= ');READLN(A);WRITE('NHAP B= ');READLN(B);IF((A=0)AND (B=0)) THEN

WRITE(#7,'PT VO SO NGHIEM');IF((A=0)AND (B<>0)) THEN

WRITE(#7,'PT VO NGHIEM') ;IF(A<>0) THEN WRITE(#7,'PT CO NGHIEM LA X= ',-B/A :0:2);

READLN END.----------------end--------------bt) nhaäp vaøo 4 soá a,b,c,d in ra soá lôùn nhaát :bt )nhaäp vaøo maùy teân cuûa hai hoïc sinh baát kyø vaø in ra theo thöù töï vaàn a,b,c,program vietten;varten1,ten2 :string[10];begin

write(‘nhaâp teân hai hoïc sinh ‘);readln (ten1,ten2);if ten1<ten2 then

Bieân soaïn : Tröông vaên Tuyeán 13

Page 14: Pascal 1

GIAÙO TRÌNH PASCAL Trang 14TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

begin write(ten1);write(ten2);

end;else

begin write(ten2);write(ten1);

end;readln;end.------Ví duï 4 :Vieát chöông trình sau :nhaäp moät kí töï töø baøn phím neáu kí töï laø A thì traû lôøi : ñaây laø lôùp A3K43neáu kí töï laø B thì traû lôøi : ñaây laø lôùp A4K43neáu KHOÂNG PHAÛI la,Bø A thì traû lôøi : Baïn nhaäp sai roàiProgram lop;Var ch:char;

begin write(‘hay nhaäp kí töï baát kì’);readln(ch);ch:=upcase(ch);if ch=’a’ then

writeln(‘lop A3-K43’);if ch=’B’ then

writeln(‘lop A4-K43’);ELSE

writeln(‘ban nhaäp sai roài’);readln;end

Ví duï : vieát vaø bieän luaän phöông trình baäc nhaát

Y(bd-ae)=ed-afY=(ed-af)/(bd-ac)X=Programm ghptb1.pasBegin write ('a,b,c,d,e,f,x,y ) ;readln(a,b,c,d,e,f,x,y );

d= =ab'-ba' neáu D<>0 Thì heä coù nghieäm duy nhaát

Page 15: Pascal 1

GIAÙO TRÌNH PASCAL Trang 15TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongx=DX/DY=DY/D

DX= =cb'-bc'

DY= =ac'-ca'

Neáu D=0 Vaø DX <> 0 hay Dy<.>0 heä voâ nghieâmNeáu D=DX=DY=0 =0 Heä voâ soá nghieäm

Ñònh thöùc ----------------end--------------------

else khoái leänh S2yù nghóa :

-neáu coù ñieàu kieän A laø true thì thöïc hieän khoái leänh S1_neáu coù dieàu kieän A laø false thì thöïc hieän khoái leänh S2

ví duï : vieát chöông trình tính tieàn cuûa moät maët haøng bieát soâ löôïng vaø ñôn giaù bieát raèng mua moät haøng vôùi soá löôïng >20 thì giaûm 5% toång giaù trò 19x 2000ñ21x2000ñx 95%Giaûi hoûi SL,DG ?TIEÀN=SL*DGIF SL<20 THEN TT:=SL*DGELSE THEN TT:=20*DG+(SL-20)*DG *95%;Xuaát tieàn Giaûi Program tt;Var SL,DG,T: real;BeginWrite(‘nhap SL,DG ‘);readln(sl,dg);T:=sl*dg;If SL < 20 then t:=SL*DGELSE T:=20*DG+(SL-120)*DG*95/100;

Bieân soaïn : Tröông vaên Tuyeán 15

A

A

S2;S1;

F

Page 16: Pascal 1

GIAÙO TRÌNH PASCAL Trang 16TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGWrite (T);End.CAÁU TRUÙ C CASE OFGía trò 1: khoái leänh S1;Gía trò 2: khoái leänh S2;..Gía trò n: khoái leänh Sn;Else khoái leänh A;End;Yù nghóa: neáu bieán baèng giaù trò 1 thì thöïc hieän khoái leänh S1neáu bieán baèng giaù trò 2 thì thöïc hieän khoái leänh S2neáu bieán baèng giaù trò n thì thöïc hieän khoái leänh Snneáu bieán <> giaù trò 1,2,3,..n thì thöïc hieän khoái leänh A;cuoái phaæ coù End;chuù yù bieán chæ coù theå laø nguyeân hay kí töï ví duï Tính tieàn ñieän

stt:=sm-sc1..150: tt:=stt*680;151..250: tt:=150*680+(stt-150)*750;else : tt:=150*680+100*750+(stt-250)*1000;end;write(tt);

Ví duï : laäp trình tính tieàn thöôûng cuoái naêm cho moät caùn boä naøo ñ1o vôùi möùc löông Neáu chöa coù con thì tieàn thöông baèng 1,5 tieàn löông Neáu coù 1 con thì tieàn thöông baèng 2 laàn tieàn löông Neáu coù 2 con thì tieàn thöôûng baèng 2,5 laàn tieàn löông Neáu coù 3 con thì tieàn thöôûng baèng 0,5 laàn tieàn löông Neáu coù 4 con thì tieàn thöôûng baèng 0 laàn tieàn löông progam tienthuong;varsocon :integer;luong,thuong:real;begin write('hay cho biet so con va luong cua can bo');readln(socon,luong); case socon of 0:thuong:=1.5*luong; 1:thuong:=2*luong; 2:thuong:=2.5*luong; 3:thuong:=0.5*luong; else thuong:=0; end; write ('Tien thuong cua can bo la :',thuong:7:2); readln;

Page 17: Pascal 1

GIAÙO TRÌNH PASCAL Trang 17TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong end.{tinh so ngay cua thang nao do trong nam biet rang 4,6,9,11=>301,3,5,8,10,12=> 31 thang 2 =>28 ngay(nhuan 29)}program tinhsongay;varsongay,thang,nam :integer;begin write('hay nhap thang nam');readln(thang,nam); case thang of 4,6,11: songay:=30; 1,3,5,7,8,10,12:songay:=31; 2:case nam mod 4 of 1,2,3:songay:=28; 0:songay:=29; end; end; write ('Thang ',thang,'nam co so ngay',songay); readln; end.

{Doi ngay thang nam sang thu trong tuan }program case2;var thu,ngay,thang:byte;nam:integer;begin

program caseof3;uses crt;var dl :integer;beginwriteln(' nhap nam duong lich ');readln(dl);case dl mod 10 of0: write('canh ');1: write('tan ');2 : write('nham ');3 : write('qui ');4 : write('Giap ');5 : write('At ');6 : write('Binh ');7 : write('Dinh ');8 : write('Mau ');9 : write('Ky ');end;case dl mod 12 of0: write('than ');1: write('dau ');

Bieân soaïn : Tröông vaên Tuyeán 17

Page 18: Pascal 1

GIAÙO TRÌNH PASCAL Trang 18TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG2 : write('Tuat ');3 : write('Hoi ');4 : write('Ti ');5 : write('Suu ');6 : write('Dan ');7 : write('Mao ');8 : write('Thin ');9 : write('Ti ');11 : write('Ngo ');end;

readln;end.

write('Doc ngay thang nam :'); readln(Ngay,thang,nam); begin {nam co the cho hai so cuoi hoac du bon so:1992 hoac 92} nam:=1900+(nam mod 1900); if thang < 3 then begin thang:=thang +12; nam:=nam-1; end; thu:=abs(ngay+2*thang+ 3*(thang+1) div 5 +nam+nam div 4) mod 7; case thu of 0:writeln('Chu Nhat '); 1:writeln('Thu Hai '); 2:writeln('Thu Ba '); 3:writeln('Thu Tu '); 4:writeln('Thu Nam '); 5:writeln('Thu Sau '); 6:writeln('Thu Bay '); end; readln; end;

end.

Ví duï :Var diem :byte;Begin

Write(‘ DIEM CUOI KHOA ‘);READLN(DIEM)CASE DIEM OF

Page 19: Pascal 1

GIAÙO TRÌNH PASCAL Trang 19TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong9,10:WRITELN(‘GIOI’);7,8:WRITELN(‘KHA’);5,6 : WRITELN(‘TRUNG BINH’);1,2,3,4:WRITELN(‘KHONG DAT’);

END; { END CASE}READLN;END.Vieát chöông trình phaân loaïi kí töï nhaäp töø baøn phím ,baèng caùch nhaäp kí töï töø baøn phím vaø cho bieát kí töï ñoù thuoäc loaïi kí töï naøoVar Ch: char;Begin

Writeln(‘nhan mot phim ‘);readln(ch);Case ch of

‘A’..’’Z’,’a’..’z’:writeln(‘Ki tu ‘);‘0’..’9’ :writeln(‘Ki so ‘);

‘+’,’-‘,’*’,’/’ :writeln(‘Toan tu ‘);elsewriteln(‘Ki tu dac biet‘);readln;

End.

End.Baøi taäp :

Case a<b ofTrue : writeln(a,’ nho hon ‘,b);false : writeln(a,’ Lon hon hay bang ‘,b);

end.2. Vieát chöông trình tính dieän tích caùc hình , cho hieån thò leân maøn hình menu choïn

TÍNH DIEÄN TÍCH CAÙC HÌNH1 .HÌNH VUOÂNG2.HÌNH CHÖÕ NHAÄT3.HÌNH TAN GIAÙC

Choïn 1,2,3Neáu nhaâp vaøo 1,2,3 thì yeâu caàu nhaäp vaøo töông öùng kích thöôùc roài in ra dieän tích

Vd : nhap vao moät soá coù 4 chöõ soá xuaát ra döôùi dang chöõ program vd;uses crt;var i,a,b1,b2,b3,b4,bk2,bk3:integer;a1,a2,a3,a4:string[20];begin write(' nhap vao so a ');readln(a);

Bieân soaïn : Tröông vaên Tuyeán 19

Page 20: Pascal 1

GIAÙO TRÌNH PASCAL Trang 20TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG b1:=a div 1000; bk2:=a mod 1000; b2:=bk2 div 100; bk3:=bk2 mod 100; b3:=bk3 div 10; b4:=bk3 mod 10; case b1 of 1:a1:='Mot ngan '; 2:a1:='Hai ngan '; 3:a1:='Ba ngan '; 4:a1:='Bon ngan '; 5:a1:='Nam ngan '; 6:a1:='Sau ngan '; 7:a1:='Bay ngan '; 8:a1:='Tam ngan '; 9:a1:='Chin ngan '; end; case b2 of 0:a2:='khong tram'; 1:a2:='Mot tram '; 2:a2:='Hai tram '; 3:a2:='Ba tram '; 4:a2:='Bon tram '; 5:a2:='Nam tram '; 6:a2:='Sau tram '; 7:a2:='Bay tram '; 8:a2:='Tam tram '; 9:a2:='Chin tram '; end; case b3 of 0:a3:=' '; 1:a3:='muoi '; 2:a3:='hai muoi '; 3:a3:='Ba muoi '; 4:a3:='Bon muoi '; 5:a3:='Nam muoi '; 6:a3:='Sau muoi '; 7:a3:='Bay muoi '; 8:a3:='Tam muoi '; 9:a3:='Chin muoi '; end; case b4 of 0:a4:='chan '; 1:a4:='mot '; 2:a4:='hai '; 3:a4:='Ba '; 4:a4:='Bon ';

Page 21: Pascal 1

GIAÙO TRÌNH PASCAL Trang 21TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong 5:a4:='lam '; 6:a4:='Sau '; 7:a4:='Bay '; 8:a4:='Tam '; 9:a4:='Chin ';

end;

writeln(a1,a2,a3,a4); readln;end.

CAÂU TRUÙC LAËP :1)Ñònh nghóa : voøng laëp laø moät caáu truùc thöïc hieän laëp ñi laëp laïi höõu haïn hay voâ haïn laàn a) Caáu Truùc Laëp WHILE DOcuù phaùp:

while <kdk A > do khoái leän Syù nghóa : trong khi khoái leän A laø True thöïc hieän khoái leänh S thoaùt ra khoûi voøng laëp khi ñieàu kieän A laø false

EX: WHILE COØN SOÁNG BEGINAÊN SAÙNGAÊN TRÖA…..END;

VÍ DUÏ :nhaäp vaøo soá töï nhieân N tính caùc toång caùc chöõ soá cuûa noùVí duï n=12356 => toång S=17B1: 12356 :10 ñöôïc 1235 dö 6 1235 :10 ñöôïc 123 dö 5

123 :10 ñöôïc 12 dö 312 :10 ñöôïc 1 dö 2

Bieân soaïn : Tröông vaên Tuyeán 21

A

S;

TRUE

FALSE

THOAÙT

s

Page 22: Pascal 1

GIAÙO TRÌNH PASCAL Trang 22TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGB3: nhaäp N

s:=0;trong khi n<>0 thöïc hieän

s:=s+n mod 10n:= n div 10cuoái whilexuaát S

B4:program vd;var n,s :word;beginwrite ('Nhaäp n=');readln(n);s:=0;while n<>0 do

begin s:=S+n mod 10n:=n div 10

end;write(S)

vd : Tính toång : s=1+2+3+4+..+nB1: Vôùi n laø soá nhaâp vaøo nguyeân ví duï n=6 => s=1+2+3+4+.5+6=21B3: Nhaäp n

s:=0;I:=1;Trong khi I<=n thöïc hieän S:=s+I;I:=I+1;Cuoái while Xuaát s

PROGRAM WHILE2;VAR N,S,I:WORD;BEGINWRITE('NHAP N ');READLN(N);S:=0;I:=1;WHILE I<=N DO BEGIN S:=S+I; I:=I+1; END; WRITELN('TONG N SO TU NHIEN LA :',S); READLN END.

---------end-------

Page 23: Pascal 1

GIAÙO TRÌNH PASCAL Trang 23TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong{Viet chuong trinh thuc hien nhieu lan cong viec sau :Nhap tu ban phim mot so thuc .xuat ra man hinh tri tuyet doi cua no .Chuong trinh ket thuc khi a la 0.Cho biet co bao nhieu so khac 0 da nhap}program bt2;vara:real;dem:byte;begindem:=0;write('Nhap so a:');readln(a);while a<>0 do begin dem:=dem+1; write('Gia tri tuyet doi cua a la:',a:5:2,' la :',abs(a):4:2); write('Nhap so a:');readln(a); end; write('co:',dem,' so khac 0 da nhap '); readln; end.

{*tinh tong 1+1/2+1/3+...+1/N*}program tinh_tong;var I,N:INTEGER;A:REAL;BEGINWRITE('NHAP N ');READLN(N);A:=0;I:=1;WHILE(I<=N) DO BEGIN A:=A+1/I; I:=I+1; END; WRITELN('TONG LA :',A:0:4); READLN; END.---------------end-----------{Viet chuong trinh thuc hien Tinh tong S=1x2+2x3+3x4+...+(n-1)xn :}program TT;vars,i,n:integer;OK:char;begin

Bieân soaïn : Tröông vaên Tuyeán 23

Page 24: Pascal 1

GIAÙO TRÌNH PASCAL Trang 24TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

while ok<>'N' DO BEGIN OK:='Y'; s:=0; i:=2; write('Nhap n:');readln(n); while i<=n+1 do begin s:=s+i*(i-1); i:=i+1; end; writeLN('Tong s la:',s); WRITELN('BAN CO TIEP TUC (Y/N ?)');READLN(OK); OK:=UPCASE(OK); IF OK='N' THEN EXIT; END; readln; end.**{Viet chuong trinh thuc hien Tinh tong S=1-2+1/3-1/4+...+(-1)^n-1.n :}program TT;vari,n:integer;s:real;OK:char;begin

while ok<>'N' DO BEGIN OK:='Y'; s:=0; i:=1; write('Nhap n:');readln(n); while i<=n do begin if i mod 2=0 then begin s:=s-1/i; i:=i+1; end; else begin s:=s+1/i; i:=i+1;

Page 25: Pascal 1

GIAÙO TRÌNH PASCAL Trang 25TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong end; end;

writeLN('Tong s la:',s:5:2); WRITELN('BAN CO TIEP TUC (Y/N ?)');READLN(OK); OK:=UPCASE(OK); IF OK='N' THEN EXIT; END; readln; end.-------BT: Nhaäp vaøo 2 soá nguyeân döông a,b >tìm öôùc soá chung lôùn nhaát cuûa a,bUscln(a,b) a chia heát cho c ,b chia heát cho c

C laø uscln(a,b)BSCLN(A,B)=A*B DIV USCLN(A,B){NHAP VAO 2 SO NGUYEN DUONG A,B TIM USCLN CUA A,B:}program USCLN;vara,b,i,X:integer;OK:char;

begin OK:='Y'; WHILE OK<> 'N' DO BEGIN {********************} write('Nhap a,b:');readln(a,b); X:=a*b; while a<>b do begin if a>b then a:=a-b else b:=b-a; end; writeLN(a,' - ',b); writeln('uscln(a,b)= ',a); writeln('BSCNN(a,b)= ',X DIV a); {*****************************} WRITE('BAN CO TIEP TUC (Y/N?)');READLN(OK); IF OK ='K' THEN EXIT; END; readln; end.********

Bieân soaïn : Tröông vaên Tuyeán 25

Page 26: Pascal 1

GIAÙO TRÌNH PASCAL Trang 26TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG{-----viet chuong trinh tinh chu vi va dien tich duong tron co su dung whileco ban kinh R nhap tu ban phim1.Tim loi cua chuong trinh------------}program dthinhtron;const PI=3.14;var R,CV,DT:real;chon :char;begin Writeln('1.Tinh dien tich hinh tron '); Writeln('2.Tinh chu vi hinh tron '); Writeln('1.nhap ban kinh hinh tron ');readln(R); Writeln('Chon mot trong hai so :');readln(chon); if chon='1' then BEGIN DT:=PI*R*R;

Writeln('Dien tich hinh tron ban kinh :',R:5:2,'LA :',DT:5:2); ENDelse if chon='2' then begin CV:=2*PI*R; Writeln('CHU VI hinh tron ban kinh :',R:5:2,'LA :',DT:5:2); END else Writeln('CHUONG TRINH KHONG LAM GI '); READLN END.-----------------end-----------------

{----Viet chuong trinh lam viec nhieu lan nhu mot may tinh bo tuiNhap hai so x,y;Hoi toan tu chon : +,-,*,/;neu la dau ! thi ket thuc--1.Tim va sua lai nhung diem sai cua chuong trinh ---------------------}program bt;var x,y,kq :real; chon :char;begin write('Nhap hai so thuc x,y :');readln(x,y); write('+.Tinh Tong '); write('-.Tinh Hieu');

Page 27: Pascal 1

GIAÙO TRÌNH PASCAL Trang 27TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong write('*.Tinh nhan'); write('/.Tinh Thuong'); write('.Ban chon Toan tu nao ');Readln(chon); while chon<>'!'do begin case chon of '+':kq:=x+y; '-':kq:=x-y; '*':kq:=x*y; '/':begin if y<>0 then kq:=x/y; end; end;{ end of case} writeln(x:5,chon,y:5,'=',kq:5:2); write('.Ban chon Toan tu nao ');Readln(chon); end end.----------------end-------------ví duï laäp trình tính toång 1/2+1/3+…+1/n+…cho tôùi khi gaëp soá haïng nhoû hôn 0.0001 thì döøng laïi program Tong;varI: integer;S,t:real;BeginI:=2;S:=0;T:=1/2;while T>=0.0001 do

begin s:=s+t;I:=I+1;T:=1/I;

End;Write ('Tong baèng s=',s:8:2);Readln;

End.*****ví duï laäp trình tính toång 1/1.2+1/2.3+…+1/n.(n-1)+…cho tôùi khi gaëp soá haïng nhoû hôn 0.0004 thì döøng laïi program Tongs;varI: integer;S,t:real;BeginI:=1;

Bieân soaïn : Tröông vaên Tuyeán 27

Page 28: Pascal 1

GIAÙO TRÌNH PASCAL Trang 28TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGS:=0;T:=1/2;while T>=0.0004 do

begin s:=s+t;I:=I+1;T:=1/I*(I+1);

End;Write ('Tong baèng s=',s:8:2);Readln;

End.****chuù yù : voøng laëp while …do cuõng coù theå duøng cho baøi toaùn coù böôùc laëp xaùc ñònhví duï laäp trình tính toång 1/2+1/3+…+1/n+…n tuyø yù program Tong;varI: integer;S,t:real;BeginWrite ('nhaäp n =');readln(n);I:=1;S:=0;

while I<=n do begin

s:=s+1/i;I:=I+1;

End;Write ('Tong baèng s=',s:8:2);Readln;

{ Viet chuong trinh tao mot mat khau (password) .Chi khi nao go dung mat khau thi may moi cho chay chuong trinh tiep}program bt;var mk:char;so,tong:integer;dem:byte;tb:real;begin mk:=' '; writeln('-Ban go vao mat khau -'); while mk<>'a' do begin

Page 29: Pascal 1

GIAÙO TRÌNH PASCAL Trang 29TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong writeln('ban go vao mat khau ');readln(mk); end; writeln; writeln('TINH TRUNG BINH CONG ');

SO:=1; DEM:=0; TONG:=0; WHILE SO<>0 DO BEGIN WRITE(' NHAP VAO SO NGUYEN (so 0 de dung)'); readln(so); if so<>0 then tong:=tong +so; dem:=dem+1; end; tb:=tong / (dem-1); writeln; write('trung binh cua ',(dem-1),'so vua nhap la :',tb:6:2); writeln; writeln('bam enter de cham dut'); readln; end.

readln;end.

CAÁU TRUÙC LAËP FOR DOCUÙ PHAÙP : 1. For Bieán :=Soá1 To Soá2 Do Khoái Leänh S;( Soá1<Soá2 )2. For Bieán :=Soá1 Downto Soá2 Do Khoái Leänh S;(Soá 1>Soá2)Bieán soá 1 hoaëc soá 2 laø kieåu nguyeân hoaëc kí töïtrong chöông trình 1 bieán töï ñoäng taêng leân 1 trong chöông trình 2 bieán töï ñoäng giaûm ñi 1 Chuù yù : chöông trình FOR DO chæ ñöôïc thöïc hieän khi bieát ñöôïc soá laàn laëp S=1+2+3 +….. +NGIAÛI : Chöông trình coù theå vieát nhö sau :S:=0;For I:=1 to n doS:=s+1;

Bieân soaïn : Tröông vaên Tuyeán 29

Page 30: Pascal 1

GIAÙO TRÌNH PASCAL Trang 30TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGXuaát s;Bt : Laäp trình tính toång 20=> 1000Program tong;Var I,s : integer;BeginS:=0;For I:=20 to 1000 do S:=s+I(hoaëc for I:=1000 downto 20 do s:=s+I;)write ('tong s=',s);readln;end.Ví duï 2:Laäp trình tính toång 1+1/2+1/3+…….+1/n vôùi n tuyø yù Program tongs;Var I,n :integer;S: real;Begin Write('nhaäp n ='); readln (n);S:=0For I:=1 to n do s:=s+1/I;Write('Giaù trò toång S :=',s:8:2);End.

Bt: laäp trình vieát 2 doøng caùc chöõ caùi hoa vaø thöôøng töø A->Z ra maøn hình vôùi khoaûng caùch moåi chöõ chieám hai choå ,sau doù laø hai doøng troáng roài ñeán hai chöõ caùi vaø chöõ thöôøng theo thöù töï ngöôïc laïi

A B C D……X Y Za b c d……x y z

ZY X………………Az y x……………… a

program INCHU;VAR CH: CHAR;

BEGINWRITELN;

FOR CH:='A' TO 'Z' DO WRITE(CH:2);WRITELN;FOR CH:='a' DOWNTO 'z' DO WRITE(CH:2);

Page 31: Pascal 1

GIAÙO TRÌNH PASCAL Trang 31TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongWRITELN;WRITELN;FOR CH:='Z' DOWNTO 'A' DO WRITE(CH:2);FOR CH:='z' DOWNTO 'a' DO WRITE(CH:2);WRITELN;READLN;END

Ví duï : vieát chöông trình in baûng maõ ASCII ra maøn hình ,döøng maøn hình töøng trang moätVar I: byteBegin

For I:=0 to 255 doBegin

Writeln(I,’-‘,chr(I));If (I+1) mod 24 =0 thenBegin

Write(‘Nhan enter ñeå tiep tuc ‘);Readln;

End;End;Readln;End.Vieát chöông trình tính giai thöøa cuûa moät soá nguyeânVarN,I:integer;GT : longint;Begin

Write(‘TINH GIAI THUA CUA MOT SO NGUYEN ‘);GT:=1;FOR I:=1 TO N DOGT:=GT*I;WriteLN(“GIAI THUA CUA ‘,N,’LA ‘,GT);READLN;

End.

Ví duï : Cho i,j laø caùc soá thoaû maõn ñieàu kieän 1<=I<=5 ,I<=j<=8;Laäp trình tính toång i+jProgram inso;Vari,j,k : integer;Begin

For I:=1 to 5 do For j:=I to 8 do

Bieân soaïn : Tröông vaên Tuyeán 31

Page 32: Pascal 1

GIAÙO TRÌNH PASCAL Trang 32TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

Begin k:=I+jwrite (k:4);

end;end.--------------program giaithua;var gt,n:longint;i:byte;OK:CHAR;begin while ok<>'N' do begin write('nhap n :');readln(n); gt:=1; for i:=2 to n do gt:=gt*i; write('n!=',gt); write('CO NHAP Y/N?');READLN(OK); OK:=UPCASE(OK); END; readln; end.{viet chuong trinh ve tam giac * * * ***** }program ve_tam_giac ;uses crt;var cao,i:byte;tl:char;beginrepeatclrscr; writeln('VE TAM GIAC RONG '); writeln('--------------------------------------- '); writeln('nhap chieu cao cua tam giac ');readln(cao); writeln('*':cao); for i:=2 to cao-1 do writeln('*':cao-i+1,'*':2*i-2); for i:=1 to 2*cao-1 do write('*'); writeln; writeln; writeln('tuyen','phuoc'); writeln('+Co nhap nua khong +');readln(tl); until upcase(tl)='K';

Page 33: Pascal 1

GIAÙO TRÌNH PASCAL Trang 33TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong end.Vieát chöông trình tính daân soá thaønh phoá H Sau 5 naêm nöõa ,bieát raèng daân soá hieän nay laø 5.000.000 ,tyû leä taêng daân soá haèng naêm laø 1.5%Program Dan_so;Var

i:Byte; sodan:LongInt;Begin

Writeln('TINH DAN SO SAU 5 NAM'); Writeln('---------------------'); sodan:=5000000; Writeln('-So dan hien nay = ',sodan); Writeln('-Ty le tang dan so hang nam = 1.5%'); Writeln; Writeln('So dan tang tung nam trong 5 nam toi la:'); For i:=1 To 5 Do Begin sodan:=round(sodan * 1.015); Writeln('-Nam thu ',i,' so dan la: ',sodan,' nguoi'); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); ReadlnEnd.Vieát chöông trình tìm caùc soá nguyeân a,b,c,d khaùc nhau trong khoaûng töø 0 ñeán 10 thoaû maõn ñieàu kieän a*d*d=b*c*c*cProgram Tim_cac_so_nguyen;Var

a,b,c,d:Integer; khac:Boolean;Begin

Writeln('TIM CAC SO NGUYEN KHAC NHAU'); Writeln('---------------------------'); For a:=2 To 10 Do For b:=2 To 10 do For c:=2 To 10 Do For d:=2 To 10 Do Begin khac:=(a<>b) And (a<>c) And (a<>d) And (b<>c) And (b<>d) And (c<>d); If khac And (a*d*d=b*c*c*c) Then Writeln(a,'*',d,'*',d,' = ',b,'*',c,'*',c,'*',c); End; Writeln;

Bieân soaïn : Tröông vaên Tuyeán 33

Page 34: Pascal 1

GIAÙO TRÌNH PASCAL Trang 34TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG Writeln(' Bam phim <Enter> de ket thuc'); ReadlnEnd.***vieát chöông trình tìm nhöõng soá a,b,c thoaû maõn ñieàu kieän : a2+b2=k2 (1<=a,b<=100)program bt;var a,b,k,dem:integer;begindem:=0;for a:=1 to 50 do for b:=1 to 50 do for k:=2 to 50 do if a*a+b*b=k*k then begin dem:=dem+1; if dem=20 then begin dem:=0 ; write('nhan enter ');readln;end; writeln('a=',a,'b=',b,'=',k*k); end;

readln;

end.

bt: vieát chöông trình giaûi baøi toaùn coå ñieån sau :traêm traâu traêm coûtraâu ñöùng aên naèmtraâu naêm aên batraâu giaø aên moäthoûi moät loaïi traâu coù bao nhieâu conProgram Tram_trau;Var

dung,nam,gia,co,trau:Integer;Begin

Writeln('BAI TOAN CO DIEN'); Writeln('Tram trau tram co'); Writeln('Trau dung an 5'); Writeln('Trau nam an 3'); Writeln('Ba trau gia an 1'); Writeln('----------------'); Writeln(' Bai toan nay co cac loi giai sau'); For dung:=0 To 20 Do For nam:=0 To 33-dung Do For gia:=0 To (100-(dung+nam)) Do

Page 35: Pascal 1

GIAÙO TRÌNH PASCAL Trang 35TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong Begin co:=5*dung+3*nam+(gia Div 3); trau:=dung+nam+gia; If (gia Mod 3 =0) And (trau=100) And ( co=100) Then Writeln('-Trau dung ',dung,' con, -Trau nam ',nam,' con, -Trau gia ',gia,' con'); End; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); ReadlnEnd.

----

Caáu truùc Repeat …until Daïng leänh repeat

…… <coâng vieäc>until <bthöùc ñieàu kieän>

sai

Giaûi thích :khi gaëp leänh naøy ñaàu tieân maùy thöïc hieän coâng vieäc ,thöïc hieän xong ñi kieåm tra bieåu thöùc neáu thaáy sai thì maùy quay laïi coâng vieäc moät laàn nöõa ,roài quay laïi kieåm tra

Bieân soaïn : Tröông vaên Tuyeán 35

Bt ñk TRUE

Coâng

End;

Page 36: Pascal 1

GIAÙO TRÌNH PASCAL Trang 36TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGcöù nhö vaäy cho ñeán khi kieåm tra bieåu thöùc thaáy ñuùng thì nhaûy ra khoûi voøng laëpVí duï tính toång 1+1/2+… +1/n+..Cho ñeán khi gaëp soá haïng nhoû hôn 0.00001 thì döøng laïi program tongs;vari:integer;S,T:real;begini:=1;s:=0;repeats:=s+t;i:=i+1;t:=1/i;until t<=0.00001;writeln ('GT TONG S= :',S:6:2);READLN;END.CHUÙ YÙ : Giöõa hai voøng laëp treân coù söï khaùc nhau ôû voøng laëp DO…. WHILE thì maùy kieåm tra bieåu thöù thaáy ñuùng thì môùi thöïc hieän coâng vieäc coøn sai thì khpoâng thöïc hieän ,do ñoù coâng vieäc coù theå khoâng thöïc hieän laàn naøo nhöng ôû voøng laëp repeat … untilthöïc hieän coâng vieäc roài môùi kieåm tra ,neân coâng vieäc phaûi thöïc hieän ít nhaát moät laàn Ví duï 2: Baïn coù 10.000ñ ñem gôûi ngaân haøng vôùi laõi xuaát 0.8% thaùng .sau moåi thaùng tieàn laõi ñöôïc nhaäp vaøo ñeå tính laõi xuaát thaùng sau.Vieát chöông trình ñeå tính xem sau moät naêm soá tieàn gôûi ngaân haøng cuûa baïn laø bao nhieâuprogram tienlai;{ Tinh tien lai mot nam}uses crt;var thang :integer; tien,lai:real;begin clrscr; write('Chuong trinh tinh tien goi ngan hang :'); write('nhap so tien dau tien :');readln(tien);

thang:=1; repeat lai:=tien*0.8/100; tien:=tien+lai; thang:=thang+1; until thang >12; write('Tien goi sau mot thang la: ',tien:8:2); readln;

Page 37: Pascal 1

GIAÙO TRÌNH PASCAL Trang 37TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong end.{viet chuong trinh nhap vao mot so nguyen in ra man hinh do co may ki so}program so_ki_so;varn,nI:longint;kyso:byte;begin writeln('SO KY SO TRONG MOT SO NGUYEN '); writeln('---------------------------- '); writeln('Nhap vao mot so nguyen '); readln(n); nI:=n; kyso:=0; repeat N:=n DIV 10; inc(kyso); until (N=0); writeln('+so ',nI,' co',kyso,'ky so'); writeln; writeln('Bam enter de ket thuc '); readln;end.

{viet chuong trinh nhap vao mot so nguyen in ra man hinh do co may ki so}program so_ki_so;varn,nI:longint;kyso:byte;begin writeln('SO KY SO TRONG MOT SO NGUYEN '); writeln('---------------------------- '); writeln('Nhap vao mot so nguyen '); readln(n); nI:=n; kyso:=0; repeat N:=n DIV 10; inc(kyso); until (N=0);

Bieân soaïn : Tröông vaên Tuyeán 37

Page 38: Pascal 1

GIAÙO TRÌNH PASCAL Trang 38TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG writeln('+so ',nI,' co',kyso,'ky so'); writeln; writeln('Bam enter de ket thuc '); readln;end.Ex: Laäp chöông trình yeâu caàu vaøo ñuùng maät khaåu laø “phuong “ thì môùi thoaùt khoûi chöông trình program matkhau;uses crt;var mk:string[6];beginrepeatwrite('Vao mat khau ');readln(mk);until mk='phuong';write('ban da vao dung mat khau ');delay(2000);end.Ví duï 2:Tính caên baäc hai cuûa moät soá T döông theo coâng thöùc xaáp xæ Xn=(T/Xn-1+Xn-1)/2Giaù trò xaáp xæ ban ñaàu laø X0

Var t,x0,x,r:real;program canbachai;var t,x0,x,r:real;beginwhile ok<>'n' dowrite('Vao so can tinh can');readln(t);write('vao so xap xi ban dau :');readln(x0);repeatx:=(t/x0+x0)/2;r:=x0;x0:=x;until abs(x-r) < 0.0001;write('can bac hai la :',x0:13:5);ok:=uppercase(ok);write('co tinh nua khong ');readln(ok)end;end.BT_03_06 : HAY LAÄP chöông trình tính maõ ASCII cuûa moä kí töï

PROGRAM MA_ASCII;VAR KYTU,tl:char;begin repeat writeln(' TIM MA ASCII CUA KY TU '); WRITELN('-------------------------'); WRITE('Nhap vao mot ky tu ');readln(kytu); write(' Ma Ascii cua Ky tu la',kytu,' la :',ord(kytu));

Page 39: Pascal 1

GIAÙO TRÌNH PASCAL Trang 39TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong writeln(' co nhap nua khong ');readln(tl) until (tl='k')or(tl='K');end.Bt_03_07;

Ví duï : Laäp trình bieán baøn phím thaønh ñaøn piano vôùi qui ñònh aán phím d phaùt ra noát do,phím r phat ra noát reâ aán phím ~ thì keát thuùcprogram doremi;uses crt;var ch:char;beginclrscr;write('d:do r:re m:mi p:pha s:sol l:la x:xi ');write('q:docao w:re cao e:mi cao ~ : ket huc ');repeatch:=readkey;case ch of'd':begin nosound;sound(262);end;'r':begin nosound;sound(294);end;'m':begin nosound;sound(330);end;'s':begin nosound;sound(349);end;'l':begin nosound;sound(392);end;'x':begin nosound;sound(440);end;'q':begin nosound;sound(523);end;'w':begin nosound;sound(587);end;'e':begin nosound;sound(659);end;end;until ch='~';nosound;end.

Vieát chöông trình laëp ñi laëp laïi caùc coâng vieäc sau :-Nhap vaøo moät kí töï treân baøn phím-Neáu laø chöõ thöông thì in ra chính noù vaø chöõ hoa töông öùng-Neáu laø chöõ HOA thì in ra chính noù vaø chöõ thöông töông öùng-Neáu laø kí soá thì in ra chính noù.-Neáu laø moät kí töï ñieàu khieån thì keát thuùc chöông trình Program Nhap_ky_tu;Var

kytu:Char; thoat:Boolean;Begin

Writeln('NHAP VA IN KY TU, KY SO RA MAN HINH'); Writeln('-----------------------------------'); thoat:=False;

Bieân soaïn : Tröông vaên Tuyeán 39

Page 40: Pascal 1

GIAÙO TRÌNH PASCAL Trang 40TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG Repeat Write('-Nhap ky tu (bam ky tu dieu khien) de ket thuc: '); Readln(kytu); Case kytu Of 'A'..'Z':Writeln(kytu,' ,chu thuong tuong ung la: ',chr(ord(kytu)+32)); 'a'..'z':Writeln(kytu,' ,chu hoa tuong ung la: ',chr(ord(kytu)-32)); '0'..'9':Writeln(kytu); Else thoat:=True; End; Until thoat; Writeln; Writeln(' Bam phim <Enter> de ket thuc'); ReadlnEnd.**

Program Nhap_diem;Var

toan,tong,tb:Real; hs:Byte; tiep:Char;Begin

Writeln('NHAP DIEM MON TOAN VA TINH DIEM TRUNG BINH CUA LOP'); Writeln('--------------------------------------------------');

hs:=1; tong:=0; tiep:='C'; Repeat Writeln('-Hoc sinh thu: ',hs); Write('-Diem mon Toan : '); Readln(toan); tong:=tong+toan; hs:=hs+1; Write(' -Nhap nua khong (C/K) '); Readln(tiep); Until Upcase(tiep)='K'; hs:=hs-1; tb:=tong/hs; Writeln('+Tong so diem = ',tong:5:2,' diem'); Writeln('+Tong so ca lop co = ',hs,' hoc sinh');

Page 41: Pascal 1

GIAÙO TRÌNH PASCAL Trang 41TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong Writeln('+Diem trung binh cua mon Toan= ',tb:5:2,' diem'); Writeln; Writeln(' Bam phim <Enter> de ket thuc'); ReadlnEnd.****

Haøm sound ñeå phaùt moät aâm thanh coù taàn soá n hertz cho tôùi khi gaëp haøm nosound (ngöøng phaùt aâm thanh )Voøng laëp REPEAT thöôøng ñöôïc duøng khi muoán thöïc hieän chöông trình nhieàu laàn theo yù muoán .maãu chöông trình nhö sau :VarTieptuc:char;…..beginrepeat..<cac lenh cua chuong trinh>write (‘co tiep tuc nua khong (C/K)?’);readln(tieptuc)until upcase(tieptuc)=’K’end.----Leänh nhaûy voâ ñieàu kieän :-Ñaây laø loaïi leänh ñôn giaûn cho pheùp chöông trình nhaûy voâ ñieàu kieän ñeán moät vò trí naøo ñoù trong chöông trình thoâng qua nhaõn (label )-Caùc nhaûn coù theå laø soá nguyeân hoaëc teân ñaõ ñöôïc khai baùo ôû ñaàu chöông trình ,caùc nhaûn caùch nhau daáu phaåy,chöông trình nhaûn ñöôïc caøi ôû vò trí thích hôïpleänh goto chæ cho pheùp nhaûy töø moät vò trí naøy tôùi moät vò trí khaùc trong thaân moät haøm hay moät thuû tuïc ,cho pheùp nhaûy töø trong moät voøng laëp ra ngoaøi;khoâng cho pheùp nhaûy töø ngoaøi vaøo moät haøm hay thuû tuïc ,khoâng cho pheùp nhaûy vaøo trong moät voøng laëp,khoâng cho pheùp nhayû töø ngoaøi vaøo trong moät khoái leänh .Baèng caùch nhaûy ngöôïc trôû laïi ,leänh goto cho pheùp taïo ñöôïc caùc chu trình nhö leänh for Ví duï : Tìm caùc soá nguyeân toá naèm giöõa hai soá nguyeân döông n1 vaø n2 ,hai soá naøy nhaäp töø baøn phímprogram nguyento;label 11,12;var i,j,n1,n2,tiep:integer;begin 11:write('Vao n1,n2=');readln(n1,n2); for i:=n1 to n2 do

Bieân soaïn : Tröông vaên Tuyeán 41

Page 42: Pascal 1

GIAÙO TRÌNH PASCAL Trang 42TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG beginfor j:=2 to i-1 do if (i mod j=0) then goto 12;write(i,' ');12:;end;writeln;write('ban co muon tiep tuc nua khong 1/0 ');readln(tiep); if tiep=1 then goto 11;end.----- ví duï:label k1,k2 ;vara,b:integer;beginreadln(a,b);if a=b then write ('a bang b') else

beginif a>b then goto k1 else goto k2;k1:write(' a lon hon b');k2:write(' a nho hon b ');

end;end. -- program inkitu;label 1;var ch:char;begin ch:='A'; 1: writeln(ch);ch:=succ(ch); if ch<='S' then goto 1; readln; end.--- program inkitu;var ch:char;begin ch:='A'; while ch<='S' do begin writeln(ch);ch:=succ(ch); end; readln; end.----program inkitu;var ch:char;

Page 43: Pascal 1

GIAÙO TRÌNH PASCAL Trang 43TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongbegin ch:='A'; repeat

writeln(ch);ch:=succ(ch); until ch='T'; readln; end.---program inkitu;var ch:char;begin ch:='A'; for ch='A' to 'Z' do

writeln(ch);ch:=succ(ch); readln; end.------

CAÙC KIEÅU DÖÕ LIEÄU CÔ BAÛN :i) KIEÅU VOÂ HÖÔÙNG VAØ MIEÀN CON :Kieåu mieàn con ñöôïc ñònh nghiõabaèng caùch chæ ra giaù trò nhoû nhaát vaø lôùn nhaát cuûa mieàn con naøycuù phaùp :type<Teân kieåu mieàn con>=<giaù trò nhoû nhaát >…<Giaù trò lôùn nhaát>;var bieán:kieåu mieàn conví duï : type

ngay=1..31;(kieåu lieân keát laø integer)ví duï:type

int=-128..128

Bieân soaïn : Tröông vaên Tuyeán 43

Page 44: Pascal 1

GIAÙO TRÌNH PASCAL Trang 44TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

var a:int;type

kytu=’A’…’Z’;(kieåu lieân keát laø char)II)Kieåu taäp hôïp :Moät taäp hôïp bao goàm moät soá ñoái töôïng naøo ñoù coù cuøng baûn chaát .Trong Pascal ñieàu ñoù coù nghóa laø coù cuøng moät moâ taû kieåu .Kieåu naøy ñöôïc goïi laø kieåu cô baûn .Kieåu cô baûn baét buoät phaûi laø moät kieåu voâ höôùng hay moät ñoaïn con vaø khoâng ñöôïc laø soá thöïc.Caùc ñoái töôïng naøy ñöôïc goïi laø phaàn töû cuûa taäp.Khaùi nieäm taäp hôïp trong ngoân ngöõ pascal gaén lieàn vôùi khaùi nieäm taäp hôïp trong toaùn hoïcÑeå moâ taû kieåu vaø khai baùo bieán kieåu taäp hôïp ,ngöôøita duøng töø khoaù set of theo sau laø caùc kieåu cô baûn T (kieåu caùc phaàn töû cuûa taäp)Thí duï:Ñònh nghiaõ kieåu tröôùc khia baùo bieán sau

TypeChu_cai=set of char;(*chöõ caùi *)Chu_so=set of 0..9 ;(*chöõ soá *)Ngay=(hai,ba,tö,nam,sau,bay,chunhat);So_N=0..32;Kieu_xe_dap=(thongnhat,Eska,Mifa,peugeot);Var

A,B,C:SET OF so_NXe:SET OF Kieu_xe_dapL:chu_cai;Ch:char(*char :taäp hôïp ñaõ ñöôïc ñònh nghóa tröôùc *)Ngay_trong_tuan:set of ngay;

Caùch thöù hai :Vöøa ñònh nghóa kieåu ,vöøa khai baùo bieán

Ví duï :So:set of 0..9;Ngay:set of 1..31;Chu:setof ‘A’..’Z’;KYTU:SET OF CHAR;

TYPETeân kieåu =set of <kieåu ñôn giaûn>Var

Teân bieán: teân kieåu;

Var Teân bieán: set of <kieåu ñôn giaûn>

Page 45: Pascal 1

GIAÙO TRÌNH PASCAL Trang 45TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongMAU :SET OF (xanh,tim,vang,trang,den);

Duøng kieåu döõ lieäu taäp hôïp nhaäp vao chöõ thöôøng xuaát ra maøn hình chöõ hoaPROGRAM TAPHOP;VAR a,b:set of 'A'..'Z';I,N:INTEGER;CH:CHAR;BEGIN Writeln('CACH THUC TAP XUAT KIEU DU LIEU TAP HOP '); WRITELN('---------------------------------------'); a:=[]; writeln('nhap so n ');readln(n); for i:=1 to n do begin write('nhap ki tu thu ',i:2,'=');readln(ch); ch:=upcase(ch); a:=a+[ch]; end; writeln; writeln(n,' chu hoa sap xep theo thu tu la '); writeln; for ch:='A' TO 'Z' DO IF CH IN A THEN WRITE(CH,';'); writeln; writeln; writeln('BAM PHIM ENTER DE KET THUC '); READLN;{viet chuong trinh in ra man hinh ao so nguyen ngau nhien khong am ,nho hon 100 va khong trung nhau }program so_ngau_nhien;

constn=100;type nguyen=set of 0..9; var a:nguyen; so,i,spt:integer;begin writeln('TIM 10 SO NGUYEN NGAU NHIEN KHONG AM :'); writeln('NHO HON KHONG TRUNG NHAU'); writeln('---------------------------'); SPT:=0; A:=[];

Bieân soaïn : Tröông vaên Tuyeán 45

Page 46: Pascal 1

GIAÙO TRÌNH PASCAL Trang 46TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG RANDOMIZE;

REPEAT SO:=RANDOM(100); IF NOT (SO IN A)THEN BEGIN A:=A+[SO]; SPT:=SPT+1; END; UNTIL SPT=10; writeln; writeln; writeln(' 10 SO NGAU NHIEN NHO HON 10 LA'); writeln; {GOTOXY(10,2);} FOR I:=0 TO 100 DO IF I IN A THEN WRITE(I,';'); writeln('bam phim enter de ket thuc '); readln;

end.{viet chuong trinh nhap mot so nguyen bat ky may se in ra co bao nhieu so hang }program so_so_hang;var thuong:set of 0..9; sodu:0..9; so,soluu,sohang:integer;begin writeln('SO SO HANG CUA MOT SO NGUYEN :'); writeln('-----------------------------'); writeln('Nhap so nguyen bat ky :');readln(so); soluu:=so; thuong:=[]; sohang:=0; repeat sodu:=so mod 10; if not (sodu in thuong) then sohang:=sohang+1 else begin sohang:=sohang+1; thuong:=thuong+[sodu]; end; so:=so div 10;

Page 47: Pascal 1

GIAÙO TRÌNH PASCAL Trang 47TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong

until so=0; writeln; writeln; writeln(' so luu',soluu,'co',sohang,'sohang'); writeln; writeln('bam phim enter de ket thuc '); readln;

end.

END.Viet chöông trình nhaäp moät daõy caùc phaàn töû nguyeân .Xuaát ra maøn hình caùc phaàn töû khaùc nhau cuûa daõyprogram xra_cac_pt_khac_nhau_of_mang;type taptrung=set of byte;vara:array[1..10] of byte;trung:taptrung;i,n:integer;beginwrite('nhap n so :');readln(n);for i:=1 to n do begin write('nhap phan tu a[',i,']= ');readln(n); end; trung:=[]; for i:=1 to n do if not (a[i] in trung ) then begin write(a[i]:2); trung:=trung+[a[i]]; end; readln(n); end.---program xra_cac_pt_khac_nhau_of_mang;type taptrung=set of byte;vara:array[1..100] of real;trung:taptrung;i,n,j:integer;beginwrite('nhap n so :');readln(n);

Bieân soaïn : Tröông vaên Tuyeán 47

Page 48: Pascal 1

GIAÙO TRÌNH PASCAL Trang 48TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGfor i:=1 to n do begin write('nhap phan tu a[',i,']= ');readln(a[i]); end; trung:=[]; for i:=1 to n do for j:=i+1 to n do if a[i]=a[j] then trung:=trung+[i];

write('Cac phan tu khong trung trong day nhap la :'); for i:=1 to n do if not (i in trung ) then write(a[i]:5:2);

readln(n); end.---

Vieát chöông trình nhaäp moät daõy caùc soá thöïc .Xuaát ra maøn hình caùc phaàn töû khaùc nhau cuûa daõy theo thöù töï taêng daànPROGRAM tt;type taptrung =set of byte;CONST M=100;VAR A: ARRAY[1..M] OF REAL;tam:real;I,N,j:INTEGER;trung:taptrung;BEGINWRITE('CHO BIET CHIEU DAI CUA DAY SE NHAP');READLN(N);WRITE('NHAP DAY SO NGUYEN TO CO DUNG N SO');FOR I:=1 TO N DObeginwrite('nhap a[',i,']=');READLN(A[I]);end;trung:=[];for i:=1 to n -1 do for j:=i+1 to n do if a[i]>=a[j] then begin tam:=a[i]; a[i]:=a[j+1]; a[j+1]:=tam; end; write('cac phan tu khac nhau cua day theo thu tu tang dan'); for i:=1 to n-1 do for j:=i+1 to n do

Page 49: Pascal 1

GIAÙO TRÌNH PASCAL Trang 49TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong if a[i]=a[j] then trung:=trung+[i]; for i:=1 to n do if not(i in trung) then begin write(a[i]:5:2); end;

READLN;END.*program xra_cac_pt_khac_nhau_of_mang;type taptrung=set of byte;vara:array[1..100] of real;trung:taptrung;i,n,j:integer;beginwrite('nhap n so :');readln(n);for i:=1 to n do begin write('nhap phan tu a[',i,']= ');readln(a[i]); end; trung:=[]; for i:=1 to n do for j:=i+1 to n do if a[i]=a[j] then trung:=trung+[i];

write('Cac phan tu khong trung trong day nhap la :'); for i:=1 to n do if not (i in trung ) then write(a[i]:5:2);

readln(n); end.---Duøng kieåu döõ lieäu taäp hôïp nhaäp vao chöõ thöôøng xuaát ra maøn hình chöõ hoaPROGRAM TAPHOP;VAR a,b:set of 'A'..'Z';I,N:INTEGER;CH:CHAR;BEGIN Writeln('CACH THUC TAP XUAT KIEU DU LIEU TAP HOP '); WRITELN('---------------------------------------'); a:=[]; writeln('nhap so n ');readln(n); for i:=1 to n do

Bieân soaïn : Tröông vaên Tuyeán 49

Page 50: Pascal 1

GIAÙO TRÌNH PASCAL Trang 50TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG begin write('nhap ki tu thu ',i:2,'=');readln(ch); ch:=upcase(ch); a:=a+[ch]; end; writeln; writeln(n,' chu hoa sap xep theo thu tu la '); writeln; for ch:='A' TO 'Z' DO IF CH IN A THEN WRITE(CH,';'); writeln; writeln; writeln('BAM PHIM ENTER DE KET THUC '); READLN;{viet chuong trinh in ra man hinh ao so nguyen ngau nhien khong am ,nho hon 100 va khong trung nhau }program so_ngau_nhien;

constn=100;type nguyen=set of 0..9; var a:nguyen; so,i,spt:integer;begin writeln('TIM 10 SO NGUYEN NGAU NHIEN KHONG AM :'); writeln('NHO HON KHONG TRUNG NHAU'); writeln('---------------------------'); SPT:=0; A:=[]; RANDOMIZE;

REPEAT SO:=RANDOM(100); IF NOT (SO IN A)THEN BEGIN A:=A+[SO]; SPT:=SPT+1; END; UNTIL SPT=10; writeln; writeln; writeln(' 10 SO NGAU NHIEN NHO HON 10 LA'); writeln; {GOTOXY(10,2);}

Page 51: Pascal 1

GIAÙO TRÌNH PASCAL Trang 51TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong FOR I:=0 TO 100 DO IF I IN A THEN WRITE(I,';'); writeln('bam phim enter de ket thuc '); readln;

end.{viet chuong trinh nhap mot so nguyen bat ky may se in ra co bao nhieu so hang }program so_so_hang;var thuong:set of 0..9; sodu:0..9; so,soluu,sohang:integer;begin writeln('SO SO HANG CUA MOT SO NGUYEN :'); writeln('-----------------------------'); writeln('Nhap so nguyen bat ky :');readln(so); soluu:=so; thuong:=[]; sohang:=0; repeat sodu:=so mod 10; if not (sodu in thuong) then sohang:=sohang+1 else begin sohang:=sohang+1; thuong:=thuong+[sodu]; end; so:=so div 10;

until so=0; writeln; writeln; writeln(' so luu',soluu,'co',sohang,'sohang'); writeln; writeln('bam phim enter de ket thuc '); readln;

end.

END.

Bieân soaïn : Tröông vaên Tuyeán 51

Page 52: Pascal 1

GIAÙO TRÌNH PASCAL Trang 52TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGViet chöông trình nhaäp moät daõy caùc phaàn töû nguyeân .Xuaát ra maøn hình caùc phaàn töû khaùc nhau cuûa daõyprogram xra_cac_pt_khac_nhau_of_mang;type taptrung=set of byte;vara:array[1..10] of byte;trung:taptrung;i,n:integer;beginwrite('nhap n so :');readln(n);for i:=1 to n do begin write('nhap phan tu a[',i,']= ');readln(n); end; trung:=[]; for i:=1 to n do if not (a[i] in trung ) then begin write(a[i]:2); trung:=trung+[a[i]]; end; readln(n); end.---program xra_cac_pt_khac_nhau_of_mang;type taptrung=set of byte;vara:array[1..100] of real;trung:taptrung;i,n,j:integer;beginwrite('nhap n so :');readln(n);for i:=1 to n do begin write('nhap phan tu a[',i,']= ');readln(a[i]); end; trung:=[]; for i:=1 to n do for j:=i+1 to n do if a[i]=a[j] then trung:=trung+[i];

write('Cac phan tu khong trung trong day nhap la :'); for i:=1 to n do if not (i in trung ) then write(a[i]:5:2);

Page 53: Pascal 1

GIAÙO TRÌNH PASCAL Trang 53TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong readln(n); end.---

Vieát chöông trình nhaäp moät daõy caùc soá thöïc .Xuaát ra maøn hình caùc phaàn töû khaùc nhau cuûa daõy theo thöù töï taêng daànPROGRAM tt;type taptrung =set of byte;CONST M=100;VAR A: ARRAY[1..M] OF REAL;tam:real;I,N,j:INTEGER;trung:taptrung;BEGINWRITE('CHO BIET CHIEU DAI CUA DAY SE NHAP');READLN(N);WRITE('NHAP DAY SO NGUYEN TO CO DUNG N SO');FOR I:=1 TO N DObeginwrite('nhap a[',i,']=');READLN(A[I]);end;trung:=[];for i:=1 to n -1 do for j:=i+1 to n do if a[i]>=a[j] then begin tam:=a[i]; a[i]:=a[j+1]; a[j+1]:=tam; end; write('cac phan tu khac nhau cua day theo thu tu tang dan'); for i:=1 to n-1 do for j:=i+1 to n do if a[i]=a[j] then trung:=trung+[i]; for i:=1 to n do if not(i in trung) then begin write(a[i]:5:2); end;

READLN;END.**{viet chuong trinh in ra man hinh ao so nguyen ngau nhien khong am ,nho hon 100 va khong trung nhau }

Bieân soaïn : Tröông vaên Tuyeán 53

Page 54: Pascal 1

GIAÙO TRÌNH PASCAL Trang 54TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGprogram so_ngau_nhien;

constn=100;type nguyen=set of 0..9; var a:nguyen; so,i,spt:integer;begin writeln('TIM 10 SO NGUYEN NGAU NHIEN KHONG AM :'); writeln('NHO HON KHONG TRUNG NHAU'); writeln('---------------------------'); SPT:=0; A:=[]; RANDOMIZE;

REPEAT SO:=RANDOM(100); IF NOT (SO IN A)THEN BEGIN A:=A+[SO]; SPT:=SPT+1; END; UNTIL SPT=10; writeln; writeln; writeln(' 10 SO NGAU NHIEN NHO HON 10 LA'); writeln; {GOTOXY(10,2);} FOR I:=0 TO 100 DO IF I IN A THEN WRITE(I,';'); writeln('bam phim enter de ket thuc '); readln;

end.****{viet chuong trinh nhap mot so nguyen bat ky may se in ra co bao nhieu so hang }program so_so_hang;var thuong:set of 0..9; sodu:0..9; so,soluu,sohang:integer;begin

Page 55: Pascal 1

GIAÙO TRÌNH PASCAL Trang 55TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong writeln('SO SO HANG CUA MOT SO NGUYEN :'); writeln('-----------------------------'); writeln('Nhap so nguyen bat ky :');readln(so); soluu:=so; thuong:=[]; sohang:=0; repeat sodu:=so mod 10; if not (sodu in thuong) then sohang:=sohang+1 else begin sohang:=sohang+1; thuong:=thuong+[sodu]; end; so:=so div 10;

until so=0; writeln; writeln; writeln(' so luu',soluu,'co',sohang,'sohang'); writeln; writeln('bam phim enter de ket thuc '); readln;

end.*.{viet chuong trinh nhap mot so nguyen bat ky may se in ra co bao nhieu so hang }program so_so_hang;var thuong:set of 0..9; sodu:0..9; so,soluu,sohang:integer;begin writeln('SO SO HANG CUA MOT SO NGUYEN :'); writeln('-----------------------------'); writeln('Nhap so nguyen bat ky :');readln(so); soluu:=so; thuong:=[]; sohang:=0; repeat sodu:=so mod 10; if not (sodu in thuong) then sohang:=sohang+1 else

Bieân soaïn : Tröông vaên Tuyeán 55

Page 56: Pascal 1

GIAÙO TRÌNH PASCAL Trang 56TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG begin sohang:=sohang+1; thuong:=thuong+[sodu]; end; so:=so div 10;

until so=0; writeln; writeln; writeln(' so luu',soluu,'co',sohang,'sohang'); writeln; writeln('bam phim enter de ket thuc '); readln;

end.**BT:1)VIET Chöông trình nhaäp vaøo caùc soá nguyeân in ra maøn hình caùc giaù trò khaùc nhau cuûa soá ñoù . Ví duï nhaäp vaøo 7 soá 2,3,2,10,6,5,3 ..thì chæ in ra 5 soá nhö sau 2,3,10,6,52) viet chuong trình nhaäp caùc phaàn töû laø kyù töï cho hai taäp hôïp A VAØ B sau ñoù thöïc hieän pheùp toaùn : Nhaân ,coäng ,tröø taäp hôïp .3) vieát chöông trình ñeám vaø in ra caùc phaàn töû cuûa moät taäp hôïp kyù töï4)Vieát chöông trìnhkieåm phieáu baàu cöû ban chaáp haønh chi ñoaøn thanh nieân coù noäi dung nhö sau :

-Danh saùch caùc öùng vieân coù 5 ngöôøi ,chæ baàu 3 ngöôøi

-Soá ngöôøi baàu cöû laù 100-Thoáng keâ soá phieáu baàu cuûa töng öùng cöû vieân vaø

soá phieáu baàu hôïp leä ( phieáu baàu hôïp leä laø phieáu baàu ñuùng 5 ngöôøi )giaûi :1) Program So_khac_nhau;CONST

M=100;TYPE

DaySo=Set of 0..255; DayNguyen=Array[1..M] Of Integer;Var

a:DayNguyen; i,n:Integer; x:DaySo;

Page 57: Pascal 1

GIAÙO TRÌNH PASCAL Trang 57TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongBegin

Writeln('IN CAC SO KHAC NHAU CUA DAY SO'); Writeln('------------------------------'); Repeat Write('Nhap bao nhieu so: '); Readln(n); Until N <= M; For i:=1 To N Do Begin Write('-Phan tu thu: ',i,' = '); Readln(a[i]); End; x:=[]; For i:=1 To N Do If Not (a[i] In x) Then Begin Write(a[i],', '); x:=x+[a[i]]; End; Writeln; Write(' Bam phim <Enter> de ket thuc '); ReadlnEnd.

2, Program Cac_phep_Toan;TYPE

KyTu=Set of Char;Var

a,b,Cong,Nhan,tru1,tru2:KyTu; p:Array[1..100] Of Char; m,n,i:Byte;Begin

Writeln('CAC PHEP TOAN TRONG TAP HOP'); Writeln('---------------------------'); a:=[]; b:=[]; Write('-So phan tu cua tap hop A= '); Readln(m); For i:=1 To M Do Begin Write(' -Phan tu A[',i,']= '); Readln(p[i]); a:=a + [p[i]]; End; Write('-So phan tu cua tap hop B= '); Readln(n); For i:=1 To N Do

Bieân soaïn : Tröông vaên Tuyeán 57

Page 58: Pascal 1

GIAÙO TRÌNH PASCAL Trang 58TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG Begin Write(' -Phan tu B[',i,']= '); Readln(p[i]); b:=b + [p[i]]; End; Nhan:=a * b; Writeln('A * B gom cac phan tu: '); For i:=0 To 255 Do If Char(i) In Nhan Then Write(Char(i),#32); Writeln; Cong:=a + b; Writeln('A + B gom cac phan tu: '); For i:=0 To 255 Do If Char(i) In Cong Then Write(Char(i),#32); { #32 cach ra mot khoang trong } Writeln;

Tru1:=a - b; Writeln('A - B gom cac phan tu: '); For i:=0 To 255 Do If Char(i) In Tru1 Then Write(Char(i),#32); Writeln;

Tru2:=b - a; Writeln('B - A gom cac phan tu: '); For i:=0 To 255 Do If Char(i) In Tru2 Then Write(Char(i),#32); Writeln; If A <= B Then Writeln('-Tap hop A nho hon tap hop B');

If B <= A Then Writeln('-Tap hop B nho hon tap hop A'); Writeln; Write(' Bam phim <Enter> de ket thuc '); ReadlnEnd.**3, Program Dem_phan_tu;Var

kytu:'A'..'z';taphop: Set of 'A'..'z';n,i,spt:Byte;

BeginWriteln('DEM SO PHAN TU CUA TAP HOP');

Writeln('--------------------------'); Write('-Nhap bao nhieu chu: ');

Page 59: Pascal 1

GIAÙO TRÌNH PASCAL Trang 59TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong Readln(n); taphop:=[]; For i:=1 To N Do Begin Write('-Ky tu thu ',i,' la: '); Readln(kytu); taphop:=taphop + [Kytu]; End; For Kytu:= 'A' To 'z' Do If Kytu In Taphop Then Inc(spt); Write('Tap hop gom co ',spt,' phan tu la: '); For Kytu:='A' To 'z' Do If Kytu In Taphop then Write(Kytu,#32); Writeln; Writeln; Write(' Bam phim <Enter> de ket thuc '); ReadlnEnd.

4)Program Bau_cu;CONST

Max=100; ucv=5; tke:Array[1..5] Of Word =(0,0,0,0,0);TYPE

stt=1..ucv; phieubau=Set of stt;Var

Phieu:Array[1..Max] Of Phieubau; n,n1,i:1..Max; j:1..ucv; Ch:Char; Bau:0..5;Begin

Writeln('KIEM PHIEU BAU CU CHI DOAN TN'); Writeln('-----------------------------'); Write('-Cho biet so nguoi tham gia bau (1..100): '); Readln(n); {Gan tat ca cac tap hop bang rong} FillChar(Phieu, Sizeof(Phieu), #0); {Nhap phieu bau cua tat ca cac cu tri} For i:=1 To N Do Begin Write('-Cu tri thu ',i); For j:=1 To ucv Do

Bieân soaïn : Tröông vaên Tuyeán 59

Page 60: Pascal 1

GIAÙO TRÌNH PASCAL Trang 60TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG Begin Write(' +Chon ung cu vien thu ',j,' (C/K) ? '); Readln(Ch); Ch:=Upcase(Ch); If Ch = 'C' Then Phieu[i]:=Phieu[i] + [j]; End; End; {Kiem tra phieu hop le } n1:=n; For i:=1 To n Do Begin Bau:=0; For j:=1 To ucv Do If j In Phieu[i] Then Inc(Bau); If Bau <> 3 then Begin Phieu[i]:=[]; Dec(n1); End; End; {Kiem phieu}

For i:= 1 To n Do For j:=1 To ucv Do If j IN Phieu[i] Then Inc(Tke[j]); Writeln; Writeln(' KET QUA KIEM PHIEU'); Writeln('-So phieu hop le: ',n1,' phieu'); For j:=1 To ucv Do Writeln('-So phieu chon ung cu vien thu: ',j,' la ',Tke[j]); Writeln; Write(' Bam phim <Enter> de ket thuc '); ReadlnEnd.

III) Kieåu döõ lieäu maõng:Ñònh nghóa : Maõng laø taäp hôïp caùc thaønh phaàn a1,a2…an coù cuøng caáu truùc coù cuøng teân,ñöôïc phaân bieät thoâng qua caùc chæ soá -Ta chæ chuù yù ñeán chæ soá vaø giaù trò thaønh phaàn cuûa maõng coù chæ soá ñoù

Page 61: Pascal 1

GIAÙO TRÌNH PASCAL Trang 61TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong-caùc chæ soá ñöôïc ñaùnh soá lieân tieáp nghóa laø chæ soá thöù I tieáp theo laø I+1coâng duïng cuûa maõng :löu tröõ moät daõy soá lieäu coù cuøng tính chaát a) Caùch khai baùo :var tenmang:array[soá 1..soá 2] of kieåu döõ lieäukieåu döõ lieäu coù theå laø nguyeân, thöïc,kí töï ,chuoåi,luaän lyù hay laø caùc kieåu do ngöôøi duøng ñaëtsoá 1 & soá 2 phaûi laø caùc haèng soá nguyeân hay kí töï vôùi ñieàu kieän soá 1 <= soá 2ví duï var u:array[0..1] of integer;ví duï :typemanga=array[char] of real;mangb=array[-10..10] of boolean;mangc=array[1..n] of integer;b)Caùch truy xuaát vaø nhaäp soá lieäu treân maûng :Nguyen Anh Tuaán Tuù Duõng1 2 3 4 5var men:array[1..40] of stringa)Caùch truy xuaát :moåi phaàn töû cuûa maûng ñöôïc truy xuaát thoâng qua teân vaø chæ soá caùc chæ soá phaûi thuoäc phaïm vi khai baùocuù phaùp truy xuaát nhö sau :teân maûng [chæ soá]b)Caùch xuaát :xuaát giaù trò moät thaønh phaàn xaùc ñònh cuûa maõngcuù phaùp :write

(tenmang[chæ soá])writeln

c)Xuaát giaù trò caùc thaønh phaàn trong maõng ta phaûi duøng moät voøng laëp ñeå xuaát töøng phaàn töû cuûa maõng.Caùch thöôøng duøng laø :

for I:=1 to soá phaàn töû maûng dowrite(tenmang[I]

d)Nhaäp giaù trò cho moät phaàn töû cuûa maõngcuù phaùp :readln(tenmang [chæ soá])-Nhaäp giaù trò cho caùc phaàn töû cuûa maõng ta phaûi duøng voøng laëp ñeå nhaäp töøng phaàn töû cuûa maõng duøng voøng laëp :for I:=1 to soá phaàn töû cuûa maõng doreadln(tenmang[I])soá phaàn töû toái ña cuûa maõng laø soá 2 –soá 1 +1 phaàn töû

Bieân soaïn : Tröông vaên Tuyeán 61

Page 62: Pascal 1

GIAÙO TRÌNH PASCAL Trang 62TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGta coù theå söû duïng soá phaàn töû cuûa maõng ít hôn soá phaàn töû toái ña naøy ví duï :maûng B coù 5 giaù trò döông ñaùnh vaøo töø baøn phím laäp trình nhaäp vaøo vaø in ra maøn hình program nhapB;var i:integer;B:array[1..5] of integer;beginwrite('NHAP DU LIEU CHO MANG B');for i:=1 to 5 do begin write('B[',i,'] =');readln(B[i]); end;for i:=1 to 5 do write(B[i] ); readln; end.

--hay nhap vao maùy 100 soá thöïc baát kyø roài tính giaù trò trung bình cuûa chuùng program tbinh;vari:integer;A:array[1..10] of real;s:real;begin for i:=1 to 10 do begin write('A[',i,']=');readln(A[i]); end; s:=0; for i:=1 to 10 do s:=s+A[i]; writeln('GIA TRI TRUNG BINH LA :',S/10:0:2); READLN; END.--ví duï : Baøi toaùn tìm giaù trò lôùn nhaát (beù nhaát ) cho daõy soá a1,a2,a3,..,an laäp trình tìm giaù trò lôùn nhaát program max;varn,i:integer;A:array[1..100] of real;begin

Page 63: Pascal 1

GIAÙO TRÌNH PASCAL Trang 63TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong WRITE('CHO GIA TRI N=');READLN(N); for i:=1 to n do begin write('A[',i,']=');readln(A[i]); end; MAX:=A[i]; for i:=1 to n do if max<A[i] then max:=A[I]; writeln('GIA lon nhat LA :',max:6:2); READLN; END.---{go vao ban phim 100 ki tu hay dem so lan xuat hien cua cac ki tu la bao nhieu}program demkitu;vari:integer;ch:char;DM:ARRAY['A'..'Z'] of integer;beginfor ch:='A' to 'Z' do dm[ch]:=0;for i:=1 to 10 dobeginreadln(ch);CH:=UPCASE(CH);DM[CH]:=DM[CH]+1;END;for ch:='A' to 'Z' doIF dm[ch]>0 thenwrite('so ki tu',ch,'=',DM[CH]);READLN;END.--{BAI TOAN SAP XEP :gia su co day du lieu (so nguyen,thuc,ki tu) sap xep laitheo thu tu( tang,giam)-cho day a1,a2,a3..an lap trinh sap xep day theo thu tu tang dan }program sapxepday;i,j:integer;T:real;A:array[1..n] of real;beginwrite('Cho gia tri n=');readln(n);for i:=1 to n do begin write('A[',i,']=');readln(A[i]);

Bieân soaïn : Tröông vaên Tuyeán 63

Page 64: Pascal 1

GIAÙO TRÌNH PASCAL Trang 64TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG end; (*sap xep *) for i:=1 to n-1 do for j:=i+1 to n do begin if A[i]>A[j] then T:=A[i]; A[I]:=A[j]; A[j]:=T; END; (*IN DAY SAP XEP *) FOR I:=1 TO N DO WRITE(A[i]:6:2); READLN; END.---------------Bt: Vieát chöông trình nhaäp soá thöïc sau ñoù xuaát ra maøn hình daõy soá ñoù theo thöù töï ngöôïc laïi vaø caùc daõy ñoài soá cuûa noù program doiso;typea1=array[1..100] of real;vara:a1;i,n:integer;beginwrite('nhap mot so n:');readln(n);for i:=1 to n do begin write('nhap phan tu thu :',i,':');readln(a[i]); end;for i:=n downto 1 do writeln(a[i]:5:2); write('Cac phan tu doi cua day nhap la:'); for i:=1 to n do writeln(-a[i]:5:2); readln; end.--baøi taäp : vieát chöông trình nhaäp hai daõy soá cuøng chieàu daøi,taïo ra moät daõy thöù 3 baèng toång cuûa hai daõy treân .Xuaát ra maøn hình caû ba daõyprogram doiso;const m=100;var a,b,c:array[1..m] of real;i,n:integer;beginwrite('Cho biet chieu dai cua day se nhap:');readln(n);

Page 65: Pascal 1

GIAÙO TRÌNH PASCAL Trang 65TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongwrite('nhap day so thuc thu nhat co dung n so:'); for i:=1 to n do readln(a[i]);write('nhap day so thuc thu hai co dung n so:'); for i:=1 to n do readln(b[i]); for i:=1 to n do begin c[i]:=a[i]+b[i]; writeln(c[i]:5:2); end; readln end.--bt: vieát chöông trình nhaäp moät daõy soá nguyeân xuaát ra maøn hình soá phaàn töû döông ,aâm ,khoângprogram amduong;const m=100;var a,b,c:array[1..m] of real;i,n,duong,am,zero:integer;tam:real;beginwrite('Cho biet chieu dai cua day se nhap:');readln(n);write('nhap day so duong co dung n so:');duong:=0;am:=0;zero:=0; for i:=1 to n do begin readln(a[i]); if a[i]>0 then duong:=duong+1; else if a[i]=0 then zero:=zero+1 else am:=am+1; end;writeln(duong:2,am:2,zero:2); readln; end.----vieát chöông trìnhnhaäp moät daõy soá nguyeân döông .Xuaát ra maøn hình hai doøng a.Caùc soá leû,soá soá leûb.Caùc soá chaün ,soá soá chaünprogram amduong;const m=100;var a,b,c:array[1..m] of INTEGER;i,n,chan,le:integer;beginwrite('Cho biet chieu dai cua day se nhap:');readln(n);write('nhap day so duong co dung n so:');chan:=0;le:=0;

Bieân soaïn : Tröông vaên Tuyeán 65

Page 66: Pascal 1

GIAÙO TRÌNH PASCAL Trang 66TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG for i:=1 to n do readln(a[i]);

write('cac so chan trong day:'); for i:=1 to n do if a[i] mod 2 = 0 then begin WRITE(A[I]:5); CHAN:=CHAN+1; end; write('CO:',CHAN,'SO CHAN'); write('cac so LE trong day:'); for i:=1 to n do if a[i] mod 2<>0 then begin WRITE(A[I]:5); LE:=LE+1; end; write('CO:',LE,'SO LE'); readln; end.------program NGUYENTO;const m=100;var a,b,c:array[1..m] of INTEGER;i,J,n,dem:integer;nguyento:boolean;beginwrite('Cho biet chieu dai cua day se nhap:');readln(n);write('nhap day so duong co dung n so:'); for i:=1 to n do readln(a[i]); write('cac so nguyen to trong day:'); for i:=1 to n do begin nguyento:=true; j:=2; while(nguyento) and (j<=a[i] div 2) do if a[i] mod j=0 then nguyento:=false else inc(j); if nguyento then begin write(a[i]:5); dem:=dem+1; end; end; write('CO:',dem,'SO nguyen to trong day'); write('cac so khong nguyen to trong day:'); DEM:=0;

Page 67: Pascal 1

GIAÙO TRÌNH PASCAL Trang 67TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong for i:=1 to n do begin nguyento:=true; j:=2; while(nguyento) and (j<=a[i] div 2) do if a[i] mod j=0 then nguyento:=false else inc(j); if not(nguyento) then begin write(a[i]:5); dem:=dem+1; end; end; write('CO:',dem,'SO KHONG NGUYEN TO trong day'); readln; end.**PROGRAM CT;TYPE MANG=ARRAY[1..20] OF INTEGER;TAPTRUNG=SET OF BYTE;VAR A,C,f:MANG;I,N,max,j:INTEGER;trung:taptrung;BEGIN writeln('nhap so pt ');readln(n); for i:=1 to n do begin writeln('nhap pt a[',i,']=');readln(a[i]);end; for i:=1 to n do write(a[i],';'); for i:=1 to n do f[a[i]]:=0; for i:=1 to n do f[a[i]]:=f[a[i]]+1; for i:=1 to n do writeln(f[a[i]]); max:=0; writeln('so lap lon nhat'); for i:=1 to n do if max<f[a[i]] then max:=f[a[i]];writeln(max); trung:=[]; for i:=1 to n-1 do for j:=i+1 to n do if a[i]=a[j] then trung:=trung+[i]; write('cac pt khac nhau '); for i:=1 to n do if not (i in trung ) then write(a[i],';');

Bieân soaïn : Tröông vaên Tuyeán 67

Page 68: Pascal 1

GIAÙO TRÌNH PASCAL Trang 68TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

readln;

END.

..-----MAÛNG NHIEÀU CHIEÀU :Ví duï :Var A:array[1..3,1..5] of real;A : ñöôïc ñònh nghóa nhö treân chính laø maûng 2 chieàu goàm 3 haøng vaø 5 coät

*Moät soá ví duï veà maõng hai chieàu :ví duï 1: cho hai ma traän kích thöôùc 5x10A=(aij)5x10 ; B=(bij)5x10 ;Laäp trình tính toång ma traän toång A+BC=A+B=(cij)5x10 cij=aij+bijprogram MATRANTONG;VARi,j :integer;A,B,C:ARRAY[1..5,1..10] OF INTEGER;OK:CHAR;BEGINWHILE OK<>'N' DO

BEGIN FOR I:=1 TO 5 DO FOR J:=1 TO 10 DO BEGIN WRITE('A[',I,',',J,']=');READLN(A[I,J]); END; FOR I:=1 TO 5 DO FOR J:=1 TO 10 DO BEGIN WRITE('B[',I,',',J,']=');READLN(B[I,J]); END;(*TINH cac phan tu cua matran C*) FOR I:=1 TO 5 DO FOR J:=1 TO 10 DO C[I,J]:=A[I,J]+B[I,J];(*Viet cac phan tu ra man hinh*) FOR I:=1 TO 5 DO begin

Page 69: Pascal 1

GIAÙO TRÌNH PASCAL Trang 69TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong FOR J:=1 TO 10 DO begin write(C[I,J]:6); WRITELN; END;

END; WRITE('YES/NO?');READLN(OK); OK:=UPCASE(OK); END; READLN; END.---------Taïo baûng cöûu chöông Vieát chöông trình con xeùt xem moät ma traän coù ñoái xöùng qua ñöôøng cheùo thöù 2 hay khoâng ?program mang2c;var a:array [1..10,1..10] of integer;i,j,n:integer;tiep:boolean;beginwrite('Nhap so n:');readln(n); for i:=1 to n do for j:=1 to n do begin write('Nhap a[',i,j,']=');readln(a[i,j]); end; for i:=1 to n do begin for j:=1 to n do write(a[i,j]:n);writeln; end; j:=1; tiep:=true; for i:=2 to n do while tiep and (j<i) do if a[i,j]<>a[j,i] then tiep:=false else j:=j+1; if j=n then write('Ma tran cho la doi xung qua duong cheo thu hai ') else write('Ma tran cho khong doi xung qua duong cheo thu hai '); readln; end.

Bieân soaïn : Tröông vaên Tuyeán 69

Page 70: Pascal 1

GIAÙO TRÌNH PASCAL Trang 70TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

1 3 6 10

3 2 9 76 9 3 610

7 6 5

--Vieát chöông trình xeùt xem moät matraän coù ñoái xöùng qua ñöôøng cheùo thöù hai hay khoângprogram pp;const max=100;var dem,i,n,j:integer;tiep:boolean;a:array[1..10,1..10] of integer; begin write('Nhap n ');readln(n); for i:=1 to n do for j:=1 to n do begin write('nhap a[',i,j,']=');readln(a[i,j]); end; j:=1; tiep:=true; DEM:=0; for i:=2 to n do BEGIN J:=1; while tiep and (j<i) do if a[i,j]=a[j,i] then begin DEM:=DEM+1; inc(j); end ELSE TIEP:=FALSE;

END; WRITE('DEMLA',DEM); if DEM=(N*N-N)/2 then write('Day so doi xung ') else write('Day so khong doi xung ');

readln; end.

Page 71: Pascal 1

GIAÙO TRÌNH PASCAL Trang 71TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong

-----b -*PHAÀN THAM KHAÛO:BTWHILE:1)tìm moät soá coù 3 chöõ soá thoaû maõn ñieàu kieän abc=a3+b3+c3;

program tt;uses crt;var a,b,c,cach:integer;beginwrite(' Hay nhap a ,b,c ');readln(a,b,c);a:=0;while a<=9 do begin b:=0; while b<=9 do begin c:=0; while c<=9 do begin if (100*a+10*b+c=a*a*a+b*b*b+c*c*c) then begin writeln('cach ',cach,' la : ',a,b,c); cach:=cach+1; end; c:=c+1; end; b:=b+1; end; a:=a+1; end; readln;end.1)tìm moät soá coù 4 chöõ soá thoaû maõn ñieàu kieän abcd=a3+b3+c3+d3;

program tt;uses crt;var a,b,c,d,cach:integer;begin

a:=0;while a<=9 do begin b:=0;

Bieân soaïn : Tröông vaên Tuyeán 71

Page 72: Pascal 1

GIAÙO TRÌNH PASCAL Trang 72TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG while b<=9 do begin c:=0; while c<=9 do begin d:=0; while d<=9 do begin if (1000*a+100*b+c*10+c=a*a*a*a+b*b*b*b+c*c*c*c+d*d*d*d) then begin writeln('cach ',cach,' la : ',a,b,c); cach:=cach+1; end; d:=d+1; end; c:=c+1; end; b:=b+1; end; a:=a+1; end; readln; end.---program doitien;USES CRT;varcach:integer;x,y,N:longint;beginCLRSCR;x:=0; cach:=1;while x<n/20000 do BEGIN y:=0; while y<n/5000 do begin if(x*20000+y*5000=500000) then begin writeLN('cach ',cach,' la :',x,' to 20000 + ',y,' to 5000 ;'); cach:=cach+1; end; y:=y+1; end;

Page 73: Pascal 1

GIAÙO TRÌNH PASCAL Trang 73TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong x:=x+1; END;If cach<=1 then write(‘ KHONG THE DOI ‘); READLN; end.----môû roäng baøi toaùn : nhaäp soá tieàn N baát kyø xuaát ra caùc caùch ñoåi neáu khoâng ñoåi ñöôïc thì xuaát ra thoâng baùo “ khoâng theå ñoåi ñöôïc “

---FOR:Nhaäp n baát kyø ñeám caùc soá lôùn hôn 10 vaø nhoû hôn 20 vaø tính toång cuûa chuùng vaø sau ñoù ñöa ra maøn hìnhprogram tt;uses crt;var tong,so:real;N,dem,i:integer;beginwrite(' nhap bao nhieu so ');readln(N);Tong:=0;dem:=0;for i:=1 to N do begin write('So =');readln(so); if (so>10) and (so<20) then begin tong:=tong+so; dem:=dem+1; end; end; write('so cac so >10 va <20 la :',dem); write('Tong cua chung la :',tong); readln;end.--Haõy tìm vaø in ra caùc soá nguyeân toá nhoû hôn moät soá cho tröôùc max

--THAM KHAÛO:TÍNH XY: ñieàu caàn löu yù laø trong pascal khoâng coù haøm loga hoaëc ax maø chæ coù hai haøm laø ln(x) vaø ex .Vì vaäyta phaûi lôïi duïng chuùng ñeå tính toaùn haøm theo coâng thöùc loga(x)=ln(x)/ln(a)

Vaø ax =eln(ax)=exln(a)

program tinh_x_mu_y;

Bieân soaïn : Tröông vaên Tuyeán 73

Page 74: Pascal 1

GIAÙO TRÌNH PASCAL Trang 74TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGvar x,y,z:real;beginx:=2.71828;{vidu tinh voi x:=2.71828 va2 y:=2.0}y:=2.0;k:=3.0if x>0 thenbegin

z:=exp(y*ln(x));{do logax=ln(x)/ln(a); ax =eln(ax) =exln(a)

}writeln(z);endelse begin writeln(#7,'khong tinh duoc dom x la so am'); readln;{cho an enter de ket thuc} end; end.---program tinh_x_mu_y;uses crt;var x,y,z:real;beginwrite('nhap x :');readln(x);write('nhap y :');readln(y);{x:=2.71828;vidu tinh voi x:=2.71828 va2 y:=2.0y:=2.0; }if x>0 thenbegin

z:=exp(y*ln(x)); { xy =eln(xy) =ey*ln(x)}

writeln(z);endelse begin writeln(#7,'khong tinh duoc dom x la so am'); readln;{cho an enter de ket thuc} end; delay(1000); end.---bt: tính bieåu thöùc

z=ea+sin(2x)-x

Page 75: Pascal 1

GIAÙO TRÌNH PASCAL Trang 75TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong---giaûi heä phöông trình baäc nhaát tuyeá n tính giaæ vaø bieän luaän heä phöông trình tuyeán tính hai aån ax+by=mcx+dy=n

x =

Y=

Vôùi DD<>0PROGRAM HPT;VAR a,b,c,d,m,n:real;DX,DY,DD:REAL;BEGINWRITE('nhap a =');readln(a);WRITE('nhap b =');readln(b);WRITE('nhap c =');readln(c);WRITE('nhap d =');readln(d);WRITE('nhap m =');readln(m);WRITE('nhap n =');readln(n);DD:=a*d-b*c;Dx:=m*d-b*n;DY:=a*n-c*m;if DD=0 THENBEGIN if(DX=0) and (DY=0) then write(#7,'Hoac vo nghiem hoac vo so nghiem') else writeln(#7,' vo nghiem'); endelse begin write('x=',DX/DD:6:2,' - VA '); write('Y=',DY/DD:6:2); END; READLN;END.--program nto;

Bieân soaïn : Tröông vaên Tuyeán 75

Page 76: Pascal 1

GIAÙO TRÌNH PASCAL Trang 76TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGvar k,i,j,N:integer;MAX:LONGINT;OK:CHAR;beginWHILE OK<>'N' DO BEGIN WRITE(' NHAP SO LON NHAT :');READLN(MAX); j:=0;{bien dieu khien cua man hinh} for N:=2 to max do{N bat dau tu 2} begin k:=trunc(SQRT(N)); I:=2; WHILE(N MOD I<>0 ) AND (I<=K) DO I:=I+1; IF(I>K) THEN BEGIN IF J MOD 10 =0 THEN WRITELN; J:=J+1; WRITE(N:3,' '); END; END; WRITE(' Y/N? :');READLN(OK); OK:=UPCASE(OK); END ; WRITELN; READLN; END.

--Baøi taäp :1)Haõy tìm choå sai vaø söûa laïi cho ñuùng caùc chöông trình sau :a) Program cta;Uses crt;var a,b,c: integer;C:word;Begin

a:=-5;b:=3;c:=a+b;writeln('c=',c);

end.--b) Program ctb;uses crt;var a,b: integer;begin

a:=40000;

Page 77: Pascal 1

GIAÙO TRÌNH PASCAL Trang 77TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongb:=6/3;a:=30000;b:=10;b:=a*b;

end.--2)Vieát chöông trình nhaäp chu vi cuûa hình chöõ nhaät sau ñoù in ra dieän tích lôùn nhaát maø hình chöõ nhaät ñoù coù theå coù ñöôïc3)Vieát chöông trình nhaäp 3 soá thöïc döông a,b,c.Haõy kieåm tra xem ñoaïn thaúng c coù theå ñaët trong hình chöõ nhaät caïnh a,b hay khoâng .4)Vieát chöông trình nhaäp töø baøn phím 4 soá thöïc a,b,c,d vaø thöïc hieän caùc pheùp tính toaùn sau :a)Tính xem coù bao nhieâu soá döông ,bao nhieâu soá aâm vaø bao nhieâu soá soá 0 trong 4 soá treânb)Tính giaù trò trung bình cuûa caùc soá treânc)Tính toång bình phöông cuûa caùc soá treân5)Vieát chöông trình nhaäp töø baøn phím 3 soá a,b,c .vieäc nhaäp lieäu tuaân thuû theo nguyeân taéc :caùc soá a,b,c phaûi khaùc nhau töøng ñoâi moät.Trong khi ñang nhaäp neáu soá ñang nhaäp khoâng tjoaû maõn ñieàu kieän treân,chöông trình seõ yeâu caàu nhaäp laïi .Neáu sai phaïm quaù 2 laàn seõ yeâu caàu döøng toaøn boä quaù trình nhaäp lieäu6) Moät leänh FOR coù theå thay baèng moät leänh WHILE hay khoâng ñieàu ngöôïc laïi coù ñuùng hay khoâng

Giaûi:Program p2;Var cv,smax:real;

b:boolean;Begin

write('Nhap chu vi cua hinh chöõ nhaät :');readln(cv);b:=(cv>0);if b then

begin { trong caùc hình chöõ nhaät coù cuøng chu vi thì hình vuoâng coù dieän tích lôùn nhaát }smax:=sqr(cv/4);writeln('Dieän tích lôùn nhaát maø hình chöõ nhaät ñoù coù theå coù ñöôïc laø Smax=',max:15:12);end;readln;end.

3)Program 3;Var a,b,c:real;

D1,D2:boolean;

Bieân soaïn : Tröông vaên Tuyeán 77

Page 78: Pascal 1

GIAÙO TRÌNH PASCAL Trang 78TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGBegin

write('Nhap 3 soá thöïc döông a,b,c :');write('a=');readln(a);write('b=');readln(b);write('c=');readln(c);D1:=(a>0) and (b>0) and (c>0);D2:=(sqr(a)+ sqr(b)+ sqr(c))if D1 and D2 then writeln('doan thang co theå naêm trong hình chöõ nhaät canh a,b')else writeln('Ñoaïn thaúng khoâng theå ñaët trong hình chöõ nhaät caïnh a,b');readln;

end.--Program 4;uses crt;var a,b,c,d,tb,sbp:real;

sd,sa,so:byte;Begin

clrscr;write('Nhap 4 soá thöïc döông a,b,c,d :'); readln(a,b,c,d);sd:=0;if a>0 then sd:=sd+1;if b>0 then sd:=sd+1;if c>0 then sd:=sd+1;if d>0 then sd:=sd+1;sa:=0;if a<0 then sa:=sa+1;if b<0 then sa:=sa+1;if c<0 then sa:=sa+1;if d<0 then sa:=sa+1;so:=4-(sd+sa);tb:=(a+b+c+d)/4;sbp:=sqr(a)+ sqr(b)+ sqr(c)+ sqr(d);writeln('Trong 4 soá treân coù :',sd,'soá döông ,sa,' soâ aâm',so, 'soá khoâng ');writeln('Trung bình cuûa 4 soá treân laø :',tb:12:2);writeln('Toång bình phöông cuûa 4 soá treân laø :',sbp);readln;end.

else writeln('Ñoaïn thaúng khoâng theå ñaët trong hình chöõ nhaät caïnh a,b');readln;

Page 79: Pascal 1

GIAÙO TRÌNH PASCAL Trang 79TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongend.-Program 5;uses crt;var a,b,c:real;

sp:byte;begin

clrscr;write('Nhap 4 soá thöïc khaùc nhau töøng ñoâi moät a,b,c :'); write('a=');readln(a);sp:=0;repeat

write('b=);readln(b);if a=b then sp:=sp+1;{ñeám soá laàn sai phaïm }until (a<>b) or (sp>2);

if sp<=2 thenrepeat

write('c=');readln(c);if((c=a) or (c=b))or (sp>2) then sp:=sp+1;

until((c<.>a)and (c<>b)) or (sp>2);if sp>2 then writeln('Ñaõ phaïm quaù nhieàu laàn khoâng nhaäp tieáp ñöôïc !')else writeln('a=',a:12:2,'b=',b,b:12:2,'c=',c:12:2);readln;end.

6)Moät leänh for coù theå thay baèng leänh while nhöng ñieàu ngöôïc laïi thì khoâng ñuùngMAÕNG:1)PROGRAM NGUYENTO;CONSTMAX=1000;VAR K,I,J,N:INTEGER;BEGINJ:=0;{J:bien dieu khien man hinh }for n:=2 to max do {n bat dau tu 2} begin k:=trunc(sqrt(N)); i:=2; while (n mod i<>0) and (i<=k) do i:=i+1; if i>k then begin if j mod 10 =0 then writeln; j:=j+1; write(N:3,' '); end;

Bieân soaïn : Tröông vaên Tuyeán 79

Page 80: Pascal 1

GIAÙO TRÌNH PASCAL Trang 80TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG end; writeln; readln;end.--

program CHINHPHUONG;const m=100;var a,b,c:array[1..m] of INTEGER;i,J,n,dem:integer;

beginwrite('Cho biet chieu dai cua day se nhap:');readln(n);write('nhap day so duong co dung n so:'); for i:=1 to n do readln(a[i]); write('cac so chinhphuong trong day:'); dem:=0; for i:=1 to n do for j:=1 to a[i] do if (a[i]= j*j) and (j<>0) then begin dem:=dem+1; b[dem]:=a[i]; end; if dem<=0 then write('Khong co so chinh phuong trong day') else begin write('CO:',dem,'SO chinh phuong trong day'); write('cac so chinh phuong trong day la:'); for i:=1 to dem do write(b[i],'; '); end; readln;

end.------{ VIET CHUONG TRINH NHAP VAO MOT DAY SO .XUAT RA MAN HINH THONG BAO DAY DO CO TANG GIAM KHONG}PROGRAM TANGGIAM;CONST M=100;VAR A: ARRAY[1..M] OF REAL;I,N:INTEGER;TANG,GIAM:BOOLEAN;BEGIN

Page 81: Pascal 1

GIAÙO TRÌNH PASCAL Trang 81TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongWRITE('CHO BIET CHIEU DAI CUA DAY SE NHAP');READLN(N);WRITE('NHAP DAY SO NGUYEN TO CO DUNG N SO');FOR I:=1 TO N DO READLN(A[I]);TANG:=TRUE;I:=1;WHILE (TANG) AND (I<=N-2 ) DOIF (A[I]<=A[I+1]) AND (A[I+1]<=A[I+2]) THEN INC(I) ELSE TANG:=FALSE;GIAM:=TRUE;I:=1;WHILE (GIAM) AND (I<=N-2 ) DOIF (A[I]>=A[I+1]) AND (A[I+1]>=A[I+2]) THEN INC(I) ELSE GIAM:=FALSE;IF GIAM THEN WRITELN('GIAM') ELSEIF (TANG) THEN WRITE('TANG') ELSEWRITE('KHONG TANG KHONG GIAM');READLN;END.--vieát Chöông trình nhaäp moät ma traän vuoâng caáp n (n nhaäp töø baøn phím ) .Sau ñoù xuaát ra maøn hình a) Phaàn töû lôùn nhaát ,phaàn töû beù nhaát cuûa ma traän b) Caùc phaàn töû döông ,khoâng aâm cuûa ma traän Program matran;

vari,n,max,min,am,zero,duong,dem:integer;a,b:array[1..100] of integer;beginwrite('cho biet so phan tu cua mang');readln(n);for i:=1 to n do begin write('Nhap phan tu a[',i,']=');readln(a[i]); end; max:=-32768; min:=32767;dem:=0; for i:=1 to n do if max<a[i] then max:=a[i]; for i:=1 to n do if min>a[i] then min:=a[i]; write('phan tu lon nhat cua mang ',max); write('phan tu be nhat cua mang ',min); for i:=1 to n do if a[i]>0 then begin dem:=dem+1; b[dem]:=a[i]; end; writeln; write('Cac phan tu duong la');

Bieân soaïn : Tröông vaên Tuyeán 81

Page 82: Pascal 1

GIAÙO TRÌNH PASCAL Trang 82TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG for i:=1 to dem do write(b[i],' ;'); write('so phan tu duong la : ',dem); dem:=0; for i:=1 to n do if a[i]<0 then begin dem:=dem+1; b[dem]:=a[i]; end; writeln; write('Cac phan tu am la'); for i:=1 to dem do write(b[i],' ;'); write('so phan tu am la : ',dem); dem:=0; for i:=1 to n do if a[i]=0 then begin dem:=dem+1; b[dem]:=a[i]; end; writeln; write('Cac phan tu khong la'); for i:=1 to dem do write(b[i],' ;'); write('so phan tu khong la : ',dem); readln;end.

--Viet chöông trình nhaäp moät daõy caùc phaàn töû nguyeân .Xuaát ra maøn hình caùc phaàn töû khaùc nhau cuûa daõyprogram xra_cac_pt_khac_nhau_of_mang;type taptrung=set of byte;vara:array[1..10] of byte;trung:taptrung;i,n:integer;beginwrite('nhap n so :');readln(n);for i:=1 to n do begin write('nhap phan tu a[',i,']= ');readln(n); end; trung:=[]; for i:=1 to n do

Page 83: Pascal 1

GIAÙO TRÌNH PASCAL Trang 83TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong if not (a[i] in trung ) then begin write(a[i]:2); trung:=trung+[a[i]]; end; readln(n); end.---program xra_cac_pt_khac_nhau_of_mang;type taptrung=set of byte;vara:array[1..100] of real;trung:taptrung;i,n,j:integer;beginwrite('nhap n so :');readln(n);for i:=1 to n do begin write('nhap phan tu a[',i,']= ');readln(a[i]); end; trung:=[]; for i:=1 to n do for j:=i+1 to n do if a[i]=a[j] then trung:=trung+[i];

write('Cac phan tu khong trung trong day nhap la :'); for i:=1 to n do if not (i in trung ) then write(a[i]:5:2);

readln(n); end.---

Vieát chöông trình nhaäp moät daõy caùc soá thöïc .Xuaát ra maøn hình caùc phaàn töû khaùc nhau cuûa daõy theo thöù töï taêng daànPROGRAM tt;type taptrung =set of byte;CONST M=100;VAR A: ARRAY[1..M] OF REAL;tam:real;I,N,j:INTEGER;trung:taptrung;BEGINWRITE('CHO BIET CHIEU DAI CUA DAY SE NHAP');READLN(N);WRITE('NHAP DAY SO NGUYEN TO CO DUNG N SO');FOR I:=1 TO N DO

Bieân soaïn : Tröông vaên Tuyeán 83

Page 84: Pascal 1

GIAÙO TRÌNH PASCAL Trang 84TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGbeginwrite('nhap a[',i,']=');READLN(A[I]);end;trung:=[];for i:=1 to n -1 do for j:=i+1 to n do if a[i]>=a[j] then begin tam:=a[i]; a[i]:=a[j+1]; a[j+1]:=tam; end; write('cac phan tu khac nhau cua day theo thu tu tang dan'); for i:=1 to n-1 do for j:=i+1 to n do if a[i]=a[j] then trung:=trung+[i]; for i:=1 to n do if not(i in trung) then begin write(a[i]:5:2); end;

READLN;END.------

{viet chuong trinh in ra man hinh ao so nguyen ngau nhien khong am ,nho hon 100 va khong trung nhau }program so_ngau_nhien;

constn=100;type nguyen=set of 0..9; var a:nguyen; so,i,spt:integer;begin writeln('TIM 10 SO NGUYEN NGAU NHIEN KHONG AM :'); writeln('NHO HON KHONG TRUNG NHAU'); writeln('---------------------------'); SPT:=0; A:=[]; RANDOMIZE;

Page 85: Pascal 1

GIAÙO TRÌNH PASCAL Trang 85TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong

REPEAT SO:=RANDOM(100); IF NOT (SO IN A)THEN BEGIN A:=A+[SO]; SPT:=SPT+1; END; UNTIL SPT=10; writeln; writeln; writeln(' 10 SO NGAU NHIEN NHO HON 10 LA'); writeln; {GOTOXY(10,2);} FOR I:=0 TO 100 DO IF I IN A THEN WRITE(I,';'); writeln('bam phim enter de ket thuc '); readln;

end.****{viet chuong trinh nhap mot so nguyen bat ky may se in ra co bao nhieu so hang }program so_so_hang;var thuong:set of 0..9; sodu:0..9; so,soluu,sohang:integer;begin writeln('SO SO HANG CUA MOT SO NGUYEN :'); writeln('-----------------------------'); writeln('Nhap so nguyen bat ky :');readln(so); soluu:=so; thuong:=[]; sohang:=0; repeat sodu:=so mod 10; if not (sodu in thuong) then sohang:=sohang+1 else begin sohang:=sohang+1; thuong:=thuong+[sodu];

Bieân soaïn : Tröông vaên Tuyeán 85

Page 86: Pascal 1

GIAÙO TRÌNH PASCAL Trang 86TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG end; so:=so div 10;

until so=0; writeln; writeln; writeln(' so luu',soluu,'co',sohang,'sohang'); writeln; writeln('bam phim enter de ket thuc '); readln;

end.

cho hai day soá nguyeân : a1,a2,a3,…an vaø b1,b2…bn. Vieát chöông trình ñeå chæ ra hoaëc in ra thoâng baùo la khoâng theå ) hai chæ soá i<j sao cho ñoàng thôøi thoaû maûn baát ñaúng thöùc

program boolean3;const m=100;var a,b,c:array[1..m] of INTEGER;i,J,n,dem:integer;

beginwrite('Cho biet chieu dai cua day se nhap:');readln(n);write('nhap hai day a[i],b[i] co dung n so:'); for i:=1 to n do begin write('Nhap a[',i,']='); readln(a[i]); write('Nhap b[',i,']='); readln(b[i]); end; write('cac so thoa man dong thoi a[i]<a[j] va b[i]<b[j] :'); dem:=0; for i:=1 to n do for j:=i+1 to n do if (a[i] < a[j]) and (b[i]<b[j]) then begin writeln('i= ',i,'j =',j); dem:=dem+1;

end; if dem=0 then write('khong co') else write('co ',dem,'truong hop'); readln;

end.

Page 87: Pascal 1

GIAÙO TRÌNH PASCAL Trang 87TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong---program chuyenhecoso;var i,n,x,b,j:integer;a:array[0..10] of integer;beginfor i:=0 to 10 do a[i]:=0;write('Nhap so N:');readln(n);write('Nhap so b:');readln(b);i:=0;x:=n;while n > 0 do begin a[i]:=n mod b; n:= n div b; i:=i+1; end;write('trong he co so ',b,' So ',x,'duoc viet');for j:=i-1 downto 0 do write(a[j]);readln;end.---(*Hay viet chuong trinh cong 2 so tu nhien cho truoc duoc nhap vao tu ban phim voi ket qua duoc viet trong he coso 2 *)program hecoso;

uses crt;var c,b:integer; sum:word; a:array[1..16] of integer; i,j:integer; begin clrscr; write('cho hai so tu nhien');readln(c,b); sum:=c+b; i:=0; while sum>0 do begin i:=i+1; A[i]:=sum mod 2; sum:=sum div 2; end; writeln('Tong hai so a,b trong he coso 2 la :'); for j:=i downto 1 do write(A[i]); readln; end.

Bieân soaïn : Tröông vaên Tuyeán 87

Page 88: Pascal 1

GIAÙO TRÌNH PASCAL Trang 88TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG{nhap vaomot day so nguyen xuat ra thong bao day co doi xung hay khong } program doixung;const m=100;var a,b,c:array[1..m] of INTEGER;j,i,n:integer;tiep:boolean;beginwrite('Cho biet chieu dai cua day se nhap:');readln(n);write('nhap day so duong co dung n so:'); for i:=1 to n do readln(a[i]); tiep:=true; i:=1; while (tiep) and (i<n) do if a[i]<>a[n+1-i] then tiep:=false else inc(j); if tiep then write('Doi xung:') else write('Khong doi xung '); readln; end.-----{kiem tra xem chuong trinh pascal sau thuc hien cong viec gi va ket qua nhu the nao }program VD;var n,i,kq:integer; bketthuc:boolean; begin write(' nhap n :');readln(n); if n=1 then writeln(n); if n>=2 then begin bketthuc:=false; for i:=2 to n do if n mod i=0 then if bketthuc=false then begin bketthuc:=true; writeln(i); end; end; readln; end. { nhan xet : chuong trinh se tim va in ra uoc so nho nhat va khac 1 cua so n .(Neu n=1 thi in ra so 1 nhan xet thua bien kq .Dac biet khi da tim ra duoc uoc so nho nhat khac 1

Page 89: Pascal 1

GIAÙO TRÌNH PASCAL Trang 89TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong cua n roi,vong for van kiem tra tat ca cac so lon hon }---{viet chuong trinh in ra tat ca cac uoc so khac nhau cua N }program us;var i,n:longint; begin write('Nhap n :');readln(n); if n=1 then write('USNN cua n la :',n) else begin write('cac us cua n la:'); for i:=2 to n do if n mod i =0 then write(i,';'); end;

end.--program lapphuong;var n,i:integer;b:boolean;ok:char;beginwhile ok<>'N' do begin write('nhap so n:');readln(n); b:=false; for i:=2 to trunc(sqrt(n)) do if i*i*i=n then b:=true; if b then write('La mot so lap phuong') else write('Khong phai la mot so lap phuong'); write('co tiep tuc nua khong ');readln(ok); ok:=upcase(ok); end; readln;end.

----program vd;uses crt;var x,y,z,n,j:integer;vonghiem:boolean;beginclrscr;write('Nhap n:=');readln(n);

Bieân soaïn : Tröông vaên Tuyeán 89

Page 90: Pascal 1

GIAÙO TRÌNH PASCAL Trang 90TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGvonghiem:=true;j:=0;for x:=1 to n do for y:=1 to n-x do begin j:=j+1; z:=n-(x+y); vonghiem:=false; writeln('x=',x,'y=',y,'Z=',z); if j=20 then begin write('nhan enter tiep tuc..'); j:=0; end; end; if vonghiem then write('Vo nghiem '); readln; end.-----program vd;uses crt;var x,y,z,n,j:integer;vonghiem:boolean;beginclrscr;write('tim nghiem cua phuong trinh '+'x^2+y^2+z^2=n');write('Nhap n:=');readln(n);vonghiem:=true;j:=0;for x:=1 to trunc(sqrt(n)) do for y:=1 to trunc(sqrt(n-sqr(x))) do for z:=1 to trunc(sqrt(n-sqr(x)-sqr(y))) do if sqr(x)+sqr(y)+sqr(z)=n then begin j:=j+1; vonghiem:=false; writeln('x=',x,'y=',y,'Z=',z); if j=10 then begin write('nhan enter tiep tuc..'); j:=0; end; end; if vonghiem then write('Vo nghiem '); readln; end.Ví duï : vieát chöông trình taïo ra ma traän vuoâng N*N coù daïng1 2 3 4 5

Page 91: Pascal 1

GIAÙO TRÌNH PASCAL Trang 91TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong0 1 2 3 40 0 1 2 30 0 0 1 20 0 0 0 1phaân tích :goïi i vaø j laø chæ soá haøng ,coät cuûa matraännhaän xeùt :i=j;matraïn[i,j]=1i<j :matraän[i,j]=matran[i,j-1]+1i>j : matraän[i,j]=0

-----

Bieân soaïn : Tröông vaên Tuyeán 91

Page 92: Pascal 1

GIAÙO TRÌNH PASCAL Trang 92TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGKIEÅU CHUOÅI :STRINGÑ/N: Chuoåi laø moät maõng moät chieàu maø moåi thaønh phaàn laø moät kí töïCaùch khai baùo : Var chuoåi :string[n] n phaûi laø haèng soá nguyeânDaïng khai baùo string neáu khoâng coù thaønh phaàn <n> thì giaù trò naøy seõ ñöôïc chæ ñònh chieàu daøi cöïc ñaïi theo yeâu caàu (baèng ñuùng giaù trò trong caëp daáu ngoaëc vuoâng [] ) Ví duï : Hoten:string[25];Ví duï:Type

Str80=string[80];Var s1,s2,s3:str80;Hoaëc coù heå khai baùo tröïc tieáp nhö sau :Var

S1,s2,s3 :string[80];2) Caùch truy xuaát treân chuoåi & caùch xuaát maûng :Ñeå truy xuaát treân chuoåi ta duøng cuù phaùp nhö sau :Teânchuoåi[vò trí caàn truy xuaát] : laø moät kí töï (moåi thaønh phaàn cuûa chuoåi laø moät kí töï )+Ñeå nhaäp chuoåi ta duøng leänh : readln(teân chuoåi);+Xuaát moät chuoåi ta duøng leänh :write(tenchuoåi)3) Caùc thao taùc treân chuoåi :+Haøm laáy chieàu daøi cuûa chuoåi :length(teân chuoåi);Ví duï :s=’abcde’ length(s)=5+Haøm keát noâi chuoåi concat(s1,s2,…sn);thì chuoåi keát quaû seõ laø : s=s1+s2+s3….+s4ví duï s1=’abcd’s2=’bace’-- s=concat(s1,s2)=’abcde’ta coù theå söû duïng pheùp toaùn coäng thay cho haøm xuaát concatpheùp coäng chuoåi ñöôïc duøng ñeå keát hôïp nhieàu chuoåi thaønh moät chuoåi kí töï lôùn hônví duï program add;uses crt;type chuoiA=string[80];vars1,s2,s3,s4:chuoiA;begin s1:='day la toi'; s2:='mot chuoi'; s3:='ki tu'; s4:=s1+s2+s3;

Page 93: Pascal 1

GIAÙO TRÌNH PASCAL Trang 93TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong writeln(s4); readln; end.0 1 2 3 4 5 6 7 8 9 10 . . 23 24

N g u y e N V a n

0 1 2 3 4 5 6 7 8 9 10 . . 23 24X u a n

Byte ñaàu tieân chöùa moä t kyù töï ñeå bieåu dieãn chieàu daøi cuûa chuoåi kyù töï (soá thöù töï trong baûng maõ Ascii cuûa kyù töï laø ñoä daøi cuûa chuoåi) vì ñoä daøi cuûa chuoåi ñöôïc bieåu dieãn laø 1 byte neân ñoä daøi toái ña cuûa chuoåi chæ naèm trong khoaûng töø 1 ñeán 255 . byte ñaàu tieân cuûa chuoåi coù theå truy nhaäp vaøo qua chæ soá 0 , vì vaäy ñoä daøi cuûa chuoåi kyù töï coù theå ñöôïc tính theo coâng thöùc Ñoä daøi=Ord (teân_taäp_tin[0]);Hoaëc neáu bieát ñoä daøi cuûa chuoåi kyù töï thì coù theå tìm ra kyù töï bieåu dieãn ñoä daøi

Ví duï : tìm chieàu daøi thöïc teá cuûa bieán chuoåi vaø kyù töï bieåu dieãn chieàu daøi chuoåi program khai_bao_tuong_minh;varholot :string[17];ten :string[7];noi_sinh :string[20];dia_chi :string[20];do_dai1,do_dai2,do_dai3,do_dai4 :integer;begin write('cho biet ho lot :');readln(holot); write('cho biet ten :');readln(ten); write('cho biet noi sinh :');readln(noi_sinh); write('cho biet dia chi :');readln(dia_chi);

do_dai1:=ord(holot[0]); holot[0]:=char(do_dai1); write('+Do dai cua bien holot la :',do_dai1); write('+Ky tu bieu dien do dai cua bien holot la :',holot[0]);do_dai2:=ord(ten[0]); ten[0]:=char(do_dai2); write('+Do dai cua bien ten la :',do_dai2);

Bieân soaïn : Tröông vaên Tuyeán 93

Page 94: Pascal 1

GIAÙO TRÌNH PASCAL Trang 94TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG write('+Ky tu bieu dien do dai cua bien ten la :',ten[0]);

do_dai3:=ord(noi_sinh[0]); noi_sinh[0]:=char(do_dai3); write('+Do dai cua bien noi_sinh la :',do_dai3); write('+Ky tu bieu dien do dai cua bien noi_sinh la :',noi_sinh[0]);

do_dai4:=ord(dia_chi[0]); dia_chi[0]:=char(do_dai4); write('+Do dai cua bien dia_chi la :',do_dai4); write('+Ky tu bieu dien do dai cua bien dia_chi la :',dia_chi[0]);

readln;end.

+Xoaù moät chuoåi A coù trong chuoåi B ta duøng thuû tuïcdelete(B,vòtrí cuûaA ,soá kí töï cuûa A)ví duï s=’abcdacef abf’A=’dac’Delete(S,4,3) s=’abcefabf’+Tìm kí töï chuoåi A naèm trong chuoåi B ta duøng haøm POSPOS(chuoåiA,chuoåi B)Haøm pos traû ra 0 nghóa laø chuoåi A khoâng coù trong chuoåi B ,ngöôïc laïi chính laø vò trí cuûa chuoåi A trong chuoåi B pos(a,s)=4 Ví duï : st=’123454545’ vaø obj=’45’Pos(obj,st) cho giaù trò baèng 4Pos(‘4x’,st) cho giaù trò baèng 0 vì khoâng tìm thaáyNotes :Laäp laïi chöông trình con tìm xaâu kí töï C trong moät xaâu kí töï SÑoù chính laø haøm POS :Pos coù giaù trò baèng vò trí cuûa kí töï ñaàu cuûa xaâu X trong xaâu ST ,POS baèng vò trí ñaàu tieân cuûa xaâu X trong xaâu ST ,POS baèng khoâng neáu khoâng tìm thaáy + ÑOÅI MOÄT SOÁ THAØNH CHUOÅI : ñoåi moät soá thaønh chuoåi ta duøng thuû tuïc

str(soá caàn ñoåi,chuoåi ñoåi ñöôïc)ví duï s:string

a=3456str(a,s) s=’3456’

Page 95: Pascal 1

GIAÙO TRÌNH PASCAL Trang 95TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phonggiaû söû X laø soá thöïc vaø baèng 123.5678901.ta muoán bieåu dieãn X döôùi daïng 10 kí töï vôùi 5 soá thaäp phaân.Str(X:10:5) seõ cho ra st=’ 123.56789’+ ÑOÅI MOÄT CHUOÅI THAØNH SOÁ ta duøng thuû tuïc sau :val(chuoåi caàn ñoåi,soá ñoåi ñöôïc ,maõ soá )neáu maõ loåi baèng 0 coù nghóa laø chuoåi caàn ñoåi ñoåi ñöôïc thaønh soá -thí duï X laø bieá htöïc ,st=’123.56’,result la bieán nguyeân val(st,X,result) cho ta X=123.56 vaø result=0-thí duï I laø bieán nguyeân st=’123’,Z laø bieán nguyeânval(st,I,z) cho ta I=123 vaø Z=4;-neáu st=’123X’ töùc laø st khoâng bieåu dieãn ñuùng soá nguyeân do coù chöõ X thì val(st,I,Z) cho ta I khoâng xaùc ñònh vaø Z=4;sau ñaây laø ví duï öùng duïng thuû tuïc Val ñeå ñoïc soá nguyeân töø baøn phím.Bính thöôøng ta duøng thuû tuïc READLN(I) ñeå ñoïc soá nguyeân I ,song chaúng may neáu ta goû nhaàm caû chöõ caùi naøo ñoù thì maùy seõ döøng laïi,coù theå gaây laõng phí thôøi gian .baây giôø ta muoán maùy kieåm tra loåi ,neáu coù thì baùo loåi ñeå nhaäp laïi soá lieäu

program strinval;vari:integer;r:real;procedure doc_integer(var i:integer);varst:string[6];z:integer;begin repeat readln(st);(*vao xau ki tu so nguyen *) val(st,I,z); if z<>0 then writeln(#7,'erro !'); {* # 7: bell coi*}

until z=0;

end;procedure doc_real(var i:real);varst:string[6];z:integer;begin repeat readln(st);(*vao xau ki tu so nguyen *) val(st,I,z); if z<>0 then writeln(#7,'erro !'); {* # 7: bell coi*}

Bieân soaïn : Tröông vaên Tuyeán 95

Page 96: Pascal 1

GIAÙO TRÌNH PASCAL Trang 96TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

until z=0;end;

begindoc_integer(i);

writeln('nhan enter de tiep tuc ');doc_real(r);readln;end.********+ Caùc pheùp toaùn so saùnh : ta coù theå aùp duïng caùc pheùp toaùn so saùnh nhö =,<>,<,<=,>,>= treân chuoåi kí töï :Löu Yù : khi so saùnh 2 chuoåi kí töï ,töøng phaàn töû cuûa chuoåi naøy seõ ñöôïc so saùnh töøng ñoâi moät theo thöù töï töø traùi sang phaûivôùi nhau ,tieâu chuaån so saùnh laø baûng maõ ASCII,so saùnh 2 chuoåi kí töï coù ñoä daøi khaùc nhau nghóa laø so saùnh tìm ra caùc phaàn töû gioáng nhau cho ñeán phaàn töû cuoái cuøng cuûa chuoåi neáu chuoåi naøo coù ñoä daøi kí töï ngaén hôn ñöôïc xem laø nhoû hôn chuoåi kiaVí duï :‘hoc VAN’ < ’Toi hoc VAN’ {giaù trò laø TRUE} ‘hoc VAN’ = ’Toi hoc VAN’{giaù trò laø false} program str2;uses crt;typeS=string[80];vart1,f1:boolean;

s1,s2,s3,s4:s;begin s1:='day la '; s2:='toi'; s3:='Day la '; s4:=s1+s2+s3; t1:=s1>s3;{true:nghia la chu thuong lon hon chu hoa} f1:=s2>s1;{true:nghia la t lon hon d do do chuoi s2 lon hon s1} writeln(t1,f1); readln; end.----HAØM CHUAÅN LENGHTH:

Page 97: Pascal 1

GIAÙO TRÌNH PASCAL Trang 97TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongHaøm chuaån length coù taùc duïng traû veà soá kí töï thöïc ñang ñöôïc löu trong bieán kieåu chuoåi kí töïVí duïprogram ham_length;var st:string;begin write( 'MINH HOA HAM length();'); WRITELN('--------------------'); write( 'Nhap VAO mot chuoi (go k de ket thuc ) ');readln(st); while st<>'k' do begin write( 'Chuoi nay co ',length(st),' ky tu'); write( 'Nhap VAO mot chuoi (go k de ket thuc ) ');readln(st);

end; writeln; writeln( 'Bam pham enter de ket thuc '); readln;

end.

Program vd;Uses crt;Var s:string[80];

I:integer;BeginS:=’I LOVE YOU’I:=length(s);(*cho gia tri la 10*)Write(I);Readln;End.

---HAØM COPY:Cuù phaùp copy(s:string;index:integer;count:integer) ;Haøm naøy seõ traû veà moät chuoåi con cuûa moät chuoåi kí töï S,chuoåi con naøy baét ñaàu taïi vò trí laø index vaø soá kí töï cuûa chuoåi naøy laø count.Neáu S laø moät bieán string vaø coù noäi dung laø ‘ABCDEÏ’ thì copy(s,5,3) seõ traû veà chuoåi ‘E12’program COPYSTR;uses crt;type

Bieân soaïn : Tröông vaên Tuyeán 97

Page 98: Pascal 1

GIAÙO TRÌNH PASCAL Trang 98TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGs=string[80];varI,SLEN:integer;s1:s;begin s1:='Day la mot cau kha dai va se duoc viet ra tung cot 10 ki tu tren man hinh '; i:=1; slen:=length(s1); while i<slen do begin writeln(copy(s1,i,10)); i:=i+10; end; writeln; writeln('Press Enter..'); readln; end.

program bt;var st:string;pos,num:integer;begin write( 'MINH HOA HAM COPY();'); WRITELN('--------------------'); write( 'Nhap VAO mot chuoi ');readln(st); write( 'sao chep tu vi tri thu may ');readln(pos); write( 'So ky tu can sao chep ');readln(num);writeln; write( 'ket qua cua ham copy ',copy(st,pos,num));writeln; write( 'Bam pham enter de ket thuc '); readln;

end.

.Haøm POS()Cuù phaùp : POS(ST2,ST1)program bt;var st1,st2:string;

begin write( 'MINH HOA HAM SO();'); WRITELN('--------------------'); write( 'Nhap VAO mot chuoi St1 ');readln(st1); write( 'Nhap vao mot chuoi st2 ');readln(st2);

Page 99: Pascal 1

GIAÙO TRÌNH PASCAL Trang 99TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong write( 'chuoi st2 bat dau tu vi tri thu ',pos(st2,st1),'cua chuoi st1');writeln; write( 'Bam pham enter de ket thuc '); readln;end.

THUÛ TUÏC DELETECuù phaùp :DELETE (VAR S:string;index:integer;count:integer);Thuû tuïc delete xoaù count kí töï baét ñaàu ôû vò trí index trong chuoåi kí töï SVí duï :Program delstr;Uses crt;Var S:string[80];I:integer;BeginS:=’Day la mot cau kha dai va se duoc xoa tung ki tu mot’;I:=1;While length(s)>0 do

BeginWriteln(delete(s,I,1)I:=I+1;

End;Writeln;Writeln(‘Press Enter.’);Readln;End.e.Thuû tuïc INSERTcuù phaùp INSERT(source:string;VAR s:string;index:integer);thuû tuïc insert coù taùc duïng cheøn chuoåi con source vaøo trong chuoåi sví duï baét ñaàu cheøn taïi vò trí Index.Ví duï Program chenstr;Uses crt;Var S:string;Begin

S:='Hello Pascal';Insert ('Turbo',s,7);Readln;

End.

Bieân soaïn : Tröông vaên Tuyeán 99

Page 100: Pascal 1

GIAÙO TRÌNH PASCAL Trang 100TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG------CONCAT(ST1,ST2…..,STn);Laø haøm noái taát caû caùc xaâu kí töï st1,st2,..,stn thaønh moät xaâu kí töï theo thöù töï ñaõ vieát .Taá nhieân neáu chieàu daøi cuûa xaâu kí töï lôùn hôn 255 thì maùy seõ baùo loåi .Ngoaøi ra chuùng ta cuõng coù theå duøng pheùp coäng deå gheùp xaâu kí töïVí duï : minh hoaï haøm Concat(); vaø toaùn töû coäng chuoåi kyù töï program bt;var st,st1,st2,st3:string;begin write( 'Nhap chuoi 1 ');readln(st1); write( 'Nhap chuoi 2 ');readln(st2); write( 'Nhap chuoi 3 ');readln(st3); write( 'Ap dung ham Concat ',concat(st1,st2,st3));writeln; write( 'Ap dung Toan tu + ',st1+' '+st2+' '+st3);writeln; write( 'Bam pham enter de ket thuc '); readln;

end.

Moät vaøi ví duï veà string:Vd1: Ñònh nghóa: VAR

Name :string[80];Vaø gaùn :

Name:=’NGUYEN VAN A’;Hoûi ñoä daøi thöïc cuûa Name ?Name [20] baèng ? Taïi sao

Traû lôøi :Ñoä daøi thöïc cuûa name sau pheùp gaùn laø 12 vì ñoù laø soá kí töï cuûa

‘NGUYEN VAN A’Name[20] laø khoâng xaùc ñònh vì 20 naèm ngoaøi ñoä daøi cuûa name sau pheùp gaùnVduï 2: Ñeám soá laàn xuaát hieän caùc kí töï trong xaâu :Laäp chöông trình ñeám soá laàn xuaát hieän cuûa moåi loaïi kí töï trong moät xaâu kí töï strprogram string1;varstr:string[80];dem:array['A'..'Z'] OF INTEGER;I:INTEGER;ch:char;

Page 101: Pascal 1

GIAÙO TRÌNH PASCAL Trang 101TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongbegin(*xoa bo dem *) for ch:='A' TO 'Z' DO DEM[CH]:=0; (*DOC XAU KI TU TU BAN PHIM *) write('str=');readln(str); (*dem nho chuyen thanh upcase -*) for i:=1 to length(str) do dem[upcase(str[i])]:=dem[upcase(str[i])]+1; (*viet ra ket qua*) wRiteln('cac chu trong xau str la:'); for ch:='A' TO 'Z' DO IF DEM[CH]>0 THEN WRITELN(CH,' : ',DEM[CH]); READLN; END.

ví duï 3: ñeámsoá chöõ trong moät xaâu kí töï .Thí duï töø ‘Tröôøng hoïc ‘ goàm coù chöõ ,chöõ ‘tröôøng ‘vaø chöõ ‘hoc’.Chöõ ‘truong’ goàm 5 con chöõ hay 5 kí töï{$V-} (*KHONG KIEM TRA TINH TUONG THICH VE DO DAI KHI XU LY XAU*)TYPE STR200=STRING[200];VAR STR:STR200;FUNCTION SOCHU (LINE:STR200):INTEGER;VAR DEM,I:INTEGER;BEGIN DEM:=0; I:=1; REPEAT (*nhay qua cac dau khong phai ALPHABET *) WHILE ((upcase(line[i])<'A' ) OR (UPCASE(LINE[I])>'Z')) AND (I<=LENGTH(LINE)) DO I:=I+1; (*cap nhat lai bo dem chu o vi tri nay *) if i<=length(line) then dem:=dem+1; (*nhay qua chu *) while ((upcase(line[i])>='A')AND (UPCASE(LINE[I])<='Z')) AND (I<=LENGTH(LINE) )DO I:=I+1; UNTIL I > LENGTH(LINE); SOCHU:=DEM; END; (*--------------------------------------------*) BEGIN WRITE(' CHO MOT DONG CHU :');READLN(STR); WRITELN(SOCHU(STR)); READLN;

Bieân soaïn : Tröông vaên Tuyeán 101

Page 102: Pascal 1

GIAÙO TRÌNH PASCAL Trang 102TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG END.

ÑOÅI MOÄT KYÙ TÖÏ CHÖÕ HOA THAØNH CHÖÕ THÖÔØNG :Caùc kyù töï töø : ‘A’..’Z’ coù soá thöù töï töø 65 ñeán 90Caùc kyù töï töø : ‘..’Z’ coù soá thöù töï töø 65 ñeán 90Nhö vaäy ñeå ñoåi moät chöõ hoa ra chöõ thöôøng nhö sau :Chöõ thöôøng =chöõ hoa+32Hoaëc ñeå tìm khoaûng caùch giöõa chöõ hoa vaø chöõ thöôøng theo coâng thöùcKhoaûng caùch= Ord (‘a’)-ord (‘A’);Ñeå ñoåi moät kyù töï töø chöõ hoa ra chöõ thöôøng ta laøm nhö sau : 1.Kieåm tra xem kyù töï ñoù coù naèm trong khoaûng töø ‘A’ ñeán ‘Z’ hay khoâng . Neáu ñuùng thì laáy soá thöù töï cuûa kyù töï ñoù +322.ñoåi soá thöù töï thaønh kyù töï roài gaùn trôû laïitrong chöông trình giaûi thuaät treân ñöôïc vieát nhö sau :if (ch>=#65 ) and (ch<=#65) thench:=chr(ord (ch)+32)neáu queân caùc con soá thì :if (ch>=’A’) AND (CH<=’Z’) THENCh:=chr(ord (ch)+ord (‘a’)-ord (‘A’));VÍ DUÏ : ñoåi chöõ hoa thaønh chöõ thöôøng ( neáu nhôù caùc con soá )program doi_chu_hoa_thanh_chu_thuong;var ch:char;begin write( 'DOI KY TU HOA RA CHU THUONG();'); WRITELN('--------------------'); write( 'Nhap VAO mot KY TU ');readln(ch); if (ch>=#65) and ( ch<=#90) then ch:=chr(ord(ch)+32); writeln; write( 'Doi thanh chu thuong ',ch); readln;end.Ví duï : ñoåi chöõ hoa thaønh chöõ thöôøng neáu khoâng nhôù caùc con soá :program doi_chu;var ch:char;begin writeln('DOI KY TU CHU HOA RA CHU THUONG '); WRITELN('----------------------------'); WRITELN; Writeln('Nhap ky tu chu hoa :');readln(ch); if (ch>'A') AND (CH<='Z') THEN ch:=chr(ord (ch)+ord ('a')-ord ('A')); WRITELN;

Page 103: Pascal 1

GIAÙO TRÌNH PASCAL Trang 103TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong writeln('+Doi thanh chu thuong :',ch); readln;

end.

program bt;var st1,st2:string;

begin write( 'MINH HOA HAM SO();'); WRITELN('--------------------'); write( 'Nhap VAO mot chuoi St1 ');readln(st1); write( 'Nhap vao mot chuoi st2 ');readln(st2); write( 'chuoi st2 bat dau tu vi tri thu ',pos(st2,st1),'cua chuoi st1');writeln; write( 'Bam pham enter de ket thuc '); readln;end.

program bt;var st1,st2:string;

begin write( 'MINH HOA HAM SO();'); WRITELN('--------------------'); write( 'Nhap VAO mot chuoi St1 ');readln(st1); write( 'Nhap vao mot chuoi st2 ');readln(st2); write( 'chuoi st2 bat dau tu vi tri thu ',pos(st2,st1),'cua chuoi st1');writeln; write( 'Bam pham enter de ket thuc '); readln;end.

program bt;var st1,st2:string;

begin write( 'MINH HOA HAM SO();'); WRITELN('--------------------'); write( 'Nhap VAO mot chuoi St1 ');readln(st1); write( 'Nhap vao mot chuoi st2 ');readln(st2); write( 'chuoi st2 bat dau tu vi tri thu ',pos(st2,st1),'cua chuoi st1');writeln; write( 'Bam pham enter de ket thuc '); readln;

Bieân soaïn : Tröông vaên Tuyeán 103

Page 104: Pascal 1

GIAÙO TRÌNH PASCAL Trang 104TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGend.ÑOÅI MOÄT CHUOÅI KYÙ TÖÏ CHÖÕ THÖÔØNG THAØNH CHÖÕ HOA :Gæai thuaät ñoåi chuoåi kyù töï chöõ thöôøng thaønh chöõ hoa nhö sau :1.Xaùc ñònh chieàu daøi chuoåi2.Taïo voøng laëp vaø duøng haøm Upcase () ñeå ñoåi kyù töï chöõ thöôøng thaønh chöõ hoa töø ñaàu ñeán cuoái roài gaùn laïi cho bieán chuoåi kyù töïñoaïn chöông trình duøng ñeå ñoåi chuoåi kyù töï töø chöõ thöôøng ra chöõ hoa nhö sau :for I:=1 to length(st) dost[I]:=Upcase(st[I]);ví duï : ñoåi kyù töï chöõ thöôøng ra thaønh chöõ hoa program doi_chu;

var st:string;i:byte;begin

writeln('DOI CHUOI KY TU CHU THUONG RA CHU HOA '); WRITELN('----------------------------'); WRITELN; Writeln('Nhap ky tu chu THUONG :');readln(ST); Writeln('dOI RA CHU HOA LA :'); WRITELN; FOR I:=1 TO LENGTH(St) do; BEGIN ST[I]:=Upcase(st[i]); write(st[i]); end; writeln('+Bam enter de ket thuc '); readln;

end.ÑOÅI MOÄT KYÙ TÖÏ CHÖÕ HOA THAØNH CHÖÕ THÖÔØNG Trong chöông trình moâ taû nhö sau : For I:=1 to length(s) doIf ( st[I]>=#65 and st[I]<=#90 ) thenSt[I]:=chr(orÑst[I]+32);CAÉT CAÙC KYÙ TÖÏ TROÁNG BEÂN TRAÙI CHUOÅI KYÙ TÖÏ Gæa söû coù chuoåi kyù töï st=’----ABCDEFGH’Chieàu daøi cuûa chuoåi laø 12 kyù töï trong ñoù coù 4 kyù töï troáng beân traùi chuoåi . Ñeå caét boû 4 kyù töï troáng naøy , baïn thöïc hieän nhö sau :1. Söû duïng voøng laëp While . do ñeå tìm kyù töï troáng ñaàu tieân

(I=1 )

Page 105: Pascal 1

GIAÙO TRÌNH PASCAL Trang 105TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongÑeán kyù töï troáng cuoái cuøng baèng caùch taêng bieán I leân moät ñôn vò , ñeå xaùc ñònh kyù töï keá tieáp I:=I+1 hay inc(I)2.Söû duïng thuû tuïc Delete () ñeå xoaù khoûi chuoåi I-1 kyù töïtrng chöông trình naøy baïn thöïc hieän nhö sau :I:=1 While st[I]=#32 doI:=I+1;( hoaëc duøng inc(I)Dele (st,1,I-1);program ct;var st:string;i:byte;begin writeln('CAT KY TU TRONG O BEN TRAI CHUOI KY TU '); WRITELN('------------------------------------'); Writeln; writeln('Nhap mot chuoi ky tu co khoang trong o ben tai :');readln(st); Writeln; Writeln('+Chieu dai chuoi la :',length(st)); i:=1; while st[i]=#32 do inc(i); delete(st,1,(i-1)); writeln('+So ki tu cua chuoi :',length(st),'ky tu gom ',st); writeln('+So ki tu trong',i-1); writeln; writeln('Bam Enter de ket thuc '); readln; end.CAÉT CAÙC KYÙ TÖÏ TROÁNG BEÂN PHAÛI CHUOÅI KYÙ TÖÏ Gæa söû coù chuoåi kyù töï st=’ABCDEFGH-------’Chieàu daøi cuûa chuoåi laø 12 kyù töï trong ñoù coù 4 kyù töï troáng beân PHAÛI chuoåi . Ñeå caét boû 4 kyù töï troáng naøy , baïn thöïc hieän nhö sau :2. Söû duïng voøng laëp While do ñeå tìm kyù töï troáng ñaàu tieân

(I=CHIEU DAØI CHUOÅI )Neáu I laø kyù töï troáng thì giaûm I moät ñôn vò I:=I-1 hay Dec(I)Thay kyù töï thöù 0 baèng chr(I)Theå hieän giaûi thuaät naøy nhö sau :I:=length(st)While st(I)=#32 doDec(I)St[0]:=chr(I)program ct;var st:string;

Bieân soaïn : Tröông vaên Tuyeán 105

Page 106: Pascal 1

GIAÙO TRÌNH PASCAL Trang 106TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGi,d1,d2:byte;begin writeln('CAT KY TU TRONG O BEN phai CHUOI KY TU '); WRITELN('------------------------------------'); Writeln; writeln('Nhap mot chuoi ky tu co khoang trong o ben phai :');readln(st); Writeln; Writeln('+Chieu dai chuoi la :',length(st)); d1:=length(st); i:=length(st); while st[i]=#32 do dec(i); st[0]:=char(i); d2:=length(st) ; writeln('+So ki tu cua chuoi :',length(st),'ky tu gom ',st); writeln('+So ki tu trong',d1-d2); writeln; writeln('Bam Enter de ket thuc '); readln; end.CAÉT CAÙC KYÙ TÖÏ TROÁNG ÔÛ GIÖÕA CHUOÅI KYÙ TÖÏ Giaû söû coù chuoãi “ Turbo Pascal Version 7.0” ôû giöõa chuoãi coù nhieàu khoaûng troáng . Ñeå caét boû nhöõng khoaûng troáng ôû giuõa chuoãi , baïn thöïc hieän nhö sau :Tìm chuoåi con coù 2 khoaûng troáng trong chuoåi chính . Khi xaùc ñònh ñöôïc ta seõ xoaù bôùt moät kyù töï taïi ñieåm vöøa tìm thaáy . Tieáp tuïc thöïc hieän cho ñeán khi khoâng coøn chuoãi con naøo coù 2 khoaûng troáng trong chuoãi . Ñeå laøm ñieàu naøy baïn seõ thöïc hieän voøng laëp whiel vôùi ñieàu kieän vò trí chuoãi con 2 khoaûng troáng trong chuoãi caàn bôùt khaùc 0program cat_bot_ky_tu_o_giua_chuoi;var st:string;i,d1,d2:byte;begin writeln('CAT KY TU TRONG O giua CHUOI KY TU '); WRITELN('------------------------------------'); Writeln; writeln('Nhap mot chuoi ky tu co khoang trong o giua :');readln(st); Writeln; Writeln('+Chieu dai chuoi la :',length(st)); d1:=length(st); i:=pos(#32#32,st); while i<>0 do

Page 107: Pascal 1

GIAÙO TRÌNH PASCAL Trang 107TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong begin delete(st,i,1); i:=pos(#32#32,st); end; d2:=length(st) ; writeln('+So ki tu cua chuoi :',length(st),'ky tu gom ',st); writeln('+So ki tu trong',d1-d2); writeln; writeln('Bam Enter de ket thuc '); readln; end.

BAØI TAÄP ÖÙNG DUÏNGVIEÁT chöông trình ñoåi moät soá nguyeân heä thaäp phaân ( cô soá 10 ) sang heä nhò phaân ( cô soá 2)program doi_thap_phan_ra_nhi_phan;var he10,N,Y:word;he2,tam:string;begin writeln('doi so tu he thap phan sang nhi phan '); WRITELN('------------------------------------'); Writeln; writeln('Nhap so nguyen he thap phan :');readln(he10); Writeln; N:=he10; he2:=''; repeat y:=he10 mod 2 ; str(y,tam); he2:=tam+he2; he10:=he10 div 2 ; until he10=0; writeln; writeln('+So he 10 la :',N); writeln('+doi sang he 2 la :',he2); writeln; writeln('Bam Enter de ket thuc '); readln; end.

Bieân soaïn : Tröông vaên Tuyeán 107

Page 108: Pascal 1

GIAÙO TRÌNH PASCAL Trang 108TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG{Viet chuong trinh doi mot so nguyen he thap phan sang he bat ky }PROGRAM CHUYEN_HE_SO;var heso,heso10,n,y:integer;hesobk,tam:string;beginwrite('Nhap so he thap phan :');readln(heso10);n:=heso10;hesobk:='';while heso10<>0 dobegin y:=heso10 mod heso; str(y,tam); hesobk:=hesobk+tam; heso10:=heso10 div heso;

end;write('He so 10 :',n);write('He so ',heso,' la :',hesobk);

readln;end.{ viet chuong trinh xuat ra ma ASCII cua tung ky tu}PROGRAM ASCII_KT;var I:BYTE;st:string;begin

write('Nhap chuoi ');readln(st); for i:=1 to length(st) do write('ki tu thu ',i,' co ma ASCII LA ',ORD(ST[I])); READLN;

end.--Vieát chöông trình ñaûo ngöôïc moä chuoåi , ví duï nhaäp chuoãi ‘ABCD’ ,ñaûo ngöôïc thaønh ‘DCBA’{ viet chuong trinh xuat ra ma ASCII cua tung ky tu}PROGRAM ASCII_KT;var I:BYTE;st:string;begin

write('Nhap chuoi ');readln(st); for i:=length(st) downto 1 do write(ST[I]);

Page 109: Pascal 1

GIAÙO TRÌNH PASCAL Trang 109TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong READLN;

end.{viet chuong trinh nhap vao mot chuoi tu ban phim ,hay tach mot chuoi con gom n ky tu tu vi tri chi dinh }program bt;var st:string;vitri,i,n:byte;beginwrite('nhap chuoi ');readln(st);write('nhap n ');readln(n);write('nhap vi tri ');readln(vitri);for i:=vitri to vitri+n dowrite(st[i]);

readln;end.{viet chuong trinh xac dinh vi tri cua chuoi thu hai st2 trongchuoi thu nhat st1 }program bt;var st1,st2:string;vitri,i,n,j:byte;co:boolean;beginwrite('nhap chuoi ');readln(st1);write('nhap chuoi 2 ');readln(st2);for i:=1 to length(st1) doif st2[1]=st1[i] then begin co:=true; for j:=2 to length(st2) do if st2[j]<>st1[i+j-1] then co:=false; if co then write(' o vi tri ',i); end; readln;end. {viet chuong trinh xac dinh vi tri cua chuoi thu hai st2 trongchuoi thu nhat st1 }program bt;var st1,st2:string;

Bieân soaïn : Tröông vaên Tuyeán 109

Page 110: Pascal 1

GIAÙO TRÌNH PASCAL Trang 110TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGvitri,i,n,j:byte;co:boolean;beginwrite('nhap chuoi ');readln(st1);write('nhap chuoi 2 ');readln(st2);write('chuoi ',st2,' o vi tri ',pos(st2,st1),'trong chuoi me ');readln;end.(*Dem so lan xuat hien cua cac ky tu nao do trongchuoi *)program bt;type mang=array['A'..'Z'] of byte;var st:string;dem:mang;i,n : byte;CH:CHAR;begin write('Nhap chuoi ');readln(st); for i:=1 to length(st) do dem[UPCASE(st[i])]:= dem[UPCASE(st[i])]+1; write('Cac ky tu trong chuoi la :'); for ch:='A' TO 'Z' DO IF DEM[CH]>0 THEN

write(' ky tu ',CH,' xuat hien ',dem[ch],' lan');

readln;end.

(*Doi sang he 16 tu he thap phan *)program bt;var st,tam,he16:string;y,n,he10 : byte;CH:CHAR;begin write('Nhap so trong he 10 ');readln(he10); he16:='';n:=length(st); while he10<>0 do begin y:=he10 mod 16; if y<=9 then begin str(y,tam); he16:=he16+tam; he10:=he10 div 16

Page 111: Pascal 1

GIAÙO TRÌNH PASCAL Trang 111TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong end else begin tam:=chr(y+55);(* do MA ASCCII cua 'A' la 65 *) he16:=he16+tam; he10:=he10 div 16; end;end; writeln('Trong he 10 ',n); writeln('Trong he 16 ',he16);

readln;end.

Baøi taäp : vieát moät thuû tuïc nhaäp vaøo 2 töø trong moät chuoi , ví duï ‘HUNG VUONG ‘ ,hay taùch töø ñaàu tieân (‘HUNG’) ra khoi chuoi .program bt;var st:string;i,j : byte;begin write('Nhap chuoi ');readln(st); i:=1; while (i<length(st)) and( st[i]<>#32) do begin i:=i+1; if st[i]=#32 then begin for j:=1 to (length(st)-i) do st[j]:=st[i+j]; st[0]:=char(length(st)-i); end; end; write('chuoi la ',st);readln;vieát chöông trình nhaäp vaøo moä caâu ca dao tuïc ngöõ . Haõy ñeám xem caâu ñoù coù bao nhieâu töø .program bt;var st:string;n,dem,i:integer;beginwrite('Nhap chuoi ');readln(st);n:=length(st);i:=pos(#32#32,st);dem:=0;while i<>0 dobegininc(dem);delete(st,i,1);

Bieân soaïn : Tröông vaên Tuyeán 111

Page 112: Pascal 1

GIAÙO TRÌNH PASCAL Trang 112TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGi:=pos(#32#32,st);end;st[0]:=char(n-dem);write('Chua cat ',st,n,'ki tu -cat roi ',st,'co',length(st));i:=1;dem:=0;while i<=length(st) dobeginif st[i]=#32 then inc(dem);inc(i);end;write('co ',dem+1,' Ky tu');readln;end.Vieát chöông trình nhaäp vaøo moät soá nhoû hôn 1000 , ñoïc soá ñoù baèng chöõ , ví duï 125 ñoïc laø ‘MOÄT TRAM HAI MUOI LAM ‘,

program chu_chay;uses crt;consta='Trung Tam Tin Hoc Data ,99 Le hong Phong,Phuong 7,Tp Vung Tau ';b='Tel : 064 816 046';c='Chuyen Giang day Tin hoc ,Lap cac chuong trinh Ung dung ,Mua ban May Vi Tinh ';d='Xin chan thanh Cam on cac ban da den voi Trung Tam Data';function lap(kt:char;N:integer):string;var tam :string;k:integer;begintam:='';for k:=1 to n dotam:=tam+kt;lap:=tam;end;procedure writeXY(X,Y:integer;st:string);begin gotoxy(x,y); write(st); end;function min(a,b:integer):integer;begin if a<b then min:=a else min:=b;

Page 113: Pascal 1

GIAÙO TRÌNH PASCAL Trang 113TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongend; procedure chuchay(st:string); var k:integer; tin:string; begin tin:=lap(' ',62)+'<<'+st+''; for k:=1 to length(tin) do begin textcolor(k mod 16 ); write(6,8,copy(tin,k,min(62,length(tin)-k+1))); delay(100); end; end; procedure khung(x1,y1,x2,y2:integer); var k:integer; begin

textcolor(14); writexy(x1,y1,#201); for k:=x1+1 to x2-1 do write(#205); write(#187); writexy(x1,y2,#200); for k:=x1+1 to x2-1 do write(#205); write(#188); for k:=y1+1 to y2-1 do begin writexy(x1,k,#186); writexy(x2,k,#186);

end;

end; begin textbackground(1); clrscr; textcolor(3+blink); gotoxy(30,4); writeln('CHAO MUNG KHOA HOC 2000-20001'); KHUNG(5,7,75,9); repeat chuchay(a); chuchay(b);

Bieân soaïn : Tröông vaên Tuyeán 113

Page 114: Pascal 1

GIAÙO TRÌNH PASCAL Trang 114TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG chuchay(c); chuchay(d); until keypressed; readln;end.(* viet mot thu tuc tao mau chu , mau nen va lam loan mau ra toan man hinh *)program bt;uses crt;constst=' Chao mung ban da den voi TTVT DATA';var K:INTEGER;PROCEDURE MAU(nen,chu:integer);begin textbackground(nen); textcolor(chu);end;begintextmode(c40);textbackground(black);clrscr;for k:=2 to 23 dobegin mau(k mod 8,(k+4) mod 8+8); gotoxy(1,k); write(st);

end;

readln;end.**(*viet chuong trinh nhap chuoi ky tu ,tim va xoa cac ky tu trungvi du 'ABCADEF' ,se hien thi ra man hinh :ky tu thu 4 bi trung va cau nhac " Ban co muon xoa ky tu nay khong ?Neu muon xoa go C ,Khong thi go K *)program bt;USES CRT;VAR st,st1:string;ch:char;i,l,j,i1:byte;BEGINwriteLN('TIM VA XOA CAC KY TU TRUNG NHAU TRONG CHUOI');WRITEln('----------------------');

Page 115: Pascal 1

GIAÙO TRÌNH PASCAL Trang 115TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongwriteln;writeln('Nhap mot chuoi ');readln(st);st1:=st;i:=1;l:=length(st);while i<=lENGTH(ST)-1 dobegin j:=i+1; while j<=length(st) do begin if st[i]=st[j] then begin write('Ky tu thu ',i:2,' la ',st[i],' Bi trung lap '); write('ban co muon xoa ky tu nay khong (c/k) ');readln(ch); if upcase(ch)='C' THEN begin delete(st,j,1);

end; end; j:=j+1; end;

i:=i+1;end;i1:=length(st);writeln;writeln('Chuoi ban dau ',st1,' co ',i:2,' ky tu ');writeln('sau khi xoa ky tu trung nhau ');writeln('Chuoi con lai ',st,' gom : ',i1:2,' ky tu');writeln;writeln('Ban an Enter de ket thuc');READLN;END.**bt: viet chöông trình nhaäp 2 chuoi kyù töï , xeùt xem chuoåi thöù 2 xuaát hieän bao nhieâu laàn trong chuoåi thöù nhaát

program dem1;uses crt;var st,st1:string;i,j,k,dem:byte;trung:boolean;beginclrscr;

Bieân soaïn : Tröông vaên Tuyeán 115

Page 116: Pascal 1

GIAÙO TRÌNH PASCAL Trang 116TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGdem:=0;writeln('Nhap vao chuoi thu 1 ');readln(st);writeln('Nhap vao chuoi thu 2 ');readln(st1);for i:=1 to length(st) doif st1=copy(st,i,length(st1)) thendem:=dem+1;writeln(' co ',dem,' lan');readln;end.Bt: vieát chöông trình nhaäp moät soá la maõ roài chuyeån sang soá thaäp phaân : ví duï I=1 , V=5,X=10,L=50,C=100,D=500,M=1000

PROGRAM SO_LA_MA;label L1;varst:string;tiep:char;i,so:integer;beginwriteln('DOI SO LA MA RA SO THAP PHAN ');WRITELN('----------------------');writeln;L1:WRITE('Nhap so LA MA ');readln(st);so:=0;i:=length(sT);while i>0 docase st[i] of'I':beginso:=so+1;i:=i-1;END;'V':if (i>1) and (st[i-1]='I') THEN BEGIN so:=so+1; i:=i-2; END else begin so:=so+5; i:=i-1;

end; 'X':IF( i>1 ) and (st[i-1]='I') THEN begin so:=so+9; i:=i-2;

Page 117: Pascal 1

GIAÙO TRÌNH PASCAL Trang 117TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong end else begin so:=so+10; i:=i-1;

end;'L':if (i>1) and (st[i-1]='X') THENBEGIN so:=so+40; i:=i-2;ENDelse begin so:=so+50; i:=i-1; end; 'C':IF (i>1 ) AND (ST[i-1]='X') THEN BEGIN so:=so+90; i:=i-2; END else begin so:=so+100; i:=i-1; end; 'D':IF (i>1 ) and (st[i-1]='C') THEN BEGIN SO:=so+400; i:=i-2; END else begin so:=so+500; i:=i-1; end; 'M':if (i>1) and (st[i-1]='C') then begin so:=so+900; i:=i-2; end else begin so:=so+1000;

Bieân soaïn : Tröông vaên Tuyeán 117

Page 118: Pascal 1

GIAÙO TRÌNH PASCAL Trang 118TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG i:=i-1; end;end;writeln('+So la ma ',st);writeln('+Doi ra so tahp phan ',so);writeln;writeln('+Tiep tuc nua khong(c/k)? ',);readln(tiep);if upcase(tiep)='C' THENGOTO L1;end.

BT: viet chöông trình kieåm tra moät con soá thaäp phaân nhaäp vao töø baøn phím . Neáu voâ tình nhaäp vao kyù töï thì maùy yeâu caàu nhaäp laïi soá ñoùThuû tuïc VAL() :CUÙ PHAÙP : VAL(st,var,code);St : chuoi so can doi ra so;Var : bieán kieåu soá nguyeân hoaëc soá thöïc Coâng duïng : thuû tuïc val(); bieán ñoåi moät bieåu thöùc chuoåi soá st thaønh giaù trò soá nguyeân hoaëc soá thöïc ( tuyø theo bieán kieåu var ) vaø gaùn giaù trò keát quaû cho bieán Var . Baïn caàn löu yù :-Khoâng coù caùc kyù töï troáng ñöùng tröôùc chuoåi soá-Bieán Var coù theå laø bieán nguyeân hoaëc thöïc-Code laø moät bieán kieåu nguyeân . Neáu thuû tuïc thöï chieän toát thì code =0 .Ngöôïc laïi code ñöôïc gaùn moät giaù trò laø vò trí ñaàu tieân gaây ra loãi vaø khi ñoù giaù trò bieán var khoâng xaùc ñònh -Neáu st:=’234’ val(st,I,result)=> I:=234-Neáu st:=’12X’ val(st,I,result)=> I:=khoâng xaùc ñònh =>result=3;program minh_hoa_ham_val;uses crt;varb:string;a,c,i,result:integer;beginclrscr;writeln('MINH HOA THU TUC VAL() ');Writeln('--------------------');writeln('nhap vao mot so nguyen ');readln(a);writeln('nhap vao mot chuoi so ');readln(b);val(b,i,result);c:=a+i;writeln('Ket qua ',c);writeln('Nhan phim Enter de ket thuc ');readln;

Page 119: Pascal 1

GIAÙO TRÌNH PASCAL Trang 119TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongend.**bt: vieát chöông trình kieåm tra moät con soá nhaäp vaøo töø baøn phím . Neáu voâ tình nhaäp vaøo kí töï thì maùy yeâu caàu baïn nhaäp laïi soá ñoù .program minh_hoa_ham_val;uses crt;varb:string;a,c,i,result:integer;beginclrscr;writeln('MINH HOA THU TUC VAL() ');Writeln('--------------------');writeln('nhap vao mot so nguyen ');readln(a);writeln('nhap vao mot chuoi so ');readln(b);val(b,i,result);c:=a+i;writeln('Ket qua ',c);writeln('Nhan phim Enter de ket thuc ');readln;end.Bt:Vieát chöông trình xeùt xem moät chuoåi kyù töï nhaäp vaøo coù ñoái xöùng hay khoâng ?program minh_hoa_ham_val;uses crt;varb:string;a,c,i,result:integer;beginclrscr;writeln('MINH HOA THU TUC VAL() ');Writeln('--------------------');writeln('nhap vao mot so nguyen ');readln(a);writeln('nhap vao mot chuoi so ');readln(b);val(b,i,result);c:=a+i;writeln('Ket qua ',c);writeln('Nhan phim Enter de ket thuc ');readln;end.**bt: vieát chöông trình nhaäp vaøo caâu tuïc ngöõ , ví duï ‘Gaàn möïc thì ñen gaàn ñeøn thì saùng ‘ maùy seõ in moät doøng moät töø

Bieân soaïn : Tröông vaên Tuyeán 119

Page 120: Pascal 1

GIAÙO TRÌNH PASCAL Trang 120TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

program ct;uses crt;var st1,st2:string;dung:boolean;i:integer;beginclrscr;writeln('Nhap chuoi 1 ');readln(st1);writeln('Nhap chuoi 2 ');readln(st2);if length(st1)=length(st2) thenbegin dung:=true; for i:=1 to length(st1) do if pos(st1[i],st2)=0 then dung:=false else delete(st2,pos(st1[i],st2),1);end; if dung then writeln(' thoa ') else writeln(' khong');readln;end.

Page 121: Pascal 1

GIAÙO TRÌNH PASCAL Trang 121TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongTHUÛ TUÏC VAØ HAØMI) Ñònh nghóa : Thuû tuïc vaø haøm laø moät chöông trình thöïc hieän moät chöùc naêng naøo ñoù trong soá taát caû caùc chöùc naêng cuûa moät chöông trình`Khaùi nieäm naøy ñöôïc ñöa ra vôùi muïc ñích sau :1) Cho pheùp ngöôøi laäp trình vieát moät ñoaïn chöông trình coù theå goïi thöïc hieän töø caùc vò trí khaùc nhau cuûa chöông trình 2) Giuùp chöông trình coù caáu truùc roû raøng coù theå thaáy ngay dieãn tieá`n cuûa chöông trình qua caùc leänh ñöôïc goïi hay thuû tuïc hay haøm3) Chöông trình deã phaùt trieån khi coù theâm yeâu caàu môùi vaø deå daøng phaùt hieän loåi khi sai chöông trình (Xaùc ñònh nhanh ñoaïn chöông trình gaây ra loåi )4) Giuùp ngöôøi laäp chöông trình xaây döïng giaûi thuaät cho chöông trình chính vaø töøng böôùc xaây döïng cho thuû tuïc vaø haøm5)Giöõa haøm vaø thuû tuïc coù söï khaùc nhau cô baûn sau : haøm coù keát quaû laø moät giaù trò voâ höôùng thoâng qua teân cuûa noù neân haøm ñöôïc duøng vaøo bieán thöïc ñeå tính toaùn ,coøn thuû tuïc thì thoâng qua gia trò neân khoâng theå duøng trong bieåu thöùc ñeå tính toaùn ñöôïcII) Caáu truùc ñôn giaûn cuûa thuû tuïc vaø haøm :-Thuû tuïc : procedure <teân thuû tuïc > [caùc tham soá ];[var khai baùo caùc bieân]begin<caùc leänh>end;HAØMFunction<teân haøm >[caùc tham soá]:kieåu traû veà;[var khai baùo caùc bieán ]begin<Caùc leänh>;tenhaøm :=giaù trò traû veà;end;Chuù yù :Kieåu traû veà cua haøm laø caùc kieåu sau :-Kieåu soá ,real,integer;-Chuoåi ,kí töï ,or luaän lyù ;khoâng ñöôïc söû duïng caùc kieåu do ngöôøi duøng ñònh nghóa;II) Söû duïng caùc bieân khi duøng thuû tuïc haøm ,ñöôïc chia ra laøm hai loaïi sau :1)Bieán toaøn cuïc : ñöôïc khia baùo ôû ñaàu chöông trình,ñöôïc söû duïng trong moïi thuû tuïc hay haøm 2)Bieán cuïc boä :

Bieân soaïn : Tröông vaên Tuyeán 121

Page 122: Pascal 1

GIAÙO TRÌNH PASCAL Trang 122TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGñöôïc khai baùo trong moät thuû tuïc hay haøm chæ ñöôïc hieåu vaø söû duïng beân tong thuû tuïc hay haøm ñoù Chuù yù : trong tröôøng hôïp coù söï truøng bieán giöõa bieán toaøn cuïc vaø bieán cuïc boä :Bieán seõ ñöôïc hieåu theo thöù töï sau :1) Bieán cuïc boä khi thöïc hieän2) Laø bieán toaøn cuïc khi thöïc hieän chöông trình chính IV) Caùch truyeàn theo tham soá trong thuû tuïc vaø haøm : coù hai caùch 1)Truyeàn theo giaù trò 2)Truyeàn theo ñòa chæ : Trong caùch truyeàn theo ñòa chæ tröôùc tham soá truyeàn phaûi coù chöõ VAR Yù nghóa : truyeàn theo giaù trò thì tham soá khi keát thuùc thuû tuïc hay haøm seõ khoâng thay ñoåi giaù trò -Truyeàn theo ñòa chæ thì tham soá seõ bò thay ñoåi giaù trò khi keát thuùc thuû tuïc hay haømví duï :{viet doan chuong trinh mo ta functiontinh gia tri cua bieu thuc x^3-3x2+1o day x la mot so tuc tuy y }program func1;uses crt;var x:real;OK:CHAR;(*==================================================*)function f(x:real):real; begin f:=sqr(x)*x-3*sqr(x)+1; end ;(*==================================================*) begin {Main program } clrscr; while ok<>'N' do begin write('Nhap x=');readln(x); write('f(x)=x^3-x^2+1=',f(x):10:2); write('Nhap nua khong (C/K)?');readln(OK); OK:=UPCASE(OK);

end; readln; end.----{Tinh ham so a^n ,o day a la so thuc va n la so tu nhien

Page 123: Pascal 1

GIAÙO TRÌNH PASCAL Trang 123TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong tuy y duoc nhap tu ban phim }program func1;uses crt;var a:real;n :integer;OK:CHAR;(*==================================================*)function a_mu_n(a1:real;n1:integer):real;var i:integer; T:real; begin T:=a1; for i:=1 to n1 do T:=a1*T; a_mu_n:=T; end ;(*==================================================*) begin {Main program } clrscr; while ok<>'N' do begin write('Nhap a,n=');readln(a,n); write('a mu n=',a_mu_n(a,n):10:2); write('Nhap nua khong (Y/N)?');readln(OK); OK:=UPCASE(OK); end; readln; end.--{Tinh ham so a^n ,o day a la so thuc va n la so tu nhien tuy y duoc nhap tu ban phim }program func2;uses crt;var a:integer;n :integer;OK:CHAR;(*==================================================*)function check(n:integer):boolean;(*neu n nguye to thi ham tra ve gia tri true ;neu khong thi ham tra ve gia tri false *)var kt:boolean; i:integer; begin KT:=true; i:=2 ; while KT and (i <= n div 2) do

Bieân soaïn : Tröông vaên Tuyeán 123

Page 124: Pascal 1

GIAÙO TRÌNH PASCAL Trang 124TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG if (n mod i=0) then KT:=false else inc(i); check:=KT; end ;(*==================================================*) begin {Main program } clrscr; while ok<>'N' do begin write('Nhap a=');readln(a); check(a); if check(a) then write(' A la so nguyen to ') else write(' A la hop so '); write('Nhap nua khong (Y/N)?');readln(OK); OK:=UPCASE(OK); end; readln; end.--{ dung function tinh USCLN cua hai so tu nhien x,y theo thuat toan eclid }program func2;uses crt;var x,y:integer;n :integer;OK:CHAR;(*==================================================*)function uscln(x,y:integer):integer;var kt:boolean; i:integer; begin while x<>y do if x>y then x:=x-y else y:=y-x; uscln:=x; end ;(*==================================================*) begin {Main program } clrscr; while ok<>'N' do begin write('Nhap x,y=');readln(x,y); write('uscln ',uscln(x,y)); write('Nhap nua khong (Y/N)?');readln(OK); OK:=UPCASE(OK);

Page 125: Pascal 1

GIAÙO TRÌNH PASCAL Trang 125TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong end; readln; end.----laäp chöông trình conñeå hoaùn chuyeån hai giaù trò cuûa hai bieán nguyeânprogram chuongtrinhcon1;var a,b :integer; z :real; procedure tieude;

begin writeln('**************************************'); writeln(' CHUONG TRINH CON '); writeln('**************************************'); end; PROCEDURE hoanchuyen(var a,b :integer); var temp:integer; begin temp:=a; a:=b; b:=temp; end; (********CHUONG TRINH CHINH***************) BEGIN write('Nhap hai gia tri nguyen');readln(a,b); hoanchuyen(a,b); WRITELN('a va b la:',a,' va ',b); READLN; END.

{ viet chuong trinh tinh giai thua }program gthua;varn:integer;GT:real;procedure giaithua(m:integer;var gt:real);var i:integer; begin gt:=1; for i:=1 to m do gt:=gt*i; end; begin { chuong trinh chinh } write(' nhap vao mot so muon tinh giai thua ');readln(n); while n>0 do begin

Bieân soaïn : Tröông vaên Tuyeán 125

Page 126: Pascal 1

GIAÙO TRÌNH PASCAL Trang 126TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG giaithua(n,gt); writeln('giai thua cua ',n,'la ',gt:12:0); writeln; write(' nhap vao mot so muon tinh giai thua =0 : ket thuc'); readln(n); end;end.Nhaän xeùt : bieán I laø bieán cuïc boä chæ coù giaù trò trong thuû tuïc giai thöøa bieán n,GT laø bieán toaøn cuïc coù gí trò trong toaøn boä chöông trình caùc thoâng soá trong vieäc goïi chöông trình goïi laø thoâng soá thöïc 2ví duï :PROGRAM QUITEXAMPLE;vari:integer;function userquits:boolean;{tra ve true neu muon cham dut chuong trinh}var ans: char; begin write('tinh nua khong ?(Y/N?)');READLN(ANS); userquits:=(upcase(ans)<>'Y'); END; begin writeln('vi du thoat (Quit Example)'); i:=0; repeat i:=i+1; writeln('i=',i); until userquits; end.Thoâng soá vaø caùch truyeàn : Caùc danh saùch trong danh saùch tham soá cuûa procedure hay function goïi laø tham soá hình thöùc ( formal parameter ) . Caùc thoâng soá trong lôøi goïi chöông trình goïi laø thoâng soá thöïc ( actual parameter ) cuûa chuùng trong danh saùch thoâng soá . Coù hai loaïi thoâng soá -Thoâng soá vò trí (value parameter ) -Thoâng soá bieán (variaeble parameter )a) thoâng soá hình thöùc tròkhoâng ñi sau chöõ var trong danh saùch caùc thoâng soá hình thöùc khi chöông trình con ñöôïc goïi , thoâng soá trò ñöôïc caáp oâ nhôù vaø nhaän laø baûn sao cuûa trò thoâng soá thöïc . Do ñoù nhöõng thay ñoåi cuûa thoâng soá hình thöùc trò seõ khoâng aûnh höôûng ñeán chöông trình chính nghóa laø laøm thay ñoåi thoâng soá thöïc töông öùngví duï :program valueparameter;

Page 127: Pascal 1

GIAÙO TRÌNH PASCAL Trang 127TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongvarA,B,C :integer;Procedure printvalue(X,Y,Z: INTEGER);Begin

X:=X*2;Y:=Y*2;WRITELN;WRITELN(‘Trong thu tuc : X:=’,X,’Y=’,Y,’Z=’,Z);

End; {PRINTVALUES}BEGIN

Writeln(‘Thong so tri ‘);A=10;B=20;C=30;Writeln;writeln(‘truoc khi vao thu tuc A=’,A,’B=’,B,’C=’,C);PRINTVALUES(A,B,C);WRITELN;writeln(‘SAU khi RA KHOI thu tuc A=’,A,’B=’,B,’C=’,C);

END.LÖU YÙ : ta coù theå keát hôïp giöõa thoâng soá trò vaø thoâng soá bieánVí duï Procedure Test(param1,param2:integer;Var param3:real,param4:char);Tham soá hình thöùc trò : param1,param2,param4Tham soá hình thöùc bieán : param3 Sau chöông trình con ñaõ thöïc hieän xong thì nhöõng bieán cuïc boä

(keå caû thoâng soá hình thöùc trò ) bò xoaù boû trong boä nhôù Khi caàn truyeàn döôùi daïng thoâng soá moät caáu truùc döõ lieäu lôùn

( ví duï daõy ) cho moät chöông trình con thì chuùng ta neân ñaët thoâng soá hình thöùc laø thoâng soá bieán ,vì neáu ñaët noù laø thoâng soá hình thöùc trò thì chuùng ta seõ toán theâm boä nhôù vaø thôøi gian ñeå chuyeån laïi caáu truùc ñoù

Tham soá thaät töông öùng vôùi tham soá trò cuûa procedure hoaëc function ,coù theå laø bieán haèng ,bieåu thöùc , coøn tham soá thaät töông öùng vôùi tham soá bieán phaûi laø bieán

program vd;var hesoa,hesob,hesoc,triso:real;procedure timdelta(a,b,c:real;var delta:real);begin delta:=b*b-4*a*c;end;begin {tham so that tuong ung voi tham so tri la bien } writeln('nhap cac he so cua phung trinh bac hai '); readln(hesoa,hesob,hesoc); timdelta(hesoa,hesob,hesoc,triso); writeln('triso=',triso:12:4); timdelta(2,3,3,triso); {tham so that tuong ung voi tham so tri la hang} timdelta(hesoa+1,hesob+1,hesoc+1,triso); readln; end.Nhaän xeùt :tham soá thaät töông öùng tham bieán phaûi laø bieán

Bieân soaïn : Tröông vaên Tuyeán 127

Page 128: Pascal 1

GIAÙO TRÌNH PASCAL Trang 128TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGDo ñoù Timdelta(hesoa,hesob,hesoc,5),sai

VÍ duï : Laäp chöông trình tính a/b:c/dprogram chuongtrinhcon;var a,b,c,D :integer; z :real; procedure tieude; begin writeln('**************************************'); writeln(' CHUONG TRINH CON '); writeln('**************************************'); end; PROCEDURE nhap(var x,y :integer); var ok :char; begin repeat write('tu so :=');readln(x); write('mau so :=');readln(y); write('co sua so lieu khong (co/khong)');readln(ok); until (ok='K') OR (ok='k'); end; function chia(x,y:REAL):real; begin if y<>0 then chia:=x/y else begin write(#7,'khong chia duoc vi mau so khac khong '); halt; end; END; (********CHUONG TRINH CHINH***************) BEGIN TIEUDE; NHAP(A,B); NHAP(C,D); Z:=CHIA(A,B)*CHIA(C,D); WRITELN('TY SO A/B VA B/D LA :',Z:8:2); READLN; END.

---Vieát chöông trình kieåm tra moät soá töï nhieân coù phaûi laø soá nguyeân toá hay khoâng ?program chuongtrinhcon3;var a :integer;

Page 129: Pascal 1

GIAÙO TRÌNH PASCAL Trang 129TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong b :boolean; procedure tieude; begin writeln('**************************************'); writeln(' CHUONG TRINH CON '); writeln('**************************************'); end; PROCEDURE nguyento(a:integer;var tiep :boolean); var i:integer; begin tiep:=true; i:=2; while(tiep) and (i<=a div 2) do if a mod i=0 then tiep:=false else inc(i); end; (********CHUONG TRINH CHINH***************) BEGIN write('Nhap gia tri nguyen ');readln(a); tieude; nguyento(a,b); if b then WRITELN('a la mot so nguyen to:') else WRITELN('a khong phai la mot so nguyen to:'); READLN; END.

--- Caâu hoûi bieán cuïc boä ,bieán toång theå truyeàn tham bieán cho

thuû tuïc ,haøm :1.Caùc khaúng ñònh sau ñuùng hay sai :a.Bieán cuïc boä laø bieán ñöôïc moâ taû beân trong thuû tuïc hoaëc haømb.Bieán toång theå laø bieán ñöôïc moâ taû trong phaàn khia baùo cua chöông trình chính bieán cuïc boä vaø bieán toång theå trong moät chöông trình chính coù theå truøng teân2.Caùc khaúng ñònh sau ñuùng hay sai :a.bieán cuïc boä khoâng coù giaù trò ôû beân ngoaøi khi teân cuûa bieán ñoù khoâng ñöôïc khai baùo ôû beân ngoaøib.Giaù trò cuûa bieán cuïc boä seõ ñöôïc giöû nguyeân khi bieán ñöôïc khai baùo beân ngoaøic.giaù trò cuûa bieá toång theå hoaøn toaøn khoâng phuï thuoäc vaøo vieäc thöïc hieän beân trong caùc haøm vaø thuû tuïc 3.Trong Pascal coù bao nhieâu caùch truyeàn giaù trò cho bieán trong thuû tuïc vaø haøm(phaân bieät coù vaø khoâng coù töø khoaù var)

Bieân soaïn : Tröông vaên Tuyeán 129

Page 130: Pascal 1

GIAÙO TRÌNH PASCAL Trang 130TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGtraû lôøi : 1. a: ñuùng ;b:ñuùng ;c: ñuùng

2. a: ñuùng ;b:sai ;c: sai 3.Traû lôøi :coù 3 caùch truyeàn trong thuû tuïc vaø haøm caùch 1: truyeàn baèng bieán toång theåcaùch 2: Truyeàn baèng bieán ñoái daïng tham bieán giaù tròcaùch 3: Truyeàn baèng ñoái daïng tham soá bieán bt) Baïn haõy in vaø chay thöû chöông trình sau :procedure vd_thamso(x,y:integer); begin x:=x+1;y:=y+1; write(x:5,y:5); end; (*=======================================================*) begin {chuong trinh chinh } clrscr; a:=1;b:=4; vd_thamso(a,b); write(a:5,b:5);{ do caùch truyeàn tham trò caùc bieán a,b khoâng thay ñoåi khi ra khoûi thuû tuïc } readln; end.---(*======================================================*)procedure vd_thamso( x:integer; y:integer); begin x:=x+1;y:=y+1; write(x:5,y:5); end; (*=======================================================*) begin {chuong trinh chinh } clrscr; a:=1;b:=4; vd_thamso(a,b); write(a:5,b:5); readln; end.Keát quaû 2 5

1 4

Page 131: Pascal 1

GIAÙO TRÌNH PASCAL Trang 131TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong----program thamso;uses crt;var a,b:integer;

(*======================================================*)procedure vd_thamso(x,y:integer); begin x:=x+1;y:=y+1; write(x:5,y:5); end; (*=======================================================*) begin {chuong trinh chinh } clrscr; a:=1;b:=4; vd_thamso(a,b); write(a:5,b:5);{ do caùch truyeàn tham trò caùc bieán a,b khoâng thay ñoåi khi ra khoûi thuû tuïc } readln; end.---(*======================================================*)procedure vd_thamso( x:integer;var y:integer); begin x:=x+1;y:=y+1; write(x:5,y:5); end; (*=======================================================*) begin {chuong trinh chinh } clrscr; a:=1;b:=4; vd_thamso(a,b); write(a:5,b:5); readln; end.Keát quaû 2 5

1 5--procedure vd_thamso(x,y:integer);

Bieân soaïn : Tröông vaên Tuyeán 131

Page 132: Pascal 1

GIAÙO TRÌNH PASCAL Trang 132TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG begin x:=x+1;y:=y+1; write(x:5,y:5); end; (*=======================================================*) begin {chuong trinh chinh } clrscr; a:=1;b:=4; vd_thamso(a,b); write(a:5,b:5);{ do caùch truyeàn tham trò caùc bieán a,b khoâng thay ñoåi khi ra khoûi thuû tuïc } readln; end.---(*======================================================*)procedure vd_thamso(var x:integer;var y:integer); begin x:=x+1;y:=y+1; write(x:5,y:5); end; (*=======================================================*) begin {chuong trinh chinh } clrscr; a:=1;b:=4; vd_thamso(a,b); write(a:5,b:5); readln; end.Keát quaû 2 5

2 5Vieát Chöông trình con kieåm tra xem phaàn töû x coù trong moät daõy a[] khoâng ?program proc;type a1=string[80];var a:a1;i:integer;x,ok:char;c:boolean;procedure tim(x:char;b:a1;var da:boolean); begin

Page 133: Pascal 1

GIAÙO TRÌNH PASCAL Trang 133TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong da:=false; i:=1; while not(da) and (i<=length(a)) do if x=a[i] then da:=true else inc(i); end; begin while ok <> 'N' do begin write('Nhap vao a');readln(a); write('Nhap vao x');readln(x); tim(x,a,c); if c then write('co') else write('Khong'); write('Ban co tiep ');readln(ok); ok:=upcase(ok); end; readln; end.--Bt: Vieát chöông trình xuaát ra 100 soá nguyeân toá ñaàu tieânprogram pp;const max=100;var dem,i:integer;c:array[1..100] of integer;function nguyento(a:integer):boolean;var i :integer;tiep : boolean; begin tiep:=true;i:=2; while tiep and (i<=a div 2) do if a mod i =0 then tiep:=false else inc(i); nguyento:=tiep; end; begin dem:=0;i:=2; while (i<=max) do IF NGUYENTO(i) THEN begin dem:=dem+1; c[dem]:=i; inc(i); end else inc(i); for i:=1 to dem do write(c[i],';'); readln; end.

Bieân soaïn : Tröông vaên Tuyeán 133

Page 134: Pascal 1

GIAÙO TRÌNH PASCAL Trang 134TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG--CHUONG TRINH CON Program chuongtrinhmangmotchieu;uses crt;typema=array[1..30] of integer;var i,j,n,hang,max,m,d,t,X:integer;c,b,dem,a:ma;chinhphuong,nguyento,tiep:boolean;

procedure nhap(n:integer;var a:ma); begin

for i:=1 to n do begin write('nhap a[',i,']=');readln(a[i]); end; end; procedure xuat(n:integer;var a:ma); begin for i:=1 to n do begin write(a[i]:3); end; end;

procedure sum(n:integer;var a:ma);begint:=0;for i:=1 to n do

t:=a[i]+t;

end;

procedure chinh_phuong(n:integer;var a:ma);begind:=0; for i:=1 to n do b[i]:=0;

for i:=1 to n do begin

t:=2; tiep:=true;while tiep and (t<=a[i] div 2 ) do

begin if a[i] <> t*t then t:=t+1 else tiep:=false;

Page 135: Pascal 1

GIAÙO TRÌNH PASCAL Trang 135TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong if not tiep then begin inc(d); b[d]:=a[i]; end;

end;

end; write('cac phan tu chinh phuong'); for i:=1 to d do write(b[i],';');end;procedure maximum(n:integer;var a:ma);varmax,chiso:integer;begin max:=-32768; CHISO:=0; for i:=1 to n do if a[i] > max then

max:=a[i];I:=0; while((a[i]<>max) and (i<=n)) do begin

inc(chiso); inc(i);

end; writeln('phan tu a[ ',chiso,'] = ',max,'la phan tu lon nhat cua mang'); end;procedure Nto(n:integer;var a:ma);var l:integer;

BeginL:=0; FOR I:=1 TO N DO B[I]:=0; for i:=1 to n do begin nguyento:=true;t:=2;

while nguyento and (t<=a[i] div 2) do if a[i] mod t=0 then nguyento:=false else t:=t+1; if nguyento then begin inc(l);

b[l]:=a[i];

end;

Bieân soaïn : Tröông vaên Tuyeán 135

Page 136: Pascal 1

GIAÙO TRÌNH PASCAL Trang 136TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG end;

write('cac so nguyen to la ') ; for i:=1 to l do write(b[I],';'); end;procedure hoanvi(var a,b:integer);var tam:integer;begin

tam:=a;a:=b;b:=tam;

end;procedure hoanvimang(N:integer;VAR A:MA);var pass:integer;beginfor i:=1 to N-1 do for j:=i+1 to n do if(A[i] > A[j]) then

hoanvi(A[i],A[j]);end;PROCEDURE TIM(X:INTEGER;VAR A:MA);BEGIN FOR I:=1 TO N DO IF A[I]=X THEN WRITE ('PHAN TU A',I,']=',X);END;begin

clrscr;write('Cho n:');readln(n);nhap(n,a);xuat(n,a);writeln;(*sum(n,a); write('tong la ',t);chinh_phuong(n,a);NTO(N,A);maximum(n,a);*)hoanvimang(N,A);xuat(n,a);writeln;WRITE('NHAP X');READLN(X);TIM(X,A);

readln;

Page 137: Pascal 1

GIAÙO TRÌNH PASCAL Trang 137TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongend.----------program proce;typema=array[1..30,1..30] of integer;MB=ARRAY[1..30] of integer ;var a:ma;B,c:MB;i,n,m,j,dem,t:integer;nguyento,chinhphuong:boolean;procedure nhap(n,m:integer;var a:ma);beginfor i:=1 to n do for j:=1 to m do begin write('nhap a[',i,j,']= ');readln(a[i,j]); end;

end;procedure xuat(n,m:integer;var a:ma);beginfor i:=1 to n do begin writeln; for j:=1 to m do write(a[i,j]:4); end;end;

procedure hoanvi(var a,b:real);var tam:real;begin tam:=a; a:=b; b:=tam;

end;procedure maximum(n,m:integer;var a:ma);var max:real;beginmax:=a[1,1];for i:=1 to n do for j:=1 to m do if max <a[i,j] then max:=a[i,j];

Bieân soaïn : Tröông vaên Tuyeán 137

Page 138: Pascal 1

GIAÙO TRÌNH PASCAL Trang 138TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG write(' max la',max);

end;procedure maxi(n:integer;var b:mb);var max:integer;beginmax:=-32767;for i:=1 to n do if max <b[i] then max:=b[i]; write(' max la',max);

end;procedure Hchinhphuong(n,m:integer;var a:ma);VAR DEM:INTEGER;T:REAL;TIEP,CHINHPHUONG:BOOLEAN;BEGIN DEM:=0; FOR I:=1 TO N DO FOR J:=1 TO M DO BEGIN TIEP:=FALSE;T:=2; WHILE NOT (TIEP) AND (T <= A[I,J]/2) DO IF A[I,J] <>T*T THEN T:=T+1 ELSE TIEP:=TRUE; CHINHPHUONG:=TIEP; IF CHINHPHUONG THEN BEGIN INC(DEM); B[DEM]:=A[I,J]; END; END; FOR I:=1 TO DEM DO WRITE(B[I]);END;PROCEDURE NTO(N,M:INTEGER;A:MA);VAR I,DEM,T:INTEGER;NGUYENTO:BOOLEAN;BEGIN FOR I:=1 TO N DO FOR J:=1 TO M DO BEGIN T:=2;NGUYENTO:=TRUE; WHILE NGUYENTO AND (T<=A[I,J]/2) DO IF NGUYENTO THEN T:=T+1 ELSE NGUYENTO:=FALSE; IF NGUYENTO THEN

Page 139: Pascal 1

GIAÙO TRÌNH PASCAL Trang 139TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong BEGIN INC(DEM); B[DEM]:=A[I,J]; END END; FOR I:=1 TO DEM DO WRITE(B[I]); writeln; writeln('so nguyen to lon nhat la :'); maxi(n,b);END;procedure ntohang(n,m:integer;a:ma);begin for i:=1 to n do b[i]:=0;dem:=0; for i:=1 to n do begin c[i]:=0; for j:=1 to m do begin

nguyento:=true;t:=2; while nguyento and (t<=a[i,j] / 2) do if a[i,j] mod t = 0 then nguyento:=false else t:=t+1; if nguyento then begin inc(dem); c[i]:=c[i]+a[i,j]; b[dem]:=a[i,j]; end; end; end; for i :=1 to n do writeln('tong cac so nguyen to o hang ',i,' la :',c[i]); end;beginwrite('nhap n');readln(n);write('nhap m');readln(m);nhap(n,m,a);xuat(n,m,a);maximum(n,m,a);{HCHINHPHUONG(N,M,A);}NTO(N,M,A);ntohang(n,m,a);readln;

end.

Bieân soaïn : Tröông vaên Tuyeán 139

Page 140: Pascal 1

GIAÙO TRÌNH PASCAL Trang 140TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

program proce;USES CRT;typema=array[1..30,1..30] of integer;MB=ARRAY[1..30] of integer ;var a:ma;B,c:MB;i,n,m,j,dem,t,CHON:integer;nguyento,chinhphuong:boolean;OK:CHAR;procedure nhap(n,m:integer;var a:ma);beginfor i:=1 to n do for j:=1 to m do begin write('nhap a[',i,j,']= ');readln(a[i,j]); end;

end;procedure xuat(n,m:integer;var a:ma);beginfor i:=1 to n do begin writeln; for j:=1 to m do write(a[i,j]:4); end;end;

procedure hoanvi(var a,b:real);var tam:real;begin tam:=a; a:=b; b:=tam;

end;procedure maximum(n,m:integer;var a:ma);var max:real;beginmax:=a[1,1];for i:=1 to n do for j:=1 to m do if max <a[i,j] then

Page 141: Pascal 1

GIAÙO TRÌNH PASCAL Trang 141TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong max:=a[i,j]; write(' max la',max);

end;procedure maxi(n:integer;var b:mb);var max:integer;beginmax:=-32767;for i:=1 to n do if max <b[i] then max:=b[i]; write(' max la',max);

end;procedure Hchinhphuong(n,m:integer;var a:ma);VAR DEM:INTEGER;T:REAL;TIEP,CHINHPHUONG:BOOLEAN;BEGIN CLRSCR; DEM:=0; FOR I:=1 TO N DO FOR J:=1 TO M DO BEGIN TIEP:=FALSE;T:=2; WHILE NOT (TIEP) AND (T <= A[I,J]/2) DO IF A[I,J] <>T*T THEN T:=T+1 ELSE TIEP:=TRUE; CHINHPHUONG:=TIEP; IF CHINHPHUONG THEN BEGIN INC(DEM); B[DEM]:=A[I,J]; END; END; FOR I:=1 TO DEM DO WRITE(B[I]);END;procedure hangcp(n,m:integer;A:MA);VAR TIEP:BOOLEAN;BEGINCLRSCR; DEM:=0; FOR I:=1 TO N DO BEGIN C[I]:=0; FOR J:=1 TO M DO

Bieân soaïn : Tröông vaên Tuyeán 141

Page 142: Pascal 1

GIAÙO TRÌNH PASCAL Trang 142TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG BEGIN TIEP:=FALSE ;T:=2; WHILE NOT(TIEP) AND (T<=A[I,J] DIV 2) DO IF A[I,J]<>T*T THEN INC(T) ELSE TIEP:=TRUE; IF TIEP THEN BEGIN INC(DEM); C[I]:=C[I]+A[I,J]; B[DEM]:=A[I,J]; END; END; END; WRITE('TONG HANG CP '); FOR I:=1 TO N DO WRITE(C[I],';');END;PROCEDURE NTO(N,M:INTEGER;A:MA);VAR I,DEM,T:INTEGER;NGUYENTO:BOOLEAN;BEGIN FOR I:=1 TO N DO FOR J:=1 TO M DO BEGIN T:=2;NGUYENTO:=TRUE; WHILE NGUYENTO AND (T<=A[I,J]/2) DO IF NGUYENTO THEN T:=T+1 ELSE NGUYENTO:=FALSE; IF NGUYENTO THEN BEGIN INC(DEM); B[DEM]:=A[I,J]; END END; FOR I:=1 TO DEM DO WRITE(B[I]); writeln; writeln('so nguyen to lon nhat la :'); maxi(dem,b);END;procedure ntohang(n,m:integer;a:ma);begin for i:=1 to n do b[i]:=0;dem:=0; for i:=1 to n do begin c[i]:=0; for j:=1 to m do begin

Page 143: Pascal 1

GIAÙO TRÌNH PASCAL Trang 143TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong nguyento:=true;t:=2; while nguyento and (t<=a[i,j] / 2) do if a[i,j] mod t = 0 then nguyento:=false else t:=t+1; if nguyento then begin inc(dem); c[i]:=c[i]+a[i,j]; b[dem]:=a[i,j]; end; end; end; for i :=1 to n do writeln('tong cac so nguyen to o hang ',i,' la :',c[i]); end;procedure nGtohang(n,m:integer;a:ma);

beginDEM:=0; for i:=1 to n do begin c[i]:=0; for j:=1 to m do begin nguyento:=true;t:=2; while nguyento and (t<=a[i,j] DIV 2) do if a[i,j] mod t =0 THEN nguyento:=false ELSE INC(T); if nguyento then begin inc(dem); c[i]:=c[i]+a[i,j]; b[dem]:=a[i,j];

end end; end; write('CAC SO NGUYEN TO '); for i:=1 to n do write(c[i],';');end;beginwrite('nhap n');readln(n);write('nhap m');readln(m);nhap(n,m,a);

WHILE OK<>'N' DO BEGIN

Bieân soaïn : Tröông vaên Tuyeán 143

Page 144: Pascal 1

GIAÙO TRÌNH PASCAL Trang 144TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG xuat(n,m,a); WRITELN; WRITELN('1-MAXIMUM(N,M,A)'); WRITELN('2:HCHINHPHUONG(N,M,A)'); WRITELN('3:NTO(N,M,A)'); WRITELN('4:ntohang(n,m,a)'); WRITELN('5:HANGCP(N,M,A)'); WRITELN('6:nGtohang(n,m,a)');

WRITE('BAN CHON PHEP TINH NAO ');READLN(CHON); CASE CHON OF 1:MAXIMUM(N,M,A); 2:HCHINHPHUONG(N,M,A); 3:NTO(N,M,A); 4:ntohang(n,m,a); 5:HANGCP(N,M,A); 6:nGtohang(n,m,a); END; END;readln;

end.

******program dagiac;uses crt;const pi:real=3.14;var r ,dt,n,a,h1,h2:real;chon:integer;OK:CHAR;(*========================================================*)procedure dien_tich_hinh_tron(r:real); begin writeln('nhap ban kinh hinh tron : ');readln(r); dt:=pi*sqr(r); writeln('Dien tich hinh tron la :',dt); end; (*=========================================================*) procedure dien_tich_hinh_vuong(a:real); begin writeln('nhap canh hinh vuong : ');readln(a);

Page 145: Pascal 1

GIAÙO TRÌNH PASCAL Trang 145TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong dt:=sqr(a); writeln('Dien tich hinh vuong la :',dt); end; (*=========================================================*) procedure dien_tich_hinh_thoi(h1,h2:real); begin writeln('nhap duong cheo hinh thoi h1 ,h2 : ');readln(h1,h2); dt:=h1*h2/2; writeln('Dien tich hinh thoi la :',dt); end;

(*=========================================================*) begin while ok<>'N' DO BEGIN clrscr; writeln('Ban muon tinh dien tich gi : '); writeln('1-Tinh dien tich hinh tron .'); writeln('2-Tinh dien tich hinh vuong .'); writeln('1-Tinh dien tich hinh thoi .'); writeln('Chon 1,2 hoac 3 .');readln(chon); case chon of 1:dien_tich_hinh_tron(r); 2:dien_tich_hinh_vuong(a); 3:dien_tich_hinh_thoi(h1,h2); end; WRITE('CO TINH DIEN TICH NAO NUA KHONG ');READLN(OK); OK:=UPCASE(OK); END; readln; end.-------{ Tim va in ra tat ca cac so tu nhien nguyen to co 3 chu so la doi xung trong cach viet co so 2 } program hecoso; uses crt; var n:integer; (*=========================================================*) function ngto(n:integer):boolean;

Bieân soaïn : Tröông vaên Tuyeán 145

Page 146: Pascal 1

GIAÙO TRÌNH PASCAL Trang 146TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG var i: integer; begin i:=2; while(i<=sqrt(n)) and (n mod i>0 ) do inc(i); if i>sqrt(n) then ngto:=true else ngto:=false; end; (*=========================================================*) function dx(n:integer):boolean; var a:array[1..16] of integer; j,i: integer; begin i:=0; while n> 0 do begin inc(i); a[i]:=n mod 2; n:=n div 2; end; j:=1; while(j<= i div 2) and (a[j]=a[i-j+1]) do inc(j); if j=(i div 2)+1 then dx:=true else dx:=false; end;(*===============================================================*)begin { main program } writeln('cac so tu nhien thoa man n la :'); for n :=100 to 999 do begin if (dx(n)) and (ngto(n)) then writeln(n:4); end; readln; end.***********program tt;var n,j,i:integer;a:array[1..16] of integer;function nto(n:integer):boolean;var nguyento:boolean;k:integer;begin nguyento:=true;k:=2;

Page 147: Pascal 1

GIAÙO TRÌNH PASCAL Trang 147TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong while(nguyento) and (k<=n div 2) do if n mod k =0 then nguyento:=false else inc(k); if nguyento then nto:=true else nto:=false; end;function dx(n:integer):boolean;var nguyento:boolean;k:integer;begini:=0;while n>0 do begin inc(i); a[i]:=n mod 2; n:=n div 2; end; j:=1; while(j<=i div 2) and (a[j]=a[i-j+1]) do inc(j); if j>i div 2 then dx:=true else dx:=false;

end; begin {main program } for n:=100 to 999 do

if (dx(n)) and (nto(n)) then writeln(n); readln; end.****BAØI TAÄP STRING:Laäp laïi chöông trình con tìm xaâu kí töï C trong moät xaâu kí töï SÑoù chính laø haøm POS :Pos coù giaù trò baèng vò trí cuûa kí töï ñaàu cuûa xaâu X trong xaâu ST ,POS baèng vò trí ñaàu tieân cuûa xaâu X trong xaâu ST ,POS baèng khoâng neáu khoâng tìm thaáy {$V-}program strinpos;TYPESTR=STRING[30];VARS,C:STR;function POS(C,S:STRING):INTEGER;VAR I,J,LC,LS:INTEGER;FOUND:BOOLEAN;BEGIN FOUND:=FALSE;

Bieân soaïn : Tröông vaên Tuyeán 147

Page 148: Pascal 1

GIAÙO TRÌNH PASCAL Trang 148TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG POS:=0; I:=0; LC:=LENGTH(C); LS:=LENGTH(S); IF (LC>LS) OR (LS=0) OR(LC=0) THEN EXIT; REPEAT IF C[1]=S[I] THEN BEGIN FOUND:=TRUE; J:=2; WHILE J<=LC DO BEGIN IF I+J-1 >LS THEN FOUND:=FALSE ELSE IF C[J]<>S[I+J-1] THEN FOUND:=FALSE; J:=J+1; END; END; I:=I+1; UNTIL (I>LS) OR (FOUND=TRUE); IF FOUND THEN POS:=I-1; END; BEGIN WRITE('NHAP CHUOI S '); READLN(S); WRITE('NHAP CHUOI C ');READLN(C); WRITELN(POS(C,S)); READLN; END.

***********-program posq;type str=string[200];var s,st:str;i,n:byte;function post(var s:str;var st:str):byte;var thoat:boolean;i,n,dem,j:byte;begini:=1; thoat:=true;while (i<=length(st)) and thoat dobegin if st[i]=s[1] then begin dem:=1; for j:=2 to length(s) do if s[j]=st[i+j-1] then

Page 149: Pascal 1

GIAÙO TRÌNH PASCAL Trang 149TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong begin inc(dem); end;

end; if dem=length(s) then thoat:=false; i:=i+1;end;post:=i-1;end;beginwrite('Nhap chuoi ');readln(st);write('Nhap chuoi ');readln(s);i:=post(s,st);write('vi tri ',i);readln;end.Laäp chöông trình taùch chöõ ñaàu tieân TWORD ra khoûi moät xaâu kí töï .Ñeå ñôn giaûn ,ta ñònh nghóa "chöõ " laø taäp hôïp caùc kí töï khoâng chöùa caùc daáu phaân ñoaïn trong caâu : space( daáu caùch ),xuoáng doøng,Tab (daáu nhaûy caùch nhieàu kí töï )procedure tachtu(var TWORD,LINE):string;ví duï vôùi line:='VIET NAM' THÌ TWORD=VIET;Xin söõa laïi ñònh nghóa chöõ cho hôïp lyù hôn : chöõ laø cuïm kí töï chæ chöùa caùc kí töï ALPHABET töùc laø caùc kí töï 'A'..'Z' ,'a'..'z' .(coøn 'töø ' trong tieáng Vieät ñöôïc ñònh nghóa laø cuïm chöõ nhoû nhaát mang yù nghóa.Ví duï :'tröôøng hoïc' laø moät töø ,coù hai chöõ ,chöõ 'Tröôøng' coù 6 con chöõ hay 6 kí töï {$V-} { Kong kiem tra tinh tuong thich ve do dai khi xu ly xau}type ST200=STRING[200]; VAR W,STR:STRING[122]; (*---------------------------------------------*) PROCEDURE TACHTU(VAR TWORD:ST200;LINE:ST200); VAR I:INTEGER; BEGIN I:=1; TWORD:=''; (*NHAY QUA CAC BIEN KHONG PHAI LA ALPHABET *) WHILE ((UPCASE(LINE[I])<'A') OR (UPCASE(LINE[I])>'Z')) AND (I<=LENGTH(LINE)) DO I:=I+1; (*Nhat lay chu dau tien ra *) while ((upcase(line[i])>='A') and (upcase(line[i])<='Z')) and (I<=length(line)) do

Bieân soaïn : Tröông vaên Tuyeán 149

Page 150: Pascal 1

GIAÙO TRÌNH PASCAL Trang 150TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG begin TWORD:=TWORD+LINE[I]; I:=I+1; end; END; (*------------------------------------------------*) BEGIN WRITE('CHO MOT DONG ');readln(str); tachtu(w,str); write(w); readln; END.------*{$V-} { Kong kiem tra tinh tuong thich ve do dai khi xu ly xau}type ST200=STRING[200]; VAR W,STR:STRING[122]; LS:INTEGER; (*---------------------------------------------*) PROCEDURE TACHTU(VAR TWORD:ST200;LINE:ST200); VAR I:INTEGER; BEGIN I:=1; TWORD:='';LS:=LENGTH(LINE); (*NHAY QUA CAC BIEN KHONG PHAI LA ALPHABET *) WHILE not (UPCASE(LINE[I]) in ['A'..'Z']) AND (I<=LS) DO I:=I+1; (*Nhat lay chu dau tien ra *) while (UPCASE(LINE[I]) IN ['A' ..'Z']) and (I<=LS) do begin TWORD:=TWORD+LINE[I]; I:=I+1; end; END; (*------------------------------------------------*) BEGIN WRITE('CHO MOT DONG ');readln(str); tachtu(w,str); write(w); readln; END.

Page 151: Pascal 1

GIAÙO TRÌNH PASCAL Trang 151TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong BAØI TAÄP : ñeám soá chöõ trong xaâu kí töï : ví duï töø ‘Tröôøng hoïc ‘ coù 2 chöõ ,chöõ ‘Tröôøng ‘ vaø chöõ ‘hoïc’.{$V-}PROGRAM TT;TYPESTR200=STRING[200];VAR STR:STR200;

FUNCTION SOCHU(STR:STR200):INTEGER;VAR LS,I,DEM:INTEGER;BEGINI:=1;DEM:=0;LS:=LENGTH(STR);REPEATWHILE((UPCASE(STR[I])<'A') OR (UPCASE(STR[I])>'Z'))AND (I<=LS) DO I:=I+1; IF I<=LS THEN DEM:=DEM+1;WHILE((UPCASE(STR[I])>='A') AND (UPCASE(STR[I])<='Z'))AND (I<=LS ) DO I:=I+1;UNTIL I>LS;SOCHU:=DEM;END;BEGIN WRITE('DOC CHU ');READLN(STR); WRITE(SOCHU(STR)); READLN;END.------PROGRAM SOCHUX;TYPESTR=STRING[200];VARS:STR;I,LS,DEM:INTEGER;FUNCTION SOCHU(S:STR):INTEGER;BEGIN LS:=LENGTH(S);I:=1;DEM:=0; REPEAT WHILE (NOT(UPCASE(S[I]) IN ['A'..'Z'] )) AND (I<=LS) DO I:=I+1; IF I<=LS THEN DEM:=DEM+1; WHILE ((UPCASE(S[I]) IN ['A'..'Z'] )) AND (I<=LS) DO I:=I+1;UNTIL I>LS; SOCHU:=DEM;END;

Bieân soaïn : Tröông vaên Tuyeán 151

Page 152: Pascal 1

GIAÙO TRÌNH PASCAL Trang 152TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGBEGINWRITE('NHAP S');READLN(S);WRITELN(SOCHU(S));READLN;END.---BT :vieát laïi moät soá chöông trình con DELETEPROCEDURE DELETE(var st:string;pos,num:byte);BeginEnd;Pos:vi trí baét ñaàu xoaùNum :soá kí töï xoaù{$V-}program strdelete;TYPE str=string[200]; var s:str; (*------------------------------------------------------*) PROCEDURE DELETE(VAR ST:STR;POS,NUM:BYTE); VAR I,LS:BYTE; BEGIN ls:= length(st); for i:=pos+num to ls do s[i-num]:=s[i]; st[0]:=char(length(st)-num); end; begin s:='234567890abc'; delete(s,4,5); writeln(s); readln; END.

---

vieát laïi chöông trình Insertprogram insertion;typest200=string[200];var st,obj,s1,pos:st200;procedure insert1(var obj:st200;var st:st200;pos:byte);var i,n,m:integer;beginn:=length(obj);m:=length(st);s1:=st;st[pos+n]:=st[pos];for i:=pos+n+1 to m+n do

Page 153: Pascal 1

GIAÙO TRÌNH PASCAL Trang 153TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongst[i]:=s1[i-n];for i:=pos to pos+n-1 dost[i]:=obj[i-pos+1];st[0]:=char(m+n);end;beginwrite('Nhap obj ');readln(obj);write('Nhap st ');readln(st);write('Nhap vi tri ');readln(pos);insert1(obj,st,4);write(st);readln;end.

BT:Vieát chöông trình nhaäp vaøo töø baøn phím moät xaâu kí töï vaø in ra maøn hình xaâu kí töï ngöôïc .Chaúng haïn nhaäp ‘TRUNG TAM’ in ra ‘MAT GNURT.{$V-}program strNGUOC;USES CRT;VAR CAU:STRING[80];I:BYTE;BEGINWRITE('NHAP VAO MOT CAU');READLN(CAU);FOR I:= LENGTH(CAU) DOWNTO 1 DO WRITELN(CAU[I]);READLN;END.--*BT:vieát chöông trình nhaäp vaøo moät xaâu kí töï ,sau ñoù taùch thaønh xaâu con theo yù muoán,baèng caùch cho bieát vò trí ñaàu tieân vaø ñoä daøi cuûa xaâu kí töï conprogram tach_xau;uses crt;var st:string[80]; vt,dd:byte; begin clrscr; writeln('nhap vao mot xau ki tu ');readln(st); writeln('Muon tach xau tu vi tri nao ');readln(vt); writeln('cho biet do dai xau ki tu con ');readln(dd); writeln('--------------------------- '); writeln('xau ki tu duoc tach la ',copy(st,vt,dd)); readln; end.----*

Bieân soaïn : Tröông vaên Tuyeán 153

Page 154: Pascal 1

GIAÙO TRÌNH PASCAL Trang 154TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGBT:vieát chöông trình chuyeån ñoåi xaâu kí töï thaønh chöõ hoa ,xaâu kí töï thanh chöõ thöôøng program chuhoachuthuong;VAR S:STRING[80];

function chuhoa(s:string):string;var i:byte;begin for i:=1 to length(s) do s[i]:=upcase(s[i]); chuhoa:=s;end;function chuthuong(s:string):string;var i:byte;begin for i:=1 to length(s) do if s[i] in ['A'..'Z'] THEN S[I]:=CHR(ORD(S[I])+32); s[i]:=upcase(s[i]); CHUTHUONG:=s;end;BEGIN WRITELN('NHAP VAO XAU ');READLN(S); WRITELN(CHUHOA(S)); WRITELN(CHUTHUONG(S)); READLN;END.BT: Vieát chöông trình vieát haøm Proper (chöõ nghieâm chænh )program chu_nghiem_chinh;typestr=string[200];var chuoi:str;function proper(st:str):string;var s1,chuoi:str;i,contro,n:byte;kytutruoc,kytusau:char;begin st[1]:=upcase(st[1]);n:=length(st);i:=2; while (i<=n) do begin while (st[i]>=#65) and (st[i]<=#90 ) do begin st[i]:=char(ord(st[i])+32); i:=i+1; end; if st[i]=#32 then begin

Page 155: Pascal 1

GIAÙO TRÌNH PASCAL Trang 155TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong i:=i+1; st[i]:=upcase(st[i]); i:=i+1; end; while ((st[i]<#65) or (st[i]>#90)) AND (ST[I]<>#32) do i:=i+1;

end; proper:=st;end;beginwrite('nhap chuoi ');readln(chuoi);chuoi:=proper(chuoi);write('sau khi xu ly ',chuoi); readln;end.Ham proper co the viet theo cach sauprogram bt;typest100=string[100];var st,chuoi,vanban:st100;contro,i,n:byte;kytutruoc,kytusau:char;function proper(var chuoi:st100):string;beginn:=length(chuoi);vanban:=chuoi;kytutruoc:=' ';for contro:=1 to n dobeginkytusau:=char(ord(chuoi[contro]));case kytutruoc of 'A'..'Z':begin case kytusau of 'A'..'Z':CHUOI[contro]:=char(ord(kytusau)+32); 'a'..'z':chuoi[contro]:=kytusau; else chuoi[contro]:=kytusau end; end; 'a'..'z': chuoi[contro]:=kytusau; ' ': chuoi[contro]:=upcase(kytusau); end; kytutruoc:=kytusau;end;

Bieân soaïn : Tröông vaên Tuyeán 155

Page 156: Pascal 1

GIAÙO TRÌNH PASCAL Trang 156TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGproper:=vanban;

end;begin write('Nhap chuoi ');readln(vanban); vanban:=proper(vanban); write('sau khi xu ly ',vanban);readln;end.*chuyeån töø heä cô soá 2 sang heä cô soá 10program chuyenhe;TYPESTR=STRING[50];

var n,a,m,i:longint;b:array[1..16] of longint;HE2:STR;function mu2(n:longint):longint;var i,m:longint;beginm:=1;for i:=1 to n dom:=m*2;if i=0 then mu2:=1elsemu2:=m;end;

function he10(VAR HE2:STR):longint;BEGIN m:=0; n:=length(he2); for i:=1 to length(he2) do b[i]:=ord(he2[i])-48; for i:=1 to n do m:=m+b[i]*mu2(n-i); he10:=m;END;beginwrite('Nhap so torng he 2 ');readln(he2);write('he thap phan cua ',he2,' la : ',he10(he2));readln;end.

Vidu : nhap vao mot so kiem tra xem so do co phia la so nguyen to doi xung hay khong

Page 157: Pascal 1

GIAÙO TRÌNH PASCAL Trang 157TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongtypestr=STRING;

var n,a,m,i,dem,x:longint;b:array[1..16] of longint;so:STR;sox:string;function mu10(n:longint):longint;var i,m:longint;beginm:=1;for i:=1 to n dom:=m*10;if i=0 then mu10:=1elsemu10:=m;end;

function he10(VAR so:STR):longint;BEGIN m:=0; n:=length(so); for i:=1 to length(so) do b[i]:=ord(so[i])-48; for i:=1 to n do m:=m+b[i]*mu10(n-i); he10:=m;END;function doixung(so:str):boolean;var dx:boolean;beginn:=length(so);dx:=false;for i:=1 to n div 2 doif so[i]=so[n-i+1] then inc(dem);if dem=n div 2 then dx:=true;doixung:=dx;end;function nguyento(so:str):boolean;var x:longint;nto:boolean;begin n:=length(so); x:=he10(so); nto:=true; for i:=2 to x div 2 do if x mod i=0 then nto:=false; nguyento:=nto;

Bieân soaïn : Tröông vaên Tuyeán 157

Page 158: Pascal 1

GIAÙO TRÌNH PASCAL Trang 158TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGend;beginwrite('nhap so ');readln(so);if nguyento(so) and doixung(so) then write(so,' LA nguyento doi xung');readln;end.

----*BT : Laäp trình nhaäp vaøo töø baøn phím danh saùch hoïc sinh moät lôùp ,saép xeáp laïi danh saùch theo thöù töï abcprogram strsort;var ht:array[1..50] of string[23];t:string[23];i,j,n:integer; begin write('So hoc sinh :');readln(n); for i:=1 to n do begin write('nhap hoc sinh thu ',i, ':');readln(ht[i]);end; for i:=1 to n-1 do for j:=i+1 to n do if ht[i]> ht[j] then t:=ht[i]; ht[i]:=ht[j]; ht[I]:=t; writeln('===========KET QUA SAP XEP LA================'); FOR I:=1 TO N DO WRITELN(HT[I]); READLN; end.

---BT5: Laâp trình taùch töø cuoái cuøng ra khoûi moät xaâu kí töï va kieåm tra xem noù coù doái xöùng hay khoâng(*Lap trinh tach tu cuoi cung ra khoi mot xau ki tu cho truoc vakiem tra xem do co phai la nmot tu doi xung hay khong *)program tach;uses crt;var s,word:string;l,i,j:integer;beginclrscr;writeln('cho mot xau ki tu ');readln(s);i:=length(s);word:='';

Page 159: Pascal 1

GIAÙO TRÌNH PASCAL Trang 159TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongwhile (i>=1) and (s[i]<>#32) do {#n=chr(n)='2';#32=char(32)=''}{ ham ord('c') cho ta so thu tu cua ki tu 'c' trong bang ma ham chr(n) cho ta ki tu co so thu tu la n } begin word:=s[i]+word; dec(i); end; write('Tu cuoi cung cua xau la :');writeln(word); j:=1; l:=length(word); while (j<=l div 2) and (word[j]=word[l-j+1]) do inc(j); if j>(l div 2) then writeln('day la tu doi xung') else writeln('tu khong doi xung'); readln; end.---*

{cac so duoc viet trong he dem co so 16 su dung cac ki tu sau :0,1,..,9 va A,B,C,D,E,F chi cac so 10,11,12,13,14,15 hay viet chuoong trinh nhap so tu nhienN tu ban phim va chuyen so da cho sang he coso 16(con goi la he hexa }program strhexa;uses crt;const so:array[0..15] of char =('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');VAR N:LONGINT;A:ARRAY[1..16] OF CHAR;I,J:BYTE;BEGIN CLRSCR; WRITE('CHO MOT SO TU NHIEN');READLN(N); I:=0; WHILE N>0 DO BEGIN INC(I); A[I]:=SO[ N MOD 16]; N:=N DIV 16; END; WRITELN('bieu dien trong he hexa la: '); for j:=i dOwnto 1 do wrIte(A[J]); READLN; END.

Bieân soaïn : Tröông vaên Tuyeán 159

Page 160: Pascal 1

GIAÙO TRÌNH PASCAL Trang 160TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

--

PROGRAM TT;USES CRT;CONST SO:ARRAY[0..15] OF CHAR=('0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F');VAR N:LONGINT;I,J:BYTE;OK:CHAR;A:ARRAY[1..16] OF CHAR;BEGIN WHILE OK<>'N' DO BEGIN CLRSCR; FOR I:=1 TO 16 DO A[I]:=#32; WRITE('NHAP SO N ');READLN(N); WHILE N>0 DO BEGIN INC(I); A[I]:=SO[ N MOD 16]; N:=N DIV 16 ; END;

FOR J:=I DOWNTO 1 DO WRITE(A[J]); WRITE('CONTINUE (Y/N?)');READLN(OK); OK:=UPCASE(OK); END; READLN;END.

Bt:Laäp chöông trình thöïc hieän theo thöïc ñôn sau :1.Nhaäp soá töï nhieân n2.Nhaâp soá M trong heä ñeám 163-Chuyeån N sang heä soá 16 4.Chuyeån M sang heä 105.Ghi keát quaû ra fileChuù yù teäp keát quaû coù teân laø kq12.txt vaø bao goàm 4 doøng .Doøng thöù nhaát ghi soá N daïng thaäp phaân ,doøng thöù 2 ghi m döôùi daïng hexa ,doøng thöù 3 ghi N daïng hexa ,doøng thöù 4 ghi M daïng thaäp phaân********

Page 161: Pascal 1

GIAÙO TRÌNH PASCAL Trang 161TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongPROGRAM TT;USES CRT;VAR M,HEXAN:STRING[8];N:LONGINT;I,J:INTEGER;OK:CHAR;A:ARRAY[1..10] OF INTEGER;PROCEDURE CHUYENHE10;BEGIN FOR I:=1 TO LENGTH(M) DO IF (M[I]>= '0') AND (M[I]<='9') THEN A[I]:=ORD(M[I])-48 ELSE A[I]:=ORD(M[I])-55 ; N:=0; FOR I:= 1 TO LENGTH(M) DO N:=N*16+A[I];END;PROCEDURE CHUYENHE16;BEGIN I:=0; WHILE N>0 DO BEGIN INC(I); A[I]:=N MOD 16; N:=N DIV 16; END; FOR J:=I DOWNTO 1 DO BEGIN IF (A[J]<=9) THEN M[J]:=CHAR(A[J]+48 ) ELSE M[J]:=CHAR(A[J]+55); END; FOR J:=I DOWNTO 1 DO WRITE(M[J]);

END; BEGIN WHILE OK<>'N' DO BEGIN CLRSCR; FOR I:=1 TO LENGTH(M) DO M[I]:=#32; WRITE('NHAP M');READLN(M); CHUYENHE10;WRITELN; WRITELN(N); WRITE('NHAP N');READLN(N); CHUYENHE16;WRITELN; WRITE('TIEP(N/Y?)');READLN(OK); OK:=UPCASE(OK); END; READLN;

Bieân soaïn : Tröông vaên Tuyeán 161

Page 162: Pascal 1

GIAÙO TRÌNH PASCAL Trang 162TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG END.

****KIEÅU MUÏC (RECORD )Kieåu baûn ghi laø khuoân maãu cho moät caáu truùc maø caùc thaønh phaàn coù theå coù kieåu khaùc nhau –Ta goïi laø caùc tröôøngCuù phaùp :CUÙ PHAÙP :TYPE

<Teân kieåu baûn ghi > =RECORD<teân tröôøng >: <kieåu döõ lieäu>;

Teân tröôøng chæ coù yù nghóa beân trong ñònh nghóa kieåu baûn ghi,nghóa laø teân tröôøng coù theå truøng teân vôùi moät ñoái töôïng naøo ñoù ñöôïc ñònh nghóa ôû ngoaøi baûn ghi.Ví duï : taïo moät kieåu döõ lieäu baûn ghi cho ngaøy thaùng naêm nhö sau :TYPE

DATE=RECORDNGAY:1..31;THANG:1..12;NAM:1900.2000;

END;Chöông trình minh hoaï :program rec;typedate=recordngay:1..31;thang:1..12;nam:1900..2001;end;varng:array[1..30] of date;n,i:byte;beginwrite('Ban muon nhap bao nhieu ngay');readln(n);for i:=1 to n dobegin with ng[i] do begin write('nhap ngay thu ',i);readln(ng[i].ngay); write('nhap Thang thu ',i);readln(ng[i].Thang); write('nhap Nam thu ',i);readln(ng[i].nam);

end;end;write('cac ngay vua nhap la ');for i:=1 to n dobegin

Page 163: Pascal 1

GIAÙO TRÌNH PASCAL Trang 163TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong with ng[i] do begin writeln('nhap ngay thu ',i,' la ',ng[i].ngay,'-',ng[i].thang,'-',ng[i].nam);

end;end;

readln;end.

VÍ DUÏ 2: TA ñònh nghóa kieåu coù teân person ñeå bieåu dieãn thoâng tin veà moät nhaân vieân trong coâng ty vôùi yù nghóa chính nhö sau :PERSON

1.Hoï vaø teân2.Maõ nhaân vieân3.Maõ chöùc vuï4.Giôùi tính5.Ngaøy thang naêm sinh6.Tình taïng gia ñình neáu coù

a.neáu coù gia ñình ,goaùngaøy cöôùi (ngaøy,thaùng ,naêm )b.Neáu ly dòngaøy li dò (ngaøy ,thaùng ,naêm )ly dò laàn I (false,true )c.neáu ñoä thaâncoøn ôû vôùi boá meï (false,true ) thì khai baùo nhö sau :TYPE

TTGD=(DOCTHAN,COGD,LYDI,GOA);DATE=RECORD

Ngay:1..31;Thang:1..12;Nam:1900.2000;

END;PERSON=RECORD;

Ho_ten:RECORD;HO:STRING;TEN:STRING;

END;Manv:1..1000;Macv:char;Gioitinh:(nam,nu);Ngaysinh:date;CASE GD:TTGD OF

Cogd,goa: ( ngaycuoi:date);

Bieân soaïn : Tröông vaên Tuyeán 163

Page 164: Pascal 1

GIAÙO TRÌNH PASCAL Trang 164TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

Lydi:(ngaylydi:date);Lydilan1:boolean;Docthan:(ovoibome:boolean);

End;Var p1,p2: person;

Khi khia baùo hai bieán p1,p2 coù kieåu laø person thì hai bieán naøy seõ mang thoâng tin theo maãu sau :HoTeânMa nhan vienMa chuc vuGioi tinhNgay sinh Thang NamTình tang gia ñìnhTRUE hoaïc FALSE

THAM CHIEÁU BAÛN GHI :Ñeå tham chieáu hay truy caäp ñeán caùc thaønh phaàn cuûa moät baûn ghi ta söû duïng teân cuûa baûn ghi ,theo sau laø daáu chaám chaám vaø teán tröôøng muoán tham chieáu ñeánVÍ DUÏ

P1.HO_TEN.HO=’Nguyeân’;P1.ho_ten.ten:=’Chi’;P1.manv:=16;P1.macv:=’H’;P1.gioitinh:=nu;P1.ngaysinh.ngay:=9P1.ngaysinh.thang:=8P1.ngaysinh.nam:=1978P1.gd:=docthan;

Sau khi tham chieáu ta ñöôïc thoâng tin nhö sau :NguyenChi16HNu9 8 1978DocthanTRUE

Caùc pheùp toan treân baûn ghiChæ coù hai pheùp toaùn coù theå aùp duïng treân kieåu baûn ghi laø = vaø <>

Page 165: Pascal 1

GIAÙO TRÌNH PASCAL Trang 165TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong Moät vaøi ví duï : moät ñòa chæ bao goàm caùc döõ lieäu nhö soá nhaø ,teân phoá ,thaønh phoá : ta moâ taû record dia_chi nhö sau :TYPE

Dia_chi=RECORDSonha :integer;Pho :string[20];Thanh_pho:string[20];

End;Nhö vaäy chuùng ta coù 3 tröôøng laø so nhaø ,pho ,vaø Thanh_pho voùi kieåu khaùc nhau (integer;,string[20],string[15]) chuùng ñöôïc lieân keát vôùi nhau ñeå moâ taû ñòa chæ )Ñeå moâ taû thôøi gian DTE theo kieåu tieáng AnhTYPE

DATE=RECORDDay:1..31;Month : ( Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec); Year:integer;

End;

TYPENHAN_SU=RECORD

Ho_ten:string[30];Ngay_sinh:date;Gioitinh:(thí duï vöøa roài cho thaáy ñaëc ñieåm loàng nhau cuûa caáu truùc döõ lieäu nam,nu);O-Tai:dia_chi;Luong:real;End;

Ñeå moâ taû nhaân söï hay phieáu caùn boä ôû phoøng toå chöùc ,ta phaûi duøng caùc tröôøng hoï ,teân ,ngaøysinh,choå ôû ,Löông ..ôû ñaây ta laáy ví duï vôùi 5 tröôøng . Giaû söû coù moâ taû kieåu Date vaø diachi nhö ôû treântrong moâ taû record cuûa nhansu ,ta coù theå moâ taû caùc phaàn töû ( caùc tröôøng ) cuûa record laø moät kieåu record khaùc nhö tröôøng ngaøy sinh vaø choå ôû Ta cuõng coù theå moâ taû tröôøng ngaysinh neáu nhö chöa coù moâ taû kieåu DATETYPE

Nhan_su=RECORDHo_ten: string[30];Ngay_sinh:RECORD

Ngay:1..31;Thang:1..12;Nam:integer;

END;

Bieân soaïn : Tröông vaên Tuyeán 165

Page 166: Pascal 1

GIAÙO TRÌNH PASCAL Trang 166TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

Gioi_tinh:(nam,nu);O-tai: Dia_chi;Luong:real;

End;

PROGRAM RECORDS;{CHUA CHAY TOT)TYPE DIA_CHI=RECORD SO_NHA:INTEGER; PHO:STRING[20]; THANH_PHO:STRING[15]; END;TYPE NHAN_SU=RECORD HO_TEN :STRING[30]; NGAY_SINH:RECORD NGAY:1..31; THANG:1..12; NAM:INTEGER; END; GIOI_TINH:(NAM,NU); O_TAI:DIA_CHI; LUONG:REAL; END;VAR NGUOI1,NGUOI2:NHAN_SU;BEGIN WRITE('HO VA TEN NGUOI 1:');READLN(NGUOI1.HO_TEN); WRITE('NGAY SINH:');READLN(NGUOI1.NGAY_SINH.NGAY); WRITE('THANG SINH');READLN(NGUOI1.NGAY_SINH.THANG); WRITE('NAM SINH');READLN(NGUOI1.NGAY_SINH.NAM); WRITE('O TAI NHA');READLN(NGUOI1.O_TAI.SO_NHA); WRITE('THANH PHO');READLN(NGUOI1.O_TAI.THANH_PHO);END.

ÑÒNH NGHÓA KIEÅU TÖÔØNG MINH :ñònh nghóa kieåu töôøng minh töùc laø khai baùo toaøn boä caùc tröôøng cuûa moät kieåu baûn ghio naøo ñoù .Ví duï döôùi ñaây ñònh nghóa kieåu ly_lich coù 10 nhoùm vaø tröôøng döõ lieäu nhö sau :TYPELy_lich=RECORD ma_so :integer; holot :string[17]; ten :string[7]; ngay_sinh :1..31; thang_sinh :1..12;

Page 167: Pascal 1

GIAÙO TRÌNH PASCAL Trang 167TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong Nam_sinh :1900..2000; Quequan,diachi:string[20]; donvi,chucvu:string[15]; luong:real; giadinh:boolean; end;ñònh nghóa kieåu baûn ghi töôøng minh töôûng chöøng ñôn giaûn deã hieåu nhöng bò goø boù bôûi caùc kieåu döõ lieäu chuaån ,khoâng taän duïng heát khaû naêng caùc kieåu döõ lieäu caáu truùc khaùc.program kieu_tuong_minh;TYPELy_lich=RECORD ma_so :integer; holot :string[17]; ten :string[7]; ngay_sinh :1..31; thang_sinh :1..12; Nam_sinh :1900..2000; Quequan,diachi:string[20]; donvi,chucvu:string[15]; luong:real; giadinh:string[5]; end; var A:array[1..20] of ly_lich; i,n:integer;begin writeln('DINH NGHIA KIEU TUONG MINH'); writeln('NHAP DU LIEU TU BAN PHIM '); WRITELN('--------------------------'); WRITE('can nhap ly lich may nguoi '); readln(n); for i:=1 to n do begin writeln('-Ma so nhan vien : ');readln(A[i].ma_so); writeln('-Ho lot : ');readln(A[i].holot); writeln('-ten : ');readln(A[i].ten); writeln('-Ngay sinh : ');readln(A[i].Ngay_sinh); writeln('-Thang sinh : ');readln(A[i].Thang_sinh); writeln('-Nam sinh : ');readln(A[i].nam_sinh); writeln('-Dia chi : ');readln(A[i].diachi); writeln('-Chuc vu : ');readln(A[i].chucvu); writeln('-Bac luong : ');readln(A[i].luong); writeln('-da co gia dinh chua : ');readln(A[i].giadinh); end; writeln;

Bieân soaïn : Tröông vaên Tuyeán 167

Page 168: Pascal 1

GIAÙO TRÌNH PASCAL Trang 168TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG writeln('-XUAT DU LIEU RA MAN HINH : '); writeln('---------------------------- '); for i:=1 to n do begin writeln('-Ma so nhan vien : ');WRITELN(A[i].ma_so); writeln('-Ho lot : ');writeln(A[i].holot); writeln('-ten : ');writeln(A[i].ten); writeln('-Ngay sinh : ');writeln(A[i].Ngay_sinh); writeln('-Thang sinh : ');writeln(A[i].Thang_sinh); writeln('-Nam sinh : ');writeln(A[i].nam_sinh); writeln('-Dia chi : ');writeln(A[i].diachi); writeln('-Chuc vu : ');writeln(A[i].chucvu); writeln('-Bac luong : ');writeln(A[i].luong); writeln('-da co gia dinh chua : ');writeln(A[i].giadinh); end; READLN; end.

GAÙN BAÈNG CAÂU LEÄNH WITH Coù theå gaùn döõ lieäu baûn ghi 1 cho baûn ghi 2 theo cuù phaùp sau :With <Baûn ghi2>,<baûn ghi1> do <leänh> ;(* Gan du lieu bang cau lenh with *)program phep_gan;typenhanvien=recordholot:string[17];ten:string[7];tuoi:16..60;end;varnv1,nv2:nhanvien;beginwriteln('PHEP GAN BAN GHI ');WRITELN('gan bang cau lEnh WITH ');With Nv1 Dobeginholot:='Nguyen Van';ten:='Xuan';tuoi:=30;end;with nv1 do

Page 169: Pascal 1

GIAÙO TRÌNH PASCAL Trang 169TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongwriteln('+Nhan vien thu nhat la : ',holot,' ',ten,' ',tuoi,' tuoi');With Nv2 Dobeginholot:='Bui thi';ten:='Thu';tuoi:=25;end;with nv2 dowriteln('+Nhan vien thu nhat la : ',holot,' ',ten,' ',tuoi,' tuoi'); writeln('GAN DU LIEU CHO NHAU '); WRITELN('---------------------------'); WITH NV1,NV2 Do { gan ban ghi 2 cho ban ghi 1 } writeln('+Nhan vien thu nhat la :',holot,' ',Ten,' ',tuoi,' tuoi'); WITH NV2,NV1 Do { gan ban ghi 1 cho ban ghi 2 } writeln('+Nhan vien thu Hai la :',holot,' ',Ten,' ',tuoi,' tuoi'); readln; end.

**ghi chuù : caâu leänh with NV2,NV1 Do {gaùn baûn ghi 1 cho baûn ghi 2 } writeln(‘+ Nhaân vieân thöù 2 laø :’,holot,’ ‘,ten,’ ‘,tuoi,’ tuoi’);coù theå vieát laïi nhö sau :with NV2 do with NV1 Do {gaùn baûn ghi 1 cho baûn ghi 2 } writeln(‘+ Nhaân vieân thöù 2 laø :’,holot,’ ‘,ten,’ ‘,tuoi,’ tuoi’);nhö chöông trình döôùi cuõng cho cuøng keát quaû :(* Gan du lieu bang cau lenh with *)program phep_gan;typenhanvien=recordholot:string[17];ten:string[7];tuoi:16..60;end;varnv1,nv2:nhanvien;beginwriteln('PHEP GAN BAN GHI ');WRITELN('Gan bang cau lenh WITH ');With Nv1 Dobegin

Bieân soaïn : Tröông vaên Tuyeán 169

Page 170: Pascal 1

GIAÙO TRÌNH PASCAL Trang 170TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGholot:='Nguyen Van';ten:='Xuan';tuoi:=30;end;with nv1 dowriteln('+Nhan vien thu nhat la : ',holot,' ',ten,' ',tuoi,' tuoi');With Nv2 Dobeginholot:='Bui thi';ten:='Thu';tuoi:=25;end;with nv2 dowriteln('+Nhan vien thu nhat la : ',holot,' ',ten,' ',tuoi,' tuoi'); writeln('GAN DU LIEU CHO NHAU '); WRITELN('---------------------------'); WITH NV1 do with NV2 Do { gan ban ghi 2 cho ban ghi 1 } writeln('+Nhan vien thu nhat la :',holot,' ',Ten,' ',tuoi,' tuoi'); WITH NV2 do with NV1 Do { gan ban ghi 1 cho ban ghi 2 } writeln('+Nhan vien thu Hai la :',holot,' ',Ten,' ',tuoi,' tuoi'); readln; end.

BAÛN GHI COÙ CAÁU TRUÙC THAY ÑOÅI : trong thöïc teá laäp trình coù nhieàu tröôøng hôïp tuyø theo moät tröôøng hôïp naøo ñoù caàn thay ñoåi teân goïi cho caùc thaønh phaàn khaùc nhau ( caùc tröôøng ) cuûa moät baûn ghi . Nuoán vaäy ta phaûi söû duïng baûn ghi coù caáu truùc thay ñoåi .ví duï ñeå xaùc ñònh hình naøo laø hình vuoâng , chöõ nhaät , hình tam giaùc , hình troøn vv.. thì ta phaûi xaùc ñònh loaïi kích thöôùc cuûa caùc hình ñoù nhö sau :Type Vuong=RECORDCanh : integer;End;chunhat=RECORDdai,rong : integer;End;

Page 171: Pascal 1

GIAÙO TRÌNH PASCAL Trang 171TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phonghinhthang=RECORDdaylon,daynho,cao : integer;End;binhhanh=RECORDCaùnh,caønh,goc : integer;End;hinhthoi=RECORDCanh,goc : integer;End; Trong töøng kieåu baûn ghi treân ñaây caùc tröôøng döõ lieäu khaùc nhau :Caïnh (Hình vuoâng ) ;chieàu daøi ,chieàu roäng ( hình chöõ nhaät ) ,Ñaùy lôùn , ñaùy nhoû , chieàu cao (Hình thang )… Ñeå giuùp cho ngöôøi laäp trình ñôn giaûn vieäc ñònh nghóa caùc kieåu baûn ghi keå treân , turbo Pascal xaây döïng kieåu baûn ghi coù caáu truùc thay ñoåi ( variant records ) cho pheùp chæ caàn khai baùo moät kieåu baûn ghi nhöng coù caùc tröôøng ( fields ) thay ñoåi . Noùi caùch khaùc thay vì phaûi ñònh nghóa caùc kieåu baûn ghi nhö treân thì baïn chæ caàn ñònh nghóa moät kieåu baûn ghi vaø caùc bieán baûn ghi nhö sau :Type Hinh=(vuong,chunhat,hinhthang,binhhanh,hinhthoi); Kichthuoc=RECORD CASE Hinggi : hinh of

Vuong:(canh:integer);chunhat:(dai,rong:integer);hinhthang:(daylon,daynho,cao:integer);binhhanh:(canh1,canh2,goc:integer);hinhthoi:(canh,goc:real);

end;vartugiac:kichthuoc;sau khi khai baùo ta coù theå duøng caùc bieåu thöùc sau :Tugiac.Hinhgi:=chunhat;Khi Hinhgi ñaõ ñöôïc gaùn giaù trò (ôû ñaây laø Chunhat) thì caùc tröôøng cuûa noù seõ ñöôïc taïo laäp ( laø caùc tröôøng dai,rong ) neân ta coù theå tieáp tuïc gaùn :Tugiac.dai:=20;Tugiac.rong:=15;Coøn neáu Tugiac.Hinhgi:=binhhanh;Thì seõ taïo ra 3 tröôøng : canh,canh2 ,goc vaø gaùn gia trò cho chuùng Xaây döïng moät haøm ñeå tính dieän tích :Function dientich(DT:Kichthuoc):real;

Bieân soaïn : Tröông vaên Tuyeán 171

Page 172: Pascal 1

GIAÙO TRÌNH PASCAL Trang 172TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGBeginWith Dt do

Case hinggi ofVuong:dientich:=sqr(canh);Hinhthang:Dientich:=(daylon+daynho)*cao/2;binhhanh:Dientich:=(canh1+canh2*sin(goc));hinhthoi:Dientich:=(canh*canh2*sin(goc));

end;end;End;typehinh=(vuong,chunhat,hinhthang,binhhanh,hinhthoi);kichthuoc=RECORDCASE HINHGI:hinh ofvuong:(canh:integer);chunhat:(dai,rong:integer);hinhthang:(daylon,daynho,cao:integer);binhhanh:(canh1,canh2,goc:integer);hinhthoi:(canhx,gocx:real);end;vartugiac:kichthuoc;hinhgi:hinh;loai:string;function dientich(dt:kichthuoc):real;var hinhgi:hinh;

beginwith dt docase hinhgi of vuong:dientich:=sqr(canh); chunhat:dientich:=(dai*rong); hinhthang:dientich:=(daylon+daynho)*cao/2; binhhanh:dientich:=(canh1+canh2*sin(goc)); hinhthoi:dientich:=(canhx*canhx*sin(goc)); end; end;procedure Inkt(m:kichthuoc);begin with M do write('dien tich la ',dientich(m):10:2);

end;begin with tugiac do

Page 173: Pascal 1

GIAÙO TRÌNH PASCAL Trang 173TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong begin write(' Hinh gi ');readln(loai); if loai='vuong' then begin tugiac.hinhgi:=vuong; write('Nhap canh ');readln(tugiac.canh); Inkt(tugiac); end else if loai='chu nhat' then begin tugiac.hinhgi:=chunhat; write('Nhap canh dai ');readln(tugiac.dai); write('Nhap canh Rong ');readln(tugiac.rong); Inkt(tugiac); end else if loai='hinh thang' then begin tugiac.hinhgi:=hinhthang; write('Nhap Day lon ');readln(tugiac.daylon); write('Nhap Day nho ');readln(tugiac.daynho); write('Nhap chieu cao ');readln(tugiac.cao);

Inkt(tugiac); end else if loai='binh hanh' then begin tugiac.hinhgi:=binhhanh; write('Nhap Canh 1 ');readln(tugiac.canh1); write('Nhap Canh 2 ');readln(tugiac.canh2); write('Nhap Goc ');readln(tugiac.goc);

Inkt(tugiac); end else begin tugiac.hinhgi:=hinhthoi; write('Nhap Canh 1 ');readln(tugiac.canhx); write('Nhap Goc ');readln(tugiac.goc);

Inkt(tugiac); end end;readln;end.

Bieân soaïn : Tröông vaên Tuyeán 173

Page 174: Pascal 1

GIAÙO TRÌNH PASCAL Trang 174TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG**typedate=RECORDDay:1..31;month:(Jan,Fer,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec);Year:integer;end;var ngay:array[1..20] of date;i,n,thangx:integer;begin write('nhap so ngay ');readln(n); for i:=1 to n do with ngay[i] do begin write('nhap ngay thu ',i);readln(ngay[i].day); write('nhap Thang ');readln(thangx); begin case thangx of 1:ngay[i].month:=Jan; 2:ngay[i].month:=Fer; 3:ngay[i].month:=Mar; 4:ngay[i].month:=Apr; 5:ngay[i].month:=MAy; 6:ngay[i].month:=Jun; 7:ngay[i].month:=Jul; 8:ngay[i].month:=Aug; 9:ngay[i].month:=Sep; 10:ngay[i].month:=Oct; 11:ngay[i].month:=Nov; 12:ngay[i].month:=Dec; end;write('nhap Nam ');readln(ngay[i].year);

end; end; for i:=1 to n do with ngay[i] do begin write(ngay[i].day);case ngay[i].month ofJan:write('Jan');Fer:write('Fer');Mar:write('March');Apr:write('Apr');May:write('May');Jun:write('Jun');Jul:write('Jul');

Page 175: Pascal 1

GIAÙO TRÌNH PASCAL Trang 175TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongAug:write('Aug');Sep:write('Sep');Oct:write('Oct');Nov:write('Nov');Dec:write('Dec');

end; write(ngay[i].year);

end;

readln;end.

**program Tinh_luong;TYPE chedo=(hopdong,bienche); Hoso=record holot:string; ten:string; tuoi:18..60; case loai:chedo of hopdong:(NgayKy,NgayHetHan:String[12]; luong:longint); bienche:(Ngayvao:String[12]; chucvu:string[20]; bacluong:longint); end; var A,B:HOSO; {----------------------------------------------} PROCEDURE INLUONG(M:Hoso); begin with M do if loai=bienche then begin writeln('-Ho va Ten :',Holot,' ',Ten,' ',tuoi,' tuoi'); writeln('-Loai nhan vien :Bien Che'); writeln('-Ngay vao Bien Che ',ngayvao); writeln('-Chuc vu ',chucvu); writeln('-Tien luong thang ',bacluong,'dong'); end else begin

Bieân soaïn : Tröông vaên Tuyeán 175

Page 176: Pascal 1

GIAÙO TRÌNH PASCAL Trang 176TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG writeln('-Ho va Ten :',Holot,' ',Ten,' ',tuoi,' tuoi'); writeln('-Loai nhan vien :Hop dong cong nhat'); writeln('-Ngay Ky hop dong ',ngayky); writeln('-Ngay het han hop dong ',ngayhethan); writeln('-Tien luong duoc linh ',luong,'dong/ngay');

end;

end; begin with A DO BEGIN holot:='Nguyen Van '; Ten:='Xuan'; tuoi:=30; Ngayvao:='1/11/1990'; Loai:=bienche; Chucvu:='Truong Phong'; bacluong:=500000; end; with B DO BEGIN holot:='Tran Van '; Ten:='Ha' tuoi:=25; Ngayvao:='1/1/1999'; Ngayhethan:='31/12/1999'; Loai:=hopdong; luong:=300000; end; inluong(a); writeln; inluong(b); readln; end.

typedia_chi=recordso_nha:integer;pho:string[20];thanh_pho:string[15];end;

Page 177: Pascal 1

GIAÙO TRÌNH PASCAL Trang 177TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongnhan_su=RECORDHo_ten:string[30];ngay_sinh:recordngay:1..31;thang:1..12;nam:integer;end;gioitinh:(nam,nu);o_tai:dia_chi;luong:real;end;var ng:array[1..10] of nhan_su;i,n:byte;gt:char;beginwrite('Cho so nguoi ');readln(n);for i:=1 to n dowith ng[i] dobegin write('nhap ho ten nguoi thu ',i,' : ');readln(ng[i].Ho_ten); with Ngay_sinh do begin write('Cho ngay ');readln(ng[i].ngay_sinh.ngay); write('Cho Thang ');readln(ng[i].ngay_sinh.Thang); write('Cho Nam ');readln(ng[i].ngay_sinh.nam); end; write('Nam hay nu ');readln(gt); if upcase(gt)='N' then gioitinh:=nam else gioitinh:=nu; with O_TAI do begin WRITE('so nha ');readln(ng[i].o_tai.so_nha); WRITE('pho ');readln(ng[i].o_tai.pho); WRITE('Thanh pho ');readln(ng[i].o_tai.thanh_pho); end; write(' luong bao nhieu ?');readln(ng[i].luong);end;{ xuat }for i:=1 to n dowith ng[i] dobegin write('Nguoi thu ',i,' : ',ng[i].Ho_ten); write('Ngay sinh : ',ng[i].ngay_sinh.ngay); write('-',ng[i].ngay_sinh.Thang);

Bieân soaïn : Tröông vaên Tuyeán 177

Page 178: Pascal 1

GIAÙO TRÌNH PASCAL Trang 178TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG write('-',ng[i].ngay_sinh.nam); writeln; if ng[i].gioitinh=nam then writeln('Gioi Tinh : nam ') else write('Gioi Tinh : Nu '); WRITE('so nha : ',ng[i].o_tai.so_nha); WRITEln('- pho ',ng[i].o_tai.pho); WRITEln('Thanh pho ',ng[i].o_tai.thanh_pho); writeln('Luong : ',ng[i].luong:12:2);end;

{cuoi xuat }readln;end.

BAÛN GHI COÙ TRÖÔØNG LAØ CAÁU TRUÙC MAÛNGPASCAL cho pheùp chuùng ta xaây döïng moät kieåu caáu truùc phöùc taïp laø baûn ghi trong ñoù coù tröôøng laø caáu truùc maûng ( array ) .Ví duï caàn taïo moät döõ lieäu moät lôùp hoïc goàm 30 hoïc sinh goàm caùc yeáu toá : moân hoïc ,khoaù hoïc , hoïc phí chuùng ta coù theå xaây döïng moät caâu 1 truùc nhö sau :CONST MAX=30;TYPE Danhsach=Array[1..max] of string[24];Lophoc=RECORD

Van,toan:real;Hocsinh:danhsach;End;VARLop:lophoc;Nhö vaïy ñeå truy xuaát ñeán hoïc sinh thöù 20 cuûa lôùp ta pha3ikhai baùo :Lop.hocsinh[20];Daáu chaám(.) duøng ñeå phaân caùch teân bieán vaø teân tröôøng . Daáu moùc vuoâng [ ] ñeå bieát phaàn töû cuûa maõngVí duï : baûn ghi coù tröôøng laø caâu truùc maõng (Array )

(* ban ghi co cau truc la mang array*)program Hoc_sinh;constmax=30;TYPE Danhsach=array[1..max]of string; lophoc=record

Page 179: Pascal 1

GIAÙO TRÌNH PASCAL Trang 179TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong van,toan:real; hocsinh:danhsach; end; var lop:lophoc; i,n:integer; {----------------------------------------------} begin writeln('TRUONG CUA BAN GHI CO CAU TRUC MANG '); WRITELN('------------------------------------'); Writeln; writeln('NHAP DU LIEU '); Writeln; writeln('-Co bao nhieu hoc sinh ');readln(n); for i:=1 to n do begin write('-Ho ten : ');readln(lop.hocsinh[i]); write('-Diem van : ');readln(lop.van); write('-Diem toan : ');readln(lop.toan); end; writeln; writeln('XUAT DU LIEU '); writeln; for i:=1 to n do begin write(lop.hocsinh[i]); write('Diem Van ',lop.van:4:1); write('Diem Toan ',lop.toan:4:1); writeln; writeln; end; readln; end.

BAÛN GHI COÙ TRÖÔØNG LAØ CAÁU TRUÙC BAÛN GHITrong thöïc teá chuùng ta thöôøng gaëp moät klie63u baûn ghi maø trong ñoù coù caùc tröôøng laïi laø kieåu baûn ghi khaùc . Chaúng haïn trong HOÀ SÔ LYÙ LÒCH ,ngoaøi sô yeáu lyù lòch , coøn coù theå khai baùo theâm caùc kieåu baûn ghi khaùc nhö : Hoà so veà trinh ñoä, Hoà sô veà gia caûnh vv..b vì vaäy ngöôøi ta goïi kieåu baûn ghi treân laø kieåu baûn ghi coù tröôøng laø caâu truùc baûn ghi goïi cho ngaén goïn laø baûn ghi cuûa baûn ghi .ví duïTYPEHosoTongquat=RECORD

holot:string[17];ten:string[7];

Bieân soaïn : Tröông vaên Tuyeán 179

Page 180: Pascal 1

GIAÙO TRÌNH PASCAL Trang 180TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

Maso,tuoi:integer;End;Hosochuyenmon=RECORD

Ngayvaonganh:string[12];Chuyenngay:string[20];Bangcaonhat:string[20];

End;Hosogiacanh=RECORD

Hotenvochong:string[24];Socon:byte;Diachi:string[30];

End;HOSO=RECORD

Hoso1:hosotongquat;Hoso2:hosochuyenmon;Hoso3:hosogiacanh;Donvicongtac:string[20];

End;VarNhanvien:array[1..100] of hoso;Trong kieåu baûn ghi naøy , neáu muoán truy xuaát ñeán töøng tröôøng ví duï hotenvochong cuûa nhaân vieân thöù 30 chaúng haïn , chuùng ta coù theå thöïc hieän moät trong 2 caùch sau :Caùch thöù nhaát : truy xuaát baèng teânWriteln(nhanvien[30].hoso3.hotenvochong); Caùch thöù hai : Truy xuaát baèng caâu leänh withWith nhanvien[30] ,hoso3 doWriteln(hotenvochong);Coøn neáu ta vieátWith Nhanvien[30] ,hoso1,hoso2,hoso3 do Thì ta coù theå truy xuaát taát caû caùc tröôøng cuûa baûn ghi Hoso keå treân

PROGRAM RECORD2;{VIET CHUONG TRINH DO DA THUC ,LAM PHEP CONG,nhan ,chia hai da thuc }const maxorder=10;type polynom=record bac:integer; heso:array[0..maxorder] of real; end;var A,B,C :POLYNOM; I:integer;

Page 181: Pascal 1

GIAÙO TRÌNH PASCAL Trang 181TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong(*-------------------------------------------------------------*)procedure doc_Dathuc;var i:integer; begin repeat writeln; writeln('Hay doc da thuc bac hai A(x),B(x) voi :'); writeln(' bac A (phai <=',maxorder,')='); readln(A.bac); if A.bac>MaxOrder then writeln(#7,'Bac A phai <=',maxorder,'!lam lai !'); writeln(' bac B (phai <=',maxorder,')='); readln(B.bac); if B.bac>MaxOrder then writeln(#7,'Bac B phai <=',maxorder,'!lam lai !'); UNTIL (A.bac<=maxorder) and(B.bac<=maxorder);

for i:=0 to maxorder do begin A.heso[i]:=0; B.heso[i]:=0; end; writeln; writeln(' vao cac he so cua da thuc A:'); for i:=A.bac downto 0 do begin write(' A[',i,']='); readln(A.heso[i]);

end; writeln; writeln(' vao cac he so cua da thuc B:'); for i:=B.bac downto 0 do begin write(' B[',i,']='); readln(B.heso[i]);

end; end;

{-------------------------------------------------------------}

procedure TONG_DATHUC ( A,B :polynom; var c:polynom); { C=A+B}

Bieân soaïn : Tröông vaên Tuyeán 181

Page 182: Pascal 1

GIAÙO TRÌNH PASCAL Trang 182TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG VAR bacmax:integer; begin {can bang he so cua 2 da thuc } if A.bac< B.bac then begin c.bac:=B.bac; for i:=A.bac+1 to B.bac do A.heso[i]:=0; end else begin C.bac:=A.bac; for i:=B.bac+1 to A.bac do A.heso[i]:=0; end;

for i:=C.bac to maxorder do C.heso[i]:=0; (*cong hai da thuc *) for i:=0 to C.bac do c.heso[i]:=A.heso[i]+B.heso[i];

end;PROCEDURE TICH_DATHUC ( A,B :POLYNOM;VAR C:POLYNOM);VAR i,j :integer;BEGIN for i:=0 to maxorder do c.heso[i]:=0; for i:=0 to A.bac do for j:=0 to B.bac do C.heso[i+j]:=C.heso[i+j]+A.heso[i]+B.heso[j]; C.bac:=A.bac+B.bac;

END;(*---------------------------------------------------*)procedure CHIA_DATHUC(P,Q:POLYNOM);var i,k,kk:integer;G:polynom;begin if P.bac<Q.bac then for i:=p.bac+1 to Q.bac do P.heso[i]:=0; if P.bac>Q.bac then for i:=Q.bac+1 to P.bac do Q.heso[i]:=0;

END;(*------------------------------------------------------*) begin doc_dathuc; tong_dathuc(A,B,C);

Page 183: Pascal 1

GIAÙO TRÌNH PASCAL Trang 183TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong {IN KET QUA} Writeln; writeln('cac he so cua da thuc tich '); write('Bac :'); (* R := Frac(123.456); { 0.456 } R := Frac(-123.456); { -0.456 } *) for i:=0 to C.bac do write(i:7); writeln; write('He so '); for i:=0 to C.bac do if frac(C.heso[i])=0 then write(c.heso[i]:7:0) else write(c.heso[i]:7:2); writeln; writeln; readln;

end.

ÑINH NGHÓA KIEÅU KHOÂNG TÖÔØNG MINHTrong thöïc teá laäp trình thöôøng söû duïng kieåu ñònh nghóa khoâng töôøng minh ñeå coù theå khai thaùc nhöõng theá maïnh cuûa ngoân ngöõ Theo caùch ñònh nghóa naøy thì ta coù theå ñònh nghóa kieåu baûn ghi cho rieâng mình,trong chöông trình khi caàn söû duïng kieåu naøo thì caàn chæ ñònh teân kieåu vaø truy xuaát ñeán töøng tröôøng döõ lieäu cuûa chuùng . Vôùi caùch ñònh nghóa naøy chuùng ta deã daøng söû duïng bieán con troûñeå truy xuaát döõ lieäu ,tieát kieäm nhieàu laàn boä nhôù neân toác ñoä thöïchieän chöông trình nhanh hôn raát nhieàuCuù phaùp khai baùo kieåu khoâng töôøng minh nhö sau :TYPE

<kieåu_1>=RECORD<Tröôøng11>:<kieåu>;<Tröôøng12>:<kieåu>;<…> :<kieåu>;<Tröôøng1N>:<kieåu>;END;

TYPE<kieåu_2>=RECORD

<Tröôøng21>:<kieåu>;<Tröôøng22>:<kieåu>;<…> :<kieåu>;<Tröôøng2N>:<kieåu>;END;

Bieân soaïn : Tröông vaên Tuyeán 183

Page 184: Pascal 1

GIAÙO TRÌNH PASCAL Trang 184TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGTYPE

<kieåu_3>=RECORD<Tröôøng31>:<kieåu>;<Tröôøng32>:<kieåu>;<…> :<kieåu>;<Tröôøng3N>:<kieåu>;END;

TYPE<kieåu_N>=RECORD

<TröôøngN1>:<kieåu>;<TröôøngN2>:<kieåu>;<…> :<kieåu>;<TröôøngNN>:<kieåu>;END;

Ví DUÏTYPE

Ho_ten=RECORDHolot:string[17];Ten:string[7];

END;N_SINH=RECORD

Ngay:1..31;Thang:1..12;Nam:1900..1999;

END;Ly_lich=RECORD

ma_so :integer; hoten :ho_ten; ngay_sinh :N_sinh; Quequan,diachi:string[20]; donvi,chucvu:string[15]; luong:real; giadinh:boolean; end;

ví duï treân chuùng ta ñaõ ñònh nghóa 3 kieåu baûn ghi khaùc nhau trong ñoù kieåu baûn gghi thöù 3 ly_lich coù theå söû duïng nhöõng kieåu baûn ghi ñaõ söû duïng tröôùc ñoù kieåu Ho_ten :kieåu naøy coù hai tröôøng holot vaø ten ñeàu thuoäc kieåu string.Kieåu N_sinh : coù 3 tröôøng : ngaøy ,thaùng ,naêm ñeàu thuoäc kieåu mieàn conKieåu ly_lich : trong kieåu naøy coù caùc nhoùm vaø tröôøng sau :Truong hoteân : coù kieåu Ho_ten laø kieåu baûn ghi ñaõ ñònh nghóa tröôùc ñoù

Page 185: Pascal 1

GIAÙO TRÌNH PASCAL Trang 185TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong Tröôøng ngaysinh: coù kieåu N_sinh laø kieåu baûn ghi ñaõ ñònh nghóa tröôùc ñoù Vôùi caùch ñònh nghóa naøy ,Pascal cho pheùp chuùng ta môû roäng phaïm vi caùc kieåu döõ lieäu ñeå phuïc vuï moïi yeâu caàu xöû lyù trong caùc baøi toaùn phöùc taïp maø caùc kieåu döõ lieäu thoâng thöôøng khoâng giaûi quyeát ñöôïc Ví duï :program kieu_khong_tuong_minh;TYPEho_ten=RECORD Ho_lot :string[17] ; ten :string[7]; END;N_sinh=RECORD ngay :1..31; thang :1..12; Nam :1900..2000;Ly_lich=RECORD ma_so :integer; hotEN :Ho_ten; ngay_sinh :N-sinh; Quequan,diachi:string[20]; donvi,chucvu:string[15]; luong:real; giadinh:string[5]; end; var A:array[1..20] of ly_lich; i,n:integer;begin writeln('DINH NGHIA KIEU TUONG MINH'); writeln('NHAP DU LIEU TU BAN PHIM '); WRITELN('--------------------------'); WRITE('can nhap ly lich may nguoi '); readln(n); for i:=1 to n do begin writeln('-Ma so nhan vien : ');readln(A[i].ma_so); writeln('-Ho lot : ');readln(A[i].holot); writeln('-ten : ');readln(A[i].ten); writeln('-Ngay sinh : ');readln(A[i].Ngay_sinh); writeln('-Thang sinh : ');readln(A[i].Thang_sinh); writeln('-Nam sinh : ');readln(A[i].nam_sinh); writeln('-Dia chi : ');readln(A[i].diachi); writeln('-Chuc vu : ');readln(A[i].chucvu); writeln('-Bac luong : ');readln(A[i].luong);

Bieân soaïn : Tröông vaên Tuyeán 185

Page 186: Pascal 1

GIAÙO TRÌNH PASCAL Trang 186TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG writeln('-da co gia dinh chua : ');readln(A[i].giadinh); end; writeln; writeln('-XUAT DU LIEU RA MAN HINH : '); writeln('---------------------------- '); for i:=1 to n do begin writeln('-Ma so nhan vien : ');WRITELN(A[i].ma_so); writeln('-Ho lot : ');writeln(A[i].holot); writeln('-ten : ');writeln(A[i].ten); writeln('-Ngay sinh : ');writeln(A[i].Ngay_sinh); writeln('-Thang sinh : ');writeln(A[i].Thang_sinh); writeln('-Nam sinh : ');writeln(A[i].nam_sinh); writeln('-Dia chi : ');writeln(A[i].diachi); writeln('-Chuc vu : ');writeln(A[i].chucvu); writeln('-Bac luong : ');writeln(A[i].luong); writeln('-da co gia dinh chua : ');writeln(A[i].giadinh); end; READLN; end.KHAI BAÙO BIEÁNKhai baùo bieán töôøng minh :Khai baùo bieán töôøng minh töùc la khai baùo bieán ñoàng thôøi vôùi ñònh nghóa kieåu Ta chæ caàn thay töø khoaù Var cho töø khoaù TYPE vaø <teân bieán > thay cho < teân kieåu > . Cuù phaùp khai baùo naøy nhö sau :

var<teân bieán>:RECORD

<teân Tröôøng>:<kieåu>;<teân Tröôøng,Teân tröôøng>:<kieåu>;<…> :<kieåu>;<teân Tröôøng>:<kieåu>;END;

Ví duïvarnhan_vien:RECORD ma_so :integer; holot :string[17]; ten :string[7]; ngay_sinh :1..31; thang_sinh :1..12; Nam_sinh :1900..2000; Quequan,diachi:string[20]; donvi,chucvu:string[15]; luong:real;

Page 187: Pascal 1

GIAÙO TRÌNH PASCAL Trang 187TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong giadinh:string[5]; end;

caùch khai baùo bieán töôøng minh laøm cho ta deã nhaän moái quan heä giöõa bieán vaø tröôøng , tuy nhieân trong caáu truùc chöông trình cuûa Pascal thöôøng ñoøi hoûi caùc tham soá neân kieåu khai baùo naøy ít ñöôïc söû duïng program kieu_tuong_minh;varLy_lich:RECORD ma_so :integer; holot :string[17]; ten :string[7]; ngay_sinh :1..31; thang_sinh :1..12; Nam_sinh :1900..2000; Quequan,diachi:string[20]; donvi,chucvu:string[15]; luong:real; giadinh:string[5]; end;begin writeln('DINH NGHIA KIEU TUONG MINH'); writeln('NHAP DU LIEU TU BAN PHIM '); WRITELN('--------------------------'); writeln('-Ma so nhan vien : ');readln(ly_lich.ma_so); writeln('-Ho lot : ');readln(ly_lich.holot); writeln('-ten : ');readln(ly_lich.ten); writeln('-Ngay sinh : ');readln(ly_lich.Ngay_sinh); writeln('-Thang sinh : ');readln(ly_lich.Thang_sinh); writeln('-Nam sinh : ');readln(ly_lich.nam_sinh); writeln('-Dia chi : ');readln(ly_lich.diachi); writeln('-Chuc vu : ');readln(ly_lich.chucvu); writeln('-Bac luong : ');readln(ly_lich.luong); writeln('-da co gia dinh chua : ');readln(ly_lich.giadinh); writeln; writeln('-XUAT DU LIEU RA MAN HINH : '); writeln('---------------------------- '); writeln('-Ma so nhan vien : ',ly_lich.ma_so); writeln('-Ho lot : ',ly_lich.holot); writeln('-ten : ',ly_lich.ten); writeln('-Ngay sinh : ',ly_lich.Ngay_sinh); writeln('-Thang sinh : ',ly_lich.Thang_sinh); writeln('-Nam sinh : ',ly_lich.nam_sinh); writeln('-Dia chi : ',ly_lich.diachi);

Bieân soaïn : Tröông vaên Tuyeán 187

Page 188: Pascal 1

GIAÙO TRÌNH PASCAL Trang 188TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG writeln('-Chuc vu : ',ly_lich.chucvu); writeln('-Bac luong : ',ly_lich.luong:8:2); writeln('-da co gia dinh chua : ',ly_lich.giadinh); READLN; end.KHAI BAÙO KHOÂNG TÖÔØNG MINHKhai baùo khoâng töôøng minh nghóa laø baïn phaûi ñònh nghóa kieåu roài môùi khai baùo bieán ,Khai baùo bieán baét ñaàu baèng töø khoaù VAR ,tieáp ñoù laø teân bieán hoaëc danh saùch bieán,moåi teân bieán caàn phaûi caùch nhau baèng moät daáu phaåy (,), sau teân bieán hoaëc danh saùch teân bieán laø daáu hai chaám (:) , tieáp ñeán laø moät trong caùc kieåu döõ lieäu ñaõ trình baøy ôû treân . cuoái cuøng laø daáu chaám phaåy (;) keát thuùc doøng leänh khai baùo bieán Nhöõng trình baøy treân ñöôïc minh hoaï baèng cuù phaùp sau : var

<teân bieán>:<kieåu>;<teân bieán,Teân bieán,…>:<kieåu>;ví duï :VAR Nhan_vien:ly_lich;

Ví duï treân ñaây khai baùo bieán nhaân_vien coù kieåu döõ lieäu laø kieåu baûn ghi ly_lich ñaõ ñöôïc ñònh nghóa tröôùc ñoù VÍ DUÏprogram kieu_khong_tuong_minh;TYPELy_lich:RECORD ma_so :integer; holot :string[17]; ten :string[7]; ngay_sinh :1..31; thang_sinh :1..12; Nam_sinh :1900..2000; Quequan,diachi:string[20]; donvi,chucvu:string[15]; luong:real; giadinh:string[5]; end; VAR NV:ly_lich;begin writeln('KHAI BAO BIEN KHONGTUONG MINH'); writeln('NHAP DU LIEU TU BAN PHIM '); WRITELN('--------------------------'); writeln('-Ma so nhan vien : ');readln(NV.ma_so); writeln('-Ho lot : ');readln(NV.holot);

Page 189: Pascal 1

GIAÙO TRÌNH PASCAL Trang 189TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong writeln('-ten : ');readln(NV.ten); writeln('-Ngay sinh : ');readln(NV.Ngay_sinh); writeln('-Thang sinh : ');readln(NV.Thang_sinh); writeln('-Nam sinh : ');readln(NV.nam_sinh); writeln('-Dia chi : ');readln(NV.diachi); writeln('-Chuc vu : ');readln(NV.chucvu); writeln('-Bac luong : ');readln(NV.luong); writeln('-da co gia dinh chua : ');readln(NV.giadinh); writeln; writeln('-XUAT DU LIEU RA MAN HINH : '); writeln('---------------------------- '); writeln('-Ma so nhan vien : ',NV.ma_so); writeln('-Ho lot : ',NV.holot); writeln('-ten : ',NV.ten); writeln('-Ngay sinh : ',NV.Ngay_sinh); writeln('-Thang sinh : ',NV.Thang_sinh); writeln('-Nam sinh : ',NV.nam_sinh); writeln('-Dia chi : ',NV.diachi); writeln('-Chuc vu : ',NV.chucvu); writeln('-Bac luong : ',NV.luong:8:2); writeln('-da co gia dinh chua : ',NV.giadinh); READLN; end.KHAI BAÙO HAÈNG:Khai baùo haèng trong kieåu baûn ghi raát khaùc vôùi khai baùo haèng thuoäc caùc kieåu döõ lieäu maø baïn ñaõ bieát ,cuï theå laø :Baïn phaûi khia kieåu döõ lieäu vaø caùc tröôøng döõ lieäu theo cuù phaùp ñònh nghóa kieåu ñaõ trình baøy ôû treânTieáp ñoù phaûi coù töø khoaù CONST , teân haèng daáu hai chaám (: ),teân kieåu baûn ghi ñaõ ñònh nghóa,daáu baèng (=) roài gaùn trò cuûa haèng cho caùc tröôøng ,moåi tröôøng phaân caùch nhau bôûi daáu chaám phaåy, (;) ,taát caû giaù trò naøy naèm trong ngoaëc (),keát thuùc khai baùo haèng baèng daáu chaám phaåy (;)Coù theå toùm taét moâ taû treân baèng cuù phaùp sau :

Bieân soaïn : Tröông vaên Tuyeán 189

TYPE<teân kieåu>=RECORD

<teân tröôøng 1>:<kieåu>;<teân tröôøng >:<kieåu>;<…>:<kieåu>;<teân tröôøng N>:<kieåu>;END;

CONST<teân haèng>:<teân kieåu>=(<teân tröôøng 1>: <gia trò>;<teân tröôøng 2>: <gia trò>;<teân tröôøng N>: <gia

Page 190: Pascal 1

GIAÙO TRÌNH PASCAL Trang 190TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

Ví duï :TYPE

Canbo=RECORDHolot :string[17];Ten :string[7];Chucvu :string[15];Bacluong:real;END;

CONSTT_phong:canbo=(Holot:’Nguyen van ‘;Ten:’Xuan;Chucvu:’Truong Phong ‘;bacluong:500000.50);

NHAÄP XUAÁT DÖÕ LIEÄU Caùc thuû tuïc nhaäp xuaát döõ lieäu cho caùc kieåu döõ lieäu maø baïn ñaõ nghieân cöùu töø tröôùc tôùi nay khoâng theå aùp duïng cho kieåu baûn ghi .Ñieàu naøy nghóa laø khoâng theå truy xuaát thoâng qua caùc bieán cuûa baûn ghi maø phaûi thoâng qua teân bieán troû tôùi caùc tröôøngVí duï : chöông tình döôùi ñaây sai vì khoâng theå nhaäp xuaát döõ lieäu thoâng qua bieán baûn ghi ñöôïcProgram Nhap_xuat_sai;TYPE

Toa_do=RECORDX,y :integer;

End;Var M:Toa_do;Begin

Writeln(‘TOA DO DIEM M(x,y)’);Writeln(‘---------------------------);Writeln(‘Nhap toa do diem M =’);Readln(M);Writeln;Writeln(‘Xuat toa do diem M =’,M);Readln;

End. Khi chaïy chöông trình seõ xuaát hieän thoâng baùo “Cannot Read or Write variable of this type “= khoâng theå nhaäp xuaát bieán kieåu naøy )Baïn söûa laïi baèng caùch truy xuaát bieán baûn ghi troû tôùi töøng tröôøng cuûa kieåu naøy nhö sau :Program Nhap_xuat_sai;TYPE

Toa_do=RECORDX,y :integer;

Page 191: Pascal 1

GIAÙO TRÌNH PASCAL Trang 191TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongEnd;Var M:Toa_do;Begin

Writeln(‘TOA DO DIEM M(x,y)’);Writeln(‘---------------------------);Writeln(‘Nhap toa do diem M =’);Write(‘+X =’);Readln(M.X);Write(‘+Y =’);Readln(M.Y);Writeln;Writeln(‘Xuat toa do diem M =’,M.X,’,’,M.Y);Readln;

End.

Baøi taäp kieåu RECORD :BT1 : vieát chöông trình nhaäp ngaøy thaùng naêm sua ñoù kieåm tra tính hôïp leä cuûa nhaät kyø ñoù . Neáu nhaäp sai seõ xuaát hieän thoâng baùo loãi theo tình huoáng :‘Nhaäp sai ngaøy hay thaùng ‘-Thaùng naøy khoâng coù ngaøy hay thaùng thaùng 2 khoâng coù ngaøy naøy

program KT_ngay;constngay=[1..31];thang=[1..12];th31ngay:set of byte=[1,3,5,7,8,10,12];baoloi:array[1..3] of string[30]=('-Ban ,nhap sai ngay,thang ', '-Thang nay khong co ngay 31 ','-Thang 2 khong co ngay nay '); TYPE ngaythang=RECORD ng,th:byte; nam:word; end; var nhatky:ngaythang; loi:array[1..3] of boolean; i:byte; nhuan:boolean; begin with nhatky do begin write('-nhap ngay =');readln(ng);

Bieân soaïn : Tröông vaên Tuyeán 191

Page 192: Pascal 1

GIAÙO TRÌNH PASCAL Trang 192TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG write('-nhap thang =');readln(th); write('-nhap nam =');readln(nam); loi[1]:=(not (ng in ngay) or (not th in thang)); loi[2]:=(ng=31) and (not (th in th31ngay)); nhuan:=((nam mod 4)=0) and ((nam mod 100)<>0) or ((nam mod 400)=0); loi[3]:=((ng>29) and (th=2)) or ((ng=29) and (th=2) and (not nhuan)); end; for i:=1 to 3 do if loi[i] then writeln(baoloi[i]); readln; end.readln; end.

Bt2: vieát chöôn trình nhaäp xuaát hoï teân ñieåm vaên toaùn lyù cho moät lôùp hoïc program van_toan_ly;constmax=50;td1='|------------------------|-----|-----|-----|';td2=#124+' Ho va ten '+#124+' VAN '+#124+' TOAN'+#124+' LY |';TYPEHOCSINH=RECORDHoten:string[24];van,toan,ly:real;end;varhs:array[1..max] of hocsinh;i,n:1..max;BEGINwriteln('NHAP XUAT DU LIEU BAN GHI ');writeln('--------------------------- ');writeln;writeln('Lop co bao nhieu Hoc sinh ');readln(n);for i:=1 to n do { nhap du lieu}with Hs[i] do begin writeln('Hoc sinh thu ',i:2,'=');readln(hoten); writeln('Diem van ');readln(van); writeln('Diem toan ');readln(toan); writeln('Diem Ly ');readln(ly); end; writeln;

Page 193: Pascal 1

GIAÙO TRÌNH PASCAL Trang 193TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong writeln(' BANG DIEM '); WRITELN(TD1); WRITELN(TD2); for i:=1 to n do { xuat du lieu } with hs[i] do

writeln(#124,hoten,#32:24-length(hoten), #124,van :5:1, #124,toan :5:1, #124,ly :5:1,'|'); writeln(td1);

readln; end.END.BT 3: Vieát chöông trình nhaäp hoï teân , ngaøy thaùng naêm sinh cuûa nhaân vieân coâng ty , sau ñoù saép xeáp laïi theo thöù töï giaûm daàn cuûa tuoåi roài in ra maøn hình

program van_toan_ly;constmax=50;td1='|=====================================|';td2=#124+' Ho va ten '+#124+' NAM SINH |';TYPEHOSO=RECORDhoten:string[24];Ngay:1..31;thang:1..12;nam:1900..2000;end;varnhanvien:array[1..max] of HOSO;i,n:1..max;tam:hoso;kthuc:boolean;BEGINwriteln('SAP XEP BAN GHI THEO GIAI THUAT NOI BO ');writeln('--------------------------- ');writeln;writeln('Lop co bao nhieu NGUOI ');readln(n);for i:=1 to n do { nhap du lieu}with NHANVIEN[i] do begin writeln('Ho ten nguoi thu ',i:2,'=');readln(hoten); writeln('Ngay sinh ');readln(ngay); writeln('Thang ');readln(thang);

Bieân soaïn : Tröông vaên Tuyeán 193

Page 194: Pascal 1

GIAÙO TRÌNH PASCAL Trang 194TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG writeln('Nam ');readln(nam); end; writeln; writeln(' BANG DIEM '); WRITELN(TD1); WRITELN(TD2); repeat {sap xep} kthuc:=true; for i:=1 to n-1 do if (nhanvien[i].nam>nhanvien[i+1].nam) or ((nhanvien[i].nam=nhanvien[i+1].nam) and (nhanvien[i].thang>nhanvien[i+1].thang)) or((nhanvien[i].nam=nhanvien[i+1].nam) and (nhanvien[i].thang=nhanvien[i+1].thang) and (nhanvien[i].ngay=nhanvien[i+1].ngay)) then begin tam:=nhanvien[i]; nhanvien[i]:=nhanvien[i+1]; nhanvien[i+1]:=tam; kthuc:=false; end; until kthuc; writeln; writeln(' SAP XEP THEO TUOI '); Writeln; writeln(TD1); writeln(TD2);FOR i :=1 to n do with nhanvien[i] do writeln(#124,hoten,#32:24-length(hoten), #124,ngay,'/',thang,'/',nam,#124); writeln(td1); readln; end.END.Bt04 : vieát chöông trình nhaäp 5 caâu hoûi traéc nghieäm , moãi caâu goàm :1-Caâu hoûi 2.-Caùc yù nghóa cuûa caâu hoûi A,B,C,D3-Ñaùp aùn 4-Baïn choïn nghóa naøo ñuùng thì goû vaøo nghóa ñoù . Maùy seõ traéc nghieäm vaø thoáng keâ soá caâu traû lôøi ñuùng .

program bt;TYPETracnghiem=RECORD

Page 195: Pascal 1

GIAÙO TRÌNH PASCAL Trang 195TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongcauhoi:string;A,B,C,D:string;dapan:char;end;varA:ARRAY[1..5] of tracnghiem;i,dung:integer;traloi:char;beginwriteln('CAU HOI TRAC NGHIEM ');writeln('------------------------');writeln;writeln('-Nhap 5 cau hoi , y nghia va dap an ');for i:=1 to 5 dowith a[i] do begin write('-Cau ho thu ',i:2,' :');readln(cauhoi); write('-Nghia A');readln(A); write('-Nghia B');readln(B); write('-Nghia C');readln(C); write('-Nghia D');readln(D); write('-DAP AN');readln(Dapan); dapan:=upcase(dapan); end; dung:=0;

writeln('-Ban chon nghia cho tung cau hoi ');for i:=1 to 5 do

begin write(i,'.',a[i].cauhoi); write('A)',a[i].A); write('B)',a[i].B); write('C)',A[i].C); write('D)',A[i].D); Write('Lua cau nao go vao y nghia cau do '); readln(traloi); if upcase(traloi)=a[i].dapan then dung:=dung+1; end; writeln; writeln('-So cau tra loi dung ',dung); readln; end.

end;

Bieân soaïn : Tröông vaên Tuyeán 195

Page 196: Pascal 1

GIAÙO TRÌNH PASCAL Trang 196TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

readln;end.

Bt5: vieát chöôøng trình taïo moät töø ñieån goàm 5 töø Anh vieät , löu moät töø nhö moät baûn ghi goàm 2 tröôøng nghóa tieáng Anh vaø tieáng Vieät . Sau ñoù nhaäp vaøo moät töø tieáng Anh roài ñöa ra nghóa tieáng vieät hoaëc thoáng baùo neáu töø ñoù khoâng coù trong töø ñieànprogram tu_dien;typetudien=recordanh,viet:string;end;var a:array[1..5] of tudien;st:string;i:integer;timduoc:boolean;beginfor i:=1 to 5 dobegin writeln('-Tu thu ',i); writeln('-Nghia tieng Anh');readln(a[i].anh); writeln('-Nghia tieng Viet');readln(a[i].Viet); end; writeln; write('*Tu tieng Anh can tim ');readln(st); timduoc:=false; i:=1; while (not timduoc) and (i<=5) do begin if st=a[i].anh then begin writeln('Tieng Viet can tim ',a[i].viet); timduoc:=true; end; i:=i+1; end;if not timduoc then write('Tu nay khong co trong tu dien ');readln;end.Bt 06 vIET CHUONG TRINH DANH GIA THANH TICH CUA DOI BONG GOM CAC NOI DUNG-Nhap Ho ten tuoi , so ban thang cua tung cau thuIn ra man hinh+Cau thu co tuoi lon nhat+Cau thu co tuoi nho nhat

Page 197: Pascal 1

GIAÙO TRÌNH PASCAL Trang 197TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong+Cau thu co so ban thang nhieu nhat+Cau thu co so ban thang it nhat+So ban trung binh cua toan doi *)program tt_doi_bong;constmax=23;TYPEthanhtich=RECORDhoten:string[24];tuoi,banthang:integer;end;doibong=array[1..max] of thanhtich;vari,n,tuoicao,tuoithap,nam:integer;ten1,ten2,tendoi:string[20];cauthu:doibong;thangnhieu,thangit:integer;tb:real;begin writeln('THANH TICH CUA DOI BONG DA'); writeln('--------------------------'); writeln('Thanh tich nam nao');readln(nam); writeln('Ten doi bong');readln(tendoi); writeln('So cau thu');readln(n); for i:=1 to n do with cauthu[i] do begin write('Ho ten cau thu thu ',i ,' la');readln(hoten); write('Tuoi cau thu thu ',i ,' la');readln(tuoi); write('so ban thang cau thu thu ',i ,' la');readln(banthang); end; tuoicao:=cauthu[1].tuoi; tuoithap:=cauthu[1].tuoi; thangnhieu:=cauthu[1].banthang; thangit:=cauthu[1].banthang; ten1:=cauthu[1].hoten; ten2:=cauthu[1].hoten; tb:=cauthu[1].banthang; for i:=2 to n do begin if cauthu[i].tuoi>tuoicao then tuoicao:=cauthu[i].tuoi else if cauthu[i].tuoi<tuoithap then tuoithap:=cauthu[i].tuoi; if cauthu[i].banthang> thangnhieu then

Bieân soaïn : Tröông vaên Tuyeán 197

Page 198: Pascal 1

GIAÙO TRÌNH PASCAL Trang 198TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG begin thangnhieu:=cauthu[i].banthang; ten1:=cauthu[i].hoten; end else if cauthu[i].banthang< thangit then begin thangit:=cauthu[i].banthang; ten2:=cauthu[i].hoten; end; tb:=tb+cauthu[i].banthang; end; writeln; writeln('THANH TICH NAM :',nam); writeln('Ten cua doi bong :',tendoi); writeln('----------------------'); writeln; writeln('Cau thu :',ten1,' co tuoi lon nhat',tuoicao); writeln('Cau thu :',ten2,' co tuoi nho nhat',tuoithap); writeln; writeln('Cau thu :',ten1,' co ban thang nhieu nhat',thangnhieu); writeln('Cau thu :',ten2,' co ban thang it nhat',thangit); writeln; writeln('So bna thang trung binh cua toan doi ',round(tb/n)); readln;end.end.Bt7: Vieát chöông trình coäng ,tröø ,nhaân chia 2 soá höõu tyû , vôùi moãi soá laø moät baûn ghi goàm 2 tröôøng Töû soá vaø maãu soá .program bt07;typehuuty=recordtuso:integer;mauso:integer;end;var so1,so2,kq:huuty;st1,st2:string;i,n,result,m:integer;ch:char;beginwrite('NHAP,XUAT SO HUU TY ');writeln('-------------------');writeln;write('-So thu nhat ');readln(st1);write('-So thu Hai ');readln(st2);

Page 199: Pascal 1

GIAÙO TRÌNH PASCAL Trang 199TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongi:=pos('/',st1);with so1 doif i=0 thenbegin val(st1,tuso,result); mauso:=1;endelse begin val(copy(st1,1,i-1),tuso,result); val(copy(st1,i+1,length(st1)-i),mauso,result); end;i:=pos('/',st2);with so2 doif i=0 thenbegin val(st2,tuso,result); mauso:=1;endelse begin val(copy(st2,1,i-1),tuso,result); val(copy(st2,i+1,length(st2)-i),mauso,result); end;write('+Ban chon phep tinh (+,-,*,/) ');readln(ch);case ch of'+':begin kq.tuso:=(so1.tuso*so2.mauso+so2.tuso*so1.mauso); kq.mauso:=(so1.mauso*so2.mauso); end;'-':begin kq.tuso:=(so1.tuso*so2.mauso-so2.tuso*so1.mauso); kq.mauso:=(so1.mauso*so2.mauso); end;'*':begin kq.tuso:=(so1.tuso*so2.tuso) ; kq.mauso:=(so1.mauso*so2.mauso);end;'/':begin kq.tuso:=(so1.tuso*so2.mauso) ; kq.mauso:=(so1.mauso*so2.tuso);end;end;if kq.tuso=0 then write('Ket qua =0')else with kq do begin

Bieân soaïn : Tröông vaên Tuyeán 199

Page 200: Pascal 1

GIAÙO TRÌNH PASCAL Trang 200TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG n:=ABS(Tuso); m:=abs(mauso); while n<>m do if n>m then n:=n-m else m:=m-n; tuso:=tuso div n; mauso:=mauso div m; if mauso=1 then write('ket qua :',tuso) else write('Ket qua =',tuso,'/',mauso); end; readln; end.

Bt8: vieát chöông trình nhaäp hoï loùt , teân vaø ñieåm cuûa töøng hoïc sinh trong lôùp , sau ñoù saép xeáp theo thöù töï töø ñieån ( abc..z) theo tröôøng teân vaø xuaát keát quaû ra maøn hìnhPROGRAM BT;TYPEHOSO=RECORDholot:string[17];ten:string[7];diem:real;end;var a:array[1..50] of hoso;tam:hoso;n,i,j,phantu:integer;ok:char;begini:=1;while ok<>'K' dobeginwith a[i] do begin write('nhap holot ');readln(holot); write('nhap Ten ');readln(ten); write('nhap Diem ');readln(diem); end; i:=i+1;writeln('co nhap nua ');READLN(ok);ok:=upcase(ok);end;n:=i-1;for i:=1 to n-1 dofor j:=i+1 to n do

Page 201: Pascal 1

GIAÙO TRÌNH PASCAL Trang 201TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongif a[i].ten>a[j].ten thenbegintam:= a[i];a[i]:=a[j];a[j]:=tam;end;for i:=1 to n dowriteln(a[i].holot,' ',a[i].ten);

readln;end.Bt09 Vieát chöông trình nhaäp toái ña 100 hoaù ñôn baùn haøng . Moãi hoaù ñôn laø moät baûn ghi goàm caùc tröôøng : ngöôøi mua , maõ haøng , ñôn giaù , soá löôïng . tính toång tieàn theo töøng maõ haøng.program xhoadon;constmax=100;typehoadon=RECORDNguoimua:string[24];mahang:string[10];dongia,soluong:real;end;

trung=set of byte;var a:array[1..max] of hoadon;mh:array[1..max] of string[10];i,n,j,dem,sotenhang:integer;tongtien:real;taptrung:trung;kiemtra:boolean;beginwriteln('Nhap so hoa don ');readln(n);for i:=1 to n dowith a[i] dobegin write('Nguoi mua ');readln(nguoimua); write('Ma hang ');readln(mahang); write('dongia ');readln(dongia); write('so luong ');readln(soluong);end;tongtien:=0;dem:=1;sotenhang:=0;

for i:=1 to n dobegin kiemtra:=false;

Bieân soaïn : Tröông vaên Tuyeán 201

Page 202: Pascal 1

GIAÙO TRÌNH PASCAL Trang 202TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG for j:=1 to sotenhang do if mh[j]=a[i].mahang then kiemtra:=true; if not kiemtra then begin sotenhang:=sotenhang+1; mh[j]:=a[i].mahang; end; end; for i:=1 to sotenhang-1 do begin tongtien:=0; for j:=1 to n do if mh[i]=a[j].mahang then tongtien:=tongtien+a[j].soluong * a[j].dongia; writeln('Tong so tien mua cua ',mh[i],' la ',tongtien:10:2); end;readln;end.*Bt 11 Vieát chöông trình nhaäp va xuaát ra maøn hình hoaøn caûnh gia ñình cuûa töøng nhaân vieân . neáu moät nhaân vieân coù gia ñình thì phaûi nhaäp xuaát teân vôï hoaëc choàng vaø soá conprogram bt11;constmax=100;TD1='|======================|====================|========|';TD2=#124+' HO VA TEN '+#124+ ' HOTENVOCHONG '+#124+' SOCON '+#124;TD3='|======================|====================|========|';

typegiacanh=RECORDHoten:string[24];CASE GIADINH :boolean oftrue :(vochong:string[24];socon:byte);end;varHsgc:array[1..max] of giacanh;n,i:1..max;ch:char;begin

Page 203: Pascal 1

GIAÙO TRÌNH PASCAL Trang 203TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongwriteln('HO SO GIA CANH ');WRITELN('------------------');Writeln;writeln('So luong nhan vien ');readln(n);for i:=1 to n do { nhap du lieu }with hsgc[i] dobegin writeln(' +Ho ten nhan vien thu ',i:2,' la =');readln(hoten); writeln(' +Co gia dinh chua= ');readln(ch); ch:=upcase(ch); if ch='C'THEN BEGIN giadinh:=true; write('Ho ten vo chong ');readln(vochong); write('So con ');readln(socon);

END else giadinh:=false; end; writeln; writeln(#32:25,'HOAN CANH GIA DINH NHAN VIEN '); WRITEln(#32:12,td1); {#32 : KHOANG TRANG } WRITEln(#32:12,td2); WRITEln(#32:12,td3); for i:=1 to n do {xuat dulieu} with hsgc[i] do begin write(#32:12); write(#124,hoten,#32:22-length(hoten)); if giadinh then begin write(#124,vochong,#32:20-length(vochong)); writeln(#124,socon:8,#124) end else begin write(#124,#32:24); writeln(#124,#32:6,#124); end; end; writeln(#32:12,td1);

readln; end.

Bieân soaïn : Tröông vaên Tuyeán 203

Page 204: Pascal 1

GIAÙO TRÌNH PASCAL Trang 204TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

bt 13: vieát chöông trình quaûn lyù khaùch saïn cuûa moät thö vieän , Hoà sô cuûa moät quyeån saùch bao goàm : teân saùch ,teân taùc giaû , naêm xuaát baûn , teân ngöôøi muôïn . In ra maøn hình caùc saùch cuûa thö vieän vaø hieän nay ñaõ cho möôïn bao nhieâu quyeån saùch .

program thuvien;constmax=100;typesach=recordtensach:string[20];tacgia:string[25];namxb:word;nguoimuon:string[25];end;VARa:array[1..max] of sach;ok:char;i,n,muon:integer;begini:=1;while (ok<>'K') and (i<=max) DObegin with a[i] do begin writeln('tensach');readln(tensach); writeln('Tac gia');readln(tacgia); writeln('nam xuat ban');readln(namxb); writeln('Ten nguoi muon');readln(nguoimuon);

end; write(' co nhap nua khong');readln(ok); OK:=UPCASE(OK); i:=i+1;

end;n:=i; muon:=0;for i:=1 to n dobeginwriteln(i,',-',a[i].tensach,'-TG ',a[i].tacgia,'-Nxb ',a[i].namxb,'-Nm ',a[i].nguoimuon);if (a[i].nguoimuon='K')or (a[i].nguoimuon='k') THEN muon:=muon+1;

Page 205: Pascal 1

GIAÙO TRÌNH PASCAL Trang 205TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongend; writeln('Tong so sach cho muon',muon); readln end.Bt 14(* viet chuong trinh sap xep theo thu tu tang dan ve diem hoc tap cua Lop*)pROGRAM BT;TYPEHOSO=RECORDholot:string[17];ten:string[7];diem:real;end;var a:array[1..50] of hoso;tam:hoso;n,i,j,phantu:integer;ok:char;begini:=1;while ok<>'K' dobeginwith a[i] do begin write('nhap holot ');readln(holot); write('nhap Ten ');readln(ten); write('nhap Diem ');readln(diem); end; i:=i+1;writeln('co nhap nua ');READLN(ok);ok:=upcase(ok);end;n:=i-1;for i:=1 to n-1 dofor j:=i+1 to n doif a[i].diem>a[j].diem thenbegintam:= a[i];a[i]:=a[j];a[j]:=tam;end;for i:=1 to n dowriteln(a[i].holot,' ',a[i].ten,' ',a[i].diem);

readln;end.bt 15viet chöông ttính ñieåm cuûa moät lôùp :

Bieân soaïn : Tröông vaên Tuyeán 205

Page 206: Pascal 1

GIAÙO TRÌNH PASCAL Trang 206TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGNhaäp caùc thoâng tin sau ñaây cho moãi hoïc sinh : hoï teân naêm sinh , ñieåm trung bình cuûa hoïc kyø I , ñieåm trung bình cuûa hoïc kyø II -In ra danh sach cac hoc sinh cuûa lôùp theo thöù töï giaûm daàn cuûa ñieåm trung bình toaøn naêm ( Tb hk1+tb HkII)/2 vaø xeáp haïng theo keát quaû tính ñieåm trung bình toaøn naêm .

program bt;constmax=100;typehocsinh=RECORDhoten:string[25];namsinh:integer;dtb1,dtb2:real;end;var a:array[1..max] of hocsinh;i,j,n:integer;tam:hocsinh;beginwriteln('nhap so hs cua lop ');readln(n);for i:=1 to n dowith a[i] dobegin writeln('Nhap Ho ten ');readln(hoten); writeln('Nhap nAMSINH ');readln(NAMSINH); writeln('Nhap Dtb hk I ');readln(dtb1); writeln('Nhap Dtb hk II ');readln(dtb2);

end; FOR i:=1 to n do for j:=i+1 to n do if (a[i].dtb1+a[i].dtb2) > (a[j].dtb1+a[j].dtb2) then begin tam:=a[i]; a[i]:=a[j]; a[j]:=tam;

end; for i:=1 to n do writeln(i,')',a[i].hoten,' ',(a[i].dtb1+a[i].dtb2)/2:10:2);readln;end.

Bt20.Viet chuong trinh cong tru nhan chia da thucprogram xdathuc;

Page 207: Pascal 1

GIAÙO TRÌNH PASCAL Trang 207TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongconstmax=10;typedathuc=recordbac:integer;heso:array[1..max] of real;end;var A,B,C:DATHUC;i,j:integer;procedure nhap;beginrepeatwriteln('nhap 2 da thuc A(X),B(X) voi ');writeln('Bac cua Da thuc A(x)<=max ');readln(A.bac);if A.bac>max then write('bac cua da thuc A(x) phai < ',max,'nhap lai') ;writeln('Bac cua Da thuc B(x)<=max ');readln(B.bac);if B.bac>max then write('bac cua da thuc B(x) phai < ',max,'nhap lai');until (A.bac<=max) and (B.bac<=max);writeln('Nhap cac he so cuA DA THUC A[X] ');for i:=1 to max do begin A.heso[i]:=0; B.heso[i]:=0; end; for i:=A.bac downto 1 dobegin write('nhap heso bac ',i,' :');readln(A.heso[i]);end;writeln('Nhap cac he so cuA DA THUC B[X] '); for i:=B.bac downto 1 dobegin write('nhap he so bac ',i,' :');readln(B.heso[i]); end;end;procedure cong( a,b:dathuc;var c:dathuc);begin if A.bac >= B.bac then C.bac:=A.bac else C.bac:=B.bac; for i:=C.bac downto 1 do C.heso[i]:=A.heso[i]+B.heso[i]; write('Da thuc tong '); for i:=C.bac downto 1 do write(c.heso[i]:10:2,'.x^ ',i,'+');

end;procedure Tich(a,b:dathuc;var c:dathuc);

Bieân soaïn : Tröông vaên Tuyeán 207

Page 208: Pascal 1

GIAÙO TRÌNH PASCAL Trang 208TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGbegin for i:=max downto 1 do c.heso[i]:=0; for i:=1 to A.bac do for j:=1 to B.bac do C.heso[i+j]:=c.heso[i+j]+A.heso[i]*B.heso[j]; c.bac:=a.bac+b.bac;end;

begin nhap; tich(a,b,c); write('Da thuc tich '); for i:=C.bac downto 1 do write(c.heso[i]:10:2,'.x^ ',i,'+'); readln;end.Baøi taäp chöông RECORDCUÙ PHAÙP :TYPE

<Teân kieåu baûn ghi > =RECORD<teân tröôøng >: <kieåu döõ lieäu>;

Ví duï : taïo moät kieåu döõ lieäu baûn ghi cho ngaøy thaùng naêm nhö sau :TYPE

DATE=RECORDNGAY:1..31;THANG:1..12;NAM:1900.2000;

END;Xaây döïng chöông trình nhaäp xuaát3)VÍ DUÏ 2: TA ñònh nghóa kieåu coù teân person ñeå bieåu dieãn thoâng tin veà moät nhaân vieân trong coâng ty vôùi yù nghóa chính nhö sau :PERSON

1.Hoï vaø teân2.Maõ nhaân vieân3.Maõ chöùc vuï4.Giôùi tính5.Ngaøy thang naêm sinh6.Tình taïng gia ñình neáu coù

a.neáu coù gia ñình ,goaùngaøy cöôùi (ngaøy,thaùng ,naêm )b.Neáu ly dòngaøy li dò (ngaøy ,thaùng ,naêm )ly dò laàn I (false,true )

Page 209: Pascal 1

GIAÙO TRÌNH PASCAL Trang 209TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongc.neáu ñoä thaâncoøn ôû vôùi boá meï (false,true ) thì khai baùo nhö sau :TYPE

TTGD=(DOCTHAN,COGD,LYDI,GOA);DATE=RECORD

Ngay:1..31;Thang:1..12;Nam:1900.2000;

END;PERSON=RECORD;

Ho_ten:RECORD;HO:STRING;TEN:STRING;

END;Manv:1..1000;Macv:char;Gioitinh:(nam,nu);Ngaysinh:date;CASE GD:TTGD OF

Cogd,goa: ( ngaycuoi:date);Lydi:(ngaylydi:date);Lydilan1:boolean;Docthan:(ovoibome:boolean);

End;Var p1,p2: person;

Khi khia baùo hai bieán p1,p2 coù kieåu laø person thì hai bieán naøy seõ mang thoâng tin theo maãu sau :HoTeânMa nhan vienMa chuc vuGioi tinhNgay sinh Thang NamTình tang gia ñìnhTRUE hoaïc FALSE4)

Bieân soaïn : Tröông vaên Tuyeán 209

Page 210: Pascal 1

GIAÙO TRÌNH PASCAL Trang 210TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGMoät vaøi ví duï : moät ñòa chæ bao goàm caùc döõ lieäu nhö soá nhaø ,teân phoá ,thaønh phoá : ta moâ taû record dia_chi nhö sau :TYPE

Dia_chi=RECORDSonha :integer;Pho :string[20];Thanh_pho:string[20];

End;Nhö vaäy chuùng ta coù 3 tröôøng laø so nhaø ,pho ,vaø Thanh_pho voùi kieåu khaùc nhau (integer;,string[20],string[15]) chuùng ñöôïc lieân keát vôùi nhau ñeå moâ taû ñòa chæ )Ñeå moâ taû thôøi gian DTE theo kieåu tieáng AnhTYPE

DATE=RECORDDay:1..31;Month : ( Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec); Year:integer;

End;

TYPENHAN_SU=RECORD

Ho_ten:string[30];Ngay_sinh:date;Gioitinh:(thí duï vöøa roài cho thaáy ñaëc ñieåm loàng nhau cuûa caáu truùc döõ lieäu nam,nu);O-Tai:dia_chi;Luong:real;End;

Ñeå moâ taû nhaân söï hay phieáu caùn boä ôû phoøng toå chöùc ,ta phaûi duøng caùc tröôøng hoï ,teân ,ngaøysinh,choå ôû ,Löông ..ôû ñaây ta laáy ví duï vôùi 5 tröôøng . Giaû söû coù moâ taû kieåu Date vaø diachi nhö ôû treântrong moâ taû record cuûa nhansu ,ta coù theå moâ taû caùc phaàn töû ( caùc tröôøng ) cuûa record laø moät kieåu record khaùc nhö tröôøng ngaøy sinh vaø choå ôû Ta cuõng coù theå moâ taû tröôøng ngaysinh neáu nhö chöa coù moâ taû kieåu DATETYPE

Nhan_su=RECORDHo_ten: string[30];Ngay_sinh:RECORD

Ngay:1..31;Thang:1..12;Nam:integer;

END;

Page 211: Pascal 1

GIAÙO TRÌNH PASCAL Trang 211TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongGioi_tinh:(nam,nu);O-tai: Dia_chi;Luong:real;

End;

ÑÒNH NGHÓA KIEÅU TÖÔØNG MINH :ñònh nghóa kieåu töôøng minh töùc laø khai baùo toaøn boä caùc tröôøng cuûa moät kieåu baûn ghio naøo ñoù .Ví duï döôùi ñaây ñònh nghóa kieåu ly_lich coù 10 nhoùm vaø tröôøng döõ lieäu nhö sau :TYPELy_lich=RECORD ma_so :integer; holot :string[17]; ten :string[7]; ngay_sinh :1..31; thang_sinh :1..12; Nam_sinh :1900..2000; Quequan,diachi:string[20]; donvi,chucvu:string[15]; luong:real; giadinh:boolean; end;5)Type Vuong=RECORDCanh : integer;End;chunhat=RECORDdai,rong : integer;End;hinhthang=RECORDdaylon,daynho,cao : integer;End;binhhanh=RECORDCaùnh,caønh,goc : integer;End;hinhthoi=RECORDCanh,goc : integer;End; Trong töøng kieåu baûn ghi treân ñaây caùc tröôøng döõ lieäu khaùc nhau :Caïnh (Hình vuoâng ) ;chieàu daøi ,chieàu roäng ( hình chöõ nhaät ) ,Ñaùy lôùn , ñaùy nhoû , chieàu cao (Hình thang )… Ñeå giuùp cho ngöôøi laäp trình ñôn giaûn vieäc ñònh nghóa caùc kieåu baûn ghi keå treân , turbo Pascal xaây döïng kieåu baûn ghi coù caáu truùc thay

Bieân soaïn : Tröông vaên Tuyeán 211

Page 212: Pascal 1

GIAÙO TRÌNH PASCAL Trang 212TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGñoåi ( variant records ) cho pheùp chæ caàn khai baùo moät kieåu baûn ghi nhöng coù caùc tröôøng ( fields ) thay ñoåi . Noùi caùch khaùc thay vì phaûi ñònh nghóa caùc kieåu baûn ghi nhö treân thì baïn chæ caàn ñònh nghóa moät kieåu baûn ghi vaø caùc bieán baûn ghi nhö sau :Type Hinh=(vuong,chunhat,hinhthang,binhhanh,hinhthoi); Kichthuoc=RECORD CASE Hinggi : hinh of

Vuong:(canh:integer);chunhat:(dai,rong:integer);hinhthang:(daylon,daynho,cao:integer);binhhanh:(canh1,canh2,goc:integer);hinhthoi:(canh,goc:real);

end;vartugiac:kichthuoc;sau khi khai baùo ta coù theå duøng caùc bieåu thöùc sau :Tugiac.Hinhgi:=chunhat;Khi Hinhgi ñaõ ñöôïc gaùn giaù trò (ôû ñaây laø Chunhat) thì caùc tröôøng cuûa noù seõ ñöôïc taïo laäp ( laø caùc tröôøng dai,rong ) neân ta coù theå tieáp tuïc gaùn :Tugiac.dai:=20;Tugiac.rong:=15;Thì seõ taïo ra 3 tröôøng : canh,canh2 ,goc vaø gaùn gia trò cho chuùng Xaây döïng moät haøm ñeå tính dieän tích :Function dientich(DT:Kichthuoc):real;BeginWith Dt do

Case hinggi ofVuong:dientich:=sqr(canh);Hinhthang:Dientich:=(daylon+daynho)*cao/2;binhhanh:Dientich:=(canh1+canh2*sin(goc));hinhthoi:Dientich:=(canh*canh2*sin(goc));

end;end;End;typehinh=(vuong,chunhat,hinhthang,binhhanh,hinhthoi);kichthuoc=RECORDCASE HINHGI:hinh ofvuong:(canh:integer);chunhat:(dai,rong:integer);hinhthang:(daylon,daynho,cao:integer);

Page 213: Pascal 1

GIAÙO TRÌNH PASCAL Trang 213TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongbinhhanh:(canh1,canh2,goc:integer);hinhthoi:(canhx,gocx:real);end;vartugiac:kichthuoc;hinhgi:hinh;loai:string;

ví du : Heä thoáng hoaù ñôn cho khaùch haøng :ta seõ xeùt heä thoáng hoù ñôn cho khaùch haøng trong ñoù caùc record cuûa khaùch haøng ñöôïc nhaäp vaøo maùy tính ,soá lieäu cho moãi khaùch haøng ñöôïc caäp nhaät ñeå phaûn aùnh laïi soá tieàn traû hieän haønh vaø soá dö coøn laïi trong maùy tính type status=(current,overdue,delinquent);date=record month:1..12; day:1..31; year:1900..2100; end; account=RECORD name:string; street:string; city:string; custno:1..9999; custtype:status; oldbalance:real; newbalance:real; payment:real; paydate:date; end; var customer:array[1..10] of account; i,n:1..10; procedure readinput; var space:char; begin for i:=1 to n do with customer[i] do begin writeln; writeln('costomer no : ',i:3); write(' name : ');readln(name); write(' street : ');readln(street); write(' City : ');readln(city); write(' Account number : ');readln(custno); write(' Account number : ');readln(custno); write(' Previous balance : ');readln(oldbalance); write(' current payment : ');readln(payment);

Bieân soaïn : Tröông vaên Tuyeán 213

Page 214: Pascal 1

GIAÙO TRÌNH PASCAL Trang 214TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG write(' payment date (mm dd yyyy) '); WITH paydate do

read(month,space,day,space,year); readln; end; end; procedure processdata; (*xac dinh status va tinh can doi moi cho moi record *) begin for i:=1 to n do with customer[i] do begin custtype:=current; if(payment>0) and (payment<0.1*oldbalance) then custtype:=overdue; if(oldbalance>0) and (payment=0) then custtype:=delinquent; newbalance:=oldbalance-payment;

end;end;procedure writeoutput;(*hien thi thong tin hien tai cua moi record *)begin for i:=1 to n do with customer[i] do begin writeln; write('Name :',name); writeln('Account number : ',custno:4); writeln; writeln('Old balance : ',oldbalance:7:2); writeln('Current payment : ',payment:7:2); writeln('New balance : ',newbalance:7:2); writeln; write('Account status : '); case custtype of current:writeln('CURRENT'); OVERDUE:writeln('overdue'); Delinquent:writeln('delinquenT'); end; writeln; end; end; begin write('CUSTOMER BILLINGS SYSTEM');

Page 215: Pascal 1

GIAÙO TRÌNH PASCAL Trang 215TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong writeln; write('How many custom are there ');readln(n); readinput; processdata; writeoutput; readln; end.

end;

end;

Kieåu teäp I/ KHAÙI NIEÄM :Caùc kieåu döõ lieäu ta ñaõ khaûo saùt hieän dieän trong boä nhôù RAM khi khôûi ñoäng chöông trình , nhöng khi chaám döùt chöông trình , caùc döõ lieäu bò xoaù maát , vì vaäy vieäc löu tröõ dö 4lieäu laâu daøi hoaëc söû duïng laïi nhieàu laàn khoâng theå thöïc hieän ñöôïc PASCAL ñaõ taïo ra moät kieåu ta löu tröõ döõ lieäu laâu daøi treân ñóa meàm hoaëc ñóa cöùng goïi laø kieåu döõ lieäu File II/ ÑÒNH NGHÓA :File laø moät caáu truùc döõ lieäu goàm nhieàu phaàn töû cuøng kieåu ñöôïc nhoùm laïi vôùi nhau taïo thaønh moät daây .Thoâng thöôøng coù hia loaïi File : File coù kieåu : Moãi phaân töû cuûa File laø moät döõ lieäu kieåu cô sôû hay kieåu record File daïng Text : Döõ lieãu ñöôïc löu tröõ treâhn ñóa coù thaønh phaàn cô baûn laø caùc kyù töï , caáu truùc laïi thaønh caùc doøng , moãi doøng ñöôïc keát thuùc baèng daáu EOLN ,File ñöôïc keát thuùc bôûi daáu Eof III/ CAÙCH KHAI BAÙO

Caùch vieát Yù Nghóa TYPE F: FILE OF KPT VAR X,Y:F;ASSIGN (FILEVAR , TEÂN FILE ) REWRITE (bieán File ) ;

Ñònh nghóa kieåu F laø File cuûa caùc kieåu phaàn töû Bieán X, Y thuoäc kieåu F Môû File ñeå chuaån bò vieát

Bieân soaïn : Tröông vaên Tuyeán 215

Page 216: Pascal 1

GIAÙO TRÌNH PASCAL Trang 216TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

WRITE ( Filevar , X1, X2,…Close ( Filevar ) ; ASSIGN ( Filevar , teân File , teân File ) reset ( Filevar ) ; READ ( Filevar , X1, X2, …Xn ) ;

Vieát caùc giaù trò X1,

X2,..Xnvaøo FileÑoùng File Môû File ñeå chuaån bò ñoïc Ñoïc caùc giaù trò cuûa File ra caùc bieán X1,X2, …XN

CAÙC THAO TAÙC TREÂN FILE : ASSIGN ( filevar ,filename ) filevar laø moät bieán File , filename laø moät bieåu thöùc kieåu string Taùc duïng laø gaùn 1 teân thöïc söï filenam cho moät bieán File, filename laø teân cuûa file khi ghi treân ñóa REWRITE ( Filevar ) Taùc duïng ñeå môû moät File khi File ñaõ coù treân ñóa READ ( filevar , x) X laø moät hay nhieàu bieán thuoäc kieåu thaønh phaàn cuûa kieåu File ( neáu nhieàu thì phaân caùch nhau bôûi daáu phaåy ) Ví duï : Read ( fl,HK,KT ) WRITE ( filevar ) Doøng File ñeå traùnh bò hö hao , maát maùt döõ lieäu SEEK ( Filevar , n) - n laø bieåu thöùc interger - caùc phaàn töû cuûa File ñöôïc ñaùnh soá 0, 1, …n - Seek (filevar , n ) seõ cho pheùp ta truy xuaát phaàn töû ñöôïc

ñaùnh soá n cuûa File - ERASE (filevar ) - Ñeå xoaù moät File - File caàn xoaù phaûi ñöôïc ñoùng roài - RENAME ( filevar , newname ) : - Ñoåi teân file thaønh newname V/ CAÙC HAØM TREÂN FILE Moãi file coù moät con troû nhö laø ngöôøi chæ ñöôøng , ki truy xuaát phaàn töû naøo ñoù cuûa file xong , con troø seõ chæ ñeán phaàn töû keá tieáp . EOF ( filevar ) Cho trò laø true neáu heát File hay con troû coù vò trí cuoái File * FILESIZE (filevar ) Cho bieát kieåu interger Cho bieát chieàu daùi cuûa File Ví duï : Vieát chöông trình ghi vaùo 100 soá töï nhieân töø ñeán 100) Program GHI :Var I: interger

Page 217: Pascal 1

GIAÙO TRÌNH PASCAL Trang 217TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongF: file of integer Begin Assign ( f, INTEGER GHIT) Rewrite f) for I: =to 100 do write ( f, I) Close (f)End Ví duï 2: Vieát chöông nhaäp ñieåm caùc moân Toaùn . Lyù , Hoaù cuûa töøng oïc sinh vaø ghi vaøo ñóa Sau ñoù ñoïc döõ lieäu

typehocsinh=record hoten:string[20]; T,L,H:integer; end; fd=file of hocsinh; str30=string[30]; var hs:hocsinh; f:fd; b:boolean; filename:string;

program nhap;uses crt;type

hocsinh=record hoten:string[20]; T,L,H:integer; end; fd=file of hocsinh; str30=string[30]; var hs:hocsinh; f:fd; b:boolean; filename:string; procedure ghi(var f:fd;filename:str30); begin assign(f,filename); rewrite(f); b:=true; while b do with hs do begin

Bieân soaïn : Tröông vaên Tuyeán 217

Page 218: Pascal 1

GIAÙO TRÌNH PASCAL Trang 218TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG write('ho ten hsinh ');readln(hoten); if hoten='' then b:=false else begin write('diem toan = ');readln(t); write('diem Ly = ');readln(T); write('diem Hoa = ');readln(H); write(f,hs); end; end; close(f);

end; procedure doc(var f:fd;filename:str30); begin assign(f,filename); reset(f); while not eof(f) do begin read(f,hs); with hs do begin writeln('Ho Ten :',hs.hoten:20,'Diem toan :',hs.t,'Diem Ly :',hs.L,'Diem Ly :',hs.H); end;

end;

end; begin clrscr; write('cho biet ten tap tin ');readln(filename); ghi(f,filename); doc(f,filename); readln; end.

Vieát chöông trình thöïc hieäc caùc vieäc sau : Ñoïc töø baøn phím moät dnah saùch goàm: hoï teân , moân thi thöù nhaát , ñieåm moân thi thöù nhaát , moân thi thöù hai , ñieåm moân thi thöù hai . b. Ghi vaøo ñóa meàm vôùi teân File QLHT C. Ñoïc töø döõ lieäu File ( QLHT tìm nhöõng hoïc sinh thi laïi coù ít nhaát moät moân khoâng ñaït .Ñöa soá thöù töï , hoï teân , caùc moân thi phaûi thi laïi vaø ñieåm töông öùng ra maøn hình .

Page 219: Pascal 1

GIAÙO TRÌNH PASCAL Trang 219TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongProgram THI : Ví duï : Laäp chöông trình moät file coù teân ñöa töø baøn phím vaøo trong moät oå ñóa chuû khoâng ? .neáu coù thì cho bieát ñoä daøi cuûa noù toå chöùc chöông trình hoäi thoaïi ñeå thöïc hieän nhieàu laàn ñeán khi duøng ESC program bt;uses crt;varf:file of integer;s:string;i,t:integer;ch:char;beginclrscr;assign(f,'d:\bt9.dat');rewrite(f);repeatwrite('nhap i ');readln(i);write(f,i);ch:=readkey;until ch=#27;close(f);assign(f,'d:\bt9.dat');reset(f);t:=0;while not eof(f) dobegin read(f,i); t:=t+i;end;write('tong la ',t);readln;end.

Baøi Taäp : 1. Vieát chöông trình ñoïc moät daõy soá töø baøn phím vaøo roài ghi

chuùng vaøo ñóa meàm , sau ñoù ñoïc töø ñóa ra daõy ñoù vaø tính toång cuûa chuùng

program bt;uses crt;varf:file of integer;s:string;i,t:integer;

Bieân soaïn : Tröông vaên Tuyeán 219

Page 220: Pascal 1

GIAÙO TRÌNH PASCAL Trang 220TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGbeginclrscr;assign(f,'d:\bt9.dat');rewrite(f);for i:=1 to 10 dowrite(f,i);close(f);assign(f,'d:\bt9.dat');reset(f);t:=0;while not eof(f) dobegin read(f,i); t:=t+i;end;readln;end.{ viet chuong trinh tao ra tep F3 chua cac so nguyen bang cach noi 2 tep so nguyen}program bt;typefileInteger=File of Integer;var F1,F2,F3,f:FileInteger;name1,name2,name3:string[80];I:integer;b:boolean;procedure tao(var F:FileInteger;s:string);beginassign(f,s);rewrite(f);b:=true;while b do begin write('Nhap i ');readln(i); if i=-1 then b:=false; write(f,i); end;end;procedure doc(var F:FileInteger;s:string);beginassign(f,s);reset(f);while not eof(f) do begin read(f,i); write(i); end;end;

Page 221: Pascal 1

GIAÙO TRÌNH PASCAL Trang 221TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong

(*---------------------------------------------*)procedure Doc_ghi(var F1,F2:fileInteger);(*Tham so file luon luon la tham so bien *)begin assign(F1,name1); reset(F1); while not Eof(f1) do begin read(F1,I); write(F2,I); end; close(f1);end;(*--------------------------------------*)begin write('Ten tep F1 : ');readln(name1); write('Ten tep F2 : ');readln(name2); write('Ten tep F3 : ');readln(name3); tao(f1,name1); tao(f2,name2); assign(f3,name3); rewrite(f3); Doc_ghi(F1,F3); Doc_ghi(F2,F3); doc(f3,name3); close(f3); readln;end.program thambien;typeFi=file of Integer;str30=string[30];varf:FI;filename:str30;i:integer;

procedure ghi(var f:FI;st:str30);begin assign(f,st); rewrite(f); for i:=1 to 100 do write(f,i); close(f);end;procedure doc(var f:FI;st:str30);begin assign(f,st); reset(f);

Bieân soaïn : Tröông vaên Tuyeán 221

Page 222: Pascal 1

GIAÙO TRÌNH PASCAL Trang 222TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG while not eof(f) do begin read(f,i); write(i) ; end; close(f);end;begin write('Nhap ten ');readln(filename); ghi(f,filename); doc(f,filename); readln;end.

Taïo ra moät file caùc RECORD khaùch haøng Tao mot file taikhoan cac phan töû cuûa file seõ laø cac maãu tin cuûa khaùch haøng .soá maãu tin khoâng caàn xaùc ñònh tröôùc .Ta chæ caàn ñôn giaûn nhaäp döõ lieäu vaøo cho ñeán khi gaëp giaù trò 9999 thì thoaùt program Taofile(Nhap,Xuat,khachhang);typeTaikhoan=RECORDSotaikhoankh:1..999;candoithuchi:real;end;var taikhoankh:taikhoan;f:file of taikhoan;beginassign(f,'g:\bt.txt');rewrite(f);{open the file} with taikhoankh do begin write('so tai khoan : ');readln(sotaikhoankh); while sotaikhoankh<999 do begin write('can doi thu chi :');readln(candoithuchi); write(f,taikhoankh);{write record to file} writeln; write('so tai khoan :');readln(sotaikhoankh); end; end; readln; end. end;chöông trình ñaày ñuû xuaát nhaäp nhö sau :program Taofile(Nhap,Xuat,khachhang);type

Page 223: Pascal 1

GIAÙO TRÌNH PASCAL Trang 223TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongTaikhoan=RECORDSotaikhoankh:1..999;candoithuchi:real;end;var taikhoankh:taikhoan;f:file of taikhoan;beginassign(f,'g:\bt.txt');rewrite(f);{open the file} with taikhoankh do begin write('so tai khoan : ');readln(sotaikhoankh); while sotaikhoankh<999 do begin write('can doi thu chi :');readln(candoithuchi); write(f,taikhoankh);{write record to file} writeln; write('so tai khoan :');readln(sotaikhoankh); end; end; close(f); assign(f,'g:\bt.txt'); reset(f); while not eof(f) do with taikhoankh do begin read(f,taikhoankh); write(taikhoankh.sotaikhoankh); write(taikhoankh.candoithuchi:5:1); writeln; end; close(f); readln; end.

program chepfile(newfile,oldfile);(*Chep noi dung cua mot file vao mot file moi *)TYPE taikhoan=RECORD soTk:1..9999; candoicu:real; candoimoi:real; chitra:real; end; var newfile,oldfile:FILE of taikhoan; taikhoancu,taikhoanmoi,kh:taikhoan; khachhang:File of Taikhoan;

Bieân soaïn : Tröông vaên Tuyeán 223

Page 224: Pascal 1

GIAÙO TRÌNH PASCAL Trang 224TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG begin assign(oldfile,'d:\tuyen1.dat'); rewrite(oldfile); with taikhoancu do begin write(' so tai khoan ');readln(sotk); while taikhoancu.sotk < 9999 do begin write('can doi cu ');readln(candoicu); write('can doi moi ');readln(candoimoi); write('chi tra ');readln(chitra); write(oldfile,taikhoancu); (*Write record to file *) write(' so tai khoan ');readln(sotk);(*next record *)

end;

end; close(oldfile); assign(oldfile,'d:\tuyen1.dat'); reset(oldfile); assign(newfile,'d:\tuyen2.dat'); rewrite(newfile); while not eof(oldfile) do begin read(oldfile,taikhoancu);

taikhoanmoi:=taikhoancu; write(newfile,taikhoanmoi); end; assign(newfile,'d:\tuyen2.dat');

reset(newfile); while not eof(newfile) do

begin read(newfile,taikhoanmoi); with taikhoanmoi do begin write(taikhoanmoi.sotk); write(taikhoanmoi.candoicu:5:1); write(taikhoanmoi.candoimoi:5:1); write(taikhoanmoi.chitra:5:1); end; end;

Page 225: Pascal 1

GIAÙO TRÌNH PASCAL Trang 225TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong readln; end.Haõy vieát laïi baøi toaùn döôùi daïng chöông trình conprogram chepfile(newfile,oldfile);(*Chep noi dung cua mot file vao mot file moi *)uses crt;TYPE taikhoan=RECORD soTk:1..9999; candoicu:real; candoimoi:real; chitra:real;

end;tk=file of taikhoan;str30=string[30]; var filemoi,filecu:str30; newfile,oldfile:FILE of taikhoan; f,f2:tk; taikhoancu,taikhoanmoi,kh:taikhoan; khachhang:File of Taikhoan; procedure ghi(var f:tk;s:str30); begin assign(f,s); rewrite(f); with kh do begin write(' so tai khoan ');readln(sotk); while kh.sotk < 9999 do begin write('can doi cu ');readln(candoicu); write('can doi moi ');readln(candoimoi); write('chi tra ');readln(chitra); write(f,kh); (*Write record to file *) write(' so tai khoan ');readln(sotk);(*next record *)

end;

end; close(f); end; procedure chep(var filemoi:str30;filecu:str30); begin assign(oldfile,filecu); reset(oldfile); assign(newfile,filemoi);

Bieân soaïn : Tröông vaên Tuyeán 225

Page 226: Pascal 1

GIAÙO TRÌNH PASCAL Trang 226TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG rewrite(newfile); while not eof(oldfile) do begin read(oldfile,taikhoancu);

taikhoanmoi:=taikhoancu; write(newfile,taikhoanmoi); end; close(newfile); close(oldfile); end; procedure doc(var f:tk;s:str30); begin assign(f,s); reset(f); while not eof(f) do

begin read(f,kh); with kh do begin write('so tai khoan :',kh.sotk); write(kh.candoicu:5:1); write(kh.candoimoi:5:1); writeln(kh.chitra:5:1); end; end; end;begin clrscr; write('Ten file cu ');readln(filecu); write('Ten file moi ');readln(filemoi); ghi(f,filecu); chep(filemoi,filecu); doc(f,filemoi); readln; end.Môû taäp tin coù saün treân ñóa roài nhaäp theâm döõ lieäu vaøo cuoái taäp tin ñoù program chepfile(newfile,oldfile);(*Chep noi dung cua mot file vao mot file moi *)TYPE taikhoan=RECORD soTk:1..9999; candoicu:real; candoimoi:real; chitra:real;

Page 227: Pascal 1

GIAÙO TRÌNH PASCAL Trang 227TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong end;tk=file of taikhoan;str30=string[30]; var F:TK; filemoi,filecu:str30; newfile,oldfile:FILE of taikhoan; taikhoancu,taikhoanmoi,kh:taikhoan; khachhang:File of Taikhoan; procedure ghi(var f:tk;s:str30); begin assign(f,s); rewrite(f); with kh do begin write(' so tai khoan ');readln(sotk); while kh.sotk < 9999 do begin write('can doi cu ');readln(candoicu); write('can doi moi ');readln(candoimoi); write('chi tra ');readln(chitra); write(f,kh); (*Write record to file *) write(' so tai khoan ');readln(sotk);(*next record *)

end;

end; close(f); end; procedure update(var f:tk;s:str30); begin with kh do begin write(' so tai khoan ');readln(sotk); while kh.sotk < 9999 do begin write('can doi cu ');readln(candoicu); write('can doi moi ');readln(candoimoi); write('chi tra ');readln(chitra); write(f,kh); (*Write record to file *) write(' so tai khoan ');readln(sotk);(*next record *)

end;

end;

Bieân soaïn : Tröông vaên Tuyeán 227

Page 228: Pascal 1

GIAÙO TRÌNH PASCAL Trang 228TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG close(f); end; procedure chep(var filecu,filemoi:str30); begin assign(oldfile,filecu); reset(oldfile); assign(newfile,filemoi); rewrite(newfile); while not eof(oldfile) do begin read(oldfile,taikhoancu);

taikhoanmoi:=taikhoancu; write(newfile,taikhoanmoi); end; end;

procedure doc(var f:tk;s:str30); begin assign(f,s);

reset(f); while not eof(f) do

begin read(f,kh); with kh do begin write(kh.sotk); write(kh.candoicu:5:1); write(kh.candoimoi:5:1); write(kh.chitra:5:1); end; end; end; function ktfile(tenfile:str30):boolean; var f:tk; begin

{$I-} assign(f,tenfile); reset(f); close(f); {$I-} ktfile:=(Ioresult=0) and (tenfile<>''); end;procedure mofile(var f:tk;tenfile:str30);

Page 229: Pascal 1

GIAÙO TRÌNH PASCAL Trang 229TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongbegin if ktfile(tenfile) then begin assign(f,tenfile); reset(f); seek(f,filesize(f)); end else writeln('khong co tap tin tren dia ');end;begin write('Ten file cu ');readln(filecu); write('Ten file moi ');readln(filemoi); GHI(F,FILECU); mofile(f,filecu); update(f,filecu); doc(f,filecu); readln; end.

Taïo moät chöông trình ghi vaøo bình phöông vaø caên soá cuûa moät soá sau ñoù xuaát ra program bp;var v,v1,v2:real;f:file of real;i:1..100;begin assign(f,'d:\binhphuong.dat'); rewrite(f); for i:=1 to 100 do begin v:=i; v1:=sqr(i); v2:=sqrt(i); write(f,v,v1,v2); end; close(f);

assign(f,'d:\binhphuong.dat'); reset(f); while not eof(f) do begin read(f,v,v1,v2); write(v:7:2,v1:10:2,v2:7:2); end; close(f);

Bieân soaïn : Tröông vaên Tuyeán 229

Page 230: Pascal 1

GIAÙO TRÌNH PASCAL Trang 230TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG readln;

end.program filedocghi;uses crt;const tenttin='HOSO.DAT';Type Ksvien=Record Hoten:string[20]; Toan,Ly,Dtb:real; end; Fsv=file of Ksvien; str30=string[30]; var F:FSv; X:Ksvien; I:integer; filename:str30;procedure Hienthi(var F:Fsv;filename:str30);begin clrscr; writeln(#32:5,'Ho va Ten ',#32:6,'DTOAN DLY DTB'); assign(f,filename); Reset(f); while not eof(f) do begin read(F,x); writeln(x.Hoten,#32:20-length(x.Hoten),x.toan:4:1,#32:3,X.ly:4:1,#32:3,x.dtb:4:1); end;end;beginclrscr; write('Cho biet ten tap tin ');readln(filename); assign(f,filename); rewrite(F); i:=0; repeat clrscr;gotoxy(10,4); write('Nhap sinh vien thu ',i,': (bam enter de ket thuc )'); with X do begin gotoxy(10,6); write('Ho va ten : '); gotoxy(10,8); write('Diem Toan : '); gotoxy(10,10); write('Diem Ly : '); gotoxy(21,6); readln(hoten);

Page 231: Pascal 1

GIAÙO TRÌNH PASCAL Trang 231TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong if hoten<>'' then begin gotoxy(21,8);readln(toan); gotoxy(21,10);readln(ly); dtb:=(toan+ly)/2; end; end; if x.hoten<>''then write(f,x); i:=i+1; until x.hoten=''; close(f); hienthi(f,filename); close(f);

readln;end.end;

2. Laäp chöông trình thöïc caùc coâng vieäc sau : a) Ñoïc töø baøn phím moät danh saùch hoïc sinh goàm : hoï teân , giôùi tính

, naêm sinh b) Ghi döõ lieäu ra ñóa vôùi teân File laø HSLOP X c) Tìm caùc hoïc sinh laø nöõ vaø sinh tröôùc naêm 1978 roài ñöa ra keát

quaû töø maøn hình Vieát chöông trình thöïc hieän caùc coâng vieäc sau :program noi;typestr30=string[30];hocsinh=recordHoten:str30;gioitinh:string[3];namsinh:1900..2001;end;Fh=file of Hocsinh;var filename:string;i:integer;x:hocsinh;f:fh;function trim(s:string):string;var n,dem:integer;begini:=pos(#32,s);n:=length(s);while (i<>0) and (i <=length(s)) dobegin delete(s,i,1); i:=pos(#32,s);

Bieân soaïn : Tröông vaên Tuyeán 231

Page 232: Pascal 1

GIAÙO TRÌNH PASCAL Trang 232TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG dem:=dem+1;end; s[0]:=char(n-dem); trim:=s;end;

procedure ghi(var F:fh;filename:str30);begin Assign(f,filename); rewrite(f); i:=1; repeat with x do begin writeln('Hoc sinh thu ',i); write('Hoten ');readln(hoten); if hoten<>'' then begin write('Gioitinh ');readln(gioitinh); write('Nam sinh ');readln(Namsinh); write(f,x); end;

end; i:=i+1; until x.hoten=''; close(f);end;procedure loc(var f:fh;filename:str30);beginassign(f,filename);reset(f);while not eof(f) dobeginread(f,x);if (x.gioitinh = 'nu') and (x.namsinh >1978) then writeln('Ho ten : ',x.Hoten,#32:18-length(x.hoten),'GT: ',x.gioitinh,#32:5-length(x.gioitinh), 'Nam sinh : ',x.Namsinh);end;end;begin write('Ten tap tin ');readln(filename); {write('-',trim(filename),'-');} ghi(f,filename); loc(f,filename); readln;

Page 233: Pascal 1

GIAÙO TRÌNH PASCAL Trang 233TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongend.

program xtt;label tt;typestr30=string[30];fd=file of string;varoldname,newname:str30;s:string;f:fd;begintt:write('cho biet ten tap tin : ');readln(oldname);assign(f,oldname);{$I-}reset(f);{$I+}if IOresult <>0 then goto ttelsebegin close(f); assign(f,oldname); erase(f);

end;

readln;end.

THUÛ TUÏC ÑOÅI TEÂN TAÄP TINKhi ñaõ coù taäp tin treân ñóa baïn coù theå söû duïng thuû tuïc Rename ñeå ñoåi teân taäp tin thaønh moät teân khaùc gioáng nhö leänh Rename cuûa DOS . Cuù phaùp cuûa thuû tuïc Rename nhu sau :

Rename(Var filevar :file;newName:string);

Ñoåi teân moät taäp tin ñaõ gaùn cho bieán Filevar thaønh moät teân môùi Newname .Ví duï :ñoåi teân taäp tinProgram Doi_ten;Label tt;

Bieân soaïn : Tröông vaên Tuyeán 233

Page 234: Pascal 1

GIAÙO TRÌNH PASCAL Trang 234TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGVar

F:file of string;Tencu,tenmoi:string;

BeginWriteln(‘THU TUC RENAME , DOI TEN TAP TIN ‘);Writeln(‘----------------------------------------------------‘);Tt:writeln;Write(‘-Cho biet ten tap tin can doi ‘);readln(tencu);Assign(f,tencu);{$I-}reset(f);if Ioresult <>0 then begin

writeln;writeln(‘Khong co tap tin ‘,tencu,’ tren dia ‘);write(‘ Bam enter de tim lai ‘);readln;goto tt;

end; else

beginwriteln;write(‘ Doi thanh ten tap tin moi ‘);readln(tenmoi);close(f);

end;assign(f,tencu);rename(f,tenmoi);writeln;write(‘Da doi ten xong , bam <Enter>…’);readln;close(f);end.

Xin löu yù : thuû tuïc rename() vaø Erase() chæ thöïc hieän ñöôïc khi taäp tin ñoù gaùn cho bieán Filevar vaø chöa ñöôïc môû .*vieát chöông trình goàm moät baûng MENU goàm nhöõng choïn löïa sauwriteln('1.NHAP ');writeln('2.XUAT ');writeln('3.THEM ');writeln('4.SUA ');writeln('5.XOA ');writeln('6.SAP XEP ');writeln('7.thoat ');trong kieåu döõ lieäu str30=string[30];Hocsinh=RECORD

Page 235: Pascal 1

GIAÙO TRÌNH PASCAL Trang 235TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongholot:str30;Ten:str30;namsinh:1980..2000;diem:0..10;end;

program bt;uses crt;typestr30=string[30];Hocsinh=RECORDholot:str30;Ten:str30;namsinh:1980..2000;diem:0..10;end;Fhs=file of hocsinh;varf:fhs;ch:char;filename,ten,ho:str30;namsinh:1980..2000;diem:1..10;i,j,STT,n:integer;hs,tam:hocsinh;ds:array[1..100] of hocsinh;procedure Nhap(var F:Fhs;Filename:str30);beginclrscr; assign(f,filename); rewrite(f); repeat with hs do begin writeln('Hoc sinh thu : ',i); write('Nhap Ho lot : ');readln(holot); if holot<>'' then begin write('Nhap Ten : ');readln(ten); write('Nhap Nam sinh : ');readln(namsinh); write('Nhap Diem : ');readln(diem); write(f,hs); end; end; i:=i+1; until hs.holot='';

Bieân soaïn : Tröông vaên Tuyeán 235

Page 236: Pascal 1

GIAÙO TRÌNH PASCAL Trang 236TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG close(f);end;procedure Xuat(var F:Fhs;Filename:str30);beginclrscr; stt:=1; writeln('STT ',#32:3,' Ho va Ten ',#32:12,'Nam sinh',#32:3,' DIEM '); assign(f,filename); reset(f); while not eof(f) do begin read(f,hs); writeln(stt:4,', ',hs.holot,#32:17-length(hs.holot),hs.ten,#32:10-length(hs.ten), hs.namsinh,#32:6,hs.diem); stt:=stt+1; end;

end;procedure SAPXEP(var F:Fhs;Filename:str30);BEGINclrscr; assign(f,filename); reset(f); i:=0; while not eof(f) do begin I:=I+1; read(f,ds[i]);

end; n:=i; for i:=1 to n-1 do for j:=i+1 to n do if ds[i].ten > ds[J].ten then begin tam:=ds[i]; ds[i]:=ds[J]; ds[J]:=tam; end; I:=0; assign(f,filename); rewrite(f); for i:=1 to n do write(f,ds[i]); XUAT(f,filename);

Page 237: Pascal 1

GIAÙO TRÌNH PASCAL Trang 237TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong close(f);END;procedure capnhat(var f:fhs;filename:str30);beginclrscr;assign(f,filename);reset(f);seek(f,filesize(f));repeatwith hs dobegin write('Nhap ho : ');readln(holot); if holot<>'' then begin write('Nhap ten : ');readln(ten); write('Nhap Nam sinh : ');readln(Namsinh); write('Nhap diem : ');readln(diem); write(f,hs);

end;end;

until hs.holot=''; xuat(f,filename);

end;procedure sua(var f:fhs;filename:str30);var tim:boolean;begin write('Ho lot : ');readln(ho); write('Ten : ');readln(ten); assign(f,filename); reset(f); tim:=false; while (not eof(f)) and not tim do begin read(f,hs); if (hs.holot=ho) and (hs.ten=ten) then begin writeln(stt:4,', ',hs.holot,#32:17-length(hs.holot),hs.ten,#32:10-length(hs.ten), hs.namsinh,#32:6,hs.diem); tim:=true;

end; end;

Bieân soaïn : Tröông vaên Tuyeán 237

Page 238: Pascal 1

GIAÙO TRÌNH PASCAL Trang 238TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG write('Co sua hay khong : ');readln(ch); if upcase(ch)='C' then begin WITH tam do begin write('Ho moi :');readln(holot); write('Ten moi :');readln(ten); write('Nam sinh :');readln(namsinh); write('Diem :');readln(diem); seek(f,filepos(f)-1); WRITE(F,TAM); end; end;

xuat(f,filename); close(f);

end;PROCEDURE XOA(var f:FHS;filename:str30);var tim:boolean;begin assign(f,filename); reset(f); i:=0; while not eof(f) do begin I:=I+1; read(f,ds[i]);

end; n:=i; write('Ho lot : ');readln(ho); write('Ten : ');readln(ten); assign(f,filename); reset(f); tim:=false;I:=0; while (not eof(f)) and not tim do begin read(f,ds[i]); if (ds[i].holot=ho) and (ds[i].ten=ten) then begin writeln(stt:4,', ',ds[i].holot,#32:17-length(ds[i].holot),ds[i].ten,#32:10-length(hs.ten), ds[i].namsinh,#32:6,Ds[I].diem); tim:=true; end; end;

Page 239: Pascal 1

GIAÙO TRÌNH PASCAL Trang 239TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong IF TIM THEN BEGIN write('Co muon xoa hay khong : ');readln(ch); if upcase(ch)='C' then BEGIN RESET(F); begin

FOR J:=I TO N-1 DO DS[J]:=DS[J+1]; REWRITE(F); FOR I:=1 TO N-1 DO WRITE(F,DS[I]);

END; END; I:=0; while not eof(f) do begin I:=I+1; read(f,ds[i]); writeln(stt:4,', ',ds[i].holot,#32:17-length(ds[i].holot),ds[i].ten,#32:10-length(hs.ten), ds[i].namsinh,#32:6,Ds[I].diem);

end;

END; close(f);end;beginclrscr;REPEATwriteln('Nhap ten Tap tin ');readln(filename);writeln('MENU CHON LUA ');writeln('1.NHAP ');writeln('2.XUAT ');writeln('3.THEM ');writeln('4.SUA ');writeln('5.XOA ');writeln('6.SAP XEP ');writeln('7.thoat '); CH:=readkey; case ch of '1':nhap(f,filename); '2':xuat(f,filename); '3':capnhat(f,filename);

Bieân soaïn : Tröông vaên Tuyeán 239

Page 240: Pascal 1

GIAÙO TRÌNH PASCAL Trang 240TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG '4':sua(f,filename); '5':xoa(f,filename); '6':sapxep(f,filename); end;UNTIL CH='7';readln;end.Viet chuong trinh thuc hien doc noi dung mot file van ban ra man hinh , khi day man hinh thi dung lai , cho go mot phim de xem tiepprogram bt;var f:text;st:string;tenfile:string[80];i:integer;begin write('Nhap ten van ban can doc : ');readln(tenfile); assign(f,tenfile);reset(f); i:=0; while not eof(f) do begin readln(f,st);write(st); i:=i+1; if i=24 then begin write(#7,'***Chu y : con tiep ! Go enter de xem tiep ..'); readln; i:=0; end;

end; close(f); readln;

end.Viet chuong trinh dem so tu va so dong cua mot file van ban

Ñoïc töø baøn phím moät n soá nguyeân a) Ghi caùc soá ñoù vaø ñóa meàm b) Ghi daõy soá vaøo ñóa meàm c) Saép caùc soá leû leân ñaàu daõy , caùc soá chaún aán cuoái daõy , maø

khoâng ñöôïc söû duïng treân maïng môù. d) Ñöa ra moät maøn hình daõy soá ñaõ ra , soá löôïng caùc soá leû vaø

toång cuûa chuùng Laäp moät chöông trình laøm caùc vieäc sau :a) Taïo moät File kieåu RECORD goàm : Teân saûn phaåm : String < 21 kí töï

Page 241: Pascal 1

GIAÙO TRÌNH PASCAL Trang 241TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongMaõ saûn phaåm : goàm coù hai maõ laø moät soá nguyeân Ñôn giaù: soá thöïc Teân saûn phaåm ñoïc töø baøn phím vaø keát thuùc vaøo döõ lieäu kh gaëp teân roãng b) Caäp nhaät ñôn giaù saûn phaåm cuûa caùc baûn ghi File döïa theo maõ

thöù 2 . Yeâu caàu hieån thò laàn löôït caùc baûn ghi thuoäc dieän söõa vaø cho pheùp ngöôøi duøng söõa hay khoâng söõa baûn ghi töông öùng .Neáu gaëp maõ môùi thì thoâng baùo vaø boû qua . Vieát chöông trình thöïc hieän caùc vieäc sau : a) Taïo File F1 , F2 laø nhöõng File Text ñeå ghi döõ lieäu töø baøn phím b) Noái File F2 vaøo cuoái file F1 c) Ñöa noäi dung File F1 ra maøn hình

TAÄP TIN KHOÂNG COÙ KIEÅU (Untyped file)Khaùi nieäm : taäp tin khoâng coù kieåu laø taäp tin coù töøng ñôn vò thaønh phaàn la 128 bytes . Moãi laàn ghi vaøo ñóa laø ghi moät soá cuûa 128 bytes.Ví duï moät taäp tin coù kích thöôùc 45,745 bytes thì haøm Filesize(f) cho keát quaû laø 357 töùc laø 357 khoái (block ) töông ñöông vôùi 357x128Töø khaùi nieäm naøy ta coù theå noùi moïi taâp tin ñeàu coù theå coi laø taäp tin khoâng coù kieåu neáu chuùng ta khoâng chuù yù ñeán maët logic cuûa döõ lieäu maø chæ chuù yù ñeán tín chaát vaät lyù cuûa noù .Khai baùo bieán taäp tin khoâng coù kieåu : Ñeå khai baùo taäp tin khoâng coù kieåu , söû duïng cuù phaùp sau :

VAR F:file;

Thuû tuïc ñoïc ghi taäp tin khoâng coù kieåu :Ñeå ghi vaøo ñóa hoaëc ñoïc töø ñóa moät hay nhieàu baûn ghi töø moät taäp tin khoâng coù kieåu , baïn söû duïng caùc thuû tuïc sau :Ghi vaøo ñóa :

BlockWrite(Var f: File; Var Buf; Count : Word [;Var result : Word])

Ñoïc töø ñóa vaøo boâ nhôù :BlockRead(Var f: File; Var Buf; Count : Word [;Var result : Word]) Caùc tham soá cuûa thuû tuïc naøy laø :F: bieán ñaïi dieän cho taäp tin seõ ghi hoaëc ñoïcBuf : Chöùa noäi dung taäp tin seõ ghi hoaëc ñoïc Count : soá löôïng baûn ghi cuûa thao taùc ghi hoaëc ñoïcResult : Chæ soá löôïng baûn ghi ñaõ ñöôïc thöïc hieän ghi hoaëc ñoïc

Bieân soaïn : Tröông vaên Tuyeán 241

Page 242: Pascal 1

GIAÙO TRÌNH PASCAL Trang 242TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGF : laø bieán taäp tin khoâng coù kieåuBuf : laø bieán baát kyø Count : laø bieåu thöùc soá nguyeân xaùc ñònh kích thöôùc 128 bytes ñöôïc truyeàbn giöõa taäp tin treân ñóa vaø bieán Buf . Pheùp truyeàn döõ lieäu baét ñaàu töø vò trí bytes ñaàu tieân daønh cho bieán Buf .Ngöôøi laäp trình caàn phaûi ñaûm baûo raèng bieán Buf chieám ñuû vuøng nhôù caàn thieát cho toaøn boä pheùp truyeàn döõ lieäu . Moãi lôøi goïi thuû tuïc BlockWrite() hoaëc BlockRead cuõng laøm dòch chuyeån con troû taäp tin Count baûn ghi .Tröôùc khi tthöïc hieän caùc thuû tuïc naøy , baïn phaûi thöïc hieän Thuû tuïc Assign () ñeå gaùn teân bieán taäp tin , thuû tuïc Rewrite() ñeå môû moät taäp tin môùi , thuû tuïc Reset() ñeå môû moät taäp tin cuõ . Khi keát thuùc xöû lyù taäp tin cuõng phaûi söû duïng thuû tuïc Close() ñoùng taäp tin ñeå ñaûm baûo an toaøn döõ lieäu .Caùc thuû tuïc vaø haøm chuaån :Caùc thuû tuïc vaø haøm chuaån cuûa taäp tin khoâng coù kieåu ñeàu söû duïng kích thöôùc quy öôùc cuûa moät thaønh phaàn laø 128 bytes töùc laø kích thöôùc cuûa moät baûn ghi ( khoái ) ñöôïc duøng trong caùc thuû tuïc BlockWrite(),BlockRead vaø cho keát quaû töông töï nhö taäp tin coù kieåu .Thuû tuïc Seek();Di chuyeån con troû ñeán taäp tin chæ ñònh Haøm EOF() Xaùc ñònh con troû taäp tin ñaõ chæ vaøo vò trí heát taäp tin hay chöa ?Haøm Filepos()Cho bieát vò trí cuûa con troû taäp tin ñang troû ñeán baûn ghi naøo Haøm Filesize();Chuùng ta coù theå thay ñoåi kích thöôùc ( ñoä lôùn ) cuûa moät khoái baèng caùch khia baùo khi môû taäp tin

Reset( Var f : File ;Size : Word );Trong ñoù size chính laø ñoä lôùn cuûa khoái

Neân khai baùo ñoä lôùn cuûa moät khoái cô baûn trong taäp tin khoâng coù kieåu toång quaùt laø 1 byte vì baát kyø taäp tin naøo cuõng ñeàu coù ñoä lôùn laø boäi soá cuûa 1 CHÖÔNG TRÌNH MINH HOAÏ :Ñeå vaän duïng taäp tin khoâng coù kieåu , chuùng ta thöïc haønh moät soá chöông trình ví duï sau Vieát chöông trình sao cheùp taäp tin gioáng nhö leänh COPY cuûa DOS

program bt;var fn,fd:file;nguon,dich:string[30];sodoc,soghi:word;bu:array[1..2000] of char;

Page 243: Pascal 1

GIAÙO TRÌNH PASCAL Trang 243TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongbegin write('Cho tap tin nguon : ');readln(nguon); write('Cho tap tin Dich : ');readln(dich); assign(fn,nguon); assign(fd,dich); reset(fn,1); rewrite(fd,1); repeat blockread(fn,bu,sizeof(bu),sodoc); blockwrite(fn,bu,sizeof(bu),soghi); until (sodoc=0) or (sodoc<>soghi)

end.

THUÛ TUÏC TRONG UNIT DOS 1.Thuû tuïc GetAttr();Thuû tuïc GetAttr(); cho keát quaû laø thuoäc tính cuûa taäp tin . Trong moåi taäp tin thöôøng coù caùc thuoäc tính (Attribution ) nhö sau :A: (Archive ) löu tröõ , söû duïng cho leänh XCOPY cuûa DOSH:(HIDDEN ) che daâu , khoâng cho hieån thi teân taäp tin khi duøng leänh DIR cuûa DOSS : system heä thoáng R : chæ ñoïc khoâng cho pheùp ghiBaïn coù theå duøng leänh ATTRIB cuûa MS-DOS ñeå xem vaø söõa thuoäc tính cuûa taäp tin vôùi PASCAL baïn coù theå söû duïng GetFAttr() ñeå xem thuoäc tính taäp tin . cuù phaùp :

GetFttr (Var f :text ; Var Attr : Word );Vd : chöông trình xem thuoäc tính taäp tin program Xem_thuoc_tinh ;uses Dos;Varf:text;Attr:Word ;Filename:string[20];begin writeln('THU TUC GETFATTRI '); write('---------------------'); writeln; write('Cho biet ten tap tin ');readln(filename); assign(f,filename); GetFattr(f,attr); writeln(filename); if DosError<>0 then writeln('Ma loi : DosError ') else

Bieân soaïn : Tröông vaên Tuyeán 243

Page 244: Pascal 1

GIAÙO TRÌNH PASCAL Trang 244TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG if Attr And archive <>0 then writeln('Tap tin nay co thuoc tinh luu tru '); if Attr And HIDDEN <>0 then writeln('Tap tin nay co thuoc tinh CHE DAU '); if Attr And ReadOnly <>0 then writeln('Tap tin nay co thuoc tinh Chi doc '); if Attr And sysfile <>0 then writeln('Tap tin nay co thuoc tinh he thong '); if Attr And Directory <>0 then writeln('Day la ten thu muc '); writeln;write('bam ENTER de ket thuc ');readln;end.2)Thuû tuïc SetFAttr()Thuû tuïc SetFAttr() ñeå xem vaø söûa thuoäc tính cuûa taäp tin . cuù phaùp thuû tuïc nhö sau : SetFAttr(var f:text ;Attr:Byte);ReadOnly=$01;Hidden=$02;SysFile=$04;VolumID=$08;Directory=$10;Archive=$20;Loãi ñöôïc thoâng baùo bôûi DosError ,maõ loãi coù theå laø 3 (thö muïc khoâng hôïp leä ) vaø 5 (khoâng thaâm nhaäp ñöôïc vaøo taäp tin )program dat_thuoc_tinh;uses dos;var f:text;filename:string[20];ttinh:char;Attr:word;begin write('Cho biet ten tap tin : ');readln(filename); write('Can dat thuoc tinh (R,H,S,A) ');readln(ttinh); if upcase(ttinh)='R' then attr:=$01; if upcase(ttinh)='H' then attr:=$02; if upcase(ttinh)='S' then attr:=$03; if upcase(ttinh)='A' then attr:=$04; ASSIGN(F,FILENAME); SetFattr(f,Attr); write('Da cai xong thuoc tinh : ');readln;end.

Page 245: Pascal 1

GIAÙO TRÌNH PASCAL Trang 245TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong

BT : vieát chöông trình ñoïc thuoäc tính File , vaø sau ñoù thay ñoåi thuoäc tính file vöøa ñoïc

uses Dos;constReadOnly=$01;Hidden=$02;SysFile=$03;VolumeID=$04;Directory=$10;Archive=$20;varf:file;attr:word;tenf:string;stattr:string;i:integer;beginwrite('Chuong trinh thuc hien xem va thay doi thuoc tinh file :');write('Nhap ten file : ');readln(tenf);assign(f,tenf);GetFAttr(f,attr);writeln(tenf);if DosError <>0 then writeln('loi cua DOS ,Ma loi =',DosError) else begin writeln('Ma so thuoc tinh =',attr); writeln('Thuoc tinh : '); if attr and readOnly<> 0 then writeln('Chi doc '); if attr and hIDDEN <> 0 then writeln('An '); if attr and sysFile <> 0 then writeln('He thong '); if attr and VolumeID <> 0 then writeln('Nhan dia '); if attr and DirecTory <> 0 then writeln('Day la ten muc (D)'); if attr and Archive <> 0 then writeln('Archive(A) ');

end; writeln('ban muon dat thuoc tinh gi HRSA ');readln(STAttr); attr:=0; for i:=1 to length(stattr) do case Upcase(stattr[i]) of 'H':Attr:=Attr+Hidden; 'R':Attr:=Attr+ReadOnly;

Bieân soaïn : Tröông vaên Tuyeán 245

Page 246: Pascal 1

GIAÙO TRÌNH PASCAL Trang 246TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG 'S':Attr:=Attr+Archive; end; setFAttr(f,Attr); readln; end.Thu tuc GETFTIME();Thuû tuïc nay cho keát quaû laø ngaøy giôø caäp nhaät cuoái cuøng cuûa taäp tin .Cuù phaùp nhö sau GetFtime(var F:text ;Var Time : longint);DateTime ñöôïc ñònh nghóa trong Unit Dos DateTime=RECORDYear,month,day,min,sec:word;DosError <> :bieán DosErrorVar DosError :Integer;Khi DosError=0 => khoâng coù loãiKhi DosError=2 => khoângtìm thaáy taäp tinKhi DosError=3 => khoângtìm thaáy ñöôøng daãnKhi DosError=5 => Caàn truy nhaäp taäp tinKhi DosError=6 => Xöû lyù khoâng hôïp leäKhi DosError=8 => khoâng ñuû boä nhôùKhi DosError=10 => moâi tröôøng khoâng hôïp leäKhi DosError=11 =>khuoân daïng khoâng hôïp leäKhi DosError=12 => heát taäp tinUnpackTime(Time,DT) : môû goùi muïc ñích laø ñeå hieån thò ngaøy giôø theo yù muoán

program ngaygio;uses DOs;varf:text;Filename:string[20];Time:longint;dt:dateTime;begin writeln('Cho biet ten tap tin : ');readln(filename); assign(f,filename);reset(f); if DosError<>6 then begin GetFtime(f,time); UnpackTime(Time,DT); write('+Tap tin : ',filename,'Duoc cap nhat vao luc '); write('Ngay :',DT.day,' Thang : ',Dt.month,' NAm :',DT.year); Write('Hoi : ',Dt.hour,' Gio ',DT.min,'phut',Dt.sec,'giay'); close(f);

Page 247: Pascal 1

GIAÙO TRÌNH PASCAL Trang 247TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong end else writeln('-Ma loi :',DosError); writeln; write('Bam Enter ');readln;end.

Bieân soaïn : Tröông vaên Tuyeán 247

Page 248: Pascal 1

GIAÙO TRÌNH PASCAL Trang 248TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

Chöông CON TROÛ -Moät bieán kieåu con troû seõ chöùa ñòa chæ ( trong boä nhôù ) cuûa moät ñoái töôïng (Thuû tuïc ,haøm ,bieán ..) . Vì chæ chöùa ñòa chæ neân kích thöôùc bieán con troû laø khoâng ñoåi cho moïi kieåu con troû .-Trong Pascal coù hai loaïi con troû : loaïi thöù nhaát do turbo ñònh nghóa saün laø kieåu Pointer .Loaïi thöù 2 con troû troû tôùi moät ñoái töôïng ñònh nghóa saün -Ñònh nghóa vaø khai baùo kieåu , bieán con troûmoät con troû ñöôïc ñònh nghóa bôûi daáu vaø teân kieåu con troû chæ tôùiví duï :

Thí duï :TYPE Nhan_su=RECORD

Ten:string[30];Tuoi:integer;End;

Point=^nhan_su;Var p:point;P laø moät bieán ,kieåu con troû ,chöùa ñòa chæ cuûa bieán ñoäng hay troû vaøo bieán ñoäng P^ coù kieåu laø Nhan_su.Trong ví duï naøy ta coù theå moâ taû tröïc tieáp baèng moät doøng VarP:^nhansu;Ví duï 2:TypeLylich=RECORD

Holot :string[17];Ten :string[7];Chucvu :string[20];Luong,phucap,tong :Integer;Next :Contro;

End;Contro=^lylich;VarFirst,Last,Newp:Contro;Caùc bieán first,Last,Newp laø bieán con troû ,chöùa ñòa chæ cuûa bieán ñoäng First^,Last^,Newp^ Trong Ngoân ngöõ PASCAL ta coù theå moâ taû con troû tröôùc caû moâ taû kieåu bieán ñoäng Cuï theå ta coù theå vieát nhö sau maø khoâng bò loãi Ví duï

Page 249: Pascal 1

GIAÙO TRÌNH PASCAL Trang 249TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongTYPE

POINT=^nhan_suNhan_su=RecordTen:string[30];Tuoi:integer;END;

VARP:^nhan_su;

(teân) (tuoåi) bieán con troû Pchöùa ñòa chæ cuûa bieán ñoäng P^ hay bieán ñöôïc troû P^ví duï :TYPE

BytePtr=^Byte;WordPtr=^Word;

{con troû döõ lieäu baûn ghi }contro=^lylich;lylich=record

Holot :string[17];Ten :string[7];..Next :contro;

End;Ví duï 2:TYPE

Contro=^Lylich;Lylich=RECORD

Holot :string[17];Ten : string[7];Chucvu :string[20];Luong,Phucap,Tong :Integer;Next :Contro;

End;VarFirst,Last,Newp:contro;caùc thao taùc ñoái vôùi con troû +Pheùp gaùn :=+So saùnh= (baèng nhau ) vaø so saùnh <> ( khaùc nhau )Haèng con troû NIL NIL laø moät giaù trò haèng ñaëc bieät daønh cho caùc bieán con troû vaø noù ñöôïc duøng ñeå baùo raèng con troû khoâng troû vaøo ñaâu caû .NIL Laø con troû ñaëc bieät chöùa giaù trò 0

Bieân soaïn : Tröông vaên Tuyeán 249

Leâ van AN20

Page 250: Pascal 1

GIAÙO TRÌNH PASCAL Trang 250TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGII.Caùch taïo ra bieán ñoäng : Thuû tuïc NEW program conTRo;typenhan_su=RECORD TEN:STRING[30]; TUOI:INTEGER; END; POINT=^NHAN_SU;var P:point;beginnew(P);with p^ dobegin ten:='Mot'; tuoi:=1;end;new(P);p^.ten:='Hai';P^.tuoi:=2;with p^ dobeginwrite('Ten ',ten);write('Tuoi ',tuoi);end;readln;end.Ví du:Ñònh nghóa kieåu vaø khai baùo kieåu con troûProgram Kieu_bien_con_Tro;usesII.Giaûi phoùng hay thu hoài laïi oâ nhôù cuûa bieán ñoäng DISPOSE(pointVar)MARKVAR(Pvar) ñeå ñaùnh daáu RELEASE(Pvar) ñeå giaûi phoùng caû moät vuøng oâ nhôù cuûa nhieàu bieán ñoäng khaùc nhau MARK(Pvar) seõ gaùn giaù trò cuûa con troû Heap cho moät bieán con troû Pvar naøo ñoù .Pvar naøy ñöôïc duøng nhö ñeå ñaùnh daáu vò trí ñaàu cuûa vuøng oâ nhôù caàn giaûi phoùng sau naøy .Sau leänh MARK ta coù theå duøng moät loaït thuû tuïc NEW ñeå taïo caùc bieán ñoäng khaùc nhau vaø chuùng seõ chieám oâ nhôù keå töø vò trí ñaõ ñöôïc ñaùnh daáu , sau naøy ñeå laáy toaøn boä vuøng bieán ñoäng ñaõ ñöôïc ñaùnh daáu , ta chæ vieäc duøng RELEASE(Pvar).Taát nhieân sau RELEASE ,ta khoâng coøn coù theå söû duïng caùc bieán ñoäng naèm trong vuøng vöøa ñöôïc giaûi phoùng töùc laø caùc bieán ñoäng taïo ra baèng thuû tuïc NEW sau leänh MARKProgram point;

Page 251: Pascal 1

GIAÙO TRÌNH PASCAL Trang 251TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongtypeTp=^mang;{array}mang=array[1..100] of integer;varP,Q:Tp;begin New(P);{tao ra mot bien dong} New(q);{tao ra mot bien dong} dispose(P);(* Giai phong o nho cua bien P *) dispose(q);(* Giai phong o nho cua bien q *) new(q); dispose(q);(* Giai phong o nho cua bien q *)

readln;end.Thí duï : söû duïng Mark vaø Releaseprogram point;typetp=^mang;mang=array[1..100] of integer;varp,q,r,pmark:Tp;beginnew(R);mark(pmark);new(p);new(q);release(pmark);{giai phong o nho cua 2 bien P^ va Q^}new(P);{tao ra bien dong moi }dispose(P);{ giai phong o nho cua bien P^}

readln;end.Rieâng ñoái vôùi kieåu RECORD coù caâu truùc bieán ñoåi caùc tham soá thuû tuïc DISPOSE coøn theâm giaù trò cuûa tröôøng ñaùnh daáu . Ví duï NEW(PointerVar,Nghenghiep)Nhö ôû treân thì ta phaûi ghiDISPOSE(Pointervar,nghenghiep);IV.Boä nhôù Heap vaø cô cheá taïo bieán ñoäng :HEAP: boä nhôù caâp phaùt ñoäng .Heap ñöôïc quaûn lyù thoâng qua con troû Heap laø HeapPtr Con troû Heap luoân luoân troû vaøo byte (oâ nhôù ) töï do ñaàu tieân cuûa vuøng oâ nhôù coøn töï do cuûa Heap .Moãi laàn goïi NEW con troû Heap ñöôïc dòch chuyeån veà phía ñænh cuûa vuøng oâ nhôù töï

Bieân soaïn : Tröông vaên Tuyeán 251

Page 252: Pascal 1

GIAÙO TRÌNH PASCAL Trang 252TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGdo moät soá byte töông öùng vôùi kích thöôùc cuûa bieán ñoäng môùi ñöôïc taïo ra Haøm MemAvail : xaùc ñònh kích thöôùc cuûa taát caû vuøng nhôù caáp cho bieán ñoäng coøn töï doHaøm MaxAvail baoù cho bieát kích thöôùc cuûa khoái Heap töï do lôùn nhaát .Moãi khi taïo moät bieán ñoäng môùi , maùy luoân luoân caàn bieát lieäu coøn moät khoái nhôù töï do naøo ñeå nheùt bieán môùi vaøo khoâng .

program Get_heap_space;vartong_Heap,block_lon_nhat:longint;begin Tong_heap:=MemAvail; Block_lon_nhat:=MaxAvail; write('Tong cac vung tu do cua Heap la ',Tong_heap); writeln('Bytes '); write('Khoi Heap tu do lon nhat la la ',Block_lon_nhat); writeln('bytes'); readln;end.Moãi khi taïo bieán ñoäng môùi baïn cuõng neân kieåm tra xem maùy coù boä nhôù ñuû caáp cho noù hay khoâng . Haøm sizeOf ñeå xaùc ñònh kích thöôùc bieán nhôù caàn taïo ra program Check_heap_space;type RecPtrtype=^RecordType; RecordType=Record ID:String[5];{so chung minh thu } Ten:string[20]; tuoi:byte; end;var ptr,recPtr:recPtrtype; begin Ptr:=NIL; Write('Kich thuoc cua ban ghi la ',sizeOf(recordType)); write(' Bytes '); Write('Tong vung tu do cua Heap la ',MemAvail); write(' Bytes '); Write('Khoi Heap tu do lon nhat la ',MaxAvail); write(' Bytes '); if maxAvail < sizeOf(recPtrType) then writeln('Khong du bo nho ') else new(recPtr);

Page 253: Pascal 1

GIAÙO TRÌNH PASCAL Trang 253TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong Dispose(RecPtr); RecPtr:=Nil; readln;

end.

V.Danh saùch ñöôïc gheùp noái :Duøng bieán con troû ñeå xaây döïng moät danh saùch caùc phaàn töû ñöôïc moùc noái nhau .Ví duï :typePointerN=^nhansu;nhansu=RECORD Ten:string[30]; tuoi:integer; next:pointer;{de tro vao phan tu ben canh} end; var last,ptr,p,q:pointerN; heaptop:^integer; name:string[30]; begin last:=NIL; MARK(heaptop); repeat writeln; write('Ho va ten ');readln(name); if name<>'' then begin NEW(Ptr); Ptr^.ten:=name; write('Tuoi : ');readln(Ptr^.tuoi); Ptr^.next:=last; last:=Ptr; end; until name=''; {doc lai toan bo danh sach} write('DANH SACH NGUOI : '); ptr:=last; while ptr<>NIL do begin writeln('Ho va Ten : ',ptr^.ten); writeln('Tuoi : ',ptr^.tuoi); writeln; ptr:=ptr^.next; end; release(heaptop);

Bieân soaïn : Tröông vaên Tuyeán 253

Page 254: Pascal 1

GIAÙO TRÌNH PASCAL Trang 254TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGend.

Caùc chöông trình con nhö sau :program bt;typePointN=^nhansu;nhansu=RECORDht:string;Tuoi:integer;Next:PointN;end;varPtr,last,Q,P:PointN;name:string;HeapTop:^integer;procedure Nhap(Var Ptr:PoinTN);begin last:=nil; mark(Heaptop); repeat New(Ptr); write('Nhap Ten : ');readln(name); if name <>'' then begin ptr^.Ht:=name; write('Tuoi : ');readln(Ptr^.tuoi); Ptr^.next:=last; Last:=ptr;

end;

until name= '';end;procedure xuat(Var Ptr:PoinTN);begin Ptr:=last; while ptr<>nil do begin write('Ho Ten : ',ptr^.ht); write('Tuoi : ',ptr^.tuoi); WRITELN; ptr:=ptr^.next; end;end;procedure chen(var ptr:poinTN);beginNEW(Q);

Page 255: Pascal 1

GIAÙO TRÌNH PASCAL Trang 255TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong write('Nhap ten can can chen ');readln(Q^.ht); write('Nhap tUOI can chen ');readln(Q^.tUOI); write('Nhap Vi tri can chen ');readln(NAME); ptr:=last; while (ptr<>nil) and (ptr^.ht<>name) do PTR:=PTR^.NEXT; Q^.NEXT:=PTR^.NEXT; PTR^.NEXT:=Q;

end;procedure THAO(var ptr:poinTN);begin write('Nhap ten can tHAO BO ');readln(NAME); ptr:=last; while (ptr<>nil) and (ptr^.ht<>name) do BEGIN Q:=PTR; PTR:=PTR^.NEXT; END; if pTR=last then last:=ptr^.next else q^.next:=ptr^.next;

end;

beginnhap(Ptr);thao(ptr);xuat(Ptr);release(Heaptop);readln;end.Vieát chöông trình söû duïng bieán con troû ñeå nhaäp hoï teân , tuoåi vaø ñieåm thi cuûa töøng hoc sinh , tính ñieåm trung bình cuûa toaøn lôùp

program point;typePointN=^Hocsinh;hocsinh=RECORDHt:string;tuoi:integer;diem:real;next:pointN;end;varptr,last,Q,P:PointN;

Bieân soaïn : Tröông vaên Tuyeán 255

Page 256: Pascal 1

GIAÙO TRÌNH PASCAL Trang 256TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGheaptop:^integer;name:string;i,n:integer;DTB:REAL;procedure nhap(var Ptr:PointN);beginlast:=nil;DTB:=0;I:=0;mark(Heaptop);repeatwrite('Nhap Ten : ');readln(name);if name<>'' then begin NEW(PTR); ptr^.HT:=name; write('Tuoi ');readln(ptr^.tuoi); write('Diem ');readln(ptr^.Diem); DTB:=DTB+PTR^.DIEM; I:=I+1; ptr^.next:=LAST; last:=ptr;

end;

until name='';DTB:=DTB/I;end;Procedure Xuat(var ptr:PointN);begin ptr:=last; while ptr<>nil do begin write('Ho ten :',ptr^.Ht,' | '); write('Tuoi :',ptr^.tuoi,' | '); write('Diem :',ptr^.Diem:4:1,' | '); writeln; ptr:=ptr^.next; end; WRITE('DTB CUA LOP : ',DTB:4:1);end;

beginnhap(ptr);xuat(ptr);release(Heaptop);readln;end.

Page 257: Pascal 1

GIAÙO TRÌNH PASCAL Trang 257TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongBt Vieát chöông trình söû duïng bieán con troû ñeå nhaäp hoï teân , tuoåi vaø ñieåm Tb cuûa töøng hoc sau ñoù saép xeáp theo thöù töï cuûa tröôøng teân roài xuaát keát quaû ra maøn hìnhprogram bt;typePointN=^Hocsinh;Hocsinh=RECORDhT:string;ten:string;diem:Integer;Next:PointN;end;vara:array[1..50] of Hocsinh;tam:PointN;i,n,j:integer;name:string;begini:=0;

New(Tam); With Tam^ Do Repeat Write('-Nhap ho lot ( 0 de ket thu): '); Readln(Ht); If Ht <> '0' Then Begin Write('-Nhap ten : '); Readln(Ten); Write('-Nhap diem : '); Readln(Diem); i := i + 1; a[i] := Tam^; End; Until Ht = '0';

n:=i; FOR I:=1 TO N-1 DO FOR J:=N DOWNTO I+1 DO IF A[J].TEN<A[J-1].TEN THEN BEGIN TAM^:=A[J]; A[J]:=A[J-1]; A[J-1]:=TAM^;

END;

Bieân soaïn : Tröông vaên Tuyeán 257

Page 258: Pascal 1

GIAÙO TRÌNH PASCAL Trang 258TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG For i := 1 To n Do

With a[i] DoWriteln('|',tEN:17,diem,' |');

Writeln('------------------------------------');

readln;end.Vieát chöông trình nhaäp Hoï teân ,Nam sinh vaø ñieåm trung bình cuûa töøng hoïc sinh trong lôùp sau ñoù saép xeáp taêng daàn theo ñieåm trung bình vaø xuaát keát quaû ra maøn hình program bt;typePoinTN=^hocsinh;Hocsinh=RECORDht:String;Diem:real;Next:PointN;end;vari,n,j:integer;Ptr,Last,tam:PointN;a:array[1..50] of Hocsinh;begin New(tam);i:=0; with Tam^ do repeat i:=i+1; write('Nhap ten : ');readln(Ht); if Ht<>'' then begin write('Diem : ');readln(diem);end; a[i]:=tam^; until HT=''; n:=i; for i:=1 to n-1 do for j:=1 to N-i do if a[j].diem > a[j+1].diem then begin tam^:=a[j]; a[j]:=a[j+1]; a[j+1]:=tam^; end; for i:=1 to n do with a[i] do writeln('ten :',a[i].ht,' diem : ',a[i].diem:4:1); readln;end.

Page 259: Pascal 1

GIAÙO TRÌNH PASCAL Trang 259TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongVIEÁT chöông trình nhaäp toái ña 100 hoaù ñôn baùn haøng : moãi hoaù ñôn laø moät baûn ghi goàm caùc tröôøng : ngöôøi mua , maõ haøng ,ñôn giaù, soá löôïng . Tính toång soá tieàn baùn ñöôïc theo töøng maõ haøng program bt;typePointN=^hoadon;Hoadon=RECORDMH:string;Dg:real;sl:real;end;taptrung=set of byte;varptr:pointN;a,b:array[1..50] of hoadon;dsmh:array[1..10] of string;i,n,sth,j:integer;trung:taptrung;TT:REAL;begini:=0;new(ptr);

with ptr^ dorepeatwrite('Nhap ma hang : ');readln(mh); if mh <>'' then begin i:=i+1;write('Nhap Dong gia : ');readln(dg);write('Nhap so luong : ');readln(sl);a[i]:=ptr^;end;n:=i;until mh='';trung:=[];sth:=0;for i:=1 to n do for j:=i+1 to n do if (a[i].mh=a[j].mh) then trung:=trung+[i]; for i:=1 to n do if not (i in trung) then begin sth:=sth+1; b[sth]:=a[i]; end; for i:=1 to sth do

Bieân soaïn : Tröông vaên Tuyeán 259

Page 260: Pascal 1

GIAÙO TRÌNH PASCAL Trang 260TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG writeln(b[i].mh); writeln('TONG TIEN BAN DUOC THEO TUNG MA HANG : '); for i:=1 to sth do BEGIN TT:=0; for j:=1 to n do if b[i].mh=a[J].mh then begin TT:=TT+A[J].DG*A[J].SL; end; WRITELN('MATHANG : ',B[I].MH,' CO TONG TIEN ',TT:10:2); END;readln;end.Bt : vieát chöông trình quaûn lyù saùch cuûa moät thö vieän , hoà sô cuûa moät quyeån saùch bao goàm : teân saùch , teân taùc giaû ,naêm xuaát baûn , teân ngöôøi möôïn . In ra maøn hình saùch cuûa thö vieän vaø hieän nay ña cho möôïn bao nhieâu cuoán .Program bt;uses crt;TypePoinTN=^sach;sach=RECORDten:string;Tg:string;Nxb:integer;Nm:string;next:pointN;end;varPtr,last,first:pointN;heaptop:^integer;snm,i,n:integer;ch:char;beginclrscr;First:=Nil;mark(heaptop);repeatnew(ptr);with ptr^ do begin write('Nhap Ten sach ');readln(ten); if ten<>'' then begin write('Nhap Ten tg :');readln(tg); write('Nam XB :');readln(Nxb);

Page 261: Pascal 1

GIAÙO TRÌNH PASCAL Trang 261TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong write('Ten nguoi muon :');readln(nm); if nm<>'' then snm:=snm+1; end; end; if first=nil then first:=ptr else LAST^.next:=ptr; last:=ptr; last^.next:=nil; ch:=readkey; until ch=#27;

writEln('DANH SACH : '); while FIRST<>nil do WITH FIRST^ DO begin writeLN(PTR^.TG); FIRST:=NEXT ; end; RELEASE(HEAPTOP);readln;end.

Cach 2: Program bt;TypePoinTN=^sach;

sach=RECORDten:string;Tg:string;Nxb:integer;Nm:string;next:pointN;end;varPtr,last,first:pointN;heaptop:^integer;snm,i,n:integer;beginFirst:=Nil;mark(heaptop);repeatnew(ptr);with ptr^ do begin

Bieân soaïn : Tröông vaên Tuyeán 261

Page 262: Pascal 1

GIAÙO TRÌNH PASCAL Trang 262TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG write('Nhap Ten sach ');readln(ten); if ten<>'' then begin write('Nhap Ten tg :');readln(tg); write('Nam XB :');readln(Nxb); write('Ten nguoi muon :');readln(nm); if nm<>'' then snm:=snm+1;

end;

end; if first=nil then first:=ptr else first^.next:=ptr; last:=ptr; last^.next:=nil;

until sach.ten='';

readln;end;viet chuong trinh nhaäp hoà sô nhaân vieân cuûa moät coâng ty goàm hoï teân tuoåi taùc , baäc löông . In ra maøn hình ngöôøi coù tuoåi lôùn nhaát , ngöôøi coù tuoåi nhoû nhaát . Ngöôøi naøo coù baäc löông cao nhaát , ngöôøi naøo coù baäc löông thaáp nhaát

uses crt;TypePointN=^Hoso;Hoso=RECORDten:string;Tuoi:integer;Bl:Integer;next:pointN;end;varheaptop:^integer;Last,First,Ptr:pointN;name:string;i,Tmax,Tmin,BMax,Bmin:integer;beginclrscr;Tmax:=0;Tmin:=0;BMax:=0;Bmin:=0;Last:=nil;

Page 263: Pascal 1

GIAÙO TRÌNH PASCAL Trang 263TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongMark(heaptop);repeatNew(ptr);write('Nhap ten : ');readln(name);if name <>'' then begin Ptr^.ten:=name; write('tuoi : ');readln(ptr^.tuoi); if Ptr^.tuoi>Tmax then Tmax:=Ptr^.tuoi; if Ptr^.tuoi<Tmin then Tmin:=Ptr^.tuoi; write('Bac luong : ');readln(ptr^.bl); if Ptr^.bl> bmax then bmax:=Ptr^.bl; if Ptr^.bl<bmin then bmin:=Ptr^.bl; ptr^.next:=last; last:=ptr; end;

until name='';ptr:=last;while ptr<>nil do begin writeln(Ptr^.Ten,'===',ptr^.tuoi,ptr^.bl); ptr:=ptr^.next; end; ptr:=last;i:=1; repeat while (ptr<>nil) and (ptr^.Tuoi<>Tmax ) do ptr:=ptr^.next; if ptr^.tuoi=Tmax then writeln(ptr^.ten,'==',ptr^.tuoi);

release(Heaptop);readln;end.Neáu muoán xuaát ra taát caû ho so coù Tmax ,Tmin.. thì ta vieát nhö sau :uses crt;TypePointN=^Hoso;Hoso=RECORDten:string;Tuoi:integer;Bl:Integer;next:pointN;end;vara:array[1..100] of Hoso;heaptop:^integer;

Bieân soaïn : Tröông vaên Tuyeán 263

Page 264: Pascal 1

GIAÙO TRÌNH PASCAL Trang 264TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGLast,First,Ptr:pointN;name:string;n,i,Tmax,Tmin,BMax,Bmin:integer;beginclrscr;Tmax:=0;Tmin:=0;BMax:=0;Bmin:=0;Last:=nil; i:=0;Mark(heaptop);repeatNew(ptr);write('Nhap ten : ');readln(name);if name <>'' then begin i:=i+1; Ptr^.ten:=name; write('tuoi : ');readln(ptr^.tuoi); if Ptr^.tuoi>Tmax then Tmax:=Ptr^.tuoi; if Ptr^.tuoi<Tmin then Tmin:=Ptr^.tuoi; write('Bac luong : ');readln(ptr^.bl); if Ptr^.bl> bmax then bmax:=Ptr^.bl; if Ptr^.bl<bmin then bmin:=Ptr^.bl; ptr^.next:=last; last:=ptr; a[i]:=ptr^; end;

until name='';n:=i;ptr:=last;while ptr<>nil do begin writeln(Ptr^.Ten,'===',ptr^.tuoi,ptr^.bl); ptr:=ptr^.next; end;

for i:=1 to n doif a[i].tuoi=Tmax then writeln(a[i].ten);release(Heaptop);readln;end.{Viet chuong trinh nhap danh sach cua mot lop gom : Ho, ten ,diemcac mon hoc (Van,toan,Ly,Hoa ).Tinh diem TB cua Hs voi Van,toan HS 2.chuong trinh co the chen ,xoa,bot ,sap,xep va tim kiem theo ten Hoc sinh }program danhsach_FILO;

Page 265: Pascal 1

GIAÙO TRÌNH PASCAL Trang 265TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongUses crt;Typechuoi=string[24];Hocsinh=RECORDHT:CHUOI;Van,toan,Ly,Hoa,Dtb:Real;end;PointN=^PointType;pointType=RECORDdata:Hocsinh;next:pointN;end;varList:pointN;chon:byte;Heaptop:pointN;Function ChuHoa(st:string):string;var i:byte;begin for i:=1 to length(st) do st[i]:=upcase(st[i]); chuhoa:=st;end;procedure NHap(var A:Hocsinh);begin with A do begin write('Ho va Ten : ');readln(Ht); write('Diem Van : ');readln(Van); write('Diem Toan : ');readln(Toan); write('Diem Ly : ');readln(Ly); write('Diem Hoa : ');readln(Hoa); Dtb:=((van*2+toan*2)+ly+hoa)/6;

end;end;procedure Hienthi(A:Hocsinh); function Size(st:string;N:byte):string; begin while Length(St)<N do st:=st+#32; size:=st; end; begin with A do writeln(size(HT,24),van:6:1,Toan:6:1,Ly:6:1,dTb:8:1); end;

Bieân soaïn : Tröông vaên Tuyeán 265

Page 266: Pascal 1

GIAÙO TRÌNH PASCAL Trang 266TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG function Empty(Ds:pointN):boolean; begin empty:=Ds=nil; end; Function Tran_day(Ds:pointN):boolean; begin Tran_day:=MaxAvail<sizeOf(Ds^); end;function nhapDL:pointN;var P:pointN;begin new(p); nhap(p^.data); nhapdl:=p;end;procedure Append(p:pointN;var Ds:pointN);begin p^.next:=ds; ds:=p;end;procedure Chen(p:pointN;i:longint;var Ds:pointN);var Q:pointN;J:longint;beginif Empty(Ds) and (i<=1) then Append(P,ds)else begin Q:=list; j:=1; while (Q^.next<>nil) and (J<i-1) do begin Q:=Q^.next; inc(j); end; P^.next:=Q^.next; Q^.next:=P; end;

end;procedure Delete(I:longint;Var Ds:pointN);var j:longint;Q:pointN;begin if(Not Empty(Ds)) and (i>0) then if i=1 then Ds:=Ds^.next else

Page 267: Pascal 1

GIAÙO TRÌNH PASCAL Trang 267TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong begin Q:=Ds; j:=1; while (Q<>nil) and (j>i-1) do begin Q:=Q^.next; inc(j); end; if (Q<>nil) and (Q^.next<>nil) then Q^.next:=(Q^.next)^.next; end;

end;Function Nho_hon(A,B:Hocsinh):boolean;begin NHo_hon:=chuhoa(A.ht)<chuhoa(B.ht);end;procedure Hoanvi(Var A,B :hocsinh);vartam:hocsinh;begin Tam:=A; A:=B; B:=tam;end;procedure SortList(var Ds:pointN);var

P,Q:pointN; begin if not Empty(Ds) then begin P:=ds; while P^.next<>nil do begin Q:=P^.next; while Q<>nil do begin if nho_hon(Q^.data,P^.Data) then hoanvi(P^.data,Q^.data); Q:=Q^.next; end; P:=p^.next; end; end;

gotoxy(25,24);writeln('Da sap xep xong ');

Bieân soaïn : Tröông vaên Tuyeán 267

Page 268: Pascal 1

GIAÙO TRÌNH PASCAL Trang 268TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGend;function bangnhau(A,B:chuoi):boolean;begin bangnhau:=chuhoa(A)=chuhoa(B);end;function Tim(X:chuoi;Ds:pointN):pointN;var P:pointN;begin P:=ds; while (p<>nil) and not Bangnhau(X,P^.Data.Ht) do p:=P^.next; if p<>nil then tim:=P else tim:=nil;

end;Procedure NhapDS(var Ds :pointN);var P:pointN;begin clrscr; repeat new(P); nhap(P^.data); Append(P,ds); until (Readkey=#27) or Tran_day(Ds);end;procedure HienthiDs(Ds:pointN);var p:pointN;N:longint;begin clrscr; P:=Ds; N:=0; while p<>nil do begin Hienthi(P^.data); inc(N); P:=p^.next;

end; writeln;end;procedure ChenDs(Var Ds:pointN);vari:longint;P:pointN;

Page 269: Pascal 1

GIAÙO TRÌNH PASCAL Trang 269TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongbegin Clrscr; writeln('Chen Them Ban Ghi moi : '); P:=nhapDl; writeln; writeln('Chen Vao vi tri thu may : ');readln(i); chen(p,i,ds);

end;procedure XoaDs(var ds:pointN);var i:longint;p:pointN;begin clrscr; writeln('Xoa vi tri thu may : ');readln(i); Delete(i,Ds);end;procedure TimDs(Ds:pointN);var Ht:chuoi;p:pointN;begin clrscr; write('-Ho ten can tim : '); readln(hT); p:=tim(ht,ds); if p=nil then write('Khong co hoc sinh : ',Ht) else hienthi(p^.data);

end;Function menu:byte;constTieude='0-Thoat,1-Nhap,2-Chen,3-Xoa,4-Sap xep,5-Liet Ke'+ '6-Tim kiem ,Bamchon : '; var i:byte; begin gotoxy(1,23);write(Tieude); repeat Gotoxy(77,23);readln(i); until (i>=0) and (i<=6); menu:=i; end; begin clrscr; mark(heaptop); list:=nil; repeat

Bieân soaïn : Tröông vaên Tuyeán 269

Page 270: Pascal 1

GIAÙO TRÌNH PASCAL Trang 270TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG chon:=menu; case chon of 1:NhapDs(List); 2:chenDs(list); 3:XoaDs(list); 4:sortlist(list); 5:Hienthids(list); 6:Timds(list); end; until chon=0;

release(heapTop); end.

Vi du ve cay

program tree;Typestring20=string[20];PointN=^Item;Item=RECORDData:string[20];left,right:pointN;end;varnewdata:string20;Root:pointN;procedure xuly(nut:pointN);beginwrite(Nut^.data,'->');end;procedure Inorder(nut:pointN);begin if nut<>nil then begin Inorder(nut^.left); xuly(nut); Inorder(nut^.right);

end;end;procedure preorder(nut:pointN);begin if nut<>nil then

Page 271: Pascal 1

GIAÙO TRÌNH PASCAL Trang 271TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong begin

Inorder(nut^.left); Inorder(nut^.right);

end;end;procedure postorder(nut:pointN);begin if nut<>nil then begin Inorder(nut^.left); Inorder(nut^.right); xuly(nut); end;end;procedure search(Var root:pointN);begin if root=nil then begin new(root); with root^ do begin data:=newdata; left:=nil; left:=nil; end; end else with root^ do begin if newdata<data then search(left) else if newdata>data then search(right) else write('error : trung lap du lieu :');

end; end; begin writeln('Thu cay : '); root:=nil; repeat write('Data (enter neu ban muon dung lai : ');readln(newdata); if length(newdata)>0 then search(root); until length(newdata)=0; writeln; write('Pre-Oder ');

Bieân soaïn : Tröông vaên Tuyeán 271

Page 272: Pascal 1

GIAÙO TRÌNH PASCAL Trang 272TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG preorder(root); writeln; write('In-Oder '); Inorder(root);

writeln; write('Post-Oder '); Postorder(root);

writeln;readln; end.

program cay_nhi_phan;uses crt;TYPEPointN=^nut;nut=RECORDso:integer;phai,trai:pointN;end;varso1:integer;goc:pointN;Timthay:boolean;ch:char;procedure taocay(Var Goc:pointN);vartam:pointN;ch:char;procedure datdulieu(var tam:pointN;var diachi:pointN);beginif diachi=nil then diachi:=tamelseif tam^.so<diachi^.so thendatdulieu(tam,diachi^.trai)elsedatdulieu(tam,diachi^.phai);end;beginnew(goc);write('nhap so :');readln(goc^.so);goc^.trai:=nil;goc^.phai:=nil;write('Co nhap nua khong ? (C,K): ');readln(ch);while Upcase(ch)='C' DObegin

Page 273: Pascal 1

GIAÙO TRÌNH PASCAL Trang 273TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong new(tam); write('nhap so :');readln(Tam^.so); tam^.trai:=nil; tam^.phai:=nil; datdulieu(tam,goc); write('Co nhap nua khong ? (C,K): ');readln(ch);end;clrscr;

end;procedure Timkiem(Goc:pointN;so1:integer;var timthay:boolean);vartam:pointN;begintam:=goc;timthay:=false;while (not timthay) and (tam<>nil) do with tam^ do if so1<so then tam:=trai else if so1 > so then tam:=phai else timthay:=true; end;begin clrscr; writeln('TAO CAY NHI PHAN '); repeat repeat writeln('1-Tao cay Nhi phan '); writeln('2-Tim du lieu '); writeln('3-Ket thuc '); writeln('Chon '); ch:=readkey; writeln; until ch in ['1'..'3']; case ch of '1':Taocay(goc); '2': begin write('so muon tim : ');readln(so1); timkiem(goc,so1,timthay); if timthay then begin write(' Da tim thay ');writeln;

Bieân soaïn : Tröông vaên Tuyeán 273

Page 274: Pascal 1

GIAÙO TRÌNH PASCAL Trang 274TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG write('bam enter de tiep ');readln; end else begin writeln('khong tim thay ');writeln; writeln('bam Enter de xem tiep : '); readln; end; clrscr; end; end; until ch='3';end.

ÖÙng duïng cuûa caây nhò phaân : Xaây döïng töø ñieån .haõy xaây döïng cuoán töø ñieån baèng caùch duøng caây nhò phaân . Haõy xaây döïng caùc chöông trình con xöû lyù caùc khaâu sau ñaây :-Khôûi taïo töø ñieån .-Cheøn vaøo moät töø môùi-In moät töø-Hieån thò töø ñieån

typePointN=^node;node=RECORD value:string; Left,Right:PointN; end; Header_node=RECORD Title:string; Link:pointN; end; Tree=^Header_node; var dictionary:tree; word:string; Respose:char; procedure tao_tieude(var Header:tree); begin new(Header); Header^.Title:='TUYEN Dictionary'; header^.link:=nil; end; Procedure Insert_word(var P:pointN;word:string); begin

Page 275: Pascal 1

GIAÙO TRÌNH PASCAL Trang 275TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong { thu xem P co la nil hay khong } if P=nil then begin new(p); with p^ do begin p^.value:=word; p^.left:=nil; p^.right:=nil;

end; end else if word<p^.value then {thu xem Word da duoc xen vao ben trai cua node P} Insert_word(p^.left,word) else if word>p^.value then Insert_word(p^.right,word) else {word da co trong tu dien truoc} writeln('Word ',word,' da co roi '); end;procedure Print(p:pointN); begin if P<>nil then begin

print(P^.left); writeln(P^.value); print(P^.right); end else end;procedure Hienthi(header:tree);var p:pointN;begin P:=header^.link; if p<>nil then print(p) else writeln('Tu dien rong : '); writeln; end;

begin tao_tieude(dictionary); hienthi(dictionary); repeat write('Tu moi :');readln(word); insert_word(dictionary^.link,word); writeln;

Bieân soaïn : Tröông vaên Tuyeán 275

Page 276: Pascal 1

GIAÙO TRÌNH PASCAL Trang 276TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG hienthi(dictionary); writeln;

until word=''; hienthi(dictionary);

readln;end.

ÑAÏI HOÏC QUOÁC GIA TP.HCMTrung taâm phaùt trieån Coâng ngheä thoâng tin

ÑEÀ THI TIN HOÏC LYÙ THUYEÁT _ Chöng chæ BMoân thi :Ngoân ngöõ laäp trình PascalNgaøy thi : 27/02/2000Thôøi gian : 60 phuùt

Caâu 1:Vieát phöông trình nhaäp töø baøn phím moät chuoãi kyù töï s “Töø ” ñöôïc ñònh nghóa laø moät nhoùm kyù töï khoâng coù daáu traéng beân trong . Haõy cho bieát :1. Soá caùc töø coù chuoãi s2. Soá caùc töø baét ñaàu chöõ caùi ‘b’

Caâu 2Vieát chöông trình tính toång sau (x , n ñöôïc nhaäp töø baøn phím ,x laø soá thöïcc , nlaø soá nguyeân döông

ÑAÏI HOÏC QUOÁC GIA TP.HCM Trung taâm phaùt trieån coâng ngeä thoâng tin

ÑEÀ THI THÖÏC HAØNH _ Chöng chæ BMoân thi : Ngoân ngöõ laäp trình PasccalNgaøy thi : 27/02/2000Thôøi gian : 60 phuùt

Page 277: Pascal 1

GIAÙO TRÌNH PASCAL Trang 277TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongCaâu 1 : Vieát chöông trình thöïc hieän caùc vieäc sau :1. nhaäp vaøo moät maûng moät chieàu coù n phaàn töû (n ñöôïc

nhaäp töø baøn phím ,0<n<100)2. tính trung bình coâng cuûa caùc phaàn töû chaún, leõ3. tìm trong maûng ñoaïn taêng daøi nhaát vaø in ñoaïn ñoù ra maøn

hình

Ví duï :Nhaäp n= 7 6 2 8 9 4 7 5In ra trung bình coäng cuûa caùc phaàn töû chaún laø 5 - trung bình coäng cuûa caùc phaàn töû leõ laø : 7- Ñoaïn taêng nhieàu nhaát trong maûng : 2 8 9

Caâu 2 Moät nhaân vieân ñöôïc quaûn lyù theo caùc thoâng tin sau : maso, hoten ,luong.Vieát phöông trình :1. nhaäp xuaát moät danh saùch goàm n nhaân vieân 2. In ra danh saùch nhaân vieân ñöôïc saép xeáp giaûm daàn theo

löông

**1/ ñoïc Töø baøn phím caâu vaên baûn khoâng quaù 225 kyù töï vaø thay theá taát caû caùc kyù töï a,A baèng kyù töï C vaø in ra maøn hình caâu vaên baûn vöøa thay theá . 2/ Cho moät daõysoá nguyeân a1…… a100 ( goàm 100 soá ) a. Tính tích taát caû caùc soá thoaû /a1 / >1 b. Tìm ra gaùi trò lôùn nhaát vaø in ra vò trí cuûa giaù trò aáy . 3/ . Cho N ñ trong MP toaï ñoä ñeà caùc a. Tìm taát caû caùc Nñ coù khaùch ñeán goác o gaàn nhaát b. Tìm taát caû caùc ñieåm naèm treân ñöôøng troøn coù phöông trình

x2 +y2 = 1 c. Tìm taát caû caùc ñieåm naèm tr6en truïc hoaønh I) 4/ Cho moät daõy soá nguyeân a1…… a100 (100 soá )a. Tính toång soá cuûa caùc soá , chaün trong daõy b. Tìm taát caû caùc soá chia heát cho 3 trong daõy 5/ Cho N ñieåm trong maët phaúng toaï ñoä Ñeà cac sau : A. Tìm taát caû caùc ñieåm coù khoaûng caùch ñeán goác toaï ñoä 0

gaàn nhaát c. Tìm taát caû caùc ñieåm thuoäc ñöôøng thaúng y+x=1 d. Tìm taát caû caùc ñieåm naèm treân truïc tung

Bieân soaïn : Tröông vaên Tuyeán 277

Page 278: Pascal 1

GIAÙO TRÌNH PASCAL Trang 278TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

---------------------ÑEÀ THI THÖÛ

Thôøi gian:20 phuùtCaâu:1 cho ñoaïn chöông thình sau:

I , J :integer;S :string;C:char;T:real;

Chonï caâu traû lôøi sai trong caùc caâu traû lôøi sau:a I:=100;b C:=’a’+’B’;c writeln(S);d T:= I/3;

Caâu 2:Trong ñoaïn chöông trình sau voøng laëp repeat ñöôïc thöïc hieän maáy laàn:

I:=10; j:=20; I jRepeat 11 19I:=I+1; 12 18J:=j-1; 13 17Until I >j; 14 16

15 1516 14

Vaäy voøng laëp repeat ñöôïc thöïc hieän 6 laàn:Caâu 3:Cho chöông trình sau:

Program thi;Var I,j,S:integer;BeginS:=0;I:=1;j:=1;RepeatS:=S-I-J;I:=I+2;J:=-2*J;Until I>5;End.

Cho bieát S coù giaù trò laø bao nhieâu vaø voøng laëp repeat ñöôïc thöïc hieän maáy laàn:

Keát quaû laøS=-12Voøng laëp repeat ñöôïc thöïc hieän 3 laàn

Caâu 3:Cho chöông trình sau:Begin

For I:=1 to 3 doFor j:=I downto 1 do write(I:2);

Page 279: Pascal 1

GIAÙO TRÌNH PASCAL Trang 279TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongEnd.

Keát quaû laøa 1 1 1 2 2 3 *c 1 2 2 3 3 3b122333 d 1 1 1 2 2 2 Caâu: 4 Coù chöông

trình sau Var n:Byte;beginn:=14;while(n div 3) >2 do begin

n:=n div2;end;

write(n);end.

Keát quaû laø a 10 d 14b 7 (*) e Moät soá khaùc:c 13

Caâu 5: Töông töï nhö khai baùo caâu leänh ôû caâu 4:while (n div 3) >2 do begin

n:=n/2;end;

Keát quaû cuûa chöông trình seõ laøMaùy baùo loãi (vì n/2 laø soá thöïc-real maø n khai baùo laø soá

nguyeân) Caâu 6:Töông töï nhö khai baùo caâu leämh ôû caâu 4:Neáu Var n :real;while (n div 3) >2 do begin

n:=n/2;end;

Keát quaû cuûa chöông trình laø;Maùy baùo loãi (vì n laø soá thöïc-real neân khoâng ht6eû thöïc hieän pheùp chia nguyeân

n div 3)Caâu:7 cho caùc phaùt bieåu sau;

1) Leänh Gotoxy (30,17) di chuyeån con troû ñeán coät 30 doøng 17 treân maøn hình

2) Khoâng ñöôïc khai baùo bieán maûng nhö sau Type:A:Array[-3..-1] of integer;

vì bieán khoâng theå laø –3,-2,-13)Moät bieá chæ nhaän moät trong hai giaù trò True hoaëc False laø bieán coù kieå BooleanChoïn caâu traû lôøi ñuùng

a 1,3 ñuùngb 1 ñuùngc 2 ñuùngd 2 sai 1vaø 3 ñuùng(*)

Bieân soaïn : Tröông vaên Tuyeán 279

Page 280: Pascal 1

GIAÙO TRÌNH PASCAL Trang 280TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

e 1,2,3 saiCaâu:Giaû söû hai kim ñoàng hoà ñang chæ m phuùt vaø n giaây. Sau khoaûng thôøi gian t giay hai kim gaëp nhau. Khi. Ñoù ta coù.

a (1600*m+60*n+t) div 12 = (60*n+t) mod 60b (3600*m+60*n+t) div 12 = (60*n+t) mod 3600c (12*60*m+60*n+t) div 12 = (60*n+t div 60) mod 3600d m div 12 +n+t div 60 = n +t div 60

Caâu:Cho chöông trình sau:Vari:boolean;begin

for i:= false to true do wtite(not i);end.

Keát quaû cuûa chöông trình laøa Maùy baùo loãi do duøng bieán khoâng hôïp leäb Khoâng hieån thò giaù trò naøo caûc hieån thò giaù trò truefalsed hieån thò giaù trò falsetrue

Caâu:Cho chöông trình sau:const n = 3;Var

day: array[1..n] of byte;i,j:byte;begin

for i:=1 to n do day[i]:=i;i:=o; j:=o;while j< n do

beginif(i+j) mod n = 0 then

beginwriteln; j:=j+1;i:=0;

endElse i:=i+1;writeln(day[i+j] : 2)

end;end.

Keát quaû nhaän ñöôïc laø:a 1 2 3

2 3 1 3 1 2

b 1 2 3 2 3 1

3 1 2 c 0 1

1 0

Page 281: Pascal 1

GIAÙO TRÌNH PASCAL Trang 281TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongd 1 0 0 1

Caâu: Cho chöông trình sau:Vark,k1,k2: word;begin

k:=123;k1:=k; k2:=0;repeatk2:=10*k2+k1 mod 10;k1:= k1 div 10;until k=0;if k2 = k then wtite(k, ‘la so palindrom ‘,k2)else write(k, ‘khong la so palidrom ‘,k2);end.

Keát quaû nhaän ñöôïc laø:a 123 khong la so palidrom 123b 123 khong la so pa lidrom 231c 123 khong la so palidrom 321d 123 khong la so palidrom 312

Caâu:thöïc hieän chöông trình sau:uses crt;var a,b:byte;procedure ct1;var a:byte;begina:=1; b:=4;end;begin

a:=3; b:=4;write(a:3, b:3)ct1;

end.keát quaû nhaän ñöôïc treân maøn hình laø:

a 3 4 1 2b 3 4 3 2c 3 4 3 4d Khoânh coù caâu naøo ñuùng.

Caâu;Thöïc hieän chöông trình sau:var i,j:byte;begin

for i:= 1 to 3 dofor j:=i downto 1 do write(j-i);

end.Keát quaû nhaän ñöôïc laø:

Bieân soaïn : Tröông vaên Tuyeán 281

Page 282: Pascal 1

GIAÙO TRÌNH PASCAL Trang 282TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

a 1 1-1 0-1-2b 1 0-1 0-1-2c 1 0-2 1-1-2d 1 0-2 2-1-2

Caâu;thöïc hieän chuông trình sau:var i,j:byte;begin

for i:=1 to 3 dofor j:= i downto 1 do write(i-j);

end.Keát quaû nhaän ñöôïc laø

a 1 0 1 0 1 2b 0 2 1 0 1 2c 0 0 1 0 1 2d 1 0 2 0 1 2

Caâu:thöïc hieän chöông trình sau:var i,j:byte;begini:= 1;while i < 4 do

beginj:= i div 2;i:= i + 1;if j:= 0 then cotinue;write(i+j:3);

end;end.

Keát quaû nhaän ñöôïc laøa 2 3b 4 5c 1 4d 4 2

Caâu:thöïc hieän chöông trình sau:var i,j:byte;begini:=1;while i < 4 dobeginj:= i div 2;i := i + 1 ;if j := 2 then continue;write(i + J:3);end;end.

keát quaû nhaän ñöôïc laø

Page 283: Pascal 1

GIAÙO TRÌNH PASCAL Trang 283TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phonga 1 4 5b 2 4 2c 3 4 5d 2 4 5

ÑEÀ SOÁ 11

Caâu:Keát quaû cuûa caâu leänh : write(1234.2 : 3);a 1.2E+03b 1.234c 1234d 234

caâu: Coù chöông trình sau:var s : string;

I : byte;ch : char;

begins := ‘chao ban’;I : =1; ch :=s[I];while I < ord s[0]) do

begins[I]:= s[I+1];I := I+1;

end;write(s, I:3);

end.Keát quaû nhaän ñöôïc treân maøn hình laø:

a hao bann 7b hao bann 8c hao aaan 6d hao nnnn 8

caâu: Thöïc hieän chöông trình sau:vars1 , s : string;

I , j : byte;begin

s1 := ‘aba’; s := ‘abababcababac’;j := 0; I :=1;while j <= ord (s[0]) – ord (s1[0]) do

beginif(I > ordc(s1[0]) or (s[I+j] <>s1[I]) then

beginif I > ord (s1[0]) then write(j+1:3);j := j+1;I := 1;

end

Bieân soaïn : Tröông vaên Tuyeán 283

Page 284: Pascal 1

GIAÙO TRÌNH PASCAL Trang 284TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

else I := I+1end;

end.Keát quaû nhaän ñöôïc laø:

a 1 3b 1 8c 1 3 8d 1 3 8 10

Caâu:Cho chöông trình sau:var I , j ,k : integer; (1)begin (2)

j := 10; k :=5; (3)I := j/k; (4)

end. (5)Ñoaïn chöông trình treân sai -> doøng

a 1b 3c 4d 5

Caâu:coù khai baùo sau:var s : string;cho bieát caâu leänh sai:

a s[5] := #1;b s[1] := ord (‘A’);c s[0] := succ(‘A’);d s[3] :=’A’;

Caâu:coù khai baùo sau:var s : string;cho bieát caâu leänh ñuùng:

a s[5] := #1;b s[1] := ord (‘A’);c s[1] := ‘B’-‘A’d s[0] :=’A’;

Caâu:Coù chöông trình sau:type tuan = (htuhai, thuba, thutu, thunam, thusau, thubay,

chunhat);var NV truc : tuan;

I : byte;begin

NVtruc := thuhai;for I := 1 to 3 do NVtruc := succ(NVtruc);case NVtruc of

thuhai..thutu : write(‘dautuan’);thunam..thubay : write(‘cuoituan’);chunhat : write (’ngaynghi’);

Page 285: Pascal 1

GIAÙO TRÌNH PASCAL Trang 285TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongend;

end.Keát quaû cuûa chöông trình laø:

a oau tuanb cuoi tuanc ngay nghid Khoânh coù caâu naøo ñuùng:

caâu: Keát quaû caûu caâuleänh: write(5 div 2:3);a 2b 2.5E+01c 2.5E+02d 2.5E+00

Caâu:Ñoaïn chöông trình sau:GOTOXY(10, 3); write(‘chao cac ban’);writeln(‘chuc cac ban may ma )

Keát quaû treân maøn hình laø:a Taïi haøng 10 coät 3 ta ñöôïc:

chao cac banchuc cac ban may ma

b Taïi haøng 3 coät 10, ta ñöôïc:chao cac banchuc cac ban may ma

c Taïi haøng 10 coät 3 ta ñöôïc:chao cac ban chuc cac ban may ma

d Taïi haøng 3 coät 10, ta ñöôïcchao cac banchuc cac ban may ma

Caâu:Cho chöômg trình sau:var I: byte;begin

for I := 0 to 19 dobegin

if I mod 10 = 0 then writeln;end;

end.Keát quaû nhaän ñöôïc laø:

a 0b 1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19

b 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 c 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

16 17 18 19d 0 1 2 3 4 5 6 7 8 9 1011 12 13 14 15 16 17 18 19

Bieân soaïn : Tröông vaên Tuyeán 285

Page 286: Pascal 1

GIAÙO TRÌNH PASCAL Trang 286TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

ÑEÀ SOÁ 12:Caâu:Cho chöông trình sau:

beginwriteln(5 div 2 :5 : 2);writeln(‘|||||’);

end.Keát quaû nhaän ñöôïc laø:

a 2.00 b 2.00

c 2

d Khoâng coù caâu naøo ñuùng.Caâu: Giaû söû ta coù chöông trình sau:

VarI : boolean;j :byte;

beginI := true; j := 0;while I do

beginI := succ(I);j := j+1;

end;write(j);

end.Keát quaû hieån thò cuûa chöông trình laø:

a 255b 1c 2d Caùc keát quaû noùi treân ñeàu sai.

Caâu: Cho chöông trình sau:var

day : array[1..5] of byte;I : byte;

beginday[1] : 1; day[2] := 4; day[3] :=2; day[4] := 2; day[5] := 1;I :=1;while(I <= 5 div 2) and (day[I]= day[5 – I +1]) do I := I+1;if I >5 div 2 then write(‘day doi xung ‘, I)else write(‘day khong doi xung ‘, I);

end.Keát quûa nhaän ñöôïc treân maøn hình laø:

a Daõy khoâng ñoái xöùng 3.

Page 287: Pascal 1

GIAÙO TRÌNH PASCAL Trang 287TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongb Daõy ñoái xöùng 3.c Daõy khoâng ñoái xöùnh 2d Daõy ñoái xöùng 2

Caâu:Cho chöông trình sau:function strswap(s :string): string;var I : byte;

st : string;begin

st := ‘’;for I := ord (s[0]) downtoù do st := st + s[I];strswap := st:

end;begin

write(strswap(‘chao cac abn’));end.

Keát quaû nhaän ñöôïc laø:a chao cac banb ban cac chaoc nab cac oahcd oahc cac nab

Caâu:Cho chöông trình sau:vars : string;I :byte;begins := ‘ROTER’;I := 1;while(I <= ord (s[0]) div 2) and (s[I] = s[ord (s[0]) – I +1]) do

I := I+1;if I > ord (s[0]) div 2 then write(‘chuoi doi xung ‘, I)else write(‘chuoi doi xung ‘, I);end.

Keát quaû nhaän ñöôïc treân maøn hình laø:a Chuoãi khoâng ñoái xöùng 2b Chuoãi ñoái xöùng 2c Chuoãi khoâng ñoái xöùng 3d Chuoãi ñoái xöùng 3

Caâu:Thöïc hieän chöông trình sau:function wcunt(s : string): byte;varI , J :byte;

beginif ord (s[0]) > 0 then j := 1 else j := 0;for I :=2 to ord (s[0]) do

if (s[I] = ‘ ‘) and (s[I-1] ‘ ‘) <> then j := j + 1;wcount := j;

Bieân soaïn : Tröông vaên Tuyeán 287

Page 288: Pascal 1

GIAÙO TRÌNH PASCAL Trang 288TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

end;begin

write(wcount(‘le nha minh anh’));end.

Keát quaû cuûa chöông trình laø:a 5b 4c 3d 2

Caâu:Cho chöông trình sau:const n = 2;var

day : array[0..n] of byte;I , j : byte;

beginfor I := 0 to n do day[I] := I+1;for I := 0 to n do

beginwriteln;

for j := 0 to n do write(day[(I+j) mod (n+1)] :3);end;

end.Keát quaû nhaän ñöôïc laø:

a 0 1 2 b 1 2 3 c 0 1 d 1 0 1 2 0 2 3 1 1 0 0 1

2 0 1 3 1 2

ÑEÀ SOÁ 13Caâu:Keát quaû cuûa caâu leänh: write(6 div 2 :3);

a 3b 3.0c 3.0E+00d 0.3E+01

Caâu:Cho chöông trình sau:uses crt;var matran : array[1..2, 1..3] of byte;I ,j :byte;begin

for i := 1 to 2 dobegin

Gotoxy(30, 9+ I);for j := 1 to 3 do write(matran[I, j] :4);

end;end.

Page 289: Pascal 1

GIAÙO TRÌNH PASCAL Trang 289TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongChöông trình cho pheùp hieån thò matran theo ñuùng:

a bc d

Caâu: Thöïc hieän chöông trình sau:var I, j: byte;begin

for I :=1 to 3 dofor j := I-1 downto 1 do write(j:2);

end.Keát quaû nhaän ñöôïc laø:

a 1 2 3b 1 2 2c 1 2 1d 1 1 1

Caâu: Thöïc hieän chöông trình sau:

var I, j: byte;begin

for I :=1 to 3 dofor j := I-1 downto 1 do write(i:2);

end.Keát quaû nhaän ñöôïc laø:

a 1 2 2 3 3 3 b 1 1 2 2 3c 2 2 3d 2 3 3

Caâu: Thöïc hieän chöông trình sau:

var I, j: byte;begin

for I :=1 to 3 dofor j := i downto 1 do write(j:2);

end.Keát quaû nhaän ñöôïc treân maøn hình laø:

a0 1 0 2 1 0b 0 1 1 1 1 0c 0 1 2 2 1 0d 0 1 0 3 2 1

ÑEÀ SOÁ 14

Bieân soaïn : Tröông vaên Tuyeán 289

Page 290: Pascal 1

GIAÙO TRÌNH PASCAL Trang 290TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGCaâu:thöïc hieän chöông trình sau:

var I:byte;begin

I := 1;while I < 10 do

beginGotoxy(30, I); write(‘chao cac ban’);I := I+5;

end;end.

Caâu ‘’chao cac ban’’ ñöôïc hieån thòa treân hai doøng lieân tieáp cuûa maøn hìnhb treân hai doøng 1 vaø 6 cuûa maøn hìnhc treân hai doøng 6 vaø 11 cuûa maøn hìnhd treân hai doøng ñaàu tieân cuûa maøn hình

Caâu: Thöïc hieän chöông trình sau:var I, j: byte; I :=1;repeat

j := I div2;I := I+2;if j =1 then cotinue;write(j mod I:3);until I > 5;

end.Keát quaû nhaän ñöôïc laø:

a 0 1b 0 2c 1 2d 0 0

Caâu: Thöïc hieän chöông trình sau:var I, j: byte; I :=1;repeatj := I div2;

I := I+2;if j = 0 then cotinue;write(j mod I:3);until I > 5;

end.Keát quaû nhaän ñöôïc laø:

a 1 1b 1 2c 2 2

Page 291: Pascal 1

GIAÙO TRÌNH PASCAL Trang 291TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongd 0 2

Caâu:Thöïc hieän chöông trình sau:Caâu: Thöïc hieän chöông trình sau:var I, j: byte;begin

for I :=1 to 3 dofor j := i downto 1 do write(I+j:2);

end.Keát quaû nhaän ñöôïc treân maøn hình laø:

a2 4 3 6 5 4b 1 4 3 6 5 4c 3 4 3 6 5 4

d 1 4 3 6 5 2 Caâu: Thöïc hieän chöông trình sau:

var I, j: byte; I :=1;repeatj := I div2;

I := I+2;if (I+j) mod 2 = 1 then cotinue;write(j + I:3);until I > 5;

end.Keát quaû nhaän ñöôïc laø:

a 1b 2 c 4d 6

Caâu: Thöïc hieän chöông trình sau:var I, j: byte; I :=1;

repeatj := I div2;

I := I+2;if (I+j) >3 then cotinue;write(j + I:3);until I > 5;

end.Keát quaû nhaän ñöôïc laø:

a 1b 2 c 3

d 4

Caâu: Thöïc hieän chöông trình sau:

Bieân soaïn : Tröông vaên Tuyeán 291

Page 292: Pascal 1

GIAÙO TRÌNH PASCAL Trang 292TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

var I, j: byte; I :=1;

repeatj := I div2;

I := I+2;if (I+j) < 3 then cotinue;write(j - I:3);until I > 5;

end.Keát quaû nhaän ñöôïc laø:

a 0 3 3b 3 3 6

c –3 -4 -5d 6 9 9

Caâu:Cho chöông trìng sau:Const N= 50;Var a: array[1..50,1..50] of real; s : real; I, j: integer;BeginS : = 0;For I := 1 to n doFor j := 1to n doIf I < j then s := a + a[I,j];End.

Khi keát thuùc chöông trìng :a Toång caùc phaàn töû ôû phía treân ñöôøng cheùo chính cuûa ma

traän.b Toång caùc phaàn töû ôû phía duôùi ñöôøng cheùo chính cuûa ma

traän.d Toång taát caû caùc phaàn töû cac ma traän.

e Toång taát caû caùc phaàn töû thuoäc ñöôøng cheùo chính cuûa ma traän.Caâu:Ñeå tính tích caùc soá töø 1 ñeán 5 , coù theå söû duïng ñoaïn chöông trình naøo:

a s:= 1; (*)for I := 1 to 5 do s := s*I;

b s := 0; I := 1; (***)repeats := s*I;I := I + 1;until I > 5;

c s := 1; I := 1; (**)while I >=5 do begin s:= s*I; I := I +1 end;

d (*),(**),(***) ñeàu sai

Page 293: Pascal 1

GIAÙO TRÌNH PASCAL Trang 293TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phonge (*),(**),(***) ñeàu ñuùng

Caâu:Trong ñoaïn chöông trình sau voøng laëp repeat ñöôïc thuïc hieän maáy laàn?

I := 10; j := 20;repeatI := I +2;j := j –1;until I > j;

Keát quaû:a 1b 5c 6d 0e 4

Caâu:Thöïc hieän chöông trình sau:var n : byte;begin

n := 14;while ( n div 3) < 2 do begin

write(n mod 2);n := n div 2;

end;write(n);

end.Keát quaû nhaän ñöôïc laø:

a 10b 14c 7d 13

Caâu:Giaû söû thöïc hieän chöông trình sau:varI : boolean;j : byte;begin

I := false; j := 0;while not I do

beginI := ord (i);j := j + 1;

end;write(j);

end.Keát quaû hieån thò treân maøn hình laø:

a 255b Chöông trình baùo loãi

Bieân soaïn : Tröông vaên Tuyeán 293

Page 294: Pascal 1

GIAÙO TRÌNH PASCAL Trang 294TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

c 1d Chöông trình laëp voâ haïn.

Caâu:Cho chöông trình sauvar n: integer;function Fi(n:integer) : integer;var f1,f2,i : integer;beginf1 := 1; f2 := 1;for I:=2 to n do

beginf2:= f1 = f2;f1 := f2 – f1;end;Fi := f1;end;beginn:= 6;writeln(‘F’.’n’,’=’,Fi(n));end.

Keát quaû:a F6 = 13b F6 = 8c F6 = 4d F6 = 5

Caâu:Cho ñoaïn khai baùo nhö sau:varI , J: integer;S: string;C: char;T:real;

Caùc leänh sau ñaây xuaát hieän trong ñoaïn chöông trình ,leänh naøo sai?

a I:= 100;b J:= I + 50;c C:= ‘A’ + ‘B’;d T:= i/3;e writeln(S);

Caâu: Cho caùc bieán x,y,z, t coù kieåu integer.Sau khi thi haønh caùc leänh:x:= 6; y:= 5; z:= 3; t:= 4;if y > z then

if z > t thenx:= z+ t

elsex:= y+ t;

Page 295: Pascal 1

GIAÙO TRÌNH PASCAL Trang 295TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongGaùi trò cuûa x laø bao nhieâu:

a 6b 7c 9d Moät soá khaùc.e Chöông trình baùo loãi

Caâu:Thöïc hieän chöông trình sau: ÑEÀ SOÁ 15(tieáp theo)var I , J :integer;begin

I := 1;repeat

j := 1 div 2;I := I+2;if (I+j) > 3 then continue;write(j-I:3);

until I >5;end.

Keát quaû nhaän ñöôïc laø:a –1b –3c –6 d –9

Caâu: Cho chöông trình sau:const pi = 3.1416; (1)var r :real; (2)begin (3)

r : = 30; (4)pi := 1; (5)write(‘dien tich vong tron la: ‘, r*r*pi :8 :2); (6)

end. (7)Chöông trình coù loãi -> doøng

a 1b 4c 5d 6

Caâu:Cho chöông trình sau:begin

writeln(5/2: -5: 2);writeln(‘|||||’);

end.Keát quaû nhaän ñöôïc laø:

a

b

Bieân soaïn : Tröông vaên Tuyeán 295

Page 296: Pascal 1

GIAÙO TRÌNH PASCAL Trang 296TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

c

ÑEÀ SOÁ 16Caâu:Cho chöông trình sau:

var j, k : integer; (1)begin (2)

j := 10; k :=5; (3)write(j div k:6 :2) (4)

end. (5)Ñoaïn chöông trình sau sai ôû doøng:

a 1b 3c 4d 5

Caâu:Giaû söû coù khai baùo sau:var I : byte;procedure t1(so :byte);begin

so :=77;end;

beginI :=1;t1(I);write(I);

end.Keát quaû nhaän ñöôïc laø:

a 77b 1c Chöông trình baùo loãid Khoâng coù caâu naøo ñuùng

Caâu:Cho chöông trình sau:begin

writeln(6/2: -5: 2);writeln(‘|||||’);

end.Keát quaû nhaän ñöôïc laø:

a 3.00

b 3.00

c 3

d 3Caâu:Thöïc hieän chöông trình sau:

Page 297: Pascal 1

GIAÙO TRÌNH PASCAL Trang 297TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongvar n: byte;begin

n:= 60;while(n –1) div 2 > 28 do begin

write(‘.’);n := n div 2;end;

write(n);end.

Keát quaû nhaän ñöôïc laø:a .28b .29c .30d .31

Caâu:Thöïc hieän chöông trình sau:var I , j : byte;begin

I :=1;repeat

j := I mod 2;I := I+3;if(I+j) < 3 then continue;write(I-j:3);

until I >7;end.

Keát quaû nhaän ñöôï c laø:a 1 3 7b 3 7 9c 7 9 1d 1 3 9

Caâu:Thöïc hieän chöông trình sau:var I , j : byte;

beginI :=1;repeat

j := I mod 3;I := I+3;if(I+j) < 3 then continue;write(I-j:3);

until I >7;end.

Keát quaû nhaän ñöôï c laø:a 6 3 9b 3 3 6c 1 9 6

Bieân soaïn : Tröông vaên Tuyeán 297

Page 298: Pascal 1

GIAÙO TRÌNH PASCAL Trang 298TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

d 3 6 9Caâu:Thöïc hieän chöông trình sau:

var I , j : byte;beginfor I := 1 to 3 do

for j := I-2 to I do write(j:2);end.

Keát quûa nhaän ñöôïc laø:a 1 2 2 3 3 3b 0 1 2 1 2 3c 1 1 2 3 3 3d 1 2 1 3 2 1

Caâu:Thöïc hieän chöông trình sau:var I : byte;

beginfor I := 1 to 3 do

beginI := I-1;

write(i:2);end;

end.Keát quûa nhaän ñöôïc laø:

a 1 2 3b 0 1 2c Chöông trình coù loãid Chöông trình laëp voâ haïn

Caâu: Thöïc hieän chöông trình sau:var I , j : byte;

beginI :=1;repeat

j := I div2;I := I+3;if(I+j) < 3 then continue;write(I-j:3);

until I >7;end.

Keát quaû nhaän ñöôïc laø:a –4 -5 -7b –7 -5 -4c 4 5 7d 4 -5 7

Caâu:Thöïc hieän chöông trình sau:var I , j : byte;

begin

Page 299: Pascal 1

GIAÙO TRÌNH PASCAL Trang 299TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongI :=1;repeat

j := I div2;I := I+3;if(I+j) < 3 then continue;write(I-j:3);

until I >10;end.

Keát quaû nhaän ñöôïc laø: a -3 -5 -7 -10 b –4 -5 -7 -8 c –1 -3 -5 -7 d –2 -3 -5 -8

Caâu:Thöïc hieän chöông trình sau: var n :byte;begin

n := 20;while n mod 3 <> 0 do begin

write(‘.’);n := n div 2;

end;write(n);

end.Keát quûa nhaän ñöôïc laø:

a .15b …20c ….10d …..0

chöa xongKIEÅU TAÄP TIN (FILE)1.Caáu truùc & phaân loaïi taäp tin :Moät taäp tin ñeàu ñöôïc caáu taïo nhö sau :

Ñænh taäp tin (Top ) laø phaàn töû coù giaù trò döõ lieäu ñaàu tieân cuûa taäp tin -Ñaùy cuûa taäp tin : (bottom ) laø phaàn töû coù giaù trò cuoái cuøng cuûa taäp tin-Ñaàu cuûa taäp tin : (BOF=Beginning of file ), laø khôûi ñaàu taäp tin , laø phaàn töû ôû beân ngoaøi ñænh cuûa taäp tin .-Keát thöùc taäp tin ( EOF=End of file ) baùo hieäu heát taäp tin

Bieân soaïn : Tröông vaên Tuyeán 299

Page 300: Pascal 1

GIAÙO TRÌNH PASCAL Trang 300TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGPascal coù haøm chuaån EOF () KIEÅU BOOEAN , tham soá laø moät bieán taäp tin Thaønh phaàn cuûa taäp tin naøy laù caùc baûn ghi . Moät laàn ghi vaøo ñóa laø ghi moät baûn ghi , moãi laàn ñoïc töø ñóa laø ñoïc moät baûn ghi Caùch ñònh nghizaõ kieåu vaø khai baùo bieán cuûa taäp tin naøy theo cuù phaùp sau :TYPE<TT>=FILE OF <KPT>

Töù c laØ <Kieåu taäp tin > =File of <Kieåu phaàn töû KPT>sau khi ñònh nghóa kieåu , chuùng ta khai baùo bieán nhö sau :VAR <Bieán taäp tin >:<Kieåu taäp tin >hoaëc coù theå khai baùo bieán ñoàng thôøi vôùi ñònh nghia kieåu :VAR<Bieán taäp tin >:FILE OF <kieåu phaàn töû KPT>VÍ DUÏ :TYPE FileInteger = FILE OF Integer; FileReal = FILE OF Real; Hoso = RECORD Hoten:string[24]; Tuoi :byte; Luong :real; End; F_hoso=FILE OF Hoso;VARF1,F2:FileInteger;{ 2 bieán taâp tin coù kieåu integer} F3:FileReal ;{ bieán taâp tin coù kieåu Real}F4 File of Char { bieán taâp tin coù kieåu Character}F5 : File of Array[1..5] of Integer ; { bieánmaûng taâp tin coù kieåu Integer}F6 :F_hoso { bieán taâp tin coù kieåu F_hoso}Taäp tin khoâng coù kieåu : (Untyped File ) hay coøn goïi laø taäp tin toång quaùt ,laø taäp tin maø ta khoâng quan taâm ñeán noäi dung hay kieåu cuûa taäp tin maø chæ quan taâm ñeán yeáu toá vaät lyù cuûa taäp tin nhö Kích thöôùc , ñoä lôùn vaø caùc yeáu toá taùc ñoäng leân taäp tin .Cuù phaùp khai baùo :VAR<bieán taäp tin > :FILE; Ví duï :VarF:Fil e;{khai baùo bieán taäp tin khoâng ñònh kieåu }

Page 301: Pascal 1

GIAÙO TRÌNH PASCAL Trang 301TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongTaäp tin vaên baûn (Text file ) . Taäp tin naøy duøng ñeå ghi leân ñóa caùc kyù töï ñöôïc toå chöùc thaønh caùc doøng . Khi ñoïc cuõng ñoïc moät chöõ hoaëc moät doøng töø ñóa vaøo boä nhôù . Vôùi taäp tin daïng vaên baûn vì coù daïng maõ ASCII neân baïn coù theå duøng leänh TYPE cuûa DOS hoaëc baát cöù phaàn meàm soaïn thaûo naøo cuõng coù theå xem noäi dung taäp tin naøy ñöôïc .CUÙ PHAÙP:VAR<Bieán taäp tin >:TEXT;F:Text;Toùm laïi baïn chæ caàn khai baùo bieán taäp tin laø coù theå bieát chuùng thuoäc loaïi taäp tin naøo

VAR<Bieán taäp tin> : FILE OF <Kieåu>; {loaïi taäp tin coù kieåu}<Bieán taäp tin> : FILE ; {loaïi taäp tin khoâng coù kieåu}<Bieán taäp tin> : TEXT; {loaïi taäp tin VAÊN BAÛN}2-TAÄP TIN COÙ KIEÅU (TYPE FILE )a.Khaùi nieämTaäp tin coù lieåu hay coøn goïi laø taäp tin baûn ghi laø taäp tin chöùa döõ lieäu coù moät kieåu xaùc ñònh nhö Integer (soá nguyeân ) ,real (soá thöïc ) ,record (baûn ghi ) ..töùc moãi phaàn töû cuûa taäp tin laø moät döõ lieäu thuoäc kieåu cô sôû ( hay kieåu thaønh phaàn ) Ñoä daøi moãi baûn ghi baèng soá byte ñeå luu moät soá lieäu .Ví duï moät soá thöïc chieám 6 bytes vaäy ñoä daøi moät baûn ghi trong taäp tin soá thöïc laø 6 byte . Neáu baûn ghi coù nhieàu tröôøng thì ñoaä daøi baûn ghi laø toång kích thöôùc cuûa caùc tröôøng Ví duï : TYPE Hocsinh=RECORD Hoten:string[24]; Van,toan,ly,hoa:real; End;TTTHS=FILE OF Hocsinh ;{hoïc sinh laø kieåu cô sôû cuûa TTHS} VAR Hs:Hocsinh;{Bieán kieåu baûn ghi }F1,f2 : TTHS;{bieán taäp tin coù kieåu}Trong khai baùo treân ñaây thì moãi baûn ghi chieám 48 bytes-Caùc thao taùc treân taäp tin 1.Gaùn teân taäp tin cho bieán taäp tin ñaïi dieän2.Môû taäp môùi hoaëc môû taäp tin cuõ ñaõ coù saün treân ñóa .3.Xöû lyù döõ lieäu , ghi döõ lieäu vaøo ñóa hoaëc ñoïc taäp töø ñóa vaøo boä nhôù ñeå xöû lyù 4.Ñoùng taäp tin sau khi xöû lyù xong

Bieân soaïn : Tröông vaên Tuyeán 301

Page 302: Pascal 1

GIAÙO TRÌNH PASCAL Trang 302TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGb.Khai baùo bieán taäp tin coù kieåu :Cuù phaùp toång quaùt : VAR<Teân bieán >:FILE OF <kieåu>;ÑOÁI vôùi caùc kieåu chuaån : Var F:File of Integer; S:File of string;Ñoái vôùi kieåu coù caáu truùc :Type Nhansu=RECORD

Hoten: string[24];Dòachi:string[30];Ngaysinh:1..31;Thangsinh:1..12;Namsinh:1900..2001;Quequan:string[30];

End.Var : File of nhansu;Khi khai baùo bieán döõ lieäu ñöôïc ghi döôùi daïng baûn ghi ,ta khoâng theå duøng leänh TYPE cuûa DOS ñeå xem noäi dung ñöôïc .C.caùc thao taùc treân taäp tin coù kieåu :+Thuû tuïc gaùn teân bieán taäp tin : tröôùc khi thao taùc treân taäp tin , ñieàu baét buoät laø baïn phaûi gaùn teân bieán taäp tin baèng thuû tuïc Assign nhö sau :

Assign(Filevar,’FileName’);Filevar : laø moät bieán taäp tin nhö f trong ví duï ôû treânFile name : Laø teân taäp tin ,teân hôïp leä ñöôïc söû duïng trong heä ñieàu haønh MS-DOSPhaàn teân : toái ña 8 kyù töï lieàn nhau , kyù töï ñaàu tieân phaûi laø chöõ Phaàn môû roäng : coù toåi ña 3 kyù töï Baïn phaûi xaùc ñònh nôi lö tröõ taäp tin xaùc ñònh baèng ñöôøng daãn ,neáu khoâng xaùc ñònh baèng ñöôøng daãn thì maëc nhieân löu tröõ trong thö muïc hieän haønhThuû tuï naøy nhaèm gaùn moät teân taäp tin thöïc söï (File name ) cho moät bieán taäp tin (Filevar ) .Teân taäp tin seõ ñöôïc ghi vaøo ñóa coøn bieán taäp tin duøng ñeå ñaïi dieän cho taäp tin ñoù .Ví duï : Var F:file of Integer; Begin Assign(f,’songuyen.dat’); …. End;

Page 303: Pascal 1

GIAÙO TRÌNH PASCAL Trang 303TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong(* Tao mot tep chua cac so nguyen tu 1 den 100 voi ten tep tren bo nho ngoai la NGUYEN.DAT*)program tao_tep;VARI,spt:integer;F:file of Integer;begin assign(F,'D:\NGUYEN.DAT'); Rewrite(F); For i:=1 to 100 do write(f,i); close(f); end.program ghi_va_doc;varf:file of char;i:char;j,spt:integer;beginassign(f,'D:\kytu.dat');rewrite(f);for i:='A' to 'z' dowrite(f,i);close(f);readln;end.Moät file coù theå coù theå duøng laøm tham soá trong chöông trình con Procedure hoaëc function vôùi lôøi khai baùo naèm sau chöõ var töùc laø teäp ñöôïc duøng laøm tham bieán

Trong ví duï naøy bieán F Ñaïi dieän cho taäp tin songuyen.dat löu tröõ trong thö muïc hieän haønh . Neáu chæ ñònh ‘A:\SONGUYEN.DAT’ thì taäp tin seõ ñöôïc löu treân thö muïc goác cuûa oå ñóa A .LÖU YÙ : baïn khoâng ñöôïc söû duïng thuû tuïc naøy vôùi taäp tin ñang môû +Thuû tuïc môû taäp tin :-môû taäp tin môùi : taäp tin môùi laø taäp tin chöa coù treân ñóa . Ñeå môû taäp tin naøy söû duïng thuû tuïc Rewrite coù cuù phaùp nhö sau :

Rewrite(Filevar);

Filevar : laø teân bieán ñaïi dieän cho taäp tin -Ñeå söû duïng moät taäp tin ta phaûi open taäp tin ñoù .

Bieân soaïn : Tröông vaên Tuyeán 303

Page 304: Pascal 1

GIAÙO TRÌNH PASCAL Trang 304TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG-teân cuûa taäp tin ñaõ môû laø teân gaùn cho bieán taäp tin baèng thuû tuïc Assign ñaõ thöïc hieän tröôùc ñoù .ví duï :…Assign(f,’songuyen.dat’);Rewrite(f);..chæ sau khi thöïc hieän thuû tuïc Rewrite(f,’songuyen.dat’); thì trong thö muïc vaø oå ñóa hieän haønh môùi coù taäp tin songuyen.dat-Môû taäp tin cuõ :taäp tin cuõ laø taäp tin ñaõ löu treân ñóa . Ñeå môû taäp tin naøy baïn duøng thuû tuïc Reset vôùi cuù phaùp nhö sau :

Reset(Filevar);-thuû tuï naøy môû moät taäp tin ñaõ gaùn cho bieán Filevar ,naïp noäi dung naøy vaøo bieán Filevar trong boä nhôù RAM .-Khi môû taäp tin baèng thuû tuïc Reset , neáu treân ñóa khoâng coù taäp tin ñaõ gaùn cho bieán Filevar , chöông trình seõ thoaùt ra do gaëp loãi nhaäp/xuaát (I/O Error ).-Thuû tuïc ñoùng taäp tin khi khoâng coøn söû duïng taäp tin nöõa , ñeå ñaûm baûo an toaøn döõ lieäu baïn phaûi ñoùng taäp tin baèng thuû tuïic Close vôùi cuù phaùp nhö sau :

close(Filevar);-khi söû duïng thuû tuïc naøy , noäi dung bieán Filevar seõ löu vaøo taäp tin treân ñóa ñoàng thôøi ñoùng taäp tin laïi , giaûi phoùng vuøng nhôù daønh cho bieán taäp tin .Löu yù : caùc taïp tin ñaõ môû nhöng khoâng ñoùng seõ bò maát döõ lieäu ñaõ truy xuaát treân bieán Filevar.Ñeå minh hoaï nhöõng thuû tuïc Assign();Rewrite();Reset(); vaø Close() ; ñaõ moâ taû ôû treân baïn haõy xem vaø chaïy chöông trình sau :(* Tao mot tep chua cac so nguyen tu 1 den 100 voi ten tep tren bo nho ngoai la NGUYEN.DAT*)program tao_tep;VARI,spt:integer;F:file of Integer;begin assign(F,'D:\NGUYEN.DAT'); Rewrite(F); For i:=1 to 100 do write(f,i); close(f); i:=1;spt:=0; assign(f,'d:\nguyen.dat'); reset(f); while not EOF(F) Do

Page 305: Pascal 1

GIAÙO TRÌNH PASCAL Trang 305TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong begin read(f,i); write(i); spt:=spt+1; end; close(f); write('so phan tu cua NGUYEN.DAT la :',spt); readln;end.

Vi du :program ghi_va_doc;varf:file of char;i:char;j,spt:integer;beginassign(f,'D:\kytu.dat');rewrite(f);for i:='A' to 'z' dowrite(f,i);close(f);reset(f);spt:=0; while not EOF(F) DO BEGIN Read(f,i); write(i,' -'); spt:=spt+1; END; close(f); write('So phan tu la ',spt); readln;end.Ví duï sau ñaây : teân teäp seõ ñöôïc xaùc ñònh luùc chaïy chöông trình .Do khoâng bieát chöông trình keát thuùc ôû ñaâu neân ta duøng toaùn töû NOT EOF (F) (f :teân file gaén )PROGRAM tt;VAR f:file of integer;filename:string;i,n,spt:integer;beginwrite('Nhap ten file ');readln(filename);assign(f,filename);rewrite(f);for i:=1 to 10 do write(f,i);close(f);

Bieân soaïn : Tröông vaên Tuyeán 305

Page 306: Pascal 1

GIAÙO TRÌNH PASCAL Trang 306TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGassign(f,filename);reset(f);i:=1;spt:=0;while not eof(f) dobegin read(f,i); write(i); spt:=spt+1;end;close(f);write('so phan tu ',spt);readln;end.

program tim_tap_tin_tren_dia;varf:file; {tap tin khong co kieu }filename:string;beginwriteln('tim tap tin tren thu muc va o dia chi dinh ');writeln('----------------------------');writeln;writeln('Cho biet ten tap tin can tim '); readln(filename);assign(f,filename);{$I-}reset(f);if IORresult=0 then write('+Co tap tin ',filename,' tren dia')else write('+Co tap tin ',filename,'khong co tren dia')readln;close(f);end.{ $I: Input/Output-Checking Switch ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßEnables or disables the automatic codegeneration that checks the result of a call toan I/O procedure.

Syntax: {$I+} or {$I-} Default: {$I+} Type: Local Menu Command: Options|Compiler|I/O Checking

Remarks:If an I/O procedure returns a non-zero I/Oresult when the $I switch is on, the programterminates, displaying a run-time error

Page 307: Pascal 1

GIAÙO TRÌNH PASCAL Trang 307TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongmessage.

When the $I switch is off, you must use theIOResult function to check for I/O errors.}

Ví duï : Taïo haøm FileExists coù noäi dung nhö sau : program tim_tap_tin;varF:File;{tap tin loai khong co kieu }ten:string;{------------------------------------------}function FileExists(Filename:string):boolean;varF:file;begin{$I-}assign(f,filename);reset(f);close(f);{$I+}fileExists:=(IOresult=0) and (filename<>' ');end;{------------------------------------------}begin if paramcount=0 then begin write('tap tin can tim '); readln(ten); end else if paramcount=1 then ten:=paramstr(1) else begin writeln('qua nhieu tham so '); exit; end; writeln; if FileExists(ten) then writeln('-Co tap tin ',ten,' tren dia') else writeln('-Tap tin ',ten,' khong co tren dia'); readln; end.readln;end.

Bieân soaïn : Tröông vaên Tuyeán 307

Page 308: Pascal 1

GIAÙO TRÌNH PASCAL Trang 308TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGHaøm paramcount: traû veà soá cuûa tham soá doøng leänh ñaõ chaïy cuûa chöông trìnhHaøm parmst : traû veà tham soá doøng leänh chæ ñònh Thuû tuïc Exit : chaám döùt thöc hieän moät khoái leänh ---paramcount Functionkhai baùo : function ParamCount:Word;Moâ taû : Haøm naøy traû laïi thoâng soâ ñöôïc ñöa tôùi chöông trình treân doøng leänh goõ vaøoKhoaûng traéng vaø tabs ñöôïc duøng nhö nhöõng daáu phaân caùch.Ví duï :program xparamcount;var I:integer;begin if paramcount=0 then begin {Display instruction} writeln; writeln('Hay an dong lenh chay chuong trinh nhu sau :'); writeln; writeln('Test <p1> <p2> <p3>..<pn>..'); writeln; writeln('voi <p1> <p2> <p3>..<pn> la cac tham so ban muon'); writeln('De chuyen cho Test Vi du ban co the go '); writeln; writeln(' TEST INTEXT.TXT OUTTEXT.TXT '); end else begin {hien cac tham so } writeln('Ban go ',paramcount,' tham so'); for i:=1 to paramcount do write(i:2,':',paramstr(i)); end ; readln;end.

Thuû tuïc ghi taäp tin vaøo ñóa :Ñeå ghi döõ lieäu cuûa moät baûn ghi vaøo moät taäp tin ñaõ môû treân ñóa , baïn söû duïng cuù phaùp Write vôùi cuùp phaùp sau :

Write(Filevar,Recvar);Filevar : laø moät bieán taäp tinRecvar : laø moät hay nhieàu thaønh phaàn cuûa taäp tin kieåu baûn ghi . Neáu coù nhieàu thaønh phaàn thì phaân caùch nhau bôûi daáu phaåy (,) , caùc bieán seõ ñöôïc ghi leân filevar , sau moãi laàn ghi thì con troû cuûa taäp tin seõ töï ñoäng chuyeån xuoáng phaàn töû keá

Page 309: Pascal 1

GIAÙO TRÌNH PASCAL Trang 309TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongtieáp.Chöông trình döôùi ñaây minh hoaï thuû tuïc Write(filevar,recvar) duøng ñeå ghi 10 soá nguyeân töø 1 ñeán 10 vaøo taäp tin songuyen trong thö muïc oå ñóa hieän haønhVí duï : 03: Ghi döõ lieäu vaøo taäp tin treân ñóaProgram Ghi_tap_tin;VarI:integer;F:file of Integer;Begin Writeln(‘THU TUC WRITE, GHI DU LIEU VAO TAP TIN TREN DIA ‘);Writeln(‘-----------------------------------------------------‘);Writeln;Assign(f,’D:\songuyen.dat’);Rewrite(f);For I:=1 to 10 do Write(f,i);Writeln;Writeln(‘Da ghi vao tap so nguyen ‘)Writeln(‘ Bam <Enter>..’);Readln;Close(f);End.Sau khi chaïy chöông trình duøng leänh DOS Shell trong menu File vaø leänh DIR , baïn seõ thaáy taäp tin SONGUYEN.DAT trong thö muïc hieän haønh .baïn khoâng theå duøng leänh Type ñeå xem taäp tin naøy ñöôïc Ví duï 4:Chöông trình sau seõ taïo moät taäp tin ‘TELEPHONE’ löu tröõ danh baï ñieän thoaïiProgram DirectoryMake; Type Dicrectory=File of string; Var Directoryfile:Directory;Name,street,city,phone:string;Procedure GetEntry (Var name,street,city,phone:string);Begin

Write(‘Name :’);readln(Name);Write(‘Street Address :’);readln(Street);Write(‘City :’);readln(city);Write(‘Telephone :’);readln(phone);

End; Procedure writeEntry (Var Directoryfile: directory,name,street,city,phone:string);Begin

Bieân soaïn : Tröông vaên Tuyeán 309

Page 310: Pascal 1

GIAÙO TRÌNH PASCAL Trang 310TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

Write(directoryfile,name); Write(directoryfile,street);Write(directoryfile,city); Write(directoryfile,phone);

End;Function finished :boolean;Var Answer :char;Begin

Write(‘Another entry (Y/N) ? ‘);READLN(answer);Finished:=(Answer<>’Y’) and (Answer<>’y’)

End;Begin

Assign(Directoryfile,Directoryname);rewrite(Directoryfile);Repeat GetEntry(name,street,city,phone);WriteEntry(directoryfile,name,street,city,phone);Until finishedClose(directoryfile);

End.THUÛ TUÏC ÑOÏC TAÄP TIN TÖØ ÑÓA VAØO BOÄ NHÔÙ :Ñeå ñoïc noäi dung cuûa moät taäp tin ñaõ coù trong ñóa vaøo boä nhôù , baïn söû duïng thuû tuïc Read vôùi cuù phaùp sau :

Read(Filevar,Recvar);FileVar:laø moät bieán taäp tinRecvar :laø moät hay nhieàu bieán kieåu thaønh phaàn cuûa taäp tin baûn ghi , neáu coù nhieàu bieán thaønh phaàn thì caùch nhau bôûi daáu (,), caùc bieán seõ ñoïc töø Filevar , sau moãi laàn ñoïc , con troû cuûa taäp tin seõ töï ñoäng dòch chuyeån ñeán phaàn töû keá tieáp

Ví duï : söû duïng thuû tuïc Read () ñeå ñoïc noäi dung songuyen.dat ñaõ coù treân ñóa vaøo boä nhôù Program Doc_tap_tin;Label tt;Var I,k:integer;Ten:string;F:file of integer;BeginWriteln(‘THU TUC READ ,DOC DU LIEU TU TAP TIN TREN DIA ‘);Writeln(‘----------------------------------------------------------------------‘);Tt:writeln;K:=0;Writeln(‘-cho biet ten tap tin ‘);read (ten);Assign(f,ten);{$I-}Reset(f) If Ioresult<>0 then

Page 311: Pascal 1

GIAÙO TRÌNH PASCAL Trang 311TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongBeginWriteln;Writeln(‘ KHONG CO TAP TIN NAY ‘);Writeln(‘ BAM ENTER DE TIM LAI ‘);Readln;Goto tt;End;

While Not EOF(f) DOBEGINRead (f,i ) {doc du lieu tu tap ti tren dia vao bo nho }writeln(i){ xuat du lieu ra man hinh }k:=k+1;end;writeln;writeln(‘Tap tin : ‘,ten, ‘ co : ‘,k:3, ‘ phan tu ‘);write(‘ bam Enter ..’);readln;close(f)end.

End.program doc_tep;vari:integer;sophantu:integer;FI:file of integer;filename:string[20];begin write('Ten tep chua cac so nguyen to ');readln(filename); assign(FI,filename); reset(FI); sophantu:=0; while not eof(FI) DO BEGIN read(FI,I); Write(I); sophantu:=sophantu+1; END; close(FI); Write(' so phan tu cua tep ',filename,' la ',sophantu); readln; end.THUÛ TUÏC ÑOÅI TEÂN TAÄP TINKhi ñaõ coù taäp tin treân ñóa baïn coù theå söû duïng thuû tuïc Rename ñeå ñoåi teân taäp tin thaønh moät teân khaùc gioáng nhö leänh Rename cuûa DOS . Cuù phaùp cuûa thuû tuïc Rename nhu sau :

Bieân soaïn : Tröông vaên Tuyeán 311

Page 312: Pascal 1

GIAÙO TRÌNH PASCAL Trang 312TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

Rename(Var filevar :file;newName:string);

Ñoåi teân moät taäp tin ñaõ gaùn cho bieán Filevar thaønh moät teân môùi Newname .Ví duï :ñoåi teân taäp tinProgram Doi_ten;Label tt;Var

F:file of string;Tencu,tenmoi:string;

BeginWriteln(‘THU TUC RENAME , DOI TEN TAP TIN ‘);Writeln(‘----------------------------------------------------‘);Tt:writeln;Write(‘-Cho biet ten tap tin can doi ‘);readln(tencu);Assign(f,tencu);{$I-}reset(f);if Ioresult <>0 then begin

writeln;writeln(‘Khong co tap tin ‘,tencu,’ tren dia ‘);write(‘ Bam enter de tim lai ‘);readln;goto tt;

end; else

beginwriteln;write(‘ Doi thanh ten tap tin moi ‘);readln(tenmoi);close(f);

end;assign(f,tencu);rename(f,tenmoi);writeln;write(‘Da doi ten xong , bam <Enter>…’);readln;close(f);end.

Xin löu yù : thuû tuïc rename() vaø Erase() chæ thöïc hieän ñöôïc khi taäp tin ñoù gaùn cho bieán Filevar vaø chöa ñöôïc môû .

THUÛ TUÏC & HAØM CHUAÅN CUÛA TAÄP TIN COÙ KIEÅU :THUÛ TUÏC SEEK()Cuù phaùp cuûa thuû tuïc nhö sau :

Page 313: Pascal 1

GIAÙO TRÌNH PASCAL Trang 313TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongSeek(filevar,RecNo-1);

Filevar : laø teân bieán taäp tin Recno : laø soá nguyeân chæ soá thöù töï cuûa baûn ghi trong filevar Leänh seek gioáng nhö leänh Go N trong FoxproSeek(Filevar,0) -----go top (Tôùi ñænh taäp tin )Seek(Filevar,Filesize(Filevar)-1) ----go bottom Seek(Filevar,Filesize(Filevar)) ----go EOFví duï 7: Söû duïng thuû tuïc seek() ñeå di chuyeån con troû taäp tin ñeán phaàn töû chæ ñònh program thu_tuc_seek;varI,N:integer;Ch:char;F: file of integer;BeginWriteln(‘DI CHUYEN CON TRO DEN TAP TIN THU N ‘);Writeln(‘-----------------------------------------------------------‘);Writeln;Assign(f,’d:\baisoan\songuyen.dat’);Reset(f);Write(‘ can tim phan tu thu ‘);readln(n);Seek(f,(n-1));Read (f,I);Writeln;Write(‘ phan tu thu ‘,n,’ co tri =’,I);Writeln;Writeln(‘CO CAN SUA KHONG ? (C/K) ‘);readln(ch);If ch in [‘C’,c] then Begin

Seek(f,n-1);Write(‘nhap so can sua ‘);readln(I);Write(f,I);

End;Write(‘ da sua va ghi lai vao dia ,bam enter de xem lai ‘);Readln;Seek(f,0);{di chuyeån veà ñænh taäp tin}While not EOF(F) DOBegin

Read (f,I);Writeln(I);

End;Writeln;Seek(f,0);Read (f,I);Writeln(‘phan tu dau tien co tri =’,I);

Bieân soaïn : Tröông vaên Tuyeán 313

Page 314: Pascal 1

GIAÙO TRÌNH PASCAL Trang 314TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGWriteln;Seek(f,filesize(f)-1);Read (f,I)Write(‘Phan tu cuoi cung co tri=’,I);Writeln;Writeln(‘Bam enter ..’);Readln;Close(f);End.

2.THUÛ TUÏC FLUSHThuû tuïc Flush coù taùc duïng laøm roãng vuøng nhôù ñeäm , nghóa laø noäi dung vuøng nhôù ñeäm seõ ñöôïc ghi vaøo ñóa neáu tröôùc ñoù ñaõ söû duïng thuû tuïc Write(filevar,Recvar) keå töø sau laàn caäp nhaät thöù nhaát .Cuù phaùp cuûa thuû tuïc nhö sau :

FLUSH(filevar)Thoâng thöôøng khoâng neân söû duïng thuû tuïc naøy vì toán thôøi giaqn . Tuy nhieân trong moät soá tröôøng hôïp ñeå ñaûm baûo döõ lieäu thöïc söï an toaøn tröôùc khi ñoùng taäp tin , baïn phaûi caàn söû duïng thuû tuïc naøy .3.THUÛ TUÏC TRUNCATE()BAÏN coù theå caét ngaén moät taäp tin baèng thuû tuïc Truncate vôùi cuù phaùp sau :

Truncate(Filevar);Ví duï : caét cuït taäp tin baèng thuû tuïc Truncate();program cat_tap_tin;varf:file of integer;i,j:integer;begin write('CAT TAP TIN BANG THU TUC TRUNCATE'); writeln('---------------------------------'); writeln; assign(f,'d:\baisoan\test.int'); rewrite(f); for i:=1 to 10 do write(f,i); writeln; writeln('DA TAO TAP TIN TEST.INT co 10 so nguyen '); writeln('BAM ENTER de xem noi dung tap tin TEST '); READLN; reset(f); while not EOF(f) do begin read(f,i);write(i); end;

Page 315: Pascal 1

GIAÙO TRÌNH PASCAL Trang 315TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong reset(f); writeln; write('BAM ENTER DE CAT 5 PHAN TU ');readln; reset(f); for i:=1 to 7 do read(f,i); truncate(f); writeln; write('ban da cat 5 phan tu cua tap tin '); write('BAM ENTER DE xem 5 tap tin con lai ');readln; reset(f); while not EOF(f) do begin read(f,i); writeln(i); end; writeln; writeln('bam enter de ket thuc '); readln;end.HAØM 1.HAØM FILESIZE() cuù phaùp : Filesize(Filevar);keát quaû cuûa haøm laø moät soá nguyeân cho bieát chieàu daøi cuûa taäp tin2.Haøm FILEPOS()cuù phaùp : Filepos(Filevar);keát quaû cuûa haøm laø moät soá nguyeân cho bieát vò trí hieän taïi cuûa con troû taäp tin.3.Haøm EOF() cuù phaùp : EOF(Filevar);haøm cho giaù trò laø True neáu vò trí con troû ôû cuoái taâp tinví duï : Chöông trình minh hoaï caùc haøm taäp tin coù kieåu .program ham_tap_tin;varf:file of integer;i,j,k,v:integer;beginwriteln('SU DUNG CAC HAM TAP TIN ');Writeln('----------------------------');writeln;assign(f,'d:\baisoan\test.int');rewrite(f);for i:=1 to 10 do write(f,i);writeln;writeln(' da tao tap tin TEST.INT co 10 so nguyen ');readln;reset(f);

Bieân soaïn : Tröông vaên Tuyeán 315

Page 316: Pascal 1

GIAÙO TRÌNH PASCAL Trang 316TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGwhile not EOF(F) DO BEGIN Read(f,i); writeln(i); END;writeln;k:=filesize(f);writeln('kich thuoc tap tin ',k,' phan tu ');writeln;write(' bam enter de chuyen den phan tu thu 5 ');readln;seek(f,5-1);read(f,i);writeln;writeln(' phan tu thu 5 co vi tri ',i);v:=filepos(f);writeln;writeln('vi tri con tro o phan tu thu ',v);readln;write(' bam enter de xem cac phan tu con lai ');readln;while not EOF(f) do begin read(f,i); writeln(i); end; writeln; if EOF(F) THEN writeln('DA KET THUC TAP TIN ') ELSE writeln('CHUA KET THUC TAP TIN '); writeln('BAM ENTER DE KET THUC ');READLN; close(f);erase(f); end.

end;TAÏO taäp tin môùi vaø nhaäp döõ lieäu cho taäp tin naøy .khoâng söû duïng bieán ñoäng program Hoc_sinh;program Hoc_sinh;uses crt;TYPEHocsinh=RECORDHoten:string[24];van,toan,ly,tb:real;end;varf:file of hocsinh;{-------------------------------------}function fileExists(filename:string):boolean;var g:file;

Page 317: Pascal 1

GIAÙO TRÌNH PASCAL Trang 317TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongbegin {$I-} assign(g,filename);reset(g); close(g); {$I+} fileExists:=(Ioresult=0) and (filename<>' ');

end;{-------------------------------------}procedure WriteSt(X,Y:integer;st:string);begin gotoxy(x,y); write(st);end;{-------------------------------------}function repl(ch:char;N:byte):string;var tam:string; i:byte; begin tam:=' '; for i:=1 to N do tam:=tam+ch; repl:=tam; end;{-------------------------------------}procedure CreateFile;var FName:string[11]; taotaptin:Boolean; begin repeat clrscr; Gotoxy(10,10); writeln('Ten tap tin : '); gotoxy(25,10); readln(FName); Taotaptin:=not FileExists(FName); if taotaptin then begin assign(f,FName); rewrite(f); end else write(5,12,' Tap tin da co tren dia ' +'bam <Enter> tao lai tap tin khac ');

Bieân soaïn : Tröông vaên Tuyeán 317

Page 318: Pascal 1

GIAÙO TRÌNH PASCAL Trang 318TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG readln; until taotaptin; end;

{-------------------------------------}procedure Input(var rec:Hocsinh);var tam:string; result:integer; begin clrscr; writest(10,10,'Ho va ten '); writest(10,11,'Diem van '); writest(10,12,'Diem toan '); writest(10,13,'Diem Ly '); writest(10,15,'Diem Trung binh '); writest(28,10,repl(' ',40)); Gotoxy(28,10); readln(rec.hoten); repeat writest(28,11,repl(' ',10)); gotoxy(28,11); readln(tam); val(tam,rec.van,result); until result=0; gotoxy(28,11); writeln(rec.van:10:2); repeat writest(28,12,repl(' ',10)); gotoxy(28,12); readln(tam); val(tam,rec.toan,result); until result=0; gotoxy(28,12); writeln(rec.toan:10:2); repeat writest(28,13,repl(' ',10)); gotoxy(28,13); readln(tam); val(tam,rec.ly,result); until result=0; gotoxy(28,13); writeln(rec.ly:10:2); rec.tb:=(rec.van+rec.toan+rec.ly)/3; gotoxy(28,15); writeln(rec.tb:10:2);

Page 319: Pascal 1

GIAÙO TRÌNH PASCAL Trang 319TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong

end; {-------------------------------------} procedure Update; var rec:Hocsinh; begin createFile; writest(20,24,'Bam <ESC> DE thoat ,'+ 'bam phim bat ky de tiep tuc ..'); repeat input(rec); write(f,rec);until readkey=#27;close(f);end;{-------------------------------------}procedure khungxuat;begin clrscr; writest(5,1,repl('-',70)); writest(7,2,'Ho va Ten '); writest(25,2,'Diem Van '); writest(35,2,'Diem Toan '); writest(50,2,'Diem Ly '); writest(62,2,'Diem Trung binh '); writest(5,3,repl('-',70));end;{-------------------------------------}procedure DispRec(rec:hocsinh;dong:byte);

begin writest(5,dong,rec.Hoten); gotoxy(22,dong); writeln(rec.van:10:2); gotoxy(34,dong); writeln(rec.toan:10:2); gotoxy(46,dong); writeln(rec.ly:10:2); gotoxy(62,dong); writeln(rec.tb:10:2);end; procedure xuat; var rec:hocsinh; dong:byte; begin

Bieân soaïn : Tröông vaên Tuyeán 319

Page 320: Pascal 1

GIAÙO TRÌNH PASCAL Trang 320TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG khungxuat; dong:=4; reset(f); seek(f,0); while not EOF(F) do begin read(f,rec); dispRec(rec,dong); dong:=dong+1; if dong=23 then begin readln; khungxuat; dong:=4; end; end; close(f);end;{---------------------------------------------------}begin update; xuat; readln;end.Gæa söû khi chaïy chöông trình , baïn goû vaøo taäp tin DIEM.DAT roài nhaäp döõ lieäu cho taäp tin naøy . Khi khoâng muoán nhaäp nöõa , baïn aán phím <ESC> treân maøn hình xuaát hieän baûng thoáng keâ : Hoï teân , caùc ñieåm moân hoïc vaø ñieåm trung bình.Chöông trænh sau ñaây môû taäp tin DIEM.DAT B vaø nhaäp theâm döõ lieäu vaøo cuoái taäp tin naøyVí duï : Môû taäp tin ñaõ co treân ñóa roài nhaäp theâm döõ lieäu vaøo cuoái taäp tin , töông töï nhö leänh APPEND cuûa foxpro .program Hoc_sinh;uses crt;constmax=50;TYPEHocsinh=RECORDHoten:string[24];van,toan,ly,tb:real;end;varf:file of hocsinh;{--------------------------------------------}function FileExists(FileName:string):boolean;var

Page 321: Pascal 1

GIAÙO TRÌNH PASCAL Trang 321TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongg:file;begin {$I-} Assign(g,Filename); reset(g); close(g); {$I+} fileExists:=(IOresult=0) and (filename<>' ');end;{--------------------------------------------}procedure writest(x,y:integer;st:string);begin Gotoxy(x,Y); write(st);end;{--------------------------------------------}function Repl (ch:char;N:byte):string;vartam:string;I:byte;begin tam:=' '; for i:=1 to N do tam:=tam+ch; repl:=tam;

end;{--------------------------------------------}Procedure Openfile;varFName:string[11];cotaptin:boolean;begin repeat clrscr; GotoXy(10,10); write('Ten tap tin '); Gotoxy(25,10); readln(Fname); cotaptin:=FileExists(fname); if cotaptin then begin assign(f,FName); reset(f); seek(f,Filesize(f)); end else

Bieân soaïn : Tröông vaên Tuyeán 321

Page 322: Pascal 1

GIAÙO TRÌNH PASCAL Trang 322TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG begin Gotoxy(5,12); write('Khong co tap tin tren dia '+ 'Cho ten tap tin khac ');

end; until cotaptin;

end;{--------------------------------------------}procedure Input(var rec : hocsinh);vartam:string;result:integer;beginclrscr;writest(10,10,' Ho va ten : ');writest(10,11,' Diem van : ');writest(10,12,' Diem Toan : ');writest(10,13,' Diem Ly : ');writest(10,15,' Diem Trung binh : ');writest(28,10,repl(' ',40));Gotoxy(28,10);readln(Rec.hoten);repeat writest(28,11,Repl(' ',10)); Gotoxy(28,11);readln(tam); val(tam,rec.van,result);until result=0; gotoxy(28,11);writeln(rec.van:10:2);repeat writest(28,12,Repl(' ',10)); Gotoxy(28,12);readln(tam); val(tam,rec.Toan,result);until result=0 ; gotoxy(28,12);writeln(rec.toan:10:2);repeat writest(28,13,Repl(' ',10)); Gotoxy(28,13);readln(tam); val(tam,rec.ly,result);until result=0 ; gotoxy(28,13);writeln(rec.ly:10:2); rec.tb:=(rec.van+rec.toan+rec.ly)/3; Gotoxy(28,15);writeln(rec.tb:10:2);end;{--------------------------------------------}procedure update;var

Page 323: Pascal 1

GIAÙO TRÌNH PASCAL Trang 323TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong Rec:hocsinh; begin Openfile; write(20,24,'Bam ESC de thoat '+ 'bam phim bat ky de tiep tuc...'); repeat Input(rec); Write(f,Rec); until Readkey=#27; close(f); end;{--------------------------------------------}procedure khungxuat;beginclrscr;writest(5,1,repl('-',70));writest(7,2,' Ho va Ten : ');writest(25,2,' Diem van : ');writest(35,2,' Diem Toan : ');writest(50,2,' Diem Ly : ');writest(62,2,' Diem Trung binh : ');writest(5,3,repl('-',70));end;{--------------------------------------------}procedure DispRec(Rec:Hocsinh;dong:byte);beginwritest(5,dong,rec.hoten );Gotoxy(22,dong);writeln(Rec.van:10:2);Gotoxy(34,dong);writeln(Rec.toan:10:2);Gotoxy(46,dong);writeln(Rec.ly:10:2);Gotoxy(62,dong);writeln(Rec.tb:10:2);end;{--------------------------------------------}procedure Xuat;var rec:hocsinh;dong:byte;beginkhungxuat;dong:=4;reset(f);seek(f,0);while not EOF(f) do begin read(f,rec); dispRec(rec,dong); dong:=dong+1; if dong=23 then begin readln;

Bieân soaïn : Tröông vaên Tuyeán 323

Page 324: Pascal 1

GIAÙO TRÌNH PASCAL Trang 324TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG khungxuat;dong:=4; end;

end; close(f);end;{--------------------------------------------}begin Update; xuat; readln;

end.TAÄP TIN KHOÂNG COÙ KIEÅU (Untyped file)Khaùi nieäm : taäp tin khoâng coù kieåu laø taäp tin coù töøng ñôn vò thaønh phaàn la 128 bytes . Moãi laàn ghi vaøo ñóa laø ghi moät soá cuûa 128 bytes.Ví duï moät taäp tin coù kích thöôùc 45,745 bytes thì haøm Filesize(f) cho keát quaû laø 357 töùc laø 357 khoái (block ) töông ñöông vôùi 357x128Töø khaùi nieäm naøy ta coù theå noùi moïi taâp tin ñeàu coù theå coi laø taäp tin khoâng coù kieåu neáu chuùng ta khoâng chuù yù ñeán maët logic cuûa döõ lieäu maø chæ chuù yù ñeán tín chaát vaät lyù cuûa noù .Khai baùo bieán taäp tin khoâng coù kieåu : Ñeå khai baùo taäp tin khoâng coù kieåu , söû duïng cuù phaùp sau :

VAR F:file;

Thuû tuïc ñoïc ghi taäp tin khoâng coù kieåu :Ñeå ghi vaøo ñóa hoaëc ñoïc töø ñóa moät hay nhieàu baûn ghi töø moät taäp tin khoâng coù kieåu , baïn söû duïng caùc thuû tuïc sau :Ghi vaøo ñóa :

BlockWrite(Var f: File; Var Buf; Count : Word [;Var result : Word])

Ñoïc töø ñóa vaøo boâ nhôù :BlockRead(Var f: File; Var Buf; Count : Word [;Var result : Word]) Caùc tham soá cuûa thuû tuïc naøy laø :F: bieán ñaïi dieän cho taäp tin seõ ghi hoaëc ñoïcBuf : Chöùa noäi dung taäp tin seõ ghi hoaëc ñoïc Count : soá löôïng baûn ghi cuûa thao taùc ghi hoaëc ñoïcResult : Chæ soá löôïng baûn ghi ñaõ ñöôïc thöïc hieän ghi hoaëc ñoïc F : laø bieán taäp tin khoâng coù kieåuBuf : laø bieán baát kyø Count : laø bieåu thöùc soá nguyeân xaùc ñònh kích thöôùc 128 bytes ñöôïc truyeàbn giöõa taäp tin treân ñóa vaø bieán Buf . Pheùp truyeàn

Page 325: Pascal 1

GIAÙO TRÌNH PASCAL Trang 325TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongdöõ lieäu baét ñaàu töø vò trí bytes ñaàu tieân daønh cho bieán Buf .Ngöôøi laäp trình caàn phaûi ñaûm baûo raèng bieán Buf chieám ñuû vuøng nhôù caàn thieát cho toaøn boä pheùp truyeàn döõ lieäu . Moãi lôøi goïi thuû tuïc BlockWrite() hoaëc BlockRead cuõng laøm dòch chuyeån con troû taäp tin Count baûn ghi .Tröôùc khi tthöïc hieän caùc thuû tuïc naøy , baïn phaûi thöïc hieän Thuû tuïc Assign () ñeå gaùn teân bieán taäp tin , thuû tuïc Rewrite() ñeå môû moät taäp tin môùi , thuû tuïc Reset() ñeå môû moät taäp tin cuõ . Khi keát thuùc xöû lyù taäp tin cuõng phaûi söû duïng thuû tuïc Close() ñoùng taäp tin ñeå ñaûm baûo an toaøn döõ lieäu .Caùc thuû tuïc vaø haøm chuaån :Caùc thuû tuïc vaø haøm chuaån cuûa taäp tin khoâng coù kieåu ñeàu söû duïng kích thöôùc quy öôùc cuûa moät thaønh phaàn laø 128 bytes töùc laø kích thöôùc cuûa moät baûn ghi ( khoái ) ñöôïc duøng trong caùc thuû tuïc BlockWrite(),BlockRead vaø cho keát quaû töông töï nhö taäp tin coù kieåu .Thuû tuïc Seek();Di chuyeån con troû ñeán taäp tin chæ ñònh Haøm EOF() Xaùc ñònh con troû taäp tin ñaõ chæ vaøo vò trí heát taäp tin hay chöa ?Haøm Filepos()Cho bieát vò trí cuûa con troû taäp tin ñang troû ñeán baûn ghi naøo Haøm Filesize();Chuùng ta coù theå thay ñoåi kích thöôùc ( ñoä lôùn ) cuûa moät khoái baèng caùch khia baùo khi môû taäp tin

Reset( Var f : File ;Size : Word );Trong ñoù size chính laø ñoä lôùn cuûa khoái

Neân khai baùo ñoä lôùn cuûa moät khoái cô baûn trong taäp tin khoâng coù kieåu toång quaùt laø 1 byte vì baát kyø taäp tin naøo cuõng ñeàu coù ñoä lôùn laø boäi soá cuûa 1 CHÖÔNG TRÌNH MINH HOAÏ :Ñeå vaän duïng taäp tin khoâng coù kieåu , chuùng ta thöïc haønh moät soá chöông trình ví duï sau Vieát chöông trình sao cheùp taäp tin gioáng nhö leänh COPY cuûa DOS

program sao_chep_tap_tin;varTof,Frf:file;Tofile,Fromfile:string[50];Numread,Numwritten:word;Buf:array[1..2048] of char;beginwriteln('SAO CHEP TU TAP TIN NGUON SANG TAP TIN DICH ');WRITELN('-----------------------------------');

Bieân soaïn : Tröông vaên Tuyeán 325

Page 326: Pascal 1

GIAÙO TRÌNH PASCAL Trang 326TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGwriteln;write('-Tap tin nguon la : ');readln(fromfile);write('-Tap tin dich la : ');readln(tofile);assign(Frf,Fromfile);Reset(Frf,1);assign(Tof,Tofile);Rewrite(Tof,1);writeln;writeln('Dang chep tap tin : ',Fromfile,' ',Filesize(Frf),' bytes');repeat BlockRead(Frf,buf,sizeof(buf),Numread); BlockWrite(Tof,buf,numRead,NumWritten);until (numread=0) or (Numwritten<>Numread);writeln;close(Frf);close(Tof);end.

VÍ DUÏ : chöông trình ñoïc taäp tin vaên baûn :program doc_tap_tin;varf:file;filename:string;numread:integer;buffer:array[1..80] of char;begin writeln('DOC TAP TIN VAN BAN '); Writeln('------------------------'); writeln; write('TEN TAP TIN CAN DOC ');readln(filename); assign(f,filename);reset(f,80); repeat blockRead(f,Buffer,1,NumRead); Write(buffer); until Numread=0; writeln; writeln; write('Da doc xong , bam <Enter>...'); readln; close(f); end.

end.Khi chaïy chöông trình naøy neáu baïn goû teân taäp tin C:\AUTOEXE.BAT seõ hieån thò ra maøn hình taäp tin naøy gioáng nhö

Page 327: Pascal 1

GIAÙO TRÌNH PASCAL Trang 327TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongleänh TYPE cuûa DOS . Baïn coù theå xem caùc taäp tin vaên baûn (daïng maõ ASCII ) trong caùc thö muïc vaø oå ñóa chæ ñònh{chuong trinh doc tap tin van ban va In ra Ma ASCII cac ky tu duoi dang Hexa}Program doc_tap_tin;varf:File;Filename:string;Numread:integer;Buffer:Array[1..20] of Byte;k:byte;Row:Integer;{------------------------------------}Function Digit(N:byte):string;begin if N < 10 then Digit:=Char(Ord('0')+N) else Digit:=Chr(55+N); end;{------------------------------------}Function Hex(N:byte):string;Begin Hex:=Digit(N div 16)+digit(N mod 16); end;beginwriteln('DOC TAP TIN VAN BAN ');WRITELN('---------------------');writeln;write('Ten tap tin can doc ');readln(filename);assign(f,filename);reset(f,20);row:=0;repeat blockRead(f,Buffer,1,Numread); for k:=1 to 20 do write(' ',Hex(Buffer[k]):2,' '); inc(row); if (row mod 25)=24 then readln; Until Numread=0; write('Da doc xong ,<Enter> '); readln; close(F); end.

Bieân soaïn : Tröông vaên Tuyeán 327

Page 328: Pascal 1

GIAÙO TRÌNH PASCAL Trang 328TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGTAÄP TIN VAÊN BAÛN 1.Khaùi nieäm :khaùc vôùi hai kieåu taäp tin ôû treân , Taäp tin vaên baûn khoâng ñôn giaûn laø moät daõy caùc giaù trò thuoäc cuøng moät kieåu naøo ñoù . Maëc daàu thaønh phaàn cô baûn cuûa taäp tin vaên baûn laø kyù töï , song coù theå ñöôïc caáu truùc thaønh caùc doøng , moãi doøng ñöôïc keát thuùc baèng moät daáu keát thuùc doøng . Daáu hieäu keát thuùc doøng EOLN (End of Line ) goàm 2 kyù töï CR (Carriage Return ) nghóa laø trôû veà ñaàu doøng vaø LF ( Line Feed) nghóa laø xuoáng doøng tieáp theo . Toaøn boä taäp tin seõ keát thuùc baèng daáu keát thuùc taäp tin töùc laø ^Z töùc laø End of File kyù hieäu laø EOF .( Trong baûng ASCII Thì CR coù maõ 13 ,LF coù maõ 10 vaø ^Z TÖÙC Ctrl+Z coù maõ 26 ).Do caùc doøng coù ñoä daøi thay ñoåi neân khoâng theå tính tröôùc ñöôïc vò trí cuûa moät doøng trong taäp tin . Vì leû ñoù caùc taäp tin vaên baûn chæ coù theå xöû lyù theo nguyeân taéc tuaàn töï . maëc khaùc chuùng ta khoâng ñöôïc pheùp thöïc hieän ñoàng thôøi taho taùc ñoïc vaøo vaø ghi ra ñoái vôùi taäp tin vaên baûn .Ví duï coù vaên baûn :

Vi du van ban1234Het

Maùy seõ löu vaøo taäp tin vaên baûn thaønh moât daõy nhö sau :Vi du van ban CR LF 1234 CRLF Het ^Z

Xuoáng doøng Xuoáng doøng Heát taäp tinDo taäp tin vaên baûn ñöôïc toå chöùc thaønh doøng neân vieäc ghi vaøo ñóa (Write ) vaø ñoïc töø ñóa vaøo boä nhôù ( Read ) taäp tin vaên baûn coù theâm thuû tuïc ghi , ñoïc theo doøng laø Writeln( write line ) vaø Readln (Read line ) KHAI BAÙO BIEÀN TAÄP TIN VAÊN BAÛN Moät bieán taäp tin vaên baûn ñöôïc khai baùo baèng caùch söû duïng teân chuaån TEXT nhö cuù phaùp :

VAR Filevar : TEXT

neáu chuùng ta khoâng quan taâm ñeán vieäc toå chöùc thaønh doøng cuûa taäp tin thì coù theå khai baùo

VARFilevar :File of Char;

Ñeå laøm vieäc vôùi taäp tin vaên baûn , tröôùc khi thöïc hieän thao taùc xöû lyù taäp tin , baïn phaûi thöïc hieän caùc thuû tuïc sau :Thuû tuïc Assign(fileVar,Filename );Gaùn teân taäp tin (Filename ) cho bieán taäp tin (Filevar ).Thuû tuïc Rewrite(Filevar);

Page 329: Pascal 1

GIAÙO TRÌNH PASCAL Trang 329TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongMôû moät taâp tin vaên baûn chöa coù treân ñóa ñeå thöc hieän vieäc ghi noäi dung theo caùch tuaàn töï Thuû tuïc Reset(Fielvar );Môû taäp tin vaên baûn ñaõ coù treân ñóa ñeå thöïc hieän ñoïc noäi dung theo töøng doøng Thuû tuïc Close(Filevar );Ñoùng taäp tin vaên baûn , khi coù daáu Ctrl+Z (^Z) seõ ñöôïc töï ñoäng ñaët ôû cuoái taäp tin .THUÛ TUÏC GHI TAÄP TIN VAØO ÑÓA :Ta coù theå duøng thuû tuïc Write hoaëc writeln ñeå ghi vaøo taäp tin vaên baûn vôùi yù nghóa vaø caùch duøng thoâng thöôøng nhö ñaõ bieát (write ghi treân cuøng moät doøng , writeln ghi khaùc doøng ) . Thuû tuïc naøy coøn cho pheùp ghi caû chöõ laãn soá maø khoâng caàn baât cöù pheùp chuyeån ñoåi naøo .Cuù phaùp cuûa thuû tuïc ghi nhö sau :

Write(Filevar ,V1[,V2,..,Vn]);Trong ñoù Filevar laø bieán taäp tin vaên baûn ,V1,..Vn laø caùc bieán chöùa caùc bieán döõ lieäu ghi vaøo taäp tin .Giöõa caùc bieán phaûi caùch nhau moät khoaûng troáng (blank ) . Neáu söû duïng thuû tuïc bwriteln thì seõ ghi vaøo theâm CR LF Vaøo moãi doøng cuûa taäp tin Chöông trình sau ñaây söû duïng thuû tuïc write/Writeln ñeå ghi leân baûng löôïng giaùc cuûa caùc goùc nhoïn vaøo taäp tin vaên baûn ñeå roài coù theå duøng leänh TYPE cuûa DOS ñeå xem noäi dung taäp tin naøy .Ví duï : chöông trình taïo baûng löôïng giaùc caùc goùc vaø ghi vaøo taäp tin BLGIAC.DAT trong thö muïc laøm vieäc cuûa oå ñóa hieän haønh .program bang_luong_giac;CONSTg= '|';varF:Text;k:integer;Rad,S,C,T,CT:Real;{----------------------------------------}Function Replicate(chu:char;Times:Integer):string;var j:Integer; tam:string[80]; begin tam:=' '; for j:=1 to times do tam:=tam+chu; replicate:=tam; end;

Bieân soaïn : Tröông vaên Tuyeán 329

Page 330: Pascal 1

GIAÙO TRÌNH PASCAL Trang 330TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG{----------------------------------------}beginassign(f,'d:\BLGIAC.DAT');Rewrite(f);writeln(f,' *BANG LUONG GIAC *');Writeln(f);writeln(f);writeln(f,Replicate(#205,58));writeln(f,'DO',g,'RADIAN',g,' SIN ',' COSIN ',g,' TAN ',g,' COTANG',g);writeln(f,Replicate(#205,58));for k:=1 to 89 do begin rad:=k*Pi/180; S:=sin(Rad); C:=Cos(Rad); T:=S/C; CT:=1/T; Writeln(f,g,k:2,g,Rad:10:8,g,S:10:8,g,C:10:8,g,T:10:6,g,CT:10:6,g); end; writeln(f,Replicate(#205,58)); flush(f); close(f); end.Sau khi chaïy chöông trình xong , trong thö muïc laøm vieäc cuûa baïn coù taäp tin BLGIAC.DAT. Baïn coù theå duøng leänh TYPE cuûa DOS hayNCTHUÛ TUÏC ÑOÏC TAÄP TIN TÖØ ÑÓA VAØO BOÄ NHÔÙÑoïc taäp tin vaên baûn löu tröõ treân boä nhôù , ta söû duïng thuû tuïc READ coù cuù phaùp sau :

Read(Filevar, V1[,V2,..Vn);Readln(Filevar, V1[,V2,..Vn);

Trong ñoù Filevar laø bieán taäp tin vaên baûn ,V1,V2…Vn laø caùc bieán ñöôïc gaùn döõ lieäu cuûa taäp tin .Thuû tuïc Read ñoïc döõ lieäu treân moät doøng roài gaùn vaøo moät hoaëc nhieàu bieán (Vn) .Sau khi ñoïc xong , con troû khoâng xuoáng doøng . Vôùi thuû tuïc Readln thì sau khi ñoïc xong con troû seõ töï ñoäng nhaûy xuoáng doøng döôùi .program doC_tap_tin;varf:text;line:string[80];n:byte;

Page 331: Pascal 1

GIAÙO TRÌNH PASCAL Trang 331TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongbegin assign(f,'d:\blgiac.dat'); Reset(f); n:=1; while not EOF(f) do begin readln(f,line); writeln(line); n:=n+1; if n>24 then begin n:=1; write('Bam enter de xem tiep ');readln; end; end; writeln; write('BAM ENTER DE KET THUC '); readln; close(f); end.

readln;close(f);end.

Chöông trình sau ñaây löu baûng löôïng giaùc vaøo taäp tin vaên baûn trong ñoù caùc tröôøng phaân caùch nhau bôûi moät daáu troáng (blank)program bang_luong_giac;varF:Text;k:integer;Rad,S,C,T,CT:Real;{----------------------------------------}beginassign(f,'d:\BLGIAC1.DAT');Rewrite(f);writeln(f,' *BANG LUONG GIAC *');writeln(f);for k:=1 to 89 do begin rad:=k*Pi/180; S:=sin(Rad); C:=Cos(Rad); T:=S/C; CT:=1/T;

Bieân soaïn : Tröông vaên Tuyeán 331

Page 332: Pascal 1

GIAÙO TRÌNH PASCAL Trang 332TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG Writeln(f,k:2,' ',Rad:10:8,' ',S:10:8,' ',C:10:8,' ',T:10:6,' ',CT:10:6); end; close(f); end.Chöông trình sau duøng ñeå ñoïc baûng löôïng giaùc coù caùc tröôøng caùch nhau moät khoaûng troáng .program bang_luong_giac;varf:text;k,n:word;rad,S,C,T,CT:REAL;Tde:string;begin assign(f,'d:\blgiac1.dat'); Reset(f); n:=1; readln(f,Tde); writeln(Tde); for k:=1 to 89 dobegin readln(f,k,Rad,s,c,t,ct); writeln(k:2,' ',rad:10:8,' ',S:10:8,' ',C:10:8,' ', T:10:2,' ',CT:10:6);n:=n+1;if n>24 then begin n:=1; write('Bam enter de xem tiep '); readln; end;end; write('BAM ENTER DE KET THUC '); readln; close(f);end.TAÄP TIN VAÊN BAÛN DOS Input : Taäp tin nhaäp cô baûn töông öùng vôùi thieát bò nhaäp cô baûn cuûa heä ñieàu haønh (Thöôøng laø baøn phím ).Output : Taäp tin xuaát cô baûn , thöôøng laø maøn hình -Con : töông öùng Console cuûa baøn phím vaø maøn hình , vöøa coù theå nhaäp , vöøa coù theå xuaát .muoán haäp döõ lieäu töø baøn phím vaø xuaát döõ lieäu ra maøn hình , caû 2 thieát bò naøy coù chung taäp tin laø CON , chuùng ta khai baùo moät bieán taäp tin vaø gaùn chuùng baèng taäp tin ‘CON’ . Ñeå nhaäp döõ lieäu töø baøn phím gaùn chuùng vaøo bieán , chuùng ta

Page 333: Pascal 1

GIAÙO TRÌNH PASCAL Trang 333TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongphaûi môû taäp tin baèng RESET .Ñeå xuaát döõ lieäu ra maøn hình , chuùng ta phaûi môû taäp tin baèng REWRITE .Ñoaïn chöông trình sau ñaây cho chuùng ta nhaäp döõ lieäu töø baøn phím , gaùn vaøo bieán st sau ñoù xuaát bieán st ra maøn hình .program bt;varf:text;st:string;beginAssign(f,'CON');REseT(F);readln(f,st);close(f);Rewrite(f);writeln(f,st);close(f);end.Turbo Pascal cung caáp 2 bieán taäp tin vaên baûn trong UnitSystem laø :Var

Input :Text { thieát bò nhaäp chuaån baøn phím }Output : Text {thieát bò xuaát chuaån maøn hình }

Hai bieán naøy duøng ñeå truy xuaát ñeán baøn phím vaø maøn hình neân khi söû duïng chuùng ta khoâng caàn phaûi gaùn teân bieán vaøo taäp tin . Do ñoù :Var

St:string;Begin

Readln(Input,St) Writeln(output,St);

End.

Turbo Pascal cho pheùp ta söû duïng caùc bieán taäp tin Input vaø Output maø khoâng caàn ghi trong caâu leänh

Var St:string;

BeginReadln(st);Writeln(st);

End.Kbd : töông öùng vôùi baøn phím . Khi thöïc hieän vôùi thuû tuïc Read (kbd,ch) thì ch khoâng xuaát hieän treân maøn hình .-Lst : töông öùng vôùi maùy in neân chæ thöïc hieän thao taùc xuaáttöông töï chuùng ta xuaát döõ lieäu ra maùy in baèng caùc taäp tin vaên baûn vaø gaùn baèng taäp tin coù teân laø ‘PRN’ Hay ‘LPT1’

Var

Bieân soaïn : Tröông vaên Tuyeán 333

Page 334: Pascal 1

GIAÙO TRÌNH PASCAL Trang 334TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

F:text;St:string ;

BeginSt:=’Chuan bi chao don nam 20002’;Assign(f,’PRN’);Rewrite(f);Write(f,St);Close(f);

End.Turbo Pascal cuõng cung caáp bieán taäp tin trong Unit Printer ñeå xuaát döõ lieäu ra maùy In laø

Var LST:text;

Khi muoán xuaát döõ lieäu ra maùy in , chuùng ta coù theå söû duïng bieán naøy maø khoâng caàn phaûi gaùn teân thieát bò In cho bieán .Toùm laïi ñoái vôùi taäp tin chuaån treân , chuùng ta khoâng caàn phaûi thöïc hieän caùc thao taùc : môû ñoùng taäp tin nhö ta vaãn thöôøng thöïc hieän vì Turbo Pascal ñaõ coù saün caùc bieán taäp tin trong caùc Unit ñeå ngöôøi söû duïng caùc thieát bò ñöôïc thuaän lôïiChöông trình In ra maùy in coù gaïch döôùi program bt;uses printer;VARF:text;dong,dongphu:string[255];i:integer;Gachduoi:boolean;FileName:string[11];begin write('MINH HOA TAP TIN THIET BI LST '); Writeln('-----------------------------'); writeln; gachduoi:=false; write('ten tap tin can tim ');readln(fileName); assign(f,filename); reset(f); while not EOF(f) do begin readln(f,dong); dongphu:=' '; for i:=1 to length(dong) do begin if dong[i]<>^s then begin write(lst,dong[i]);{in ra may in } if gachduoi then

Page 335: Pascal 1

GIAÙO TRÌNH PASCAL Trang 335TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong dongphu:=dongphu+'-' else dongphu:=dongphu+''; end else gachduoi:=not gachduoi;

end; writeln(lst,dongphu); writeln(lst); end;end.Chöông trình in baûng löôïng giaùc ra maùy In THUÛ TUÏC VAØ HAØM :Thuû tuïc vaø haøm chuaån :.Thuû tuïc :1.Thuû tuïc setTextBuf();nhö chuùng ta ñaõ bieát ,döõ lieäu ñöôïc löu vaøo taäp tin vaên baûn ôû daïng maõ ASCIIvaø toå chöùc thaønh töøng doøng kyù töï , bieán taäp tin vaên baûn coù ñoä lôùn 256 bytes , nhöng ñeå truy xuaát nhanh chuùng ta coù theå taêng ñoä lôùn cuûa bieán naøy baèng caùch söû duïng thuû tuïc setTextBuf() ñeå ñaêng kyù laïi vuøng nhôù cho bieán taäp tin . Cuù phaùp :

setTextBuf(Var f:text ;var Buf [;size:word]); ñònh ñoä lôùn cuûa bieán f , baïn coù theå khai baùo tröïc tieáp ñoä lôùn nhö sau :

setTextBuf(f,1024);hay baèng ñoä lôùn cuûa bieán khaùc nhö :

Var Buf:array[1..1024] of byte;SetTextBuf(f,Buf);

Löu yù : Thuû tuïc naøy phaûi ñöôïc ñaët tröôùc khi môû taäp tin nhö chöông trình minh hoaï döôùi ñaây :program tao_buffer;varf:text;filename:string[20];ch:char;Buf:array[1..10240] of char;begin write('MINH HOA THU TUC SETTEXTBUF() '); writeln('---------------------------'); writeln; writeln('Cho biet ten tap tin ');readln(filename); setTextbuf(f,buf);

Bieân soaïn : Tröông vaên Tuyeán 335

Page 336: Pascal 1

GIAÙO TRÌNH PASCAL Trang 336TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG reset(f); while not EOF(f) do begin readln(f,ch); write(ch);

end; readln; end.

THUÛ TUÏC APPEND ();Thuû tuïc APPEND() duøng ñeå noái döõ lieäu vaøo cuoái taäp tin cuûa vaên baûn . Cuù phaùp :

Append (Var f: Text );Cô cheá cuûa thuû tuïc naøy goàm : -Môû taäp tin-Ñöa con troû veà cuoái taäp tin . (End of file )-Ghi taäp tin vaø noái theâm döõ lieäu vaøo cuoái taäp tin .duøng thuû tuïc append ñeå noái theâm döõ lieäu vaøo cuoái taäp tin BLGIAC.DATprogram Noi_tap_tin;varf:text;beginwriteln('THU TUC APPEND(); NOI THEM TAP TIN ');Writeln('----------------------------------');writeln;assign(f,'d:\baisoan\blgiac');append(f);writeln(f);writeln(f);{ghi them 2 dong }writeln(f,' Tp Ho Chi Minh , ngay 29/3/2001');writeln(f,' NGUOI LAP TRINH ');writeln(f);writeln(f);writeln(f,' Nguyen Van Keo+Pham Van Cot');close(f);end.

Sau khi chaïy chöông trình naøy , baïn haõy söû duïng chöông trình ñoïc taäp tin BLGIAC seõ thaáy taäp tin naøy ñöôïc noái vaøo cuoái döõ lieäu .HAØM1.Haøm EOLN(); (End of line )Haøm cho keát quaû laø moät trò Boolean;

Page 337: Pascal 1

GIAÙO TRÌNH PASCAL Trang 337TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongTrue : neáu con troû ñang ñöùng ôû daâu keát thuùc doøngFalse : ngöôïc laïi2.Haøm EOF();( End of File )haøm cho keát quaû laø moät trò BooleanTrue : neáu con troû ñang ñíng ôû daâu keát thuùc doøng (^Z )False : ngöôïc laïi .Chöông trình naøy minh hoaï haøm EOF () ; khi nhaäp xong taäp tin , baám enter , noäi dung taäp tin hieån thò treân maøn hình vaø con troû ñònh vò trí keát thuùc taäp tin . Baám <CTR+C> ñeå keát thuùc chöông trinh .Ví duï chöông trinh minh hoaï haøm EOF ();programn ham_Eof;varf:Text;ch:char;Buf:array[1..10240] of char;beginassign(f,paramstr(1));setTextBuf(f,Buf);reset(f);while not EOF() DOBEGINreadln(f,ch);write(ch);END;readln;end.THUÛ TUÏC TRONG UNIT DOS 1.Thuû tuïc GetAttr();Thuû tuïc GetAttr(); cho keát quaû laø thuoäc tính cuûa taäp tin . Trong moåi taäp tin thöôøng coù caùc thuoäc tính (Attribution ) nhö sau :A: (Archive ) löu tröõ , söû duïng cho leänh XCOPY cuûa DOSH:(HIDDEN ) che daâu , khoâng cho hieån thi teân taäp tin khi duøng leänh DIR cuûa DOSS : system heä thoáng R : chæ ñoïc khoâng cho pheùp ghiBaïn coù theå duøng leänh ATTRIB cuûa MS-DOS ñeå xem vaø söõa thuoäc tính cuûa taäp tin vôùi PASCAL baïn coù theå söû duïng GetFAttr() ñeå xem thuoäc tính taäp tin . cuù phaùp :

GetFttr (Var f :text ; Var Attr : Word );Vd 28: chöông trình xem thuoäc tính taäp tin program Xem_thuoc_tinh ;uses Dos;Varf:text;

Bieân soaïn : Tröông vaên Tuyeán 337

Page 338: Pascal 1

GIAÙO TRÌNH PASCAL Trang 338TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONGAttr:Word ;Filename:string[20];begin writeln('THU TUC GETFATTRI '); write('---------------------'); writeln; write('Cho biet ten tap tin ');readln(filename); assign(f,filename); GetFattr(f,attr); writeln(filename); if DosError<>0 then writeln('Ma loi : DosError ') else if Attr And archive <>0 then writeln('Tap tin nay co thuoc tinh luu tru '); if Attr And HIDDEN <>0 then writeln('Tap tin nay co thuoc tinh CHE DAU '); if Attr And ReadOnly <>0 then writeln('Tap tin nay co thuoc tinh Chi doc '); if Attr And sysfile <>0 then writeln('Tap tin nay co thuoc tinh he thong '); if Attr And Directory <>0 then writeln('Day la ten thu muc '); writeln; write('bam ENTER de ket thuc ');readln;end.

HEÄ TOAÏ ÑOÄ :

(0,0) (GetmaxX,0)

(0,getmaxY) (getmaxX,getmaxY);

getmaxX,GetmaxY laø hai haøm cho giaù trò kieåu Integer chæ tung ñoä vaø hoaønh ñoä lôùn nhaát tyreân maøn hìnhVGAHi getmaxX 640 GetmaxY 480program ve_hinh_mau;uses graph;var graphdriver,graphmode:integer;begin GraphDriver:=Detect; InitGraph(GraphDriver,graphMode,'c:\tp\bgi'); setBkcolor(red); putPixel(10,10,Blue);

Page 339: Pascal 1

GIAÙO TRÌNH PASCAL Trang 339TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phong setcolor(Green); Rectangle(50,50,150,100); readln; closegraph;end.Giaûi thích :1 ) yeâu caàu maùy töï tìm cheá ñoä maøn hình thích hôïp2) Khôûi ñoäng cheá ñoä ñoà hoaï cuûa TURBO PASCAL 'c:\tp\bgi' Baùo cho maùy bieát raèng caùc file bgi Ñang ôû thö muïc 'c:\tp\Bgi’3)ñaët maøu neàn laø ñoû4) Chaám moät ñieåm maøu xanh nhaït taïi ñieåm coù toaï ñoä laø (10,10)5)ñaët maøu cho neùt veõ töø nay veà sau laø maøu xanh (Green)6)Veõ hình chöõ nhaät coù toaï ñoä ñænh treân beân traùi (50,50) vaø ñænh döôùi laø (150,100);7)döøng maøn hình chôø nhaán moät phím8)Ñoùng cheá ñoä ñoà hoaï ñöa maøn hình veà cheá ñoä ban ñaàu tröôùc khi khôûi ñoäng cheá ñoä ñoà hoaï

Moät soá thuû tuïc ñeå veõ caùc ñöôøng hình hoïc vaø vieát chöõ Line(x1,y1,x2,y2:integer); : veõ ñöôøng thaúng töø (x1,y1) (x2,y2).Vi duï : line(100,100,200,200);.LINEREL(Dx,Dy:integer);veõ moät ñöôøng thaúng töø vò trí hieän taïi cuûa con troû ñeán ñieåm coù toaï ñoä ñöôïc taêng theâm Dx,Dyví duï : MoveTo(1,2);linerel(100,100) ; {veõ töø (1,2) ñeán (101,102)}LINETO(x,y :integer)Veõ moät ñöôøng thaúng töø ñieåm hieän taïi ñeán ñieåm coù toaï ñoä (x,y);Ví duï : moveto(100,100);Lineto(200,200);CIRCLE(X,Y: INTEGER;r:WORD);VEÕ moät ñöôøng troøn taâm (X,Y) baùn kính RVÍ DUÏ CIRCLE(100,100,20)

PROGRAM thi_du_Do_hoa;uses crt,graph;var gd,gm:integer;begin {doan 1 : Khoi tao } gd:=detect; InitGraph(Gd,Gm,'C:\tp\bgi'); if GraphResult<>grok then halt(1); {Doan 2 :ve } setcolor(Red) ;{xac lap mau ve } moveto(0,0); {doi con tro len goc trai man hinh } lineTo(GeTmaxX,getMaxY); {ve duongh thang } Repeat until KeyPressed ; { cho an phim de giu man hinh lai xem }

Bieân soaïn : Tröông vaên Tuyeán 339

Page 340: Pascal 1

GIAÙO TRÌNH PASCAL Trang 340TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG {doan 3: Ket thuc } closeGraph; {dong che do do hoa lai } readln;

end.Haøm InitGraph(var GrapDreiver,GraphMode :integer;DriverPath:string) ;GraphDriver : laø bieán nguyeân , Chöùa giaù trò xaùc ñònh kieåu maøn hình GraphMode : la tham bieán nguyeân chöùa giaù trò xaùc ñònh cheá ñoä ñoà hoaï DrivePath : tham soá baùo cho PASCAL bieát thö muïc chöùa caùc file ñoà hoaï cuûa Turbo PascalGraphResult : cho bieát tình traïng cheá ñoä khôûi taïo InitGraph .Haøm naøy coù nhieàu giaù trò khaùc nhau ñaõ ñöôïc ñònh saün nhö sau : grOK =0 OK ,KHOÂNG COÙ LOÅIMoveto(x,y :Integer) : Di chuyeån tôùi ñieåm coù toaï ñoä môùi laø X,Y LINETO(X,Y :integer) : laø thuû tuïc veõ ñöôøng thaúng tôùi ñieåm coù toaï ñoä (X,Y)GetMaxX,GetMaxY: ñieåm goùc döôùi beân phaûi Haøm line(x1,y1,x2,y2) veõ 1 ñöôøng thaúng töø ñieåm x1,y1 ñeán ñieåm m2(x2,y2)

Giaù trò

Black Ñen 0Blue Xanh 1Green Xanh laù caây 2Cyan Xanh caåm thaïch 3Red Ñoû 4Magenta Tía 5Brown Naâu 6LightGray Xaùm nheï 7DarkGray Xaùm ñaäm 8LightBlue Xaùm nhaït 9LightGreen

Xanh laù caây nhaït

10

LightCyan

Xanh caåm thaïch nhaït

11

LightRed Hoàng 12LightMagenta

Tía nhaït 13

Yellow Vaøng 14

Page 341: Pascal 1

GIAÙO TRÌNH PASCAL Trang 341TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongWhite Traéng 15SetAllpalette(var palettename) : laø thuû tuïc thay ñoåi toaøn boä maøu trong moät baûng maàu coù teân laø paletttename

uses graph;var Gd,Gm:Integer;Palette:PaletteType;beginGd:=detect;InitGraph(gd,Gm,'c:\tp\bgi');if GraphResult<>grOK then halt(1);line(0,0,getmaxX,getmaxY);with palette dobegin size:=4; colors[0]:=5;{mau nen } colors[1]:=3; colors[2]:=1; colors[3]:=2; setallpalette(palette);end;readln;closegraph;end.

ARC(X,Y: integer;stAngle,EndAngle,radius:word) Veõ 1 cung cuûa 1 ñöôøng troøn taâm (X,Y) baùn kính R töø goùc ñaàu (start Angle ) ñeán goùc cuoái (End Angle)Ví duï arc(100,100,0,90,15);ELLIPSE(X,Y:integer;stAngle,EndAngle;Xradius,Yradius)VEÕ 1 cung ellipse taâm (X,Y) baùn kính ngang Xradius ,baùn kính doïc Yradius , Töø goùc ñaàu Stangle ñeán goùc cuoái EndAngleVí duï ELLIPSE(100,100,0,360,80,30)MOVETO(X,Y):OUTTEXT(S:STRING);Vieát teân maøn hình töø toaï ñoä (X,Y) moät chuoåi kí töï Ví duï : MOVETO(100,100);OUTTEXT(‘TOI THICH HOC PASCAL ‘);SetBKColor(color:word);Color coù theå laø chöõ hoaëc soá Ví duï setBKColor(2) töông ñöôngb vôùi setBKColor(green)GetMaxColorCho bieát soá toái ña maøu coù theå coù cuûa maøn hình Ví duï a:= GetMaxColor;Neáu laø maøn hình EGA thì a:=15Neáu laø maøn hình monochorome thì a:=1SetFillstyle(Pattern:word;Color :word)

Bieân soaïn : Tröông vaên Tuyeán 341

Page 342: Pascal 1

GIAÙO TRÌNH PASCAL Trang 342TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG Xaùc ñònh neùt toâ vaø maøu toâ cho caùc leänh veõ hònh ñaëc pattern coù theå laø chöõ hoaëc soá nhö sau :EmptyFill=0 : toâ baèng maøu neànSolidFill:=1 toâ ñaëcLineFill:=2 : Toâ baèng vaïch ngangBar(x1,y1,x2,y2:integer);Veõ 1 hình chöõ nhaät coù toâ maøu baèng kieåu toâ hieän thôøiVí duï SetFillstyle(1,4);Bar950,50,200,1000 ;Veõ 1 hình chöõ nhaät coù 2 ñænh laø (50,50) ,(200,100) toâ ñaëc maøu ñoûFloodFill (x,y:integer;Border:word);Toâ moät vuøng coù bieân kính xung quanh ñieåm haït gioáng (x,y) baèng kieåu toâ hieän thôøi vôùi maøu bieân ñònh bôûi Border.Ví duï

Setcolor(white);Circle(100,100,80)SetFillstyle(1,4);FloodFill(100,100,white);

Chöông trình veõ Daáu caám hình troøn vaø hình chöõ nhaät program duong_trong;uses graph;var Gd,Gm:integer;begin Gd:=Detect; Initgraph(Gd,Gm,'c:\tp\BGI'); setcolor(white); Circle(100,100,80); setFillstyle(1,1); FloodFill(100,100,white); setFillstyle(1,4); bar(50,80,150,120);readln;closegraph;end.Vieát chöông trình ñoåi maøu maøn hình moät caùch ngaãu nhieân khi coù moät phím ñöôïc baám , neáu baám T thì keát thuùc chöông trình .program Thu_mau_nen;uses crt,graph;var Gd,Gm:integer;C:char;

Page 343: Pascal 1

GIAÙO TRÌNH PASCAL Trang 343TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

Phongbegin Gd:=detect; InitGraph(Gd,Gm,'c:\Tp\Bgi'); randomize; repeat

SetBkcolor(Random(GetMaxColor)); C:=readKey; Until Upcase(C)='T'; closegraph;readln;end.

Veõ caùc thanh hình chöõ nhaät toâ maøu xanh laù caây program Thanh_Chu_nHat;uses crt,graph;var Gd,Gm:integer;i:integer;begin Gd:=detect; InitGraph(Gd,Gm,'c:\Tp\Bgi'); for I:=1 to 10 do begin SetFillstyle(1,2); Bar(I*40,I*40,I*40+100,i*40+50); end;

readln;closegraph;end.

Bt:1) vieát chöông trình veõ taïi giuõa maøn hình moät hình vuoâng caïnh 100-moät hình troøn baùn kính 50-hai ñöôøng thaúng song song-moät hình ellipse toâ soïc-moät hình chöõ nhaät toâ soïc2)haõy vieát moät chöông trình ñeå veõ khoái hình sau (moåi khoái moät maøu )

Bieân soaïn : Tröông vaên Tuyeán 343

Page 344: Pascal 1

GIAÙO TRÌNH PASCAL Trang 344TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG

program Thanh_Chu_nHat;uses crt,graph;var Gd,Gm,centerx,centery:integer;i:integer;begin Gd:=detect; InitGraph(Gd,Gm,'c:\Tp\Bgi'); setbkcolor(red); setcolor(green);rectangle(270,190,370,290);centerx:=getmaxX DIV 2;CENTERY:=getmaxY div 2;setcolor(white);circle(centerx,centery,50);setcolor(blue);line(100,100,200,200);setcolor(cyan);line(200,100,300,200);setcolor(WHITE);MOVETO(CENTERX,CENTERY);outtext('TOI THICH HOC PASCAL ');ellipse(100,100,0,360,80,30);Setfillstyle(2,1);floodfill(100,100,white);Setfillstyle(2,15);bar(150,50,300,100);

readln;closegraph;end.

program Thanh_Chu_nHat;uses crt,graph;var Gd,Gm,centerx,centery:integer;i:integer;begin Gd:=detect; InitGraph(Gd,Gm,'c:\Tp\Bgi'); setbkcolor(black); setcolor(green);centerx:=getmaxX DIV 2;

Page 345: Pascal 1

GIAÙO TRÌNH PASCAL Trang 345TRUNG TAÂM TIN HOÏC DATA : Tel:816046-99 Leâ Hoàng

PhongCENTERY:=getmaxY div 2;line(10,getmaxY,10,0);line(10,getmaxY,getmaxX,getmaxY);setFillstyle(1,4);bar(10,getmaxy,50,320);setFillstyle(2,1);bar(50,getmaxy,90,350);setFillstyle(1,5);bar(90,getmaxy,130,400);setFillstyle(2,6);bar(130,getmaxy,170,160);

setFillstyle(1,11);bar(170,getmaxy,210,200);

readln;closegraph;end.

Truong vaên tuyeán

Bieân soaïn : Tröông vaên Tuyeán 345

Page 346: Pascal 1

GIAÙO TRÌNH PASCAL Trang 346TRUNG TAÂM MAÙY TÍNH DATA : TEL:816046-99 LEÂ HOÀNG PHONG