BÀI 31 - THỰC HÀNH VIẾT CHƯƠNG TRÌNH ĐƠN GIẢN



CHỦ ĐỀ 5 – BÀI 31 – TIN HỌC 10

Thực Hành Viết Chương Trình Đơn Giản

Kiểm tra số nguyên tố, giải phương trình bậc hai & thực hành gỡ lỗi bằng Breakpoint

🎯 Mục Tiêu Bài Học

  • Viết chương trình Python giải quyết các bài toán đơn giản.
  • Vận dụng cấu trúc điều khiển if...elif...else.
  • Viết chương trình sử dụng hàm.
  • Thực hành gỡ lỗi bằng Breakpoint và theo dõi giá trị biến.

I. Nội Dung Thực Hành

1. Kiểm tra số nguyên tố và phân tích thừa số nguyên tố

Yêu cầu:

  • Nhập số tự nhiên n
  • Kiểm tra n có phải số nguyên tố hay không
  • Nếu là hợp số → phân tích thành tích các thừa số nguyên tố

Ý tưởng:

  • Dùng biến k bắt đầu từ 2
  • Tìm ước nhỏ nhất của m
  • Chia m cho k, lưu k vào danh sách
  • Lặp đến khi m = 1

Ví dụ: 100 = 2 × 2 × 5 × 5

def is_prime(n):
if n < 2:
return False
for i in range(2, int(n**0.5) + 1):
if n % i == 0:
return False
return True
def factorize(n):
factors = []
k = 2
m = n
while m > 1:
while m % k == 0:
factors.append(k)
m = m // k
k += 1
return factors

n = int(input("Nhập n: "))
if is_prime(n):
print(f"{n} là số nguyên tố")
else:
factors = factorize(n)
print(f"{n} = {' × '.join(map(str, factors))}")
Giải thích

Chương trình gồm hai hàm:

1. Hàm is_prime(n)

Kiểm tra n có phải là số nguyên tố hay không.

  • Nếu n < 2 → trả về False.
  • Kiểm tra các số từ 2 đến √n.
  • Nếu tìm được ước số của n → không phải số nguyên tố (False).
  • Nếu không có ước nào → là số nguyên tố (True).
2. Hàm factorize(n)

Phân tích n thành tích các thừa số nguyên tố.

  • Bắt đầu với k = 2.
  • Khi k chia hết cho m, thêm k vào danh sách factors và chia m cho k.
  • Tăng k lên để tiếp tục tìm các thừa số.
  • Trả về danh sách các thừa số nguyên tố.
2. Giải phương trình bậc hai ax² + bx + c = 0

Giải ax² + bx + c = 0 – Xét đầy đủ các trường hợp:

  • a = b = c = 0: Vô số nghiệm
  • a = b = 0, c ≠ 0: Vô nghiệm
  • a = 0, b ≠ 0: PT bậc nhất, x = -c/b
  • a ≠ 0: Tính Δ = b² - 4ac
import math
def giai_pt_bac2(a, b, c):
if a == 0 and b == 0 and c == 0:
print("Phương trình có vô số nghiệm")
elif a == 0 and b == 0:
print("Phương trình vô nghiệm")
elif a == 0:
print(f"PT bậc nhất, x = {-c/b}")
else:
delta = b**2 - 4*a*c
if delta > 0:
x1 = (-b + math.sqrt(delta)) / (2*a)
x2 = (-b - math.sqrt(delta)) / (2*a)
print(f"Hai nghiệm: x1 = {x1}, x2 = {x2}")
elif delta == 0:
x = -b / (2*a)
print(f"Nghiệm kép: x = {x}")
else:
print("Phương trình vô nghiệm")
a = float(input("a = "))
b = float(input("b = "))
c = float(input("c = "))
giai_pt_bac2(a, b, c)
 Giải thích

Chương trình giải phương trình:

với các trường hợp:

  1. a = 0, b = 0, c = 0
    • Phương trình có vô số nghiệm.
  2. a = 0, b = 0, c ≠ 0
    • Phương trình vô nghiệm.
  3. a = 0, b ≠ 0
    • Đây là phương trình bậc nhất:

    • Nghiệm:

  4. a ≠ 0
    • Tính biệt thức:

    • Nếu Δ > 0: có 2 nghiệm phân biệt.
    • Nếu Δ = 0: có 1 nghiệm kép.
    • Nếu Δ < 0: không có nghiệm thực.

II. Gỡ Lỗi Chương Trình

Sử dụng Breakpoint để:

  • Dừng chương trình tại vị trí cần kiểm tra
  • Quan sát giá trị biến
  • Kiểm tra từng bước của thuật toán
  • Phát hiện lỗi dễ dàng hơn

