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

การเขียนชุดคำสั่งในลักษณะ Program Mode


 การเขียนชุดคำสั่งในลักษณะ Program Mode

คำสั่งที่สั่งให้เต่าโลโกทำงานดังที่ได้ทดลองปฏิบัติในใบงานที่ 3-4 นั้น เรียกว่าเป็นการทำงานในลักษณะ Command Mode กล่าวคือเต่าโลโกจะทำตามคำสั่งทันที่ที่กดแป้น Enter วิธีนี้สะดวกและได้ผลรวดเร็ว แต่จะเห็นว่าเมื่อเกิดความผิดพลาดจะแก้ไขได้ยาก อาจต้องใช้คำสั่งลบจอภาพ (Clear Screen - CS) ซึ่งทำให้ภาพถูกลบไปทั้งหมด ต้องเริ่มต้นใหม่
ยังมีอีกวิธีหนึ่งในการสั่งให้เต่าโลโกทำงาน แต่คราวนี้จะต้องพิมพ์ชุดคำสั่งทั้งหมดลงไปก่อน และเมื่อเรียกใช้ส่วนหนึ่งในชุดคำสั่งนี้ เต่าโลโกจะสร้างภาพทั้งหมดให้ทันที วิธีการนี้เรียกว่าเป็นการทำงานในลักษณะ Program Mode ตัวอย่างเช่น ในการสร้างรูปสี่เหลี่ยมจัตุรัสที่มีความยาวด้านละ 100 หน่วย จะใช้คำสั่งใน comand mode ดังนี้

REPEAT 4 [FD 100 RT 90]

แต่เมื่ออยู่ใน program mode จะเพิ่มคำสั่งดังนี้

TO SQUARE
REPEAT 4 [FD 100 RT 90]
END

และถ้าต้องการให้โปรแกรมนี้ทำงานก็เพียงแต่พิมพ์คำว่า SQUARE ที่ช่องป้อนเข้าข้อมูลเท่านั้น ก็จะได้รูปสี่เหลี่ยมจัตุรัสทันที
จะสังเกตเห็นว่าชุดคำสั่งในลักษณะ program mode สามารถทำได้ง่าย ๆ เพียงเพิ่มคำสั่ง TO ตามด้วยชื่อรูปที่จะสร้าง (ในที่นี้คือ SQUARE = รูปสี่เหลี่ยมจัตุรัส) ไว้ที่บรรทัดแรก ตามด้วยชุดคำสั่งในการสร้างรูป และปิดท้ายด้วยคำสั่ง END
ลองดูอีกคำสั่งหนึ่ง เช่นการสร้างภาพดอกไม้ (FLOWER) จะมีชุดคำสั่งดังนี้

TO FLOWER
FD 100
SETPENCOLOR [255 0 0]
REPEAT 36 [RT 10 REPEAT 4 [FD 50 RT 90]]
END

หลังจากที่พิมพ์ชุดคำสั่งข้างต้นลงไปทั้งหมดแล้ว เมื่อพิมพ์ชื่อ FLOWER ที่ช่องป้อนเข้าข้อมูลและกดแป้น Enter จะได้ภาพดอกไม้สีแดง 1 ดอกที่กลางจอภาพทันที
ข้อดีอีกอย่างหนึ่งของการเขียนชุดคำสั่งในลักษณะ program mode ก็คือ สามารถบันทึกชุดคำสั่งเหล่านี้ไว้ในฮาร์ดดิสก์หรือแผ่นดิสก์ได้ โดยการใช้คำสั่ง File --> Save หรือ File --> SaveAs

http://www.kruudom.net/20202/p5.html

ภาษาโลโก้

ภาษาโลโก้และการสร้างชิ้นงาน


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

ภาษาโลโก้บนระบบปฏิบัติการวินโดว์

