Bài trước: Python thực hành (3) - Cú pháp của Python
Như đã đề cập, để tạo ra một chương trình trong Python, chúng ta cần thực hiện 5 bước:
- Phân tích bài toán và thiết kế thuật toán
- Lập trình
- Thông dịch và thực thi
- Kiểm thử và gỡ lỗi
- Hiển thị kết quả
Ở các phần trước chúng ta đã làm quen với một số bước như lập trình, thông dịch và thực thi, hiển thị kết quả.
Phần này, chúng ta sẽ tìm hiểu về Gỡ lỗi chương trình.
4.1 Gỡ lỗi chương trình
Trong lập trình, "lỗi" (bug) là những sai sót trong mã nguồn của chương trình khiến chương trình không hoạt động như mong đợi. Lỗi có thể dẫn đến nhiều kết quả khác nhau, từ việc chương trình bị treo, đưa ra kết quả sai, hoặc thậm chí gây ra sự cố bảo mật.
Các loại lỗi thường gặp:
- Lỗi cú pháp (syntax error)
- Lỗi logic (logical error)
- Lỗi khi chạy (runtime error)
- Lỗi kiểu dữ liệu (type error)
- Lỗi tràn bộ nhớ (memory overflow)
- Lỗi bảo mật (security vulnerability)
Gỡ lỗi là gì?
Gỡ lỗi (debugging) là quá trình tìm kiếm và loại bỏ các lỗi trong mã nguồn của chương trình máy tính.
Để gỡ lỗi, chúng ta thực hiện theo các bước sau:
- Xác định lỗi: dựa vào thông báo lỗi, kiểm tra kết quả đầu ra chương trình, hoặc sử dụng các công cụ gỡ lỗi để xác định xem chương trình đang bị lỗi gì? Ở dòng mã nào?
- Phân tích lỗi: phân tích, phỏng đoán xem tại sao lại có lỗi.
- Sửa lỗi: khi đã biết được lỗi, chúng ta sẽ thực hiện sửa lại mã nguồn để chương trình chạy đúng.
- Kiểm tra lại: chạy lại chương trình để đảm bảo không còn lỗi.
4.2 Thực hành gỡ lỗi
Lỗi cú pháp
Lỗi cú pháp (syntax error) là loại lỗi xảy ra khi mã nguồn của chương trình vi phạm các quy tắc cú pháp của ngôn ngữ lập trình. Nói một cách đơn giản, lỗi cú pháp xảy ra khi bạn viết mã nguồn không đúng "ngữ pháp" mà ngôn ngữ lập trình đó yêu cầu.
Ví dụ 1:
Bạn tạo một chương trình Python, ví dụ loiCuPhap1.py với nội dung sau:
[loiCuPhap1.py]
# dòng mã sau bị lỗi cú pháp
print("hi ban Teo"
Mở chương trình cửa sổ dòng lệnh, thực thi chương trình, bạn sẽ nhận được thông báo lỗi như sau:
E:\pythonLabs>py loicuphap1.py
File "E:\pythonLabs\loicuphap1.py", line 1
print("hi ban Teo"
^
SyntaxError: '(' was never closed
Khi gặp lỗi, việc đầu tiên là đọc và hiểu thông báo lỗi nói gì?
Ví dụ, ở lỗi phía trên, máy tính thông báo là:
- Lỗi xảy ra ở hàng số 1 (line 1), trong tập tin loiCuPhap1.py
- Đây là lỗi cú pháp (Syntax Error), xảy ra tại dấu (^), nội dung lỗi là: có mở ngoặc nhưng không đóng ( ‘(‘ was never close).
- Cách sửa lỗi: là tìm tới vị trí bị lỗi: dòng số 1 trong tập tin loiCuPhap1.py, thêm dấu )
- Chạy lại chương trình sẽ không còn lỗi nữa, thấy có dòng chữ hi ban Teo xuất ra màn hình.
Ví dụ 2:
Tạo một chương trình Python, ví dụ loiCuPhap2.py với nội dung sau:
[loiCuPhap2.py]
# dòng mã sau bị lỗi cú pháp
a = 3
if a > 0:
print("a là số dương")
Mở chương trình cửa sổ dòng lệnh, thực thi chương trình, bạn sẽ nhận được thông báo lỗi như sau:
E:\pythonLabs>py loicuphap2.py
File "E:\pythonLabs\loicuphap2.py", line 4
print(f"{a} là số dương")
^^^^^
IndentationError: expected an indented block after 'if' statement on line 3
- Đọc thông báo, để xác định lỗi
- Lỗi xảy ra ở hàng số 4 (line 4), trong tập tin loiCuPhap2.py
- Đây là lỗi cú pháp (cụ thể là lỗi liên quan đến thụt lề - IndentationError), xảy ra tại dấu (^^^^^), nội dung lỗi là: mong đợi một dấu thụt lề cho đoạn mã sau lệnh if ở dòng số 3.
- Cách sửa lỗi: là tìm tới vị trí bị lỗi: dòng số 4 trong tập tin loiCuPhap2.py, thụt lề cho lệnh print()
- Chạy lại chương trình sẽ không còn lỗi nữa, thấy có dòng chữ 3 là số dương xuất ra màn hình.
4.3 Lập trình cũng là một cách để học tư duy
Tư duy (thinking) là gì?
Tư duy là cách mà bộ não của chúng ta suy nghĩ, giải quyết vấn đề hoặc hiểu về thế giới xung quanh. Nó giống như một "công cụ" trong đầu giúp ta tưởng tượng, phân tích, và đưa ra quyết định. Nói đơn giản, tư duy là khi bạn dùng đầu óc để nghĩ xem làm thế nào để làm một việc gì đó hoặc hiểu một điều gì đó.
Bạn nào chỉ chờ có hướng dẫn từng bước để làm theo thì khác gì cái máy, mình là con người mà, phải hơn cái máy chứ! Biến cái máy (máy tính, robot, chatbot, AI) trở thành công cụ để hỗ trợ con người trong quá trình tư duy, làm việc.
Một số ví dụ về tư duy.
Khi bạn chơi cờ:
- Bạn không chỉ di chuyển quân cờ một cách ngẫu nhiên, mà còn suy nghĩ về những nước đi tiếp theo của mình và của đối thủ.
- Bạn dự đoán những tình huống có thể xảy ra, và tìm ra những chiến thuật tốt nhất.
- Đó chính là tư duy chiến lược.
Khi bạn viết văn:
- Bạn không chỉ viết ra những câu văn đơn giản, mà còn suy nghĩ về cách diễn đạt ý tưởng của mình một cách rõ ràng và hấp dẫn.
- Bạn sắp xếp các ý tưởng theo một trình tự logic, và sử dụng ngôn ngữ một cách sáng tạo.
- Đó chính là tư duy sáng tạo.
Khi bạn sửa chữa một đồ vật bị hỏng:
- Bạn không chỉ thử một cách ngẫu nhiên, mà còn suy nghĩ về nguyên nhân gây ra hỏng hóc.
- Bạn phân tích cấu tạo của đồ vật, và tìm ra cách sửa chữa hiệu quả nhất.
- Đó chính là tư duy logic và phân tích.
Tư duy giúp chúng ta:
- Hiểu rõ hơn về thế giới xung quanh.
- Giải quyết vấn đề một cách hiệu quả.
- Đưa ra những quyết định sáng suốt.
- Sáng tạo ra những ý tưởng mới.
- Học hỏi và phát triển bản thân.
Tư duy là một kỹ năng rất quan trọng, và chúng ta có thể rèn luyện nó bằng cách đọc sách, học hỏi, và thực hành.
Thông qua lập trình, bạn sẽ rèn luyện các phương pháp tư duy sau:
- Tư duy của một nhà toán học: sử dụng ngôn ngữ hình thức (ngôn ngữ lập trình) để biểu thị các ý tưởng.
- Tư duy của một kỹ sư: thiết kế mọi thứ, lắp ráp các thành phần thành một hệ thống và đánh giá kết quả khi thay đổi các giải pháp.
- Tư duy của một nhà khoa học: quan sát hành vi của các hệ thống phức tạp, hình thành giả thuyết và kiểm nghiệm các dự đoán.
4.4 Bài tập
Bài tập 4.1 Tìm lỗi, ghi lại lỗi và sửa lỗi cú pháp sau:
[baiTap4_1.py]
# dòng mã sau bị lỗi cú pháp
printer("hi ban Ti")
Bài tập 4.2 Tìm lỗi, ghi lại lỗi và sửa lỗi cú pháp sau:
[baiTap4_2.py]
# đoạn mã sau bị lỗi cú pháp
a = 6
b = 5
print(''ket qua: '')
print(a + b)
Câu hỏi 4.3 Lỗi lập trình là gì? Phát biểu nào sau đây không đúng?
A. Lỗi lập trình là những sai sót trong mã nguồn khiến chương trình không hoạt động như mong đợi.
B. Lỗi lập trình chỉ xảy ra khi chương trình đang chạy, không thể xảy ra trong quá trình viết mã (lập trình).
C. Lỗi lập trình có thể dẫn đến nhiều kết quả khác nhau, từ việc chương trình bị treo đến gây ra sự cố bảo mật.
D. Các loại lỗi lập trình thường gặp bao gồm lỗi cú pháp, lỗi logic, và lỗi kiểu dữ liệu.
Câu hỏi 4.4 Tư duy là gì? Phát biểu nào sau đây không đúng?
A. Tư duy là cách mà bộ não của chúng ta suy nghĩ, giải quyết vấn đề hoặc hiểu về thế giới xung quanh.
B. Tư duy giúp chúng ta hiểu rõ hơn về thế giới xung quanh, giải quyết vấn đề hiệu quả và đưa ra quyết định sáng suốt.
C. Tư duy là một kỹ năng quan trọng có thể rèn luyện bằng cách đọc sách, học hỏi và thực hành.
D. Tư duy chỉ đơn thuần là việc làm theo các hướng dẫn có sẵn, không cần suy nghĩ sáng tạo.