Saturday, March 27, 2010

9. Operator part3 (Assignment)

ตัวดำเนินการกำหนดค่า หรือ Asisgnment Operator

มีอยู่สองแบบด้วยกัน คือ แบบกำหนดค่าอย่างเดียว และ แบบทำอย่างอื่นก่อนแล้วค่อยกำหนดค่า

สำหรับแบบกำหนดค่าอย่างเดียวคือ เครื่องหมาย

=

ที่เรารู้จักกันมาแสนนานนั่นแหล่ะครับใช้กำหนดค่าทางซ้ายให้เป็นเหมือนค่าทางขวา

หรืออาจจะเขียนเป็นรูปแบบเท่ห์ได้ดังนี้ครับ

expression1 = expression2;

ความหมายคือ ให้ ค่า expression1 เป็นตัวแปร แล้วโยนค่าข้อมูลจาก expression2 ให้ expression1 เพื่อให้ expression1 เก็บไว้เป็นที่ระลึกหรือเอาไปใช้ต่อไปนั่นเอง

ตัวอย่าาง

เช่น

var a:Number=0;

var b:Number=55;

a = b;

trace(a);

จะผลลัพธ์การทำงานจะแสดงค่า a คือ 55 ออกมา

 

var a:Number=0;

var b:Number=32;

a = b*2;

trace(a);

คือ 32คูณ2 เป็น 64 แล้วเก็บใน a ผลลัพธ์คือ 64

ซึ่งจากตัวอย่างข้ืางบนจะเป็นว่า ด้านซ้ายของ เครื่องหมายเ่ท่ากับจะต้องเป็น ตัวแปรเท่านั้น

จะเป็นอะไรแบบนี้ไม่ได้ครับ

a+2 = 10
a+b = c
2+3 = a

เพราะปกติแล้วจะทำไม่ได ลองนึกดูน่ะครับ ActionScript โยนค่าจากทางขวาไปซ้าย เจอะสภาพแบบนี้แล้ว ก็นึกสภาพไม่ออกเหมือนกันมันจะไปแบ่งค่ากันยังไง

แต่อย่างไรก็ตามก็มีบางภาษาครับ ที่โยนจากซ้ายไปขวาได้ ก็ไม่ต้องไปใส่ใจเพราะไม่ใช่เรื่องของเรา

ย้ำ เครื่องหมาย = ไม่ใชการแก้สมการที่เรารู้จักในวิชาคณิตศาสตร์ ถ้าต้องการให้มันแก้เราจะต้องเขียนขั้นตอนวิธีการให้กับมันครับ

Tuesday, March 9, 2010

8. Operator part2 (Arithmetic)

Arithmetic Operator (ตัวดำเนินการที่เกี่ยวกับตัวเลข)


เครื่องหมายชื่อเรียกหน้าที่วิธีใช้
+
additionใช้บวกตัวเลขเอาตัวที่ต้องการบวกกันมาเชื่อมด้วยเครื่องหมายนี้ เช่น 3+4 (จะได้7)
-
subtractionใช้ลบเลขเอาตัวตั้งวางไว้หน้าเครื่องหมายนี้แล้วเอาตัวที่ต้องการลบออกวางไว้ข้างหลัง เช่น 55-2 (จะได้53)
*
multiplicationใช้คูณเลขเอาตัวที่ต้องการคูณกันมาเชื่อมด้วยเครื่องหมายนี้ เช่น 3*4 (จะได้12)
/
divisionใช้หารเลขเอาตัวตั้งวางไว้หน้าเครื่องหมายนี้แล้วเอาตัวที่ต้องการหารวางไว้ข้างหลัง เช่น 55/2 (จะได้27.5)
%
moduloใช้หารเอาเศษเอาตัวตั้งวางไว้หน้าเครื่องหมายนี้แล้วเอาตัวที่ต้องการหารวางไว้ข้างหลัง เช่น 55%2 (จะได้ 1)
++
incrementใช้เพิ่มค่าตัวแปรขึ้น1เอาตัวที่ต้องการเปลี่ยนแปลงค่าขึ้น1เชื่อมด้วยตัวนี้เช่น i++ หรือ ++i
--
decrementใช้ลดค่าตัวแปรขึ้น1เอาตัวที่ต้องการเปลี่ยนแปลงค่าลง1เชื่อมด้วยตัวนี้เช่น i-- หรือ --i

Note 1: i++ vs ++i ต่างกัน ดังนี้ครับ
1.1) i++ จะทำประโยคำสั่งนั้นก่อน ค่อยเพิ่มค่าขึ้น
เช่น
var i:uint=5;
trace(3*i++); //ผลลัพธ์คือ 15
1.2) ++i จะเพิ่มค่าขึ้นก่อนแล้วค่อยทำประโยคคำสั่งนั้นเช่น
var i:uint=5;
trace(3*++i); //ผลลัพธ์คือ 18
ส่วน i-- กับ --i ก็คล้ายกันครับ
Note 2: / vs % สองตัวเป็นตัวหารเหมือนกันแต่ / หารเอาผลลัพธ์ส่วน % หารเอาเศษ
เช่น
99/10 //ได้ 9.9
99%10 //ได้ 9
ตัวอย่างการใช้งาน / กับ %
45612
โดยใช้ arithmetic operator ให้คุณลองแยกหลักหน่วย หลักสิบ หลักร้อยออกมาครับ

เฉลย
หลักหน่วย หาได้โดย % ด้วย 10 คือ 45612%10 //จะได้ 2
หลักสิบ หาได้โดย / ด้วย 10 คือ 45612/10 จะได้ 4561.2 ตัดเศษทิ้งด้วย Math.floor(45612/10) จะได้ 4561 ทำการ % ด้วย 10 อีกทีก็จะได้ 1 ซึ่งก็คือหลักสิบนั่นเอง
สรุปเราจะได้คำสั่งสำหรับหาหลักสิบดังนี้
Math.floor(45612/10)%10 หรือ Math.floor(yourNumber/10)%10
ส่วนหลักร้อยก็คล้ายๆกันครับแต่ตอบ / ทีแรก / 100

บทนี้ได้กล่าวถึงตัวดำเนินการสำหรับกระทำกับตัวเลข แต่ว่ายังไม่ได้กล่าวถึงการเก็บข้อมูลเลย
จะพูดง่ายๆ คือ ดำเนินการเสร็จก็ยังไม่มีการเก็บข้อมูล ดังนั้นในบทต่อไปเราจะมาพูดถึงการเก็บข้อมูลในตัวแปรด้วยการกำหนดค่าด้วยเครื่องหมาย = หรือจะพูดเป็นภาษาอังกฤษว่า Assignment ติดตามตอนต่อไปน่ะครับ
:)

Followers