วันพฤหัสบดีที่ 13 กันยายน พ.ศ. 2555

บทที่  1
ความรู้พื้นฐานการเขียนโปรแกรม

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

1.1 ขั้นตอนวิธีการทางคอมพิวเตอร์  (computer  algorithms)
            ก่อนที่เราจะเขียนโปรแกรมคอมพิวเตอร์ภาษาใดภาษาหนึ่งเพื่อแก้ปัญหาทางคอมพิวเตอร์  เราควรศึกษาขั้นตอนวิธีการทางคอมพิวเตอร์   เพื่อให้เกิดความรู้ความเข้าใจที่ถูกต้องตามขั้นตอนวิธีดังนี้
            1) การวิเคราะห์งาน  (job analysis)
            2) การเขียนผังงานโปรแกรม  (program flowcharting)
            3) การเขียนโปรแกรม  (programming)
            4) การทดสอบ  และแก้ไขโปรแกรม  (testing and editing program)
            5) การจัดทำเอกสารประกอบ  และการบำรุงรักษาโปรแกรม  (documentation and maintenance program)
            1.1.1 การวิเคราะห์งาน  (job  analysis)                        ในการวิเคราะห์งานเราจะต้องกำหนดจุดประสงค์ของการวิเคราะห์งาน  และขั้นตอนวิธีการวิเคราะห์งานแต่ละอย่างให้ได้  ซึ่งงานแต่ละอย่างมีรายละเอียดดังนี้
                        1.1.1.1  จุดประสงค์ของการวิเคราะห์งาน
                                    ในการวิเคราะห์งานแต่ละอย่างมีจุดประสงค์ของการวิเคราะห์งานที่สำคัญดังนี้
                                    1. เพื่อหาวัตถุประสงค์ของการเขียนโปรแกรม
                                    2. เพื่อหารูปแบบผลลัพธ์ที่ต้องการ
                                    3. เพื่อหาข้อมูลนำเข้าที่ต้องใส่เข้าไปในโปรแกรม
                                    4. เพื่อหาตัวแปรที่จำเป็นต้องใช้ในโปรแกรม
                                    5. เพื่อหาขั้นตอนวิธีการทำงานของโปรแกรม
                        1.1.1.2 ขั้นตอนวิธีการวิเคราะห์งาน
                                    ในการวิเคราะห์งานแต่ละอย่างมีขั้นตอนวิธีการวิเคราะห์งานที่สำคัญดังนี้
                       1) การหาวัตถุประสงค์ของการเขียนโปรแกรม
ผู้เขียนโปรแกรมจะต้องหาวัตถุประสงค์จากงานที่จะเขียนโปรแกรมว่า ต้องการเขียนโปรแกรมเพื่อแก้ปัญหาอะไรบ้างซึ่งจะทำให้เขียนโปรแกรมได้ตรงกับความต้องการหรือวัตถุประสงค์ของงานนั้น ๆ    
                       2) การหารูปแบบผลลัพธ์ที่ต้องการ
เมื่อผู้เขียนโปรแกรมหาวัตถุประสงค์ของการเขียนโปรแกรมได้แล้ว ขั้นตอนต่อมาคือการกำหนดรูปแบบผลลัพธ์ที่ต้องการจากโปรแกรม  ซึ่งรูปแบบผลลัพธ์อาจอยู่ในลักษณะของข้อความหรือตัวเลข  หรือตาราง   หรือแผนภูมิ   หรืออาจใช้ผสมกันระหว่างตัวเลขกับข้อความ หรือข้อความกับตัวเลข  และตารางก็ได้   ขึ้นอยู่กับผู้เขียนโปรแกรมเป็นผู้กำหนดเอง    แต่โดยส่วนมากนิยมแสดงผลลัพธ์ของโปรแกรมให้อยู่ในรูปแบบที่เข้าใจง่ายมากกว่ารูปแบบที่ซับซ้อน
                       3) การหาข้อมูลนำเข้าที่ต้องใส่เข้าไปในโปรแกรม
ผู้เขียนโปรแกรมจะต้องหาข้อมูลนำเข้าจากผลลัพธ์ที่ได้จากโปรแกรม โดยคำนึงถึงขั้นตอนวิธีการคำนวณ และข้อมูลที่จำเป็นต้องใส่เข้าไปเพื่อให้ได้ผลลัพธ์ที่ต้องการ
            ตัวอย่างที่  1.1  ผลลัพธ์ที่ต้องการ  คือ  พื้นที่สามเหลี่ยมมุมฉากข้อมูลนำเข้าที่ต้องใส่เข้าไปในโปรแกรมคือ
                        1) สูตรคำนวณพื้นที่สามเหลี่ยมมุมฉาก
                                    พื้นที่สามเหลี่ยมมุมฉาก  =  ? x ฐาน x สูง
                        2) ความยาวของฐานและความสูงของรูปสามเหลี่ยม
                       4) การหาตัวแปรที่จำเป็นต้องใช้ในโปรแกรม
ตัวแปร  หมายถึง  ชื่อที่ผู้เขียนโปรแกรมสามารถตั้งขึ้นเองตามหลักการตั้งชื่อตัวแปรของภาษาคอมพิวเตอร์ที่นำมาเขียนโปรแกรม (หลักเกณฑ์การตั้งชื่อตัวแปรกล่าวไว้ในหัวข้อ 2.5.3.1)  เพื่อใช้ในการอ้างอิงการเก็บข้อมูลและเรียกใช้ข้อมูลภายในตัวแปร   ดังนั้นผู้เขียนโปรแกรมจะต้องตั้งชื่อตัวแปรที่ใช้ในการเก็บข้อมูลทั้งหมดภายในโปรแกรม   รวมถึงตัวแปรบางตัวที่ใช้ในการนับจำนวนรอบของการทำงานในโปรแกรมอีกด้วย


จากตัวอย่างที่  1.1  สามารถแสดงการวิเคราะห์งานตั้งแต่ขั้นตอนที่  1  ถึง  4  ได้ดังนี้

            1) วัตถุประสงค์ของการเขียนโปรแกรม
            เพื่อคำนวณหาค่าพื้นที่สามเหลี่ยมมุมฉาก
            2) รูปแบบผลลัพธ์ที่ต้องการ
            พิมพ์ผลลัพธ์ที่ต้องการออกทางภาพดังนี้
                        * ** output ***
                        Base  =   5
                        High   =   4
                        Area   =   10
            3) ข้อมูลนำเข้า  คือ  ความยาวฐานและความสูง
            4) ตัวแปรที่ใช้
                        B  =  ตัวแปรที่เก็บความยาวของสามเหลี่ยมมุมฉาก    
                        H  =  ตัวแปรที่เก็บความสูงของสามเหลี่ยมมุมฉาก
                        Area  =    ตัวแปรที่เก็บผลลัพธ์ที่ได้จากการคำนวณตามสูตร
                        Area  =   1/2*B*H               หรือ         Area  =   0.5*B*H
                       

                       5) การหาขั้นตอนวิธีการทำงานของโปรแกรม

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

            5.1) เริ่มต้นทำงาน
            5.2) กำหนดค่าเริ่มต้นให้กับตัวแปร
            5.3) พิมพ์หัวรายงาน  (ถ้ามีรายงาน)
            5.4) รับข้อมูลเข้าทีละเรคอร์ด
            5.5) ตรวจสอบข้อมูลว่าเป็นชุดสุดท้ายหรือไม่
                        5.5.1  ถ้าเป็นข้อมูลชุดสุดท้าย   ให้ไปทำงานข้อ 5.11 
                        5.5.2 ถ้าไม่ใช่ข้อมูลชุดสุดท้าย  ให้ทำงานข้อต่อมา  (ข้อ 5.6)
            5.6) คำนวณผลลัพธ์
            5.7) เปรียบเทียบผลลัพธ์  (ถ้ามี)
            5.8) เพิ่มค่าตัวแปรสะสม  (ถ้ามี)
            5.9) พิมพ์ค่าผลลัพธ์ทีละเรคอร์ด
            5.10) ย้อนกลับไปทำงานข้อ 5.4
            5.11) พิมพ์สรุป  (ถ้ามี)
            5.12) จบการทำงาน
            ทั้งนี้การวิเคราะห์งานเพื่อแก้ปัญหาแต่ละอย่างอาจมีบางขั้นตอนแตกต่างกันไป  ดังนั้นคำแนะนำข้างต้นจึงเป็นเพียงแนวทางของการหาขั้นตอนวิธีการทำงานของโปรแกรมเท่านั้น    ซึ่งเวลาใช้งานจริงผู้วิเคราะห์งานต้องประยุกต์ให้เข้ากับปัญหาที่ต้องการแก้ไขต่อไป
            เพื่อความเข้าใจเกี่ยวกับขั้นตอนวิธีการวิเคราะห์งานมากยิ่งขึ้น    ให้ศึกษาจากตัวอย่างการวิเคราะห์งานดังต่อไปนี้

            ตัวอย่างที่  1.2 จงเขียนวิเคราะห์งาน เพื่อเขียนโปรแกรมคำนวณ พื้นที่สี่เหลี่ยมผืนผ้า จำนวน 1 รูป โดยที่ผู้ใช้โปรแกรม จะต้องป้อนความกว้าง และความยาวของสี่เหลี่ยมผืนผ้า เข้าไปในโปรแกรม

            วิธีทำ   
            ขั้นตอนการวิเคราะห์งานทั้ง  5  ขั้นตอน   สามารถแสดงได้ดังนี้
            1) วัตถุประสงค์ของการเขียนโปรแกรม
            เพื่อคำนวณพื้นที่สี่เหลี่ยมผืนผ้าจำนวน 1 รูป
            2) รูปแบบผลลัพธ์ที่ต้องการ
            พิมพ์ผลลัพธ์ออกทางจอภาพ   ดังนี้

 

            3) ข้อมูลนำเข้า
                        3.1) สูตรคำนวณพื้นที่สี่เหลี่ยมผืนผ้า
                                    Area  =   Width*Length
                        3.2) รับค่าความกว้างและความยาวของสี่เหลี่ยมผืนผ้าผ่านทางคีย์บอร์ด
            4) ตัวแปรที่ตั้งขึ้นเพื่อใช้ในโปรแกรม
                        Width   =  ตัวแปรที่ใช้เก็บความกว้างของสี่เหลี่ยมผืนผ้า 
                       Length  =  ตัวแปรที่ใช้เก็บความยาวของสี่เหลี่ยมผืนผ้า
                       Area = ตัวแปรที่ใช้เก็บพื้นที่ของสี่เหลี่ยมผืนผ้า  
                       โดยคำนวณได้จากสูตร    Area   =   Width*Length
            5) ขั้นตอนวิธีการทำงานของโปรแกรมมีดังนี้
                       5.1) เริ่มต้นทำงาน
                        5.2) รับข้อมูลค่าความยาวและความกว้างของสี่เหลี่ยมผืนผ้าผ่านทางคีย์บอร์ด
                        5.3) คำนวณพื้นที่สี่เหลี่ยมผืนผ้าตามสูตร 
                        Area = Width*Length
                        5.4) พิมพ์ค่าความยาว   ความกว้าง   และพื้นที่สี่เหลี่ยมผืนผ้าออกทางจอภาพ
                        5.5) จบการทำงาน
            1.1.2 การเขียนผังงานโปรแกรม  (program  flowcharting)
สำหรับหัวข้อการเขียนผังงานโปรแกรมจะประกอบด้วยเนื้อหาที่สำคัญดังนี้คือ ความหมายของผังงาน  ประเภทของผังงาน  สัญลักษณ์มาตรฐานที่ใช้เขียนผังงานโปรแกรม  หลักการเขียนผังงานโปรแกรม  และขั้นตอนการเขียนผังงานโปรแกรม  ดังรายละเอียดต่อไปนี้
                        1.1.2.1 ความหมายของผังงาน
                                    “ผังงาน”  (flowchart)  ทางคอมพิวเตอร์ หมายถึง แผนภาพที่เขียนขึ้นโดยใช้สัญลักษณ์มาตรฐาน เพื่อแสดงขั้นตอนวิธีการทำงานของโปรแกรม หรือระบบงานที่ต้องการ
                        1.1.2.2 ประเภทของผังงาน
ผังงานสามารถจำแนกออกได้  2 ประเภท  คือ
                                    1) ผังงานระบบ (system flowchart)   หมายถึง   ผังงานที่แสดงถึงขั้นตอนวิธีการทำงานของระบบงานใดระบบหนึ่ง   ซึ่งในผังงานระบบจะแสดงให้เห็นถึงสื่อที่ใช้รับข้อมูล   บันทึกข้อมูล   วิธีการประมวลผล  ขั้นตอนการทำงานและความสัมพันธ์ของส่วนต่าง ๆ  ในระบบงานอย่างกว้าง ๆ  เพื่อให้เห็นภาพรวมของระบบงานใดระบบงานหนึ่ง  เช่น

 

รูปที่  1.1  ผังงานระบบแสดงการตัดเกรด
ที่มา : กรรณิการ์  กมลรัตน์, 2547.
                                    2) ผังงานโปรแกรม (program flowchart)    หมายถึงผังงานที่แสดงขั้นตอน วิธีการทำงานของโปรแกรมที่ต้องการเขียนขึ้น     ภายในผังงานโปรแกรม จะแสดงให้เห็นขั้นตอน วิธีการทำงาน ของโปรแกรมอย่างละเอียด เพื่อให้คอมพิวเตอร ์สามารถทำงานตามที่เขียนไว้ในผังงานโปรแกรม ได้อย่างถูกต้อง    โดยเราสามารถนำขั้นตอน วิธีการทำงานของโปรแกรมในขั้นการวิเคราะห์งาน มาเขียนเป็นผังงานโปรแกรมได้ทันที     จากนั้นก็สามารถนำผังงานโปรแกรม ไปเขียนโปรแกรมตามที่ต้องการได้   ดังนั้นในเรื่องของการเขียนผังงาน ที่จะกล่าวต่อไปนี้จะเกี่ยวข้องกับผังงานโปรแกรมทั้งสิ้น  เช่น
 

รูปที่  1.2  ผังงานโปรแกรมแสดงรายละเอียดการทำงานของโปรแกรมสำหรับตัดเกรด
ที่มา : เฉลิมพล  ทัพซ้าย, 2530 : 29.

                               1.2.1.3 สัญลักษณ์มาตรฐานที่ใช้เขียนผังงานโปรแกรม
สถาบันมาตรฐานแห่งชาติของสหรัฐอเมริกา (American  National  Standard  Institute) และองค์การระหว่างประเทศว่าด้วยการมาตรฐาน  (International  Organization  for  Standardization)  ได้ร่วมกันกำหนดสัญลักษณ์มาตรฐานที่ใช้เขียนผังงานโปรแกรม
โดยในเอกสารเล่มนี้จะนำเสนอสัญลักษณ์ที่นิยมนำมาใช้เขียนผังงานโปรแกรม ดังต่อไปนี้

            1. สัญลักษณ์  Process

Process
 

            ความหมายของ  Process  คือ  การกำหนดค่าหรือการคำนวณค่า
            ตัวอย่างที่  1.3  แสดงการกำหนดค่าให้ตัวแปร  Total

 

            ตัวอย่างที่  1.4  แสดงการคำนวณค่าผลรวมของตัวแปร  Total

                                      

             2. สัญลักษณ์  Decision

ข้าวหลามตัด: Decision 

            ความหมายของ  Decision  คือ  การทดสอบเงื่อนไขหรือเปรียบเทียบเงื่อนไข เพื่อตัดสินใจทำงานอย่างใดอย่างหนึ่งตามที่ต้องการ

            ตัวอย่างที่  1.5  แสดงการเปรียบเทียบเงื่อนไข  1  ทางเลือก

 

            ตัวอย่างที่  1.6  แสดงการเปรียบเทียบเงื่อนไข  2  ทางเลือก

 

 

            3. สัญลักษณ์  Start/ Stop program  หรือ  Terminal Interrupt


แผนผังลำดับงาน: สิ้นสุด: Start / Stop  program 

            ความหมายของสัญลักษณ์  คือ  การเริ่มต้นโปรแกรม  หรือการสิ้นสุดการทำงานของโปรแกรม   หรือหยุดการทำงานชั่วคราว
            ตัวอย่างที่  1.7  แสดงการใช้งานสัญลักษณ์ Start/ Stop program  หรือ  Terminal Interrupt

         
            4. สัญลักษณ์   Input / Output
สี่เหลี่ยมด้านขนาน:      Input / Output
            ความหมายของสัญลักษณ์  คือ  การรับข้อมูล (input)  หรือการแสดงผลลัพธ์  (output)  โดยไม่ได้ระบุสื่อที่ใช้ 
            ตัวอย่างที่  1.8  แสดงการใช้งานสัญลักษณ์  Input/ Output

 

            5. สัญลักษณ์  Display
แผนผังลำดับงาน: จอภาพ:  Display                       

            ความหมายของสัญลักษณ์ คือ การแสดงผลลัพธ์ทางจอภาพ
            ตัวอย่างที่  1.9  แสดงการใช้งานสัญลักษณ์  display
 

            6. สัญลักษณ์  Document

แผนผังลำดับงาน: เอกสาร: Document

            ความหมายของสัญลักษณ์  คือ  การพิมพ์ผลลัพธ์ออกทางกระดาษพิมพ์
            ตัวอย่างที่  1.10  แสดงการใช้งานสัญลักษณ์  Document
            7. สัญลักษณ์  Manual  Input

แผนผังลำดับงาน: ป้อนข้อมูลด้วยตนเอง:     Manual  Input
            ความหมายของสัญลักษณ์  คือ  การรับข้อมูลหรือคำสั่งผ่านทางคีย์บอร์ด
            ตัวอย่างที่  1.11  แสดงการใช้งานสัญลักษณ์  Manual  Input
 

            8. สัญลักษณ์  Manual  Operation

แผนผังลำดับงาน: ขั้นตอนที่ทำด้วยตนเอง: Manual  Operation
            ความหมายของสัญลักษณ์คือการรับข้อมูลหรือแสดงผลลัพธ์โดยไม่ระบุสื่อ
            ตัวอย่างที่  1.12  แสดงการใช้งานสัญลักษณ์  Manual  Operation
 


            9. สัญลักษณ์  Connector

Connector
            ความหมายของสัญลักษณ์  คือ   แสดงจุดเชื่อมต่อจากที่หนึ่งไปยังอีกที่หนึ่งของผังงาน   โดยที่จุดเชื่อมต่อนี้อยู่ในหน้าเดียวกัน
            ตัวอย่างที่  1.13  แสดงการใช้งานสัญลักษณ์  Connector
                                                         
            10. สัญลักษณ์  Off  page  Connector

 

      Off  page  Connector
            ความหมายของสัญลักษณ์  คือ   แสดงจุดเชื่อมต่อจากที่หนึ่งไปยังอีกที่หนึ่งของผังงาน   โดยที่จุดเชื่อมต่อนี้อยู่ต่างหน้ากัน
            ตัวอย่างที่  1.14  แสดงการใช้งานสัญลักษณ์  Off  page  Connector
คำนวณค่า  Avg = Total + N เสร็จแล้ว  ไปทำงานต่อไปที่จุด  B  โดยที่จุด  B  อยู่ต่างหน้ากัน                
            
            11. สัญลักษณ์  flow line and arrowheads

            ความหมายของสัญลักษณ์ คือ แสดงทิศทาง การทำงานของผังงาน โดยใช้ลูกศร เป็นตัวกำหนดทิศทาง การทำงานของผังงาน
            ตัวอย่างที่  1.15  แสดงการใช้งานสัญลักษณ์  flow line and arrowheads

 

            12. สัญลักษณ์  Punched  Card

แผนผังลำดับงาน: บัตร: Punched  Card
            ความหมายของสัญลักษณ์คือการรับข้อมูลหรือแสดงผลลัพธ์บนบัตรเจาะรู
            ตัวอย่างที่  1.16  แสดงการใช้งานสัญลักษณ์  Punched  Card
                        
                        1.1.2.4 หลักการเขียนผังงานโปรแกรม
การเขียนผังงานโปรแกรม   มีหลักการเขียนดังนี้
           1) เขียนผังงานจากด้านบนลงด้านล่าง
2) ใช้สัญลักษณ์ให้ตรงกับความหมายของผังงาน
3) ใช้เส้น flow line  และ arrowheads  แสดงทิศทางการทำงานของผังงาน
4) ใส่คำอธิบายลงในสัญลักษณ์สั้น ๆ แต่เข้าใจง่าย จะใช้ภาษาไทยหรืออังกฤษก็ได้
5) หลีกเลี่ยงการโยงเส้นทิศทางของผังงานให้ตัดกันเพราะจะทำให้สับสน   ควรใช้จุดเชื่อมต่อ (connector)  หน้าเดียวกันแทน  จะเข้าใจได้ง่ายและเป็นระเบียบ
6) พยายามเขียนผังงานให้จบในหน้ากระดาษเดียวกัน   แต่ถ้าไม่จบในหน้าเดียวกัน   ควรใช้จุดเชื่อมต่อต่างหน้ากระดาษ (off  page  connector)
                   1.1.2.5 ขั้นตอนการเขียนผังงานโปรแกรม
เพื่อความเข้าใจเกี่ยวกับขั้นตอนการเขียนผังงานโปรแกรมได้ถูกต้องให้ศึกษาจากตัวอย่างดังต่อไปนี้
ตัวอย่างที่ 1.17 จงเขียนผังงานโปรแกรมที่ได้วิเคราะห์งานมาแล้วในตัวอย่าง
ที่ 1.2
วิธีทำ
                                    จากการวิเคราะห์งานในตัวอย่างที่  1.2  จะได้ว่า
                                    ขั้นตอนวิธีการทำงานของโปรแกรม   มีดังนี้
1) เริ่มต้นทำงาน
2) รับข้อมูลค่าความยาว  และความกว้างของสี่เหลี่ยมผืนผ้าผ่านทางคีย์บอร์ด
3) คำนวณพื้นที่สี่เหลี่ยมผืนผ้าตามสูตร  Area = Width * Length
4) พิมพ์ค่าความยาว ความกว้าง  และพื้นที่สี่เหลี่ยมผืนผ้าออกทาง จอภาพ
5) จบการทำงาน
           การเขียนผังงานโปรแกรม จะนำขั้นตอนวิธีการทำงานของโปรแกรม ที่ได้จากการวิเคราะห์งาน มาเขียนผังงานได้ดังนี้

รูปที่ 1.3  แสดงผังงานขั้นตอนวิธีการทำงานของโปรแกรม
ที่มา : สมชาย  รัตนเลิศนุสรณ์, 2545 : 17.
            1.1.3  การเขียนโปรแกรม  (programming)
ในหัวข้อเรื่องการเขียนโปรแกรมจะกล่าวถึงเนื้อหา  2  ส่วน คือความหมายของโปรแกรมคอมพิวเตอร์  และภาษาคอมพิวเตอร์ดังมีรายละเอียดต่อไปนี้
                        1.1.3.1 ความหมายของโปรแกรมคอมพิวเตอร์
โปรแกรมคอมพิวเตอร์ (computer  program)    หมายถึง     ชุดของคำสั่งที่เขียนขึ้นเพื่อสั่งให้คอมพิวเตอร์ทำงานตามที่ต้องการ    ส่วนการเขียนโปรแกรม (programming) หมายถึง การเขียนชุดคำสั่งด้วยภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่ง    เพื่อให้คอมพิวเตอร์ทำงานตามโปรแกรมที่เราเขียนขึ้น
                        ดังนั้น  ผู้เขียนโปรแกรม (programmer)  จึงจำเป็นต้องเรียนรู้ภาษาคอมพิวเตอร์ภาษาใดภาษาหนึ่งหรือหลายภาษา    แล้วฝึกฝนทักษะการเขียนโปรแกรมด้วยภาษาคอมพิวเตอร์ที่ต้องการใช้งานให้เกิดความชำนาญจึงจะสามารถเขียนโปรแกรมคอมพิวเตอร์ได้อย่างมีประสิทธิภาพ
                        1.1.3.2 ภาษาคอมพิวเตอร์
ภาษาคอมพิวเตอร์ (computer  language)  หมายถึง  ภาษาที่สามารถนำมาใช้เขียนโปรแกรมคอมพิวเตอร์ได้   ซึ่งแต่ละภาษามีรายละเอียดดังต่อไปนี้
                         1) ภาษาเครื่อง (machine  language)
                        ภาษาเครื่องจัดเป็นภาษาคอมพิวเตอร์ภาษาเดียวที่สามารถติดต่อกับคอมพิวเตอร์ได้โดยตรง    เพราะว่าการเขียนคำสั่งและข้อมูลในภาษาเครื่องใช้ระบบเลขฐานสอง (binary number system) คือใช้ตัวเลข 0  และ 1 เท่านั้น   ทำให้เครื่องคอมพิวเตอร์สามารถทำงานได้รวดเร็ว   ส่วนข้อเสียของภาษาเครื่อง  คือ  เครื่องคอมพิวเตอร์ต่างชนิดกันมีลักษณะการเขียนภาษาเครื่องที่แตกต่างกันไป  และเกิดความยุ่งยากในการปรับปรุงแก้ไข  ทำให้เกิดความไม่สะดวกในการใช้งาน    ดังนั้นภาษานี้จึงไม่เหมาะกับผู้เริ่มต้นเขียนโปรแกรม
ตัวอย่างที่  1.18  แสดงคำสั่งของภาษาเครื่องมีดังนี้  
ถ้าเราต้องการสั่งให้เครื่องทำงานตามคำสั่ง  9 + 3  แสดงได้ดังนี้
การบวกแทนด้วยรหัส                          10101010
เลข  9  เปลี่ยนเป็นเลขฐานสอง            00001001
เลข  3  เปลี่ยนเป็นเลขฐานสอง            00000011
ดังนั้น  คำสั่ง  9 + 3  เขียนเป็นภาษาเครื่องได้ดังนี้
00001001   10101010   00000011

                        2) ภาษาแอสเซมบลี (assembly  language)
                        ภาษาแอสเซมบลีหรือจะเรียกชื่ออีกอย่างว่าภาษาระดับต่ำ  ซึ่งเป็นภาษาคอมพิวเตอร์ที่พัฒนาขึ้นมาเพื่อให้ผู้เขียนโปรแกรมสามารถเขียนโปรแกรมติดต่อกับคอมพิวเตอร์ได้ง่ายกว่าภาษาเครื่อง    ส่วนการเขียนคำสั่งในภาษาแอสเซมบลีจะใช้คำย่อของภาษาอังกฤษและอ้างถึงตำแหน่งที่อยู่ภายในคอมพิวเตอร์เป็นส่วนใหญ่  ได้แก่  MOVE, DC, DS, CL10 เป็นต้น    ผู้ที่ต้องใช้ภาษาแอสเซมบลีส่วนมากจะเป็นวิศวกรคอมพิวเตอร์  ดังนั้นภาษาแอสเซมบลีจึงไม่เหมาะกับผู้เริ่มต้นเขียนโปรแกรม
            ตัวอย่างที่  1.19  แสดงคำสั่งของภาษาแอสเซมบลีมีดังนี้  
ถ้าเราต้องการสั่งให้เครื่องทำงานตามคำสั่ง  9 + 3  แสดงได้ดังนี้
                MOV   AX,  9
                MOV   BX, 3
                ADD   AX, BX
                        3) ภาษาระดับสูง (high  level  language)
                        ภาษาระดับสูงเป็นภาษาที่ผู้เขียนโปรแกรมสามารถเข้าใจได้ง่ายกว่าภาษาแอสเซมบลีและภาษาเครื่อง ทั้งนี้ก็เพราะการเขียนคำสั่งของภาษาระดับสูงมีลักษณะเป็นภาษาอังกฤษ    ซึ่งอ่านแล้วเข้าใจได้ง่ายกว่าภาษาแอสเซมบลี  เช่น  ใช้คำว่า  READ, WRITE, PRINT, COMPUTE  เป็นต้น    ตัวอย่างของภาษาระดับสูงได้แก่   ภาษาฟอร์แทรน (FORTRAN), ภาษาโคบอล (COBOL),  ภาษาเบสิก (BASIC), ภาษาปาสคาล (PASCAL)  และภาษาซี (C)   เป็นต้น  ซึ่งแต่ละภาษามีประวัติพอสังเขปดังต่อไปนี้
  • ภาษาฟอร์แทรน (FORTRAN  ย่อมาจาก  FORmula  TRANslator)  พัฒนาโดยบริษัท  IBM  ระหว่างปี ค.ศ.1954  ถึง  ค.ศ.1957  ภาษานี้ใช้สำหรับการพัฒนาโปรแกรมประยุกต์ด้านวิทยาศาสตร์และวิศวกรรมศาสตร์  ที่ต้องใช้ในการคำนวณสมการคณิตศาสตร์ที่ซับซ้อน  ปัจจุบันภาษาฟอร์แทรนยังเป็นที่นิยมใช้  ในการพัฒนาโปรแกรมด้านวิทยาศาสตร์และวิศวกรรมศาสตร์
  • ภาษาโคบอล (COBOL  ย่อมาจาก  Common  Business  Oriented  Language)  พัฒนาขึ้นในปี  ค.ศ.1959  เป็นภาษาที่พัฒนาขึ้นมาเพื่อใช้ในการพัฒนาโปรแกรมประยุกต์ด้านธุรกิจและการค้า  ปัจจุบันโปรแกรมที่ใช้ในด้านธุรกิจจำนวนมากยังเป็นโปรแกรมที่พัฒนามาจากภาษาโคบอล
  • ภาษาเบสิก  (BASIC ย่อมาจาก  Beginners  All-purpose  Symbolic  Instructional  Code)  เป็นภาษาที่พัฒนาขึ้นโดยมีจุดประสงค์เพื่อให้ผู้เริ่มต้นพัฒนาโปรแกรมสามารถเรียนรู้และเข้าใจการพัฒนาโปรแกรมอย่างง่าย  ภาษาเบสิกเป็นภาษาคอมพิวเตอร์ภาษาแรกที่ใช้เครื่องไมโครคอมพิวเตอร์
                                    ภาษาคอมพิวเตอร์ที่พัฒนาขึ้นในยุคแรก  ยังมีข้อจำกัดในการที่จะพัฒนาโปรแกรมขนาดใหญ่  ทั้งนี้เนื่องจากภาษาคอมพิวเตอร์เหล่านั้นขาดโครงสร้างที่ดี  ทำให้การพัฒนาโปรแกรมที่มีขนาดใหญ่และมีความซับซ้อนเป็นไปได้ยาก  ในช่วงต้นปี  ค.ศ.1970  จึงมีภาษาคอมพิวเตอร์ที่เป็นภาษาเชิงกระบวนการ (Procedural  หรือ  Structural  Language)  เกิดขึ้น  ภาษาคอมพิวเตอร์ประเภทนี้จะมีความยืดหยุ่นในการพัฒนาโปรแกรม  ทำให้สามารถแก้ไขและบำรุงรักษาได้ง่าย  เนื่องจากโปรแกรมถูกแยกออกเป็นส่วน ๆ ภาษาคอมพิวเตอร์ที่เป็นภาษาเชิงกระบวนการที่สำคัญคือ
  • ภาษาปาสคาล (Pascal) พัฒนาโดย  Niclaus  Wirth  ในปี ค.ศ.1971  โดยมีจุดประสงค์เพื่อใช้ในการสอนการเขียนโปรแกรมภาษาเชิงกระบวนการ  ในมหาวิทยาลัย  แต่เนื่องจากภาษาปาสคาลไม่มีคุณลักษณะที่จะสนับสนุนการพัฒนาโปรแกรมด้านธุรกิจและอุตสาหกรรมจึงไม่ได้รับความนิยมมากนัก
  • ภาษาซี (C)  พัฒนาขึ้นในช่วงเดียวกับภาษาปาสคาล  โดยนักวิจัยที่ห้องปฏิบัติการ  AT&T  Bell  ซึ่งได้นำเอาจุดเด่นของภาษา  BCPL  และภาษา  B  มาใช้และได้เพิ่มคุณลักษณะและชนิดข้อมูลอื่นเข้ามาด้วย  เดิมภาษาซีถือว่าเป็นภาษาคอมพิวเตอร์ที่สำคัญในการพัฒนาโปรแกรมบนระบบปฏิบัติการยูนิกส์  (Unix)  ซึ่งเป็นภาษาคอมพิวเตอร์ที่สามารถสร้างโปรแกรมประยุกต์ที่ทำงานได้รวดเร็วมาก  เมื่อเทียบกับภาษาคอมพิวเตอร์อื่น ๆ
                        4) ภาษาระดับสูงมาก  (very  high  level  language)
                        ภาษาระดับสูงมาก   บางครั้งเรียกว่า  Fourth Gerneration Languages (4GLs)   เป็นภาษาที่มีลักษณะสำคัญ  คือ  ผู้เขียนโปรแกรมไม่ต้องบอกวิธีการทำงานโดยละเอียด   เพียงแต่ระบุคำสั่งให้ทำงานสั้น ๆ   ให้ภาษาระดับสูงมากเข้าใจก็เพียงพอ    ส่วนวิธีการคำนวณหรือการทำงานภาษาระดับสูงมากจะเป็นผู้จัดการเองทั้งสิ้น    บางครั้งเรียกว่า  non-procedure language
ตัวอย่างภาษาระดับสูงมาก  ได้แก่  ภาษา SQL (Structured  Query  Langauge) ซึ่งนิยมใช้กันในซอร์ฟแวร์พัฒนาระบบจัดการฐานข้อมูล   เช่น   ORACLE   เป็นต้น
                        5) ภาษาระดับธรรมชาติ  (natural   language)
                        ภาษาธรรมชาติจะเกี่ยวข้องกับระบบฐานความรู้ (knowledge based system )  และกฎอ้างอิง  (inference rules)  เพียงแต่ผู้ใช้ภาษาธรรมชาติป้อนคำถามผ่านเข้าไปในคอมพิวเตอร์ที่มีภาษาธรรมชาติก็จะทำการวิเคราะห์คำถามแล้วไปค้นหาคำตอบจากระบบฐานความรู้ที่เก็บไว้
ตัวอย่างของภาษาธรรมชาติ  ได้แก่  ภาษา  PROLOG และภาษา LISP  (List  Processing Language)
            1.1.4 การทดสอบ และแก้ไขโปรแกรม  (testing  and  editing  program)
            หลังจากที่เราเขียนโปรแกรมเสร็จแล้ว    ขั้นตอนต่อไป  คือ  การทดสอบโปรแกรมที่เขียนขึ้นซึ่งอาจพบความผิดพลาดได้  2  ชนิด   ดังนี้
                        1) ความผิดพลาดทางไวยากรณ์ภาษา (syntax  error)  เป็นความผิดพลาดที่เกิดจากการเขียนคำสั่งของภาษาคอมพิวเตอร์ผิด   ตัวอย่างเช่น    คำสั่ง  printf( )  ในภาษา C   ต้องเขียนด้วยตัวอักษรตัวเล็ก   แต่เขียนเป็น  PRINTF( )  เป็นต้น     โดยส่วนมากความผิดพลาดทางไวยากรณ์    จะถูกตรวจสอบพบเมื่อมีการแปลโปรแกรม (compile)  ให้เป็นภาษาเครื่อง  ซึ่งเราสามารถแก้ไขโดยการเขียนคำสั่งให้ถูกต้องตามไวยากรณ์ของภาษานั้น ๆ
                        2) ความผิดพลาดทางตรรกะ (logical  error)  เป็นความผิดพลาดที่เกิดจากการลำดับการทำงานผิดหรือป้อนสูตรคำนวณผิด ตัวอย่างเช่น ต้องการหาค่า  X = X + Y แต่ป้อนสูตรเป็น X = X * Y  อย่างนี้  เป็นต้น  วิธีการตรวจหาความผิดพลาดแบบนี้    คือ    ตรวจสอบการคำนวณผลลัพธ์ของโปรแกรมว่าตรงกับผลลัพธ์ที่คำนวณด้วยมือหรือเครื่องคิดเลขหรือไม่    ถ้าไม่ตรงกันแสดงว่าเกิดความผิดพลาดทางตรรกะขึ้น    วิธีการแก้ไขก็คือ  การแก้ไขสูตรให้ถูกต้อง หรือแก้ไขลำดับการทำงานให้ถูกต้อง
ดังนั้น  จะเห็นได้ว่าผู้เขียนโปรแกรมจะต้องทำการทดสอบโปรแกรมและแก้ไขโปรแกรมให้สามารถทำงานได้ตามที่ต้องการ
            1.1.5 การจัดทำเอกสารประกอบ และการบำรุงรักษาโปรแกรม (documentation  and  maintenance  program)
            เมื่อผู้เขียนโปรแกรมได้ทำการทดสอบโปรแกรมและแก้ไขความผิดพลาดที่เกิดขึ้นเรียบร้อยแล้ว ขั้นตอนต่อไปก็ควรจัดทำคู่มือการใช้โปรแกรม    เพราะจะทำให้ผู้ใช้โปรแกรมสามารถใช้งานได้ถูกต้อง    โดยคู่มือการใช้โปรแกรมที่ดีควรจัดทำในลักษณะที่แสดงการทำงานเป็นขั้นตอน    ผู้ใช้โปรแกรมสามารถปฏิบัติตามได้จริง  ส่วนการบำรุงรักษาโปรแกรมที่พัฒนาขึ้นก็ต้องมีคำแนะนำให้ผู้ใช้โปรแกรมปฏิบัติ    ตัวอย่างเช่น    การเก็บโปรแกรมต้นฉบับ     ควรเก็บไว้ในกล่องที่มิดชิด     ป้องกันฝุ่นได้     ไม่ควรเก็บไว้บนโต๊ะทำงาน     ไม่ควรเก็บไว้ในรถยนต์เพราะอาจถูกอากาศร้อนทำให้เสียได้       นอกจากนี้ต้องมีการสำเนาโปรแกรมต้นฉบับเอาไว้    อย่างน้อย  1  ชุด  แล้วนำชุดที่สำเนาไปใช้    ไม่ควรใช้โปรแกรมต้นฉบับโดยตรง    ควรเก็บเอาไว้สำหรับกรณีที่โปรแกรมสำเนาเกิดปัญหาจะได้นำโปรแกรมต้นฉบับมาทำสำเนาและใช้งานได้ทันที


วันเสาร์ที่ 8 กันยายน พ.ศ. 2555

โปรแกรมภาษาโลโก้


โปรแกรมทายตัวเลข

       หัวข้อนี้จะศึกษาเกี่ยวกับเกมทายตัวเลข โดยมีตัวอย่างการเล่นดังนี้


เกมทายตัวเลขนี้มีลักษณะคล้ายกับกระบวนความ Quiz ในหัวข้อที่ผ่านมาโดยมีขั้นตอนการสั่งงานให้เต่าทำงาน ดังนี้
        1) พิมพ์กติกาของเกม
        2) เลือกเลขระหว่าง 0 ถึง 100
        3) รอให้ผู้เล่นทายตัวเลข
        4) ให้เต่าตรวจคำตอบว่า เลขนั้นมากไป น้อยไป หรือทายถูก ซึ่งถ้าทายถูกก็จบเกม ถ้ามากไปหรือน้อยไปก็พิมพ์ข้อความบอกมากหรือน้อย แล้วให้ทายอีก

        ในการสร้างโปรแกรมควรสร้างแผนภูมิแสดงลำดับการทำงานของกระบวนความย่อยต่าง ๆ ที่เรียกว่า ต้นไม้กระบวนความ (procedure tree) เพื่อช่วยให้สามารถมองเห็นภาพรวมของโปรแกรม สามารถจัดแบ่งกระบวนความออกเป็นส่วน ๆ แสดงความเกี่ยวข้องกันระหว่างกระบวนความ ทำให้ง่ายต่อการพัฒนาโปรแกรม ในการสร้างกระบวนความ GuessNumber จะเรียกใช้กระบวนความ Instructions กระบวนความ ChooseNumber และกระบวนความ GetGuess โดยกระบวนความ GetGuess จะเรียกใช้กระบวนความ CheckGuess และกระบวนความ CheckGuess จะเรียกใช้กระบวนความ GetGuess อีกครั้ง นั่นคือ กระบวนความ CheckGuess และกระบวนความ GetGuess จะเรียกใช้ซึ่งกันและกัน จนกระทั่งมีการทายตัวเลขนั้นได้ถูกต้อง

ในกระบวนความ GuessNumber มีคำสั่งใหม่เพิ่มเติม ดังนี้
ClearText เป็นคำสั่งสำหรับลบจอภาพของหน้าต่างบังคับการ โดยจะเลื่อนเคอร์เซอร์ไปมุมบนซ้ายRandom n เป็นคำสั่งสำหรับสุ่มตัวเลขระหว่าง 0 ถึง n-1 เมื่อ n เป็นข้อมูลรับเข้า เช่น Random 5 จะทำการสุ่มเลข 0 ถึง 4
ReadList เป็นคำสั่งรอให้ผู้ใช้พิมพ์รายการ คล้ายกับ ReadWord แต่ต่างกันที่ผลของ ReadList ได้รายการ จึงต้องใช้คำสั่ง First เพื่อให้ได้ตัวเลขตัวแรกที่อยู่ในรายการ


การทำงานของกระบวนความ 

        เราเรียก GuessNumber ว่า กระบวนความใหญ่ (superprocedure) ซึ่งเรียกใช้กระบวนความย่อย (subprocedures) 3 กระบวนความ ตามลำดับดังนี้
 คำสั่งแรกของ Instructions เป็นการลบจอภาพของหน้าต่างบังคับการ และอีกสองบรรทัดต่อมาเป็นข้อความที่บอกกติกาของเกม 
ChooseNumber จะสร้างเลขสุ่มตั้งแต่ 1 ถึง 99 โดยสร้างจาก Random 99 (ค่าเลขสุ่มระหว่าง 0 ถึง 98) จึงต้องบวกด้วย 1
GetGuess จะใช้คำสั่ง Make "Guess First ReadList รับค่าตัวเลขตัวแรกของรายการ เป็นค่าของตัวแปร guess พิมพ์ค่า guess และเรียกกระบวนความย่อย CheckGuess ซึ่งมีข้อมูลรับเข้าตัวแรกเป็นตัวเลขที่ใส่โดยผู้ทาย ข้อมูลรับเข้าตัวที่สองเป็นตัวเลขที่เต่าสุ่มขึ้นมา

บรรทัดแรกตรวจว่า ค่าถูกหรือไม่ ถ้าใช่ก็เป็นอันจบเกม ถ้าไม่ใช่ก็จะทำงานในบรรทัดต่อมาซึ่งเป็นการตรวจว่า เลขที่ทายมากกว่าหรือน้อยกว่า ถ้ามากกว่าก็จะพิมพ์คำว่า Too high หากน้อยกว่าก็พิมพ์คำว่า Too low แล้วเรียก GetGuess เพื่อทายอีกครั้ง จนกระทั่งผู้เล่นทายถูก หรือยกเลิกการใช้โปรแกรม


โปรแกรมเรียงลำดับข้อมูล


โปรแกรมเรียงลำดับข้อมูล
        โปรแกรมเรียงลำดับข้อมูลต้องมีการสลับค่าให้อยู่ตำแหน่งที่ควรจะเป็น จึงต้องอาศัยโปรแกรมสลับค่ามาเป็นกระบวนความย่อย ในที่นี้จะยกตัวอย่างการเรียงลำดับข้อมูล 3 ตัว ซึ่งมีลำดับขั้นตอนการทำงานดังนี้
        1) กำหนดค่าตัวแปรที่รับเข้ามา
        2) ให้แสดงค่าตัวแปรที่รับเข้ามา
        3) เปรียบเทียบจำนวนที่ 1 กับจำนวนที่ 2
             3.1 ถ้าจำนวนที่ 1 มากกว่าจำนวนที่ 2 ให้สลับค่า
             3.2 ถ้าจำนวนที่ 1 น้อยกว่าจำนวนที่ 2 ไม่ต้องสลับค่า
        4) เปรียบเทียบจำนวนที่ 2 กับจำนวนที่ 3 ว่า
             4.1 ถ้าจำนวนที่ 2 มากกว่าจำนวนที่ 3 ให้สลับค่า
             4.2 ถ้าจำนวนที่ 2 น้อยกว่าจำนวนที่ 3 ไม่ต้องสลับค่า
        5) แสดงค่าที่เกิดจากการสลับในข้อ 3 และข้อ 4
        6) ทำขั้นตอนข้อ 3-4 อีก 1 ครั้ง


โปรแกรมถามและตอบ
        ตัวอย่างรูปแบบโปรแกรมถามและตอบที่จะกล่าวในที่นี้เป็นดังนี้
    เมื่อเรียกกระบวนความ Quiz1 เต่าจะพิมพ์คำถาม What is 12+8 แล้วหยุดรอให้ใส่คำตอบ โดยต้องกดแป้น Enter เพื่อบอกเต่าให้ทราบว่าได้พิมพ์คำตอบเรียบร้อยแล้ว ถ้าคำตอบผิด เต่าจะแสดงข้อความว่า No, not quit. Please try again... แล้วจะเริ่มกระบวนความ Quiz1 ใหม่อีก แต่ถ้าคำตอบถูกต้อง เต่าจะแสดงข้อความว่า very good แล้วจบการทำงาน


ที่มาเว็บ  http://www.tharua.ac.th/tharua/e-learning/mswlogo/project/lesson10_1.html


: ผลลัพธ์ที่ได้จะแสดงในส่วนแสดงผลข้อความ



  ผลลัพธ์ที่ได้จะแสดงในส่วนแสดงผลข้อความ

ตัวเลข คำ และรายการ

ตัวเลข (number) คือจำนวนซึ่งสามารถนำมา บวก ลบ คูณ หาร ตลอดจนเปรียบเทียบ
เราสามารถสั่งเต่าแสดงผลการคำนวณและเปรียบเทียบด้วยคำสั่งแสดงผล เช่น คำสั่ง Print ซึ่งมีรูปแบบดังนี้

Print จำนวน หรือ Print นิพจน์

ผลลัพธ์ที่ได้จะแสดงในส่วนแสดงผลข้อความ

คำ (word) คำในภาษาโลโกมีความหมายเหมือนกับคำในภาษาอังกฤษ
โดยมีเครื่องหมายอัญประกาศ ( " ) นำหน้าเพื่อแสดงว่า สิ่งที่ตามมาเป็นคำ โดยไม่ต้องมีเครื่องหมายอัญประกาศปิดท้าย มีรูปแบบดังนี้

word "คำ 1 "คำ 2

รายการ (list) เป็นการที่จะเชื่อมคำให้เป็นกลุ่มโดยอยู่ภายใต้วงเล็บก้ามปู
รายการอาจคลุมทั้งตัวเลข คำ และตัวรายการเอง มีรูปแบบดังนี้

Sentence "คำที่ 1 "คำที่ 2 เมื่อต้องการเชื่อมคำกับคำ
Sentence "คำ [รายการ] เมื่อต้องการเชื่อมคำกับรายการ
หรือ Sentence [รายการ] "คำ เมื่อต้องการเชื่อมรายการกับคำ
Sentence [รายการ] [รายการ] เมื่อต้องการเชื่อมรายการกับรายการ

ที่มาเว็บ http://www.tharua.ac.th/tharua/e-learni ... sson8.html




ภาษาโลโก้ (Logo Language)


ภาษาโลโก้ (Logo Language)

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

ผู้เขียนโปรแกรมจะสามารถลองผิดลองถูก เรียนรู้โดยการทดลองทำ แก้ไขปัญหาที่เกิดขึ้น เกิดการเรียนรู้โดย การค้นพบ 
ทำให้มีการพัฒนาความนึกคิดอย่างมีเหตุผล มีหลักการ มีความคิดต่อเนื่อง และยังช่วยเสริมสร้างความสามารถทางด้านวิทยาศาสตร์และคณิตศาสตร์ 
จากการเกิดแนวคิดในการแก้ปัญหาและพิสูจน์ ภาษาโลโกพัฒนาโดย Papert และคณะจาก MIT เพื่อเป็นเครื่องมือการเรียนรู้ที่ผู้เรียนเป็นผู้ควบคุมและสั่งการ 
คอมพิวเตอร์ แทนการให้ผู้เรียนทำตามคำสั่งที่มีผู้โปรแกรมคอมพิวเตอร์ไว้ ตัวแปลภาษาโลโกที่น่าสนใจคือ MSW Logo ซึ่งพัฒนาที่มหาวิทยาลัยเบิร์กเลย์ สหรัฐอเมริกา

โปรแกรม MSWLogo ย่อมาจากไมโครซอฟต์วินโดวส์โลโก (Microsoft Windows Logo) เป็นโปรแกรมที่อนุญาต ให้นำมาใช้เพื่อการศึกษาได้โดยไม่ต้องเสียค่าใช้จ่าย 

และมีการแจกจ่ายผ่านทางเครือข่ายอินเทอร์เน็ต จัดเป็นตัวแปลภาษาในระบบ Interpreter

ภาษา MSWlogo Microsoft Windows logo


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

พัฒนาการของภาษา MSWlogo


กลางปี 1960 โดย Seymour Papert และ Marvin Minsky ก่อตั้ง MIT Artificial Intelligence Laboratory
Papert, Beranek และ Newmanพัฒนาเวอร์ชั่นแรกปี 1967
มีการพัฒนาที่มหาวิทยาลัยเบิร์คเลย์ แห่งแคลิฟอร์เนีย มหาวิทยาลัยที่ยุโรป ญี่ปุ่น
MicroWorlds (1993) มีเครื่องมือช่วยพัฒนาโลโก้ เช่นเครื่องมือวาดรูป เอดิเตอร์สำหรับวาดรูป 

เครื่องมือทำจังหวะดนตรี ฯลฯ PCLogo for Windows
MSWLogo พัฒนาโดยมหาวิทยาลัยเบิร์คเลย์ แห่งแคลิฟอร์เนีย

การออกแบบภาษาโลโก้ (MIT)

friendly โล โก้เป็นภาษาทำความเข้าใจง่าย เราสามารถสร้างความ สัมพันธ์โดยใช้เต่าเป็นเครื่องมือในการสร้าง
กระบวนความคิด
extensible โลโก้สามารถใช้สอนคำสั่งใหม่และสามารถสร้างคำสั่ง ใหม่เพิ่มได้
forgiving โลโก้เป็นภาษาที่ให้การตอบสนองกลับอย่างทันทีทันใด ซึ่งมีประโยชน์ต่อการเรียนรู้
และความเข้าใจ
flexible โลโก้ เป็นภาษาที่มีประโยชน์สำหรับผู้เริ่มเรียน
powerful โลโก้ เป็นภาษาสำหรับเขียนโปรแกรม มีเครื่องมือต่างๆ ที่ใช้ในการเขียนโปรแกรมอย่าง
ครบถ้วนตามที่ผู้ใช้ ต้องการ 
คำสั่งพื้นฐานใน MSWlogo

คำสั่งเดินหน้า ใช้คำสั่ง Forward คำสั่งย่อ Fd รูปแบบคำสั่ง Fd หน่วย ตัวอย่าง Fd 100 ให้เดินหน้า 100 หน่วย
คำสั่งถอยหลัง ใช้คำสั่ง Back คำสั่งย่อ Bk รูปแบบคำสั่ง Bk หน่วย ตัวอย่าง Bk 50 ให้ถอยหลัง 50 หน่วย
คำสั่งขวาหัน ใช้คำสั่ง Right คำสั่งย่อ RT รูปแบบคำสั่ง RT องศา ตัวอย่าง Rt 90 ให้ขวาหัน 90 องศา
คำสั่งซ้ายหัน ใช้คำสั่ง Left คำสั่งย่อ LT รูปแบบคำสั่ง LT องศา ตัวอย่าง LT 45 ให้ซ้ายหัน 45 องศา
คำสั่งลบสิ่งที่ MSWlogo วาดไป ใช้คำสั่ง ClearScreen คำสั่งย่อ CS
คำสั่งลบข้อความบนส่วนแสดงผลข้อความ ใช้คำสั่ง ClearText คำสั่งย่อ CT

คำสั่งยกปากกา ใช้คำสั่ง Penup คำสั่งย่อ PU ใช้คู่กับคำสั่ง Pendown
คำสั่งวางปากกา ใช้คำสั่ง Pendown คำสั่งย่อ Pd ใช้คู่กับคำสั่ง Penup
คำสั่งให้ MSWlogo เป็นยางลบ ใช้คำสั่ง Penerase คำสั่งย่อ Pe
คำสั่งให้ MSWlogo กลับมาเป็นปากกาหลังจากใช้คำสั่ง Penerase คำสั่ง Penpaint คำสั่งย่อ PPT
คำสั่งใส่สีพื้น SetScreenColor คำสั่งย่อ SetSc รูปแบบคำสั่ง SetSC ตามด้วยค่าสี ตัวอย่าง SetSC 1
คำสั่งให้ MSWlogo เป็นถังสีใช้คำสั่ง SetFloodColor คำสั่งย่อ SetFc รูปแบบคำสั่ง SetFc ตามด้วยค่าสี ตัวอย่าง SetFc 1
คำสั่ง Fill เป็นคำสั่งให้ MSWlogo เทสี ใช้คู่กับคำสั่ง SETFC
คำสั่ง Circle เป็นคำสั่งให้ MSWlogo วาดรูปวงกลม รูปแบบ Circle รัศมี ตัวอย่าง Circle 100
ให้วาดรูปวงกลมที่มีรัศมี 100

ตัวอย่าง การวาดรูปสี่เหลี่ยมมุมฉาก ขนาดด้านละ 100

fd 100 rt 90 fd 100 rt 90 fd 100 rt 90 fd 100 rt 90

ตัวอย่าง การวาดรูปสี่เหลี่ยมมุมฉาก ด้วยคำสั่ง repeat (การทำซ้ำ)
repeat 4 [forward 100 right 90] 

ตัวอย่าง การวาดรูปสี่เหลี่ยมมุมฉาก ด้วยการสร้าง procedure (กระบวนความ คือชุดคำสั่งที่สร้างแล้วบันทึกเก็บไว้)

to square 

repeat 4 [fd 100 rt 90] 

end 

ตัวอย่าง การวาดรูปสามเหลี่ยม ด้วยการสร้าง procedure

to triangle

repeat 3 [fd 100 rt 120]

end

การเรียกใช้งาน พิมพ์เฉพาะชื่อกระบวนความที่สร้างไว้ ลงในช่องป้อนคำสั่ง เช่น square หรือ triangle เต่าจะทำการวาดรูปสี่เหลี่ยม หรือ สามเหลี่ยม ให้ทันที

ตัวอย่าง การวาดรูปวงกลม ด้วยการเรียกใช้ procedure square (ใช้กระบวนความ square มาสร้างรูปวงกลม)
repeat 12 [square right 30]


ตัวอย่าง การสร้างบ้านโดยการใช้กระบวนความย่อย


to house
square
fd 100
rt 30
triangle
end

ตัวอย่าง การใช้ตัวแปร :size (เปลี่ยนแปลงขนาด)
to sq :size
repeat 4 [fd :size rt 90]
end

การเรียกใช้งาน

พิมพ์ sq 10, sq 20, sq 30, etc. จะได้รูปตามขนาดที่พิมพ์

ตัวอย่าง การประยุกต์เพื่องานออกแบบ 

to design
cs rt 30
polyspi 5 120
end

to polyspi :size :angle
if :size > 205 [stop]
fd :size
rt :angle
polyspi :size + 5 :angle +.12
end

ที่มาเว็บ http://woralak601.wordpress.com/2010/06 ... -language/

การเขียนโปรแกรมสั่งงานคอมพิวเตอร์

การเขียนโปรแกรมสั่งงานคอมพิวเตอร์
การทำงานใด ๆ ของคอมพิวเตอร์จะทำตามลำดับขั้นตอนคำสั่งที่ได้วางไว้ เพื่อให้เกิดความเข้าใจในรูปแบบของโปรแกรมสั่งงานคอมพิวเตอร์ ในที่นี้สมมติคอมพิวเตอร์เป็นเสมือนหุ่นยนต์ตัวหนึ่งซึ่งมีหน้าที่ปฏิบัติตามคำสั่งของเราอย่างเคร่งครัด
หุ่นยนต์ตัวนี้อยู่ในโลกที่ไม่ตื่นเต้นเหมือนอย่างโลกของเรา โลกของหุ่นยนต์ไม่มีภูเขา ไม่มีแม่น้ำ ไม่มีโรงภาพยนตร์ ไม่มีร้านค้า ฯลฯ
แผนที่เมืองที่หุ่นยนต์อยู่เป็นแผ่นแบน ๆ มีทิศตามมาตรฐาน คือ เหนือ ใต้ ตะวันออก ตะวันตก โลกของหุ่นยนต์มีขอบเขตไม่จำกัด ทิศเหนือและใต้อยู่ในแนวแกน y โดยมีขอบเขตไม่จำกัด ทำนองเดียวกับทิศตะวันออกและทิศตะวันตกซึ่งอยู่ในแนวแกน x ก็มีขอบเขตไม่จำกัด
ดังนั้นโลกของหุ่นยนต์จึงเปรียบเทียบเสมือนถนนและซอยที่ตัดกันเป็นตารางสี่เหลี่ยม โดยถนนจะลากขึ้นไปตามแนวเหนือใต้ ส่วนซอยจะตัดแยกจากถนนออกไปในแนวตะวันออก ตะวันตก มุมหรือจุดตัดจะอ้างการตัดกันระหว่างถนนกับซอย ซึ่งเป็นจุดตัดเหมือนตารางหมากรุก หุ่นยนต์ จะอยู่ที่จุดตัดเหล่านี้ซึ่งมีพิกัด (x,y) และจะหันหน้าได้ 4 ทิศเท่านั้น เมืองของหุ่นยนต์ 



งานของหุ่นยนต์ คือ สิ่งที่เราสั่งให้หุ่นยนต์ทำ เช่น ต้องการให้หุ่นยนต์ไปยังจุดตัดที่มีพิกัด (5,6) ในการสั่งงานหุ่นยนต์เราต้องทราบ
สถานะของหุ่นยนต์ ว่า ตำแหน่งเริ่มต้นของหุ่นยนต์อยู่ที่ใด และหันหน้าไปทางทิศใด หรือถ้าต้องการให้หุ่นยนต์ไปเก็บลูกบอล
ก็ต้องทราบว่าลูกบอลอยู่ที่ใด และที่สำคัญที่สุดคือ จะต้องทราบภาษาที่หุ่นยนต์เข้าใจ
ในขั้นเริ่มต้นเพื่อให้เข้าใจวิธีการสั่งงานหุ่นยนต์ กำหนดคำสั่งพื้นฐานที่หุ่นยนต์สามารถเข้าใจมี 4 คำสั่ง ดังนี้
เดิน เป็นคำสั่งให้หุ่นยนต์เคลื่อนที่ไปข้างหน้าตามทิศที่มันหันหน้าไป 1 ช่อง และจะคงทิศทางเดิม
ซ้ายหัน เป็นคำสั่งให้หุ่นยนต์หันซ้าย 90 องศา โดยตัวหุ่นยนต์จะยังคงอยู่ที่เดิม
เก็บ เป็นคำสั่งให้หุ่นยนต์หยิบลูกบอล ณ ตำแหน่งที่ยืนอยู่ใส่ลงในถุง ถ้าตรงจุดที่หุ่นยนต์อยู่ไม่มีลูกบอลก็จะมีข้อผิดพลาดเกิดขึ้น แต่ถ้ามีลูกบอลหลายลูกจะสุ่มเลือกมาใส่ถุงลูกเดียว
วาง เป็นคำสั่งให้หุ่นยนต์หยิบลูกบอลจากในถุงไปวางในตำแหน่งที่ยืนอยู่ แต่ถ้าหุ่นยนต์ได้รับคำสั่งนี้ขณะที่ไม่มีลูกบอล
อยู่ในถุงก็จะเกิดข้อผิดพลาด

ที่มาเว็บ http://www.tharua.ac.th/tharua/e-learni ... on2_2.html

ตัวแปร

ตัวแปรในภาษาโลโกสามารถกำหนดได้หลายชนิด เช่น ตัวเลข (numeric) สายอักขระ (string) ตัวแปรที่จะกล่าวถึงในบทนี้จะเป็นตัวแปรชนิดตัวเลขเพียงอย่างเดียว
ในการกำหนดตัวแปรของภาษาโลโกมี 2 วิธี วิธีแรกเป็นการใช้คำสั่ง Make และวิธีใช้กระบวนความที่มีการกำหนดให้ใส่ค่าตัวแปร ซึ่งจะมีรูปแบบในลักษณะเช่นเดียวกับการใส่ค่าคงที่ในคำสั่ง Forward Back Right และ Left
การที่เราสามารถกำหนดค่าตัวแปรให้กับกระบวนความ จะทำให้ใช้กระบวนความทำงานได้อย่างมีประสิทธิภาพมากขึ้น เช่น วาดรูปได้หลายขนาดตามที่ต้องการ วาดรูปได้หลายแบบจากค่าตัวแปรที่กำหนด เป็นต้น

รูปแบบกระบวนความที่มีการกำหนดค่าตัวแปร

รูปแบบกระบวนความที่มีการกำหนดค่าตัวแปร คือ

To ชื่อกระบวนความ :ตัวแปร1 :ตัวแปร2 :...

แนวคิดเกี่ยวกับการใช้ตัวแปรในภาษาโลโก

1. ตัวแปร หมายถึง สิ่งที่มีการกำหนดค่า เปลี่ยนแปลงค่า และอ้างอิงได้ด้วยคำสั่งภายในโปรแกรม
2. เมื่อสร้างกระบวนความที่มีตัวแปร เช่น To S_Square :size เต่าจะเก็บกระบวนความชื่อ 

S_Square ในหน่วยความจำ และเตรียมเนื้อที่ว่างในหน่วยความจำสำหรับเก็บค่าของตัวแปรชื่อ size ไว้
3. เมื่อสั่งเต่าให้ทำงานตามกระบวนความที่มีตัวแปร เช่น คำสั่ง S_Square 20 

เต่าจะรับรู้ว่าตัวเลขจำนวน 20 คือค่าของตัวแปร size และนำไปเก็บในเนื้อที่ว่างในหน่วยความจำที่เตรียมไว้ เพื่อนำไปใช้ในกระบวนความ S_Square ต่อไป
4. การทำงานตามกระบวนความที่มีตัวแปร S_Square :size เช่น เครื่องหมาย : จะบอกเต่าให้หาค่าของตัวแปรชื่อ size ในเนื้อที่ว่างในหน่วยความจำที่เตรียมไว้ และนำค่าของตัวแปรไปใช้เหมือนกับการส่งค่าตัวแปรให้กระบวนความ
5. ข้อแตกต่างระหว่างเครื่องหมาย : และ " ในภาษาโลโกมีดังนี้
1) กำหนดให้มีเครื่องหมาย : นำหน้าตัวแปรใด หมายถึง การอ้างถึงค่าของตัวแปรที่จัดเก็บในตัวแปรชื่อนั้น

 เช่น :size จะหมายถึงค่าของตัวแปรที่เก็บในตัวแปร ชื่อ size
2) การกำหนดให้มีเครื่องหมาย " หน้าตัวแปรใด หมายถึง การอ้างถึงชื่อของตัวแปรนั้น เช่น "size จะหมายถึง 

ชื่อของตัวแปรที่เรียกว่า size
3) การกำหนดตัวแปรโดยไม่มีเครื่องหมาย : หรือ " นำหน้า หมายถึง ตัวแปรนั้นเป็นคำสั่งหรือกระบวนความ เช่น size ที่ไม่มีเครื่องหมาย : หรือ " นำหน้า เต่าจะเข้าใจว่าเป็นคำสั่งหรือกระบวนความที่มีชื่อว่า size
ที่มาเว็บ http://www.tharua.ac.th/tharua/e-learni ... index.html