bài đăng TaiNgheTroThinh này chỉ dẫn bạn cách viết văn bản mã giả (pseudocode) cho chương trình máy tính của mình. Nói đơn giản thì viết mã giả là tạo ra bản thảo ngôn ngữ không-phải-lập-trình để nêu rõ ý định code của bạn.
những bước
Phần 1Phần 1 Nắm vững nguyên tắc cơ bản của mã giả
1Biết mã giả là gì. Mã giả là bản phác thảo code nêu rõ từng bước mà bạn có thể dần chuyển đổi thành ngôn ngữ lập trình. Nhiều lập trình viên dùng mã giả để lên kế hoạch cho function (hàm) của thuật toán trước khi thiết lập chúng thành tác vụ code mang tính chuyên môn hơn.
Mã giả đóng vai trò như bản chỉ dẫn không chính thống, là một công cụ hỗ trợ cho việc nghĩ ra hướng giải quyết vấn đề của chương trình, và cũng là một công cụ giao tiếp có thể giúp bạn trình bày ý tưởng của mình với những người khác.
2Hiểu vì sao mã giả lại hữu ích. Mã giả được dùng để minh họa cho cách hoạt động của thuật toán máy tính. Coder (những người viết code) thường dùng mã giả làm một bước trung gian trong lập trình để chuyển từ giai đoạn lên kế hoạch ban đầu sang giai đoạn viết code thật có thể thực thi. một vài coder khác dùng mã giả cho những mục đích sau: Mô tả rằng thuật toán sẽ hoạt động như thế nào. Mã giả có thể minh họa rằng một hàm tạo (construct), cơ chế hoặc kỹ thuật nào đó có thể hoặc bắt buộc phải xuất hiện ở chỗ nào đó trong chương trình.Giải thích quy trình điện toán với những người dùng có trình độ chuyên môn thấp hơn. Máy tính cần có cú pháp nhập vô cùng chặt chẽ để chạy chương trình, nhưng con người (đặc biệt là những người không phải là lập trình viên) có thể sẽ cảm thấy dễ dàng hơn khi tìm hiểu một thứ ngôn ngữ linh hoạt, mạch lạc, cho thấy mục đích của từng dòng code.Thiết kế code cho cả nhóm. những kỹ sư phần mềm có trình độ cao thường chèn mã giả vào những bản thiết kế của mình để hỗ trợ giải quyết vấn đề phức tạp mà họ nhận thấy rằng nhiều lập trình viên của mình đang gặp phải. Nếu đang phát triển chương trình cùng với những coder khác, bạn có thể nhận thấy rằng mã giả giúp những ý định của bạn trở nên rõ ràng hơn.3Nhớ rằng mã giả mang tính chủ quan và không chính thống. Không có cú pháp cố định nào mà bạn buộc phải dùng khi viết mã giả, nhưng thường thì bạn sẽ có tác phong chuyên nghiệp hơn khi dùng những cấu trúc mã giả tiêu chuẩn mà những lập trình viên khác có thể dễ dàng hiểu được. Nếu bạn đang tự code dự án của mình, điều quan trọng nhất là mã giả hỗ trợ bạn sắp xếp ý tưởng và thực hiện kế hoạch. Nếu bạn đang hợp tác với những người khác trong cùng một dự án — bất kể đó là đồng nghiệp, lập trình viên hậu bối, hay cộng tác viên không chuyên về kỹ thuật — điều quan trọng là bạn phải dùng ít nhất một vài cấu trúc tiêu chuẩn để mọi người có thể dễ dàng hiểu được ý định của bạn.Nếu đang theo học khóa lập trình tại trường đại học, hội trại code hoặc ở công ty, bạn có thể sẽ phải làm bài kiểm tra về “tiêu chuẩn” mã giả đã được dạy. Tiêu chuẩn này thường sẽ có sự khác biệt tùy thuộc vào cơ sở giáo dục và giáo viên.
Minh bạch là mục tiêu hàng đầu của mã giả, có thể sẽ hữu ích nếu bạn làm việc theo những quy ước lập trình được chấp thuận. Khi phát triển mã giả thành code thật, bạn cần chuyển đổi mã giả sang ngôn ngữ lập trình – thế nên nó có thể giúp bạn định hình bản phác thảo trong đầu.
4Tập trung vào mục đích chính của mã giả. Bạn có thể dễ dàng quay trở lại viết code một khi đã nắm rõ mục đích của mình. Việc nhớ kỹ mục đích của mã giả — giải thích xem từng dòng của chương trình có tác dụng gì — giúp bạn luôn đi đúng hướng trong quá trình tạo ra văn bản mã giả
Phần 2Phần 2 Viết mã giả tốt
1dùng trình chỉnh sửa văn bản thuần túy. Dù có một vài thứ phức tạp hơn, ví dụ như trình xử lý văn bản Microsoft Word hoặc một chương trình tương tự giúp tạo ra văn bản rich-text (giàu tính chất), nhưng mã giả nên được định dạng ở mức tối thiểu để lúc nào cũng đơn giản.
Trình chỉnh sửa văn bản thuần túy bao gồm Notepad (trên Windows) and TextEdit (trên Mac).
2Bắt đầu bằng cách ghi lại mục đích của dòng lệnh. Việc dành một hoặc hai dòng để trình bày mục đích của dòng code giúp định hình phần còn lại của văn bản, đồng thời giúp bạn đỡ phải giải thích tính năng của chương trình với từng người mà bạn muốn giới thiệu mã giả. 3Chỉ viết một câu lệnh mỗi dòng. Từng câu lệnh trong mã giả của bạn chỉ nên thực hiện một hành động cho máy tính. Thông thường, nếu danh sách tác vụ được lập chuẩn xác thì mỗi tác vụ sẽ tương ứng với một dòng mã giả. Bạn nên cân nhắc viết ra danh sách tác vụ của mình rồi chuyển danh sách đó thành mã giả, rồi từ từ phát triển mã giả đó thành dòng code thật mà máy tính có thể hiểu được.4dùng khoảng trắng và thụt lề một cách hiệu quả. Việc chèn khoảng trắng giữa “những khối” văn bản giúp từng phần khác nhau của mã giả nằm tách biệt, và việc thụt lề từng khối báo hiệu rằng phần mã giả đó là thông tin chi tiết của đoạn mã giả bị thụt dòng ít hơn. Ví dụ: Phần mã giả nói về việc nhập số nên nằm trong cùng một “khối”, còn phần tiếp theo (chẳng hạn như phần nói về kết quả) nên nằm trong một khối khác.5Viết hoa những từ khóa chính nếu cần. Tùy thuộc vào yêu cầu mã giả hoặc môi trường mà bạn đang xuất bản mã giả của mình, có thể bạn sẽ cần viết hoa những câu lệnh được giữ lại trong code thật. Ví dụ: Nếu dùng từ khóa “if” và “then” trong mã giả, bạn có thể sẽ muốn viết hoa thành “IF” và “THEN”, chẳng hạn như viết là “IF input number THEN output result” (IF nhập số THEN kết quả đầu ra).6Viết bằng thuật ngữ đơn giản. Nhớ rằng bạn đang viết để giải thích rằng dự án sẽ làm gì chứ không đơn thuần là tóm tắt code. Điều này đặc biệt quan trọng khi bạn đang viết mã giả để demo cho khách hàng không biết gì về code, hoặc trình bày dự án cho lập trình viên mới vào nghề.
Thậm chí, bạn có thể còn muốn loại bỏ hết câu lệnh code và chỉ định nghĩa từng dòng lệnh bằng ngôn ngữ đơn giản. Ví dụ: Thay vì viết “if input i
s odd, output `Y`” (if đầu vào là lẻ, đầu ra là `Y`) thì viết “if user enters an odd number, display `Y`” (if người dùng nhập số lẻ, hiển thị `Y`).
7Giữ đúng trình tự của mã giả. Dù ngôn ngữ dùng để chỉnh sửa mã giả của bạn nên đơn giản, bạn vẫn cần giữ đúng trình tự của mã giả để phục vụ cho mục đích thực thi. 8Không để người khác phải đoán ý của bạn. Mọi chuyện đang diễn ra trong câu lệnh cần được mô tả một cách hoàn chỉnh. Phải nói rằng câu lệnh mã giả khá giống với câu khẳng định trong tiếng Anh thông thường. Mã giả thường không dùng những biến (variable) mà sẽ mô tả xem chương trình sẽ làm gì với những đối tượng gần với thế giới thực như số tài khoản, tên, hoặc số lần giao dịch.9Dùng cấu trúc lập trình tiêu chuẩn. Dù không có tiêu chuẩn cụ thể nào cho mã giả, nếu bạn dùng cấu trúc của những ngôn ngữ lập trình đã có (tuần tự) thì sẽ dễ dàng hơn cho những lập trình viên khác khi cố gắng hiểu những bước của bạn. Hãy dùng những thuật ngữ như “if” (nếu), “then” (thì), “while” (trong khi), “else” (nếu không thì), và “loop” (vòng lặp) giống trong ngôn ngữ lập trình ưa thích của bạn. Xem xét cấu trúc sau đây: if CONDITION then INSTRUCTION — Nghĩa là câu lệnh sẽ chỉ được thực thi nếu một điều kiện nào đó là đúng (true). “Instruction” trong trường hợp này là một bước mà chương trình sẽ thực hiện, còn “condition” nghĩa là dữ liệu phải thỏa mãn điều kiện nào đấy thì chương trình mới thực hiện hành động.while CONDITION do INSTRUCTION — Nghĩa là câu lệnh sẽ được thực hiện lặp đi lặp lại cho đến khi điều kiện không còn đúng nữa.do INSTRUCTION while CONDITION — Rất giống với “while CONDITION do INSTRUCTION”. Trong trường hợp này, điều kiện sẽ được kiểm tra trước khi thực hiện câu lệnh, còn trong trường hợp kia, câu lệnh sẽ được thực thi trước. Như vậy, lúc đó câu lệnh sẽ được thực hiện ít nhất một lần.function NAME (ARGUMENTS): INSTRUCTION — Nghĩa là mỗi khi một cái name nào đó được dùng trong code thì sẽ thay thế cho một câu lệnh cụ thể. “Arguments” là danh sách những biến (variable) mà bạn có thể dùng để làm rõ câu lệnh.10Sắp xếp những phần mã giả của bạn. Nếu thấy rằng có nhiều phần mã giả lớn định nghĩa những phần mã giả khác trong cùng khối, bạn có thể sẽ muốn dùng dấu ngoặc hoặc một vài ký hiệu nhận dạng khác cho dễ nhìn. Dấu ngoặc—bao gồm cả dấu ngoặc vuông tiêu chuẩn (chẳng hạn như [code]) và dấu ngoặc nhọn (ví dụ như {code})—đều có thể giúp bao hàm đoạn mã giả dài.Khi code, bạn có thể thêm bình luận (comment) bằng cách gõ “//” ở bên trái dòng bình luận (ví dụ như //Đây là bước tạm thời.). Bạn có thể dùng phương pháp này khi viết mã giả để viết những dòng bình luận không thể cho vào đoạn code.11Kiểm tra lại mã giả của bạn xem đã dễ đọc và rõ ràng chưa. Bạn nên trả lời được những câu hỏi dưới đây sau khi hoàn thành văn bản mã giả của mình: Liệu ai đó chưa biết đến câu lệnh này có thể hiểu được mã giả của bạn?Mã giả có được viết chuẩn chỉnh để dễ dàng chuyển hóa thành ngôn ngữ lập trình?Mã giả đã mô tả câu lệnh hoàn chỉnh, không bỏ sót thứ gì hay chưa?Liệu người khác có hiểu rõ từng tên đối tượng được dùng trong mã giả?Nếu nhận thấy rằng một phần trong mã giả cần được sửa đổi hoặc chưa nêu rõ một bước nào đó mà người khác có thể quên, bạn cần trở lại và bổ sung thông tin cần thiết
Phần 3Phần 3 Ví dụ về tạo văn bản mã giả
1Mở trình chỉnh sửa văn bản thuần túy. Bạn có thể dùng chương trình mặc định Notepad (trên Windows) hoặc TextEdit (trên Mac) nếu không muốn cài đặt chương trình mới. 2Định nghĩa chương trình của bạn. Dù không quá cần thiết, việc viết một hai dòng ở phía trên cùng văn bản sẽ giúp phân biệt với phần thụt lề đầu tiên của chương trình: Chương trình này sẽ yêu cầu phương án lựa chọn từ phía người dùng. Nếu phương án đó phù hợp, nội dung hồi đáp sẽ được hiển thị; nếu không phù hợp thì sẽ hiện thông báo. 3Viết đoạn mở đầu. Câu lệnh đầu tiên của bạn—thứ đầu tiên mà chương trình sẽ thực hiện khi chạy—nên là dòng đầu tiên: print greeting (in ra câu chào)”Hello stranger!”(Chào bạn!)4Thêm dòng tiếp theo. Thiết lập khoảng trống giữa dòng vừa viết và dòng tiếp theo bằng cách gõ ↵ Enter, sau đó viết dòng code tiếp theo. Trong ví dụ này, người dùng sẽ nhìn thấy hộp thoại sau đây: print prompt (in ra hộp thoại) press “Enter” to continue(nhấn “Enter” để tiếp tục) <người dùng nhấn “Enter”> 5Gọi hành động. Trong ví dụ này, người dùng sẽ nhìn thấy câu hỏi thăm: print call-to-action (in ra kêu gọi hành động)”How are you?”(Bạn khỏe không?)6Hiển thị cho người dùng thấy danh sách câu trả lời. Trong ví dụ này, sau khi nhấn ↵ Enter thêm một lần nữa, người dùng sẽ nhìn thấy danh sách câu trả lời dưới đây: display possible responses (hiển thị những câu trả lời)”1. Fine.”(khỏe)”2. Great!”(rất khỏe!)”3. Not good.”(không khỏe)7Yêu cầu người dùng thực hiện hành động. Đây là lúc chương trình yêu cầu người dùng nhập câu trả lời: print request for input (in ra yêu cầu nhập)”Enter the number that best describes you:”(nhập số mà bạn thấy phù hợp nhất)8Tạo câu lệnh “if” cho việc nhập của người dùng. Vì có nhiều câu trả lời mà người dùng có thể lựa chọn, bạn có thể sẽ muốn thêm nhiều kết quả dựa theo câu trả lời mà người dùng đã lựa chọn: if”1″(nếu chọn “1”) print response (in ra câu đáp)”Dandy!”(Khỏe là tốt rồi!)if”2″(nếu chọn “2”) print response (in ra câu đáp)”Fantastic!”(Rất khỏe thì quá tốt rồi!)if”3″(nếu chọn “3”) print response (in ra câu đáp)”Lighten up, buttercup!”(Thư giãn hơn chút cho khỏe đi bạn hiền!)9Thêm dòng báo lỗi. Trong trường hợp người dùng không lựa chọn đúng câu trả lời, bạn có thể hiển thị dòng báo lỗi: if input isn`t recognized (nếu không nhận diện được câu trả lời của người dùng) print response (in ra câu đáp) “You don`t follow instructions very well, do you?” (Bạn chưa làm theo đúng chỉ dẫn phải không?)10Thêm những phần khác của chương trình. Xem kỹ lại văn bản của bạn để bổ sung chi tiết nhằm đảm bảo rằng cả bạn và bất cứ ai đọc văn bản cũng đều hiểu được ý nghĩa. Sau khi làm theo phương pháp trên đây, văn bản mã giả hoàn thiện của bạn sẽ có dạng như sau: Chương trình này yêu cầu người dùng nhập số. Nếu số đó khớp
với phương án trả lời có sẵn, câu đáp lại sẽ được hiển thị; nếu không khớp thì hiện thông báo. print câu chào “Chào bạn!” print hộp thoại Nhấn “Enter” để tiếp tục <Sau khi người dùng nhấn “Enter”> Print câu hỏi thăm và kêu gọi hành động “Hôm nay bạn khỏe không?” display những phương án trả lời có thể lựa chọn “1. Khỏe.””2. Rất khỏe!””3. Không khỏe.” print yêu cầu input “Nhập số phù hợp nhất với bạn:”if nhập “1” print câu đáp “Khỏe thì tốt rồi!”if nhập “2” print câu đáp “Rất khỏe thì quá tốt rồi!”if nhập “3” print câu đáp “Thư giãn chút cho khỏe đi bạn hiền!”if không thể nhận diện input của người dùng print câu đáp “Bạn chưa làm theo đúng chỉ dẫn phải không?”11Lưu lại văn bản của bạn. Nhấn Ctrl+S (trên Windows) hoặc ⌘ Command+S ( trên Mac), gõ tên, sau đó nhấp Save để lưu
Lời khuyên
Mã giả là thứ tối ưu đối với những chương trình phức tạp có độ dài từ hàng trăm đến hàng nghìn dòng lệnh.
Cảnh báo
Mã giả không thể thay thế cho mã thật khi tạo chương trình. Mã giả chỉ có thể được dùng để tạo ra văn bản tham khảo nhằm biết rằng đoạn code có tác dụng gì.