MyBanner

โฆษณา

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

บทที่ 5 การแปลงชนิดของข้อมูล



      ภาษา OpenOffice / LibreOffice Basic หรือภาษา Basic ทั่วไป เป็นหนึ่งในภาษาโปรแกรม ที่มีการเปลี่ยนแปลงชนิดของข้อมูลโดยอัตโนมัติระหว่างการประมวลผล กล่าวคือ ในขณะที่เครื่องคอมพิวเตอร์ทำการประมวลผลโปรแกรมที่เขียนด้วยภาษา Basic อย่าง OpenOffice / LibreOffice Basic หากในระหว่างนั้น มีชุดคำสั่งที่ต้องเกี่ยวข้องกับข้อมูล ที่มีชนิด (Data Type) ต่างกัน ตัวแปรภาษาของภาษา Basic จะทำการแปลงชนิดข้อมูล ให้เป็นชนิดเดียวกันก่อน แล้วจึงทำการประมวลผล ซึ่งการดำเนินการดังกล่าวจะกระทำโดยอัตโนมัติ ยกตัวอย่างเช่น

ตัวอย่างที่ 5-01 : ตัวอย่างการแปลงชนิดของข้อมูลอัตโนมัติของ OO / LB Basic
        ....
        Dim A As String
        Dim B As Integer

        B = 2550
        A = B
      ....

ในตัวอย่างข้างต้น ตัวแปร A มีชนิดเป็น String ตัวแปร B เป็นตัวแปรเก็บค่าตัวเลขแบบ Integer ที่ชุดคำสั่ง B = 2550 เป็นการกำหนดค่าให้กับตัวแปร B ซึ่งไม่มีการเปลี่ยนแปลงชนิดของข้อมูลก่อนจัดเก็บ เนื่องจากตัวแปรภาษาของภาษา Basic หรือ OpenOffice / LibreOffice Basic จะตีความ 2550 เป็นค่าตัวเลขแบบ Integer ตามปรกติอยู่แล้ว การนำค่าตัวเลขดังกล่าวไปเก็บในตัวแปรที่ใช้เก็บค่าตัวเลขจำนวนเต็มแบบ Integer ในลักษณะดังกล่าวจึงไม่ใช่เรื่องผิดปรก
สำหรับคำสั่ง A = B ซึ่งเป็นการนำค่าข้อมูลที่อยู่ในตัวแปร B มาเก็บในตัวแปร A แต่เนื่องจากตัวแปร A เป็นตัวแปรที่ใช้เก็บข้อความ ซึ่งมีชนิดของข้อมูลต่างจากตัวแปร B ดังนั้นตัวแปรภาษาของภาษา OpenOffice / LibreOffice Basic จะทำการแปลงค่าตัวเลข 2550 ที่เก็บอยู่ในตัวแปร B ให้เป็นข้อความ “2550” ก่อนที่จะเก็บในตัวแปร A

5.1 ปัญหาของการแปลงชนิดของข้อมูลอัตโนมัติ

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

ตัวอย่างที่ 5-02 : ตัวอย่างการแปลงชนิดของข้อมูล
SUB subExample05_01
        Dim A As String
        Dim B As Integer
        Dim C As Integer

        B = 3
        C = 2
        A = B + C

        MsgBox "B = 3" + Chr(13) + _
        "C = 2" + Chr(13) + _
        "A = B + C ค่าที่เก็บใน A คือ " + A
END SUB
รูปที่ 5-1 ผลการทำงานของซับรูทีน subExample05_01
ในตัวอย่างข้างต้น จะไม่มีปัญหาอะไร เนื่องจากเวลาที่โปรแกรมทำงาน ตัวแปรภาษาของภาษา Basic จะทำการนำค่าที่เก็บในตัวแปร B และ C มาบวกกันก่อน เนื่องจากตัวแปรทั้งสอง มีชนิดของข้อมูลเป็นตัวเลขจำนวนเต็มแบบ Integer เหมือนกัน
จากนั้นจึงทำการแปลงชนิดของข้อมูลของผลลัพธ์ที่ได้ ให้เป็นข้อความ (String) แล้วจึงนำไปเก็บในตัวแปร A
สาเหตุที่ในตัวอย่างข้างต้นไม่เกิดปัญหา เนื่องจากในตอนตั้งตัวแปร ได้กำหนดชนิดของตัวแปรไว้เรียบร้อยแล้ว แต่ถ้าในตัวอย่างเดียวกันนี้ เราไม่ได้ระบุชนิดของตัวแปรตอนตั้งตัวแปรไว้ (เป็นตัวแปรแบบ Varian) ผลที่ได้จะต่างออกไปในดังตัวอย่างที่ 5-03

