A. Mục đích, yêu cầu
§ Cho học sinh tìm hiểu các thao tác xử lí xâu, cách tạo hiệu ứng chữ chạy trên màn hình.
§ Củng cố cho học sinh những khái niệm về chương trình con: Thủ tục, hàm, tham số giá trị, tham số biến, tham số thực, biến toàn cục, biến cục bộ.
§ Tổ chức những hoạt động trong phòng máy để học sinh có được các kĩ năng cơ bản trong việc tổ chức và sử dụng chương trình con trong lập trình.
§ Góp phần rèn luyện tác phong, tư duy lập trình.
B. Nội dung
1/ Bài tập 1: Cho xâu S1 gồm không quá 79 kí tự. Viết thủ tục tạo xâu S2 bằng cách chuyển đổi kí tự đầu tiên của xâu S1 xuống vị trí cuối cùng của nó.
Bài tập 2: Cho xâu S gồm không quá 79 kí tự. Viết thủ tục để 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ự).
BÀI TẬP VÀ THỰC HÀNH 6 A. Mục đích, yêu cầu Cho học sinh tìm hiểu các thao tác xử lí xâu, cách tạo hiệu ứng chữ chạy trên màn hình. Củng cố cho học sinh những khái niệm về chương trình con: Thủ tục, hàm, tham số giá trị, tham số biến, tham số thực, biến toàn cục, biến cục bộ. Tổ chức những hoạt động trong phòng máy để học sinh có được các kĩ năng cơ bản trong việc tổ chức và sử dụng chương trình con trong lập trình. Góp phần rèn luyện tác phong, tư duy lập trình. B. Nội dung 1/ Bài tập 1: Cho xâu S1 gồm không quá 79 kí tự. Viết thủ tục tạo xâu S2 bằng cách chuyển đổi kí tự đầu tiên của xâu S1 xuống vị trí cuối cùng của nó. Bài tập 2: Cho xâu S gồm không quá 79 kí tự. Viết thủ tục để 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ự). * Giúp học sinh hiểu được hai thủ tục sẽ được dùng trong một chương trình để làm một dòng chữ chạy trên màn hình. Thủ tục CatDan(s1, s2) tạo xâu s2 từ xâu s1 nhận ở đầu vào, sao cho s2 chính là trạng thái tiếp theo nếu hình dung s1 dịch sang trái một vị trí trong chuyển dịch vòng tròn. Cần lưu ý học sinh vì sao chỉ cần khai báo s1 là tham số giá trị nhưng phải khai báo s2 là tham số biến. Thủ tục CanGiua(s) thêm một số dấu cách ở đầu một xâu s sao cho khi đưa ra màn hình dòng chữ của xâu s nằm giữa màn hình. Cần lưu ý học sinh nếu không khai báo s là tham số biến thì thủ tục này không có hiệu lực gí vì lệnh đưa s ra màn hình không nằm trong thủ tục này. * Chương trình: SGK 2/ Bài tập 3:Viết chương trình để nhập một xâu kí tự từ bàn phím và đưa xâu đó ra màn hình có dạng dòng chữ chạy giữa màn hình văn bản 25 x 80. * Nhằm cung cấp cho học sinh chương trình tạo dòng chữ chạy trên màn hình, chương trình này sử dụng hai thủ tục đã được tìm hiểu trước ở câu a. Qua đó học sinh hiểu được thuật tóan để giải bài toán này và củng cố được hiểu biết về cách sử dụng các thủ tục trong một chương trình. Giáo viên cần: - Cho học sinh chạy chương trình để quan sát kết quả và tìm hiểu. - Phân tích thân chương trình để học sinh hiểu rõ thuật toán. - Giới thiệu thêm cho học sinh hai thủ tục chuẩn (mới đối với học sinh) là gotoxy(x,y) chuyển con trỏ màn hình đến vị trí cột x dòng y trên màn hình và delay(n) dừng trạng thái của màn hình trong n miligiây. Hàm chuẩn keypressed không có tham số và trả về giá trị true khi có một phím được gõ. * Chương trình: SGK. 3/ Bài tập 4: Hãy viết thủ tục ChuChay(S, dong) nhận đầu vào là xâu S gồm không quá 79 kí tự và biến nguyên dong, đưa ra xâu S có dạng chữ chạy ở dòng dong. Viết và chạy chương trình có thủ tục này. * Tạo điều kiện cho học sinh vận dụng hiểu biết về chương trình con, thuật toán vừa được cung cấp để giải quyết bài toán tổng quát hơn một chút (xâu chữ chạy ở dòng bất kì do chương trình chính quy định). Cần lưu ý: - Nhiệm vụ của thủ tục ChuChay(s, dong) thực hiện, về cơ bản là nhiệm vụ mà chương trình ở câu b đã làm, chỉ khác là chương trình ở câu b luôn cho dòng chữ chạy ở dòng 12, còn ở thủ tục ChuChay(s, dong) có tham số dong quy định ở dòng nào trên màn hình xảy ra chuyển động của chữ. Từ ý nghĩa sử dụng tham số dong ta thấy chỉ cần khai báo nó là tham số giá trị. Như vậy, thủ thục ChuChay(s,dong) chỉ viết khác thân chương trình ở câu b một vài chỗ, chẳng hạn: Procedure ChuChay (s1 : str79; dong: byte) ; var s2 : str79 ; stop: boolean ; begin clrscr ; CanGiua (s1) ; clrscr; stop:=false; while not (stop) do begin gotoxy (1, dong) ; write (s1) ; delay (100) ; CatDat (s1, s2) ; s1:=s2 ; stop:=keypressed ; end ; end ; Thủ tục ChuChay(s, dong) có sử dụng hai thủ tục CatDan(s1,s2) và CanGiua(s). Do vậy, chương trình sử dụng thủ tục ChuChay vẫn có hai thủ tục đó trong phần khai báo chương trình con, phải đặt phía trên phần khai báo thủ tục ChuChay. Thân chương trình sử dụng thủ tục ChuChay đơn giản vì chỉ cần gọi thu tục này làm việc. Tất nhiên trước đó cần xác định giá trị của xâu chữ cần chạy (xác định giá trị của biến s) và xác định chữ chạy ở dòng nào trên màn hình (xác định tham số thực sự cho tham số dong khi gọi thủ tục ChuChay). Chương trình chính có thêm biến dong thuộc kiểu byte (thực tế là số nguyên dương không vượt quá số dòng của màn hình). Chương trình: Begin Clrscr ; write (‘Nhap xau chu: ’) ; readln (s1) ; write (‘Nhap dong xuat hien: ’) ; readln (dong) ; ChuChay (s1, dong) ; Readln End. KIỂM TRA 15’ TIN HỌC LỚP 11 Sau bài thực hành 6 1/ Tên biến dùng trong chương trình con cĩ thể trùng với tên tên biến trong chương trình chính được hay khơng? a cĩ thể được b khơng thể được c cả hai câu trên d cả ba câu trên đều sai 2/ Thủ tục type str = string[79] procedure tuc(var s: str); var i, j: integer; j:= length(s); j:= (80-j) div 2; for i:=1 to j do s:= ' '+s; end; dùng để làm gì a bổ sung vào đầu xâu s khơng quá 79 ký tự một số dấu cách để xâu s được căn phải dịng 80 ký tự b bổ sung vào đầu xâu s khơng quá 79 ký tự một số dấu cách để xâu s được căn giữa dịng 80 ký tự c bổ sung vào cuối xâu s khơng quá 79 ký tự một số dấu cách để xâu s được căn giữa dịng 80 ký tự d bổ sung vào đầu xâu s khơng quá 79 ký tự một số dấu cách để xâu s được căn trái dịng 80 ký tự 3/ Hàm function so(a,b:real):real; begin if a<b then so:=a else so:=b; end; dùng để làm gì? a so sánh 2 số a,b b tìm số nhỏ hơn trong 2 số a,b c tìm số lớn hơn trong 2 số a,b d thay gia trị số b cho số a 4/ Thủ tục procedure doi(x: integer; var y: integer); var z: integer; begin z:=x; x:=y; y:=z; end; dùng để làm gì a thay giá trị của y cho x b hốn đổi giá trị của x và y c thay giá trị của x cho y d cả ba câu trên đều sai 5/ Cĩ thể viết một chương trình con khơng cĩ tham số hình thức và cũng khơng cĩ các biến khai báo cục bộ trong chương trình con hay khơng? a cĩ thể được b khơng thể được c cả hai câu trên d cả ba câu trên đều sai 6/ Hàm function ham(Var a,b:Vector;n:Byte):Real; Var i:integer; s:real; Begin s:=0; for i:=1 to n do s:=s+a[i]*b[i]; ham:=s End; dùng để làm gì giữa hai biến a,b a tính hiệu 2 véctơ b tính tích vơ hướng 2 véctơ c tính tổng 2 véctơ d cả ba câu trên đều sai 7/ Cĩ thể dùng chương trình con để viết chương trình mà khơng dùng câu lệnh ghép hay khơng? a khơng thể được b cĩ thể được c cả hai câu trên d cả ba câu trên đều sai 8/ Hàm function chu(c:char):char; begin if (c>='A') and (c<='Z') then chu:=chr(ord(c)+32) else chu:=c end; dùng để làm gì với biến c a thay chữ cái hoa thành chữ cái thường và thay chữ cái thường thành chữ cái hoa b thay chữ cái thường đầu từ thành chữ cái hoa c thay chữ cái thường thành chữ cái hoa d thay chữ cái hoa thành chữ cái thường 9/ Thủ tục type str = string[20]; procedure thu(s:str;var v:str); begin v:=copy(s,2,length(s)-1)+s[1] end; dùng để làm gì a chuyển ký tự đầu tiên của xâu s 20 ký tự xuống vị trí cuối cùng b chuyển ký tự đầu tiên của xâu s khơng quá 20 ký tự xuống vị trí cuối cùng c chuyển ký tự cuối cùng của xâu s khơng quá 20 ký tự lên vị trí đầu tiên d chuyển ký tự cuối cùng của xâu s 20 ký tự lên vị trí đầu tiên 10/ Trong chương trình con khi nào nên tổ chức truyền tham biến a các biến cần nhiều bộ nhớ b các biến khơng cần nhiều bộ nhớ c cả hai câu trên d cả ba câu trên đều sai ¤ Đáp án của đề thi: 1[ 1]a... 2[ 1]b... 3[ 1]b... 4[ 1]b... 5[ 1]a... 6[ 1]b... 7[ 1]b... 8[ 1]d... 9[ 1]b... 10[ 1]a...
Tài liệu đính kèm: