ภาษา
OpenOffice
/ LibreOffice Basic หรือภาษา
Basic
ทั่วไป
เป็นหนึ่งในภาษาโปรแกรม
ที่มีการเปลี่ยนแปลงชนิดของข้อมูลโดยอัตโนมัติระหว่างการประมวลผล กล่าวคือ
ในขณะที่เครื่องคอมพิวเตอร์ทำการประมวลผลโปรแกรมที่เขียนด้วยภาษา
Basic
อย่าง
OpenOffice
/ LibreOffice Basic หากในระหว่างนั้น
มีชุดคำสั่งที่ต้องเกี่ยวข้องกับข้อมูล
ที่มีชนิด (Data
Type) ต่างกัน
ตัวแปรภาษาของภาษา 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
จะยึดชนิดของข้อมูลของตัวแปรที่เป็นตัวตั้งเป็นหลัก
การเปลี่ยนชนิดของข้อมูลจะเกิดที่ตัวแปรที่เป็นตัวกระทำ
และผลลัพธ์ที่จะจัดเก็บในตัวแปรที่เตรียมไว้สำหรับเก็บผลลัพธ์เท่านั้น
|
เวลา
|
เหตุการณ์
|
||
| 02:00 น. | ตื่นนอน | ||
| 02:15 น. | งานของกิจกรรมแอาชีพ งานอินเตอร์เน็ต (18/2557):เชื่อมต่ออินเตอร์เน็ต แก้ไข Affiliate Program | ||
| 05:15 น. | พักผ่อน เนื่องจากไฟฟ้าที่เก็บไว้ในแบตเตอรี่ไม่พอสำหรับการใช้คอมพิวเตอร์โน๊ตบุ๊ค | ||
| 07:00 น. | กวาดเศษใบไม้รอบกล่องปุ๋ยหมักกอง | ||
| 07:30 น. |
|
||
| 08:00 น. | งานของกิจกรรมอาชีพ กสิกรรมธรรมชาติ บ้านแม่ทำ สีทา (3/2557):ฉีดพ่นน้ำหมักแปลงข้าวโพดข้าวเหนียว | ||
| 09:00 น. | Note: อำไพ, ลำแพน นำค่าปุ๋ยวายไอซีนาโนมาให้ | ||
| 09:30 น. | อาบน้ำ ทำบันทึกประจำวันของวันก่อน ทำบัญชีครัวเรือน ทำบันทึก GAP | ||
| 10:30 น. | งานของกิจกรรมอาชีพ งานอินเตอร์เน็ต (18/2557):ทำต้นฉบับบทความเรื่องใหม่ เชื่อมต่ออินเตอร์เน็ต แก้ไข Affiliate Program | ||
| 13:30 น. |
|
||
| 14:15 น. | ติดตั้งแผ่นสะท้อนแสงพ่วงข้าง | ||
| 16:00 น. | ไปช่วยพิมพ์ใบฎีกาและซองผ้าป่าที่วัดเขาแก้ว | ||
| 20:30 น. | เดินทางกลับมาที่บ้าน | ||
| 20:45 น. |
|
||
| 22:00 น. | เข้านอน |







