YOMEDIA
ADSENSE
Giáo trình Tin học đại cương part 9
83
lượt xem 12
download
lượt xem 12
download
Download
Vui lòng tải xuống để xem tài liệu đầy đủ
Chu_hoa: Set of 'A'..'Z'; Var tuoi : t; Chu_in: chu_hoa; - Khai báo tr c ti p trong khai báo bi n Var Tên_bi n: Set of Ki u_ph n_t ; Ví d : Type mau=(do,xanh,vang,tin,nau); hinh=(tam_giac,tron,chu_nhat); Var mau_ao: Set of mau; hinh_ve: set of hinh; chu_so: 1..9; 3.3- Xây d ng m t t p Xây d ng m t t p b ng cách li t kê các ph n t c a t p, chúng ñư c cách nhau b i d u ph y và ñư c vi t trong d u móc vuông ( [...
AMBIENT/
Chủ đề:
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Giáo trình Tin học đại cương part 9
- Chu_hoa: Set of 'A'..'Z'; Var tuoi : t; Chu_in: chu_hoa; - Khai báo tr c ti p trong khai báo bi n Var Tên_bi n: Set of Ki u_ph n_t ; Ví d : Type mau=(do,xanh,vang,tin,nau); hinh=(tam_giac,tron,chu_nhat); Var mau_ao: Set of mau; hinh_ve: set of hinh; chu_so: 1..9; 3.3- Xây d ng m t t p Xây d ng m t t p b ng cách li t kê các ph n t c a t p, chúng ñư c cách nhau b i d u ph y và ñư c vi t trong d u móc vuông ( [ ]) . T p r ng là t p không ch a m t ph n t nào, ñư c vi t là [] [1..99] ; t p này có 100 ph n t . [ 2,4,6,8..12]; t p có các ph n t là 2,4,6,8,9,10,11,12. ['a'..'d',' m','n'] ; t p này có các ph n t 'a', 'b', 'c', 'd', 'm', 'n'. [xanh,do,tim,vang]; Các ph n t c a t p cũng có th cho b ng bi n ho c bi u th c. [2*i+j, i*j-2] ; n u i=2 và j=3 thì t p có các ph n t là 7, 4. Ta ñư c dùng ki u kho ng con ñ ch ra các ph n t c a t p. 3.4- Các phép toán trên t p a. Phép gán Gán m t t p cho bi n ki u t p. Ví d var chu: Set of 'A' .. 'Z'; tuoi: Set of 1..200; Khi ñó có th th c hi n các phép gán sau: chu:=['A', 'C'', 'M' . .'P']; tuoi:=[50..80, 90,100]; T p r ng có th ñem gán cho m i bi n ki u t p khác nhau. Chu:=[]; tuoi:=[]; Không th gán các t p ki u cơ b n không tương thích. Ch ng h n n u gán chu:=[1..10] là sai. b. Phép h p Phép h p ñư c kí hi u b ng d u + H p c a 2 t p là m t t p có các ph n t thu c hai t p. Ví d A:=[1,3,5..10]; B:=[2,4,6,8]; C:=[1,5,9]; D:=A+B; t p D s là [1..10] E:=B+C; t p E s là [1,2,4,5,6,8,9] c. Phép giao 153 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 153
- Phép giao ñư c kí hi u b ng d u * Giao c a 2 t p là 1 t p có các ph n t là các ph n t chung c a c 2 t p. M:=A*B; t p M s là [6,8] N:=B*C; t p N=[] d. Phép hi u Phép hi u ñư c kí hi u b ng d u -. Hi u c a 2 t p là 1 t p ch a các ph n t thu c t p th nh t nhưng không thu c t p th 2. G:=A - B ; t p G s là [1,3,5,7,9,10] H:=C - A; t p H s là t p r ng. e. Phép thu c v Phép thu c v kí hi u là IN Phép thu c v cho bi t 1 ph n t hay 1 t p có thu c v 1 t p khác không ?, k t qu c a phép thu c v là giá tr ki u boolean (True ho c False). 1 In A; k t qu là true. B in A; k t q a là False. C in A; k t qu là True; Phép so sánh =, , = Hai t p ñem so sánh ph i cùng ki u. K t qu c a phép so sánh là giá tr ki u boolean. - Hai t p b ng nhau (=) n u chúng có các ph n t như nhau t ng ñôi m t. Ví d : x:=['a' . .'d']; y:=['a' .. 'd', 'e', 'f']; z:=['a', 'b', 'c', 'd'] x=y; k t qu là False. x=z; k t qu là True. - Hai t p là khác nhau () n u chúng có ít nh t 1 c p ph n t khác nhau. x y ; k t qu là True; x z ; k t qu là False. - T p th nh t = y; k t qu là False. 3.5- Các chương trình v t p Bài toán : T o m t t p ch a các s có t i ña là 2 ch s nguyên dương< 256 chia h t cho 7, in t p ñó ra. Sau ñó nh p 1 s b t kỳ ki m tra xem nó có thu c vào t p ñó không. Chương trình Program thao_tac_tap; uses crt; var a: set of 1..99; i,n: byte; lap: char; Begin clrscr; 154 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 154
- { Tao tap cac so chia het cho 7 } a:=[]; for i:=7 to 255 do if (i mod 7) = 0 then a:=a+[i]; { In t p } Writeln(' Tap cac so chia het cho 7'); for i:=7 to 255 do if i in a then writeln(i); { Kiem tra so nhap thuoc tap chi het cho 7} Repeat write(' Nhap so bat ky '); Realn(n); if i in a then writeln('Chia het cho 7') else witeln('Khong chia het cho 7'); Write(' Co tiep tuc khong (C/K) ? '); readln(lap); Until upcase(lap)= 'K'; readln; end. Bài t p chương 4 Hãy vi t chương trình cho các bài toán sau: 1. Cho dãy s sau: a1,a2,....,an . Vi t chương trình tìm ph n t l n nh t, ph n t nh nh t c a dãy s ñó. 2. Cho dãy s sau: a1,a2,....,an . Vi t chương trình s p x p dãy theo th t tăng d n . 3. Cho dãy s sau: a1,a2,....,an . Vi t chương trình ñ m s ph n t dương và xoá ñi ph n t th m trong dãy (m
- CHƯƠNG V CHƯƠNG TRÌNH CON: HÀM VÀ TH T C 1 - C u trúc c a hàm và th t c 1.1- Chương trình con Khi l p trình g p ño n chương trình c n dùng nhi u l n, ñ tránh vi t l p l i thì ño n chương trình ñó ñư c t ch c thành chương trình con và m i khi c n g i t i chương trình con ñó. M t khác khi xây d ng chương trình cho các bài toán l n, ph c t p, ñ d cho vi c thi t k chương trình, hi u ch nh chương trình, g r i khi ch y chương trình, bài toán l n ñư c phân thành các ph n nh , m i ph n xây d ng thành các chương trình con. Chương trình chính s g i t i các chương trình con . Trong Pascal có 2 lo i chương trình con ñó là hàm ( Function) và th t c (Procedure). a - C u trúc c a hàm ( Function) và l i g i hàm Hàm có c u trúc ñ y ñ như sau: • Function Tên_hàm(Tham_s 1 : ki u; Tham_s 2: ki u; Var tham_s 3: ki u;. . .): ki u; Label {Khai báo các nhãn } Const { Khai báo các h ng } Type {ð nh nghĩa các ki u d li u c a ngư i s d ng } Var { Khai báo các bi n c c b } ... Begin . . . { Thân chương trình con } Tên_hàm:= Giá_tr ; End; Các ph n n u có thì theo ñúng th t ñã nêu. Ki u c a tham s là các ki u cơ b n, ki u có c u trúc như ki u xâu kí t và ki u mang, n u là ki u m ng thì ph i khai báo b ng ñ nh nghĩa ki u ph n ñ nh nghĩa khi u ñ u chương trình chính, không ñư c khai báo tr c ti p. Ki u c a hàm có th là các ki u cơ b n, ki u xâu kí t . Các tham s khai báo trong hàm ñư c g i là tham s hình th c. • L i g i hàm Trong thân chương trình chính s d ng hàm ph i có l i g i hàm. L i g i hàm ñư c vi t như sau: Tên_hàm( danh sách các tham s th c s ) Các tham s th c s tương ng c v s lư ng và c v ki u d li u v i các tham s hình th c khai báo trong hàm. L i g i hàm ñư c coi như 1 bi n, có th tham gia vào bi u th c, tham gia vào các th t c vào/ ra. Ví d 1: Chương trình có xây d ng Function Bài toán : Tính di n tích c a tam giác bi t 3 c nh a,b,c. 156 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 156
- Chương trình Program Tinh_dien_tich; uses crt; var a,b,c : real; Function DT(x,y,z : real) : real; var s,p : real; begin p:=(x+y+z)/2; s:=sqrt(p*(p-a)*(p-b)*(p-c)); DT:=s; end; begin { than chuong trinh chinh } clrscr; a:=2;b:=3;c:=2; writeln(' dien tich tam giac 1 = ', DT(a,b,c):8:2); write('Nhap 3 canh c a tam giac a,b,c: '); readln(a,b,c); writeln(' dien tich tam giac 2 = ', DT(a,b,c):8:2); readln; end. - Hàm ñ t v trí sau khai báo bi n trong chương trình chính và trư c thân chương trình chính. - Ch ñư c g i t i hàm sau khi ñã khai báo hàm. - Ơ ví d 1 ta khai báo hàm có tên là DT có ki u real, các tham s hình th c c a hàm là: x,y,z. Trong thân chương trình có 2 l i g i hàm, chúng ñ u n m trong l nh Writeln. Trong l i g i hàm th nh t, 3 tham s th c s là a=2, b=3, c=2. Trong l i g i hàm th hai, 3 tham s th c s là a,b,c có giá tr ñư c nh p vào t bàn phím. b - C u trúc c a th t c (Procedure) và l i g i th t c Th t c có c u trúc ñ y ñ như sau: • Procedure Tên_th _t c(Tham_s 1 : ki u; Tham_s 2: ki u; Var tham_s 3: ki u;. . .); Label {Khai báo các nhãn } Const { Khai báo các h ng } Type { ð nh nghĩa các ki u d li u c a ngư i s d ng } Var { Khai báo các bi n c c b } Begin . . . { thân chương trình con } End; Các ph n n u có thì theo ñúng th t ñã nêu. Ki u c a tham s là các ki u cơ b n, ki u có c u trúc như ki u xâu kí t và ki u mang, n u là ki u m ng thì ph i khai báo b ng ñ nh nghĩa ki u ph n ñ nh nghĩa khi u ñ u chương trình chính, không ñư c khai báo tr c ti p. Trong chương trình chính th t c ñ ng trư c thân chương trình chính, sau khai báo bi n. Các tham s khai báo trong hàm ñư c g i là tham s hình th c. • L i g i th t c Trong thân chương trình chính s d ng th t c ph i có l i g i th t c L i g i th t c ñư c vi t như sau: Tên_th _t c( danh sách các tham s th c s ); 157 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 157
- Các tham s th c s tương ng c v ki u và s lư ng v i các tham s hình th c khai báo trong th t c. L i g i th t c như 1 câu l nh ñ ng ñ c l p. Ví d 2: chương trình có xây d ng Procedure Bài toán: Tính t ng và trung bình c ng c a dãy s a1, a2, . . ., an . Chương trình Program Tinh_tong_tb; uses crt; type mang= array[ 1 .. 50 ] of real ; var i,n: integer; a: mang; tg,tb: real; Procedure tong(m: integer; x: mang; var s, p : real); Var j: integer ; t: real; begin t:=0; For j:=1 to m do t:=t + x[j] ; s:= t; p:=t/m; end; begin { than chuong trinh chinh } clrscr; write(' nhap so phan tu cua day n '); readln(n); for i:= 1 to n do begin write(a[', i, ']=' ); readln(a[i]); end; tong(n,a,tg,tb); writeln(' tong= ', tg: 8: 2, 'trung binh = ', tb: 8: 2 ); readln; end. 1.2 - S khác nhau gi a hàm và th t c - Hàm cho 1 giá tr thông qua tên hàm. Tên hàm trong l i g i hàm ñư c coi như m t bi n có th tham gia vào bi u th c, các th t c vào ra. Cu i thân hàm ph i có l nh gán giá tr cho tên hàm. - Tên th t c không cho 1 giá tr nào c . - Các tham s vi t sau tên hàm, sau tên th t c ñư c g i là tham s hình th c. Tham s hình th c có 2 lo i: + Tham s không có t khoá Var ñi kèm trư c g i là tham tr . + Tham s có t khóa Var ñi kèm trư c g i là tham bi n. - Trong hàm thư ng ch a các tham tr , ít khi ch a các tham bi n. Trong th t c thư ng có các tham bi n. - Các tham s trong l i g i hàm, l i g i th t c g i là tham s th c s . Các tham s th c s ph i tương ng v s lư ng và ki u v i các tham s hình th c. Các tham s th c s tương ng vơí các tham tr ñ ch a các d li u vào. Các tham s th c s tương ng vơí các tham bi n ñ ch a k t qu c a th t c. - Hàm l y k t qu tên hàm, th t c l y k t qu các tham s th c s tương ng v i các tham bi n. 158 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 158
- - Như v y n u ñ l y 1 k t qu ta có th t ch c hàm ho c th t c. N u mu n l y nhi u hơn 1 k t qu thì ph i t ch c chương trình con d ng th t c. 2 - Bi n toàn c c, bi n c c b và truy n d li u 2.1 - Bi n toàn c c Bi n toàn c c là bi n khai báo ñ u chương trình chính. Bi n toàn c c t n t i su t th i gian làm vi c c a chương trình . Bi n toàn c c có th s d ng c trong chương trình chính và chương trình con. Ví d 1 m c 1 (tính di n tích tam giac) có a,b,c là bi n toàn c c. Ví d 2 m c 1 ( tính t ng và trung bình) có i, n, a, tg, tb là bi n toàn c c. 2.2 - Bi n c c b Bi n c c b là các bi n ñư c khai báo ñ u chương trình con. Bi n c c b ñư c c p phát b nh khi chương trình con ñư c g i t i và b xoá khi ra kh i chương trình con. Bi n c c b ch ñư c dùng trong chương trình con. Bi n toàn c c và bi n c c b có th trùng tên nhau nhưng chương trình v n phân bi t 2 bi n khác nhau. Trong ví d 1 m c 1 (tính di n tích tam giác) có s, p là bi n c c b . Trong ví d 2 muc 2 ( tính t ng và trung bình) có j, t là bi n c c b . 2.3 - Truy n d li u Khi g p l i g i chương trình con máy s th c hi n các bư c sau: - C p phát b nh cho các tham s và cho các bi n c c b trong chương trình con. - Truy n giá tr c a các tham s th c s cho tham tr và truy n ñ a ch cho các tham bi n. - Th c hi n các l nh trong thân chương trình con. - Th c hi n xong chương trình con máy gi i phóng các tham s và các bi n c c b , r i tr v chương trinh chính. 3 - Tính ñ quy c a chương trình con Trong Function và Procedure có th có l i g i t i chính nó. Tính ch t này ñư c g i là tính ñ qui. Phương pháp ñ qui ñư c áp d ng cho các bài toán thu t gi i mang tính ñ qui. Thuât gi i ñ qui làm cho chương trình ng n g n, ñ p ñ nhưng l i t n th gian tính toán và b nh . Có nh ng bài toán ch có th gi i quy t ñư c b ng xây d ng các chương trình con ñ quy. Ví d 1: Bài toán tính giai th a - Trư ng h p suy bi n: n! = 1 khi n=0 - Trư ng h p t ng quát: n! = (n-1)! . n khi n >= 1 Có th xây d ng hàm Giaithua có tính ch t ñ qui như sau: Function Giaithua( n: longint): longint ; begin 159 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 159
- if n=0 then Giaithua:= 1 else Giaithua:= Giaithua(n-1) * n ; end; * Mu n xây d ng ñư c chương trình con ñ qui ta ph i xác ñ nh ñư c 2 trư ng h p: - Trư ng h p suy bi n , ñó là trư ng h p ñ c bi t mà xác ñ nh ñư c giá tr c a hàm. - Trư ng h p t ng quát l n th n ñư c tính d a vào l n th (n-1). Ví d 2: Tìm ư c s chung l n nh t c a 2 s x và y có th ñư c ñ nh nghĩa như sau (x>y): USCLN(x,y)= x n u y=0 ( ñây là trư ng h p suy bi n) USCLN(x,y)= USCLN( y, ph n dư c a x/y) n u y0 ( ñây là trư ng h p t ng quát). Trong hàm xây dưng v i x>y, n u y>x thì chương trình tráo ñ i giá tr gi x và y. Hàm USCLN ñư c vi t như sau: Function USCLN(x,y: integer) : integer ; Var t:Integer; Begin If y>x then begin t:=x; x:=y; y:=t; end; if y=0 then USCLN:= x else USCLN := USCLN(y, x mod y) ; end; 4. M t s chương trình con c a turbo pascal Pascal ñã xây d ng s n m t s hàm và th th c, Ta có th g i t i các hàm, th t c ñó theo ñúng quy cách c a nó ñ s d ng. Ngoài các hàn và th t c ñã xét các ph n trên, trong ph n này b sung thêm m t s th t c sau ñây: * Procedure GotoXY(Xpos, YPos); ðưa con tr (cursor) c a màn hình v v trí có to ñ Xpos và Ypos trên màn hình. Xpos, Ypos ki u s nguyên. * Procedure ClrScr; Xoá toàn b màn hình và ñ t con tr vào v trí phía trên, bên trái. * Procedure ClrEof; Xoá toàn b các kí t bên ph i con tr màn hình. Sau khi xoá con tr v n t i ch . * Procedure Deline; Xoá toàn b dòng màn hình ch a con tr , sau ñó d n các dòng dư i lên. * Procedure InsLine; Xen m t dòng tr ng vào màn hình t v trí con tr . * Procedure LowVideo và NormVideo; Sau khi g i LowVideo m i kí t vi t ra màn hình ñ u có ñ sáng y u ñi cho t i khi g i th t c NormVideo (Normal Video). * Procedure Delay(Time); T o ra th i gian tr Time (kho ng ms). Time là m t s nguyên. Delay thư ng ñư c dùng ñ làm ch m chương trình l i cho ta quan sát, kh o sát... * Procedure Sound(F) và NoSound; 160 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 160
- T o ra dao ñ ng âm thanh v i t n s là F (F: s nguyên) cho ñ n khi ta g i NoSound; Bài t p chương 5 1. Vi t chương trình tính t h p ch p m c a n ph n t : Cmn Chương trình vi t có chương trình con. 2. Vi t chương trình tính Pn(x)=(. . . ( ( an*x+an-1 )*x+an-2 )*x+. . . +a1)*x+a0 Chương trình có chương trình con. 3. Cho dãy s sau: a1,a2,....,an . Vi t chương trình tính t ng, trung bình c ng các ph n t c a dãy s ñó. Chương trình vi t có chương trình con. 4. L p chương trình tính di n tích và chu vi c a các hình: Tam giác bi t 3 c nh a,b,c, hình ch nh t bi t hai c nh a,b, hình tròn bi t bán kính. Ch n hình ñ tính thông qua câu h i ' Ban tính cho hình gì TG=1, CN=2, TR =3 '. Chương trình vi t có s d ng chương trình con. 5. Cho hai s nguyên x1 và x2, l p chương trình nh p x1 và x2 t bàn phím, s d ng tính ñ quy c a chương trình con ñ tìm ư c s chung l n nh t c a x1 và x2. 161 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 161
- CHƯƠNG VI KI U D LI U CÓ C U TRUC: KI U B N GHI VÀ KI U T P 1 - Ki u b n ghi (record) 1.1 - Khái ni m Ki u b n ghi là m t ki u d li u có c u trúc g m m t s c ñ nh các ph n t có ki u khác nhau. Ki u b n ghi dùng ñ mô t các d li u có nhi u thành ph n khác ki u liên k t v i nhau như d li u c a các b ng, các c t c a b ng là các thành ph n, m i c t có m t ki u d li u khác nhau, các c t liên k t v i nhau ñ bi u di n m t n i dung nh t ñ nh. Ví d 1: B ng lương bao g m các c t: S th t , H và tên, Ngày sinh, H s , Lương, B o hi m xã h i, T ng lĩnh. M i dòng c a b ng lương thu c ki u d li u b n ghi. Các c t là các thành ph n còn ñư c g i là các ph n t . 1.2 - Khai báo ki u d li u b n ghi Ki u d li u b n ghi có các ph n t liên k t v i nhau. Ph n t ñư c g i là trư ng, m i trư ng có m t tên, tên trư ng gi ng như tên bi n. M i trư ng thu c m t ki u d li u nào ñó. Khi báo ki u d li u b n ghi ñư c vi t trong c m t record ... end; Trong c m t là danh sách tên các trư ng kèm theo sau là ki u d li u c a nó. Khai báo ki u b n ghi như sau: Type Tên_ki u= Record Tên_trư ng1 : ki u; Tên_trư ng2 : ki u; ... Tên_trư ngN : ki u; End; Ví d 1: B ng lương trong ví d m c 1 ñư c khai báo như sau: Type bang_luong = record Stt : Integer; Hoten : String[25]; Ns : String[10]; Heso,Luong,Bhxh,Tong : Real; End; Var luong1,luong2:bang_luong; Ví d 2: Danh sách khách hàng bao g m các d li u như h và tên, s nhà, ph , qu n, Thành ph , s ñi n tho i. Type khach_hang = record hoten : string[25]; sonha : string[20]; Pho, quan, thanhpho : string[30]; tel : longint; end; Var Bangkh1,bangkh2: khach_hang; 162 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 162
- 1.3 - S d ng b n ghi • M t trư ng c a b n ghi coi như 1 bi n, ñư c s d ng trong các bi u th c và các th t c vào ra. • M t trư ng c a b n ghi ñư c ch ñ nh b ng cách vi t sau: Tên_bi n.Tên_trư ng Ví d luong1.stt:=1; luong1.hoten:='Le Thu Ha'; luong1.luong:=luong1.heso * 210000; bangkh1.pho:='Hang Dao'; bangkh1.tel:=8573980; Readln(luong2.hoten); Writeln(banghk2.pho); Bi n b n ghi không ñư c tham gia vào các bi u th c, các th t c vào ra, các toán t logic, các toán t quan h >, >=,
- ngày nh p, s lư ng, ñơn giá, ti n c a t t c các m t hàng ñã nh p. Sau cùng in ra t ng s ti n ñã nh p. Chương trình Program Thong_ke_hang; uses crt; Type hang=record ten: string[20]; Ngay: string[10]; sl,gia,tien : real; end; Var bang:array[1..30] of hang; i,n: integer; tong: real; begin clrscr; Write)'Nhap so luong mat hang n ? '); readln(n); tong:=0; for i:=1 to n do with bang[i] do begin Write(' Tên hang '); readln(ten); Write(' Ngay nhap '); readln(ngay); Write(' So luong '); readln(sl); Write(' Gia '); readln(gia); tien:=sl * gia; tong:=tong+tien; end; Writeln(' Bang thong ke hang nhap'); Writeln('| Ten hang':20,'| Ngay nhap':12,'| So luong':12,'| Don gia':12,'| Tien':12 ); for i:= 1 to n do with bang[i] do Writeln(ten:20, ngay:12, sl:12:2, gia:12:2, tien:12:2); writeln; writeln('Tong so tien la: ', tong: 15:2); readln; end. 2 - Ki u t p (File) 2.1 - Khái ni m t p T p d li u là t p h p các d li u có liên quan v i nhau và ñư c nhóm l i v i nhau t o thành m t dãy, ñư c lưu tr trên b nh ngoài ví d như ñĩa t . Các ph n t c a t p cùng ki u, ñư c lưu tr k ti p nhau, khi làm vi c v i các ph n t c a t p có con tr t p. Khi m i m t p con tr t p tr vào ph n t ñ u tiên c a t p. Cu i t p có d u k t thuc t p kí hi u là eof(t p). Các ph n t c a t p f như sau: M i ô là m t ph n t c a t p. Cu i t p là d u k t thúc t p eof(f) (end of file) 164 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 164
- eof(f) Con tr t p (c a s t p) ch vào ph n t ñ u Ph n t i K t thúc t p Có th có các lo i t p sau: • - T p ñ nh ki u. - T p văn b n ( Text) - T p không ñ nh ki u Trong các ph n sau ch xét t p ñ nh ki u và t p văn b n. • T p và m ng có nh ng ñi m gi ng và khác nhau sau ñây: * ði m gi ng nhau gi a t p và m ng : t p h p các ph n t cùng ki u. * ði m khác nhau gi a t p và m ng : M ng khai báo v i s ph n t xác ñ nh, còn t p v i s ph n t không xác ñ nh, t p có th ch a s ph n t tuỳ ý theo dung lư ng trên ñĩa. 2.2 - Các cách truy nh p t p * Truy nh p tu n t và truy nh p ng u nhiên: - Truy nh p tu n t : Vi c ñ c m t ph n t b t kỳ c a t p b t bu c ph i tu n t ñi qua các ph n t trư c ñ y. Còn mu n thêm m t phân t vào t p ph i thêm vào cu i t p. Ki u truy nh p này ñơn gi n trong vi c t o t p, x lý t p, song nó kém linh ho t - Truy nh p t p tr c ti p( direct access ): Có th truy nh p vào b t kỳ ph n t nào trong t p thông qua ch s th t c a ph n t trong t p. Tuỳ theo t ng b nh ngoài mà có th truy nh p tr c ti p ñư c hay không, như ñĩa t có th truy nh p tr c ti p ñư c, còn băng t ch có th truy nh p tu n t không truy nh p tr c ti p ñư c. Như v y trong truy nh p tr c ti p có th ñ c b t kỳ ph n t nào, thêm ph n t m i thì ph i thêm vào cu i t p. 2.3 - Khai báo t p ñ nh ki u Khai báo t p ñ nh ki u dùng c m t sau: File of ki u_ph n_t ; • Khai báo ki u t p: Type tên_ki u = File of ki u_ph n_t ; • Khai báo bi n têp: Var tên_bi n : File of ki u_ph n_t ; Ví d 1 type t= file of integer; var f1,f2 : t; Ví d 2: type bang= record ten: string[25]; Ns: string[10]; Que: string[30]; luong,bhxh:real; end; var f1,f2,f3: file of bang; 2.4 - T o t p ñ ghi d li u * M t p ñ ghi d li u Dùng 2 th t c ñi li n nhau theo th t như sau: - Th t c Assign Assign(bi n_têp, tên_t p); 165 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 165
- Th t c này gán tên_t p cho bi n_t p. Tên_t p theo ñúng qui t c ñ t tên trong DOS mà ta ñã h c ph n trên. - Th t c Rewrite Rewrite(bi n_t p); Th t c này th c hi n vi c m t p ñ ghi. Ví d : M t p có tên là ‘songuyen.dat’ gán cho bi n t p f ñ ghi d li u ta vi t như sau: Assign(f,’songuyen.dat’); Rewrite(f); Sau khi m t p xong thì t p chưa có ph n t nào, t p r ng. Con tr t p ( c a s t p ) tr vào cu i t p (eof) . N u tên_t p trùng v i t p ñã có thì t p ñó s b xoá. * Ghi d li u vào t p dùng th t c Write Write(bi n_t p, bi u_th c1, bi u_th c2, . . ., bi u_th c n); Các bi u_th c ph i có giá tr cùng ki u v i ki u c a t p. Giá tr c a các bi u th c s ñư c ghi vào t p theo như th t ñã vi t. Write(f, 2, 4, 6, i*j+3); * ðóng t p b ng th t c Close Close(bi n _t p); * Các ví d chương trình t o t p ñ ghi d li u Bài toán 1: T o t p có tên là ‘songuyen.dat’ ghi các s nguyên dương
- trang: longint; tacgia: string[25]; end; Var i,n : integer; f: file of tin; nhap: tin; Begin clrscr; assign(f, ‘sach.dat’); rewrite(f); write(‘ Nhap so sach n : ‘); readln(n); for i:= 1 to n do begin with nhap do begin write(‘Ten sach : ‘); readln(ten); write(‘Nam xuat ban : ‘); readln(nam); write(‘So trang : ‘); readln(trang); write(‘Ten tac gia : ‘); readln(tacgia); end; write(f, nhap); end; close(f); end. 2.5 - ð c d li u t t p ñã có * M t pñ ñ c M t p ñ ñ c dùng 2 th t c ñi li n nhau theo th t sau: - Th t c Assign assign(bi n_t p, tên_t p); - Th t c Reset Reset(bi n_t p) ; Th t c này th c hi n m t p ñ ñ c. Ví d 1: M t p ‘songuyen.dat’ g n v i bi n t p f ñ ñ c d li u. assign(f, ‘songuyen.dat’); reset(f); Ví d 2: M t p ‘sach.dat’ g n v i bi n t p f1 ñ ñ c d li u. assign(f1, ‘sach.dat’); reset(f1); * ð c d li u t t p ð c d li u t t p ñư c th c hi n b ng th t c Read như sau: Read(biên_t p, bi n1, bi n2, . . . , bi n n); Th t c này th c hi n ñ c giá tr v trí con tr gán cho các bi n tương ng như th t ñã vi t, khi ñ c xong con tr t p l i chuy n sang ph n t ti p theo ñ c và gán cho bi n khác, c th ñ c cho ñ n bi n n . Vi c ñ c ch ñư c th c hi n khi t p v n còn ph n t , t c là con tr chưa t i eof ( cu i t p). do v y trư c khi ñ c ph i ki m tra xem ñã k t thúc t p chưa, dùng hàm chu n eof như sau: eof(bi n_têp); hàm này cho giá tr True n u con tr cu i t p, ngư c l i hàm cho giá tr False. 167 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 167
- Có th dùng 2 c u trúc sau: - Ki m tra n u t p chưa k t thúc thì ñ c if not eof(bi n_têp) then read(bi n_têp, bi n); - ð c t t c các ph n t c a t p While not eof(bi n_têp) do Begin read(bi n_t p, bi n); ... end; N u con tr cu i t p mà v n ñ c thì máy s báo l i, sau ñó chương trình d ng l i. Do v y ph i ki m tra trư c khi ñ c. Ví d while not eof(f) do begin read(f,x); writeln(x); end; * ðóng t p Close(bi n_t p); * Các ví d chương trình ñ c d li u t t p Bài toán 1: ð c d li u t t p ‘songuyen.dat’ ñã t o trên và hi n k t qu trên màn hình. Chương trình program Doc_tep_songuyen; uses crt; var i: integer; f: file of integer; begin clrscr; assign(f, ‘songuyen.dat’); reset(f); while not eof(f) do begin read(f, i); writeln(i); end; close(f); readln; end. Bài toán 2: Vi t chương trình th c hi n t o t p ‘diem.dat’ ghí l i ñi m thi c a thí sinh, d li u bao g m: h và tên thí sinh, ñi m toán, ñi m lý, ñi m hoá. ð ng th i th c hi n ñ c t p và in ra thí sinh trúng tuy n, ñi m chu n ñ ñư c nh p vào t bàn phím. Chương trình program Tao_doc_tep_diemts; uses crt; type hs = record ten: string[25]; toan,ly,hoa : real; end; 168 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 168
- var i,n: integer; f: file of hs; nhap: hs; diemc: real; {**************} procedure tao; { thu tuc tao } begin clrscr; assign(f, ‘diem.dat’); rewrite(f); write(‘ So thi sinh: ‘); readln(n); for i:=1 to n do begin with hs do begin write(‘ Ho va ten: ‘); readln(ten); write(‘ Diem toan: ‘); readln(toan); write(‘ Diem ly : ‘); readln(ly); write(‘ Diem hoa : ‘); readln(hoa); end; write(f, hs); end; close(f); end; { ket thuc thu tuc tao} { ***************} Procedure doc; { thu tuc doc } begin clrscr; Assign(f, 'Diem.dat' ); reset(f); write(‘ Diem chuan : ‘); readln(diemc); writeln(‘ Danh sach thi sinh trung tuyen dai hoc ‘); while not eof(f) do begin read(f,hs); with hs do if toan+ly+hoa >= diemc then writeln(ten:25,toan:10:1,ly:10:1,hoa:10:1); end; close(f); end; { ket thuc thu tuc doc} {******************} { than chuong trinh chinh} repeat clrscr; writeln(‘ 1- Tao tep’); writeln(‘ 2- Doc tep’); writeln(‘ 3- Ket thuc’); write(‘ Hay chon mot viec ? ‘); readln(i); case i of 1: tao; 2: doc; 169 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 169
- end; until i=3; readln; end. 2.6 - Truy nh p t p tr c ti p Các ph n ñã xét trên là truy nh p tu n t t p có ñ nh ki u. Trong ph n này ta xét cách truy nh p tr c ti p t p có ñ nh ki u. S d ng t t c các th t c và l nh ñã nêu trên, ngoài ra ñ truy nh p tr c ti p t p còn s d ng m t s th t c và hàm sau. * Th tuc Seek ñ d ch chuy n con tr t p Seek( bi n_t p, n); n có ki u longint. Th t c này th c hi n chuy n con tr t p t i ph n t th n. Trong t p ph n t ñ u ñư c ñánh th t là 0. * Hàm Filepos Filepos(bi n_t p) Hàm này cho v trí hi n th i c a con tr t p. Ví trí ñ u là 0. * Hàm Filesize Filesize(bi n_t p) Hàm này cho s lư ng ph n t c a t p. Hàm cho giá tr 0 khi t p r ng. ð thêm 1 ph n t vào t p ph i thêm vào cu i t p. Như v y ph i d ch con tr t i cu i t p b ng th t c seek như sau: seek(bi n_t p, Filesize(bi n_t p)-1 ); * Ví d chương trình truy nh p t p tr c ti p Bài toán 1: T o t p ‘sochan.dat’ ghi các s nguyên dương ch n
- write(‘ sua phan tu thu ? ‘); readln(i); seek(f, i-1); read(f,j); witeln(‘ gia tr cu: ‘, j); write(‘ nhap gia tri moi : ‘); readln(j); seek(f, i-1); write(f, j); close(f); end; { ket thuc thu tuc sua } { thu tuc them phan tu } procedure them; begin clrscr; reset(f); write(‘ gia tri moi them: ‘); readln(j); seek(f, filesize(f)-1); write(f,j); close(f); readln; end; {ket thuc thu tuc sua } { thu tuc doc } procedure doc; uses crt; clrscr; reset (f); while not eof(f) do begin read(f,i); witeln(i); end; close(f); end; { ket thuc thu tuc doc} {******************} { than chuong trinh chinh} repeat clrscr; writeln(‘ 1- Tao tep’); writeln(‘ 2- Sua tep’); writeln(‘ 3- Them phan tu’); writeln(‘ 4- Doc tep’); writeln(' 5- ket thuc '); write(‘ Hay chon mot viec ? ‘); readln(i); case i of 1: tao; 171 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 171
ADSENSE
Thêm tài liệu vào bộ sưu tập có sẵn:
Báo xấu
LAVA
AANETWORK
TRỢ GIÚP
HỖ TRỢ KHÁCH HÀNG
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn