You are on page 1of 24

môc lôc

Bµi 1 ChuÈn bÞ lËp tr×nh b»ng Turbo Pascal.............................2

Bµi 2 C¸c kiÓu d÷ liÖu trong Turbo Pascal..................................2

Bµi 3 Mét sè c©u lÖnh – Hµm trong Turbo Pascal......................3

Bµi 4 C©u lÖnh lÆp trong turbo pascal......................................3

Bµi 5 Ch¬ng tr×nh con trong Pascal..........................................5

Bµi 6 D÷ liÖu cã cÊu tróc - kiÓu m¶ng.......................................6

Bµi 7 D÷ liÖu kiÓu x©u ký tù.....................................................7

Bµi 8 D÷ liÖu kiÓu b¶n ghi.......................................................14

Bµi 9 D÷ liÖu kiÓu tÖp (File)....................................................19


Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809

Bµi 1 ChuÈn bÞ lËp tr×nh b»ng Turbo Pascal


Nªu thuËt to¸n ®Ó thùc hiÖn c¸c c«ng viÖc sau:
- T×m nghiÖm cña ph¬ng tr×nh bËc nhÊt; t×m nghiÖm cña ph-
¬ng tr×nh bËc II
- In ra c¸c íc sè cña mét sè nguyªn cho tríc
- X¸c ®Þnh mét sè cã ph¶i lµ nguyªn tè hay kh«ng?
- X¸c ®Þnh bé ba sè thùc a,b,c cã ph¶i lµ ®é dµi ba c¹nh cña
tam gi¸c hay kh«ng?

Bµi 2 C¸c kiÓu d÷ liÖu trong Turbo Pascal

1. C¸c c©u lÖnh sau, c©u nµo sai cau nµo ®óng?
Write(‘Hoi Tin Hoc Viet Nam’); Write(‘Co so Tin hoc Hai
Quang’);
Wirte(‘Xin Chao Cac Ban’); Realn(m);
2. KiÓm tra l¹i ch¬ng tr×nh sau sai chç nµo? Söa l¹i cho ®óng.
Var a,b,c:Integer; cc:Char; tong:Real;
Begin
Writeln(‘CHUONG TRINH KIEM TRA KIEN THUC BAI CU’)
Write(‘Moi ban nhap so a: ’); Readln(a);
Write(‘Moi ban nhap so d: ’); Readln(tong);
c:=a+tong; cc:=a; c:=5;
Write(‘Tong hai so tren la: ’,c);
Readln;

Trang 2 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
End.

Bµi 3 Mét sè c©u lÖnh – Hµm trong Turbo Pascal


1. KiÓm tra l¹i ch¬ng tr×nh sau sai chç nµo? Söa l¹i cho ®óng.
Var a,b,c:Integer;
Begin
Writeln(‘CHUONG TRINH KIEM TRA KIEN THUC BAI CU’)
Write(‘Moi ban nhap so a: ’); Readln(a);
Write(‘Moi ban nhap so d: ’); Readln(d);
c:=a+b;
Write(‘Tong hai so tren la: ,c:8:4);
Readln;
End.
2. NhËp vµo ba sè thùc, kiÓm tra ®ã cã ph¶i lµ ®é dµi ba c¹nh
cña tam gi¸c hay kh«ng. NÕu ®óng, thùc hiÖn c¸c c«ng viÖc sau:
- TÝnh chu vÞ, diÖn tÝch cña tam gi¸c ®ã.
- KiÓm tra xem ®ã lµ tam gi¸c c©n hay ®Òu hay vu«ng hay
tam gi¸c thêng.
3. LËp ch¬ng tr×nh gi¶i ph¬ng tr×nh bËc nhÊt.
4. LËp ch¬ng tr×nh t×m nghiÖm cña ph¬ng tr×nh bËc hai.

Bµi 4 C©u lÖnh lÆp trong turbo pascal

1. LËp ch¬ng tr×nh tÝnh c¸c tæng sau:


