E-Learning วิชา การเขียนโปรแกรม – ม.4 | ครูวิเนต วงษ์แหวน

10. การ cast เพื่อเปลี่ยนประเภทข้อมูลของตัวแปร

บทเรียนนี้ ขอเริ่มต้นด้วยสถานการณ์จำลอง

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

โดย Source Code ของแมทธิว คือ

print("This program will help you add two number together")

x = input("Enter first number : ")
y = input("Enter second number : ")

print(x+y)

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

.

.

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

ผลลัพท์ที่ได้
This program will help you add two number together
Enter first number : 18
Enter second number : 39
1839

ทำไมถึงเกิดปัญหาเช่นนี้

นั่นก็เพราะ เมื่อรับข้อมูลด้วยคำสั่ง input() ข้อมูลที่ได้รับเข้ามา จะถูกเปลี่ยนไปเป็นประเภท string ทั้งหมด

ดังนั้น เมื่อเอาข้อมูลที่เป็น string มา บวก กัน จึงกลายเป็นการนำ string สองตัวมาต่อกัน
(ถ้าเอาไป ลบ คูณ หรือ หาร นี่โปรแกรม Error ทันทีเลย เพราะ string เอามาลบ คูณ หาร กันไม่ได้ )

จะแก้ไขปัญหาอย่างไร

ปัญหานี้ แก้ได้ด้วยการเปลี่ยนประเภทข้อมูลที่รับเข้ามา ให้กลายเป็นข้อมูลประเภท ตัวเลข (Integer หรือ Float) ที่สามารถนำมาบวก ลบ คูณ หาร ตามกระบวนการทางคณิตศาสตร์ได้ ซึ่งการเปลี่ยนประเภทข้อมูลนั้น ทำได้โดยวิธีการที่เรียกว่า การทำ Data type casting

การทำ Data type casting เพื่อเปลี่ยนประเภทของข้อมูล

Data type casting (อ่านว่า เดต้า ไทป์ แคสติ้ง) หรือ เรียกย่อๆ ว่าการ Casting นั้น คือกระบวนการที่ใช้ในการเปลี่ยนประเภทของข้อมูล ด้วยคำสั่ง ต่อไปนี้

ประเภทตัวแปรคำสั่งที่ใช้
Stringstr()
Intergerint()
Floatfloat()
Booleanboolean()

*จริงๆ Data type มีหลายประเภท แต่จะยกตัวอย่างเฉพาะประเภทที่จะได้ใช้ระหว่างเรียนรายวิชานี้

ตัวอย่างที่ 1 การแปลง String ไปเป็น Integer หลังจากเก็บค่าเข้าตัวแปลแล้ว

x = input("Enter any value :> ") # รับข้อมูลเข้า ผ่านคำสั่ง input() และนำค่าไปเก็บไว้ในตัวแปร x ซึ่งตอนนี้ค่าในตัวแปร x จะเป็นประเภท string
x = int(x) #ทำการ casting เปลี่ยนค่าในตัวแปร x ให้เปลี่ยนเป็น integer และเก็บกลับไปที่ตัวแปร x

ตัวอย่างที่ 2 การแปลง String ไปเป็น Float ในขั้นตอนเดียวกับการรับข้อมูลเข้า

x = float(input("Enter any value :> ")) #ใช้คำสั่ง float() ครอบคำสั่ง input() เพื่อแปลงค่าในขั้นตอนเดียว

เพียงเท่านี้ ก็สามารถนำข้อมูลที่รับเข้ามา ไป บวก ลบ คูณ หาร ได้อย่างถูกต้องแล้ว

การทดลองประจำบทเรียนที่ 10

1. ทดลองแก้ไขโปรแกรมของแมทธิว ให้ทำงานได้อย่างถูกต้อง ด้วยการทำ Data type casting

2. ทดลองการเปลี่ยนข้อมูลจาก Float เป็น Integer โดย นำ Source code ต่อไปนี้ไปรันใน Compiler และสังเกตผลลัพธ์

x = 8.95
x = int(x)
print(x)

– – – จบบทเรียนที่ 10 – – –


แบบฝึกหัดประจำบทเรียนที่ 10