ภาษาโลโก้ได้รับการพัฒนามาอย่างต่อเนื่องตั้งแต่ปี พ.ศ.2513 และเมื่อต้นปี พ.ศ.2523 กลุ่มผู้เชี่ยวชาญในการพัฒนาภาษาคอมพิวเตอร์ นำทีมโดย เซย์มัว พาเพิร์ต ได้ออกแบบโปรแกรมสร้างภาพกราฟิกที่มีประสิทธิภาพสูงและใช้งานง่าย เรียกว่า ภาษาโลโก
คำว่า โลโก” หมายถึงหุ่นยนต์เต่า สามารถเคลื่อนที่ไปในทิศทางต่าง ๆ ได้โดยการควบคุมจากเครื่องคอมพิวเตอร์ ในขณะที่เคลื่อนที่จะเขียนรอยทางเดินไปตามทิศทางนั้น ๆ ด้วย ผู้เขียนโปรแกรมสามารถใช้คำสั่งภาษาอังกฤษที่เข้าใจได้ง่าย ๆ เช่น เมื่อต้องการให้เต่าเคลื่อนที่ไปด้านหน้าจะใช้คำสั่งว่า FORWARD (ซึ่งแปลว่า เดินหน้า) หรือ ต้องการให้ย้อนกลับจะใช้คำสั่งว่า REVERSE (ซึ่งแปลว่า ย้อนกลับ) และคำสั่งให้เลี้ยวขวาหรือเลี้ยวซ้ายจะใช้ว่า RIGHT หรือ LEFT เป็นต้น
ภาษาโลโกมีจุดเริ่มต้นการพัฒนาโปรแกรมจาก ไบรอัน ฮาร์เวย์ และคณะทำงานที่มหาวิทยาลัยแคลิฟอร์เนียร์เบิร์กเลย์ ซึ่งเรียกโปรแกรมนี้ว่า "โลโกเบิร์กเลย์" หลังจากนั้นได้มีการพัฒนาอย่างต่อเนื่อง ให้สามารถใช้งานภายใต้ระบบปฏิบัติการที่แตกต่างกัน จากระบบยูนิกซ์ (UNIX) เป็นระบบดอส (DOS)จนถึงปัจจุบัน ยอร์จ มิลส์ ได้พัฒนาให้สามารถทำงานภายใต้ระบบปฏิบัติการวินโดวส์ได้ เราเรียกโปรแกรมนี้ว่า เอ็มเอสดับบลิวโลโก”(MSWLogo)
MSWLogo เป็นโปรแกรมรุ่นที่มีประสิทธิภาพสูงสุดจากโปรแกรมโลโกที่มีใช้ทั้งหมดในขณะนี้ เหมาะสำหรับใช้ในการเรียนระดับประถมศึกษาและมัธยมศึกษาตอนต้น และได้มีการเรียนการสอนเกี่ยวกับโปรแกรมนี้อย่างแพร่หลายในประเทศสหรัฐอเมริกา ญี่ปุ่น ออสเตรเลีย และประเทศอื่น ๆ ทั่วโลก การใช้งานสะดวก ไม่ยุ่งยาก เหมือนโปรแกรมอื่นๆ ที่มีปุ่มเลือกและสัญรูป ต่างๆ เป็นจำนวนมาก โปรแกรมนี้จะกระตุ้นให้นักเรียนมีความกล้าในการสร้างสรรค์งานกราฟิกรูปแบบต่าง ๆ จากจินตนาการของตนเองได้ง่าย ช่วยให้มีพื้นฐานและความถนัดเบื้องต้นในการเขียนโปรแกรม นอกจากนี้ความแพร่หลายของโปรแกรม MSWLogo ที่นำไปสอนในโรงเรียนต่าง ๆ ทำให้มีการสนับสนุนทางด้านวิชาการและตัวอย่างโปรแกรมที่น่าสนใจเป็นจำนวนมาก โดยสามารถสืบค้นจากอินเทอร์เน็ตได้โดยง่าย

ตัวแปร


รู้จักกับตัวแปรในภาษาโลโก
      ตัวแปรในภาษาโลโกสามารถกำหนดได้หลายชนิด เช่น ตัวเลข (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



รู้จักกับกระบวนความ ::

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

รูปแบบของกระบวนความมีขั้นตอนดังนี้
TO ชื่อกระบวนความ
               คำสั่งที่ 1...
               คำสั่งที่ 2...
               .................
               .................
END

ตัวอย่างที่ 1   กระบวนความ Square
              
TO Square
                Forward 50
                Right 90
                Forward 50
                Right 9 0
                Forward 50
                Right 90
                Forward 50
                Right 90
END

หมายเหตุ
              1. กระบวนความในภาษาโลโกจะขึ้นต้นด้วย To และจะจบลงด้วย End
              2. ชื่อของกระบวนความที่ตั้งขึ้นมาจะต้องไม่ซ้ำกับคำสั่งในภาษาโลโก ที่สำคัญควรสั้น                   กระทัดรัด และสอดคล้องกับงาน
              3. พิมพ์อักษรตัวเล็กหรืออักษรตัวใหญ่ก็ได้
              4. เต่าจะรู้จักชื่อกระบวนความที่สร้างขึ้นแล้วและถือเป็นคำสั่งเสมอ
              5. การเรียกใช้งานให้พิมพ์เฉพาะชื่อกระบวนความเท่านั้น
 ไม่ต้องมี to นำหน้า  เช่น
                  พิมพ์ Square กดแป้น Enter หรือ แป้น Excute

 :: การสร้างและแก้ไขกระบวนความ ::
                                        แสดงการเปรียบเทียบการใช้คำสั่งตรงและการสร้างกระบวนความ  
  คำสั่งตรง
คำสั่งกระบวนความ
       เช่น จะสร้างรูปสี่เหลี่ยมจัตุรัส ให้มี ความกว้าง 80 หน่วย ต้องใช้คำสั่งตรงพิมพ์ซ้ำ 4 ครั้ง ในช่องป้อนคำสั่ง ดังนี้
1)  fd 80 rt 90  กดแป้น Enter
2)  fd 80 rt 90  กดแป้น Enter
3)  fd 80 rt 90  กดแป้น Enter
4)  fd 80 rt 90  กดแป้น Enter
               
   หรือจะใช้คำสั่งทำซ้ำ Repeat ดังนี้
       repeat 4[fd 80 rt 90] 
              
             
ขั้นตอนการสร้างกระบวนความ (พิมพ์ to square คำสั่งในช่องป้อนคำสั่ง กด Enter) จะได้หน้าต่าง กระบวนความดังรูปข้างบน

พิมพ์   fd 80 rt 90 fd 80 rt 90 fd 80 rt 90
        fd 80 rt 90
end
พิมพ์เสร็จแล้วให้คลิ๊กที่กากะบาท หรือ คลิ๊กที่ File เลือก Exit เพื่อออกจากหน้าต่างกระบวนความ จะปรากฏคำสั่ง Square defined ในช่องป้อนคำสั่ง

หรือจะใช้คำสั่งทำซ้ำ Repeat สร้างกระบวนความก็ได้
เช่น พิมพ์ to square ในช่องป้อนคำสั่ง

 พิมพ์ repeat 4[fd 80 rt 90] 
      end
** ถ้าจะให้เต่าสร้างภาพ ให้พิมพ์คำสั่ง Square ในช่อง ป้อนคำสั่ง กดแป้น Enter จะได้ภาพสี่เหลี่ยมจัตุรัส ตามต้องการ (ดูภาพตัวอย่างด้านซ้ายมือ)
             การเรียกกระบวนความมาแก้ไข ให้ปฏิบัติดังนี้
         
             1)  พิมพ์คำสั่ง Edit "square กดแป้น Enter จะปรากฏหน้าต่างดังรูป

                          2)  แก้ไขข้อความตามต้องการ ปฏิบัติเหมือนแก้ไขเอกสารในโปรแกรมเวิอร์ด
                    3)  เสร็จแล้วให้คลิ๊กที่ไฟล์ เลือก Exit



 การบันทึกกระบวนความและการเรียกมาใช้งาน ::
                เมื่อออกจากการสร้างและแก้ไขกระบวนความแล้ว กระบวนความจะถูกจำไว้ในหน่วยความจำแรม สามารถเรียกใช้งานได้ตลอดเวลา ในขณะนั้น  และจะถูกลบออกจากหน่วยความจำ เมื่อเลิกการใช้งาน โปรแกรมโลโก แต่ถ้าต้องการจะเก็บกระบวนความไว้ใช้งานต่อไป ต้องทำการบันทึกกระบวนความเก็บไว้ ในแผ่นบันทึกหรือฮาร์ดดิสก์ มีวิธีปฏิบัติตามขั้นตอนดังนี้ 
              1)  คลิ๊กคำสั่ง File ---> Save As บนหน้าต่างโปรแกรมโลโก
              2)  ตั้งชื่อแฟ้มในช่อง File name
              3)  กำหนดสถานที่เก็บแฟ้มให้ถูกต้อง
              4)  คลิ๊ก Save

       ถ้าต้องการนำกระบวนความที่เก็บไว้กลับมาใช้งานอีกครั้ง ให้ปฏิบัติดังนี้
              1)  คลิ๊กที่เมนูไฟล์ เลือกคำสั่ง Load
              2)  เลือกชื่อไฟล์ที่ต้องการจะเปิด คลิ๊ก Open
              3)  พิมพ์ชื่อกระบวนความ ในช่องป้อนคำสั่ง กดแป้น Enter



การใช้กระบวนความสร้างชิ้นงาน ::

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

           ตัวอย่างกระบวนความสร้างบ้าน นักเรียนจะต้องทำการวิเคราะห์กระบวนความในการสร้างบ้าน ก่อน สรุปได้ว่า กระบวนความที่จะต้องสร้างมีทั้งหมด 4 กระบวนความคือ
1. กระบวนความสร้างผนังบ้าน [WALL]
2. กระบวนความสร้างหน้าต่าง [WINDOWS]
3. กระบวนความสร้างประตู [DOOR]
4. กระบวนความสร้างหลังคา [ROOF]
 http://www.kpsw.ac.th/vichit/media/weblogo/unit4_1.html

การเขียนกระบวนความของโปรแกรม MSWLogo   เพื่อสร้างภาพกราฟิกที่ซับซ้อน
สามารถทำได้โดยง่าย เช่น ในการสร้างภาพบ้าน เราต้องแบ่งภาพบ้านให้เป็นงานชิ้นเล็ก ๆ เป็นส่วน ๆ เช่น
ฝาผนัง หลังคา หน้าต่าง และประตู หลังจากนั้นนำกระบวนความทั้งหมดมารวมกันภายหลัง
ขั้นตอนการเขียนกระบวนความเพื่อสร้างรูปดินสอมีดังนี้
ขั้นตอนที่ 1
          กำหนดชื่อกระบวนความสร้างรูปดินสอ pencil และชื่อกระบวนความเล็ก ๆ ทั้งหมดดังนี้
body
head
yanglop
ขั้นตอนที่ 2
         เขียนกระบวนความ body โดย พิมพ์คำสั่ง edit "body (edit กับเครื่องหมายคำพูดให้เว้น 1 เคาะแล้วตามด้วย body) ที่ช่องป้อนคำสั่งแล้วกด Enter หลังจากนั้นจะพบคำว่า to และจบด้วย end ให้ใส่คำว่า body ลงไปหลังคำว่า to โดยเว้นระยะห่างระหว่าง to กับ body 1 เคาะ
to body
     pd fd 100 rt 90 fd 200 rt 90 fd 100 rt 90 fd 200 rt 90 pu rt 45 fd 50
     setfc 8 fill bk 50 lt 45
end
ขั้นตอนที่ 3
         เขียนกระบวนความ head เหมือนกระบวนความ body
to head
      pd repeat 3[fd 100 lt 120] pu lt 15 fd 20 setfc 0 fill bk 20 rt 15
end
ขั้นตอนที่ 4
        เขียนกระบวนความ yanglop เหมือนกระบวนความ body
to yanglop
     pu rt 90 fd 200 lt 90 fd 50 lt 180 pd arc 180 50 pu lt 90 fd 20
     setfc 4 fill bk 50 home
end
ขั้นตอนที่ 5
        เขียนกระบวนความสร้างรูปดินสอจากกระบวนความย่อยในขั้นที่ 2-4 โดยตั้งชื่อกระบวนความว่า "pencil"
to pencil
     pd body head yanglop pu home ht
end

http://www.tharua.ac.th/tharua/e-learning/mswlogo_1/project/l_7.html

วันอังคารที่ 28 สิงหาคม พ.ศ. 2555

คำสั่งสร้างภาพด้วยกระบวนความ


คำสั่งสร้างภาพรถไฟด้วยกระบวนความ


ภาพรถไฟเกิดจากการนำกระบวนความ 3 ส่วนมาประกอบกันดังนี้
     1. สร้างกระบวนความ Head ขึ้นมาก่อน
     2. ต่อมาจึงสร้่างกระบวนความ Body เป็นชิ้นที่สอง
     3. และสุดท้ายสร้างกระบวนความ Finish ขึ้่นมา
     4. เมื่อได้กระบวนความครบทั้งสามกระบวนความแล้วจึงทำการแปลงขนาดของกระบวนความให้อยู่ในรูปตัวแปร Size ทั้งหมด
     5. ดูได้จากกระบวนความแรกที่ชื่อ Train

To train :size
     head :size
     body :size
     finish :size
     pu setpos [200 200] pd
     label [Penpitcha   Khamnon  M.3/1 No.27] ht
End
To head :size
     pu lt 90 fd :size*3.5 pd rt 90 arc 180 :size*0.5 pu bk :size*0.5 pd fd :size*1.0
     bk :size*0.5 lt 90 pu fd :size*0.1 pd setfc [180 75 96] fill pu bk :size*0.1 rt 90
     bk :size*0.5 pd rt 90 fd :size*1.5 lt 90 fd :size*1.0 lt 90 fd :size*1.5 bk :size*0.5
     lt 90 pu fd :size*0.1 setfc [0 200 255] fill bk :size*0.1 lt 180 pd fd :size*0.7
     rt 90 fd :size*1.0 rt 90 fd :size*1.0 bk :size*0.5 pu rt 90 fd :size*0.1 pd
     setfc [180 75 96] fill pu bk :size*0.1 rt 90 fd :size*0.5 rt 90 pd fd :size*0.05
     lt 90 fd :size*0.05 lt 90 fd :size*1.1 lt 90 fd :size*0.05 lt 90 fd :size*0.05 pu
     lt 90 bk :size*0.7 rt 90 lt 180 rt 90 fd :size*0.7 fd :size*0.015 setfc [0 200 255] fill
     bk :size*0.015 bk :size*0.7 lt 90 fd :size*0.2 bk :size*0.05 fd :size*0.05 bk :size*0.1
     rt 90 pd fd :size*0.3 lt 90 fd :size*0.1 lt 90 fd :size*0.3 pu bk :size*0.05 lt 90
     fd :size*0.05 setfc [255 105 255] fill bk :size*0.05 lt 90 bk :size*0.05 lt 90 fd :size*0.1
     pd rt 90 fd :size*0.2 lt 90 fd :size*0.1 lt 90 lt 90 rt 90 fd :size*0.2 pu bk :size*0.05
     lt 90 fd :size*0.05 setfc [255 105 255] fill bk :size*0.05 lt 90 bk :size*0.05 rt 90
     lt 180 fd :size*0.1 rt 90 bk :size*1.0 rt 90 fd :size*0.35 pd circle :size*0.3 lt 90
     pu bk :size*0.1 setfc [0 0 0] fill fd :size*0.2 setfc [0 0 0] fill bk :size*0.1 lt 90 rt 180
     fd :size*1.15 bk :size*0.35 pd circle :size*0.3 lt 90 pu bk :size*0.1 setfc [0 0 0] fill
     fd :size*0.2 setfc [0 0 0] fill bk :size*0.1 rt 90 fd :size*0.35 lt 90 fd :size*0.2 rt 90 pd
     fd :size*0.3 lt 90 fd :size*0.1 lt 90 fd :size*0.3 bk :size*0.1 pu rt 90 bk :size*0.05
     setfc [255 255 0]fill rt 90 lt 90 fd :size*0.05 rt 90 bk :size*0.1 lt 90 fd :size*0.1 rt 90
     pd fd :size*0.3 lt 90 fd :size*0.1 lt 90 fd :size*0.3 bk :size*0.1 rt 90 pu bk :size*0.05
     setfc [255 255 0]fill fd :size*0.05 lt 90 rt 180 bk :size*0.1 lt 90 bk :size*0.5 rt 90
     fd :size*0.3 lt 90
End
To body :size
     pd fd :size*1.5 rt 90 fd :size*1.5 rt 90 fd :size*1.5 rt 90 fd :size*1.5 rt 90 fd :size*0.3 rt 90
     fd :size*1.5 lt 90 fd :size*0.3 lt 90 fd :size*1.5 rt 90 fd :size*0.3 rt 90 fd :size*1.5 lt 90
     fd :size*0.3 lt 90 fd :size*1.5 rt 90 fd :size*0.1 rt 90 pu fd :size*0.2lt 90setfc [150 100 100] fill
     bk :size*0.2 setfc [150 100 100] fill bk :size*0.3 setfc [150 100 100] fill bk :size*0.3 setfc [150 100 100] fill
     bk :size*0.4 setfc [150 100 100] fill bk :size*0.1 lt 90 fd :size*0.2 rt 180 fd :size*0.35 pd
     circle :size*0.3 lt 90 pu bk :size*0.1 setfc [0 0 0] fill fd :size*0.2 setfc [0 0 0] fill bk :size*0.1
     rt 90 fd :size*1.15 bk :size*0.35 pd circle :size*0.3 lt 90 pu bk :size*0.1 setfc [0 0 0] fill
     fd :size*0.2 setfc [0 0 0] fill bk :size*0.1 rt 90 fd :size*0.35 lt 90 fd :size*0.2 rt 90
     pd fd :size*0.3 lt 90 fd :size*0.1 lt 90 fd :size*0.3 bk :size*0.1 pu rt 90 bk :size*0.05
     setfc [255 255 0] fill fd :size*0.05 rt 90 bk :size*0.1 lt 90 fd :size*0.1 rt 90 pd fd :size*0.3
     lt 90 fd :size*0.1 lt 90 fd :size*0.3 bk :size*0.1 rt 90 pu bk :size*0.05 setfc [255 255 0] fill
     fd :size*0.05 rt 90 bk :size*0.1 lt 90 bk :size*0.5 rt 90 fd :size*0.3 lt 90 pd fd :size*1.5 rt 90
     fd :size*1.5 rt 90 fd :size*1.5 rt 90 fd :size*1.5 rt 90 fd :size*0.3 rt 90 fd :size*1.5 lt 90
     fd :size*0.3 lt 90 fd :size*1.5 rt 90 fd :size*0.3 rt 90 fd :size*1.5 lt 90 fd :size*0.3 lt 90 fd :size*1.5
     rt 90 fd :size*0.1 rt 90 pu fd :size*0.2 lt 90 setfc [150 100 100] fill bk :size*0.2 setfc [150 100 100] fill
     bk :size*0.3 setfc [150 100 100] fill bk :size*0.3 setfc [150 100 100] fill bk :size*0.4 setfc [150 100 100] fill
     bk :size*0.1 lt 90 fd :size*0.2 rt 180 fd :size*0.35 pd circle :size*0.3 lt 90 pu bk :size*0.1 setfc [0 0 0] fill
     fd :size*0.2 setfc [0 0 0] fill bk :size*0.1 rt 90 fd :size*1.15 bk :size*0.35 pd circle :size*0.3
     lt 90 pu bk :size*0.1 setfc [0 0 0] fill fd :size*0.2 setfc [0 0 0] fill bk :size*0.1 rt 90 fd :size*0.35
     lt 90 fd :size*0.2rt 90 pd fd :size*0.3 lt 90 fd :size*0.1 lt 90 fd :size*0.3 bk :size*0.1 pu
     rt 90 bk :size*0.05 setfc [255 255 0] fill fd :size*0.05 rt 90 bk :size*0.1 lt 90 fd :size*0.1
     rt 90 pd fd :size*0.3 lt 90 fd :size*0.1 lt 90 fd :size*0.3 bk :size*0.1 rt 90 pu bk :size*0.05 setfc [255 255 0] fill
     fd :size*0.05 rt 90 bk :size*0.1 lt 90 bk :size*0.5 rt 90 fd :size*0.3 lt 90
End
To finish :size
     pd fd :size*1.7 rt 90 fd :size*2.0 rt 90 fd :size*1.7 rt 90 fd :size*2.0 bk :size*0.3 rt 90 pu
     fd :size*0.2 setfc [180 75 96] fill fd :size*1.2 rt 90 pd fd :size*1.4 rt 90 fd :size*0.75 rt 90
     fd :size*1.4 rt 90 fd :size*0.75 bk :size*0.375 rt 90 fd :size*1.4 rt 90 fd :size*0.375 rt 90
     fd :size*0.7 rt 90 fd :size*0.75 pu lt 90 fd :size*0.2 rt 90 bk :size*0.1 setfc [0 200 255] fill
     bk :size*0.3 setfc [0 200 255] fill rt 90 fd :size*0.3 setfc [0 200 255] fill lt 90 fd :size*0.1
     setfc [0 200 255] fill rt 90 fd :size*0.9 lt 90 fd :size*0.6 rt 90 pd fd :size*0.05 lt 90
     fd :size*0.05 lt 90 fd :size*2.1 lt 90 fd :size*0.05 lt 90 fd :size*0.05 lt 90 pu
     fd :size*0.02 setfc [0 200 255] fill bk :size*1.72 rt 90 fd :size*0.35 pd circle :size*0.3 pu
     lt 90 bk :size*0.05 setfc [0 0 0] fill fd :size*0.1 setfc [0 0 0] fill bk :size*0.05 rt 90
     fd :size*1.3 circle :size*0.3 pd circle :size*0.3 lt 90 pu bk :size*0.05 setfc [0 0 0] fill
     fd :size*0.1setfc [0 0 0] fill bk :size*0.05 rt 90
End


คำสั่งสร้างภาพปูด้วยกระบวนความ  











ภาพปูเกิดจากการนำกระบวนความ 3 ส่วนมาประกอบกันดังนี้
     1. สร้างกระบวนความ Head ขึ้นมาก่อน
     2. หลังจากนั้นจึงสร้างกระบวนความ Gam เป็นชิ้นที่สอง
     3. และสุดท้ายสร้างกระบวนความ Leg ขึ้นมา เมื่อได้ครบทั้งสามกระบวนความแล้วจึงนำมารวมกันเป็นกระบวนความสุดท้ายที่ชื่อ Poo และเมื่อได้กระบวนความครบ ก็ต้องทำการแปลงขนาดของภาพด้วยตัวแปร Size ด้วย
     4. ดูได้จากกระบวนความแรกที่ชื่อ Poo
To poo :size
     head :size
     gam :size
     leg :size
     pu setpos [0 150] pd
     label [เด็กหญิงเพ็ญพิชชา คำนนท์  เลขที่ 27 ม.3/1]
End
To head :size
     pd rt 90 fd :size*1.2 rt 90 fd :size*1.2 rt 90 fd :size*2.4 rt 90 fd :size*1.2
     rt 90 fd :size*1.2 pu bk :size/2 lt 90 pd fd :size/2 pu fd :size*0.3 pd circle :size*0.3
     setfc [200 255 255] fill circle :size/10 setfc [0 0 0] fill pu bk :size*0.8
     rt 90 fd :size lt 90 pd fd :size/2 pu fd :size*0.3 pd circle :size*0.3 setfc [200 255 255] fill
     setpc [0 0 0]circle :size/10 setfc [0 0 0] fill pu bk :size pd setfc [255 180 0] fill
     setpc [0 0 0]pu home bk :size*0.7 lt 90 pd fd :size*0.4 rt 45 fd :size/5 pu home bk :size*0.7
     rt 90 pd fd :size*0.4 lt 45 fd :size/5
End
To gam :size
     pu home rt 90 pd fd :size*1.8 lt 90 fd :size*0.3 lt 90 fd :size/10 rt 90
     fd :size*0.8 rt 45 fd :size/10 rt 135 fd :size*0.3 lt 90 fd :size*0.3 lt 90 fd :size*0.3
     rt 135 fd :size/10 rt 45 fd :size*0.8 rt 90 fd :size/10 lt 90 fd :size/2 rt 90 fd :size*0.85
     rt 135 pu fd :size/10 pd setfc [255 170 0] fill
     pu home lt 90 pd fd :size*1.8 rt 90 fd :size*0.3 rt 90 fd :size/10 lt 90
     fd :size*0.8 lt 45 fd :size/10 lt 135 fd :size*0.3 rt 90 fd :size*0.3 rt 90 fd :size*0.3
     lt 135 fd :size/10 lt 45 fd :size*0.8 lt 90 fd :size/10 rt 90 fd :size/2 lt 90 fd :size*0.85
     lt 135 pu fd :size/10 pd setfc [255 170 0] fill pu
End
To leg :size
     home bk :size*0.9 rt 90 fd :size*1.2 pd fd :size*0.3 rt 90 fd :size/2 lt 90 fd :size*0.3
     rt 90 fd :size/10 rt 90 fd :size*0.4 rt 90 fd :size*0.4 lt 90 fd :size/5 rt 135
     pu fd :size/10 setfc [255 200 0] fill pu home
     bk :size*0.9 lt 90 fd :size*1.2 pd fd :size*0.3 lt 90 fd :size/2 rt 90 fd :size*0.3
     lt 90 fd :size/10 lt 90 fd :size*0.4 lt 90 fd :size*0.4 rt 90 fd :size/5 lt 135
     pu fd :size/10 setfc [255 200 0] fill pu
End
คำสั่งสร้างภาพปลาวาฬด้วยกระบวนความ
To whale :size
     body :size
     head :size
     water :size
     pu setpos[100 -100]
     pd label [Penpitcha  Khamnon M.3/1 No.27] ht
End
To body :size
     pu setpos[-144 36] pd setpos[-120 48] setpos[-84 48] setpos[-48 36] setpos[-24 24] setpos[0 0]
     setpos[24 -12] setpos[60 0]setpos[72 -12] setpos[48 -24] setpos[60 -36] setpos[48 -48]
     setpos[24 -36] setpos[24 -12] pu setpos[48 -24] pd setpos[96 -24] setpos[144 24]
     setpos[120 -36] setpos[72 -60] setpos[0 -60]setpos[-36 -60] setpos[-84 -48] setpos[-108 -24]
     setpos[-72 -36] setpos[-36 -24] pu setpos[-108 -24] pd setpos[-132 -12] setpos[-144 36] pu
     setpos[-108 24] pd arc 360 :size/10 pu bk :size*0.04 pd arc 360 :size*0.05 pu setpos[-48 0]
     pd setfc[250 225 120] fillpu setpos[-108 24] fd :size*0.03 pd setfc[0 0 0] fill pu
     setpos[36 -24] pd setfc[45 132 255] fill
End
To head :size
     pu setpos[-144 36] pd setpos[-108 96] setpos[-48 120] setpos[12 108] setpos[60 60] setpos[84 24]
     setpos[96 0]setpos[120 24] setpos[120 48] setpos[84 60] setpos[72 84] setpos[120 72]
     setpos[144 96] setpos[144 72] setpos[132 48] setpos[144 24] pu setpos[0 48] pd
     setfc[56 24 156] fill
End
To water :size
     pu setpos[-48 120] pd setpos[-60 168] setpos[-72 180] setpos[-84 180] setpos[-108 144]
     setpos[-96 192] setpos[-72 192] setpos[-48 168] setpos[-24 192] setpos[0 192] setpos[12 144]
     setpos[-12 180] setpos[-24 180] setpos[-36 168] setpos[-48 120] pu setpos[-48 156] pd
     setfc[46 125 225] fill
End


คำสั่งสร้างรูปช้างด้วยกระบวนความ
to a :size











pu home fd :size*1.50 rt 90 fd :size*1.00 rt 90
fd :size*0.25 rt 90 fd :size*0.10 fd :size*0.10 rt 90 pd
fd :size*0.10 lt 25 fd :size*0.05 fd :size*0.05 lt 25
rt 10 fd :size*0.05 fd :size*0.05 lt 5 lt 20 fd :size*0.05
lt 25 fd :size*0.05 fd :size*0.05 lt 25 fd :size*0.10 lt 25
fd :size*0.05 fd :size*0.05 pu home fd :size*1.50 rt 90
fd :size*0.50 lt 90 lt 45 pd fd :size*0.05 fd :size*0.15
lt 25 rt 15 fd :size*0.15 lt 10 fd :size*0.10 lt 25
fd :size*0.10 lt 5 fd :size*0.10 lt 5 fd :size*0.10 lt 5
fd :size*0.10 lt 10 fd :size*0.15 lt 5 fd :size*0.10 lt 5
fd :size*0.10 pu home fd :size*1.75 rt 90 fd :size*0.50
bk :size*0.25 lt 90 bk :size*0.10 fd :size*0.05 pd
fd :size*0.10 rt 5 fd :size*0.10 rt 5 fd :size*0.10 rt 25
fd :size*0.10 fd :size*0.10 fd :size*0.10 pu home
fd :size*1.50 fd :size*0.50 bk :size*0.25 lt 90
fd :size*0.10 fd :size*0.10 lt 90 rt 180 bk :size*0.05
fd :size*0.10 bk :size*0.05 bk :size*0.05 pd fd :size*0.10
lt 5 fd :size*0.10 lt 5 fd :size*0.10 lt 25 fd :size*0.10 lt 5
fd :size*0.10 pu home
end
to body :size







home lt 180 fd :size*1.50 rt 90 pd fd :size*0.20 lt 90
fd :size*0.20 pd  bk :size*0.20 fd :size*0.20 rt 90
fd :size*1.00 rt 90 fd :size*0.80 pu home lt 180
fd :size*1.50 lt 90 fd :size*0.20 rt 90 fd :size*0.20 pd
bk :size*0.20 fd :size*0.20 lt 90 fd :size*1.00 lt 90
fd :size*0.80 pu home  fd :size*0.50 rt 90 fd :size*1.40
lt 45 pd fd :size*0.25 lt 25 fd :size*0.25 lt 25
fd :size*0.25 lt 50 fd :size*0.25 lt 25 fd :size*0.25 lt 25
fd :size*0.25 fd :size*0.05 fd :size*0.05 fd :size*0.05
pu home fd :size*0.50 lt 90 fd :size*1.40 rt 45 pd
fd :size*0.25 rt 45 fd :size*0.25 rt 15 fd :size*0.25 rt 45
fd :size*0.25 rt 45 lt 20 fd :size*0.25 rt 20 fd :size*0.20
fd :size*0.05 pu lt 90 pd fd :size*0.25 rt 45 fd :size*0.15
rt 45 fd :size*0.15 rt 20 fd :size*0.10 fd :size*0.05 lt 90 pd pu home
end
to chang :size




a :size
body :size
head :size
pu setpos [150 150] rt 90 pd
label [Penpitcha  Khamnon] ht ;[เด็กหญิงเพ็ญพิชชา คำนนท์]
end
to head :size



pd circle :size*1.50 circle :size*0.30 pu  lt 180
fd :size*0.40 arc 180 :size*0.10 pd arc 180 :size*0.10
pu fd :size*0.10 pd pu fd :size*0.10 rt 180 arc 180 10
pd arc 180 10 pu  setfc [ 185 200 255] fill
end

Parameter ตัวแปร

                                                                          การเขียนโปรแกรมที่มีการใช้ตัวแปร