s1 = 1+2+3+ . . . +n
s2=1+1/2+1/3+ . . . +1/n
Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 3
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
s3= 1-1/2+1/3-1/4 . . . -1/(2n)
s4=1+1/2!+1/3!+ . . . +1/n!
2. LËp ch¬ng tr×nh nhËp vµo mét d·y sè nguyªn d¬ng, tÝnh
tæng c¸c sè ®ã.
3. TÝnh c¸c tæng trong bµi tËp 3 (bµi häc sè 3) víi sai sè epxilon
cho tríc. (0<epxilon<1). Cã kiÓm tra ®iÒu kiÖn nhËp.
4. Dïng cÊu tróc lÆp Repeat . . . Until ®Ó x¸c ®Þnh mét sè
nguyªn nhËp vµo tõ bµn phÝm cã ph¶i lµ sè nguyªn tè hay kh«ng.
5. LËp ch¬ng tr×nh t×m íc chung lín nhÊt vµ béi chung nhá
nhÊt cña hai sè nguyªn d¬ng nhËp vµo tõ bµn phÝm.
6. Mét sè nguyªn d¬ng ®îc gäi lµ sè hoµn h¶o nÕu tæng tÊt c¶
c¸c íc cña nã (trõ nã) b»ng chÝnh nã. ViÕt ch¬ng tr×nh kiÓm tra
mét sè nhËp vµo tõ bµn phÝm cã ph¶i lµ sè hoµn h¶o hay kh«ng?
7. LËp ch¬ng tr×nh in ra mµn h×nh tÊt c¶ c¸c sè nguyªn tè nhá
h¬n mét sè n cho tríc.
8. LËp ch¬ng tr×nh in ra mµn h×nh tÊt c¶ c¸c sè hoµn h¶o nhá
h¬n mét sè n cho tríc.
9. LËp ch¬ng tr×nh nhËp vµo mét sè nguyªn. KiÓm ta xem sè
®ã cã bao nhiªu ch÷ sè, In c¸c ch÷ sè ®ã ra mµn h×nh, mçi ch÷
sè trªn mét dßng.
10. LËp ch¬ng nhËp vµo mét sè tõ 1 ®Õn 7. Cho biÕt thêi kho¸
biÓu cña ngµy ®ã.
11. ViÕt ch¬ng tr×nh tÝnh gi¸ trÞ cña Cos(x) theo c«ng thøc:
x 2 x 4 x 6 x8
Cos(x) = 1 − + − + − 
2! 4! 6! 8!

12. LËp ch¬ng tr×nh gi¶i hÖ ph¬ng tr×nh:

Trang 4 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
a1 x + b1 y + c1 = 0

a 2 x + b 2 y + c 2 = 0

13. ViÕt ch¬ng tr×nh nhËp vµo mét sè nguyªn n tõ bµn phÝm
(0<n<=10). In ra mµn h×nh tõ tiÕng Anh cña sè ®ã.
k
14. TÝnh tæ hîp chËp k cña n ( C n ).

15. In ra mµn h×nh 100 sè ®Çu tiªn cña d· sè Fib«naci.

Bµi 5 Ch¬ng tr×nh con trong Pascal


1. X©y dùng c¸c ch¬ng tr×nh con ®Ó thùc hiÖn c¸c viÖc sau:
- TÝnh giai thõa cña mét sè nguyªn.
- X¸c ®Þnh mét sè cã ph¶i lµ nguyªn tè hay kh«ng?
- X¸c ®Þnh mét sè cã ph¶i lµ sè hoµn h¶o hay kh«ng?
2. Sö dông c¸c ch¬ng tr×nh con ë bµi 1, thùc hiÖn c¸c viÖc sau:
- NhËp vµo mét d·y c¸c sè nguyªn, x¸c ®Þnh sè nµo lµ sè hoµn
h¶o, sè nµo lµ sè nguyªn tè, sè nµo kh«ng ph¶i lµ hoµn h¶o vµ
nguyªn tè.
3. Gi¶i ph¬ng tr×nh bËc hai b»ng c¸ch sö dông ch¬ng tr×nh
con.
4. Sö dông ch¬ng tr×nh con ®· t¹o ë bµi 1, thùc hiÖn c¸c phÐp
tÝnh sau:

 S = 1 + 2! + 3! + 4! . . . +n! (n<=13)

 S = 1 + 1/(2*2!) + 1/(3*3!) + . . . + 1/(n*n!) (n<=13)

 In ra c¸c sè nguyªn tè nhá h¬n 1000

 In ra c¸c sè hoµn h¶o trong kho¶ng 100 ®Õn 1000

 TÝnh tæng c¸c sè nguyªn tè trong kho¶ng 100 ®Õn 500.


Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 5
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
 NhËp vµo mét sè nguyªn trong kho¶ng 10 ®Õn 10000. TÝnh
tæng c¸c ch÷ sè cña sè ®ã. (Sè 9203 cã tæng c¸c ch÷ sè
lµ14).

 TÝnh Sin cña x (®¬n vÞ Radian) theo c«ng thøc:


Sinx = x – x3/3! + x5/5! - . . . . . . . +(-1)n+1x2n+1/(2n+1)!

Bµi 6 D÷ liÖu cã cÊu tróc - kiÓu m¶ng

1. NhËp vµo mét m¶ng mét chiÒu c¸c sè nguyªn. In ra c¸c


phÇn tö cña m¶ng ®ã.
2. NhËp vµo mét m¶ng mét chiÒu c¸c sè nguyªn vµ thùc hiÖn
c¸c c«ng viÖc sau:
- In ra tÊt c¶ c¸c sè nguyªn tè cña m¶ng.
- In ra tÊt c¶ c¸c sè hoµn h¶o cña m¶ng
- TÝnh tæng c¸c phÇn tö cña m¶ng
- TÝnh trung b×nh céng c¶ c¸c phÇn tö lµ sè ch½n
- TÝnh tæng c¸c phÇn tö t¹i vÞ trÝ lÎ
3. NhËp vµo mét m¶ng hai chiÒu c¸c sè thùc, in ra c¸c phÇn tö
cña m¶ng vµ thùc hiÖn c¸c viÖc sau:
- TÝnh tæng c¸c phÇn tö cña m¶ng
- TÝnh tæng c¸c phÇn tö trªn dßng 3
- TÝnh trung b×nh céng c¸c phÇn tö trªn cét 4
4. NhËp vµo hai ma trËn cÊp MxN, tÝnh tæng hai ma trËn ®ã vµ
in ra c¸c phÇn tö cña ba ma trËn trªn.

