Giáo án Tin học Lớp 8 (Bản hay)

20 7 0
Giáo án Tin học Lớp 8 (Bản hay)

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Hai bước cơ bản để tạo ra các chương trình máy tính là 1 viết chương trình theo ngôn ngữ lập trình và 2 dịch chương trình thành ngôn ngữ máy để máy tính hiểu được và kết quả là tệp tin c[r]

(1)Bµi M¸y tÝnh và chương trình máy tính C©u hái vµ bµi tËp Khi soạn thảo văn trên máy tính và yêu cầu chương trình tìm kiếm cụm từ văn và thay cụm từ khác, thực chất ta đã yêu cầu máy tính thực lệnh gì? Có thể thay đổi thứ tự lệnh đó mà không thay đổi kết không? Trong ví dụ rô-bốt, thay đổi thứ tự hai lệnh chương trình, rô-bốt có thực công việc nhặt rác không? Hãy xác định vị trí cña r«-bèt sau thùc hiÖn xong lÖnh “H·y quÐt nhµ” vµ ®­a c¸c lÖnh để rô-bốt trở lại vị trí ban đầu mình Hãy cho biết lí cần phải viết chương trình để điều khiển máy tính Tại người ta phải tạo các ngôn ngữ lập trình có thể điều khiÓn m¸y tÝnh b»ng ng«n ng÷ m¸y? Chương trình dịch làm gì? Hãy cho biết các bước cần thực để tạo các chương trình máy tính Hướng dẫn trả lời Khi soạn thảo văn trên máy tính và yêu cầu chương trình tìm kiếm cụm từ văn và thay cụm từ khác, thực chất ta đã yªu cÇu m¸y tÝnh thùc hiÖn rÊt nhiÒu lÖnh Cã thÓ m« t¶ c¸c lÖnh víi c¸c mức độ chi tiết khác Dưới đây mô tả lệnh theo trËt tù thùc hiÖn viÖc thay thÕ mét côm tõ t×m ®­îc: Sao chÐp côm tõ cÇn t×m vµo bé nhí (ta gäi ®©y lµ côm tõ 1) Sao chÐp côm tõ sÏ thay thÕ côm tõ t×m ®­îc vµo bé nhí (côm tõ 2) T×m côm tõ v¨n b¶n Xãa côm tõ t×m ®­îc v¨n b¶n Sao chÐp côm tõ vµo vÞ trÝ trá v¨n b¶n Dưới đây mô tả cách chi tiết hơn: Sao chÐp d·y kÝ tù cÇn t×m vµo bé nhí (d·y 1) Sao chÐp d·y kÝ tù sÏ thay thÕ d·y kÝ tù t×m ®­îc vµo bé nhí (d·y 2) Lop8.net (2) Đặt trỏ trước kí tự đầu tiên văn Sao chép dãy kí tự (tính từ vị trí trỏ sang phải) có độ dài dãy kÝ tù cÇn t×m vµo bé nhí (d·y 3) So sánh dãy và dãy Nếu dãy không trùng với dãy 1, chuyển đến lÖnh Xãa d·y v¨n b¶n Sao chÐp d·y vµo vÞ trÝ trá so¹n th¶o v¨n b¶n Di chuyÓn trá sang ph¶i mét kÝ tù vµ quay l¹i lÖnh Qua các lệnh liệt kê theo thứ tự nói trên, dễ thấy có thể thay đổi thứ tự thực vài lệnh (1 và 2), nói chung việc thay đổi thứ tự c¸c lÖnh sÏ kh«ng cho kÕt qu¶ mong muèn Nếu thay đổi thứ tự hai lệnh chương trình điều khiển rô-bốt, rôbốt không thực công việc nhặt rác vì rô-bốt không đúng hướng và có thể không tới vị trí có rác, thực việc nhặt rác vị trí không có rác, Ví dụ, thay đổi thứ tự lệnh “Tiến bước” và lệnh “Quay trái, tiến bước”, tác dụng hai lệnh này là “Quay trái và tiến bước” Khi đó rô-bốt nhặt rác vị trí không có rác Nói chung, các lệnh điều khiển rô-bốt hay chương trình cần đưa theo thứ tự xác định cho ta đạt kết mong muốn Trong số ít trường hợp, ta có thể đưa các lệnh khác nhau, đạt kết Ch¼ng h¹n, vÝ dô vÒ r«-bèt, thay cho hai c©u lÖnh ®Çu tiªn, ta cã thÓ điều khiển rô-bốt đến đúng vị trí có rác các lệnh sau: “Quay trái, tiến bước” và “Quay phải, tiến bước” “Quay phải, tiến bước”, “Quay trái, tiến bước” và “Quay trái, tiến bước” Trong số ít các trường hợp khác, việc thay đổi thứ tự vài câu lệnh cho kết đúng nh­ yªu cÇu Tuy nhiên, là nguyên tắc chung, việc thay đổi thứ tự các câu lệnh không cho kết đúng Có thể liên hệ với thứ tự các bước thuật to¸n Bµi VÞ trÝ míi cña r«-bèt sau thùc hiÖn xong lÖnh “H·y quÐt nhµ” lµ vÞ trÝ có thùng rác (ở góc đối diện) Ta có nhiều cách khác để đưa hai lệnh để rô-bốt trở lại vị trí ban đầu mình, các cách đó là hai lệnh “Quay trái, tiến bước” và “Quay trái, tiến bước” Lí do: Điều khiển máy tính tự động thực các công việc đa dạng và phức tạp mà lệnh đơn giản không đủ để dẫn Tuy ng«n ng÷ m¸y còng lµ mét lo¹i ng«n ng÷ lËp tr×nh, nh­ng ë ®©y chóng ta hiÓu ng«n ng÷ lËp tr×nh lµ ng«n ng÷ lËp tr×nh bËc cao Trong ng«n ng÷ Lop8.net (3) máy thị biểu diễn các số nhị phân và Ngôn ngữ máy khó đọc và khó sử dụng, ngôn ngữ máy là ngôn ngữ nhÊt mµ bé vi xö lÝ cã thÓ nhËn biÕt vµ thùc hiÖn mét c¸ch trùc tiÕp Ngoµi yếu điểm chính các chương trình viết ngôn ngữ máy là phụ thuéc vµo phÇn cøng m¸y tÝnh Các ngôn ngữ lập trình bậc cao phát triển để khắc phục các yếu điểm tr©n cña ng«n ng÷ m¸y Ng«n ng÷ lËp tr×nh sö dông c¸c côm tõ tù nhiªn nªn dÔ nhí, dÔ häc vµ kh«ng phô thuéc vµo phÇn cøng m¸y tÝnh Chương trình dịch là chương trình có chức chuyển đổi chương trình viết ngôn ngữ lập trình thành chương trình thực trên máy tính Như vậy, chương trình dịch chuyển đổi tệp gồm các dòng lệnh ®­îc so¹n th¶o thµnh tÖp cã thÓ ch¹y trªn m¸y tÝnh Hai bước để tạo các chương trình máy tính là (1) viết chương trình theo ngôn ngữ lập trình và (2) dịch chương trình thành ngôn ngữ máy để máy tính hiểu và kết là tệp tin có thể thực trên máy tính Lưu ý rằng, đây là hai bước lập trình và là phÇn cña c«ng viÖc gi¶i quyÕt bµi to¸n b»ng m¸y tÝnh Lop8.net (4) Bµi Lµm quen víi Ng«n ng÷ lËp tr×nh C©u hái vµ bµi tËp H·y cho biÕt c¸c thµnh phÇn c¬ b¶n cña mét ng«n ng÷ lËp tr×nh Ta có thể viết các chương trình các câu lệnh có các chữ cái tiếng ViÖt, ch¼ng h¹n “rÏ tr¸i”, ®­îc kh«ng? T¹i sao? Tên chương trình là gì? Cho biết khác biệt từ khóa và tên, cách đặt tên chương trình Trong số các tên sau đây người viết chương trình đặt chương tr×nh Pascal, tªn nµo lµ hîp lÖ vµ tªn nµo kh«ng hîp lÖ: a, Tamgiac, 8a, Tam giac, beginprogram, end, b1, abc? Hãy cho biết các phần chính cấu trúc chương trình và vai trò chúng Trong các phần đó, phần nào là quan trọng nhất? Hãy cho biết chương trình Pascal sau đây có hợp lệ không, sao? a) Chương trình begin end b) Chương trình begin program CT_thu; writeln('Chao cac ban'); end Hướng dẫn trả lời C¸c thµnh phÇn c¬ b¶n ng«n ng÷ lËp tr×nh gåm b¶ng ch÷ c¸i vµ c¸c quy t¾c để viết các câu lệnh (cú pháp) có ý nghĩa xác định, cách bố trí các câu lệnh, cho có thể tạo thành chương trình hoàn chỉnh và chạy trên máy tính Lưu ý các quy tắc nhắc đến đây bao gồm các thuật ng÷ chuyªn m«n lµ có ph¸p vµ ng÷ nghÜa Xem SGK, Môc 2, Bµi 2 Không Các cụm từ sử dụng chương trình (từ khóa, tên) phải viÕt b»ng c¸c ch÷ c¸i b¶ng ch÷ c¸i cña ng«n ng÷ lËp tr×nh C¸c ng«n ngữ lập trình phổ biến có bảng chữ cái là bảng chữ cái tiếng Lop8.net (5) Anh và các kí hiệu khác, đó không có các chữ cái có dấu tiếng ViÖt Lưu ý câu hỏi bài là “viết chương trình các câu lệnh ” Điều này không có nghĩa là chương trình không thể có các chữ cái có dÊu cña tiÕng ViÖt (hay cña mét ng«n ng÷ kh¸c) nh­ lµ d÷ liÖu d¹ng v¨n cần xử lí Các chữ có dấu đó ngôn ngữ lập trình xử lý mã kí tự tương ứng các bảng mã ASCII mở rộng Ví dụ chương trình Pascal sau ®©y hoµn toµn hîp lÖ: begin program CT_thu; writeln(' Chµo c¸c b¹n'); end Tên chương trình là dãy các chữ cái hợp lệ lấy từ bảng chữ cái cña ng«n ng÷ lËp tr×nh Tõ kho¸ cña mét ng«n ng÷ lËp tr×nh (hay cßn ®­îc gọi là từ dành riêng) là tên dùng cho các mục đích sử dụng ngôn ngữ lập trình quy định, không dùng cho bất kì mục đích nào kh¸c Người lập trình có thể đặt tên cách tùy ý phải tuân thủ các quy tắc ngôn ngữ lập trình chương trình dịch, đó (1) Hai đại lượng khác phải có tên khác nhau; (2) Tên không trùng víi c¸c tõ kho¸ C¸c tªn hîp lÖ: a, Tamgiac, beginprogram, b1, abc, tªn kh«ng hîp lÖ: 8a (b¾t ®Çu b»ng sè), Tam giac (cã dÊu c¸ch), end (trïng víi tõ khãa) Xem SGK, Môc 4, Bµi a) Chương trình là chương trình Pascal đầy đủ và hoàn toàn hợp lệ, mặc dù chương trình này chẳng thực điều gì Phần thiết phải có chương trình là phần thân chương trình đảm bảo hai từ begin vµ end (cã dÊu chÊm) b) Chương trình là chương trình Pascal không hợp lệ vì câu lệnh khai báo tên chương trình program CT_thu; nằm phần thân chương trình Lop8.net (6) Bài Chương trình máy tính Vµ D÷ LIÖU C©u hái vµ bµi tËp H·y nªu Ýt nhÊt mét lÝ cho thÊy sù cÇn thiÕt ph¶i ph©n chia d÷ liÖu thµnh c¸c kiÓu! H·y nªu Ýt nhÊt hai kiÓu d÷ liÖu vµ mét phÐp to¸n cã thÓ thùc hiÖn ®­îc trên kiểu liệu, phép toán đó không có nghĩa trên kiểu liệu Cho dãy chữ số 2010 Dãy chữ số đó có thể thuộc kiểu liệu nào? Cho hai xâu kí tự “Lớp” và “8A” Hãy thử định nghĩa “phép toán” có thể thực trên hai xâu kí tự đó H·y ph©n biÖt ý nghÜa cña c¸c c©u lÖnh Pascal sau ®©y: Writeln('5+20=','20+5'); vµ Writeln('5+20=',20+5); Hai lệnh sau có tương đương với không? Tại sao? Writeln('100'); vµ Writeln(100); Viết các biểu thức toán đây với các kí hiệu Pascal: a a c  b d b ax  bx  c c a  (b  2) x d (a  b)(1  c)3 ChuyÓn c¸c biÓu thøc ®­îc viÕt Pascal sau ®©y thµnh c¸c biÓu thøc to¸n: a (a+b)*(a+b)-x/y b b/(a*a+c) c a*a/(2*b+c)*(2*b+c) d 1+1/2+1/2*3+1/3*4+1/4*5 Lop8.net (7) Hãy xác định kết các phép so sánh sau đây: a 15  ≥ b (20  15)2 ≠ 25 c 112 = 121 d x > 10  3x ViÕt c¸c phÐp so s¸nh Bµi tËp víi c¸c kÝ hiÖu Pascal 10 Nêu số ví dụ tương tác người và máy tính chương trình hoạt động Hướng dẫn trả lời V× d÷ liÖu vµ c¸c thao t¸c xö lÝ d÷ liÖu rÊt ®a d¹ng, lÝ dÔ nhËn thÊy nhÊt là việc phân chia liệu thành các kiểu giúp xác định các phép xử lí (phép to¸n) cã thÓ thùc hiÖn trªn mçi kiÓu d÷ liÖu Ngoµi viÖc ph©n chia kiÓu d÷ liÖu cßn cho biÕt c¸c gi¸ trÞ cã thÓ (ph¹m vi) cña d÷ liÖu, gióp cho viÖc quản lý tài nguyên máy tính (đặc biệt là nhớ trong) cách hiệu qu¶ Cã thÓ nªu c¸c vÝ dô sau ®©y: a Dữ liệu kiểu số và liệu kiểu xâu kí tự Phép cộng định nghĩa trªn d÷ liÖu sè, nh­ng kh«ng cã nghÜa trªn d÷ liÖu kiÓu x©u b D÷ liÖu kiÓu sè nguyªn vµ d÷ liÖu kiÓu sè thùc PhÐp chia lÊy phÇn nguyªn vµ phÐp chia lÊy phÇn d­ cã nghÜa trªn d÷ liÖu kiÓu sè nguyªn, nh­ng kh«ng cã nghÜa trªn d÷ liÖu kiÓu sè thùc D·y ch÷ sè 2010 cã thÓ thuéc kiÓu d÷ liÖu sè nguyªn, sè thùc hoÆc kiÓu xâu kí tự Tuy nhiên, để chương trình dịch Turbo Pascal hiểu 2010 là liệu kiểu xâu, chúng ta phải viết dãy số này cặp dấu nháy đơn (’) var a: real; b: integer; begin writeln('123'); writeln(123); a:=2010; b:=2010; end Cho hai xâu kí tự “Lớp” và “8A” Có thể định nghĩa nhiều “phép toán” trên tËp hîp c¸c d÷ liÖu kiÓu x©u Ch¼ng h¹n phÐp ghÐp: Líp + 8A = Líp8A Lop8.net (8) LÖnh Writeln('5+20=','20+5'); in mµn h×nh hai x©u ký tù '5+20' vµ '20+5' liÒn nhau: 5+20 = 20+5, cßn lÖnh Writeln('5+20=',20+5); in mµn h×nh x©u ký tù '5+20' vµ tæng cña 20+5 nh­ sau: 5+20=25 Hai lệnh Writeln('100'); và Writeln(100); không tương đương víi v× mét lÖnh in mµn h×nh x©u ký tù biÓu diÔn sè 100 cßn lÖnh in mµn h×nh sè 100 C¸c biÓu thøc Pascal: a a/b+c/d b a*x*x+b*x+c c 1/x-a/5*(b+2) d (a*a+b)*(1+c)*(1+c)*(1+c) Các biểu thức toán tương ứng: a (a  b)  b b a c c a2 (2b  c) x y d  1 1    2.3 3.4 4.5 KÕt qu¶ cña c¸c phÐp so s¸nh: a §óng b Sai c §óng d Đúng x > 2.5; ngược lại, phép so sánh có kết sai a) 15-8>=3; b) (20-15)*(20-15)<>25; c) 11*11=121; d) x>10-3*x 10 Một số ví dụ tương tác người và máy tính chương trình hoạt động: thông báo kết tính toán hay trạng thái hoạt động chương trình, nhập liệu, tạm ngừng chương trình Xem SGK, Mục 4, Bài 10 Lop8.net (9) Bµi Sö DôNG biÕn TRONG CH¦¥NG TR×NH C©u hái vµ bµi tËp BiÕn lµ g×? H·y cho biÕt phÐp g¸n gi¸ trÞ cho mét biÕn lµ g×, cho vÝ dô vµ gi¶i thÝch Khai báo biến gồm gì? Hãy thử mô tả hoạt động máy tính thực lệnh khai báo biến chương trình Gi¶ sö A ®­îc khai b¸o lµ biÕn víi kiÓu d÷ liÖu sè thùc, X lµ biÕn víi kiÓu d÷ liÖu x©u C¸c phÐp g¸n sau ®©y cã hîp lÖ kh«ng? a) G¸n sè nguyªn cho biÕn A b) G¸n sè 3242 cho biÕn X c) G¸n x©u ‘3242’ cho biÕn X d) G¸n x©u ‘Ha Noi’ cho biÕn A Nªu sù kh¸c gi÷a biÕn vµ h»ng vµ cho mét vµi vÝ dô vÒ biÕn vµ h»ng Giả sử ta đã khai báo Pi với giá trị 3.14 Có thể gán lại giá trị 3.1415 cho Pi phần thân chương trình không? Tại sao? Trong Pascal, khai báo nào sau đây là đúng? a) var tb: real; b) var 4hs: integer; c) const x: real; d) var R = 30; Hãy liệt kê các lỗi có thể chương trình đây và sửa lại cho đúng: var a,b:= integer; const c:= 3; begin a:= 200 b:= a/c; write(b); readln 11 Lop8.net (10) end Hãy cho biết kiểu liệu các biến cần khai báo dùng để viết chương trình để giải các bài toán đây: a) Tính diện tích S hình tam giác với độ dài cạnh a và chiều cao tương ứng h (a và h là các số tự nhiên nhập vào từ bàn phÝm) b) TÝnh kÕt qu¶ c cña phÐp chia lÊy phÇn nguyªn vµ kÕt qu¶ d cña phÐp chia lÊy phÇn d­ cña hai sè nguyªn a vµ b Gi¶ sö cÇn lËp danh s¸ch c¸c b¹n líp vµ ghi l¹i ®iÓm thi m«n Tin häc cña mçi b¹n (®iÓm chØ lµ sè nguyªn) vµ tÝnh ®iÓm trung b×nh m«n Tin häc toàn lớp Nếu cần viết chương trình, em cần sử dụng biến nào cho mçi b¹n? 10 Viết chương trình tính diện tích và chu vi đường tròn có bán kính r, đó r là số nguyên dương nhập từ bàn phím Hướng dẫn trả lời Xét mặt lập trình, biến đại lượng dùng để lưu trữ liệu và liệu biến lưu trữ có thể thay đổi thực chương trình Xét mÆt l­u tr÷ d÷ liÖu, cã thÓ xem biÕn lµ “tªn” cña mét vïng nhí ®­îc dµnh sẵn để lưu liệu suốt quá trình thực chương trình Gán giá trị cho biến thực chất là lưu liệu tương ứng vào vùng nhớ đặt tên và dành riêng cho biến Việc thực các tính toán và xử lí với biến có nghĩa là thực tính toán và xử lí với liệu gán đó Gi¶ sö X ®­îc khai b¸o lµ biÕn víi kiÓu d÷ liÖu sè nguyªn vµ X ®­îc g¸n d÷ liệu là số Sau khai báo, chương trình dành riêng vùng nhớ nào đó cho biến X, và gán cho X thì vùng nhớ đó lưu liệu Lệnh ghi X mµn h×nh cã nghÜa lµ ghi sè mµn h×nh Lưu ý Khi vùng nhớ khai báo để lưu liệu làm giá trị biến, vùng nhớ đó không phép sử dụng vào mục đích khác Do vËy, mét nh÷ng kÜ n¨ng lËp tr×nh lµ sö dông cµng Ýt biÕn cµng tèt, là trường hợp việc sử dụng nhớ bị hạn chế Nhưng với công nghệ nay, nhớ máy tính đã có dung lượng lớn nên vấn đề hạn chế sử dụng biến chương trình đã không còn là vấn đề cấp thiết ViÖc khai b¸o biÕn gåm: Khai b¸o tªn biÕn vµ khai b¸o kiÓu d÷ liÖu cña biÕn Khi khai báo biến, ngoài việc tên biến đưa vào danh sách các đối tượng quản lí, máy tính (thông qua chương trình dịch) xác định kiểu 12 Lop8.net (11) biến và dành vùng nhớ có độ lớn thích hợp với phạm vi kiểu biến để lưu giá trị biến Ví dụ, để lưu các giá trị là số nguyên, khai báo biến kiểu byte, máy tính dành vùng nhớ có độ lớn byte, khai báo biến kiểu nguyên, máy tính dành vùng nhớ có độ lớn byte, hoÆc vïng nhí byte ®­îc dµnh cho biÕn ®­îc khai b¸o víi kiÓu sè thùc, Nhê thÕ viÖc sö dông bé nhí sÏ hiÖu qu¶ h¬n Ngoµi m¸y tÝnh sÏ biết áp dụng các phép toán thích hợp giá trị biến §¸p ¸n: a) Hîp lÖ; b) Kh«ng hîp lÖ; c) Hîp lÖ; d) Kh«ng hîp lÖ Mặc dù cùng phải khai báo trước có thể sử dụng chương tr×nh, sù kh¸c gi÷a biÕn vµ h»ng lµ ë chç gi¸ trÞ cña h»ng kh«ng thay đổi suốt quá trình thực chương trình, còn giá trị biến thì có thể thay đổi thời điểm thực chương trình Không thể gán lại giá trị 3.1415 cho Pi phần thân chương trình vì giá trị không thay đổi suốt quá trình thực chương trình a) Hîp lÖ; b) Kh«ng hîp lÖ v× tªn biÕn kh«ng hîp lÖ; c) Kh«ng hîp lÖ v× h»ng ph¶i ®­îc cho gi¸ trÞ khai b¸o; d) c) Kh«ng hîp lÖ v× biÕn kh«ng gán giá trị khai báo, cách gán giá trị không đúng cú pháp Các lỗi chương trình: (1) Thừa dấu dòng (chỉ cần dấu hai chÊm); (2) Thõa dÊu hai chÊm ë dßng (víi h»ng chØ cÇn dÊu b»ng); (3) ThiÕu dÊu chÊm phÈy ë dßng 4; (4) Khai b¸o kiÓu d÷ liÖu cña biÕn b kh«ng phï hîp: Khi chia hai sè nguyªn, kÕt qu¶ lu«n lu«n lµ sè thùc, cho dï cã chia hết hay không Do đó cần phải khai báo biến b là biến có kiểu liệu sè thùc C¸ch khai b¸o hîp lý: a) C¸c biÕn a vµ h lµ kiÓu sè nguyªn; biÕn S: kiÓu sè thùc b) C¶ bèn biÕn a, b, c vµ d lµ c¸c kiÓu sè nguyªn CÇn sö dông c¸c biÕn sau ®©y víi mçi häc sinh líp: Ten lµ biÕn kiÓu x©u, Diem lµ biÕn kiÓu sè nguyªn vµ Trungbinh lµ biÕn kiÓu sè thùc 10 Chương trình Pascal có thể sau đây: uses crt; var r: integer; C,S: real; begin clrscr; write('Nhap ban kinh r = '); readln(r); C:=2*Pi*r; 13 Lop8.net (12) S:=Pi*r*r; writeln(' Chu vi duong tron bang ',C:8:2); writeln('Dien tich hinh tron bang ',S:8:2); end 14 Lop8.net (13) Bµi Tõ BµI TO¸N §ÕN CH¦¥NG TR×NH C©u hái vµ bµi tËp H·y chØ INPUT vµ OUTPUT cña c¸c bµi to¸n sau: a) Xác định số học sinh lớp cùng mang họ Trần b) Tính tổng các phần tử lớn dãy n số cho trước c) Tìm số các số có giá trị nhỏ n số đã cho Gi¶ sö x vµ y lµ c¸c biÕn sè H·y cho biÕt kÕt qu¶ cña viÖc thùc hiÖn thuËt to¸n sau:  Bước x  x + y  Bước y  x - y  Bước x  x - y Cho trước ba số dương a, b và c Hãy mô tả thuật toán giải ghi kết ba số đó có thể là ba cạnh tam giác hay không Cho hai biến x và y Hãy mô tả thuật toán đổi giá trị các biến nói trên để x và y có giá trị tăng dần Cho ba biến x, y và z Hãy mô tả thuật toán đổi giá trị các biến nói trên để x, y và z có giá trị tăng dần Hãy xem lại Ví dụ để tham khảo H·y m« t¶ thuËt to¸n tÝnh tæng c¸c phÇn tö cña d·y sè a1, a2, , an cho trước H·y m« t¶ thuËt to¸n nhËp n sè a1, a2, , an tõ bµn phÝm vµ ghi mµn hình số nhỏ các số đó Số n nhập từ bàn phím H·y m« t¶ thuËt to¸n gi¶i c¸c bµi to¸n sau: a) Đếm số các số dương dãy số A = {a1, a2, , an} cho trước 15 Lop8.net (14) b) Hãy mô tả thuật toán tính tổng các số dương dãy số A = {a1, a2, , an} cho trước Hướng dẫn trả lời §¸p ¸n: a) INPUT: Danh s¸ch hä cña c¸c häc sinh líp OUTPUT: Sè häc sinh cã hä TrÇn b) INPUT: D·y n sè OUTPUT: Tæng cña c¸c phÇn tö lín h¬n c) INPUT: D·y n sè OUTPUT: Sè c¸c sè cã gi¸ trÞ nhá nhÊt Sau ba bước, x có giá trị ban đầu y và y có giá trị ban đầu x, tức giá trị hai biến x và y hoán đổi cho M« t¶ thuËt to¸n: INPUT: Ba số dương a >0, b >0 và c >0 OUTPUT: Th«ng b¸o “a, b vµ c cã thÓ lµ ba c¹nh cña mét tam gi¸c” hoÆc th«ng b¸o “a, b vµ c kh«ng thÓ lµ ba c¹nh cña mét tam gi¸c” Bước 1: Tính a + b Nếu a + b ≤ c, chuyển tới bước Bước 2: Tính b + c Nếu b + c ≤ c, chuyển tới bước Bước 3: Tính a + c Nếu a + c ≤ b, chuyển tới bước Bước 4: Thông báo “a, b và c có thể là ba cạnh tam giác” và kết thóc thuËt to¸n Bước 5: Thông báo “a, b và c không thể là ba cạnh tam giác” và kÕt thóc thuËt to¸n Cã thÓ gi¶i bµi to¸n nµy b»ng c¸ch sö dông mét biÕn phô hoÆc kh«ng dïng biÕn phô ThuËt to¸n Sö dông biÕn phô z INPUT: Hai biÕn x vµ y OUTPUT: Hai biÕn x vµ y cã gi¸ trÞ t¨ng dÇn 16 Lop8.net (15) Bước 1: Nếu x ≤ y, chuyển tới bước Bước 2: z  x Bước 3: x  y Bước 4: y  z Bước 5: Kết thúc thuật toán ThuËt to¸n Kh«ng sö dông biÕn phô (Xem Bµi tËp ë trªn) INPUT: Hai biÕn x vµ y OUTPUT: Hai biÕn x vµ y cã gi¸ trÞ t¨ng dÇn Bước 1: Nếu x ≤ y, chuyển tới bước Bước 2: x  x + y Bước 3: y  x  y Bước 4: x  x  y Bước 5: Kết thúc thuật toán Trước hết, cần, ta hoán đổi giá trị hai biến x và y để chúng có giá trị tăng dần Sau đó so sánh z với x và z với y, sau đó thực các bước hoán đổi giá trị cần thiết (xem lại Ví dụ Bài 5, SGK) INPUT: Ba biÕn x, y vµ z OUTPUT: Ba biÕn x, y vµ z cã gi¸ trÞ t¨ng dÇn Bước 1: Nếu x ≤ y, chuyển tới bước Bước 2: z  x, x  y, y  z (Sau bước này x và y có giá trị tăng dần.) Bước 3: Nếu y ≤ z , chuyển tới bước Bước 4: Nếu z < x, t  x , x  z và z  t, (với t là biến trung gian) và chuyển đến bước Bước 5: t  y , y  z và z  t Bước 6: Kết thúc thuật toán Thuật toán tính tổng các phần tử dãy số A = {a1, a2, , an} cho trước INPUT: n vµ d·y n sè a1, a2, , an OUTPUT: Tæng S = a1 + a2 + + an 17 Lop8.net (16) Bước 1: S  0; i  Bước 2: i  i + Bước 3: Nếu i ≤ n, S  S + và quay lại bước Bước 4: Thông báo S và kết thúc thuật toán Thuật toán tìm số nhỏ dãy n số a1, a2, , an cho trước Thuật toán này tương tự thuật toán tìm giá trị lớn dãy n số đã cho (xem Ví dụ 6, Bài 5) Điều khác biệt là thêm các bước nhập số n và dãy n sè a1, a2, , an INPUT: n vµ d·y n sè a1, a2, , an OUTPUT: Min = Min{ a1, a2, , an} Bước 1: Nhập n và dãy n số a1, a2, , an Bước 2: Gán Min  a1; i  Bước 3: i  i + Bước 4: Nếu i > n, chuyển đến bước Bước 5: Nếu < Min, gán Min  quay lại bước Trong trường hợp ngược lại, quay lại bước Bước 6: Ghi giá trị Min màn hình và kết thúc thuật toán a) Đếm số các số dương dãy số A = {a1, a2, , an} cho trước INPUT: n vµ d·y n sè a1, a2, , an OUTPUT: Soduong = Sè c¸c sè > Bước 1: Gán Soduong  Bước 2: i  i + Bước 3: Nếu i > n, chuyển đến bước Bước 4: Nếu > 0, gán Soduong  Soduong +1 quay lại bước Trong trường hợp ngược lại, quay lại bước Bước 5: Thông báo giá trị Soduong và kết thúc thuật toán b) Tính tổng các số dương dãy số A = {a1, a2, , an} cho trước INPUT: n vµ d·y n sè a1, a2, , an OUTPUT: S = Tæng c¸c sè > d·y a1, a2, , an 18 Lop8.net (17) Bước 1: S  0; i  Bước 2: i  i + Bước 3: Nếu > 0, S  S + ai; ngược lại, giữ nguyên S Bước 4: Nếu i ≤ n, và quay lại bước Bước 5: Thông báo S và kết thúc thuật toán 19 Lop8.net (18) Bµi C¢U LÖNH §IÒU KIÖN C©u hái vµ bµi tËp Em hãy nêu vài ví dụ các hoạt động ngày phụ thuộc vào ®iÒu kiÖn H·y cho biÕt c¸c ®iÒu kiÖn hoÆc phÐp so s¸nh sau ®©y cho kÕt qu¶ đúng hay sai: a) 123 lµ sè chia hÕt cho b) NÕu ba c¹nh a, b vµ c cña mét tam gi¸c tháa m·n c2 > a2 + b2 th× tam giác đó có góc tù (> 90o) c) 152 > 200 d) n! ≤ n2 víi mäi sè tù nhiªn n e) x2 < Hai người bạn cùng chơi trò đoán số Một người nghĩ đầu số tự nhiên nhỏ 10 Người đoán xem bạn đã nghĩ số gì Nếu đoán đúng, người đoán cộng thêm điểm, sai không céng ®iÓm Lu©n phiªn nghÜ vµ ®o¸n Sau 10 lÇn, ®­îc nhiÒu điểm hơn, người đó thắng Hãy phát biểu các điều kiện trò chơi là gì? Hoạt động nào thực hiện, điều kiện đó thoả mãn? Hoạt động nào thực hiện, điều kiện đó không thoả mãn? Một trò chơi máy tính hứng thú các em nhỏ là hứng trứng Một trứng rơi từ vị trí ngẫu nhiên trên cao Người chơi dùng các phím mũi tên   để điều khiển biểu tượng khay di chuyển theo chiều ngang để hứng trứng Nếu hứng trượt, trứng bị rơi, vỡ và người chơi tiếp tục di chuyển khay để hứng trøng kh¸c 20 Lop8.net (19) Điều kiện để điều khiển khay trò chơi là gì? Hoạt động nào thực hiện, điều kiện đó thoả mãn? Hoạt động nào thực hiện, điều kiện đó không thoả mãn? Các câu lệnh Pascal sau đây viết đúng hay sai? a) if x:=7 then a=b; b) if x>5; then a:=b; c) if x>5 then; a:=b; d) if x>5 then a:=b; m:=n; e) if x>5 then a:=b; else m:=n; f) if n>0 then begin a:=0; m:=-1 end else c:=a; Sau mçi c©u lÖnh sau ®©y a) if (45 mod 3)=0 then X:=X+1; b) if X>10 then X:=X+1; giá trị biến X là bao nhiêu, trước đó giá trị X 5? Giả sử cần viết chương trình nhập số tự nhiên vào máy tính và ghi màn hình kết số đã nhập là số chẵn hay lẻ, chẳng hạn “5 là số lẻ”, “8 là số chẵn” Hãy mô tả các bước thuật toán để giải bài toán trên và viết chương trình Pascal để thực thuật toán đó Viết chương trình nhập sử dụng hai biến X và Y để lưu hai số nhập từ bàn phím, sau đó đổi giá trị các biến đó để X và Y có giá trị tăng dÇn (xem Bµi tËp 3, Bµi 5) Hãy mô tả thuật toán và viết chương trình nhập ba số thực a, b và c từ bàn phím vào máy tính, sau đó xếp và ghi các số đó màn hình theo thø tù t¨ng dÇn (xem Bµi tËp vµ thuËt to¸n VÝ dô 5, Bµi 5) 21 Lop8.net (20) 10 Hãy mô tả thuật toán và viết chương trình nhập ba số thực a, b và c từ bàn phím vào máy tính, sau đó kiểm tra ba số đó có thể là các cạnh tam giác đều, tam giác cân tam giác vuông hay không và ghi kÕt qu¶ mµn h×nh (xem Bµi 3, Bµi thùc hµnh 4) Hướng dẫn trả lời Có thể nêu nhiều vài ví dụ các hoạt động ngày phụ thuộc vào điều kiện Dưới đây là số ví dụ: a) Nếu đạt điểm tổng kết năm cao 8.5, em đạt danh hiệu “Häc sinh giái” b) Nếu không cắm điện, máy tính để bàn em không hoạt động c) Nếu bị bệnh, em (cần phải) đến phòng khám để bác sĩ khám bÖnh d) Nếu không tưới đủ nước đúng thời kì phát triển, lúa không cho thu ho¹ch cao §¸p ¸n: a) §óng; b) §óng; c) Sai; d) Sai; e) Sai, nÕu x ≥ Giả sử Điểm_1 là số điểm người thứ và Điểm_2 là số điểm người thứ hai, ngoài người thứ đầu số tự nhiên n < 10 Điều kiện trò chơi là người thứ hai đoán đúng số n Khi đó Điểm_2 cộng thêm 1; ngược lại, Điểm_2 giữ nguyên Tương tự, người thứ hai nghĩ số tự nhiên m, và điều kiện thứ hai là người thứ đoán đúng số m đó Khi đó Điểm_1 cộng thêm 1; ngược lại, Điểm_1 giữ nguyªn Điều kiện trò chơi là sau 10 lần, Điểm_1 > Điểm_2 thì người thứ tuyên bố thắng cuộc; ngược lại, người thứ hai thắng Trường hợp Điểm_1 = Điểm_2 thì không có người thắng và người thua Điều kiện để điều khiển khay trò chơi người chơi nhấn phím mũi tên   Nếu người chơi nhấn phím , biểu tượng khay di chuyển sang phải đơn vị khoảng cách; phím  nhấn, biểu tượng khay di chuyển sang trái Nếu phím khác ngoài hai phÝm mòi tªn trªn ®­îc nhÊn, chiÕc khay vÉn gi÷ nguyªn vÞ trÝ §¸p ¸n: a) Sai (thõa dÊu hai chÊm); b) Sai (thõa dÊu chÊm ph¶y thø nhÊt); c) Sai (thõa dÊu chÊm ph¶y sau tõ then); d) §óng, nÕu phÐp g¸n m:=n không phụ thuộc điều kiện x>5; ngược lại, sai và cần đưa hai câu lệnh 22 Lop8.net (21)

Ngày đăng: 29/03/2021, 14:08

Tài liệu cùng người dùng

Tài liệu liên quan