III. Kiến Thức Cần Nhớ

  • ✅ Sử dụng danh sách để lưu kết quả trung gian.
  • ✅ Chia bài toán thành các hàm nhỏ.
  • ✅ Xét đầy đủ các trường hợp của bài toán.
  • ✅ Sử dụng if...elif...else khi có nhiều điều kiện.
  • ✅ Dùng Breakpoint để Debug chương trình.

Luyện Tập

Câu 1: Nhập số thực dương

Viết chương trình nhập số thực dương a. Nếu nhập sai (a ≤ 0) thì thông báo: "Nhập sai, số a phải lớn hơn 0. Hãy nhập lại."

while True:
a = float(input("Nhập số thực dương a: "))
if a > 0:
break
print("Nhập sai, số a phải lớn hơn 0. Hãy nhập lại.")
print("Giá trị hợp lệ:", a)
Giải thích

Chương trình yêu cầu người dùng nhập một số thực dương.

  • while True: tạo một vòng lặp vô hạn.
  • a = float(input(...)) nhập một số thực.
  • if a > 0: kiểm tra xem số vừa nhập có lớn hơn 0 hay không.
    • Nếu đúng, break sẽ kết thúc vòng lặp.
    • Nếu sai, chương trình in thông báo lỗi và yêu cầu nhập lại.
  • Sau khi nhập đúng, chương trình in ra giá trị hợp lệ. 
Câu 2: Bảng cửu chương

Viết chương trình in bảng cửu chương.

for i in range(1, 11):
print(f"\nBảng nhân {i}")
for j in range(1, 11):
print(f"{i} × {j} = {i*j}")
Giải thích

Chương trình in ra bảng cửu chương từ 1 đến 10.

  • for i in range(1, 11):
    • Lặp i từ 1 đến 10.
    • Mỗi giá trị i tương ứng với một bảng nhân.
  • print(f"\nBảng nhân {i}")
    • In tiêu đề của bảng nhân.
    • \n tạo một dòng trống trước mỗi bảng để dễ nhìn.
  • for j in range(1, 11):
    • Lặp j từ 1 đến 10.
  • print(f"{i} × {j} = {i*j}")
    • In phép nhân của i với j.
    • i*j là kết quả phép nhân.

Vận Dụng

Câu 1: Đếm năm nhuận

Nhập hai năm Y1, Y2 (Y2 > Y1). Tính có bao nhiêu năm nhuận từ Y1 đến Y2.

Năm nhuận khi:

  • Chia hết cho 400
  • Hoặc chia hết cho 4 nhưng không chia hết cho 100
Y1 = int(input("Y1 = "))
Y2 = int(input("Y2 = "))
count = 0
for year in range(Y1, Y2 + 1):
if (year % 400 == 0) or (year % 4 == 0 and year % 100 != 0):
count += 1
print("Số năm nhuận:", count)
Giải thích

 Chương trình đếm số năm nhuận trong khoảng từ Y1 đến Y2 (bao gồm cả hai năm).

  • Nhập năm bắt đầu Y1 và năm kết thúc Y2.
  • Khởi tạo biến count = 0 để đếm số năm nhuận.
  • Duyệt từng năm từ Y1 đến Y2 bằng vòng lặp for.
  • Kiểm tra năm nhuận theo quy tắc:
    • Chia hết cho 400 → là năm nhuận.
    • Hoặc chia hết cho 4 nhưng không chia hết cho 100 → là năm nhuận.
  • Mỗi khi gặp năm nhuận, tăng count lên 1.
  • In ra tổng số năm nhuận.
Câu 2: Tính ƯCLN

Viết chương trình tính ƯCLN của hai số tự nhiên a, b.

a = int(input("a = "))
b = int(input("b = "))
while a != b:
if a > b:
a = a - b
else:
b = b - a
print("UCLN =", a)
Giải thích

Chương trình tìm Ước chung lớn nhất (UCLN) 

của hai số nguyên dương ab bằng thuật toán

 Euclid dùng phép trừ.

Các bước thực hiện:

  1. Nhập hai số nguyên ab.
  2. Lặp khi a khác b:
    • Nếu a > b thì thay a = a - b.
    • Ngược lại thay b = b - a.
  3. Khi a == b, giá trị đó chính là UCLN.
  4. In kết quả.
 