Trang 6 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
5. NhËp vµo mét ma trËn vu«ng cÊp m c¸c phÇn tö nguyªn. Vµ
thùc hiÖn c¸c c«ng viÖc sau:
- In ra m¶ng míi víi c¸c phÇn tö lµ c¸c sè ®¶o t¬ng øng cña
m¶ng ban ®Çu.
- TÝnh tæng b×nh ph¬ng c¸c phÇn tö trªn ®êng chÐo chÝnh.
- TÝnh tæng nghÞch ®¶o cña c¸c phÇn tö trªn ®êng chÐo
phô.
- TÝnh tæng tÊt c¶ c¸c sè hoµn h¶o cña ma trËn
- TÝnh b×nh qu©n c¸c sè nguyªn tè cña ma trËn
6. NhËp vµo m¶ng mét chiÒu c¸c sè nguyªn, thùc hiÖn c¸c c«ng
viÖc sau:
- TÝnh c¨n bËc hai cña tæng c¸c phÇn tö cã chØ sè chia cho 3
d 2. (m¶ng cã >10 phÇn tö)
- TÝnh tæng c¨n bËc hai cña c¸c phÇn tö cã chØ sè chia cho 4
d 3.
7. NhËp vµo hai tËp hîp c¸c sè thùc (gäi lµ tËp A vµ tËp B), mçi
tËp hîp cã Ýt nhÊt lµ 5 phÇn tö.
- X¸c ®Þnh giao cña hai tËp hîp A vµ B
- X¸c ®Þnh hîp cña hai tËp hîp trªn.
- X¸c ®Þnh phÇn bï cña B trong A (HoÆc A trong B)

Bµi 7 D÷ liÖu kiÓu x©u ký tù


1. Kh¸i niÖm:
D÷ liÖu kiÓu x©u ký tù (chuçi) lµ mét m¶ng bao gåm mét sè
(kh«ng qu¸ 255) c¸c ký tù (Character). Sè ký tù tèi ®a cña mét
chuçi do ngêi lËp tr×nh ®Þnh nghÜa (Khai b¸o).

Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 7
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
1.1 C¸ch khai b¸o
+ Khai b¸o gi¸n tiÕp:
Type Tenkhieu = String[n];
Var Tenbien: Tenkieu;
Trong ®ã, String lµ tõ kho¸; n lµ ®é dµi tèi ®a cña chuçi stn;
1<=n<=255. Trêng hîp n=255 ta kh«ng cÇn ph¶i khai b¸omµ ta
chØ cÇn khai b¸o víi tõ kho¸ String;
+ Khai b¸o trùc tiÕp:
Var st:String[n].
Khi gÆp khai b¸o nh trªn, ta ®îc chuçi st, cã ®é dµi tèi ®a lµ n ký
tù. NÕu nhËp d÷ liÖu cho chuçi st mµ nhiÒu h¬n n ký tù, Pascal sÏ tù
®éng c¾t bá c¸c ký tù ë vÞ trÝ n+1.
1.2 Truy xuÊt vµ truy nhËp d÷ liÖu kiÓu chuçi
V× chuçi ký tù lµ lµ mét m¶ng bao gåm mét sè ký tù nªn ta cã
thÓ coi ®©y lµ mét m¶ng c¸c phÇn tö kiÓu Character ®Ó truy
nhËp ®Õn tõng ký tù cña chuçi nh c¸ch truy nhËp, truy xuÊt cña
m¶ng mét chiÒu. Ngoµi ra, th«ng thêng ta truy nhËp, truy xuÊt
biÕn kiÓu chuçi ký tù th«ng qua tªn biÕn.
VÝ dô:
Var st:String[100];{st:array[1..100] Of Char;}
{Var st:array[1..100] of char}
Begin
St:= ‘Cong hoa’;
Write(‘Chuoi st cua ban la:’ ,st);
Write(‘Ky tu thu ba cua chuoi do la: ‘,st[3]);
St[2]:=’a’;
Write(‘Chuoi st moi la: ‘,st);

Trang 8 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
Readln;
End.
2. C¸c phÐp to¸n trªn chuçi ký tù
2.1 PhÐp g¸n
Ta cã thÓ thùc hiÖn phÐp g¸n trong chuçi ký tù nh c¸c kiÓu d÷
liÖu kh¸c.
VÝ dô: st:=‘Hello’;st1:=‘Pascal’; st2:=’I’’ m a teacher’;
Chó ý:
H»ng chuçi ký tù ®îc ®Æt gi÷a cÆp dÊu nh¸y (‘’). DÊu nh¸y
trong chuçi h»ng ®îc ký hiÖu b»ng hai dÊu nh¸y (‘’); Trong vÝ dô
trªn, chuçi st2 cã gi¸ trÞ lµ: I’ m a teacher.
2.2 PhÐp ghÐp nèi chuçi
Pascal cho phÐp ngêi lËp tr×nh cã thÓ ghÐp nãi c¸c chuçi ng¾n
thµnh mét chuçi dµi theo thø tù c¸c chuçi ghÐp nèi.
VÝ dô:
St1:= ‘Hello’;st2:= ‘How are you?’
St:=st1+ ‘ ’+st2;
Khi ®ã, chuçi st cã gi¸ trÞ lµ: ‘Hello How are you?’
(§Ó ghÐp nèi chuçi, Pascal dïng to¸n tö + ).

2.3 PhÐp so s¸nh chuçi


Pascal dïng b¶ng m· ASCII ®Ó so s¸nh c¸c ký tù cïng vÞ trÝ trong
hai chuçi víi nhau.
VÝ dô:
St:=’ABCD’; st2:=’ABCD’ th× st=st2.

Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 9
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
St:=’ABCD’;st1:=’ABDC’ th× st<st1.
St=’ABCD’; st1=’ABCDA’ Th× st<st1.
St:=’ABCD’;st1:=’aBCD’ th× st<st1.
3. Mét sè thñ tôc, hµm trªn chuçi ký tù.
3.1 Hµm x¸c ®Þnh ®é dµi chña chuçi
Tªn hµm: Length
D¹ng hµm: Length(st);
KÕt qu¶: Cho ®é dµi thùc cña chuçi st.
3.2 Hµm sao chÐp chuçi ký tù
Tªnhµm: Copy
D¹ng hµm: Copy(st,m,n);
KÕt qu¶: Cho mét chuçi cã n ký tù, lÊy tõ ký tù thø m chña chuçi
st.
VÝ dô:
Var st,st1:=string[200];
Begin
St:=’ABCDEF’;
Write(‘Do dai cua chuoi st la: ’, Length(st));
St1:=Copy(st,3,2);
Write(‘Chuoi s1 co gia tri la: ‘,st1);
Readln;
End.
3.3 Thñ tôc xo¸ mét sè ký tù trong chuçi
Tªn thñ tôc: DELETE

Trang 10 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
D¹ng thñ tôc: Delete(st,m,n);
KÕt qu¶: Xo¸ ®i n ký tù cña chuçi st, tõ vÞ trÝ thø m.
VÝ dô: st:=’ABCDEFGH’;
Delete(st,3,4);
Write(st);
3.4 Thñ tôc chÌn thªm mét sè ký tù vµo chuçi
Tªn thñ tôc: INSERT
D¹ng thñ tôc: Insert (st1,st2,n);
KÕt qu¶: ChÌn chuçi st2 vµo chuçi st1, t¹i vÞ trÝ n (cña chuçi st1)
VÝ dô:
St1:= ‘ABCGH’; st2:= ‘DEF’;
Insert(st1,st2,4);
Write(st1);
3.5 Thñ tôc ®æi sè thµnh chuçi
Tªn thñ tôc: STR
D¹ng thñ tôc: Str(n,st);
KÕt qu¶: §æi sè n thµnh chuçi st víi c¸c ký tù cña chuçi nµy lµ
tÊt c¶ c¸c ch÷ sè cña sè n.
VÝ dô:
N:=12345; Str(n,st);{12345=>’12345’}
Write(st);{st=’12345’}
Write(st[3]);

3.6 Thñ tôc ®æi chuçi sè thµnh sè

Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 11
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
Tªn thñ tôc: VAL
D¹ng thñ tôc: Val(st,n,code);
KÕt qu¶: §æi chuçi sè st thµnh sè n. NÕu ®æi ®îc, Code cã gi¸
trÞ b»ng 0. NÕu kh«ng ®æi ®îc, Code cã gi¸ trÞ b»ng vÞ trÝ cña ký
tù sai trong chuçi st; n b»ng 0.
VÝ dô:
Val(‘123.45’,m,n);{m=123.45}
K:=m+15;{k=138.45}
Write(m:8:2, k:8:2);{In ra sè 123.45 vµ 138.45}
Val(‘123.34.45’,m,n); {cho: n=7; m=0)
K:=m+10;{k=10;}
Write(k);
Lu ý:
- NÕu sö dông khai b¸o chuçi ký tù trong danh s¸ch ®èi sè cña
CTC th× ta phai khai b¸o b»ng ®Þnh nghÜa kiÓu cho chuçi
ký tù cÇn sö dông ë ch¬ng tr×nh chÝnh bëi tõ kho¸ TYPE.
VÝ dô:
Type ht20=String[20];
Var st,st1:ht20;
Procedure Thutc( var xau:ht20;m,n:integer);
......
(C¸ch sö dông: Procedure Thutuc(Var
xau:string[20];m,n:Integer); lµ sai)

Bµi tËp

