Giải SBT Tin học 10 trang 63 Kết nối tri thức
Với Giải SBT Tin học 10 trang 63 trong Bài 31: Thực hành viết chương trình đơn giản Sách bài tập Tin 10 Kết nối tri thức hay nhất, ngắn gọn sẽ giúp học sinh dễ dàng trả lời các câu hỏi & làm bài tập Tin học 10 trang 63.
Giải SBT Tin học 10 trang 63 Kết nối tri thức
Câu 31.1 trang 63 SBT Tin học 10: Viết chương trình yêu cầu nhập số thực dương a. Chương trình cần kiểm soát lỗi nhập dữ liệu như sau:
Nếu số đã nhập nhỏ hơn hoặc bằng 0 thì thông báo: Nhập sai, số a phải lớn hơn 0. Hãy nhập lại.
Chương trình cần kiểm soát lỗi nhập cho đến khi nào nhập đúng thì thôi.
Lời giải:
Chương trình có thể viết như sau:
a = float(input("Nhập số thực dương a:"))
while a <= 0:
print("Nhập sai, số a phải lớn hơn 0. Hãy nhập lại.")
a = float(input("Nhập số thực dương a:"))
Câu 31.2 trang 63 SBT Tin học 10: Bài toán sắp xếp: Cho trước một dãy số A, viết chương trình sắp xếp dãy số này theo thứ tự tăng dần.
Giả sử chúng ta sẽ áp dụng thuật toán sắp xếp chèn để cài đặt cho chương trình này. Ý tưởng của thuật toán này như sau: Sẽ duyệt từng phần tử của dãy A, tính từ vị trí thứ 2 trở đi. Với mỗi phần tử (giả sử A[k]), sẽ tìm cách chèn phần tử này vào đúng vị trí của dãy con phía trước A[0], [1], ..., A[k-1] sao cho dãy con này được sắp xếp đúng. Sau khi duyệt xong các phần tử của dãy thì dãy gốc đã được sắp xếp xong.
Với mỗi phần tử A[k], việc chèn vào vị trí đúng trong dãy con phía trước được thực hiện bằng một vòng lặp như sau:
j = k – 1
while j > 0 and A[j] > A[j+1]:
A[j], A[j+1] = A[j+1],A[j]
j = j – 1
Để tìm lỗi chương trình trên chúng ta áp dụng công cụ printine, in các giá trị trung gian. Với mỗi vòng lặp chính (vòng lặp for k in range(1,n)), chúng ta sẽ in ra các giá trị sau: k, A[k] và kết quả dãy A.
Chương trình được viết như sau, sau khi bổ sung các lệnh in phần tử trung gian.
dayA = [5,1,8,4,2] # Dãy gốc cần sắp xếp
def sap_xep (A):
n = len(A)
for k in range(1,n):
print("vòng" ,k, "số đang xét:", A[k], end = " ")
j = k - 1
while j > 0 and A[j] > A[j+1]:
A[j], A[j+1] = A[j+1], A[j]
j = j - 1
print(A)
print("Dãy gốc:",dayA)
A = dayA. copy()
sap_xep (A)
print("Dãy đích:",A)
Em hãy viết lại chương trình trên và tiến hành kiểm thử xem chương trình có lỗi không? Nếu có thì tìm ra lỗi và sửa lại cho chương trình chạy đúng.
Lời giải:
Các em tự viết lại chương trình trên:
Kết quả chạy chương trình có thể như sau:
Nhận xét: tại mỗi vòng lặp, các giá trị A[k] cũng đã được di chuyển để được chèn vào một vị trí trong dãy con A[0], A[1], ..., A[k-1], tuy nhiên vị trí A[0] không bị thay đổi. Từ đó chúng ta tìm ra lỗi của chương trình tại vị trí lệnh while:
while j > 0 and A[j] > A[j+1]:
Cần sửa lại như sau:
while j >= 0 and A[j] > A[j+1]:
Chương trình đã tìm ra lỗi nhờ công cụ kiểm thử printine. Chương trình chính thức sau khi sửa như sau.
sap_xep.py
dayA = [5,1,8,4,2] # Dãy gốc cần sắp xếp
def sap_xep(A):
n = len(A)
for k in range (1,n):
j = k – 1
while j >= 0 and A[j] > A[j+1]:
A[j], A[j+1] = A[j+1], A[j]
j = j – 1
A = dayA. copy()
sap_xep (A)
print("Dãy đích:", A)
Câu 31.3 trang 63 SBT Tin học 10: Viết chương trình in bảng cửu chương ra màn hình. Yêu cầu bảng cửu chương in ra thành 10 khối bao gồm 2 hàng, 5 cột như sau:
Lời giải:
Hướng dẫn:
Từ yêu cầu của đề bài chúng ta sẽ thiết lập thủ tục chính printBCC() có chức năng in bảng cửu chương. Thủ tục này sẽ có hai phần độc lập, phần đầu in 5 khối thuộc hàng thứ nhất là bảng cửu chương của các số 1, 2, 3, 4, 5. Phần sau của thủ tục sẽ in 5 khối thuộc hàng thứ hai là bảng cửu chương của các số 6, 7, 8, 9, 10.
Để thể hiện chính xác và cân đối trên màn hình chúng ta thiết lập thêm hai hàm:
- Hàm st(num) để tạo xâu kí tự thể hiện số num. Nếu num là số có 1 chữ số thì st(num) sẽ chèn 1 dấu cách phía trước num.
- Hàm space(k) thể hiện k dấu cách trên màn hình.
Nhập, chạy thử và kiểm tra kết quả chương trình sau:
def st(n):
if n < 10:
return" "+str(n)
else:
return str(n)
def space(k):
return" "*k
def printBCC():
for h in range (10):
i = h+1
for j in range (1,6):
print(st(j) + " x " + st(i) + " = " + st(i*j) + space(2), end = " ")
print()
print()
for h in range(10):
i = h+1
for j in range (6,11):
print(st(j) + " x " + st(i) + " = " + st(i*j) + space(2), end = " ")
print()
# Chương trình chính
printBCC()
* Chương trình nhập lên phần mềm lập trình Python:
* Kết quả chạy thử chương trình:
Lời giải sách bài tập Tin 10 Bài 31: Thực hành viết chương trình đơn giản Kết nối tri thức hay khác:
Xem thêm lời giải sách bài tập Tin học lớp 10 Kết nối tri thức hay, chi tiết khác:
- SBT Tin học 10 Bài 29: Nhận biết lỗi chương trình
- SBT Tin học 10 Bài 30: Kiểm thử và gỡ lỗi chương trình
- SBT Tin học 10 Bài 32: Ôn tập lập trình Python
- SBT Tin học 10 Bài 33: Nghề thiết kế đồ hoạ máy tính
- SBT Tin học 10 Bài 34: Nghề phát triển phần mềm
Xem thêm các tài liệu học tốt lớp 10 hay khác:
- Giải sgk Tin học 10 Kết nối tri thức
- Giải Chuyên đề học tập Tin học 10 Kết nối tri thức
- Giải SBT Tin học 10 Kết nối tri thức
- Giải lớp 10 Kết nối tri thức (các môn học)
- Giải lớp 10 Chân trời sáng tạo (các môn học)
- Giải lớp 10 Cánh diều (các môn học)
Tủ sách VIETJACK shopee lớp 10-11 cho học sinh và giáo viên (cả 3 bộ sách):
Đã có app VietJack trên điện thoại, giải bài tập SGK, SBT Soạn văn, Văn mẫu, Thi online, Bài giảng....miễn phí. Tải ngay ứng dụng trên Android và iOS.
Theo dõi chúng tôi miễn phí trên mạng xã hội facebook và youtube:Nếu thấy hay, hãy động viên và chia sẻ nhé! Các bình luận không phù hợp với nội quy bình luận trang web sẽ bị cấm bình luận vĩnh viễn.
- Soạn văn 10 (hay nhất) - KNTT
- Soạn văn 10 (ngắn nhất) - KNTT
- Soạn văn 10 (siêu ngắn) - KNTT
- Giải sgk Toán 10 - KNTT
- Giải Tiếng Anh 10 Global Success
- Giải Tiếng Anh 10 Friends Global
- Giải sgk Tiếng Anh 10 iLearn Smart World
- Giải sgk Tiếng Anh 10 Explore New Worlds
- Giải sgk Vật lí 10 - KNTT
- Giải sgk Hóa học 10 - KNTT
- Giải sgk Sinh học 10 - KNTT
- Giải sgk Địa lí 10 - KNTT
- Giải sgk Lịch sử 10 - KNTT
- Giải sgk Kinh tế và Pháp luật 10 - KNTT
- Giải sgk Tin học 10 - KNTT
- Giải sgk Công nghệ 10 - KNTT
- Giải sgk Hoạt động trải nghiệm 10 - KNTT
- Giải sgk Giáo dục quốc phòng 10 - KNTT