{"event_info":{"picture":"https://img.loigiaihay.com/picture/event/2017/0125/1-0.jpg","title":"Bài tập và thực hành 6","display_type":1,"cat_id":155,"cat_title":"SGK Tin học lớp 11","alias":"bai-tap-va-thuc-hanh-6","introtext":"","content_box_above":"","type":"event","page_builder":"","item_id":4785,"item_type":2},"list_articles":[{"article_id":25200,"cat_id":155,"publish_time":1486366680,"type_ex":2,"is_hot":0,"is_link":0,"thumbnail":"https://img.loigiaihay.com/picture/article/2017/0125/resize_2-0_2.jpg","title":"Bài tập và thực hành 6 trang 103 SGK Tin học 11","label":"Bài tập và thực hành 6 trang 103 SGK Tin học 11","alias":"bai-tap-va-thuc-hanh-6-trang-103-sgk-tin-hoc-11","introtext":"Trước hết, hãy tìm hiểu việc xây dựng hai thủ tục sau đây:","display_type":1,"article_type":1,"content":"<style>\r\n.method-close-icon{position: relative;float: right;top: 6px;transform: rotate(270deg);-ms-transform:rotate(270deg);-moz-transform:rotate(270deg);-webkit-transform:rotate(270deg);-o-transform:rotate(270deg);}\r\n.method-open-icon{position: relative;float: right;top: 6px;}\r\n</style>\r\n<p><strong style=\"font-size: 16px;\">Lời giải chi tiết</strong></p><p class=\"Bodytext30\" align=\"left\"><strong>1. Mục đích, yêu cầu</strong></p>\r\n<p>- Rèn luyện các thao tác xử lí xâu, kĩ năng tạo hiệu ứng chữ chạy trên màn hình;</p>\r\n<p>- Nâng cao kĩ năng viết, sử dụng chương trình con.</p>\r\n<p><strong>2. Nội dung</strong></p>\r\n<p class=\"Bodytext0\" align=\"left\">a) Trước hết, hãy tìm hiểu việc xây dựng hai thủ tục sau đây:</p>\r\n<p>- Thủ tục CatDan(s1,s2) nhận đầu vào là xâu s1 gồm không quá 79 kí tự, tạo xâu s2 thu được từ xâu sl bằng việc chuyển kí tự đầu tiên của nó xuống vị trí cuối cùng. Ví dự nếu s1 = ‘abcd’ thì s2= ‘bcda'</p>\r\n<p class=\"Bodytext80\">Type Str79= string[79];</p>\r\n<p class=\"Bodytext80\">Procedure CatDan (s1: Str79; var s2 : Str79) ;</p>\r\n<p class=\"Bodytext80\">Begin</p>\r\n<p class=\"Bodytext80\">S2:= copy(s1,2,length(s1)-1)+s1 [1];</p>\r\n<p class=\"Bodytext80\">End;</p>\r\n<p>- 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 s một số dấu cách để khi đưa ra màn hình xâu kí tự trong s ban đầu được căn giữa dòng gồm 80 kí tự.</p>\r\n<p class=\"Bodytext80\">Procedure CanGiua(var s: Str79);</p>\r\n<p class=\"Bodytext80\">Var i, n: integer;</p>\r\n<p class=\"Bodytext270\" align=\"left\">Begin</p>\r\n<p>n:= length(s);</p>\r\n<p>n:= (80-n) div 2;</p>\r\n<p>for i:= 1 to n do s:= ' ' + s;</p>\r\n<p>end;</p>\r\n<p class=\"Bodytext0\">b) Theo dõi cách sử dụng hai thủ tục trên, ta có thể viết chương trình sau đây để 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 25x80.</p>\r\n<p class=\"Bodytext80\">uses crt;</p>\r\n<p class=\"Bodytext80\">type str7 9 string [79];</p>\r\n<p class=\"Bodytext80\">var s1,s2 : Str79;</p>\r\n<p>stop: boolean; procedure CatDan(si: Str79; var s2: Str79);</p>\r\n<p>begin</p>\r\n<p class=\"Bodytext80\">s2:= copy(s1,2,length(s1)-1)+sl[1];</p>\r\n<p class=\"Bodytext80\">end</p>\r\n<p class=\"Bodytext80\">procedure CanGiua(var s: Str79);</p>\r\n<p class=\"Bodytext80\">var i, n: integer;</p>\r\n<p class=\"Bodytext80\">begin</p>\r\n<p class=\"Bodytext80\">n := length (s) ,</p>\r\n<p class=\"Bodytext80\">n := (80-n)div 2;</p>\r\n<p class=\"Bodytext80\">for i:= 1 to n do s:=' '+s;</p>\r\n<p class=\"Bodytext80\">end;</p>\r\n<p class=\"Bodytext80\">begin</p>\r\n<p class=\"Bodytext80\">clrscr;</p>\r\n<p class=\"Bodytext80\">write ( Nhap xau s1:');</p>\r\n<p class=\"Bodytext80\">readln(s1);</p>\r\n<p class=\"Bodytext80\">CanGiua(s1) ; clrscr;</p>\r\n<p class=\"Bodytext270\" align=\"left\">while Not(stop) do</p>\r\n<p class=\"Bodytext270\" align=\"left\">begin</p>\r\n<p class=\"Bodytext80\">gotoxy(1,12); (*chuyen con tro den dau dong 12*)</p>\r\n<p class=\"Bodytext80\">write (s1);</p>\r\n<p class=\"Bodytext80\">delay(500); (*Dung 500 miligiay*)</p>\r\n<p class=\"Bodytext80\">Catean (s1, s2 )</p>\r\n<p class=\"Bodytext80\">s1 : =s2;</p>\r\n<p class=\"Bodytext80\">stop:=keypresGed; (*nhan mot phim bat ky de ket thuc*)</p>\r\n<p class=\"Bodytext80\">end;</p>\r\n<p class=\"Bodytext80\">readln</p>\r\n<p class=\"Bodytext80\">End.</p>\r\n<div class=\"WordSection1\">\r\n<p class=\"Bodytext0\" align=\"left\">Hãy chạy thử chương trình trên với dòng chữ</p>\r\n<p class=\"Bodytext80\">\" ...Mung nghin nam Thang Long — Ha Noi!...'</p>\r\n<p class=\"Bodytext0\">c) 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ó sử dụng thủ tục này.</p>\r\n<p class=\"Bodytext0\" style=\"text-align: right;\"> <strong>Loigiaihay.com</strong></p>\r\n</div>"},{"article_id":25201,"cat_id":155,"publish_time":1486366680,"type_ex":2,"is_hot":0,"is_link":0,"thumbnail":"https://img.loigiaihay.com/picture/article/2017/0125/resize_4-0_1.jpg","title":"Hướng dẫn làm bài tập và thực hành 6 trang 103 SGK Tin học 11","label":"Hướng dẫn làm bài tập và thực hành 6 trang 103 SGK Tin học 11","alias":"huong-dan-lam-bai-tap-va-thuc-hanh-6-trang-103-sgk-tin-hoc-11","introtext":"Hai thủ tục CatDan(s1,s2) và CanGiua(s) 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.","display_type":1,"article_type":1,"content":"<style>\r\n.method-close-icon{position: relative;float: right;top: 6px;transform: rotate(270deg);-ms-transform:rotate(270deg);-moz-transform:rotate(270deg);-webkit-transform:rotate(270deg);-o-transform:rotate(270deg);}\r\n.method-open-icon{position: relative;float: right;top: 6px;}\r\n</style>\r\n<p><strong style=\"font-size: 16px;\">Lời giải chi tiết</strong></p><p><strong>1. Mục đích, yêu cầu</strong></p>\r\n<p>- Rèn luyện các thao tác xử lí xâu, kĩ năng tạo hiệu ứng chữ chạy trên màn hình;</p>\r\n<p>- Nâng cao kĩ năng viết, sử dụng chương trình con.</p>\r\n<p><strong>2. Nội dung</strong></p>\r\n<p class=\"Bodytext0\">a) Hai thủ tục CatDan(s1,s2) và CanGiua(s) 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.</p>\r\n<p class=\"Bodytext0\" align=\"left\">- Thủ tục CatDan(s1,s2) tạo nên 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. Ta chỉ cần khai báo s1 là tham số giá trị, nhưng s2 phải khai báo là tham số biến.</p>\r\n<p class=\"Bodytext0\" align=\"left\">- 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. Nếu 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.</p>\r\n<p class=\"Bodytext0\">b) Chương trình làm một dòng chữ chạy trên màn hình. Nó sử dụng hai thủ tục mà chúng ta đã tìm hiểu ở câu a).</p>\r\n<p class=\"Bodytext60\" align=\"left\">Trong chương trình:</p>\r\n<p>- Thủ tục chuẩn 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;</p>\r\n<p>- Thủ tục delay(n) dừng trạng thái của màn hình trong n miligiây.</p>\r\n<p>- Hàm chuẩn keypressed không có tham số trả ra giá trị true khi có một phím được gõ.</p>\r\n<p class=\"Bodytext30\" align=\"left\">Khi chạy chương trình trên với dòng chữ</p>\r\n<p class=\"Bodytext270\" align=\"center\">'....Mung nghin nam Thang Long — Ha Noi!'</p>\r\n<div class=\"WordSection1\">\r\n<p class=\"Bodytext30\" align=\"left\">Kết quả chương trình có dạng như hình 72 dưới đây: </p>\r\n<p class=\"Bodytext30\" align=\"left\"><img src=\"https://img.loigiaihay.com/picture/2017/0125/72.jpg\" alt=\"\" width=\"450\" height=\"254\" /></p>\r\n<p class=\"Bodytext30\" align=\"left\">c) Để giải quyết bài toán tổng quát hơn (xâu chữ chạy ở dòng bất kỳ do chương trình chính quy định). Chúng ta cần lưu ý một số điểm sau:</p>\r\n<p>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ủ tục Chuchay(s, dong) chỉ viết khác thân chương trình ờ câu b) vài chỗ. Chẳng hạn:</p>\r\n<div class=\"WordSection1\">\r\n<p class=\"Bodytext80\">procedure Chuchay(s1:Str79; dong:byte);</p>\r\n<p class=\"Bodytext80\">var s2 : Str79;</p>\r\n<p class=\"Bodytext80\"> stop:boolean;</p>\r\n<p class=\"Bodytext80\">begin</p>\r\n<p class=\"Bodytext80\">clrscr;</p>\r\n<p class=\"Bodytext80\">cangiua(s1);</p>\r\n<p class=\"Bodytext80\">clrscs;</p>\r\n<p class=\"Bodytext80\">stop: = false;</p>\r\n<p class=\"Bodytext80\">while not(stop) do</p>\r\n<p class=\"Bodytext80\">begin</p>\r\n<p class=\"Bodytext80\">gotoxy(1,dong);</p>\r\n<p class=\"Bodytext80\">write(s1);</p>\r\n<p class=\"Bodytext80\">delay(100); (*Dung 100 miligiay*)</p>\r\n<p class=\"Bodytext80\">Catdan(s1,s2); s1:=s2 ;</p>\r\n<p class=\"Bodytext80\">stop:=keypressed;</p>\r\n<p class=\"Bodytext80\">end;</p>\r\n<p class=\"Bodytext80\">end;</p>\r\n<p class=\"Bodytext0\" align=\"left\"><span lang=\"VI\">-  </span><span class=\"BodytextTimesNewRoman\"><span lang=\"VI\">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.</span></span></p>\r\n<p class=\"Bodytext0\" align=\"left\"><span class=\"BodytextTimesNewRoman\"><span lang=\"VI\">- Thân chương trình sử dụng thủ tục ChuChay đơn giản vì chỉ cần gọi thủ </span></span><span class=\"BodytextTimesNewRoman\"><span lang=\"VI\">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 </span></span><span class=\"BodytextTimesNewRoman\">byte </span><span class=\"BodytextTimesNewRoman\"><span lang=\"VI\">(thực tế số nguyên dương không vượt quá số dòng của màn hình).</span></span></p>\r\n<p class=\"Bodytext60\" align=\"left\">Chương trình:</p>\r\n<p class=\"Bodytext80\">Program Xau_chu_chay_o_dong_bat_ky;</p>\r\n<p class=\"Bodytext80\">uses crt;</p>\r\n<p class=\"Bodytext80\">type Str79 = string[79];</p>\r\n<p class=\"Bodytext80\">var s1, s2: Str79;</p>\r\n<p class=\"Bodytext80\">dong: byte; stop: boolean;</p>\r\n<p class=\"Bodytext80\">procedure</p>\r\n<p class=\"Bodytext80\">CatDan(s1: Str79; var s2: Str79);</p>\r\n<p class=\"Bodytext80\">begin</p>\r\n<p class=\"Bodytext80\">s2:= copy(s1,2,length(s1)-1)+s1[1] ;</p>\r\n<p class=\"Bodytext80\">end;</p>\r\n<p class=\"Bodytext80\">procedure</p>\r\n<p class=\"Bodytext80\">CanGiua(var s:str79);</p>\r\n<p class=\"Bodytext80\">var i, n: integer;</p>\r\n<p class=\"Bodytext80\">begin</p>\r\n<p class=\"Bodytext80\">n:= length(s);</p>\r\n<p class=\"Bodytext80\">n:= (80-n)div 2;</p>\r\n<p class=\"Bodytext80\">for i:=1 to n do s:=' '+S;</p>\r\n<p class=\"Bodytext80\">end;</p>\r\n<p class=\"Bodytext80\">procedure Chuchay(s1:Str79; dong:byte);</p>\r\n<p class=\"Bodytext80\">var s2: Str79;</p>\r\n<p class=\"Bodytext80\">stop: boolean;</p>\r\n<p class=\"Bodytext80\">begin</p>\r\n<p class=\"Bodytext80\">clrscr;</p>\r\n<p class=\"Bodytext80\">cangiua(s1);</p>\r\n<p class=\"Bodytext80\">clrscr;</p>\r\n<p class=\"Bodytext80\">stop:= false;</p>\r\n<p class=\"Bodytext80\">while not(stop) do</p>\r\n<p class=\"Bodytext80\">begin</p>\r\n<p class=\"Bodytext80\">gotoxy(1,dong); write(s1);</p>\r\n<p class=\"Bodytext80\">delay(100); (*Dung 100 miligiay*)</p>\r\n<p class=\"Bodytext80\">Catdan(s1,s2); s1:=s2;</p>\r\n<p class=\"Bodytext80\">stop:=keypressed;</p>\r\n<p class=\"Bodytext770\">end ;</p>\r\n<p class=\"Bodytext770\">end.</p>\r\n<p class=\"Bodytext210\">clrscr;</p>\r\n<p class=\"Bodytext770\">vrite('Nhap xau chu:');</p>\r\n<p class=\"Bodytext770\">readln(s1);</p>\r\n<p class=\"Bodytext770\">vrite('Nhap đong xuat hien:');</p>\r\n<p class=\"Bodytext770\">readln(dong);</p>\r\n<p class=\"Bodytext80\">ChuChay(s1, dong);</p>\r\n<p class=\"Bodytext770\">readln</p>\r\n<p class=\"Bodytext80\">END</p>\r\n<p class=\"Bodytext0\" align=\"left\"><span class=\"BodytextTimesNewRoman\"><span lang=\"FR\">Khi </span></span><span class=\"BodytextTimesNewRoman\"><span lang=\"VI\">chạy chương trình trên, giả sử ta nhập vào xâu:</span></span></p>\r\n<p class=\"Bodytext0\" align=\"left\"><span class=\"BodytextTimesNewRoman\"><span lang=\"VI\">' Xin chao cac ban ! ' thì ngay sau đó sẽ xuất hiện một dòng yêu cầu ' Nhap dong Xuat hien:' của xâu vừa nhập vào (chẳng hạn, ở dòng 15)(Hình 73)</span></span></p>\r\n<p class=\"Bodytext0\" align=\"left\"><span class=\"BodytextTimesNewRoman\"><span lang=\"VI\"><img src=\"https://img.loigiaihay.com/picture/2017/0125/73.jpg\" alt=\"\" width=\"450\" height=\"79\" /></span></span></p>\r\n<p class=\"Bodytext0\" align=\"left\"><span class=\"BodytextTimesNewRoman\"><span lang=\"VI\">Kết quả của chương trình sẽ là một dòng chữ chạy ở dòng 15 trên màn hình có dạng như hình 74 dưới đây:</span></span></p>\r\n<p class=\"Bodytext0\" align=\"left\"><span class=\"BodytextTimesNewRoman\"><span lang=\"VI\"><img src=\"https://img.loigiaihay.com/picture/2017/0125/74.jpg\" alt=\"\" width=\"450\" height=\"249\" /></span></span></p>\r\n<p class=\"Bodytext0\" style=\"text-align: right;\" align=\"left\"><span class=\"BodytextTimesNewRoman\"><span lang=\"VI\"><strong>Loigiaihay.com</strong></span></span></p>\r\n</div>\r\n</div>"}],"most_views":[{"article_id":25200,"cat_id":155,"publish_time":1486366680,"is_hot":0,"is_link":0,"thumbnail":"https://img.loigiaihay.com/picture/article/2017/0125/resize_2-0_2.jpg","title":"Bài tập và thực hành 6 trang 103 SGK Tin học 11","alias":"bai-tap-va-thuc-hanh-6-trang-103-sgk-tin-hoc-11","introtext":"Trước hết, hãy tìm hiểu việc xây dựng hai thủ tục sau đây:","display_type":1},{"article_id":25201,"cat_id":155,"publish_time":1486366680,"is_hot":0,"is_link":0,"thumbnail":"https://img.loigiaihay.com/picture/article/2017/0125/resize_4-0_1.jpg","title":"Hướng dẫn làm bài tập và thực hành 6 trang 103 SGK Tin học 11","alias":"huong-dan-lam-bai-tap-va-thuc-hanh-6-trang-103-sgk-tin-hoc-11","introtext":"Hai thủ tục CatDan(s1,s2) và CanGiua(s) 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.","display_type":1}],"list_sub_event":[],"top_banner":"","cfg_info":{"last_cfg_time":"1521866679","ad.popup_frequency":"0","ad.adsense.detail_bottom.unit_id":"ca-app-pub-8529835372050931/9927553003","ad.adsense.popup.unit_id":"ca-app-pub-8529835372050931/2161779402","current.force.update.version":"181","support.email":"loigiaihay.com@gmail.com","support.fanpage":"https://www.facebook.com/Loigiaihay/","popup_rating_after":"86400","admob.app_id":"ca-app-pub-8529835372050931~4358271409","admob.unit.article_detail_bottom":"ca-app-pub-8529835372050931/1883637630","admob.unit.article_detail_top":"ca-app-pub-8529835372050931/8604898230","admob.unit.event_article_top":"ca-app-pub-8529835372050931/7406887709","admob.unit.interestial":"ca-app-pub-8529835372050931/2741937409","ios_appstore_link":"https://itunes.apple.com/us/app/loigiaihay/id1209891610?mt=8","android_appstore_link":"https://play.google.com/store/apps/details?id=com.tp.loigiaihay","min_version":"2.1.3","latest_version":"1.3.9","force_update":false},"popup_ads":[]}