Thursday, November 28, 2013

รู้ได้อย่างไร ว่าเข้าใจใน Syntax ต่างๆ ของโปรแกรมภาษา ได้ในระดับที่ใช้การได้แล้ว

สวัสดีครับ

    การเรียนเขียนโปรแกรม ภาษานั้น ไม่มีสิ่งใดจะบอกเราได้ว่า เรารู้ในภาษานั้น ในระดับที่ใช้การได้หรือยัง นอกจาก

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

  2. ได้ทดลองเขียน เกม สัก 1 เกม สิ่งที่อยากแนะนำมากๆ คือ เกมแนวภาษาครับ หรือที่ ฝรั่งเรียกว่า เกมแนว Adventure ที่เป็นแบบ Text Based game หรือ ในญี่ปุ่นจะเรียกว่า Visual Novels นั่นเอง

       การทำเกม แนว Text Based game นั้นยุคแรกเป็นแนวผจญภัยเป็นส่วนมาก และฮิตมากๆ ในฝั่งตะวันตกสักราวๆ 30 กว่าปีก่อนครับ เสียดายเราไม่ได้เกิดสมัยนั้น ไม่งั้น พวกเราก็เขียนเกม แนวนี้และรวยกันไปแล้วครับ ทำไมเขียนเกมแนว Text Based ที่เน้นตัวอักษร

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

       2.เกมแนวอักษร จะเน้นอักษรเป็นหลัก ไม่ต้องไปเรียนรู้เรื่องอนิเมชั่น 2 - 3 มิติ คือ ตัดเรื่องนี้ไปเลย เอาไว้โอกาสหน้า ครับทำให้เขียนเกมได้ไม่ยาก

    สำหรับการเขียน แนวทางก็คือ สร้างเนื้อเรื่อง ซึ่ง ส่วนมากเน้นการเดินทางของผู้กล้า ประมาณ มังกร อัศวิน เจ้าหญิง การเผชิญกับภัยต่างๆ แก้ปริศนา อะไรประมาณนี้ครับ แต่จะเขียนแนวอื่นได้ไหม ได้ครับเช่น สืบสวน สอบสวน เป็นต้น ก็จริงๆ แล้วฝรั่งเขาก็มีฉีกออกไปอีกแนว คือ Interactive Fiction หรือ นิยายแนวตอบโต้กันได้ระหว่างผู้เล่นกับเนื้อเรื่อง มีทั้งแบบ หนังสือ และแบบเหมือนเกม นี่ล่ะ เจ๋งไหม

     ถามว่าเกมแนวข้างต้น มันย้ำว่าเราเข้าใจการเขียนโปรแกรมที่ตรงไหน ?

    -เรื่อง Input เราได้เขียนในส่วน ตัวรับคำสั่ง ว่าจะให้ทำอะไร เช่น

Hello , What is your command?  ท่านต้องการสั่งอะไร
เกมแนวนี้จะตอบว่า   go north, west อะไรประมาณนี้ คือ ไปทางทิศเหนือ ทิศตะวันตก เป็นต้น

  -เรื่อง Selection เช่น...
จากน้ัน พอเดินทางไป ก็ไปเจอ อะไรต่างๆ เช่น พ่อมด
What do you want? พ่อมดอาจถามแบบนี้ แล้วมี ตัวเลือกมาให้
เช่น A. Sword, B. Script, C.Holy water
อะไรประมาณนี้

-เรื่องการ สร้างเหตุการณ์สุ่ม แบบ Random ก็ต้องใช้ ฟังก์ชั่น Random เป็นต้น
-เรื่องการจัดการไฟล์ เช่น การนำข้อมูลของผู้เล่น ณ. เวลาหนึ่งๆ ไปเก็บไว้ใน Array
จากนั้น ค่อยนำลง Save ในไฟล์ ประมาณนี้ พอคราวหลังมาเล่น ก็อาจใช้ Password มาเรียกข้อมูลของ
ตัวเองแบบนี้เป็นต้น
-การเข้ารหัสข้อมูลที่ Save ไม่ให้ เราไปแอบเพิ่ม ลด เอาเอง เป็นต้น ทำเป็นเล่นไป สมัยแรกๆ ขนาดเกมมีกราฟิกสวยๆ ดังๆ ยัง Save เป็น Text File อ่านได้ Save ทับได้ ก็มีมาแล้วครับ ตอนนั้น สงสัย เกมเมอร์ยังไม่เชี่ยวเหมือนสมัยนี้ ที่เขาใช้ Bot เล่นแทนกันแล้ว (ไม่ดีครับ โกงงงง ครับ)

  จะเห็นว่า มันเอา พื้นฐานการเขียนโปรแกรม ที่สุดแล้ว ก็คือ Program Control มาใช้นั่นล่ะครับ

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

