Ví dụ: Luyện tập: Ôn thi tốt nghiệp
Giới thiệu bài học Chào các em, trong quá trình ôn thi tốt nghiệp môn Tin học lớp 12, việc hiểu rõ lý thuyết là chưa đủ. Điều quan trọng là các em phải luyện tập thường xuyên để nắm vững các kỹ năng giải quyết vấn đề. Bài hôm nay sẽ hướng dẫn các em từng bước làm quen với dạng bà
Giới thiệu bài học
Chào các em, trong quá trình ôn thi tốt nghiệp môn Tin học lớp 12, việc hiểu rõ lý thuyết là chưa đủ. Điều quan trọng là các em phải luyện tập thường xuyên để nắm vững các kỹ năng giải quyết vấn đề. Bài hôm nay sẽ hướng dẫn các em từng bước làm quen với dạng bài tập tổng hợp, thông qua một ví dụ cụ thể. Mục tiêu là giúp các em tự tin hơn khi bước vào kỳ thi.
Lý thuyết: Khái niệm Luyện tập
Luyện tập trong Tin học không chỉ đơn thuần là làm đi làm lại một bài tập. Nó là quá trình chủ động áp dụng các kiến thức đã học (cấu trúc dữ liệu, thuật toán, ngôn ngữ lập trình) để giải quyết một yêu cầu cụ thể. Qua đó, các em sẽ:
- Củng cố kiến thức nền tảng.
- Phát triển tư duy logic và khả năng phân tích.
- Phát hiện ra những điểm yếu của bản thân để kịp thời bổ sung.
- Làm quen với áp lực thời gian và cách trình bày bài thi.
Bài học hôm nay sẽ tập trung vào ví dụ minh họa từng bước để các em thấy rõ quy trình giải một bài toán ôn thi tốt nghiệp.
Ví dụ minh họa từng bước
Đề bài: Cho mảng a gồm n số nguyên (n ≤ 10^5). Hãy viết chương trình (dùng Python) tìm giá trị lớn thứ hai trong mảng. Nếu không có giá trị lớn thứ hai (tức tất cả các phần tử bằng nhau), hãy in ra "Khong co".
Bước 1: Phân tích bài toán
- Input: Mảng a có n phần tử.
- Output: Giá trị lớn thứ hai trong mảng, hoặc thông báo "Khong co".
- Ví dụ:
- a = [3, 1, 4, 1, 5, 9, 2, 6, 5] → Giá trị lớn thứ hai là 6.
- a = [7, 7, 7] → Không có giá trị lớn thứ hai.
Bước 2: Xác định thuật toán
Chúng ta có thể giải bằng nhiều cách. Cách đơn giản và hiệu quả là:
- Tìm giá trị lớn nhất (max1) trong mảng.
- Tìm giá trị lớn nhất thứ hai (max2) sao cho max2 < max1.
- Nếu không tìm thấy max2, kết luận "Khong co".
Bước 3: Viết mã giả (Pseudocode)
Nhập n và mảng a
max1 = a[0]
max2 = -10^9 // Khởi tạo bằng một giá trị rất nhỏ
Duyệt từ i=1 đến n-1:
Nếu a[i] > max1:
max2 = max1
max1 = a[i]
Ngược lại nếu a[i] < max1 và a[i] > max2:
max2 = a[i]
Nếu max2 == -10^9:
In "Khong co"
Ngược lại:
In max2
Bước 4: Viết chương trình Python
n = int(input())
a = list(map(int, input().split()))
max1 = a[0]
max2 = -10**9
for i in range(1, n):
if a[i] > max1:
max2 = max1
max1 = a[i]
elif a[i] < max1 and a[i] > max2:
max2 = a[i]
if max2 == -10**9:
print("Khong co")
else:
print(max2)
Bước 5: Chạy thử và kiểm tra
- Với a = [3, 1, 4, 1, 5, 9, 2, 6, 5]:
- n = 9, duyệt xong, max1 = 9, max2 = 6 → In ra 6.
- Với a = [7, 7, 7]:
- Không có giá trị nào nhỏ hơn 7 → max2 = -10^9 → In ra "Khong co".
Ghi nhớ
- Phân tích kỹ đề bài trước khi viết code: hiểu rõ yêu cầu đầu vào, đầu ra và các trường hợp đặc biệt.
- Chọn thuật toán hiệu quả, phù hợp với giới hạn dữ liệu (ở đây là O(n)).
- Kiểm tra biên: luôn xem xét các trường hợp ngoại lệ (mảng một phần tử, tất cả bằng nhau, v.v.).
- Viết code sạch, rõ ràng: dễ đọc, dễ sửa lỗi.
- Chạy thử nhiều bộ test để đảm bảo chương trình hoạt động đúng.
Bài tập gợi ý
Các em hãy tự luyện tập thêm với các bài toán tương tự để thành thạo hơn:
- Viết chương trình tìm giá trị nhỏ thứ hai trong mảng số nguyên. Nếu không có, in ra thông báo phù hợp.
- Cho một dãy số. Hãy xác định xem dãy số đó có phải là dãy số tăng dần hay không.
- Viết chương trình tính tổng các số dương trong mảng. Nếu không có số dương nào, in ra 0.
Chúc các em ôn tập thật tốt và đạt kết quả cao trong kỳ thi sắp tới!