Giải các bài tập trong SGK Tin học Lớp 8
CÂU HỎI VÀ BÀI TẬP
1. Khi soạn thảo văn bản trên máy tính và yêu cầu chương trình tìm kiếm một cụm từ trong văn bản và thay thế bằng một cụm từ khác, thực chất ta đã yêu cầu máy tính thực hiện những lệnh gì? Có thể thay đổi thứ tự những lệnh đó mà vẫn không thay đổi kết quả được không?
2. Trong ví dụ về rô-bốt, nếu thay đổi thứ tự của hai lệnh trong chương trình, rô-bốt có thực hiện được công việc nhặt rác không? Hãy xác định vị trí mới của rô-bốt sau khi thực hiện xong lệnh “Hãy quét nhà” và đưa ra các lệnh để rô-bốt trở lại vị trí ban đầu của mình.
3. Hãy cho biết lí do cần phải viết chương trình để điều khiển máy tính.
4. Tại sao người ta phải tạo ra các ngôn ngữ lập trình trong khi có thể điều khiển máy tính bằng ngôn ngữ máy?
5. Chương trình dịch làm gì?
6. Hãy cho biết các bước cần thực hiện để tạo ra các chương trình máy tính.
HƯỚNG DẪN TRẢ LỜI
1. Khi soạn thảo văn bản trên máy tính và yêu cầu chương trình tìm kiếm một cụm từ trong văn bản và thay thế bằng một 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 nhau. Dưới đây chỉ mô tả những lệnh cơ bản nhất theo trật tự thực hiện việc thay thế một cụm từ tìm được:
1. Sao chép cụm từ cần tìm vào bộ nhớ (ta gọi đây là cụm từ 1).
2. Sao chép cụm từ sẽ thay thế cụm từ tìm được vào bộ nhớ (cụm từ 2).
3. Tìm cụm từ 1 trong văn bản.
4. Xóa cụm từ 1 tìm được trong văn bản.
giá trị tăng dần. Bước 1: Nếu x ≤ y, chuyển tới bước 5. 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 2. Không sử dụng biến phụ (Xem Bài tập 2 ở 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 5. 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, nếu cần, ta hoán đổi giá trị hai biến x và y để chúng có giá trị tăng dần. Sau đó lần lượt so sánh z với x và z với y, sau đó thực hiện các bước hoán đổi giá trị cần thiết (xem lại Ví dụ 5 trong 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 3. 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 6. 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 6. 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ử của 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. Bước 1: S ơ 0; i ơ 0. Bước 2: i ơ i + 1. Bước 3: Nếu i ≤ n, S ơ S + ai và quay lại bước 2. 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ỏ nhất trong dãy n số a1, a2, ..., an cho trước. Thuật toán này tương tự như thuật toán tìm giá trị lớn nhất trong 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 ơ 1. Bước 3: i ơ i + 1. Bước 4: Nếu i > n, chuyển đến bước 5. Bước 5: Nếu ai < Min, gán Min ơ ai rồi quay lại bước 3. Trong trường hợp ngược lại, quay lại bước 3. Bước 6: Ghi giá trị Min ra màn hình và kết thúc thuật toán. a) Đếm số các số dương trong 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ố ai > 0. Bước 1: Gán Soduong ơ 0. Bước 2: i ơ i + 1. Bước 3: Nếu i > n, chuyển đến bước 5. Bước 4: Nếu ai > 0, gán Soduong ơ Soduong +1 rồi quay lại bước 2. Trong trường hợp ngược lại, quay lại bước 2. 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 trong 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ố ai > 0 trong dãy a1, a2,..., an. Bước 1: S ơ 0; i ơ 0. Bước 2: i ơ i + 1. Bước 3: Nếu ai > 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 2. Bước 5: Thông báo S và kết thúc thuật toán. Bài 6. CÂU LệNH ĐIềU KIệN Câu hỏi và bài tập Em hãy nêu một vài ví dụ về các hoạt động hằ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: 123 là số chia hết cho 3. 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ó một góc tù (> 90o). 152 > 200. n! ≤ n2 với mọi số tự nhiên n. x2 < 1. Hai người bạn cùng chơi trò đoán số. Một người nghĩ trong đầu một số tự nhiên nhỏ hơn 10. Người kia đoán xem bạn đã nghĩ số gì. Nếu đoán đúng, người đoán sẽ được cộng thêm 1 điểm, nếu sai sẽ không được cộng điểm. Luân phiên nhau nghĩ và đoán. Sau 10 lần, ai được nhiều điểm hơn, người đó sẽ thắng. Hãy phát biểu các điều kiện ở trò chơi là gì? Hoạt động nào sẽ được thực hiện, nếu điều kiện đó thoả mãn? Hoạt động nào sẽ được thực hiện, nếu điều kiện đó không thoả mãn? Một trò chơi máy tính rất hứng thú đối với các em nhỏ là hứng trứng. Một quả trứng rơi từ một vị trí ngẫu nhiên trên cao. Người chơi dùng các phím mũi tên đ hoặc ơ để điều khiển một biểu tượng chiếc khay di chuyển theo chiều ngang để hứng quả trứng. Nếu hứng trượt, quả trứng bị rơi, vỡ và người chơi tiếp tục di chuyển khay để hứng quả trứng khác. Điều kiện để điều khiển chiếc khay trong trò chơi là gì? Hoạt động nào sẽ được thực hiện, nếu điều kiện đó thoả mãn? Hoạt động nào sẽ được thực hiện, nếu điều kiện đó không thoả mãn? Các câu lệnh Pascal sau đây được viết đúng hay sai? if x:=7 then a=b; if x>5; then a:=b; if x>5 then; a:=b; if x>5 then a:=b; m:=n; if x>5 then a:=b; else m:=n; if n>0 then begin a:=0; m:=-1 end else c:=a; Sau mỗi câu lệnh sau đây if (45 mod 3)=0 then X:=X+1; if X>10 then X:=X+1; giá trị của biến X sẽ là bao nhiêu, nếu trước đó giá trị của X bằng 5? Giả sử cần viết chương trình nhập một số tự nhiên vào máy tính và ghi ra màn hình kết quả 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 của thuật toán để giải quyết bài toán trên và viết chương trình Pascal để thực hiện 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ủa 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 đó sắp xếp và ghi các số đó ra màn hình theo thứ tự tăng dần (xem Bài tập 8 và thuật toán trong Ví dụ 5, 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 đó kiểm tra ba số đó có thể là các cạnh của tam giác đều, tam giác cân hoặc tam giác vuông hay không và ghi kết quả ra 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 rất nhiều vài ví dụ về các hoạt động hằng ngày phụ thuộc vào điều kiện. Dưới đây là một số ví dụ: Nếu đạt điểm tổng kết cả năm cao hơn 8.5, em sẽ đạt danh hiệu “Học sinh giỏi”. Nếu không được cắm điện, máy tính để bàn của em sẽ không hoạt động được. Nếu bị bệnh, em (cần phải) đi đến phòng khám để bác sĩ khám bệnh. Nếu không được tưới đủ nước đúng thời kì phát triển, lúa sẽ không cho thu hoạch cao. Đáp án: a) Đúng; b) Đúng; c) Sai; d) Sai; e) Sai, nếu x ≥ 1. Giả sử Điểm_1 là số điểm của người thứ nhất và Điểm_2 là số điểm của người thứ hai, ngoài ra một người thứ nhất trong đầu một 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 cộng thêm 1; ngược lại, Điểm_2 được giữ nguyên. Tương tự, nếu người thứ hai nghĩ số tự nhiên m, và điều kiện thứ hai là người thứ nhất đoán đúng số m đó. Khi đó Điểm_1 được cộng thêm 1; ngược lại, Điểm_1 được giữ nguyên. Điều kiện ở trò chơi là sau 10 lần, nếu Điểm_1 > Điểm_2 thì người thứ nhất được 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 chiếc khay trong trò chơi người chơi nhấn phím mũi tên đ hoặc ơ. Nếu người chơi nhấn phím đ, biểu tượng chiếc khay sẽ di chuyển sang phải một đơn vị khoảng cách; nếu phím ơ được nhấn, biểu tượng chiếc khay sẽ di chuyển sang trái. Nếu một 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 a:=b; m:=n; vào giữa cặp từ khóa begin và end; e) Sai (thừa dấu chấm phảy thứ nhất); f) Đúng. a) Vì 45 chia hết cho 3, điều kiện được thỏa mãn nên giá trị của X được tăng lên 1, tức bằng 6; b) Điều kiện không được thỏa mãn nên câu lệnh không được thực hiện, tức X giữ nguyên giá trị 5. Thuật toán: Bước 1. Nhập số n. Bước 2. Nếu n chia hết cho 2, ghi ra màn hình “n là số chẵn”; ngược lại, ghi ra màn hình “n là số lẻ”. Bước 3. Kết thúc thuật toán. Chương trình Pascal: uses crt; var X,Y,Z: real; begin clrscr; write('Nhap so X = '); readln(Y); write('Nhap so Y = '); readln(Y); if X>Y then begin Z:=X; X:=Y; Y:=Z; writeln(X,’ ’,Y); readln end. Thuật toán: Bước 1. Nhập ba số A, B và C. Bước 2. Nếu A > B, X ơ A, A ơ B, B ơ X. Bước 3. Nếu C > A, X ơ A, A ơ C, C ơ X. Bước 4. Nếu C < B, X ơ B, B ơ C, C ơ X. Bước 5. Ghi giá trị các biến theo thứ tự A, B và C và kết thúc thuật toán. Chương trình Pascal: uses crt; var A, B, C, X: integer; begin clrscr; write('Nhap so A: '); readln(A); write('Nhap so B: '); readln(B); write('Nhap so C: '); readln(C); if A>B then begin X:=A; A:=B; B:=X end; if C<A then begin X:=A; A:=C; C:=X end; if C<B then begin X:=B; B:=C; C:=X end; writeln(A,' ',B,' ',C); readln; end. Thuật toán: Bước 1. Nhập ba số A, B và C. Bước 2. Nếu A + B < C hoặc B + C < A hoặc C + A < B, thông báo A, B và C không phải là ba cạnh của một tam giác và chuyển tới bước 5. Bước 3. Nếu A2 + B2 = C hoặc B2 + C2 = A2 hoặc C2 + A2 = B, thông báo A, B và C là ba cạnh của một tam giác vuông và chuyển tới bước 5. Bước 4. Nếu A = B và B = C, thông báo A, B và C là ba cạnh của một tam giác đều; ngược lại, nếu A = B hoặc B = C hoặc A = C, thông báo A, B và C là ba cạnh của một tam giác cân. Bước 5. Kết thúc thuật toán. Chương trình Pascal: program Sap_xep; uses crt; var A, B, C, X: integer; begin clrscr; write('Nhap so A: '); readln(A); write('Nhap so B: '); readln(B); write('Nhap so C: '); readln(C); if (A+B<C) or (B+C<A) or (A+C<B) then writeln('Day khong la ba canh cua mot tam giac') else if (A*A=B*B+C*C) or (B*B=A*A+C*C) or (C*C=A*A+B*B) then writeln('Day la ba canh cua tam giac vuong') else if (A=B) and(B=C) and (A=C) then writeln('Day la ba canh cua tam giac deu') else if (A=B) or (B=C) or (C=A) then writeln('Day la ba canh cua tam giac can') else writeln('Day chi la ba canh cua tam giac thuong'); readln; end. Bài 7. CÂU LệNH lặp Câu hỏi và bài tập Cho một vài ví dụ về hoạt động được thực hiện lặp lại trong cuộc sống hàng ngày! Hãy mô tả các bước của thuật toán để vẽ hình ... a) và ... b) sau đây: Hình ...a) Hình ... b) Thao tác lặp cần thực hiện để có các hình trên và điều kiện để kết thúc thao tác đó là gì Hãy cho biết tác dụng của câu lệnh lặp! Chúng ta nói rằng khi thực hiện các hoạt động lặp, chương trình kiểm tra một
File đính kèm:
- Giai cac bai tap tin 8.doc