สวัสดีครับ
คุณบอลล์ :0)

โปรแกรมเมอร์ ถึงจุดหนึ่งไม่ต่างไปจาก จอมเวท ที่ำกำลังร่ายมนตร์ ดูคลิปนี้ครับ

สวัสดีครับ

     ตั้งแต่ค้นคว้าเรื่อง การเขียนโปรแกรม และ ได้เห็นการแสดงผล ออกหน้าจอ คลิปนี้ถือว่า สุดยอดที่สุดแล้วครับ นี่ล่ะ เหล่าจอมเวทย์ แห่ง ศตวรรษที่ 21 ครับผม ขอให้คลิปนี้เป็นแรงบันดาลใจให้กับคนที่รักในการเขียนโปรแกรม ทุกคนครับ


                                                                 

                                               โปรแกรมโดย ภาษา C++ พร้อมกับ QT ครับ

สวัสดีครับ
คุณ บอลล์ :0)
   

Wednesday, November 27, 2013

จะเรียนเขียนโปรแกรม เรียนพร้อมๆ กัน มากกว่า 1 โปรแกรมได้ไหม?

สวัสดีครับ

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

      โปรแกรม คอนโทรลนั้นเป็นเรื่องที่สำคัญ ที่ภาษาต่างๆ ล้วนมีกันทั้งนั้น นั่นคือ

        1.Sequence หรือการทำงานของโปรแกรม ที่เป็นไปทีละขั้น ทีละตอน ตามลำดับการทำงานที่โปรแกรมได้ถูกเราเขียนขึ้นไว้นั้นเอง ครับ

        2.Selection หรือ Decision Making คือส่วนที่ทำหน้า ที่ในการคัดเลือกหรือตัดสินใจ ว่า จะทำอย่างนั้น อย่างนี้ ตามเงื่อนไข นั่นคือ การใช้ IF Statement นั้นเอง เช่นว่า

         ถ้า มีเงินมากกว่า 10,000,000 บาท แปลว่า  รวย
         ถ้า มีเงินน้อยกว่า 10,000,000 บาท แปลว่า เกือบรวย
       
   อันนี้เขียนให้ขำๆ กันเล่นครับ เพราะนิยามคำว่ารวยนั้น ต่างกันออกไปตามแต่ เราจะพอใจ คือ ข้อ การเลือก การตัดสินใจนี่ ข้อคือ 2.

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


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

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

         ผมเคยหัดพร้อมๆ กัน  4 ภาษามาแล้วครับ ก็ไม่เห็นมีปัญหาอะไรครับผม แม้จะไปอย่างช้าๆ แต่ ช้าแล้ว ได้แก้ว ครับ :0)

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

สวัสดีครับ
คุณบอลล์ :0)
       

Thursday, November 21, 2013

สวัสดีครับ วันนี้คุยเรื่อง เรียนเขียนโปรแกรมแล้ว ควรรู้อะไรบ้าง สำหรับน้องใหม่ครับ :0) ตอน 1/2