Trang 12 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
1. ViÕt ch¬ng tr×nh nhËp vµo mét x©u ký tù. KiÓm tra xem ®ã
cã ph¶i lµ x©u sè hay kh«ng?
2. Mét chuçi ®îc gäi lµ Paladom nÕu chuçi ®ã ®èi xøng qua g-
¬ng. LËp ch¬ng tr×nh nhËp vµo mét chuçi ký tù, kiÓm tra xem
chuçi ®ã cã ph¶i lµ chuçi Paladom hay kh«ng?
3. NhËp vµo danh s¸ch tªn cña mét líp häc sinh. S¾p xÕp danh
s¸ch ®ã theo Alfabet cña tªn.
4. NhËp vµo mét sè nguyªn trong kho¶ng 10 ®Õn 1000. §äc sè
®ã.
VÝ dô: NhËp sè 9203 th× ®äc ra lµ sè ChÝn ngh×n hai tr¨m linh
ba.
TÝnh tæng c¸c ch÷ sè cña sè ®ã ( sè 9203 cã tæng c¸c ch÷ sè
lµ 14).
5. ViÕt ch¬ng tr×nh nhËp vµo mét x©u ký tù gåm c¸c tõ. LËp
mét thñ tôc ®Ó lo¹i bá c¸c ký tù trèng v« nghÜa.
6. ViÕt ch¬ng tr×nh nhËp vµo mét x©u tõ bµn phÝm. H·y ®Õm
trong x©u ®ã cã bao nhiªu tõ? (Tõ lµ mét d·y liªn tôc c¸c ký tù
kho¸c kho¶ng tr¾ng).
7. ViÕt ch¬ng tr×nh In ra mµn h×nh mét dßng ch÷ ch¹y liªn tôc
tõ ph¶i qua tr¸i mµn h×nh cho ®Õn khi gâ mét phÝm bÊt kú.
8. NhËp mét x©u S tõ bµn phÝm. X©u S gåm n sè thùc ®îc viÕt
c¸ch nhau bëi dÊu phÈy, vÝ dô S= ‘1.23,3.45,-0.85,9.098,-5.78’. H·y
chuyÓn c¸c sè tõ x©u S vµo m¶ng sè thùc A[n].
9. NhËp tõ bµn phÝm mét x©u ký tù S. XÐt xem cã hay kh«ng
mét x©u X (cã ®é dµi nhá nhÊt) sao cho S lµ ghÐp cña mét sè lÇn
liªn tiÕp tõ X. VÝ dô: S = ‘abcabcabcabc’ th× X = ‘abc’; cßn nÕu S
= ‘abcac’ th× kh«ng cã x©u X. Th«ng b¸o kÕt qu¶ ra mµn h×nh.

Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 13
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
10. NhËp tõ bµn phÝm hai x©u S1 vµ S2. XÐt xem cã hay
kh«ng mét x©u X sao cho c¶ S1 vµ S2 ®Òu lµ ghÐp cña mét sè lÇn
liªn tôc tõ x©u X (cã ®é dµi nhá nhÊt). Thån b¸o kÕt qu¶.
11. NhËp vµo tõ bµn phÝm hai x©u S1 vµ S2. H·y xÐt xem cã
hay kh«ng S1 (S2) cã ®îc nhËn tõ S2 (S1) b»ng c¸ch g¹ch ®i mét sè
ký tù hay kh«ng?

Bµi 8 D÷ liÖu kiÓu b¶n ghi

1. Kh¸i niÖm - ®Þnh nghÜa


C¸c kiÓu d÷ liÖu cã cÊu tróc ta ®· ®îc häc (M¶ng, x©u) ®Òu
®îc t¹o b»ng tËp hîp c¸c phÇn tö cã cïng kiÓu chuÈn. Trong thùc tÕ
chóng ta cÇn c¸c cÊu tróc mµ trong ®ã, c¸c phÇn tö cña nã thÓ cã
kiÓu d÷ liÖu kh¸c nhau nhng cã liªn kÕt víi nhau. §Ó t¹o ®îc kiÓu
cÊu tróc ®ã, Turbo Pascal ®Þnh nghÜa cho ta B¶n ghi (hay cßn gäi
lµ thÎ ghi - RECORD). Nãi c¸ch kh¸c, ®Ó m« t¶ mét ®èi tîng mµ c¸c
phÇn tö d÷ liÖu cã m« t¶ kiÓu kh¸c nhau trong Turbo Pascal, ta dïng
cÊu tróc kiÓu RECORD. Nh vËy RECORD lµ mét ph¬ng tiÖn linh
ho¹t nhÊt ®Ó x©y dùng c¸c kiÓu d÷ liÖu míi.
2. M« t¶ - khai b¸o
§Ó m« t¶ kiÓu B¶n ghi trong Turbo Pascal, ta dïng tõ kho¸
RECORD, tiÕp theo lµ danh s¸ch m« t¶ c¸c phÈn tö d÷ liÖu (sau
nµy ®îc gäi lµ Trêng (Field)). M« t¶ kiÓu RECORD bao giê còng ®-
îc kÕt thóc b»ng tõ kho¸ END;
§Ó khai b¸o mét kiÓu T, cã cÊu tróc RECORD víi danh s¸ch c¸c
trêng cã tªn lµ t1,t2,t3, . . ., tn vµ cã m« t¶ kiÓu t¬ng øng lµ K1, K2,
K3, . . ., Kn, ta cã c¸ch viÕt tæng qu¸t sau:
TYPE
T = RECORD

