Trong 07 bài học trước mới chỉ là những bài học nhập môn lập trình C++ mà thôi. Trước khi đi vào những bài học về C++ cơ bản thì chúng ta hãy tạm dừng một chút nhé. Bài viết này mình muốn trình bày tới bạn một công cụ để hỗ trợ bạn phân tích bài toán. Đó là sử dụng lưu đồ thuật toán hay còn gọi là flowchart. Và đây cũng là một trong những bí quyết để tập rèn luyện tư duy lập trình đó bạn ạ.
Lưu đồ thuật toán (flowchart) là gì
Lưu đồ thuật toán là công cụ dùng để biểu diễn thuật toán, mô tả nhập (input), dữ liệu xuất (output) và luồng xữ lý thông qua các ký hiệu hình học.
➤ Lưu ý: Công cụ này rất thích hợp để bạn học cách tư duy phân tích bài toán. Thường thì các bạn sinh viên không thích làm lưu đồ thuật toán cho lắm. Thay vào đó thì các bạn ấy thích code ngay khi nhận được yêu cầu. Nhưng bạn ạ, đó là cách học nóng vội mà thôi, sẽ có ít người thành công với cách học như vậy. Một trong những bí quyết để học lập trình tốt chính là học cách tư duy và phân tích bài toán chứ không phải học chỉ chăm chăm vào học ngôn ngữ. Do đó bạn hãy học và sử dụng công cụ này để việc lập trình trở nên dễ dàng hơn.
Các ký hiệu
Để vẽ lưu đồ thuật toán, bạn cần nhớ và tuân thủ các ký hiệu sau đây:
Xem bảng ký hiệu này chắc bạn vẫn chưa hình dung được là vẽ sơ đồ thuật toán (flowchart) như thế nào đâu phải không. Hãy cứ bình tĩnh bạn nhé, mình sẽ hướng dẫn bạn vẽ bằng những ví dụ cụ thể. Nhưng trước tiên bạn cần lưu ý phương pháp để duyệt (đọc) lưu đồ thuật toán đã nhé.
Bạn duyệt lưu đồ thuật toán theo trình tự sau:
- Duyệt từ trên xuống.
- Duyệt từ trái sang phải.
Ví dụ minh hoạ
Để cho bạn dễ hình dung, mình sẽ xây dựng lưu đồ thuật toán cho 02 ví dụ sau:
Ví dụ 1
Bài toán trên rất đơn giản phải không nào? Dù là đơn giản, nhưng mình hãy cứ thử phân tích một xíu nhé.
- Đầu vào: một số nguyên n.
- Đầu ra: giá trị tuyệt đối của số nguyên n.
- Giải thuật: Mình dùng mã giả (Pseudocode), bạn mới chưa biết mã giả thì xem bằng ngôn ngữ tự nhiên cho dễ hiểu.
Bản chất của bài toán này là bạn cần kiểm tra số nguyên n có nhỏ hơn 0 hay không. Nếu nhỏ hơn 0 thì bạn nhân giá trị của n cho -1 để chuyển thành số nguyên dương. Còn nếu n lớn hơn 0 thì bạn không cần làm gì cả. Sau cùng thì bạn in giá trị của n ra, đó cũng chính là giá trị tuyệt đối mà bạn cần.
➤ Lưu đồ thuật toán (flowchart): Từ những phân tích trên, bạn sẽ có một lưu đồ thuật toán thế này.
Có thể lần đầu vẽ bạn sẽ hơi bỡ ngỡ, không cần vội vàng gì cả bạn nhé. Bạn hãy xem lại và đọc từng ký hiệu một theo qui tắc thử xem nhé.
Ví dụ 2
Ví dụ này mình sẽ nâng cao hơn một chút nhé.
Cũng như ví dụ 1, mình cũng sẽ phân tích bài toán thử đã nhé.
- Đầu vào: hai số nguyên a và b.
- Đầu ra: nghiệm của phương trình.
- Giải thuật: Ở ví dụ này thì mình sẽ minh hoạ bằng mã giả (Pseudocode) thôi nhé.
Phương pháp giải phương trình bậc nhất thì bạn nào cũng biết phải không nào. Do đó mình sẽ không diễn giải lại nhé, mình tin rằng bạn đã có thể đọc hiểu được mã giả ở trên.
➤ Lưu đồ thuật toán (flowchart): Từ những phân tích trên, bạn sẽ có một lưu đồ thuật toán thế này.
Công cụ vẽ lưu đồ thuật toán (flowchart)
Để vẽ lưu đồ thuật toán thì bạn có thể sử dụng bất kỳ phần mềm nào có khả năng vẽ. Hoặc đơn giản hơn là dùng Word, PowerPoint cũng được. Tuy nhiên để cho dễ dàng thì mình đề nghị 02 phần mềm sau đây:
- Microsoft Visio: đây là phần mềm hỗ trợ vẽ kỹ thuật khá đa năng của Microsoft. Bạn có thể dùng phần mềm này để vẽ các dạng sơ đồ (bao gồm cả flowchart). Nhưng lưu ý là phần mềm này chỉ hỗ trợ bạn vẽ thôi, không hỗ trợ “chạy” thử trên sơ đồ bạn nhé.
- Crocodile Clips ICT: đây là cũng là phần mềm hỗ trợ việc vẽ sơ đồ và nhiều cái khác nữa. Điểm hay của phần mềm này là cho phép bạn “chạy” thử từng bước trên sơ đồ. Nhờ đó mà bạn sẽ nắm được cách hoạt động của sơ đồ dễ dàng hơn. Do đó mình đề xuất sử dụng phần mềm này để xây dựng sơ đồ trong quá trình học. Bạn có thể download bằng link mình cung cấp ở cuối bài viết. Ngoài ra bạn có thể xem video đính kèm để biết cách sử dụng Crocodile Clips ICT.
Tổng kết
Lưu đồ thuật toán (flowchart) là công cụ rất đắc lực trong việc phân tích và thể hiện thuật giải cho bài toán. Hy vọng rằng bài viết này sẽ cung cấp thêm cho bạn một công cụ hữu ích trong việc học lập trình. Vì vậy hãy tận dụng nó thật tốt để việc học trở nên dễ dàng hơn bạn nhé.
Download
Đây là link download phần mềm Crocodile Clips ICT 6.0.5
➤ Download link: https://www.fshare.vn/file/O8POYLQMPCBA
anh cho em hỏi Crocodile ict 605 có giải quyết được bài toán xuất câu thông báo không? VD nhập vào số nguyên a, hỏi số vừa nhập là số chẵn hay số lẻ Em chỉ biết xuất giá trị, còn xuất câu thông báo thì em chưa biết làm. Mong hồi âm của anh.
cám ơn anh
Chào em,
Rất tiếc là Crocodile Clips ICT không hỗ trợ đầy đủ các kí hiệu chuẩn để vẽ flowchart, do đó cũng thiếu ký hiệu xuất (ký hiệu số 5 trên bảng). Nhưng nếu cần xuất câu thông báo thì em cũng có thể làm tương tự cách xuất giá trị. Cách làm thì em có thể tham khảo ví dụ mẫu anh làm ở đây (file download).
https://app.box.com/s/axnc97da1uyx6rm7ruuva6z3z52o2339
Bài này vẽ sơ đồ ntn ạ “Nhập số x. Hãy in 10 số liên tiếp lớn hơn x . Vd x=8 thì 10 số cần tìm là: 9 11 13 15 17 19 21 23 25 27”
em muốn tính hình tích hình vuông nhưng ko tìm ra cách
Mình cám ơn nhiều nha