สวัสดีครับ

   ก่อนอื่นขอแก้ตัวก่อนว่า ที่ผมชะลอการอัฟเดตบล็อกนี้ไปค่อนข้างหลายวัน เพราะว่า ผมเกิดความสับสนนึกว่า เป็นอีกบล็อกหนึ่งที่ผมเขียน เนื่องจากเนื้อหาเกี่ยวกับ คอมพิวเตอร์เหมือนกัน เลยพลาดจนได้ครับ :0)

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

    การเขียนโปรแกรม อย่ามัวแต่เลือกครับว่าจะเรียนตัวไหน ตัวนี้ดี ตัวนั้นไม่ดี จริงๆ แล้ว ภาษาโปรแกรมเขาก็คล้ายๆ กันหมดครับ เพียงแต่ จะมีเน้นว่า เป็นการเขียนโปรแกรมแบบ โครงสร้าง หรือ Structure Programming  และ OOP (Object-Oriented Programming) ก็เท่านั้นเอง โดยมี ภาษาที่อยู่ตรงกลาง อย่าง C++  ก็มีครับ คือ จะเขียนแบบ C ธรรมดา ก็ได้เช่นกัน

    หรือเอาแบบแรงๆ อย่าง Java นี่ก็ได้ ขนาดโปรแกรม แรก ตามธรรมเนียมปฏิบัติ ให้แสดงผลว่า Hello, World ก็เข้า Class กับ Method กันแล้ว คือ OOP ชัดจ๋ามาเลย ก็มีครับ

    นอกจาก C++ แล้ว มีโปรแกรมอื่นไหม ที่เราคุ้นหูกัน ก็นี่เลยครับ Python นี่ล่ะครับ ถ้าเอากันจริงๆ แล้ว มีคนบอกว่า Python มีความเป็น OOP มากกว่า C++ นะครับ ทำไม? ลองถาม อาจารย์ กู กันเองครับ หมายถึง google.com นั่นเอง

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

              "จะเรียนภาษาอะไร ขอให้รักจริง เรียนรู้ให้สุดกำลัง และยั่งยืนครับ"

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

   ภาษาคอมพิวเตอร์ก็เช่นกันครับ คุณคิดว่า ภาษา COBOL นี่เก่าใหม่ แน่ละ เก่าสุดๆ คุณคิดว่า ภาษา Fortran นี่เก่าใหม่ เก่าอย่างมาก แต่ทราบไหมครับ NASA ยังใช้อยู่ และ COBOL ก็ยังมีใช้ในภาคธุรกิจเหมือนเดิม ล่าสุดเหมือนมีคนเรียนเพิ่มขึ้นด้วย ทำไมครับ นั่นเพราะ 2 ภาษานี้ ออกแบบมาเพื่องานที่เฉพาะเจาะจง ครับ COBOL เน้นด้านธุรกิจ Fortran เน้นด้าน คำนวณสมการทางคณิตศาสตร์ ครับ

    ขณะที่ภาษาสมัยใหม่นั้น อย่าง C, C++, ADA, Python, Ruby, Java และือื่นๆ นั้น จะเป็น General Purpose Programming เสียส่วนใหญ่ จริงอยู่ ตอนนี้ Java มี ทั้ง ME,SE,EE แถม ยังมี Embedded อีกต่างหาก แต่ก็ยังทิ้งความเป็น General ไม่ได้ครับ คือทั่วไป ครอบคลุมน่ะครับ นี่ยังไม่นับตระกูล Visual ต่างๆ อีกนะครับ ที่เน้นทำงานบน Windows

    แนวทางในการเรียนรู้ ควรเป็นแบบนี้ครับ

1. อย่ากลัวที่จะเริ่ม ความยากของการเริ่มหัดเขียนโปรแกรมก็มีดังนี้
     
      -คิดว่าตัวเองทำไม่ได้
      -ไม่รู้จะหาบทเรียนที่ไหน (ผมทำคลิปให้เรียนแล้วนะครับ :0) )
      -เริ่มยังไง งง
       และอื่นๆ

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

     นี่ล่ะครับ หญ้าปากคอกแท้ๆ และนี่คือ จุดอ่อน ที่ทำให้หลายคน ขยาดไม่อยากแตะหนังสือการเขียนโปรแกรม ครับ

     จีงต้องบอกไว้ตรงนี้เลยครับ เอา 3 ภาษานะครับ ก่อนคุณจะซื้อหนังสือ หรือ ตำรานะครับ ต้องติดตั้ง ตัว Compiler (+ตัว Editor เอาไว้เขียนโปรแกรมนั่นล่ะ จะมาด้วยกันเลย ) ดังนี้

1. ภาษา C, C++ แนะนำให้ใช้ ของ Classic ตัว Turbo C++ 3.0 ครับ แม้จะออกมาก่อน มาตรฐาน ภาษาแต่มันคือ ความคลาสิคครับ จะใช้ Eclipse หรือ Netbeans ก็แล้วแต่ครับ แต่ผมชูตัวนี้
เพราะว่า หากเราเขียนบน Turbo C++ 3.0 ได้ มันจะได้ประสบการณ์เพิ่มครับจากการที่ต้องดูแล Code ด้วยตนเอง และเราจะมาใช้ ตัว Eclipse กับ Netbeans ทีหลังก็ยังได้ครับ  อีกประการ เรื่องกราฟิก ความเจ๋งอื่นๆ อย่าได้ดูถูกนะครับ หากคุณยังไม่รู้จัก QT ที่เป็นตัวช่วยเรื่อง กราฟิก ทำให้ C++ ทำกราฟิกไม่แพ้ใครก็แล้วกัน คือหัดจากตัวภาษาชั้นสูง พื้นฐานแล้วหัดใช้กับ ตัวช่วย มันจะทำให้เรา ได้ฝึกอะไรเยอะกว่าครับ แต่ความเห็นของผม ไม่ใช่ว่าต้องถูก 100 % นะครับ
 
     ไป Download ตัว คลาสิคไ้ด้ที่ http://konthaihappy.com/turboc.zip ครับ

 Note: เชื่อไหมกว่าผมจะหาเขาพบ อย่างนานครับ ไม่ทราบว่าทำไม หรือเพราะของเก่าล่ะมัง :0)
         (กำลังจัดทำคลิปบทเรียนครับ ลองดูตำแหน่งเดียวกับของ Python)



2. ภาษา Python ก็ไปหาตัว Interpreter ของเขาได้ที่ http://www.python.org/download ครับ หากจะเรียนตามคลิปที่ผมทำไว้ ก็ใช้ ของเวอร์ชั่น 2.x ครับ หรือ ตั้งแต่ 2.2 ไปถึง 2.5 สำหรับ 2.6 และ 2.7 นั้นให้ระวังเพราะชุดคำสั่ง print"ใส่ข้อความที่นี่" จะกลายเป็นฟังก์ชั่นไปเป็นที่เรียบร้อยคือ print("") คือคุณจะ Interpret ไม่ผ่านครับ หากพิมพ์ตามที่ผมสอนไว้ โปรแกรมจะไม่ทำงาน ถ้าคุณไม่เปลี่ยนตามที่ผมบอก ครับผม (มีคลิปบทเรียนที่ผมทำไว้ ดูด้านขวามือ บนๆ ของบล็อกนี้ครับ)

3.ภาษา Java อันนี้ สบายๆ ครับ คือ ของเขามาตรฐานสูงอย่างมาก เพราะ มีการพัฒนามาอย่างต่อเนื่อง ตอนนี้ ลุยเข้าไปวงการ Hardware อีกต่างหาก มี Device ทั่วโลก เช่น มือถือ เราเตอร์ และอะไรก็ตามที่มีชิปคอมพิวเตอร์ฝังในวงการ ไม่ว่าจะวงการไหน ใช้ Java ไปแล้วกว่า 3000 ล้าน Device ด้วยกัน ต่อไป Java คงยึดโลก ล่ะครับ ตอนนี้ แพ้ก็แต่ พี่ใหญ่ C กับ C++ เท่านั้น ต้องรู้ครับ ภาษาเหล่านี้
(กำลังจัดทำคลิปบทเรียนครับ ลองดูตำแหน่งเดียวกับของ Python)
   
       ภาษานั้นคล้ายกับ C และ C++ ตรงที่ มีเขียนแล้ว ย้ายจากระบบปฏิืบัติการหนึ่ง (O.S.) ไปอีกที่หนึ่ง อาจจะไม่ต้องเขียนใหม่เลยแม้แต่บรรทัดเดียว คือเขียนที่เดียวแล้วปลอดภัยสบายใจไปแปดอย่างครับ หากมองความชัวร์ แล้ว Java อาจจะชัวร์กว่า นั่นเพราะ เขาทำงานบน JVM หรือ ระบบเสมือนของ Java
ที่ครอบ ตัว OS ไว้อีกที ดังนั้น Java ย่อมทำงาน บน JAVA Virtual Machine ได้แนบเนียนสนิทกว่า แน่นอนครับ แต่ C กับ C++ ไม่ได้มีตัว VM แบบนี้มาแต่แรก ครับ ก็น่าคิด จริงๆ ผมมองว่า JAVA หากพิจารณาตามนิยามแล้ว เขาอยู่ตรงกลาง ระหว่าง

       ภาษาสคริปต์ และ ภาษาโปรแกรมมิ่งจริงๆ นะครับ อ้าว ตกลง สีเทา หรือ ฮ๋ะๆๆๆ ไม่หรอกครับของเขาดีขนาดนี้

       หรือมองอีกแบบ JVM นั่นก็เหมือน Web Browser นั่นล่ะ จริงไหม? ลองคิดกันดูครับ ปรัชญาการทำงาน เหมือน IE, Chrome, Opera อย่างกับแกะเลยครับ ขอบคุณท่าน ทิม เบอร์เนอร์ลี (Tim Berners Leeไว้นะที่นี้ :0) หากไม่มีท่าน โลกนี้จะเป็นอย่างไรหนอ ท่านนี้เป็น บิดาของ WWW ครับ

        ไปดาวโหลดตัวพัฒนา Java ที่นี่ครับ  http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

    (ณ. พฤษจิกายน 2556 นะครับ)  หากไม่พบ ก็หาด้วยคำว่า JDK ครับ
อย่าลืม กดยอมรับ  Accept License Agreement ด้วยนะครับ

 วันนี้ยาวไปหน่อย ขอจบไว้เท่านี้ก่อน เดี๋ยวมาต่อ ตอนที่ 2 วันหลังครับผม 

สวัสดีครับ
คุณ บอลล์ :0) 
 

Tuesday, November 12, 2013

Python Programming by P'Ball: Lesson 4. IF Statement #2 and While Loop.

