วันศุกร์ที่ 1 สิงหาคม พ.ศ. 2557

รหัสเทียม หรือ ซูโดโค้ด (Pseudo Code)
            เป็นคำสั่งที่จำลองความคิดเป็นลำดับขั้นตอนโดยใช้สัญลักษณ์เป็น ประโยคภาษาอังกฤษ ซึ่งซูโดโค้ดไม่ใช่ภาษาโปรแกรมทางคอมพิวเตอร์จึงไม่ สามารถนำไปประมวลผลได้ คือ ไม่สามารถสั่งให้คอมพิวเตอร์ทำงานตามคำสั่ง แต่เป็นการเขียนจำลองคำสั่งจริงแบบย่อๆ ตามอัลกอริทึมของโปรแกรมระบบ เพื่อนำไปพัฒนาเป็นการเขียนโปรแกรมภาษาคอมพิวเตอร์ได้ และยังสามารถนำไปทำการเขียนโปรแกรมในรูปแบบภาษาอังกฤษที่มีขั้นตอนและรูปแบบแน่นอนกะทัดรัด และมองดูคล้ายภาษาระดับสูงที่ใช้กับเครื่องคอมพิวเตอร์ซึ่งไม่เจาะจงภาษาใดภาษาหนึ่ง

ประโยชน์ของซูโดโค้ด

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

วิธีการเขียนซูโดโค้ด

            • ประโยคคำสั่ง (Statement) จะอยูในรูปแบบของภาษาอังกฤษอย่างง่าย
            • ในหนึ่งบรรทัด ให้เขียนประโยคคำสั่งเพียงคำสั่งเดียว
            • ควรใช้ย่อหน้า เพื่อแยกคำเฉพาะ (Keywords)  ได้ชัดเจน รวมถึงจัดโครงสร้างการควบคุมให้เป็นสัดส่วน ซึ่งช่วยให้อ่านโค้ดได้ง่าย
            • แต่ละประโยคคำสั่งให้เขียนลำดับจากบนลงลาง โดยมีทางเข้าเพียงทางเดียว และมีทางออกทางเดียวเท่านั้น
            • กลุ่มของประโยคคำสั่งต่างๆ อาจจัดรวมกลุ่มเข้าด้วยกันในรูปแบบของโมดูล แต่ต้องมีการกำหนดชื่่อของโมดูลด้วย เพื่อให้สามารถเรียกใช้งานโมดูลนั้นได้

ตัวอย่างการเขียนรหัสเทียม Pseudo Code

            Algorithm Problem_1
            Variables : mLoop, Sum, testScore, average
            Begin
                    Input mLoop
                    Sum = 0
                    For I = 1 to mLoop
                            Input testScore
                            Sum = Sum + testScore
                    Next
                    average = Sum / mLoop
                    Print average
            End Problem_1


รูปแบบการเขียน Pseudo Code

        1. การกำหนดค่า และการคำนวณ
                name = expression

                name คือ ชื่อตัวแปรที่ใช้สำหรับเก็บค่า
                expression คือ ค่าข้อมูลหรือนิพจน์

ตัวอย่าง
        salary = 1000
        overTime = 2500
        tax = 125
        Income = salary + overTime - tag

   
        2. การอ่าน/รับข้อมูล
                การอ่านข้อมูลสามารถใช้คำสั่ง READ, INPUT หรือ GET ได้ โดย
                        Read variables_1 ,variables_2, variables_3
                        Input variables_1 ,variables_2, variables_3
                        Get variables_1 ,variables_2, variables_3

                READ ใช้สำหรับการอ่านค่าที่มีอยู่แล้ว มาเก็บไว้ในตัวแปร เช่น การอ่านข้อมูลจากไฟล์ โดยจะทำงานร่วมกับ OPEN (การเปิดไฟล์)
                INPUT และ GET ใช้สาำหรับการรับค่าข้อมูลผ่านทางแป้นพิมพ์
                Variable คือ ตัวแปรที่ใช้เก็บข้อมูลที่อ่านหรือรับเข้ามา ซึ่งสามารถกำหนดได้ ตามจำนวนตัวแปรที่ต้องการ โดยใช้เครื่องหมาย “,” คั่นระหว่างชื่อตัวแปร

ตัวอย่าง
        Input a, b, c
        Answer = a + b + c

        Get current_date
        expire_date = current_date + 120
   
        Open student_file
        Read Id, Name, Address, Sex

        3. การแสดงผลข้อมูล
                การแสดงผลข้อมูลสามารถใช้คำสั่ง Print , Prompt, Write
                    print  variables_1 ,variables_2, variables_3
                    prompt variables_1 ,variables_2, variables_3
                    write variables_1 ,variables_2, variables_3

                PRINT และ PROMPT ใช้สำหรับการพิมพ์ค่าข้อมูล หรือข้อความ
                WRITE ใช้สำหรับการบันทึกข้อมูลลงในแฟ้มข้อมูล

ตัวอย่าง
        Prompt " Enter 3 Value ==> "
        Input Value1 , Value2 , Value3
        Sum = Value1 + Value2 + Value3
        Print Sum

        Open Student _file
        Input Id, Name, Address, Sex
        Write Id, Name, Address, Sex

        4. การกำหนดเงื่อนไข
                If < condition > Then
                        Activity 1
                Else
                        Activity 2
                Endif

                <condition> คือ เงื่อนไขที่กำหนด ซึ่งหากเงื่อนไขเป็นจริง จะทำกิจกรรมหลัง THEN (activity1)  แต่ถ้าเงื่อนไขเป็นเท็จ ก็จะทำกิจกรรมหลัง ELSE (activity2)

ตัวอย่าง
         IF sex = “M” THEN
                male = male + 1
         ELSE
                female = female + 1
         ENDIF

         IF score >= 80
                grade = “A”
         ELSEIF score >= 70
                grade = “B”
         ELSEIF score >= 60
                grade = “C”
         ELSEIF score >= 50
                grade = “D”
         ELSE
                grade = “F”
         ENDIF

            5. ในกรณีที่มีหลายเงื่อนไข
                    การใช้ IF อาจทาให้ตรวจสอบโปรแกรมได้ยาก สามารถใช้คาสั่ง CASE …. END CASE แทนได้

ตัวอย่าง
            CASE score OF
            >= 80 : grade = “A”
            >= 70 : grade = “B”
            >= 60 : grade = “C”
            < 60 : grade = “F”
            ENDCASE

            6. การทางานเป็นรอบ (Loop)
                        การทางานเป็นรอบด้วยลูป WHILE … ENDWHILE

                        WHILE<condition>
                        activity1
                        activity2
                        activity3
                        ENDWHILE

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

ตัวอย่าง

                    num = 1
                    WHILE num <= 20
                                PRINT num
                                num = num + 1
                    ENDWHILE
                    PRINT “STOP RUN”


            7. การทำงานเป็นรอบ (Loop)
                    การทำงานเป็นรอบด้วยลูป DO … UNTIL

                    DO
                        activity1
                        activity2
                        activity3
                    UNTIL <condition>


            การทำงานของลูป DO … UNTIL จะทำกิจกรรมภายในลูปก่อนหนึ่งรอบ จากนั้นจะทาการตรวจเงื่อนไข โดยจะวนซ้าไปเรื่อยๆ จนกว่าเงื่อนไขจะเป็นจริง จึงหลุดออกจากลูป และถึงแม้เงื่อนไขที่ตรวจสอบเป็นจริงตั้งแต่แรก แต่ลูป DO…UNTIL ก็จะมีการทากิจกรรมภายในลูปอย่างน้อยหนึ่งรอบเสมอ

ตัวอย่าง

                    num = 0
                    DO
                            PRINT “HELLO…”
                            num = num + 1
                    UNTIL num > 20

            8. การทางานเป็นรอบ (Loop)
                        การทางานเป็นรอบด้วยลูป FOR … NEXT

                    FOR i=1 to n
                                activity1
                                activity2
                                activity3
                    Next
อ้างอิง
               ผศ.สานนท์ เจริญฉาย  การเขียนโปรมแกมและอัลริทึม
หลักการทำงานของ Flowchart  นั้นมีอยู่ 3
ประเภทคือ   
   1. การทำงานแบบตามลำดับ (Sequence)
   2. การเลือกกระทำตามเงื่อนไข(Decision or Selection)
   3. การทำซ้ำ (Repeation or Loop)
โดยแต่ละประเภทจะทำหน้าที่ดังนี้
    1. การทำงานแบบตามลำดับ (Sequence)
     รูปแบบการเขียนโปรแกรมที่ง่ายที่สุดคือ เขียนให้ทำงานจากบนลงล่าง เขียนคำสั่งเป็นบรรทัด 
 และทำทีละบรรทัดจากบรรทัดบนสุดลงไปจนถึงบรรทัดล่างสุด
  


2. การเลือกกระทำตามเงื่อนไข (Decision or Selection)

     การตัดสินใจ หรือเลือกเงื่อนไขคือ เขียนโปรแกรมเพื่อนำค่าไปเลือกกระทำ 
 โดยปกติจะมีเหตุการณ์ให้ทำ 2 กระบวนการ คือเงื่อนไขเป็นจริงจะกระทำกระบวนการหนึ่ง
 และเป็นเท็จจะกระทำอีกกระบวนการหนึ่ง
    2.1 ตรวจสอบเงื่อนไขแบบสองทางเลือกชนิดกิจกรรมด้านเดียว (single selection)หรือโครงสร้าง if 
                      จะตรวจสอบเงื่อนไข  ถ้าเงื่อนไขเป็นจริงจะไปทำกิจกรรมแล้วออกจากโครงสร้าง ถ้าเงื่อนไขเป็นเท็จจะออกจากโครงสร้างเลยโดยไม่ทำกิจกรรมใดๆ


2.2 ตรวจสอบเงื่อนไขแบบสองทางเลือก(double selection)หรือโครงสร้าง if/else
      จะตรวจสอบเงื่อนไข ถ้าเงื่อนไขเป็นจริงก็จะไปทำกิจกรรมที่ 1 แล้วออกจากโครงสร้าง
แต่ถ้าเงื่อนไขเป็นเท็จก็จะทำกิจกรรม 2 แล้วออกจากโครงสร้าง
2.3 ตรวจสอบเงื่อนไขแบบหลายทางเลือก
      1.แบบโครงสร้าง if/else   if/else....หลายครั้ง   เป็นแบบตรวจสอบเงื่อนไขหลายชั้น
 2.4  แบบโครงสร้าง switch (หรือ case ในภาษาปาสกาล)  
เป็นการตรวจสอบเงื่อนไขว่าตัวแปรตรวจสอบมีค่าตรงกับค่าใด ซึ่งค่าดังกล่าวจะเป็นค่าที่บ่งชี้กรณีที่ต้องการ

 3. การทำซ้ำ (Repeation or Loop) 
 การทำกระบวนการหนึ่งหลายครั้ง โดยมีเงื่อนไขในการควบคุม หมายถึงการทำซ้ำเป็นหลักการที่ทำความเข้าใจได้ยากกว่า 2 รูปแบบแรก   ผู้เขียนโปรแกรมต้องจินตนาการด้วยตนเอง     รูปแบบการทำซ้ำนั้น ยังมีเงื่อนไขที่เข้ามาเกี่ยวข้อง  บาง loop ก็จะมีเงื่อนไขต่างเช่น  ทำก่อนแล้วค่อยเช็คทีหลัง  เช็คก่อนแล้วทำทีหลัง
               3.1 โครงสร้าง while  ลักษณะโครงสร้างการควบคุมจะตรวจสอบเงื่อนไขสิ้นสุดการวนซ้ำก่อน
 ถ้าผลการตรวจสอบยังไม่สิ้นสุดคือผลการตรวจสอบเป็นจริงก็ทำกิจกรรมนั้นซ้ำต่อไป

3.2 โครงสร้าง do/while ในภาษาซี และ repeat/until  
ลักษณะโครงสร้างการควบคุมจะกระทำกิจกรรมครั้งแรก 1 ครั้งเสมอ แล้วจึงตรวจสอบเงื่อนไขการสิ้นสุดการวนซ้ำ
 ถ้าผลการตรวจสอบยังไม่สิ้นสุดก็กลับไปทำกิจกรรมเดิมซ้ำอีก


ชนิด do  while
3.3 โครงสร้าง for ลักษณะโครงสร้างการควบคุม เป็นการวนซ้ำที่รู้จำนวนรอบแน่นอนโดยมีการกำหนดค่าเริ่มต้น ค่าสิ้นสุด
 และค่าเปลี่ยนแปลงแต่ละรอบของตัวแปรนับรอบ และเงื่อนไขการตรวจสอบการสิ้นสุดของการวนซ้ำ การวนซ้ำแบบ for มี2รูปแบบ ดังนี้
รูปแบบที่ 1 แบบแยกกระจายกิจกรรมควบคุม  เป็นการเขียนโดยแยกกิจกรรมส่วนหน้าที่ควบคุมการวนซ้ำ

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




อ้างอิง
               ผศ.สานนท์ เจริญฉาย  การเขียนโปรมแกมและอัลริทึม