ค่าต่างๆ และตัวแปร
หวังว่า หลังจากอ่านกันแล้วก็ได้ทดลองอะไรกันบ้างแล้วนะฮะ
เริ่มเอาคำสั่งต่างๆที่เรารู้จัก มาใช้ร่วมกันแล้วยัง?
วันนี้จะมานำเสนอ เรื่องเกี่ยวกับ ค่าต่างๆ และตัวแปร!
เริ่มมาจากค่าประเภท ตัวเลข ก่อน
ตัวเลข นั้นมีอยู่ 2 ประเภท คือ int และ float (ย่อมาจาก integer และ floating-point)
int ก็คือ ค่าประเภท จำนวนเต็ม (ไม่มีทศนิยม)
float ก็คือ ค่าประเภท มีจุดทศนิยม
เรามาลองทำอะไรแบบนี้กัน

เสร็จแล้วลองกด Add Shred ดูครับ มีผลออกมาทาง Console อย่างไรกันบ้าง?
ถ้าทำถูกต้อง ผลก็จะออกมาเป็น
0 :(int)
1 :(int)
อย่างที่เคยบอกว่าไป สัญลักษณ์ <<< >>> นี่ ถ้าพิมพ์สิ่งที่อยู่โดดๆ แบบเช่นข้างบน
มันจะแสดง ชนิด ของค่านั้นๆออกมาด้วย
อาจจะแปลกใจว่า แล้วเอา <<< x >>>; กับ <<< y >>>; ยัดไว้บรรทัดเดียวกันได้เรอะ
โอ้ได้แน่นอน การจบประโยคของภาษาตระกูลนี้ จะจบด้วย ; เสมอ
ไม่ว่าเราจะเขียนยืดยาวหลายบรรทัดขนาดไหน
หรือสั้นขนาดไหน จบด้วย ; ก็คือการจบประโยคหนึ่งๆสมบูรณ์
เรามาดูความหมายของประโยคข้างบนกัน
int x;
แต่ก่อนเราเคยทำแบบนี้แล้ว คือ SinOsc s
อย่าง SinOsc s มันแปลว่า สร้าง Sinewave Oscillator ขึ้นมาหนึ่งตัว ชื่อ s
ส่วน int x ก็แปลว่า สร้าง จำนวนเต็ม ขึ้นมาหนึ่งตัว ชื่อว่า x
อย่างนี้นี่เอง
คราวนี้ เราลองสร้างตัวแปรอีกตัว แต่ดันเอาตัวเลข ไป ชักใส่ซะงั้น
เอา 1 ไปชักใส่ กลายเป็น
1 => int y;
ความหมายก็คือ สร้างจำนวนเต็มขึ้นมาหนึ่งตัว ให้ชื่อว่า y
แล้วกำหนดค่าเป็น 1
ทำให้เวลาพิมพ์ออกแล้ว เห็นค่า x, y เป็น 0, 1 ตามลำดับ
- - -
ต่อไป ลองทดลองกับข้อมูลชนิด float บ้าง
float x;
0.1 => float y;
<<< x >>>;
<<< y >>>;
ได้ผลอย่างไรกัน? มาดูผลที่ผมได้
0.000000 :(float)
0.100000 :(float)
ค่า x กับ y ที่เรากำลังใช้งานอยู่นี่ เราเรียกว่า ตัวแปร (variables)
ตัวแปรก็เหมือนสิ่งที่เอาไว้เก็บค่า และสามารถเปลี่ยนค่าไปเรื่อยๆได้ (มันแปรเปลี่ยนไปได้)
เรามาลองทำการคำนวณ และมีการ เปลี่ยนค่าของ x กัน
3 => int x;
<<< "x = ", x >>>;
2 * x - 1 => int y;
<<< "y = ", y >>>;
2 * y => x;
<<< "x = ", x >>>;
ได้ผลออกมาเป็น
x = 3
y = 5
x = 10
ลองวิเคราะห์ดูเล่นๆได้เลย ไม่ยากฮะ
กำหนด x เป็นจำนวนเต็ม ให้ค่าเป็น 3
เสร็จแล้วคำนวณ 2 คูณ x ลบด้วย 1 ก็คือ 2x3 - 1 = 6 - 1 = 5
ก็เอาค่านี้ ชักเข้าไปใส่ y ซึ่งเพิ่งถูกสร้างขึ้นมาเป็นจำนวนเต็มพอดี
หลังจากนั้น เอาค่า 2 คูณ y ไปชักใส่ x
พอพิมพ์ x อีกที จะเห็นว่า x ได้เปลี่ยนไปแล้ว ไม่ใช่ 3 อย่างเดิมแล้ว
จะมีค่าใหม่ คือ 10
- - -
สรุปเครื่องหมายบวกลบคูณหารให้:
+ บวก
- ลบ
* คูณ
/ หาร
% หาเศษจากการหาร (หรือเรียกว่า โมดูโล - modulo)
เพื่อทำการทดสอบ ลองค่าเหล่านี้ได้
<<< 7 + 3 >>>;
<<< 7 - 3 >>>;
<<< 7 * 3 >>>;
<<< 7 / 3 >>>;
<<< 7 % 3 >>>;
- - -
การเปลี่ยนจาก int เป็น float และ float เป็น int
แต่ถ้าเราต้องการจะต้องเก็บมันลงไปในตัวแปรชนิด int จริงๆ
หรือต้องเอาไปใช้งานในลักษณะเป็นจำนวนเต็มแท้ๆ
สามารถบังคับให้ผลลัพท์ออกมาเป็น int ได้
ด้วยการทำ casting
เราสามารถ cast ชนิดของข้อมูลได้ด้วยเครื่องหมาย $
เช่น
เป็นอย่างไรบ้างครับ
อันนี้ก็เป็นการเริ่มต้นเกี่ยวกับข้อมูลชนิดที่เป็นตัวเลขกัน
วันนี้ พอแค่นี้ก่อนเน้อ ไปนอนล่ะ อิอิ
- kij
หวังว่า หลังจากอ่านกันแล้วก็ได้ทดลองอะไรกันบ้างแล้วนะฮะ
เริ่มเอาคำสั่งต่างๆที่เรารู้จัก มาใช้ร่วมกันแล้วยัง?
วันนี้จะมานำเสนอ เรื่องเกี่ยวกับ ค่าต่างๆ และตัวแปร!
เริ่มมาจากค่าประเภท ตัวเลข ก่อน
ตัวเลข นั้นมีอยู่ 2 ประเภท คือ int และ float (ย่อมาจาก integer และ floating-point)
int ก็คือ ค่าประเภท จำนวนเต็ม (ไม่มีทศนิยม)
float ก็คือ ค่าประเภท มีจุดทศนิยม
เรามาลองทำอะไรแบบนี้กัน