📌 Ghi Nhớ Cuối Bài

  • ✅ Chia bài toán thành các hàm để chương trình rõ ràng, dễ bảo trì.
  • ✅ Khi giải bài toán, cần xét đầy đủ các trường hợp có thể xảy ra.
  • ✅ Sử dụng cấu trúc if...elif...else để xử lý nhiều nhánh điều kiện.
  • ✅ Dùng vòng lặp để xử lý các công việc lặp lại.
  • ✅ Sử dụng Breakpoint và theo dõi giá trị biến để phát hiện, sửa lỗi.
  • ✅ Sau khi sửa lỗi, luôn kiểm thử lại để đảm bảo chương trình hoạt động đúng.
Fascinating blue spiral design with intricate geometric patterns.

"Chia nhỏ bài toán – Xét đủ trường hợp – Viết hàm rõ ràng!"


50 Bài Tập Cơ Bản Về Lập Trình Python Cho Người Mới Bắt Đầu

Phân loại theo chủ đề: Nhập/Xuất – Cấu trúc rẽ nhánh – Vòng lặp – Xử lý chuỗi – Danh sách – Hàm – File – Nâng cao cơ bản



🟦 I. Nhập/Xuất – Kiểu dữ liệu – Biến (10 bài)

  1. Nhập tên và in lời chào.
  2. Nhập hai số, in tổng, hiệu, tích, thương.
  3. Nhập bán kính hình tròn, tính chu vi và diện tích.
  4. Đổi nhiệt độ từ độ C sang độ F.
  5. Nhập chiều dài và chiều rộng, tính diện tích hình chữ nhật.
  6. Tính chu vi và diện tích hình tam giác.
  7. Nhập năm sinh, tính tuổi.
  8. Nhập số giây, đổi sang giờ:phút:giây.
  9. Nhập ba số, tính trung bình cộng.
  10. Kiểm tra kiểu dữ liệu của biến sử dụng type().


🟦 II. Câu lệnh rẽ nhánh if…elif…else (8 bài)

  1. Kiểm tra số âm/dương/0.
  2. Kiểm tra năm nhuận.
  3. Kiểm tra số chẵn/lẻ.
  4. So sánh ba số, tìm số lớn nhất.
  5. Kiểm tra ký tự là nguyên âm hay phụ âm.
  6. Phân loại học sinh theo điểm (Giỏi/Khá/Trung bình/Yếu).
  7. Giải phương trình bậc nhất ax + b = 0.
  8. Giải phương trình bậc hai ax² + bx + c = 0.


🟦 III. Vòng lặp for – while (10 bài)

  1. In dãy số từ 1 đến n.
  2. Tính tổng từ 1 đến n.
  3. In bảng cửu chương của một số.
  4. Tính giai thừa của một số.
  5. In các số chẵn từ 1 đến 100.
  6. Tìm UCLN và BCNN của hai số.
  7. Kiểm tra số nguyên tố.
  8. Liệt kê n số nguyên tố đầu tiên.
  9. Tính tổng các chữ số của một số.
  10. Đảo ngược số nguyên.


🟦 IV. Xử lý chuỗi (5 bài)

  1. Đếm số từ trong câu.
  2. Đếm số lần xuất hiện của ký tự trong chuỗi.
  3. Viết hoa toàn bộ chuỗi.
  4. Kiểm tra chuỗi đối xứng.
  5. Tách họ, tên đệm, tên từ họ tên đầy đủ.


🟦 V. Danh sách (list) và xử lý danh sách (5 bài)

  1. Nhập danh sách số nguyên và in ra.
  2. Tính tổng và trung bình của list.
  3. Tìm phần tử lớn nhất/nhỏ nhất trong list.
  4. Sắp xếp danh sách tăng dần.
  5. Đếm số lần xuất hiện của một phần tử trong list.


🟦 VI. Hàm và gọi hàm (4 bài)

  1. Viết hàm tính giai thừa.
  2. Viết hàm kiểm tra số nguyên tố.
  3. Viết hàm giải phương trình bậc 2.
  4. Viết hàm tính tổng các chữ số của số nguyên.


🟦 VII. Xử lý tệp (file) cơ bản (3 bài)

  1. Đọc nội dung từ file văn bản và in ra màn hình.
  2. Ghi danh sách số vào file.
  3. Tính tổng các số trong file.


🟦 VIII. Lập trình nâng cao (Tùy chọn mở rộng – cơ bản) (5 bài)

  1. Tạo từ điển lưu thông tin học sinh.
  2. Tính tổng các số lẻ trong list bằng list comprehension.
  3. Viết chương trình quản lý danh bạ đơn giản.
  4. Đếm số nguyên tố từ 1 đến n dùng hàm và list.
  5. Mô phỏng máy tính bỏ túi đơn giản (có menu chọn phép toán).

Bài cũ hơn Bài mới hơn
Đọc tiếp:
Lên đầu trang