2007/Jul/04

ค่าต่างๆ และตัวแปร

หวังว่า หลังจากอ่านกันแล้วก็ได้ทดลองอะไรกันบ้างแล้วนะฮะ
เริ่มเอาคำสั่งต่างๆที่เรารู้จัก มาใช้ร่วมกันแล้วยัง?

วันนี้จะมานำเสนอ เรื่องเกี่ยวกับ ค่าต่างๆ และตัวแปร!

เริ่มมาจากค่าประเภท ตัวเลข ก่อน
ตัวเลข นั้นมีอยู่ 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

Comment

Comment:

Tweet


For some reason my browser doesn't display this page correctly... Anyway, it was a really interesting article, keep up the good work and I will be back for more
#12 by www.studio-six.com (103.7.57.18|122.168.61.204) At 2012-09-11 17:55,
Hi, good day. Wonderful post. You have gained a new subscriber. Pleasee continue this great work and I look forward to more of your great blog posts.
#11 by webryze.com (103.7.57.18|122.168.61.204) At 2012-09-11 17:51,
Wonderful article.I have bookmarked it already. Greets, Calanthe.
#10 by search engine marketing toronto (103.7.57.18|122.168.61.204) At 2012-09-11 17:43,
#9 by http://www.webryze.com (103.7.57.18|122.168.61.204) At 2012-09-11 17:35,
#8 by Volkswagen Air Conditioning Compressor Click Here (103.7.57.18|122.168.61.204) At 2012-09-11 11:49,
The biggest collaborative resource of information the globe has ever known satisfies the method with the planets maximum effect over the planets most entertaining method.
#7 by nuratrim (103.7.57.18|122.168.5.1) At 2012-08-23 20:26,
•สามารถ​ทำ​การแก้​ไข​ ​เปลี่ยนแปลง​ ​หรือ​เพิ่มโปรแกรม​ได้​ใน​ขณะที่กำ​ลังแสดงสด​อยู่​ได้​เลย​
#6 by Jeep Cherokee Power Steering Gearbox (122.168.56.248) At 2012-03-24 21:03,
ประเด็นของ การทำรูปเคารพ หรือพระเครื่อง คือ การที่คนคนหนึ่ง หรือคนกลุ่มหนึ่ง ได้ตั้งใจรวมตัวกันสร้าง \"งานศิลปะ\"
#5 by find cell number (122.175.156.246) At 2012-03-05 19:06,
ประเด็นของ การทำรูปเคารพ หรือพระเครื่อง คือ การที่คนคนหนึ่ง หรือคนกลุ่มหนึ่ง ได้ตั้งใจรวมตัวกันสร้าง "งานศิลปะ"
#4 by Pontiac Bonneville AC Compressor (122.168.19.198) At 2012-02-09 14:42,
http://www.okey-oyna.com

ลองวิเคราะห์ดูเล่นๆได้เลย ไม่ยากฮะ
กำหนด x เป็นจำนวนเต็ม ให้ค่าเป็น 3
เสร็จแล้วคำนวณ 2 คูณ x ลบด้วย 1 ก็คือ 2x3 - 1 = 6 - 1 = 5
#3 by Okey Oyna (78.171.240.61) At 2011-04-13 02:30,
แลลว่า งง มากเรยคับเพิ่งเคยเจอก็ ที่นี่แหละ..อยากรู้ว่าเข้าใช้กันแบบไหน อะ ??? ช่วยผมที
#2 by Sheep_Box@hotmail.com (125.24.108.144) At 2007-09-11 13:17,
อ่านแล้วซับซ้อนซ่อนเงื่นจริงๆเลยอ่ะนาย*
#1 by Space360 (58.10.234.116) At 2007-08-14 13:17,

กิจจาศักดิ์ ตริยานนท์
View full profile