Trang 14 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
t1: K1;
t2: K2;
t3: K3;
.......
tn: Kn;
END;
VÝ dô: Mét ®Þa chØ nhµ bao gåm c¸c d÷ liÖu: Sè nhµ, tªn phè,
tªn thµnh phè, tªn TØnh; ta m« t¶ mét kiÓu RECORD cã tªn lµ
Dia_chi nh sau:

TYPE
Dia_chi = RECORD
So_nha: Integer;
Ten_Pho: String[30];
Ten_TPho: String[15];
Ten_Tinh: String[20];
END;
§Ó m« t¶ thêi gian (DATE), ta cã 3 trêng: Ngµy, Th¸ng vµ n¨m, ta
m« t¶ nh sau:
TYPE
DATE = RECORD
Ngay: 1 . . 31;
Thang: 1 . . 12;
Nam: Integer;
END;

Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 15
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
TYPE
Nhansu = RECORD
Hoten: String[35];
Ngaysinh: DATE;
Diachi: Dia_chi;
Heso,lc: Real;
END;
3. Truy xuÊt – truy nhËp
§Ó truy xuÊt – truy nhËp ®Õn tõng trêng cña mét RECORD, ta
dïng tªn biÕn B¶n ghi, sau ®ã ®Õn dÊu chÊm (.) vµ tªn trêng.

VÝ dô:
VAR
Nguoi, nguoi1: Nhansu;
BEGIN
Write(‘Mêi nhËp Hä vµ tªn : ’);Readln(Nguoi.Hoten);
Write(‘Mêi nhËp N¨m sinh: ’); Readln(Nguoi.Ngaysinh.nam);
Writeln(‘Mêi nhËp ®Þa chØ: ’);
Write(‘ Sè nhµ: ’); Readln(Nguoi.Diachi.So_nha);
Write(‘ Tªn phè: ’); Readln(Nguoi.Diachi.Ten_pho);
Write(‘ Thµnh phè: ’); Readln(Nguoi.Diachi.Ten_Tpho);
Write(‘ TØnh: ’); Readln(Nguoi.Diachi.Ten_Tinh);
Write(‘Mêi nhËp hÖ sè l¬ng: ’);Readln(Nguoi.heso);
Nguoi.lc:=Nguoi.heso*290000; Nguoi1:=Nguoi;

Trang 16 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
...............................................
END.
4. C©u lÖnh With
D¹ng lÖnh:
With <BienBanghi> Do <LÖnh>;
VÝ dô:
VAR
Nguoi, nguoi1: Nhansu;
BEGIN
With Nguoi Do
Begin
Write(‘Mêi nhËp Hä vµ tªn : ’);Readln(Hoten);
With Ngaysinh Do
Begin
Write(‘Mêi nhËp N¨m sinh: ’); Readln(nam);
End;
With Diachi Do
Begin
Writeln(‘Mêi nhËp ®Þa chØ: ’);
Write(‘ Sè nhµ: ’); Readln(So_nha);
Write(‘ Tªn phè: ’); Readln(Ten_pho);
Write(‘ Thµnh phè: ’); Readln(Ten_Tpho);
Write(‘ TØnh: ’); Readln(Ten_Tinh);
End;
Write(‘Mêi nhËp hÖ sè l¬ng: ’);Readln(heso);

Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 17
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
lc:=heso*290000;
End;
Nguoi1:=Nguoi;

With Nguoi, Ngaysinh Do


Begin
Ngay:=15; Thang:=10; Nam:=1980;
End;
...............................................
END.

Bµi tËp
1. ViÕt ch¬ng tr×nh nhËp vµo hä tªn, §iÓm To¸n, Lý, Ho¸ vµ
trung b×nh cña häc sinh mét líp. Trong ®ã trung b×nh =
(§iÓm to¸n + ®iÓm lý + ®iÓm ho¸)/3.
a) In danh s¸ch theo thø tù t¨ng dÇn cña ®iÓm trung b×nh.
b) In danh s¸ch theo thø tù t¨ng dÇn cña Tªn.
c) In danh s¸ch häc sinh cã ®iÓm trung b×nh tõ 5 trë lªn.
d) In danh s¸ch häc sinh giái. Häc sinh giái lµ häc sinh cã ®iÓm
trung b×nh trªn 8 vµ ®iÓm c¸c m«n ph¶i tõ 7 trë lªn.
e) In danh s¸ch häc sinh ph¶i kiÓm tra l¹i tõng m«n.
Ghi chó: Mçi häc sinh ph¶i ®îc in trªn mét dßng víi ®Çy ®ñ c¸c
trêng. C¸c gi¸ trÞ cïng mét trêng ph¶i th¼ng trong mét cét.

Trang 18 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
Bµi 9 D÷ liÖu kiÓu tÖp (File)
1. Khai b¸o

• Khai b¸o b»ng m« t¶ kiÓu:

Type Kieu_TepT = FILE OF KPT;


Var Biªntep: Kieu_TepT;

• Khai b¸o trùc tiÕp:

Var Biªntep: FILE OF KPT;