ในการเขียนโปรแกรมภาษาโลโก เราสามารถกำหนดตัวแปรไว้ที่ชื่อโปรแกรมย่อย โดยใช้เครื่องหมาย colon ( : ) ตามด้วยชื่อตัวแปร เช่น :side คือตัวแปรชื่อ side หรือ :color หมายถึงตัวแปรชื่อ color เมื่อเรียกใช้โปรแกรมย่อยนั้นตามด้วยค่าตัวแปร (ตามปกติจะเป็นตัวเลข) จะมีผลทำให้เกิดการส่งผ่านค่าตัวแปรไปยังโปรแกรมย่อยนั้น และโปรแกรมย่อยจะนำค่าตัวแปรไปคำนวณและแสดงผลอีกทีหนึ่ง
ประโยชน์ที่เห็นได้ง่าย ๆ จากการกำหนดตัวแปรไว้ที่โปรแกรมย่อย ทำให้เราไม่ต้องเขียนโปรแกรมย่อยซ้ำ ๆ กัน เช่นการสร้างภาพดอกไม้ 3 ดอก 3 สี 3 ขนาด และวางไว้ที่ตำแหน่งต่าง ๆ กัน สามารถทำได้ง่ายขึ้น โดยสร้างโปรแกรมย่อยชื่อ flower เพียง 1 โปรแกรมย่อย และกำหนดตัวแปรดังนี้คือ  flower  :side  :color  :x  :y
ตัวแปร :side หมายถึงด้านของรูปสี่เหลี่ยมที่จะหมุนให้เกิดดอกไม้
ตัวแปร :color หมายถึงสีของดอกไม้
ตัวแปร :หมายถึงพิกัด x
ตัวแปร :หมายถึงพิกัด y
เมื่อต้องการสร้างภาพดอกไม้ 1 ดอก ก็ส่งค่าตัวแปร 4 ตัวไปยังโปรแกรมย่อย flower เช่น
flower  35  4  -10  0
(หมายถึงกำหนดค่าตัวแปร side=35 , color=4 , x=-10 และ y=0)
จะได้ดอกไม้ที่มีขนาด 35 (ความยาวด้านของสี่เหลี่ยม) สีแดง (สีหมายเลข 4) ณ พิกัด (-10,0) ทันที

รูปสี่เหลี่ยมที่เป็นตัวแปรโดยใช้คำสั่งกระบวนความด้วย
 to rec :s :x
  repeat 4[fd :x rt 360/4]
end
  เมื่อเราพิมพ์คำสั่ง rec  4  100  ก็จะเป็นดังรูป









รูปห้าเหลี่ยมที่เป็นตัวแปร โดยใช้คำสั่งกระบวนความด้วย  


to rec :s :x
   cs
   lt 90
   repeat 5[fd :x rt 360/5]
end
เมื่อเราพิมพ์คำสั่ง rec  5  100  ก็จะเป็นดังรูป

















รูปสามเหลี่ยมที่เป็นตัวแปร โดยใช้คำสั่งกระบวนความด้วย  



to rec :s :x
   cs
   lt 90
   repeat 3[fd :x rt 360/3]
end

 เมื่อเราพิมพ์คำสั่ง rec  3   100  ก็จะเป็นดังรูป











วันอังคารที่ 7 สิงหาคม พ.ศ. 2555

คำสั่งเพิ่มเติม ภาษา Logo

คำสั่งเกี่ยวกับขนาดและสี
setpensize   เป็นคำสั่งกำหนดขนาดของปากกาตามขนาดที่ต้องการ
  Ex. setpensize [5 15]
setpencolor  เป็นคำสั่งกำหนดเส้นสีของปากการ
  Ex.  setpencolor [0 254 190]
setfloodcolor เป็นคำสั่งเทสีลงบนรูปที่เราวาดขึ้นมา ใช้คำสั่งว่า fill ต่อท้ายเพื่อเทสีรูปภาพที่เราวาดขึ้น
  Ex  setfloodcolor [174 185 90] fill

คำสั่งที่ใช้ในการวาดรูปวงกลม
  1.arc 360 แล้วกำหนดวาดส่วนของวงกลม
  2.circle แล้วกำหนดขนาดของวงกลม

คำสั่งที่ใช้ในการวาดภาพซ้ำ
repeat  คำสั่งวนซ้ำทำซ้ำไปซ้ำมา   repeat n[คำสั่่่งที่อยากให้ทำซ้ำไปซ้ำมา

    Ex. repeat  3[fd 100 rt 90]  

คำสั่งที่ใช้เป็นกระบวนความ
   Procedure คือ กระบวนความคำสั่งต่างๆ ของภาษาโลโก้ เพื่อสร้างงานต่างๆ รูปแบบต่างๆ เก็บไว้ได้
สามเหลี่ยม  Triangle  
สี่เหลี่ยม  Sqare 
ห้าเหลี่ยม  Pentagonal


คำสั่ง รูปห้าเหลี่ยม
setpensize[5 3]
setpencolor[189 145 156]
rt 90
pd
repeat 5[fd 50 lt 72]
pu
home
rt 90
lt 90
rt 45
fd 41
setfloodcolor[174 85 174] fill

คำสั่ง รูปหกเหลี่ยม
setpensize[5 3]
setpencolor[185 158 78]
pd
repeat 6[fd 50 rt 60]
pu
home
rt 45
fd 45
setfloodcolor[189 154 129] fill

คำสั่ง รูปสามเหลี่ยม
setpensize[5 3]
setpencolor[78 174 156]
pd
rt 90
repeat 3[fd 100 lt 120]
pu
home
rt 45
fd 14
fd 45
setfloodcolor[189 25 254] fill

คำสั่ง รูปอักษร

setpensize[5 3]
pd
setpencolor[174 185 195]
Arw                                       Arw คำสั่งที่ใช้เป็นกระบวนความ ที่สร้างรูปแบบออกมาเอง  คือ  Procedure
pu
home
rt 45
fd 15
fd 41
setfloodcolor[174 185 152] fill

คำสั่ง รูปวงกลม
setpensize[5 3]
setpencolor[78 189 156]
pd
circle 30
circle 90
circle 60
setfloodcolor[184 251 54] fill
pu 
fd 41
setfloodcolor[253 174 78] fill
fd 41
bk 14
setfloodcolor[78 156 244] fill


สยามเมืองยิ้ม



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