2006/Dec/01

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

เส้นรอบวง จากสูตร

2*pi*r;

โดยกำหนดให้ pi มีค่าคงที่ เป็น 22/7
และ r มีค่าเป็นรัศมี เท่าไรก็ได้

r = user input;
pi = 22/7;

ans = 2*pi*r

trace(ans);


เนื่องจากเราได้โปรแกรม จาก ^-FakE-^ แล้ว

ดูนี่:
r = user input;
pi = 22/7;

ans = 2*pi*r

trace(ans);

สองสิ่งที่เราจะแทนที่เพื่อให้โปรแกรมของเราสมบูรณ์นั้น คือ
1. บรรทัดที่ 1 รับค่าจาก ผู้ใช้ยังไง
2.บรรทัดสุดท้าย แสดงผล ans ออกมายังไง


เราต้องมารู้พื้นฐานก่อนว่า เราจะใช้อะไร สิ่งที่รับ และ แสดงค่า นั้น เราจะใช้ text field จากเครื่องมือใน tools โดยที่ text Field จะมีอยู่ 3 รูปแบบ

1.static text
2.dynamic text
3.input text

ตามรูป


โดยที่ ทั้ง 3 อย่าง จะมีคุณผมบัติแตกต่างกันเหมาะแก่การทำงาน ต่างกัน

1. Static Text ไว้สำหรับ ข้อความตัวหนังสือ ธรรมดา ที่ไม่ข้องเกี่ยวกับ สคริป
2.Dynamic Text ไว้สำหรับแสดงผล ตัวหนังสือ ที่สามารถเปลี่ยนแปลงได้ เช่น แต้มของเกม หรือผลลัพ คำตอบ จากการคำนวนของเรา
3.input Text ไว้สำหรับ รับค่าจากผู้ใช้ เปรียบได้กับช่อง input ของ HTML นั่นเอง

โดยที่ Dynamic text และ inputText จะมีข้อเหมือนและแตกต่างกัน นิดหน่อย
1.dynamic และ input สามารถเปลี่ยนแปลงข้อความได้จากสคริปเหมือนกัน เช่นสั่งให้แสดงผลคำว่า i love you

2.dynamic และ input ปรับเป็น multi line หรือว่า แสดงผลหลายบรรทัดได้ เหมือนกัน โดยเปลี่ยนที่ เครื่องมือตามภาพ ที่มันมีช่องเขียนว่า single line เราก็เปลี่ยนเป็น Multi line หรือว่าสำหรับ input text ก็เปลี่ยนเป็น password ได้ ถ้าเราต้องการให้ช่องนั้น แสดงผลตัวที่พิมพ์ลงไปเป็น * ดอกจันทร์แทน

3. dynamic text ไม่สามารถให้ผู้ใช้ พิมพ์เปลี่ยนแปลงได้ แต่ input ผู้ใช้พิมพ์เปลี่ยนแปลงได้



1. สร้าง inputText ข้างบน ตั้งชื่อ instance name ว่า input ตรงลูกศรชี้

และปรับค่า ตามที่ วงแดงๆไว้ จะมี 3 ปุ่มเรียงกันอยู่ ตัวแรกจะเป็นตัวเลือกว่า text นี้จะใช้เมาส์ลากแถบดำได้หรือไม่ ตรงกลางจะเลือกว่าให้ text ตัวนี้ แสดงผลโค้ด HTML ได้หรือไม่
ตัวเลือกตัวสุดท้ายคือ เลือกให้ text มีกรอบ หรือไม่

2. สร้าง dynamic text ด้านล้าง เอาไว้แสดงคำตอบ โดยไม่ต้องใส่กรอบ แล้วตั้งชื่อ instance Name ว่า output


3. ใส่สคริปที่ปุ่ม ดังต่อไปนี้


แอบอ้าง
on(release){

r = Number( input.text );

pi = 22/7;

ans = 2*pi*r

output.text = ans ;

}



แล้วแสดงผลดู



อธิบายคำตอบที่สงสัยกัน

เนื่องมาจาก ชนิดของข้อมูล
ตัวเลข + ตัวเลข จะเท่ากับผลรวม
ตัวเลข + ตัวหนังสือ จะเท่ากับ ตัวเลขมาต่อกัับตัวหนังสือ
ตัวหนังสือ+ตัวหนังสือ จะเท่ากับ ตัวหนังสือมาต่อกัน

**เนื่องจากข้อมูลที่รับเข้ามาจาก text นั้น จัดเป็นข้อมูลประเภท String ดังนั้น เมื่อนำมาคำนวน จึงผิดพลาด แทนที่จะได้ ค่าคำนวน กลับเป็นค่าเอามาต่อกัน
**เนื่องจากเครื่องหมาย + สามารถแปลความหมายได้ถึงการ นำ สตริง มาต่อกัน จึงมาต่อกัน แต่ถ้าเป็นเครื่องหมายอื่น เช่น คูณ หาร ลบ หากนำ สตริง มาคูณกัน หรือ หารกัน จะได้ผลออกมาว่า NaN
ซึ่งน้องแนน จะย่อมาจาก Not a Number หรือ ไม่ใช่ผู้ชายยย ม่ายช่ายผู้ชายย (น้องแนนไม่ใช่ผู้ชาย)
เหวอ ไม่ใช่ตัวเลขครับท่าน


ดังนั้น เราจะต้องแปลงชนิดของข้อมูล

ที่มีคนตอบว่า int( ) ครอบไว้ ก็ถูกต้อง เพราะคำสั่งนี้จะแปลงค่าออกมา เป็น integer หรือเลขจำนวนเต็ม

แต่ว่า มันจะผิดพลาดได้ ถ้าเรากรอกเป็นเลขทศนิยม ใช้ int ครอบ มันจะตัดทศนิยมของเราทิ้ง เพราะมันจะทำเป็นเลขจำนวนเต็ม

วิธีที่ดี คือใช้ Number ครอบ ถึงจะแปลงเป็นตัวเลข


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

String(สิ่งที่ต้องการแปลง )

ครอบไว้อีกทีครับท่าน


edit @ 2006/12/01 11:15:10
edit @ 2006/12/01 11:19:03
edit @ 2006/12/05 10:10:53
ชื่อ: 
เว็บไซต์: 
คอมเมนต์:




smilebig smileopen-mounthed smileconfused smilesad smileangry smiletonguequestionembarrassedsurprised smilewinkdouble winkcry
อ่อ น่าจะมาอ่านตรงนี้ก่อน

แหะๆๆๆ
#1  by  tifa_redeye At 2007-05-21 12:24, 
คุน
คือ
ใคร
จากเด็ก*-------------------------*
#2  by   (58.10.96.186) At 2008-07-25 13:35, 

<< Home