สวัสดีครับ

    คลิปบทเรียนนี้ จัดเต็ม 52 นาทีกว่า ๆ ทำไปได้ครับ :0)

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

          ขณะที่ ยังได้ แนะนำ เรื่องของการทำซ้ำ โดยใช้ ชุดคำสั่ง While Loop ซึ่งจะทำหน้าที่ ทำซ้ำให้กับตัวโปรแกรม เพื่อได้มาซึ่งผลของการคำนวณ ค่าตัวแปร หรือ อะไรอื่นใด ตามที่ตัวโปรแกรมต้องการ จากนั้น จึงคืนค่ากลับให้กับตัวโปรแกรมหลัก

         เมื่อนักเรียนได้ ศึกษา พื้นฐานการเขียนโปรแกรม เป็นขั้นตอน , การเขียนโปรแกรมเพื่อเลือกหรือตัดสินใจ โดย If และ การเขียนโปรแกรมให้ทำซ้ำ โดย Loop ได้แล้ว ก็นับว่า มีความสามารถพอที่จะเป็นโปรแกรมเมอร์ ที่พัฒนาโปรแกรมได้แล้วระดับหนึ่งครับ

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

                             

"สงวนลิขสิทธิ์ตามกฎหมาย โดยคุณบอลล์"

เผยแพร่บทเรียน เมื่อ วันที่ 12 พฤศจิกายน พ.ศ.2556 

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

         *** หน่วยงาน, องค์กร, สถาบันต่างๆ ที่มีการนำบทเรียนไปเผยแผ่ ตาม หมายเหตุ ข้างต้น ***
                         ขอความกรุณาแจ้งให้ผมได้ทราบ ที่ psirball@hotmail.com  :0)


  ขอให้สนุกกับการเรียนรู้ครับ
คุณบอลล์ :0)

ขอให้สนุกกับการเรียนรู้
สวัสดีครับ
คุณ บอลล์ :0)

Monday, November 11, 2013

Python Programming by P'Ball: Lesson 3. Basic Calculation & IF Structure (or Selection)

สวัสดีครับ

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

     หลังจากนั้น ค่าจากการคำนวณ ผมจะเอาไปเข้า ในส่วน การเลือกสรร หรือ Selection หรือ บางที่เรียกว่า ส่วนในการช่วยตัดสินใจ หรือ Decision Making ซึ่ง ในที่นี้คือ การใช้ชุดคำสั่ง IF ของ Python นั่นเอง ครับ โดย เมื่อเรียนเสร็จ ท่านจะมีความสามารถสั่งการให้ โปรแกรม เลือกตัดสินใจได้ว่า    ถ้ามีเงื่อนไขตรงกับที่ตั้งไว้ จะต้องทำอย่างนี้ หรือ หากไม่ตรงตามเงื่อนไข ก็ต้องทำอีกอย่าง อย่างนี้เป็นต้น

   
                                                        

"สงวนลิขสิทธิ์ตามกฎหมาย โดยคุณบอลล์"

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

   *** หน่วยงาน, องค์กร, สถาบันต่างๆ ที่มีการนำบทเรียนไปเผยแผ่ ตาม หมายเหตุ ข้างต้น ***
                         ขอความกรุณาแจ้งให้ผมได้ทราบ ที่ psirball@hotmail.com  :0)


  ขอให้สนุกกับการเรียนรู้ครับ
คุณบอลล์ :0)
วันที่ 31 ตุลาคม พ.ศ.2556

Tuesday, November 5, 2013

เล่าเรื่อง ภาษา C ในมุมมองที่ต่างออกไป

สวัสดีครับ

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

     โดยผมจะลองเล่า จาก หนังสือชื่อ The C Programming Language เขียน โดย Brian W. Kernighan, Dennis M. Ritchie ซึ่ง คุณ เดนนิส ริชชี่ นี่ล่ะ ที่คนไทยส่วนมาก รู้จักกันว่า เป็นผู้ให้กำเนิดภาษา C นั่นเอง
โดยเล่มนี้เป็น ฉบับแก้ไขปรับปรุง ครั้งที่ 2 ครับ มีการเพิ่ม เรื่องของ ANSI C เข้ามาเป็นที่เรียบร้อย

      ในทัศนะของผม ใครมีโอกาสก็น่าจะหา ฉบับแรกไว้ครอบครองเป็นของสะสม แต่ถ้าหากจะเริ่มเรียนภาษา C แบบจากตำราเก่า ล่ะก็ ผมว่า เล่มแรกนี่ อาจจะไม่คุ้ม เพราะ มีจุด ที่ยังไม่เข้ามาตรฐาน และ การบรรยาย ที่ไม่มากพออยู่ในเล่ม นั่นเป็นสาเหตุให้มี ฉบับแก้ไข ครั้งที่ 2 ออกมาครับ หากจะเริ่มให้เริ่มจาก Second Edition ดีกว่าครับ จะได้รู้เรื่อง ANSI C ไปพร้อมๆ กันเลย ครับ ซึ่งเล่มครั้งที่ 2 นี่ออกมาหลัง
