Thủ tục Catdan(s1, s2) nhận đầu vào là xâu s1 không quá 79 kí tự, tạo xâu s2 thu được từ xâu s1 bằng việc chuyển kí tự đầu tiên của nó xuống vị trí cuối cùng. Ví dụ s1 = ‘abcd’ thì s2 = ‘bcda’.
type str79= string[79];
procedure Catdan (s1: str79; var s2: str79);
begin
s2:= copy(s1,2,length(s1)-1) + s1[1];
end;
Bài tập & thực hành 6CHƯƠNG TRÌNH CONI. Muïc ñích - yeâu caàu Reøn luyeän caùc thao taùc xöû lí xaâu, kó naêng taïo hieäu öùng chöõ chaïy treân maøn hình; Naâng cao kó naêng vieát, söû duïng chöông trình con. 2. Nội dunga) Tìm hiểu hai thủ tục sau: • Thủ tục Catdan(s1, s2) nhận đầu vào là xâu s1 không quá 79 kí tự, tạo xâu s2 thu được từ xâu s1 bằng việc chuyển kí tự đầu tiên của nó xuống vị trí cuối cùng. Ví dụ s1 = ‘abcd’ thì s2 = ‘bcda’. type str79= string[79]; procedure Catdan (s1: str79; var s2: str79); begin s2:= copy(s1,2,length(s1)-1) + s1[1]; end; • Thủ tục Cangiua(s) nhận đầu vào là xâu s gồm không quá 79 kí tự, bổ sung vào đầu xâu s một số dấu cách để khi đưa ra màn hình xâu kí tự s ban đầu được căn giữa dòng (80 kí tự). Ví dụNhap vao xau s:TRA VINH QUE TOITRA VINH QUE TOI32 kí tự32 kí tự16 kí tự procedure Cangiua(var s: str79); var i, n: integer; begin n:= length(s); n:= (80-n) div 2; for i:=1 to n do s:= ‘ ‘+s; end;b) Theo dõi cách sử dụng hai thủ tục trên qua chương trình sau:uses crt;type str79= string[79];var s1, s2: str79; stop: boolean;procedure Catdan(s1: str79; var s2: str79); {}procedure Cangiua(var s: str79); {}begin clrscr; write(‘Nhap xau s1:’); readln(s1); Cangiua(s1); clrscr; stop:= false; while not(stop) do begin gotoxy(1, 12); {di chuyển con trỏ đến tọa độ (cột, dòng)} write(s1); delay(500); {dừng 500 miligiây} Catdan(s1, s2); s1:= s2; stop:= keypressed; {Nhấn một phím bất kì để kết thúc} end; readln;end.Gotoxy(x,y:byte): thủ tục dời con trỏ tới tọa độ (x,y) trên màn hình, màn hình Pascal có 25 dòng và 80 cột. Trái trên (1,1), phải dưới (80,25).Delay(Milisecond:word): thủ tục trì hoãn chương trình trong thời gian Milisecond.Keypressed: hàm không có tham số và trả về giá trị là True nếu có một phím trên bàn phím được bấm và ngược lại.c) Chương trình có sử dụng thủ tục Chuchay(s, dong);PROGRAM BTTH6c;uses crt;type str79= string[79];var s1, s2: str79; stop: boolean; dong: byte;{********************************}procedure Catdan(s1: str79; var s2: str79); begin s2:= copy(s1,2,length(s1)-1) + s1[1]; end;{********************************}procedure Cangiua(var s: str79); var i, n: integer; begin n:= length(s); n:= (80-n) div 2; for i:=1 to n do s:= ' '+s; end;{********************************}procedure chuchay(s1: str79; d:byte);var s2: str79; stop: boolean;begin clrscr; Cangiua(s1); clrscr; stop:= false; while not(stop) do begin gotoxy(1, d); write(s1); delay(500); Catdan(s1, s2); s1:= s2; stop:= keypressed; end;end;{***************************}BEGIN clrscr; write('Nhap xau s1:'); readln(s1); write('Nhap dong chu chay:'); readln(dong); chuchay(s1,dong);END.c) Chương trình có sử dụng thủ tục Chuchay(s, dong);PROGRAM BTTH6c;uses crt;type str79= string[79];var xau, s1: str79; stop: boolean; d: byte;procedure chuchay(s: str79; dong:byte);var i, n: integer; begin n:= length(s); n:= (80-n) div 2; for i:=1 to n do s:= ' '+s; stop:= false; while not(stop) do begin gotoxy(1, dong); write(s); delay(150); s1:= copy(s,2,length(s)-1) + s[1]; s:= s1; stop:= keypressed; end; end;BEGIN clrscr; write('Nhap xau chu:'); readln(xau); write('Nhap dong xuat hien:'); readln(d); chuchay(xau,d);END. Tương đương với thủ tục Cangiua(s)Tương đương với thủ tục Catdan(s,s1)
Tài liệu đính kèm: