3. ประเภทของตัวแปร และการแปลงประเภทตัวแปร
โดยปกติแล้ว การเขียนโปรแกรมเกือบทุกภาษา จะต้องกำหนดชนิดของตัวแปรก่อนเสมอ ซึ่งเรียกว่าการประกาศตัวแปร แต่ใน MATLAB นั้นผู้ใช้งานไม่จำเป็นต้องทำขั้นตอนนี้ โดยที่ MATLAB จะกำหนดชนิดของตัวแปรให้โดยอัตโนมัติ ตามประเภทของข้อมูลที่เราป้อนเข้าไป เช่น
>> A = 3;
ตัวแปร A จะมีชนิดเป็น double ทันที
>> B = ‘Hello’;
ตัวแปร B จะมีชนิดเป็น char ทันที
สรุปง่ายๆ คือ ถ้าหากเราป้อนตัวเลขเข้าไป ประเภทจะถูกกำหนดให้เป็น double โดยอัตโนมัติ และถ้าป้อนตัวอักษรเข้าไป ประเภทก็จะถูกกำหนดให้เป็น char โดยอัตโนมัติ เช่นกัน แต่ประเภทของตัวแปรไม่ได้มีแค่ 2 ประเภทนี้เท่านั้น ดังนั้นในบางครั้ง เราจึงจำเป็นต้องแปลงประเภทของตัวแปรเพื่อให้เหมาะกับงานด้วย ซึ่งก่อนที่เราจะไปพูดถึงเรื่องนั้น ผู้อ่านจำเป็นที่จะต้องมีความรู้เรื่อง Ascii code ซะก่อน ดังนั้นเราจะไปดูเรื่องนี้กัน
3.1 Ascii code
แอสกี้โค้ด (Ascii code) คือ มาตรฐานสากลที่ใช้เทียบข้อมูลตัวเลขเป็นตัวอักษร เพราะคอมพิวเตอร์ไม่รู้จักตัวอักษร ส่วนมนุษย์ก็ใช้ตัวอักษรมากกว่าตัวเลข ดังนั้นเพื่อให้ทั้งสองคุยกันได้รู้เรื่อง จึงจำเป็นต้องการมีการกำหนดค่าเปรียบเทียบขึ้นมา ดังรูปที่ 2 เช่นถ้าหากเราพิมพ์ตัวอักษร A เข้าไปในตัวแปร โปรแกรมก็จะเข้าใจว่าตัวแปรนั้นเก็บค่า 65 เอาไว้ แต่สิ่งที่จะทำให้ผู้คนสับสนมากที่สุดคือ เรามีตัวอักษรที่เป็นตัวเลขด้วย เช่น อักษรเลข 0-9 ดังนั้นในการกล่าวถึงตัวอักษร ต่อไปนี้ผมจะเขียน single codes คร่อมไว้เสมอ เช่น
>> A = ‘A’;
หมายความว่าเก็บตัวอักษร A ไว้ในตัวแปร A
>> B = ‘2’;
หมายความว่าเก็บตัวอักษรเลข 2 ไว้ในตัวแปร B
>> C = 2;
หมายความว่าเก็บเลข 2 ไว้ในตัวแปร C ดังนั้นตัวแปร B กับ C จึงมีค่าไม่เท่ากันนะครับ
3.2 การแปลงตัวเลขเป็นตัวอักษร และตัวอักษรเป็นตัวเลข โดยใช้มาตรฐาน Ascii
- การแปลงตัวเลขเป็นตัวอักษร
>> A = char(72)
- การแปลงตัวอักษรเป็นตัวเลข
>> B = double('K')
3.3 การแปลงแบบตรงตัว
- การแปลงตัวเลขเป็นตัวอักษรที่เป็นตัวเลข โดยใช้คำสั่ง num2str()จากตัวอย่างจะเห็นว่า A เก็บค่า 65 เอาไว้ ดังนั้น A จึงมีชนิดเป็น double แต่เราใช้คำสั่ง num2str() เพื่อแปลงค่า A เป็น char แล้วเก็บไว้ใน B ดังนั้น ถึงแม้ตัวแปร B จะแสดงผลลัพธ์ออกมาเป็น 65 เช่นกัน แต่นั้นไม่ใช่ตัวเลข 65 แต่เป็นตัวอักษร ‘65’ ซึ่งไม่ได้มีค่าเท่ากับ 65 ดังนั้นเมื่อเราใช้คำสั่ง whos B ก็จะเห็นว่าตัวแปร B เป็นชนิด char ไม่ใช่ double เหมือนตัวแปร A
- การแปลงจากตัวอักษรเป็นตัวเลข โดยใช้คำสั่ง str2double()
*โปรดจำไว้ว่า ตัวเลขทุกตัวนั้นสามารถแปลงเป็นตัวอักษรได้เสมอแต่ไม่ใช่ตัวอักษรทุกตัวจะแปลงเป็นตัวเลขได้ หากตัวอักษรนั้นแปลงเป็นตัวเลขไม่ได้ ผลลัพธ์ที่ได้จะเป็น NaN (Not a Number)
จบหัวข้อที่ 3