เสร็จแล้วลองกด Add Shred ดูครับ มีผลออกมาทาง Console อย่างไรกันบ้าง?
ถ้าทำถูกต้อง ผลก็จะออกมาเป็น
0 :(int)
1 :(int)
อย่างที่เคยบอกว่าไป สัญลักษณ์ <<< >>> นี่ ถ้าพิมพ์สิ่งที่อยู่โดดๆ แบบเช่นข้างบน
มันจะแสดง ชนิด ของค่านั้นๆออกมาด้วย
อาจจะแปลกใจว่า แล้วเอา <<< x >>>; กับ <<< y >>>; ยัดไว้บรรทัดเดียวกันได้เรอะ
โอ้ได้แน่นอน การจบประโยคของภาษาตระกูลนี้ จะจบด้วย ; เสมอ
ไม่ว่าเราจะเขียนยืดยาวหลายบรรทัดขนาดไหน
หรือสั้นขนาดไหน จบด้วย ; ก็คือการจบประโยคหนึ่งๆสมบูรณ์
เรามาดูความหมายของประโยคข้างบนกัน
int x;
แต่ก่อนเราเคยทำแบบนี้แล้ว คือ SinOsc s
อย่าง SinOsc s มันแปลว่า สร้าง Sinewave Oscillator ขึ้นมาหนึ่งตัว ชื่อ s
ส่วน int x ก็แปลว่า สร้าง จำนวนเต็ม ขึ้นมาหนึ่งตัว ชื่อว่า x
อย่างนี้นี่เอง
คราวนี้ เราลองสร้างตัวแปรอีกตัว แต่ดันเอาตัวเลข ไป ชักใส่ซะงั้น
เอา 1 ไปชักใส่ กลายเป็น
1 => int y;
ความหมายก็คือ สร้างจำนวนเต็มขึ้นมาหนึ่งตัว ให้ชื่อว่า y
แล้วกำหนดค่าเป็น 1
ทำให้เวลาพิมพ์ออกแล้ว เห็นค่า x, y เป็น 0, 1 ตามลำดับ
- - -
ต่อไป ลองทดลองกับข้อมูลชนิด float บ้าง
float x;
0.1 => float y;
<<< x >>>;
<<< y >>>;
ได้ผลอย่างไรกัน? มาดูผลที่ผมได้
0.000000 :(float)
0.100000 :(float)
ค่า x กับ y ที่เรากำลังใช้งานอยู่นี่ เราเรียกว่า ตัวแปร (variables)
ตัวแปรก็เหมือนสิ่งที่เอาไว้เก็บค่า และสามารถเปลี่ยนค่าไปเรื่อยๆได้ (มันแปรเปลี่ยนไปได้)
เรามาลองทำการคำนวณ และมีการ เปลี่ยนค่าของ x กัน
3 => int x;
<<< "x = ", x >>>;
2 * x - 1 => int y;
<<< "y = ", y >>>;
2 * y => x;
<<< "x = ", x >>>;
ได้ผลออกมาเป็น
x = 3
y = 5
x = 10
ลองวิเคราะห์ดูเล่นๆได้เลย ไม่ยากฮะ
กำหนด x เป็นจำนวนเต็ม ให้ค่าเป็น 3
เสร็จแล้วคำนวณ 2 คูณ x ลบด้วย 1 ก็คือ 2x3 - 1 = 6 - 1 = 5
ก็เอาค่านี้ ชักเข้าไปใส่ y ซึ่งเพิ่งถูกสร้างขึ้นมาเป็นจำนวนเต็มพอดี
หลังจากนั้น เอาค่า 2 คูณ y ไปชักใส่ x
พอพิมพ์ x อีกที จะเห็นว่า x ได้เปลี่ยนไปแล้ว ไม่ใช่ 3 อย่างเดิมแล้ว
จะมีค่าใหม่ คือ 10
- - -
สรุปเครื่องหมายบวกลบคูณหารให้:
+ บวก
- ลบ
* คูณ
/ หาร
% หาเศษจากการหาร (หรือเรียกว่า โมดูโล - modulo)
เพื่อทำการทดสอบ ลองค่าเหล่านี้ได้
<<< 7 + 3 >>>;
<<< 7 - 3 >>>;
<<< 7 * 3 >>>;
<<< 7 / 3 >>>;
<<< 7 % 3 >>>;
- - -
การเปลี่ยนจาก int เป็น float และ float เป็น int
ปกติ ตัวแปรชนิด int ก็จะเก็บค่าที่เป็นจำนวนเต็มแบบเดียว พวกทศนิยมจะถูกตัดทิ้ง
มาครับ ทำให้ดู:
| โค้ดลงไปดังนี้ | ได้ผลออกมาดังนี้ |
| 1 => int x; <<< x >>>; x + 2 => x; <<< x >>>; | 1 :(int) 3 :(int) |
| 1 => int x; <<< x >>>; <<< x + 1.6 >>>; | 1 :(int) 2.600000 :(float) |
| 1 => int x; x + 1.6 => x; | เกิดปัญหา error ขึ้น โปรแกรมไม่อนุญาตให้สั่งทำงาน เนื่องจาก cannot resolve operator '=>' on types 'float' and 'int'... แปลว่า ไม่อนุญาตให้เอาค่า float ไปเก็บในตัวแปร int! ดังนั้นถ้าเก็บใส่ตัวแปรชนิด float แทน ก็จะไม่มีปัญหา |
| 1 => int x1; x1 + 1.6 => float x2; <<< x1, x2 >>>; | 1 2.600000 |
แต่ถ้าเราต้องการจะต้องเก็บมันลงไปในตัวแปรชนิด int จริงๆ
หรือต้องเอาไปใช้งานในลักษณะเป็นจำนวนเต็มแท้ๆ
สามารถบังคับให้ผลลัพท์ออกมาเป็น int ได้
ด้วยการทำ casting
เราสามารถ cast ชนิดของข้อมูลได้ด้วยเครื่องหมาย $
เช่น
| โค้ดลงไปดังนี้ | ได้ผลออกมาดังนี้ |
| <<< 1 $ float >>>; | 1.000000 :(float) ก็เป็นการ cast จากค่าชนิด int ไปเป็นค่าชนิด float |
| <<< 1.1 $ int >>>; <<< 0.1 $ int >>>; <<< -0.9 $ int >>>; | 1 :(int) 0 :(int) 0 :(int) เป็นการ cast จากค่าชนิด float ไปเป็นค่าชนิด int สังเกตได้ว่า "ทศนิยมถูกตัดออก" แหละแต่จำนวนเต็มข้างหน้า แบบนี้ เราก็เก็บค่าที่คำนวณ เข้าไปในตัวแปร int ได้แล้ว |
| 1 => int x; (x + 3.2) $ int => x; <<< x >>>; | 4 :(int) |
เป็นอย่างไรบ้างครับ
อันนี้ก็เป็นการเริ่มต้นเกี่ยวกับข้อมูลชนิดที่เป็นตัวเลขกัน
วันนี้ พอแค่นี้ก่อนเน้อ ไปนอนล่ะ อิอิ
- kij