จากเล่มหนึ่งออกไปเวียนว่ายใน โปรแกรมภพ อยู่ราวๆ 10 ปี เลยนะครับ

     ตัวผมรู้ C และ C++ มาก่อนหน้า ต่อมาก็ไม่ค่อยได้ใช้งาน และเรียนมากับทั้งการเรียน และ จากตำราด้วยตนเอง ตำราแต่ละเล่ม หนาราวๆ นิ้วกว่า ซึ่งมีเนื้อหา ยาว เยอะ และ มากจริงๆ ทำให้เคยเชื่อว่า C เป็นภาษาแห่งความเยอะในรายละเอียดจริงๆ แม้จะมีประสิทธิภาพสูงก็ตาม

     อย่างไรก็ตาม พอมาเจอเล่ม Second Edition ตกใจครับ ฉบับปี พ.ศ. 2531 ผมได้พบว่าทั้งเล่มมีเนื้อหาอยู่ 272 หน้าเท่านั้น จากที่เคยอ่านมาแบบ เป็นพันหน้า หรือใกล้เคียง ผมก็เลยคิดว่า อาจจะนำเสนอ การเรียนภาษา C ในสไตล์ ของต้นฉบับดีกว่าครับ โดยเน้นเนื้อหาที่ตรงจุด สำคัญ เน้นการเขียนโปรแกรม ให้เขียนโปรแกรม เป็น ดังที่ ผู้เขียนและผู้ให้กำเนิด ภาษา C ระบุเอาไว้ว่า

               "..C wears well as one's experience with it grows.."

      หรือ แปลเป็นไทย แบบ เชี่ยวๆ ก็ได้ว่า

"..ความเชี่ยวในภาษา (การใช้ได้ถึงจุด, ได้เหมาะสม ได้เต็มประสิทธิภาพ) ของ ภาษา C..พัฒนาขึ้นไปตาม ประสบการณ์ ที่โปรแกรมเมอร์ได้สั่งสมขึ้นมา..."  

        ดังนั้นทั้งจากการพัฒนา ที่เริ่มมี ANSI C เข้ามา และ จากการที่ผู้เขียนเองก็มีประสบการณ์กับภาษา C ที่ตัวเองได้สร้างขึ้นมา มันก็ย่อมแน่ชัดว่า ฉบับปรับปรุงครั้งที่ 2 ย่อมดีกว่าครับ      

      สำหรับแนวทางในการจัดทำหนังสือ นั้น  ผุ้เขียนยังย้ำไว้ในส่วน Preface to the First Edition ว่า หนังสือที่ ทำขึ้นมานี้ ไม่ได้มีวัตถุประสงค์ในการเขียนเพื่อเป็น ตำรา เกี่ยวกับการแนะนำการเขียนโปรแกรม ที่ลงลึกไปในรายละเอียด แต่จะเน้นว่า ผู้เรียนควรมีความเข้าใจ เรื่องการเขียนโปรแกรมอยู่บ้าง อย่างไรก็ตามผู้เขียนย้ำว่า แม้แต่โปรแกรมเมอร์หน้าใหม่ ก็อ่านหนังสือเล่มนี้ได้ ส่วนตรงไหนที่ยากหน่อย ก็ให้ลองปรึกษากับคนที่ชำนาญกว่าก็แล้วกัน

       คือทำให้เหมือนว่า นี่เป็นหนังสือของคนที่ไขว่คว้า ความรู้ ไม่ใช่ป้อนให้หมด เหมือนตำราทั่วไปครับ

      มาในส่วน Introduction ผู้เขียนและผู้ให้กำเนิดภาษา C ได้ให้ข้อคิด ไว้อย่างน่าสนใจในหลายประเด็น เช่นว่า

      -ย้ำกันชัดๆเลย ตั้งแต่ย่อหน้าแรกว่า ภาษา C เป็นภาษาที่เรียกว่า ใช้ได้หลากหลาย หรือ General-
        Purpose Language
   
      -ภาษา C นั้นจะไม่ยึดติดอยู่กับ ระบบปฏิบัติการแบบใดแบบหนึ่ง แม้ว่า จะพัฒนามาใช้ทีแรก บน
        UNIX ก็ตาม

      -แม้จะมีการเรียก ภาษา C ว่าเป็น ภาษาสำหรับการเขียนระบบปฏิบัติการ หรือ System Programming
       Language ซึ่งก็เป็นจริงตามนั้น เพราะมีการนำ C ไปเขียนระบบปฏิบัติการ และ ยังเขียน คอมไพเลอร์
       อีกด้วย แต่ผู้เขียนย้ำว่า C ยังไปได้สวย ในการถูกนำไปเขียนโปรแกรมหลักๆ ในหัวข้ออื่นๆ อีกด้วย

      -มีการให้เครดิตว่า C มีจุดกำเนิดจากตรงไหน (พวกเรานักเขียนบล็อก หรือ เว็บ หรือ ตามกระดาน ขอ
       ให้เริ่มเน้นเรื่อง เครดิตกันได้แล้วนะครับ อ้างถึงว่า เอามาจากไหน และ ใส่ลิงค์กลับมาที่ ที่มาด้วย
       จ้า) ผู้เขียนเล่าว่า แรงบันดาลใจมาจาก ภาษาชื่อ BCPL หรือ Basic Combined Programming 
       Language  สร้างโดย คุณ Martin Richards จาก มหาวิทยาลัย University of 
       Cambridge เมื่อปี ค.ศ. 1966 หรือ ปี พ.ศ.2509 

            ศึกษาเพิ่มเติม BCPL ที่ WIKI ครับ คลิกเพื่ออ่าน
     
       ทั้งนี้เป็นแรงบันดาลใจทางอ้อมครับ เพราะก่อนจะมาเป็น C นั้น ได้มีการสร้าง ภาษา B ขึ้นมาโดย
       โดย Ken Thompson ก่อน ซึ่งได้รับแรงบันดาลใจโดยตรงจาก BCPL ซึ่งได้สร้างภาษา B ขึ้นในปี
        พ.ศ.2513  จนเป็นที่มาของการพัฒนาต่อเนื่อง และเกิดมาเป็น ภาษา C ในที่สุด

         ภาษา B ในตอนนั้น พัฒนาขึ้นเพื่อใช้งานสำหรับ ระบบปฏิบัติการ UNIX ระบบแรกของโลก ที่
        ทำงานบน เครื่องคอมพิวเตอร์ DEC PDP-7



DEC PDP-7  ตัวจริงครับ


     -ภาษา C มีโครงสร้าง ที่เพียงในการคุมการทำงานของโปรแกรม  อันประกอบด้วย

            1. การดำเนินไปของโปรแกรม Sequence (เพิ่มเติมโดยกระผมครับ)
            2. ส่วนการเลือก หรือ ตัดสินใจ หรือ Selecting เช่น If, Switch
            3. ส่วนการทำซ้ำ Repetition  เช่น While, For และมี break กับ เพื่อออกจาก Loop ได้

     -การเน้นย้ำเรื่อง ความเป็น Portable Programs อันทำให้นำไปใช้บนเครื่องคอมพิวเตอร์ ที่ต่างกันได้            ง่ายโดยไม่ต้องแก้ไขโปรแกรม หรืออาจแก้เพียงเล็กน้อย

    ทั้งหมดก็เป็นประเด็นคร่าวๆ ครับ

     พอหนังสือกล่าวส่วนนีหมดก็เข้าบทเรียนแรก ที่ หน้า 5  คือ CHAPTER 1: ผมลองนั่งนับหน้าอีกครั้งเล่นๆ (ว่างมั้งเนี่ย) พบว่า หากตัดส่วนที่เป็น APPENDIX ออกไปแล้ว เนื้อหาในการสอนภาษา C จะหมดเพียง หน้าที่ 189 เท่านั้น หากลบกันแล้ว ก็พบว่า มีเนื้อหา ในเรียนกันเพียง 184 หน้าเท่านั้น นี่ล่ะครับ ที่เรียกว่า แก่นของวิชา ภาษา C ไม่ว่าจะมาก จะน้อย จะเก่ง ไม่เก่ง สิ่งที่คุณเรียนไม่ได้มากกว่า ต้นกำเนิืิดทั้ง 184 หน้านี้เท่านั้น ส่วนหลังๆ เรื่อง Library และอื่นๆ จนจบเล่มนั้น คือ ประสบการณ์ครับ

      จงหมั่นศึกษา เขียนโปรแกรมตามบทเรียนไปเรื่อยๆ จงเรียนการโปรแกรมโดยการ เขียนโปรแกรม ครับนี่คือวิธีที่ดีที่สุด ความหน้า 184 หน้า หนาน้อยกว่า นิยาย ตั้งครึ่งๆ ดังนั้น จงมั่นใจครับว่า คุณก็เขียนโปรแกรมได้ครับ

      พบกันในบทความต่อไป

* ฝากไว้ให้ฮาเล่น: มีคนล้อเลียน ว่า ภาษา BCPL คือ Before C  Programming Language เข้าใจทำครับ

สวัสดีครับ
คุณ บอลล์ :0)

                               