VÝ dô:
TYPE
Nhansu = RECORD
Hoten:String[35];
Namsinh: Integer;
Quequan: String[50];
End;
Var f1: FILE OF Integer; f2: FILE OF Real;
f3: FILE OF Boolean; f4: FILE OF Nhansu;
f5: FILE OF Char; f6: FILE OF Array[1..30] Of Real;
2. CÊu tróc vµ ph©n lo¹i tÖp
CÊu tróc cña mét tÖp phô thuéc vµo kiÓu phÇn tö cña tÖp (TÊt
c¶ c¸c phÇn tö cña tÖp ph¶i cã cïng mét kiÓu phÇn tö). C¸c phÇn tö
®îc s¾p xÕp thµnh mét d·y (nh cuén phim mµ mçi ¶nh lµ mét phÇn
tö). Mçi tÖp ®Òu ®îc kÕt thóc bëi mét dÊu hiÖu ®Ó b¸o hÕt tÖp lµ
EOF(F) (End Of File). Pascal cã hµm chuÈn kiÓu Boolean (Hµm
EOF) víi tham sè lµ biÕn tÖp ®Ó kiÓm tra xemm con trá tÖp ®· ë

Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 19
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
vÞ trÝ cuèi cïng hay cha. NÕu con trá cha ë cuèi th× hµm cã gi¸ trÞ
lµ FALSE.
ViÖc ph©n lo¹i tÖp ®îc dùa trªn viÖc bè trÝ c¸c phÇn tö cña tÖp
trong bé nhí ngoµi vµ c¸ch truy cËp vµo tÖp: TÖp truy cËp tuÇn
tù (B¨ng tõ)vµ TÖp truy cËp ngÉu nhiªn (§Üa tõ, ®Üa quang).
3. Më tÖp míi ®Ó lu d÷ liÖu
§Ó t¹o mét tÖp ®Ó lu d÷ liÖu, Pascal dïng 02 thñ tôc ®i liÒn
nhau theo thø tù:
ASSIGN(Bien_Tep, Ten_Tep);
REWRITE(Bien_Tep);
§Ó ghi d÷ liÖu vµo tÖp, ta dïng lÖnh WRITE, víi có ph¸p nh sau:
Write(Bien_Tep, Danh s¸ch c¸c gi¸ trÞ cÇn ghi vµo);
Bíc cuèi cïng cña viÖc ghi d÷ liÖu vµo tÖp lµ ph¶i ®ãng tËp
b»ng thñ tôc CLOSE(Bien_Tep);
Chó ý: C¸c gi¸ trÞ ®îc ghi vµo ph¶i cã cïng kiÓu víi kiÓu phÇn
tö cña tÖp. Khi mét tÖp ®îc më ®Ó ghi th× tÖp ®ã lµ tÖp rçng,
nÕu tÖp ®ã ®· tån t¹i th× tÖp cò sÏ bÞ xo¸. V× vËy, cÇn kiÓm tra
sù tån t¹i cña mét tÖp tríc khi më ®Ó ghi.
VÝ dô: §Ó ghi c¸c sè nguyªn tõ 10 ®Õn 100 vµo mét tÖp cã tªn
lµ SONGUYEN.DAT, ta dïng ®o¹n ch¬ng tr×nh nh sau:
PROGRAM TAO_TEP;
VAR i:Integer;
f: FILE OF Integer;
BEGIN
ASSIGN(f, “SONGUYEN.DAT”);
REWRITE(f);

Trang 20 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
For i:=10 to 1000 do Write(f,i);
CLOSE(f);
End.
Mét tÖp cã thÓ lµm tham sè cña CTC víi lêi khai b¸o b¾t buéc
ph¶i sau tö kho¸ Var. Tøc lµ tÖp ®îc dïng lµm tham biÕn.
4. §äc d÷ liÖu tõ tÖp ®· cã
§Ó ®äc d÷ liÖu tõ mét tÖp, Pascal dïng 02 thñ tôc ®i liÒn nhau
theo thø tù:
ASSIGN(Bien_Tep, Ten_Tep);
RESET(Bien_Tep);
§Ó ®äc d÷ liÖu tõ tÖp, ta dïng lÖnh READ, víi có ph¸p nh sau:
Read(Bien_Tep, Danh s¸ch c¸c biÕn cÇn lÊy gi¸ trÞ);
Chó ý: C¸c biÕn ®îc lÊy gi¸ trÞ ph¶i cã cïng kiÓu víi kiÓu phÇn
tö cña tÖp. Ta chØ cã thÓ ®äc gi¸ trÞ cña tÖp ®Ó g¸n vµo c¸c biÕn
vµ chØ cho c¸c biÕn mµ th«i. Tríc khi ®äc d÷ liÖu ph¶i kiÓm tra
xem con trá tÖp ®· ë cuèi tÖp hay cha. NÕu cha ë cuèi tÖp th× míi
®äc ®îc. NÕu trá tÖp ®· ë cuèi tÖp mµ vÉn cè t×nh ®äc th× sÏ
g©y ra lçi.
Sau khi ®äc tÖp xong nªn ®ãng tÖp l¹i nh viÖc ghi d÷ liÖu vµo
tÖp b»ng thñ tôc CLOSE(Biªn_Tep).
VÝ dô: §Ó ®äc c¸c sè nguyªn vµ in ra mµn h×nh c¸c gÝ trÞ cña
nã tõ tÖp cã tªn lµ SONGUYEN.DAT, ta dïng ®o¹n ch¬ng tr×nh nh
sau:
PROGRAM TAO_TEP;
VAR i:Integer;
f: FILE OF Integer;

Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 21
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
BEGIN
ASSIGN(f, “SONGUYEN.DAT”);
RESET(f);
While NOT EOF(f) do
Begin Read(f,i); Write(i:8); End;
CLOSE(f);
End.
5. TÖp truy cËp trùc tiÕp
Ta cã thÓ dïng lÖnh SEEK(Bien_Tep,No), víi No lµ sè thø tù cña
phÇn tö trong tÖp (PhÇn tö ®Çu tiªn cña tÖp ®îc ®¸nh sè lµ 0).
6. C¸c CTC xö lý tÖp trong Pascal
FileSize (Bien_Tep): Hµm cho biÕt sè phÇn tö cña tÖp.
FilePos(Bien_Tep): Hµm cho biÕt vÞ trÝ hiÖn thêi cña con trá
tÖp.
Erase(Bien_Tep): Thñ tôc xo¸ tÖp trªn ®Üa ®îc Ên ®Þnh víi
Bien_Tep.
Rename(Bien_Tep,Ten_Tep): Thñ tôc ®æi tªn tÖp ®îc Ên ®Þnh
víi Bien_Tep thµnh tÖp míi cã tªn lag Ten_Tep.
7. TÖp v¨n b¶n
Trong Pascal cã mét kiÓu tÖp ®· ®îc ®Þnh nghÜa tríc, ®ã lµ
tÖp v¨n b¶n ®îc ®Þnh nghÜa víi tõ kho¸ TEXT.
Khai b¸o: Var f,f1,f2: TEXT;