ตัวอย่างที่ 5-03 : ตัวอย่างปัญหาของการแปลงชนิดของข้อมูลอัตโนมัติ
SUB subExample05_02
       Dim A
       Dim B
       Dim C

       B = "3"
       C = 2
       A = B + C

       MsgBox "B = ""3""" + Chr(13) + _
                             "C = 2" + Chr(13) + _
                            "A = B + C ค่าที่เก็บใน A คือ " + A
END SUB
รูปที่ 5-2 ผลการทำงานของซับรูทีน subExample05_02
ตัวอย่างนี้ จะให้ผลออกมาต่างจากตัวอย่างที่ 5-02 คือ แทนที่ผลลัพธ์ที่เก็บในตัวแปร A จะเป็น 5 แต่กลับกลายเป็น 32
เนื่องจาก เวลากำหนดค่าให้กับตัวแปร B ตัวแปรภาษาของภาษา Basic จะกำหนดให้ตัวแปร B มีชนิดของข้อมูลเป็น String โดยอัตโนมัติ ส่วนตัวแปร C ซึ่งเดิมจะมีชนิดของข้อมูลเป็นแบบ Integer เมื่อนำมารวมกับด้วยเครื่องหมายบวก (+) ค่าที่เก็บในตัวแปร C จะถูกเปลี่ยนชนิดเป็น String ซึ่งในกรณีของการใช้เครื่องหมายบวกกับข้อความ ในภาษา Basic จะหมายถึงการนำข้อความมาต่อกัน
ดังนั้นผลลัพธ์ที่ได้ที่เก็บในตัวแปร A จึงเป็นข้อความ “32” ไม่ใช่ “5” เหมือนในตัวอย่าง 5-02

หมายเหตุ
จากตัวอย่าง 5-03 ถ้ากำหนดค่าตัวแปร B เป็น 3 และกำหนดค่าให้ตัวแปร C เป็น “2” ผลลัพธ์ที่เก็บในตัวแปร A จะมีค่าเป็น “5” เหมือนกับตัวอย่าง 5-02 เนื่องจาก ในการปรับเปลี่ยนชนิดของข้อมูลอัตโนมัติของภาษา Basic ตัวแปรภาษาของภาษา Basic จะยึดชนิดของข้อมูลของตัวแปรที่เป็นตัวตั้งเป็นหลัก การเปลี่ยนชนิดของข้อมูลจะเกิดที่ตัวแปรที่เป็นตัวกระทำ และผลลัพธ์ที่จะจัดเก็บในตัวแปรที่เตรียมไว้สำหรับเก็บผลลัพธ์เท่านั้น

เทรด forex กับ exness

บันทึกประจำวันที่ 23 มิถุนายน พ.. 2557 (2014)
เวลา
เหตุการณ์
02:00 . ตื่นนอน
02:15 . งานของกิจกรรมแอาชีพ งานอินเตอร์เน็ต (18/2557):เชื่อมต่ออินเตอร์เน็ต แก้ไข Affiliate Program
05:15 . พักผ่อน เนื่องจากไฟฟ้าที่เก็บไว้ในแบตเตอรี่ไม่พอสำหรับการใช้คอมพิวเตอร์โน๊ตบุ๊ค
07:00 . กวาดเศษใบไม้รอบกล่องปุ๋ยหมักกอง
07:30 .
0.กินข้าวเช้า 1.กับข้าว:แกงป่ากบมะเขือขื่น, ผักซีอิ้วเส้นใหญ่, สะตอสด, ถั่วลิสงคั่ว
08:00 . งานของกิจกรรมอาชีพ กสิกรรมธรรมชาติ บ้านแม่ทำ สีทา (3/2557):ฉีดพ่นน้ำหมักแปลงข้าวโพดข้าวเหนียว
09:00 . Note: อำไพ, ลำแพน นำค่าปุ๋ยวายไอซีนาโนมาให้
09:30 . อาบน้ำ ทำบันทึกประจำวันของวันก่อน ทำบัญชีครัวเรือน ทำบันทึก GAP
10:30 . งานของกิจกรรมอาชีพ งานอินเตอร์เน็ต (18/2557):ทำต้นฉบับบทความเรื่องใหม่ เชื่อมต่ออินเตอร์เน็ต แก้ไข Affiliate Program
13:30 .
0.กินข้าว พักผ่อน 1.กับข้าว:แกงป่ากบมะเขือขื่น, ผักซีอิ้วเส้นใหญ่, สะตอสด, ถั่วลิสงคั่ว
14:15 . ติดตั้งแผ่นสะท้อนแสงพ่วงข้าง
16:00 . ไปช่วยพิมพ์ใบฎีกาและซองผ้าป่าที่วัดเขาแก้ว
20:30 . เดินทางกลับมาที่บ้าน
20:45 .
0.อาบน้ำ กินข้าว พักผ่อน 1.กับข้าว:ขนมจีนน้ำยา
22:00 . เข้านอน


Adz2you.