Monday, November 4, 2013

ความคืบหน้าในการ จัดทำ คลิปบทเรียน ของ ช่อง Thailand Computer Life Hack ในช่วงเดือน ตุลาคม 56 ที่ผ่านมา

สวัสดีครับ ผู้รักในศาสตร์คอมพิวเตอร์และวิทยาการใกล้เคียงทุกท่าน

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

    1.ได้มีการจัีดทำคลิปเปิดตัว ช่องโทรทัศน์ บน Youtube.com ไปเรียบร้อยแล้ว ในชื่อว่า
        Thailand Computer Life Hack

    2. ต่อเนื่องกันมาก็ได้เปิดช่วงรายการ Thailand Computer Chronicles ขึ้น เพื่อนำเสนอ ประวัติ ความ เป็นมาของคอมพิวเตอร์ โดยเน้นยุคร่วมสมัย ไล่มาจนเข้ายุค อินเตอร์เน็ต และ จวบจนเวลาปัจจุบัน (ลองบันทึกรายการแล้ว พบว่า นี่งานช้างครับ ต้องค่อยๆ ทำ เดี๋ยวปล่อยไก่ได้ง่ายๆ)

    3. ได้มีการทดลองลง เคล็ดลับ แนวคิด เรื่องการทดลอง จัดทำหลายๆ ลักษณะทางคอมพิวเตอร์ เช่น การลงภาษา C ทำอย่างไร, หา Path ของโปรแกรมบน Windows ได้ที่ไหน, การเขียน Batch Files         เพื่อสั่งงานคอมพิวเตอร์(ของดีที่โลกลืม) และอื่นๆ เพื่อลองฝีมือ ศึกษาความเป็นไปได้ต่างๆ ในการจัดทำบทเรียนที่จะตามมา

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


                            "เราไม่ต้องเป็นอะไรบางอย่าง เพื่อจะทำอะไรบางอย่าง"
                               We, no need to be something for doing something.

                                                                                                     โดย คุณบอลล์
                                                                                                     บล็อกเสียงจาก Admin

    หมายเหตุ: โปรดใช้แนวคิดนี้ในด้านดี มีประโยชน์ต่อ ตัวเรา ไม่ทำให้คนอื่นเดือดร้อน และสร้าง
                       สิ่งดีๆ ให้กับโลกและสังคมเท่านั้น



            พอตัดเรื่องไร้สาระออกไปได้ ก็เริ่มลงมือทำ เออ ภาพมันออกมาคมเหมือนกัน คือต้องปรับแสงเป็นครับ ผมอัีดในห้องพัก จะไปไว้ใจโหมด อัตโนมัติไม่ได้ ก็เห็นว่า แสงมันผิด ก็ปรับสิครับ มันปรับแสงแบบที่เขาเรียกว่า White Balance แป๊บเดียว แสงสีธรรมชาติ ไม่ขัดตาก็มาแล้ว อัดออกมาก็ชัดสิครับ

             เอาไปขึ้นเน็ต Youtube.com ลุ้นแทบแย่ เฮ้ย ออกมาดีเกินคาด แต่สีมัน ยังทึมๆ ก็ไล่ๆ ดูพบ ตัวช่วยเรื่องสี ลองปรับดู เรียบร้อย สีสันเหมือนจริงและ สว่างขึ้น ทันตา แบบนี้ก็มันส์ สิครับ กะว่าจะลองเฉยๆ คราวนี้ เลยทำมันจริงๆ เลย ลืมเืรื่องบรรยายแบบ Notepad ไปเลยครับ

  5. ลงมืออัดคลิปบทเรียน ภาษาแรก ภาษา Python คลิปแรก ยังสั่นๆ ครับ แต่อาศัยว่า ค่อยๆ พูด ไปเรื่อยๆ พยายามลดน้ำที่ท่วมทุ่ง เอาแต่ผักบุ้งมาล้วนๆ ปรากฎว่า ออกมาใช้ได้ นะครับ คลิปแรก ปรับแสงกันอีก แล้วก็ คราวนี้ ได้ Know How เรียบร้อย ก็ฉลุยครับ ผมก็อัดมาเรื่อย ตอนนี้ ได้ 3 บทเรียนแล้ว

     ในอีก ไม่เกิน 2 สัปดาห์จากนี้ จะเริ่มอัดบทเรียน ภาษา C และ C++ แยกกันนะครับ ไม่แน่ใจว่า มีเวลาเพียงใดครับ แต่จะลองดู ตอนนี้ก็ค่อยๆ จัดทำไปครับ ยังมีอะไรอีกมากที่วางแผนเอาไว้ พบกันในบทความต่อไปครับผม


สวัสดีครับ
คุณบอลล์