Giáo trình Tin học đại cương part 8

Chia sẻ: Akjshdj Aksjdh | Ngày: | Loại File: PDF | Số trang:19

0
147
lượt xem
73
download

Giáo trình Tin học đại cương part 8

Mô tả tài liệu
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

Tham khảo tài liệu 'giáo trình tin học đại cương part 8', tài liệu phổ thông, tin học phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả

Chủ đề:
Lưu

Nội dung Text: Giáo trình Tin học đại cương part 8

  1. Readln; End. VD2: M t ngư i g i ti n ti t ki m v i s ti n ban ñ u là A ñ ng, th i gian g i t tháng, lãi su t tháng là p. H i sau t tháng g i ngư i ñó thu ñư c s ti n lãi là bao nhiêu ñ ng? Phân tích bài toán: Ta bi t r ng g i ti t ki m thì s ti n thu ñư c sau m i tháng s b ng s ti n tháng trư c c ng v i lãi c a tháng ñó. N u g i S là s ti n thu ñư c sau m i tháng, t là s tháng g i thì ta có: Ban ñ u S0=A t=1 --> S1=S0 +S0*p (g i 1 tháng) t=2 --> S2= S1 +S1*p (g i 2 tháng) ... t=n --> Sn= Sn-1 +Sn-1*p (g i n tháng) ðây chính là quy lu t ñ th c hi n vòng l p tính s ti n thu ñư c. Chương trình ñư c vi t như sau: Program Tinh_tien_lai; Uses crt; Var i,t:integer; A,P,S:real; Begin Write('Cho biet so tien gui ban dau: '); Readln(A); Write('Cho biet so thang gui: '); Readln(t); Write('Cho biet lai suat theo thang: '); Readln(P); S:=A; For I:=1 to t do S:=S+ S*P; Writeln(' Lai thu duoc la : ',S-A:10:2); Readln; End. b. D ng l nh l p gi m (d ng lùi) FOR Bi n_ñi u_khi n:=Bi u_th c1 DOWNTO Bi u_th c2 DO ; ý nghĩa hoàn toàn tương t như d ng trên, ch khác là Bi n_ñi u_khi n nh n giá tr gi m d n ch không ph i tăng d n, và ñi u ki n ki m tra là Bi n_ñi u_khi n không nh quá Bi u_th c2. Lưu ñ c a l nh l p FOR: B¾t ®Çu BiÕn_®iÒu_khiÓn:=BiÓu_thøc1 §óng BiÕn_®iÒu_khiÓn
  2. V i d ng này thì câu l nh FOR trong ví d 1 trên ñư c vi t là: For I:=n downto 1 do S:=S+i; T ng S s ñư c c ng d n theo th t t n ñ n 1, t c là S=n+(n-1)+...+2+1. Ví d : Vi t chương trình in ra các kí t trong b ng mã ASCII theo th t gi m d n. Các kí t trong b ng mã ASCII có mã gi m d n t 255 ñ n 0. Ta dùng hàm CHR(n) ñ nh n ñư c kí t . Chưng trình ñư c vi t như sau: Program In_cac_ki_tu; Uses crt; Var I:integer; Begin Clrscr; For i:=255 downto 0 do write(chr(i):4); Readln; End. c. Các lưu ý 1) Sau t khoá DO ch ñư c vi t m t l nh, do ñó n u c n th c hi n nhi u hơn m t l nh ñơn thì ph i s d ng câu l nh ph c h p 2) Các l nh l p có th l ng nhau, ch ng h n d ng: FOR I:=1 TO n DO FOR J:=1 TO m DO Khi ñó v i m i giá tr c a bi n ñi u khi n c a vòng l p ngoài thì bi n ñi u khi n c a vòng l p trong s ch y h t các giá tr c a nó. T c là v i m i giá tr c a I thì J s ch y t 1 t i m. Xét ví d ño n chương trình sau: For I:= 1 to 2 do For J:=1 to 3 do begin k:=i+j; writeln(k); end; s cho k t qu là: 2 3 4 3 4 5 3) sau t khoá DO không ñư c tuỳ ti n thay ñ i giá tr c a Bi n_ñi u_khi n, làm như v y ta có th không ki m soát ñư c giá tr c a Bi n_ñi u_khi n và có th làm r i vòng l p. Ví d : In ra t t c các ch s có 3 ch s mà t ng các ch s chia h t cho 3. 135 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 135
  3. Trong bài toán này m i s ñ u có 3 ch s , ch s hàng trăn có th nh n giá tr t 1 ñ n 9, ch s hàng ch c, ch s hàng ñơn v ñ u có th nh n giá tr t 0 ñ n 9. ð quét h t các ch s có 3 ch s ta dùng 3 vòng l p l ng nhau, sau ñó ta ki m tra ñièu ki n n u t ng các ch s chia h t cho 3 thì in ra s ñó. Chương trình ñư c vi t như sau: Program In_cac_so; Uses crt; Var t,c,v:integer; Begin Clrscr; For t:=1 to 9 do For c:=0 to 9 do For v:=0 to 9 do If (t+c+v) mod 3 = 0 then writeln(t,c,v); Readln; End. 4.2- L nh l p có s bư c l p không xác ñ nh trên ta ñã xét l nh l p có s bư c l p xác ñ nh, t c là s l n th c hi n công vi c l p ñi l p l i là ñư c ñ nh trư c. Nhưng trong khi l p trình có nh ng bài toán yêu c u th c hi n m t công vi c nào ñó mà s l n l p là không th xác ñ nh trư c ñư c, mà ph thu c vào m t bi u th c ñi u ki n nào ñó. Có hai d ng l nh l p v i s bư c l p không xác ñ nh. a. L nh l p v i ñi u ki n trư c • D ng l nh: WHILE DO ; ý nghĩa: Khi g p câu l nh này, trư c tiên máy s ki m tra . N u có giá tr ñúng (TRUE) thì ñư c th c hi n. Th c hi n xong l nh này máy s quay l i ki m tra ñ th c hi n ... quá trình ti p di n ñ n khi sai thì d ng. Sơ ñ Sai §óng • Ví d : VD1: M t ngư i g i ti t ki m không kì h n v i s ti n ban ñ u là A ñ ng H i sau bao nhiêu tháng ngư i ñó thu ñư c s ti n là B ñ ng, bi t r ng lãi su t là 1.8%? 136 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 136
  4. Phân tích bài toán: Ta bi t r ng g i ti t ki m không kì h n thì s ti n thu ñư c sau m i tháng s b ng s ti n tháng trư c c ng v i lãi c a tháng ñó. N u g i S là s ti n thu ñư c sau m i tháng, t là s tháng g i, ls là lãi su t thì ta có: n u t=0 --> S0=A (g i 0 tháng) n u t=1 --> S1=S0 +S0*ls (g i 1 tháng) n u t=2 --> S2= S1 +S1*ls (g i 2 tháng) ... ðây chính là quy lu t ñ th c hi n vòng l p tính s ti n thu ñư c. Như v y ta ph i so sánh s ti n thu ñư c S sau m i tháng v i s ti n c n ñ t B: n u S ñ t ho c vư t B thì ta có k t lu n c a bài toán. ðây cũng là ñi u ki n d ng vòng l p. Ta s s d ng m t bi n ñ m t ñ ñ m s l n th c hi n l p, cũng chính là s tháng g i. Chương trình ñư c vi t như sau: Program Gui_tiet_kiem; Const ls=0.018; Var A,B,S:real; t:integer; Begin Clrscr; Write('Cho biet so tien gui ban dau:'); Readln(A); Write('Cho biet so tien can dat :'); Readln(B); S:=A; t:=0; WHILE S
  5. Writeln(' Tong tinh duoc la S:',S:10:2); End. Như v y ta có th dùng l nh l p có s bư c l p không xác ñ nh ñ thay cho l nh l p có s bư c l p xác ñ nh. Tuy nhiên khi ñó bi n ñi u khi n vòng l p không t ñ ng thay ñ i mà ta ph i ñưa nó vào thân vòng l p (bi n i trong VD trên). b. L nh l p v i ñi u ki n sau • D ng l nh: REPEAT UNTIL ; ý nghĩa: Khi g p câu l nh này, trư c tiên máy s cho th c hi n , sau ñó ki m tra . N u có giá tr sai (FALSE) thì quay l i th c hi n . Th c hi n xong l nh này máy s l i ki m tra ñ th c hi n ... quá trình ti p di n ñ n khi ñúng thì d ng. Sơ ñ LÖnh §óng §iÒu kiÖn Sai Ví d : L y l i VD g i ti t ki m trên. Bây gi ta s vi t l i chương trình s d ng d ng • l nh l p v i ñi u ki n sau. Chương trình ch c n thay ñ i m t chút l nh l p. Program Gui_tiet_kiem; Const ls=0.018; Var A,B,S:real; t:integer; Begin Write('Cho biet so tien gui ban dau:'); Readln(A); Write('Cho biet so tien can dat :'); Readln(B); S:=A; t:=0; REPEAT S:=S+S*ls; t:=t+1; UNTILS>=B; Writeln(' Ban can gui it nhat la ', t, ' thang'); Readln; 138 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 138
  6. End. Ta th y r ng trong ph n thân c a vòng l p các l nh ñ t gi a REPEAT và UNTIL không c n s d ng câu l nh ph c h p begin...end; B n ñ c có th s d ng l nh này ñ vi t l i chương trình tính t ng trên. c. Các lưu ý khi s d ng các l nh l p WHILE và REPEAT 1) Trong thân vòng l p ph i có ít nh t m t l nh làm thay ñ i giá tr c a bi u th c ñi u ki n nh m d ng vòng l p. N u ñi u ki n luôn ñư c tho mãn thì l nh có th rơi vào vòng l p vô t n. Khi ñó ch còn cách là t t máy ho c d ng chương trình. Xem ví d sau: I:=1; WHILE I
  7. Begin a:=1; b:=2; N1: a:=a+1; if a
  8. CHƯƠNG IV KI U D LI U CÓ C U TRUC: KI U M NG, KI U XÂU KÍ T , KI U T P H P 1 - Ki u m ng 1.1- Khái ni m m ng (array) a. Khái ni m m ng : M ng là m t ki u d li u có c u trúc bao g m m t s xác ñ nh các ph n t có cùng ki u, có m t tên chung. Các ph n t c a m ng ñư c truy nh p thông qua các ch s . Trong khái ni m này ta c n chú 2 ñi m sau: - S ph n t c a m ng ph i là m t s xác ñinh, không ñư c khai báo là bi n. Ta có th khai báo b ng m t giá tr c th ch ng h n như 5,10,20,…; ho c có th khai báo là h ng. - Các ph n t c a m ng ph i cùng ki u. Có th là các ki u ñơn gi n ho c ki u có c u trúc. Ví d : M ng A g m 6 ph n t là các s nguyên: A[1] A[2] A[3] A[4] A[5] A[6] . Như v y tên m ng là A, các ch s là 1,2,3,4,5,6. b. Công d ng : M ng là dùng ñ lưu tr m t dãy d li u có cùng m t tính ch t. Ví d như h tên c a các thí sinh trong 1 l p, lương c a các nhân viên trong 1 cơ quan,... Trong b nh c a máy tính các ph n t c a m ng ñư c lưu tr b i các t máy k ti p nhau. Trong ví d trên m ng A ñư c lưu tr trong b nh b ng 6 t máy k ti p nhau, m i t máy có ñ dài là 2 bytes. 1.2- Khai báo m ng ð khai báo m ng dùng c m t sau: ARRAY [ Ki u_ch _s 1, Ki u_ch _s 2, . . . ] OF Ki u_ph n_t ; - Khai báo b ng ñ nh nghĩa ki u TYPE Tên_ki u_m ng = ARRAY [ Ki u_ch _s 1, Ki u_ch _s 2, . . . ] OF Ki u_ph n_t ; VAR Tên_bi n_m ng : Tên_ki u_m ng ; - Khai báo bi n m ng tr c ti p qua khai báo VAR: VAR Tên_bi n_m ng :ARRAY [ Ki u_ch _s 1, Ki u_ch _s 2, . . . ] OF Ki u_ph n_t ; Trong ñó: Ki u ph n t là ki u c a m i ph n t trong m ng. Ki u ph n t có th là ki u b t kỳ. Ch s ñ truy nh p ñ n các ph n t c a m ng. Ki u ch s ch cho phép là các ki u ñơn gi n sau ñây: Ki u kí t ( CHAR), ki u BOOLEAN, ki u mi n con ( kho ng con), ki u li t kê. Ki u ch s không ñư c là ki u REAL ho c INTEGER. S ch s là s chi u c a m ng, m ng 1 chi u có 1 ch s , m ng 2 chi u có 2 ch s , ... , m ng n chi u có n ch s . Kích thư c t i ña c a m ng ph i ñư c khai báo là m t s xác ñ nh ( là h ng), ch ng h n ta có th khai báo là 5 ho c 10 hay 100,... ch không ñư c khai báo là m t bi n như n,m,... 141 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 141
  9. Ví d 1 var B: array[ 1..5] of char ; ví d 1 m ng B có kích thư c t i ña là 5. Ví d 2 TYPE AB = ARRAY [1 .. 5] OF INTEGER ; COLOR = ( Red, Blue, Green, While, Black ); VAR X,Y,Z : AB; MAO, MKHAN : COLOR; Ví d 3 VAR DSHodem,DSTen : Array [1.. 200] of string [20] ; DSHeso, DSLuong, DSPhucap,DSTong : array [1.. 200] of real; So_lap : array [ ‘a’ .. ‘z’] of integer; 1.3- Truy nh p m ng Có th truy nh p vào b t kỳ ph n t nào trong m ng. ð truy nh p vào m t ph n t trong m ng ta vi t theo qui cách sau: Tên_bi n_m ng [ ch -s 1, ch _s 2, ..., ch _s n ] Các ph n t c a m ng ñư c coi như m t bi n, có th tham gia vào các th t c vào/ra, các bi u th c, l i g i hàm. Ví d : Var a:array[1..20] of integer; A[1]:=1; readln(a[2]; a[3]:=a[1]+a[2]; Writeln(a[3]); 1.4- M ng 1 chi u * Khai báo m ng m t chi u: Dùng c m t sau ARRAY [ki u_ch _s ] OF ki u_ph n_t ; - Dùng khai báo ki u: TYPE Tên_ki u_m ng = ARRAY [ ki u_ch _s ] OF ki u_ph n_t ; VAR Tên_bi n_m ng: Tên_ki u_m ng ; - Dùng khai báo bi n : VAR Tên_bi n_m ng : ARRAY [ ki u-ch _s ] OF ki u_ph n_t ; M ng m t chi u ch có m t ch s . * Cách dùng : M ng 1 chi u thư ng ñư c dùng cho d li u d ng danh sách tuy n tính, ví d như dãy s , dãy xâu kí t , ... Ví d 1: M t dãy s nguyên a1 , a2 , ... , an ta khai báo như sau VAR a: ARRAY [ 1. . 100 ] OF integer ; Trong khai báo này n có giá tr t i ña là 100. Ví d 2: M t danh sách có n tên h c sinh ta khai báo như sau: VAR Ten: ARRAY [ 1.. 200 ] OF String [ 25] ; Trong khai báo này n có giá tr t i ña là 200, m i tên có t i ña là 25 kí t . Ví d 3: Danh sách s l n xu t hi n ( t n s ) c a các ch cái vi t hoa trong m t văn b n ta khai báo như sau: VAR Tan_so : ARRAY [ 'A' . . 'Z' ] OF integer ; 142 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 142
  10. Trong khai báo này m ng có kích thư c t i ña là 26 ( 26 ch cái hoa trong b ng ch cái ti ng Anh). * Có th truy nh p vào b t kỳ ph n t nào trong m ng. ð truy nh p vào m t ph n t trong m ng m t chi u ta vi t theo qui cách sau: Tên_bi n_m ng [ ch -s ] Ví d : Ch ra ph n t th 5 trong ví d 1 ta vi t a[5] Ch ra tên th 10 trong danh sách tên ta vi t Ten[10] Ch ra t n s c a ch ‘B’ ta vi t Tan_so[ 'B' ] 1.5. Các chương trình dùng m ng m t chi u Bài toán 1: Cho m t dãy n s nguyên vi t chương trình nh p d li u vào, tính và in ra trung bình c ng, ph n t l n nh t, ph n t nh nh t c a dãy s ñó. -Tư tư ng c a thu t toán tìm ph n t max, ph n t min : Trư c tiên gán ph n t ñ u tiên là a[1] cho c max và min, như v y v trí max, v trí min ñ u là 1. Sau ñó duy t l n lư t các ph n t t ph n t ñ u cho t i ph n t cu i, n u ph n t ñang xét l n hơn max thì gán giá tr ph n t ñó cho max, v trí c a nó cho v trí max, n u ph n t ñang xét nh hơn min thì gán giá tr ph n t ñó cho min, v trí c a nó cho v trí min. Chương trình Program Trung_binh_max_min; Uses crt; Var a:Array [ 1..100] of integer ; i,n,max,min,vtmax,vtmin : integer ; tb : real ; Begin Clrscr; { Nhap du lieu } Write(' Nhap n: '); readln( n); for i:=1 to n do begin Write( ' a[', i, ']=' ); readln( a[i]); end; { Tinh toán } tb:=0; max:= a[1]; min:=a[1]; vtmax:=1; vtmin:=1; for i:=1 to n do begin tb:=tb + a[i]; if max a[i] then begin min :=a[i]; vtmin:=i; end; end; { in ket qua } writeln(' Trung binh = ', tb/n :8:2) ; writeln(' max= ', max, ' tai vi tri : ', vtmax); writeln(' min= ', min, ' tai vi tri : ', vtmin); readln; end. Bài toán 2: Cho dãy n s th c a1, a2, .., an s p x p dãy theo th t tăng d n. 143 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 143
  11. Trong bài toán này ta dùng thu t toán tìm ph n t nh nh t c a dãy chưa s p và ñưa v ñ ng v trí ñ u tiên c a dãy ñó. Dãy có n ph n t thì ta ph i th c hi n n-1 l n tìm ph n t l n nh t. Tư tư ng c a thu t toán như sau: -Ta so sánh ph n t ñ u tiên c a dãy chưa s p l n lư t v i các ph n t ñ ng sau nó , n u có ph n t nào nh hơn nó thì ta s ñ i giá tr cho nhau. ð ñ i giá tr 2 ph n t cho nhau ta dùng m t ph n t trung gian. - L p l i bư c trên cho ñ n khi dãy chưa s p không ch còn m t ph n t . Như v y dãy có n ph n t thì ta l p l i n-1 l n. Chương trình PROGRAM SAP_DAY_TANG; USES CRT; VAR I,J,N: INTEGER; A:ARRAY[1..100] OF REAL; X:REAL ; BEGIN CLRSCR; (* NHAP SO LIEU *) WRITE(' HAY NHAP SO PHAN TU N ? ');READLN(N); FOR I:=1 TO N DO BEGIN WRITE('A[',I,']= '); READLN(A[I]); END; (* SAP XEP *) FOR I:=1 TO N-1 DO FOR J:=I+1 TO N DO IF A[I]>A[J] THEN BEGIN X:=A[I]; A[I]:=A[J]; A[J]:=X; END; (* IN KET QUA *) WRITELN(' DAY DA SAP THEO THU TU TANG'); FOR I:=1 TO N DO WRITELN(A[I]:8:2); READLN; END. Bài toán 3: Nh p vào m t xâu kí t . Hãy in ra t n s xu t hi n c a các ch cái, không bi t ch hoa và ch thư ng. In ra ch cái xu t hi n nhi u nh t. Chương trình program Tan_so_chu_cai ; uses crt; var s:string; ts: array [‘A’..’Z’ ] of integer ; n,j,m: integer ; i,vt: char ; Begin clrscr ; { nhap xau ki tu } Write(‘ Nhap xau ki tu : ‘); readln(s); n:=length(s); { Tinh tan so } for i:=’A’ to ‘’Z’ do ts[i] :=0 ; 144 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 144
  12. for j:= 1 to n do for i:=’A’ to ‘Z’ do if upcase(s[j])=i then ts[i]:=ts[i] + 1; for i:=’A’ to ‘Z’ do writeln(i,’ co tan so = ‘,ts[i]); { Tin tan so max } m:=ts[‘A’] ; vt:=’A’ ; for i:=’B’ to ‘Z’ do if m
  13. Writeln(A[1,2]); 1.7. Các chương trình dùng m ng 2 chi u Bài toán 1: Vi t chương trình nh p m t ma tr n m dòng , n c t và tìm giá tr l n nh t, giá tr nh nh t, tính t ng c a các ph n t , ñ m s ph n t âm. Chương trình PROGRAM TINH_MA_TRAN; (*TIM MAX, MIN, TINH TONG, DEM SO PHAN TU AM *) USES CRT; VAR I,J,M,N,MAX,MIN,T,SOPTAM:INTEGER; A:ARRAY[1..30,1..20] OF INTEGER; BEGIN CLRSCR;T:=0;SOPTAM:=0; (* NHAP SO LIEU *) WRITE('NHAP SO DONG M, SO COT N ');READLN(M,N); FOR I:=1 TO M DO FOR J:=1 TO N DO BEGIN WRITE('A[',I,',',J,']=? '); READLN(A[I,J]); END; (* TINH TOAN *) MAX:=A[1,1]; MIN:=MAX; FOR I:=1 TO M DO FOR J:=1 TO N DO BEGIN T:=T+A[I,J]; IF A[I,J]
  14. Chương trình (* nhan hai ma tram *) program nhan_ma_tran; uses crt; type mang=array[1..20,1..30] of integer; var i,j,k,m,l,n:integer; a,b,c: mang; begin clrscr; (* nhap ma tran a *) write('nhap so dong, so cot m,n ? ');readln(m,n); for i:=1 to m do for j:=1 to n do begin write('a[', i, ',' ,j, ']= '); readln(a[i,j]); end; (* nhap ma tran b *) write('nhap so cot l ? ');readln(l); for i:=1 to n do for j:=1 to l do begin write('b(',i,',',j,')= '); readln(b[i,j]); end; (* Tinh toan *) for i:=1 to m do for j:=1 to l do begin c[i,j]:=0; for k:=1 to n do c[i,j]:=c[i,j]+a[i,k]*b[k,j]; end; (* In ket qua *) writeln(' Ma tran tich '); for i:=1 to m do begin for j:=1 to l do write( ' ',c[i,j]:4 ); writeln; end; readln; end. 2. Ki u xâu kí t 2.1. Khai báo ki u xâu kí t a. ð nh nghĩa : D li u ki u xâu là ki u d li u có c u trúc, dùng ñ x lý các xâu kí t 147 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 147
  15. D li u ki u xâu ñư c khai báo b ng t khoá STRING , ñ dài t i ña c a m t xâu kí t là 255 kí t . Có th khai báo ñ dài t i ña c a m t xâu kí t trong d u ngo c vuông sau t khoá STRING như sau: STRING[...] Ví d : Tên ngư i, quê quán, trình ñ văn hóa là các d li u ki u xâu kí t . b. Khai xâu kí t ð khai báo xâu kí t dùng t khóa String n u như khai báo ñ dài xâu t i ña là 255 kí t , dùng t khóa String [n] n u như khai báo ñ dài xâu t i ña là n kí t . - Khai báo ki u xâu: Type Tên_ki u_xâu = String[n]; - Khai báo bi n xâu Var Tên_bi n: String[n]; Trong ñó n là s kí t t i ña c a xâu, n u không có ph n [n] thì s kí t t i ña c a xâu m c nh n là 255. Ví d Var Hoten: string[30]; Ngaysinh: string[10]; Quequan: string; H ng xâu kí t trong Pascal ñư c vi t trong ' ' Hoten:='Le Thu Ha'; Ngaysinh:='20-10-1960'; Quequan:='Gia lam - Ha noi '; c. Truy nh p xâu kí t M i kí t trong xâu ñư c ch ra b ng 1 s th t ñư c g i là ch s vi t trong [ ], kí t ñ u tiên có ch s là 1. Có th truy nh p t i t ng kí t trong xâu theo cách vi t sau: Tên_bi n[ch _s ] V i ví d trên Hoten[2] là 'e', Ngaysinh[8] là 9. Xâu kí t ñư c lưu tr như sau: Byte ñ u tiên ch a kí t là ñ dài th c c a xâu, các byte ti p theo là các kí t c a xâu. V i ví d trên Hoten:='Le Thu Ha'; ñư c lưu tr như sau: 01 2 3 4 5 6 7 8 9 ... 30 L e T h u H a Kí t ñ u ch a ñ dài th c c a xâu là kí t 9. ð dài c a xâu = ORD( Hoten[0]) d. Hàm chu n Length(St) : Cho ta ñ dài c a xâu kí t . M t xâu kí t không ch a kí t nào là r ng, khi ñó Length(St)=0, xâu kí t r ng ñư c kí hi u ''. 2.2. Các thao tác trên xâu kí t a. Phép c ng xâu • Kí hi u + là ghép n i các xâu kí t • Ví d Que:= 'Gia lam ' + 'Ha noi'; Cho k t qu Que= 'Gia lam Ha noi' b. Phép So sánh hai xâu kí t Khi so sánh 2 xâu kí t , so sánh mã ASCI I c a t ng c p kí t tương ng t 2 xâu theo trình t t trái sang ph i, s xu t hi n 1 trong các trư ng h p sau: - N u g p m t c p có mã khác nhau thì xâu ch a kí t có mã nh hơn là xâu nh hơn. - N u t t c các c p kí t ñ u có mã gi ng nhau thì 2 xâu b ng nhau. 148 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 148
  16. - N u 2 xâu có ñ dài khác nhau song các c p kí t ñ u có mã gi ng nhau ñ n ñ dài c a xâu ng n thì xâu ng n s là xâu nh hơn. K t qu c a phép so sánh là giá tr logic True ho c False. 'hang' < 'hun' cho giá tr True. 'Thoa' = 'Thoa' cho giá tr True. 'nhu' > 'nhung' cho giá tr Flase. • ð c xâu kí t t bàn phím: Readln(St); ð dài th c c a xâu St là s kí t gõ vào t bàn phím. N u không gõ kí t nào mà gõ Enter luôn thì xâu St r ng. • Vi t xâu kí t ra màn hình: Write(St) và Writeln(St) 2.3. Các th t c và các hàm chu n x lý xâu kí t Gi thi t St là xâu kí t có ñ dài chu n là 255 kí t . a. Hàm Length(St) Hàm này cho ñ dài c a xâu kí t . St:='Tin h c' ; Length(St) có giá tr là 7. b. Th t c Delete(St,m,n) Th t c này xoá ñi n kí t , b t ñ u t v trí m trong xâu St. St:='Cong trinh khoa hoc'; Delete(St,6,5); K t qu St s còn 'Cong khoa hoc' . N u m+n > Length(St) thì ch xoá ñi nh ng kí t n m trong Length(St). c. Th t c Insert (s1,St,m) Th t c này chèn xâu s1 vào xâu St t i v trí m. St:='Hoc tot'; s1:='Toan '; Insert(s1,St,5); K t qu St s là 'Hoc Toan tot'. N u Length(s1)+Length(St) > ñ dài c c ñ i cho phép c a xâu thì ch nh ng kí t nào n m trong kho ng ñ dài c c ñ i cho phép m i ñư c gi la . d. Hàm Copy(St,m,n) Hàm này sao chép n kí t c a xâu St t v trí m. St:='Lao dong'; s1:=Copy(St,5,2); K t qu s cho s1='do'. N u m > Length(St) thì Copy s cho 1 xâu r ng. N u m + n > Length(St) thì Copy ch nh n các kí t n m trong xâu St. e. Hàm Concat(St1,St2,...,Stn) Hàm này ghép n i t t c các xâu kí t St1,St2,...,Stn thành m t xâu kí t theo th t ñã vi t. T ng s chi u dài c a các xâu kí t không ñư c l n hơn 255. St1:='Lao dong '; St2:='Hoc tap '; St3:='Vui choi'; St:=Concat(St1,St1,St3); K t qu St là 'Lao dong Hoc tap Vui choi'. f. Hàm Pos(s1,St) Hàm này cho v trí ñ u tiên c a xâu s1 trong xâu St. N u không tìm th y thì hàm cho giá tr là 0. St:='12345abc'; 149 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 149
  17. s1:='345'; s2:='35ab'; Pos(s1,St) cho giá tr là 3. Pos(s2,St) cho giá tr là 0. g. Th t c Str(x,St) Th t c này bi n ñ i giá tr s nguyên ho c th c x thành m t xâu kí t St bi u di n s ñó. Cách bi u di n c a xâu St s ñư c qui ñ nh do qui cách c a x. I:=1234; Str(I:5,St) s cho St =' 1234' x:=1234.56789111; Str(x:9:4,St) s cho St='1234.5678' h. Th t c Var(St,x,m) Th t c này bi n ñ i xâu kí t St ( bi u di n s nguyên ho c th c ) thành m t s nguyên ho c th c ch a trong x. Bi n m là bi n nguyên ch a mã l i, n u bi n ñ i ñúng thì m=0, n u bi n ñ i sai thì m cho giá tr là v trí c a kí t sai. Ví d 1: St:='1234.567'; x là bi n th c, m là bi n nguyên. Var(St,x,m); cho ta x=1234.567 và m=0. Ví d 2: St:='1234'; x là bi n nguyên, m là bi n nguyên. Var(St,x,m); cho ta x=1234 và m=0 Ví d 3: St:='123ab'; x là bi n th c, m là bi n nguyên. Var(St,x,m); k t qu sai và m≠0. 2.4. Các chương trình Bài toán 1: Nh p 1 xâu kí t t bàn phím, ki m tra xem xâu có ñ i x ng không. Xâu kí t S có ñ dài n, là xâu ñ i x ng khi có t t c các c p kí t S[i] = S[n-i+1] v i i t 1 ñ n (n Div 2). Ch ng h n xâu ‘1234321’ và xâu ‘abccba’ là các xâu ñ i x ng, xâu ‘12343321’ là xâu không ñ i x ng. Chương trình: Program KT_xau_doi_xung; Uses crt; Var s: string; i,n : integer; t: boolean; Begin clrscr; Witeln('Nhap xau ki tu'); readln(s); n:=length(s); t:=true; for i:=1 to n div 2 do if s[i] s[n-i+1] then t:=false; if t then writeln(' Xau ki tu doi xung') else writeln(' Xau khong doi xung'); readln; end. Bài toán 2: Nh p vào 2 xâu kí t có ñ dài như nhau. Xây d ng xâu m i ch a các kí t xen k c a 2 xâu nh p vào theo th t t trái sang ph i,. Ch ng h n s1=’123’ s2=’abc’ thì các xâu m i xây d ng là s3=’1a2b3c’, s4=’a1b2c3’ 150 Trư ng ð i h c Nông nghi p 1 - Giáo trình Tin h c ñ i cương --------------------------------------------- 150
  18. Chương trình: Program Ghep_xen_ke_xau_ki_tu; Uses crt; Var s1,s2,s3,s4: string; i,n : integer; Begin clrscr; Witeln('Nhap xau ki tu mot s1: ‘); readln(s1); Witeln('Nhap xau ki tu hai s2: ‘); readln(s2); s3:=’’; s4:=’’; n:=length(s1); for i:=1 to n do begin s3:=s3+s1[i]+s2[i]; s4:=s4+s2[i]+s1[i]; end; Writeln(‘ Cac xau ki tu moi tao’); Writeln(s3); Writeln(s4); readln; end. Bài toán 3: Chu n hoá văn b n. Nôi dung chu n hoá văn b n như sau: Nh p vào các dòng văn b n t bàn phìm, chu n hoá theo các qui ñ nh : - Các t ch cách nhau 1 kho ng cách. - Sau d u ch m ph i vi t hoa. - Trư c các dâu . , ; : không có kho ng cách. - Sau các dâu . , ; : có 1 kho ng cách. Chương trình { xuly tep van ban ve cac dau .,;: } PROGRAM XU_LY_VAN_BAN; USES CRT; VAR S,T:STRING;TIEP:CHAR; PROCEDURE SUA(VAR P:STRING); VAR I:INTEGER; BEGIN { xoa khoang cach thua } I:=1; WHILE I
  19. THEN BEGIN INSERT(' ',P,I+1); I:=I+1; END ELSE I:=I+1; { Viet hoa sau dau . } I:=1; WHILE I

CÓ THỂ BẠN MUỐN DOWNLOAD

Đồng bộ tài khoản