รหัสเทียมคืออะไร?


19

ฉันได้เห็นการกล่าวถึง Pseudocode จำนวนมากเมื่อเร็ว ๆ นี้บนไซต์นี้และอื่น ๆ แต่ฉันไม่เข้าใจ

  • Pseudocode คืออะไร ตัวอย่างเช่นบทความ Wikipedia ด้านล่างกล่าวว่า"มันใช้แบบแผนโครงสร้างของภาษาการเขียนโปรแกรม แต่มีไว้สำหรับการอ่านของมนุษย์มากกว่าการอ่านด้วยเครื่อง" นี่หมายความว่าไม่ได้ใช้สร้างโปรแกรมจริงหรือ

  • ทำไมถึงใช้

  • ใช้อย่างไร?
  • ถือว่าเป็นภาษาโปรแกรมหรือไม่ (ดูคำพูดของ Wikipedia ข้างต้น)
  • มันรู้จักกันทั่วไป / ใช้?

ฉันไม่รู้จริงๆว่าจะเริ่มจากตรงไหน ฉันได้ Googled แล้วและฉันได้เห็นบทความ Wikipedia ในหัวข้อแต่ฉันก็ยังไม่เข้าใจว่ามันคืออะไร


7
โปรดระบุราคาและคำถามเฉพาะจากบทความ Wikipedia คำถามของคุณมีคำตอบแล้ว หากคุณไม่เข้าใจคำหรือวลีโปรดอ้างอิงคำหรือวลีเฉพาะในคำถามของคุณเพื่อให้เราสามารถอธิบายได้ เป็นการยากที่จะทราบว่าคุณพบความสับสนในบทความนั้นอย่างไร แทนที่จะทำซ้ำบทความนั้นที่นี่มันจะช่วยถ้าคุณสามารถอ้างอิงสิ่งที่เฉพาะเจาะจงที่ทำให้คุณสับสน
S.Lott

@ S.Lott: เสร็จสิ้น
แบบไดนามิก

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
มันเป็นพื้นกลางระหว่างภาษาธรรมชาติและภาษาการเขียนโปรแกรม - มันเป็นทางการมากกว่าภาษาพูด แต่น้อยกว่าทางการภาษาโปรแกรมจริง
Ingo

คำตอบ:


19

Pseudocode คือชื่อหมายถึงไม่ใช่รหัสจริง แต่ดูเหมือนรหัส ช่วยให้ผู้คนเข้าใจโดเมนปัญหาหรือวิธีแก้ปัญหาได้ดีขึ้นโดยไม่ต้องเพิ่มสัมภาระทั้งหมดที่จำเป็นเมื่อใช้ภาษาจริง

กล่าวโดยย่อ: ใช้เพื่อวัตถุประสงค์ในการอธิบายเท่านั้น

Pseudocode และการเขียนโปรแกรม
ไม่มีคำจำกัดความหรือกฎถาวรของ pseudocode มันอาจแตกต่างกันในแต่ละครั้ง มันไม่ใช่ภาษาการเขียนโปรแกรม (จริง) และไม่มีใครพิจารณาได้ ไม่สามารถคอมไพล์หรือใช้เป็นภาษาการเขียนโปรแกรมจริง: หากคุณสามารถทำเช่นนั้นมันจะสิ้นสุดเป็น pseudocode Pseudocode ไม่จำเป็นต้องกำหนดไว้ล่วงหน้า (เป็นสิ่งจำเป็นสำหรับคอมพิวเตอร์ในการรวบรวม) มันค่อนข้างจะต้องเข้าใจโดยมนุษย์ ในการใช้รหัสเทียมคุณจะต้องแปลงเป็นภาษาโปรแกรมที่คุณโปรดปราน กระบวนการแปลงนี้อาจแตกต่างกันในแต่ละครั้งและไม่มีกฎใดสามารถกำหนดได้เพราะอีกครั้ง pseudocode เป็นเหมือนคำพูดอิสระ: มันสามารถมีรูปแบบใดก็ได้

ประเพณี
มันถูกใช้โดยทั่วไปโดยเฉพาะอย่างยิ่งในขั้นตอนการออกแบบของโครงการที่จะช่วยให้เข้าใจวิธีการแก้ปัญหาบางอย่าง มันยังใช้กันทั่วไปในการออกแบบอัลกอริทึมหรือเมื่อครูวาดบางสิ่งบางอย่างบนกระดาน ในทุกกรณีเหล่านี้ไม่จำเป็นต้องรวบรวมรหัสคุณเพียงแค่ต้องการเข้าใจปัญหา / แนวทางแก้ไข

