Mã giả là gì?


19

Gần đây tôi đã thấy rất nhiều đề cập đến Pseudocode, trên trang này và các trang khác. Nhưng tôi không hiểu:

  • Mã giả là gì? Ví dụ, bài viết Wikipedia dưới đây cho biết "Nó sử dụng các quy ước cấu trúc của ngôn ngữ lập trình, nhưng dành cho việc đọc của con người hơn là đọc máy". Điều này có nghĩa là nó không thực sự được sử dụng để tạo chương trình?

  • Tại sao nó được sử dụng?

  • Nó được sử dụng như thế nào?
  • Nó được coi là một ngôn ngữ lập trình? (Xem trích dẫn Wikipedia ở trên)
  • Nó thường được biết đến / sử dụng?

Tôi thực sự không biết bắt đầu từ đâu với điều này. Tôi đã Googled nó và tôi đã xem bài viết Wikipedia về chủ đề này , nhưng tôi vẫn không hoàn toàn hiểu nó là gì.


7
Vui lòng cung cấp trích dẫn cụ thể và câu hỏi từ bài viết Wikipedia. Tất cả các câu hỏi của bạn được trả lời ở đó. Nếu bạn không thể hiểu các từ hoặc cụm từ, vui lòng trích dẫn một từ hoặc cụm từ cụ thể trong câu hỏi của bạn để chúng tôi có thể giải thích nó. Thật khó để biết những gì bạn thấy khó hiểu trong bài viết đó. Thay vì lặp lại bài viết đó ở đây, sẽ hữu ích nếu bạn có thể tham khảo những điều cụ thể làm bạn bối rối.
S.Lott

@ S.Lott: Hoàn tất
Năng động

20
while (you.doNotUnderstand(pseudocode)) { q = you.askQuestion(); a = we.answer(q); you.digestAnswer(a) }
Joachim Sauer

3
if (question.IsAnswered) then you.UnderstandPseudoCode <- true
e-MEE

1
Nó là nền tảng giữa ngôn ngữ tự nhiên và ngôn ngữ lập trình - nó trang trọng hơn ngôn ngữ nói, nhưng ít trang trọng hơn ngôn ngữ lập trình thực sự.
Ingo

Câu trả lời:


19

Mã giả, như tên của nó, không phải là mã thực, nhưng nó trông giống như mã. Nó giúp mọi người hiểu một miền vấn đề hoặc giải pháp tốt hơn mà không cần phải thêm tất cả hành lý cần thiết khi sử dụng ngôn ngữ thực.

Nói tóm lại: nó chỉ được sử dụng cho mục đích minh họa.

Mã giả và lập trình
Không có định nghĩa hoặc quy tắc cố định nào về mã giả, nó có thể khác nhau mỗi lần. Nó không phải là ngôn ngữ lập trình (thực) và không ai sẽ coi nó là ngôn ngữ. Nó không thể được biên dịch hoặc sử dụng như một ngôn ngữ lập trình thực sự: nếu bạn có thể làm điều đó, nó không còn là mã giả. Mã giả không cần phải có tính xác định (một điều cần thiết cho máy tính để biên dịch), nó cần phải được hiểu bởi con người. Để sử dụng mã giả, bạn sẽ phải chuyển đổi nó sang ngôn ngữ lập trình yêu thích của bạn. Quá trình chuyển đổi này có thể khác nhau mỗi lần và không có quy tắc nào có thể được đưa ra cho nó bởi vì, một lần nữa, mã giả giống như lời nói tự do: nó có thể có bất kỳ hình thức nào.

Công dụng
Nó thường được sử dụng, đặc biệt là trong giai đoạn thiết kế các dự án để giúp hiểu một cách tiếp cận nhất định đối với một vấn đề. Nó cũng thường được sử dụng trong thiết kế thuật toán hoặc khi giáo viên vẽ một cái gì đó lên bảng. Trong tất cả các trường hợp này, không cần thiết phải biên dịch mã, bạn chỉ muốn hiểu vấn đề / giải pháp.

Các loại mã giả
Mã giả có thể, nhưng không phải là một loại nhất định, nghĩa là bạn có thể có mã giả dựa trên ngăn xếp để minh họa cho MSIL, bạn có thể có mã giả bắt buộc để minh họa Java, C #, C ++, Python, bạn có thể có mã giả chức năng để minh họa F #, Haskell, SQL, v.v.

Ví dụ
Từ đỉnh đầu của tôi, nhưng bất cứ điều gì đi, bởi vì mã giả có thể được phát minh tại chỗ:

Mã giả XML, hiển thị cấu trúc đầu + cơ thể cho phép nhiều phần tử p:

<head ...
   <title ...
</
<body ...>
   (<p>...)+
</

Mã giả bắt buộc, hiển thị vấn đề kim cương trong các ngôn ngữ hỗ trợ đa kế thừa:

class A() { readFile(); }
class B() : A {}       // overrides readFile in A
class C() : A {}       // overrides readFile in A
class D() : B, C {}    // what definition of readFile should be used?

Hai ví dụ trên rõ ràng giống với một số (loại) ngôn ngữ, nhưng thực sự không phải là ngôn ngữ đó và không thể biên dịch được. Họ thay vì minh họa một cái gì đó mà bạn muốn giải thích.


14
Có thể đáng để thêm rằng mã giả có thể sống ở bất kỳ mức độ trừu tượng nào: Bạn có thể mô tả các hoạt động cụ thể của thuật toán theo cách dễ dàng dịch sang mã không giả thực hoặc bạn có thể đưa ra mức rất cao tổng quan về một số cách tiếp cận bằng cách sử dụng "phương thức" hoặc "đối tượng" được định nghĩa rất rộng. Đó là một phổ rộng.
Joachim Sauer

8

Mã giả là gì? Ví dụ, bài viết Wikipedia dưới đây cho biết "Nó sử dụng các quy ước cấu trúc của ngôn ngữ lập trình, nhưng dành cho việc đọc của con người hơn là đọc bằng máy". Điều này có nghĩa là nó không thực sự được sử dụng để tạo chương trình?

Chính xác là như vậy, đó là mã được viết dưới dạng thân thiện với con người. Nó không thể được sử dụng để làm cho một chương trình làm việc.

Tại sao nó được làm / được sử dụng?

Bởi vì Pseudocode viết nhanh và đọc nhanh. Vì nó không có phần ngôn ngữ cụ thể nên rõ ràng hơn để đọc. Nó cũng là ngôn ngữ độc lập để bất cứ ai cũng có thể đọc nó (vì lý do đó, nó được sử dụng trong rất nhiều sách giáo khoa)

Nó có được coi là ngôn ngữ lập trình không? Xem trích dẫn Wikipedia ở trên.

Không. Một ngôn ngữ lập trình đòi hỏi nhiều hơn là cấu trúc. Nó đòi hỏi ngữ nghĩa chính thức, mà mã giả thiếu.

Nó thường được biết đến / sử dụng?

Vâng. Bất cứ ai ở trên một cấp cơ sở nên biết cách đọc / viết mã giả. Nó cần thiết để đọc rất nhiều sách giáo khoa và mã kế hoạch trong một nhóm.


6

Nếu bạn đã đọc bài viết wiki, thì hầu hết các câu hỏi của bạn sẽ rõ ràng. Tôi sẽ cố gắng trả lời chúng theo cách đơn giản hơn ở đây. Hãy xem 2 ví dụ sau:

Phần 1 - Ví dụ

Mã số 1 - Đăng ký khách hàng - Một ví dụ về các bước của quy trình:

  1. Khách hàng đi đến màn hình đăng ký
  2. Khách hàng nhập thông tin của mình.
  3. Nếu chi tiết hợp lệ được nhập, lưu thông tin khách hàng trong cơ sở dữ liệu
  4. Hộp thoại hiển thị khác với thông báo lỗi 100.

Mã số 2 - Xác thực tên khách hàng - Một ví dụ về chức năng lập trình

Function ValidateCustomerName(Name1)

If (Name1 is entered and Name2 is entered) then return 1

If (Name1 is not entered) 

   Send Error Message

   return 0

Endif

...

End Function

Phần 2 - Bây giờ đến câu hỏi của bạn

Mã giả là gì?

Đây là một cách để viết các bước của một thuật toán hoặc một quy trình.

Tại sao nó được làm / được sử dụng?

Nó được sử dụng để hiển thị các bước quy trình hoặc thuật toán mà không bị phụ thuộc vào ngôn ngữ lập trình cụ thể hoặc các ký hiệu đặc biệt.

Nó có được coi là ngôn ngữ lập trình không?

Nó không thể biên dịch được và điều này là do nó không có cú pháp cụ thể và do đó nó không phải là ngôn ngữ lập trình.

Nếu vậy, nó có khả năng như, giả sử, Python?

Nó có thể được thực hiện có khả năng như bạn muốn. Bạn có thể viết các câu như: Nếu Tuổi hợp lệ ...

Nó thường được biết đến / sử dụng?

Vâng. Nó rất hữu ích khi suy nghĩ về các thuật toán và cho các nhà phân tích kinh doanh để cung cấp thông số kỹ thuật.


@Jae, tôi đánh giá cao việc chỉnh sửa.
NoChance

4

Ví dụ tốt nhất về Pseudocode là khi tôi chia sẻ một văn phòng với một lập trình viên FORTRAN, trong khi tôi đang lập trình trong Pascal. Bất cứ khi nào chúng tôi giúp nhau, chúng tôi phải viết nó bằng Pseudocode. Tại thời điểm tôi không biết FORTRAN nên không có cách nào để tôi có được cú pháp chính xác (đặc biệt là tất cả các vị trí cần thiết cho các dấu cụ thể). Ông không bao giờ phải viết bằng dấu chấm phẩy. Trên bảng trắng, chúng tôi đã viết bằng mã giả để có thể hiểu được, mà không bị sa lầy vào các quy tắc cú pháp phức tạp.

Không có cấu trúc nghiêm ngặt cho Pseudocode. Nếu người viết biết một ngôn ngữ sử dụng "{" sau câu lệnh if họ sẽ đặt nó lên bảng, nếu họ biết trăn thì họ không biết. Mục tiêu là nhanh chóng phác thảo cách tiếp cận cơ bản cho vấn đề, chứ không phải mã hoàn toàn chính xác.

Giáo viên có thể sử dụng nó để đưa ra hướng dẫn cho học sinh, mà không cho họ câu trả lời đúng. Một khi bạn biết nhiều hơn thì một ngôn ngữ Mã giả sẽ được sử dụng tự nhiên trong khi phác thảo các đoạn mã.


2

Mã giả không phải là ngôn ngữ, không phải là quy ước. Mỗi sách giáo khoa hoặc giấy sẽ sử dụng phiên bản mã giả riêng của nó. Cũng như nhiều "ngôn ngữ" toán học không chính thức khác, trong trường hợp tốt nhất, nó sẽ được mô tả không chính thức trong bài báo, trong trường hợp xấu nhất, các tác giả sẽ hy vọng nó đủ "rõ ràng".


Trong Bestest trường hợp nó là đủ rõ ràng để không đòi hỏi bất kỳ mô tả chính thức hoặc không chính thức;).
Abel

@Abel, không có thứ gọi là chủ nghĩa hình thức "hiển nhiên". Ngay cả một cái gì đó "rõ ràng" như số học thập phân phải được giới thiệu đúng. Nếu không, sự nhầm lẫn là không thể tránh khỏi, không may. Tôi chưa bao giờ thấy một mã giả rõ ràng mà không có ít nhất một số giới thiệu chính thức kèm theo.
SK-logic

Chủ đề này là về mã giả. Chủ nghĩa hình thức không có gì để làm với điều đó. Nhưng nhận xét của tôi là "ý định chơi chữ";).
Abel

@Abel, một ngôn ngữ trừu tượng cũng là một chủ nghĩa hình thức (ít nhất là khi được sử dụng trong một bài báo khoa học nhiều hay ít).
SK-logic

2

Mã giả là gì?

Mã giả về cơ bản là các hướng dẫn bằng văn bản về những gì một chương trình nên làm để hoàn thành một hoạt động. Mã giả được viết bằng ngôn ngữ nói của bạn. Bạn chỉ cần viết ra các bước của một thuật toán hoặc thủ tục để giúp bạn hoặc người khác đọc nó dễ dàng hơn và chuyển đổi nó thành ngôn ngữ lập trình thực sự.

Tại sao nó được làm / được sử dụng?

Nó được tạo ra để giúp bạn chỉ định các bước của quy trình, quy trình hoặc thuật toán mà không cần sử dụng ngôn ngữ lập trình. Một cách khác có thể là sử dụng sơ đồ.

Nó có được coi là ngôn ngữ lập trình không?

Không, đó không phải là ngôn ngữ lập trình, vì không có quy tắc chính thức.

Nó thường được biết đến / sử dụng?

Cá nhân, tôi luôn cố gắng sử dụng mã giả khi viết các thuật toán hoặc các thủ tục phức tạp.


0

Định nghĩa cá nhân của tôi về mã giả là "những thứ tôi viết bằng tiếng Anh đơn giản trên một tờ giấy khi thiết kế mã"

Trước khi mã hóa từ "thiết kế" mã giả, tôi sẽ thêm mã giả của mình làm nhận xét. Sau đó làm việc thông qua những bình luận đó tôi có thể thêm mã "thực tế" thực hiện nhiệm vụ được mô tả.

Có thể có một tên chính thức, mà tôi không biết, đối với phương pháp mã hóa này và tôi chỉ sử dụng nó khi làm một cái gì đó mới / phức tạp.


-4

Như cách giảng viên lập trình của tôi nói:

Pseudocode là phiên bản tiếng Anh của bất kỳ ngôn ngữ lập trình nào.


2
-1 Không hữu ích. Các trích dẫn chỉ có ý nghĩa trong số một lời giải thích về mã giả (thiếu trong câu trả lời này). Nếu không, nó có thể khá sai lệch. Một người mới có thể tự hỏi: tốt, các phương thức của C # đều bằng tiếng Anh, vì vậy điều đó có nghĩa là C # tôi đang sử dụng là Pseudocode, phải không ...? Họ gọi nó là gì khi họ đang sử dụng C # ở Đức?
doppelgreener
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.