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

การกำหนดพารามิเตอร์เบื้องต้น

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

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

      กรณีที่พารามิเตอร์มากกว่า 1 ตัว ที่ข้อมูลเป็นชนิดเดียวกัน เราไม่สามารถนำมาเขียนกันไว้ในข้อมูลชนิดเดียวกันได้เหมือนการประกาศตัวแปร ต้องแยกเขียนทีละตัว เช่น เช่นกรณีต่อไปนี้ ผิด
 ข้อมูลที่รับผ่านพารามิเตอร์เข้ามาในเมธอด ไม่จำเป็นต้องเป็นชนิดข้อมูลพื้นฐาน (เช่น ตัวเลข,สตริง
,บูลีน) แต่สามารถเป็นชนิดของออบเจ็กต์คอลโทรลใดๆ ก็ได้ เช่น กรณีต่อไปนี้รับพารามิเตอร์เป็นออบเจ็กต์ Button และ Text Box

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

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

การสร้างเมธอดที่ไม่มีการส่งค่ากลับ

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

     เมธอดแบ่งออกเป็น 2 ลักษณะ คือ “เมธอดที่ไม่มีการส่งค่ากลับ” (non-return value method) และ “เมธอดที่มีการส่งค่ากลับออกไป” (return value method) โดยรูปแบบพื้นฐานในการเขียนเมธอดแบบไม่ส่งค่ากลับคือ

      โมดิฟายเออร์ (Modifier) เป็นระดับการควบคุมการเรียกใช้เมธอดจากภายใน เช่น จากคลาสอื่นๆ ทั้งนี้รายละเอียดต่างๆ เกี่ยวกับโมดิฟายเออร์ เราจะได้ศึกษาอีกครั้งในบทที่ 11 สำหรับการสร้างเมธอดเพื่อใช้งานทั่วๆไป ในเบื้องต้นนี้ให้กำหนดโมดิฟายเออร์เป็น Private ไปก่อน

      ชื่อเมธอด มีหลักการคล้ายกับการตั้งชื่อตัวแปรสาหรับใน VC# นิยมเขียนชื่อเมธอดให้ขึ้นด้วยตัวพิมพ์ใหญ่ แล้วถัดไปเป็นตัวพิมพ์เล็ก ถ้าเป็นการนำหลายๆคามาร่วมกันก็ให้เขียนติดกัน และควรเขียนขึ้นต้นแต่ล่ะคำด้วยตัวพิมพ์ใหญ่
เช่น ShowError, GetData , Setvalue, PrintEmployeeInfo, IsCompleteData เป็นต้น

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



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

วันพุธที่ 3 กันยายน พ.ศ. 2557

การแปลงข้อมูลชนิดตัวเลข

  เนื่องจาก VC# นั้นเป็นเป็นภาษาที่เข้มงวดใน เรื่องของชนิดข้อมูลเป็นอย่างมากซึ่งปัญหาพื้นฐานอย่างหนึ่งที่ผู้เริ่มเขียน โปรแกรมมักจะพบอยู่เสมอก็คือ

การแปลงข้อมูล

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

การใช้คำสั่ง Convert.ToXxx

     คำสั่ง Convert.ToXxx() ก็อย่างเช่น Convert.ToInt32(), Convert.ToDouble() เป็นต้น แต่จะแปลงจาก String Number เป็นตัวเลข นอกจากนี้แล้วคลาสต์ Convert ยังมีคาสั่ง (เมธอด) ในการแปลงข้อมูลอีกหลายแบบ

คำสั่งที่ใช้บ่อย


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

การคลาสต์ (Cast)

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

การแปลงข้อมูลก่อนการคำนวณ

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

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