ITエンジニアが仕事に対して思うこと

ITエンジニアとして働く中で感じたことを、現場の温度感そのままに言語化するブログです。設計・実装・運用のリアル、学び続ける負荷、品質とスピードのせめぎ合い、コミュニケーションの難しさなど、きれいごとだけでは語れない「仕事の実態」を整理します。誰かを責めるのではなく、なぜそうなるのかを構造で捉え、明日から少し楽に、少し強く働ける視点を提供します。新人から中堅、マネジメントまで参考に。

【動画解説】ITPEC tháng 4/2025 FE (Kỹ sư CNTT Cơ bản) Môn B – Câu 1 | Giải thích từng bước

                 [https://www.youtube.com/watch?v=bte-m522EDk:embed:cite]

Bạn vừa trình bày đúng cách suy luận cho Câu 1 của ITPEC FE Môn B tháng 4/2025: đáp án là tổ hợp f, trong đó A là điều kiện year mod 400 = 0, B là giá trị trả về true, và C là điều kiện year mod 100 = 0. Cốt lõi của bài là mã hóa quy tắc năm nhuận theo đúng thứ tự ưu tiên bằng cấu trúc if–elseif–else, để chương trình gặp điều kiện thỏa mãn sớm nhất thì kết luận ngay, tránh mâu thuẫn giữa các quy tắc. Trước hết, ta cần nhớ quy tắc lịch Gregory: năm chia hết cho 400 chắc chắn là năm nhuận; năm chia hết cho 100 nhưng không chia hết cho 400 thì không phải năm nhuận; còn lại, nếu chia hết cho 4 thì là năm nhuận, nếu không chia hết cho 4 thì không phải năm nhuận. Vì vậy, thứ tự kiểm tra là yếu tố quyết định. Nếu kiểm tra chia hết cho 4 quá sớm, ta sẽ sai với các năm thế kỷ như 1900, vì 1900 chia hết cho 4 nhưng thực tế lại không phải năm nhuận. Do đó, chương trình phải ưu tiên xử lý ngoại lệ “chia hết cho 400” trước, rồi mới loại trừ nhóm “chia hết cho 100”, sau đó mới xét điều kiện “chia hết cho 4”. Với tổ hợp f, khối lệnh đầu tiên if(A) sẽ trở thành if(year mod 400 = 0) và ngay lập tức return B, tức return true. Điều này đảm bảo những năm như 2000 được kết luận là năm nhuận ngay từ đầu. Nếu chương trình đi tiếp xuống nhánh elseif tiếp theo, điều đó đồng nghĩa năm đang xét không chia hết cho 400. Khi đó ta kiểm tra C, tức year mod 100 = 0. Nếu điều kiện này đúng, năm đó là năm thế kỷ nhưng không thuộc ngoại lệ 400, nên theo quy tắc phải kết luận không nhuận và hàm trả về false. Đây chính là trường hợp 1900: thất bại ở điều kiện chia hết cho 400, nhưng thỏa mãn chia hết cho 100, nên bị loại và trả về false, hoàn toàn đúng. Nếu cả hai điều kiện trên đều không thỏa, tức là năm không chia hết cho 400 và cũng không chia hết cho 100, khi đó năm thuộc nhóm “năm thường” (không phải năm thế kỷ). Với nhóm này, quy tắc đơn giản là chia hết cho 4 thì nhuận, không chia hết cho 4 thì không nhuận. Vì vậy nhánh elseif(year mod 4 = 0) sẽ trả về true cho các năm như 2024, và nếu không thỏa thì rơi xuống else trả về false cho các năm như 2023. Nhờ thứ tự ưu tiên như vậy, chương trình vừa xử lý đúng ngoại lệ cao nhất (400), vừa tránh bẫy năm thế kỷ (100), rồi mới áp dụng quy tắc phổ biến (4), đảm bảo kết quả chính xác trong mọi trường hợp.