• §Ó ghi d÷ liÖu vµo tÖp v¨n b¶n ta cã thÓ sö dông mét


trong ba c¸ch sau:
Write(Bien_Tep, Danh s¸ch c¸c gi¸ trÞ);

Trang 22 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
Writeln(Bien_Tep, Danh s¸ch c¸c gi¸ trÞ);
Writeln(Bien_Tep);
Lu ý: Trong danh s¸ch c¸c gi¸ trÞ ®ã kh«ng ®îc cã biÕn kiÓu
cÊu tróc.

• §Ó ®äc d÷ liÖu tõ tÖp v¨n b¶n ta cã thÓ sö dông mét trong


ba c¸ch sau:
Read(Bien_Tep, Danh s¸ch c¸c BiÕn);
Readln(Bien_Tep, Danh s¸ch c¸c BiÕn);
Readln(Bien_Tep);
8. C¸ch kiÓm tra tÖp khi më
§Ó biÕt ®îc mét tÖp khi më ®· tån t¹i hay cha, ta dïng ®o¹ ch-
¬ng tr×nh sau:
ASSIGN(Bien_Tep,Ten_Tep);
{$I-} {ChuyÓn viÖc kiÓm tra Vµo/Ra cho ngêi dïng}
Reset(Bien_Tep);
If (IOResult=0) then Write(‘TÖp nµy ®· tån t¹i’);
{$I+}

Bµi tËp
1. ViÕt ch¬ng tr×nh ghi vµo mét tÖp c¸c sè nguyªn ®îc nhËp
tõ bµn phÝm.
2. ViÕt ch¬ng tr×nh ghi d÷ liÖu vµo mét tÖp T3 chøa c¸c sè
nguyªn b»ng c¸ch ghÐp nèi hai tÖp sè nguyªn T1 vµ T2.
3. ViÕt ch¬ng tr×nh ®Õm sè ch÷ c¸i trong mét tÖp v¨n b¶n.
4. ViÕt ch¬ng tr×nh ®Õm sè tõ trong mét tÖp v¨n b¶n

Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan Trang 23
ChÝ HiÕu
Trung t©m tin häc minh trÝ  75 B¹ch liªu -
Vinh
 038 3556012 - 0904 778809
5. Cho mét tÖp v¨n b¶n ®· cã s½n. ViÕt ch¬ng tr×nh ®Õm sè
lÇn xuÊt hiÖn cña mét ch÷ c¸i trong tÖp v¨n b¶n ®ã.
6. ViÕt ch¬ng tr×nh qu¶n lý c¸n bé trong mét c¬ quan. Trong
®ã, ch¬ng tr×nh cho phÐp thªm c¸n bé, cËp nhËt d÷ liÖu
cña mét c¸n bé nµo ®ã vµ cã thÓ In ra danh s¸ch c¸n bé.
Híng dÉn: Ch¬ng tr×nh qu¶n lý c¸n bé gåm c¸c th«ng tin sau:
Thø tù, hä tªn, n¨m sinh, hÖ sè l¬ng. Sö dông c¸c Modul ch¬ng
tr×nh (CTC) ®Ó thùc hiÖn c¸c c«ng viÖc: Thªm, bít, CËp nhËt, In
danh s¸ch.

Trang 24 Ng«n ng÷ lËp tr×nh Turbo PASCAL - Biªn so¹n: Phan
ChÝ HiÕu

You might also like