ประเภทของ pseudocode
Pseudocode อาจเป็นได้ แต่ไม่จำเป็นต้องเป็นของบางประเภทเช่นคุณสามารถมี pseudocode แบบกองซ้อนเพื่อแสดง MSIL คุณสามารถมี pseudocode ที่จำเป็นเพื่อแสดง Java, C #, C ++, Python คุณ สามารถมี pseudocode ที่ใช้งานได้เพื่อแสดง F #, Haskell, SQL เป็นต้น

ตัวอย่าง
จากด้านบนของหัวของฉัน แต่ไม่มีอะไรเกิดขึ้นเพราะ pseudocode สามารถประดิษฐ์ขึ้นมาได้ทันที:

XML pseudocode แสดงโครงสร้าง head + body ที่อนุญาตให้มีองค์ประกอบ p หลายรายการ:

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

pseudocode ที่จำเป็นแสดงปัญหาเพชรในภาษาที่รองรับการสืบทอดหลายแบบ:

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?

ข้างต้นสองตัวอย่างที่เห็นได้ชัดว่ามีลักษณะคล้ายกับบางคน (ประเภท) ภาษา แต่ไม่ได้จริงๆภาษาและไม่อาจรวบรวม พวกเขาค่อนข้างอธิบายสิ่งที่คุณต้องการอธิบาย


14
มันอาจจะคุ้มที่จะเพิ่มว่าหลอกรหัสสามารถอยู่ในระดับที่เป็นนามธรรม: คุณสามารถอธิบายการทำงานที่เฉพาะเจาะจงของอัลกอริทึมในวิธีที่แปลได้ง่ายเป็นรหัสที่ไม่ใช่หลอกจริงหรือคุณสามารถให้ระดับสูงมาก ภาพรวมของวิธีการบางอย่างโดยใช้ "วิธีการ" หรือ "วัตถุ" ที่กำหนดไว้อย่างกว้าง ๆ มันเป็นคลื่นกว้าง
Joachim Sauer

8

Pseudocode คืออะไร ตัวอย่างเช่นบทความ Wikipedia ด้านล่างกล่าวว่า "มันใช้แบบแผนโครงสร้างของภาษาการเขียนโปรแกรม แต่มีไว้สำหรับการอ่านของมนุษย์มากกว่าการอ่านด้วยเครื่อง" นี่หมายความว่าไม่ได้ใช้สร้างโปรแกรมจริงหรือ

มันคือรหัสที่เขียนในรูปแบบที่เป็นมิตรกับมนุษย์ ไม่สามารถใช้สร้างโปรแกรมทำงานได้

ทำไมมันทำ / มันใช้?

เพราะ Pseudocode รวดเร็วในการเขียนและอ่านง่าย เนื่องจากไม่มีส่วนต่าง ๆ ของภาษาที่ชัดเจนกว่าในการอ่าน มันยังเป็นภาษาที่เป็นอิสระเพื่อให้ทุกคนสามารถอ่านได้ (ด้วยเหตุผลที่ว่ามันใช้ในหนังสือข้อความจำนวนมาก)

ถือว่าเป็นภาษาโปรแกรมหรือไม่ ดูเครื่องหมายวิกิพีเดียข้างต้น

ไม่ได้ภาษาการเขียนโปรแกรมต้องการมากกว่าโครงสร้าง มันต้องมีความหมายอย่างเป็นทางการซึ่ง pseudocode ขาด

มันรู้จักกันทั่วไป / ใช้?

ใช่. ทุกคนที่อยู่เหนือระดับจูเนียร์ควรรู้วิธีการอ่าน / เขียนรหัสเทียม มันจำเป็นสำหรับการอ่านหนังสือและรหัสการวางแผนในทีม


6

หากคุณได้อ่านบทความ wiki แล้วคำถามส่วนใหญ่ของคุณควรชัดเจน ฉันจะพยายามตอบพวกเขาในวิธีที่ง่ายกว่าที่นี่ ดูตัวอย่าง 2 ตัวอย่างต่อไปนี้:

ส่วนที่ 1 - ตัวอย่าง

รหัส # 1 - การลงทะเบียนลูกค้า - ตัวอย่างของขั้นตอนกระบวนการ:

  1. ลูกค้าไปที่หน้าจอการลงทะเบียน
  2. ลูกค้ากรอกรายละเอียดของเขา / เธอ
  3. หากป้อนรายละเอียดที่ถูกต้องให้บันทึกข้อมูลลูกค้าในฐานข้อมูล
  4. กล่องโต้ตอบการแสดงอื่นพร้อมข้อความแสดงข้อผิดพลาด 100

รหัส # 2 - ตรวจสอบชื่อลูกค้า - ตัวอย่างของฟังก์ชั่นการเขียนโปรแกรม

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

ตอนที่ 2 - ตอบคำถามของคุณ

Pseudocode คืออะไร

มันเป็นวิธีการเขียนขั้นตอนของอัลกอริทึมหรือกระบวนการ

ทำไมมันทำ / มันใช้?

มันถูกใช้เพื่อแสดงขั้นตอนกระบวนการหรืออัลกอริทึมโดยไม่ต้องขึ้นอยู่กับภาษาการเขียนโปรแกรมเฉพาะหรือสัญลักษณ์พิเศษ

ถือว่าเป็นภาษาโปรแกรมหรือไม่

ไม่สามารถคอมไพล์ได้และนี่เป็นเพราะมันไม่มีไวยากรณ์เฉพาะและด้วยเหตุนี้จึงไม่ใช่ภาษาการเขียนโปรแกรม

ถ้าเป็นเช่นนั้นมันจะมีความสามารถเหมือนสมมติว่างูหลาม?

มันสามารถทำให้มีความสามารถตามที่คุณต้องการ คุณสามารถเขียนข้อความเช่น: ถ้าอายุถูกต้อง ...

มันรู้จักกันทั่วไป / ใช้?

ใช่. มันจะมีประโยชน์เมื่อคิดถึงอัลกอริทึมและสำหรับนักวิเคราะห์ธุรกิจในการให้ข้อมูลจำเพาะ


@ แจฉันชื่นชมการแก้ไข
NoChance

4

ตัวอย่างที่ดีที่สุดของ Pseudocode คือเมื่อฉันแชร์สำนักงานกับโปรแกรมเมอร์ FORTRAN ในขณะที่ฉันกำลังเขียนโปรแกรมใน Pascal ทุกครั้งที่เราช่วยเหลือซึ่งกันและกันเราก็ต้องเขียนมันใน Pseudocode เวลาที่ฉันไม่รู้จัก FORTRAN ดังนั้นฉันจึงไม่มีวิธีที่ฉันจะได้รับไวยากรณ์ที่ถูกต้อง เขาไม่เคยต้องเขียนด้วยเครื่องหมายอัฒภาค บนไวท์บอร์ดเราเขียนใน Pseudocode เพื่อให้สามารถเข้าใจได้โดยไม่ต้องจมอยู่กับกฎไวยากรณ์ที่ซับซ้อน

ไม่มีโครงสร้างที่เข้มงวดสำหรับ Pseudocode หากผู้เขียนรู้จักภาษาที่ใช้ "{" หลังคำสั่ง if พวกเขาวางไว้บนกระดานหากพวกเขารู้ว่าไพ ธ อนไม่เข้าใจ เป้าหมายคือการร่างแนวทางพื้นฐานของปัญหาอย่างรวดเร็วไม่ใช่รหัสที่ถูกต้อง

ครูสามารถใช้เพื่อให้คำแนะนำแก่นักเรียนโดยไม่ต้องให้คำตอบที่ถูกต้อง เมื่อคุณรู้มากกว่านี้แล้วภาษา Pseudocode หนึ่งภาษาควรจะเป็นธรรมชาติที่จะใช้ในขณะที่ร่างสเก็ตโค้ดออกมา


2

Pseudocode ไม่ใช่ภาษาไม่ใช่แบบแผน ตำราหรือกระดาษทุกเล่มจะใช้รหัสเทียมของตนเอง เช่นเดียวกับ "ภาษา" ทางคณิตศาสตร์อื่น ๆ อีกมากมายในกรณีที่ดีที่สุดมันจะถูกอธิบายอย่างไม่เป็นทางการในกระดาษเองในกรณีที่เลวร้ายที่สุดผู้เขียนคาดหวังว่ามันจะ "ชัดเจน" เพียงพอ


ในbestestกรณีมันก็เพียงพอที่ชัดเจนที่จะไม่จำเป็นต้องมีคำอธิบายอย่างเป็นทางการหรือไม่เป็นทางการใด ๆ ;)
Abel

@Abel ไม่มีสิ่งที่เป็นพิธีการ "ชัดเจน" แม้แต่บางสิ่งที่ "ชัดเจน" เป็นเลขทศนิยมต้องได้รับการแนะนำ มิฉะนั้นความสับสนจะหลีกเลี่ยงไม่ได้โชคไม่ดี ฉันไม่เคยเห็น pseudocode ที่คลุมเครืออย่างน้อยโดยไม่มีการแนะนำอย่างเป็นทางการติดอยู่
SK-logic

หัวข้อนี้เป็นเรื่องเกี่ยวกับ pseudocode พิธีการไม่มีส่วนเกี่ยวข้องกับเรื่องนั้น แต่ความคิดเห็นของฉันคือ "ปุนตั้งใจ";)
Abel

@Abel ภาษานามธรรมก็เป็นพิธีการด้วย (อย่างน้อยเมื่อใช้ในบทความทางวิทยาศาสตร์มากหรือน้อย)
SK-logic

2

รหัส Pseudo คืออะไร

โดยทั่วไปแล้วโค้ดหลอกจะเขียนคำแนะนำว่าโปรแกรมควรทำอย่างไรเพื่อให้การดำเนินการเสร็จสมบูรณ์ โค้ดหลอกเขียนด้วยภาษาพูดของคุณ คุณเพียงเขียนขั้นตอนของอัลกอริทึมหรือขั้นตอนเพื่อให้ง่ายขึ้นสำหรับคุณหรือคนอื่นในการอ่านและแปลงเป็นภาษาการเขียนโปรแกรมจริง

ทำไมมันทำ / มันใช้?

มันถูกสร้างขึ้นเพื่อช่วยให้คุณระบุขั้นตอนของกระบวนการกระบวนการหรืออัลกอริทึมโดยไม่ต้องใช้ภาษาการเขียนโปรแกรม ทางเลือกหนึ่งที่เป็นไปได้คือการใช้ผังงาน

ถือว่าเป็นภาษาโปรแกรมหรือไม่

ไม่มันไม่ใช่ภาษาโปรแกรมเนื่องจากไม่มีกฎเกณฑ์ที่เป็นทางการ

มันรู้จักกันทั่วไป / ใช้?

โดยส่วนตัวฉันพยายามใช้รหัสหลอกเสมอเมื่อเขียนอัลกอริทึมหรือขั้นตอนที่ซับซ้อน


0

คำจำกัดความส่วนตัวของฉันเกี่ยวกับ pseudocode คือ "สิ่งที่ฉันเขียนเป็นภาษาอังกฤษธรรมดา ๆ บนกระดาษเมื่อออกแบบรหัส"

ก่อนการเข้ารหัสจาก "การออกแบบ" ฉันจะเพิ่มรหัสเทียมของฉันเป็นความคิดเห็น จากนั้นทำงานผ่านความคิดเห็นเหล่านั้นฉันสามารถเพิ่มรหัส "จริง" ซึ่งทำหน้าที่อธิบาย

อาจมีชื่ออย่างเป็นทางการซึ่งฉันไม่รู้จักสำหรับวิธีการเข้ารหัสนี้และฉันจะใช้เฉพาะเมื่อทำสิ่งใหม่ / ซับซ้อน


-4

ตามที่ผู้สอนการเขียนโปรแกรมของฉันพูดว่า:

Pseudocode เป็นภาษาโปรแกรมภาษาอังกฤษใด ๆ


2
-1 ไม่เป็นประโยชน์ คำพูดที่เหมาะสมเท่านั้นในหมู่คำอธิบายของเทียม (หายไปในคำตอบนี้) มิฉะนั้นอาจทำให้เข้าใจผิดได้ มือใหม่อาจสงสัยว่า: วิธีการของ C # เป็นภาษาอังกฤษทั้งหมดดังนั้นนั่นหมายความว่า C # ที่ฉันใช้คือ Pseudocode ใช่มั้ย ... ? พวกเขาเรียกว่าอะไรเมื่อใช้ C # ในเยอรมนี
doppelgreener
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.