วันอาทิตย์ที่ 16 พฤศจิกายน พ.ศ. 2551

if else !!


If else

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

Console.Write("Please input number : ");
string s = Console.ReadLine();
int x = Int32.Parse(s);
if(x <>
 x = -x; 
Console.WriteLine("Non-negative number of your input is {0}", x); 

นั่นคือส่วนของโปรแกรมง่าย ๆ ซึ่งจะรับค่าตัวเลขมาหนึ่งตัว(อย่าลืมนะครับว่า Console.ReadLine() รับค่าเข้ามาเป็น string เสมอ เราจึงต้องใช้ Int32.Parse() ในการแปลงมาเป็นตัวเลข) แล้วตรวจสอบว่าถ้าเป็นค่าติดลบ เราจะทำให้เป็นค่าบวกก่อน สังเกตนะครับ ในภาษานี้ไม่เหมือนภาษาอื่นตรงที่ไม่มีคำว่า then หลัง condition เพราะว่าตรง condition นั้นมี '(' และ ')' ครอบอยู่(ต้องใส่ทุกครั้งนะครับ) ')' โดยวงเล็บปิดจะเป็นตัวบอกว่าจบ condition แล้ว และเริ่ม statement ที่จะต้องทำงานเมื่อถูกเงื่อนไข และถ้าเราต้องการให้มีการ execute statement หลาย ๆ statement ในเงื่อนไขเดียว เราต้องใช้เครื่องหมาย '{' และ '}' (วงเล็บปีกกา) ครอบกลุ่มคำสั่งเหล่านั้นไว้ เช่น

if( ) 
// statement_1 
// statement_2 
// ... 
// statement_n 

ถึงแม้ว่า statement หลัง if จะมีแค่ statement เดียว เราก็ควรจะใส่วงเล็บปีกกาครอบไว้เสมอ เพื่อความเป็นระเบียบ ลองมาดูอีกแบบกันดีกว่า
 
DateTime dtToday = DateTime.Today; 
DayOfWeek thisDay = dtToday.DayOfWeek; 
if((thisDay == DayOfWeek.Sunday) || (thisDay == DayOfWeek.Saturday)) 
Console.WriteLine("Today is weekend"); 
} else 
Console.WriteLine("Today is weekday"); 
ง่าย ๆ นะครับ คล้าย ๆ กับ else ของภาษาอื่น Nested if คือ if else if else if แบบต่อเนื่องกันนั่นแหละครับ 

Console.Write("Please input number : "); 
string s = Console.ReadLine(); 
int x = Int32.Parse(s); if(x <>
Console.WriteLine("{0} is negative number", x); 
else if(x > 0) 
{
Console.WriteLine("{0} is positive number", x);
} else {
Console.WriteLine("{0} is zero", x);
}


Dangling else
ภาษาหลาย ๆ ภาษาที่ไม่มีคำสั่ง end if (หรือ endif) มักจะเกิดปัญหาการตีความ ประโยคประมาณนี้

if(cond1) 
if(cond2) 
stmt1; 
else 
stmt2;

ถ้าอ่านแล้วจะตีความได้สองแบบ

แบบที่ 1
if(cond1)
if(cond2)
stmt1;
else
stmt2;

หรือ แบบที่ 2
if(cond1)
if(cond2)
stmt1;
else
stmt2;

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

รักแท้ยังแพ้ความใกล้ชิด : else แท้ ๆ ก็รัก if ตัวที่อยู่ใกล้ที่สุด


เพราะฉะนั้นแบบที่สอง ถ.

ถ.
ถ.
ถ.
ถ. ถูกต้องนะค้าบ


ป.ล. บทความนี้ผมไม่ได้คิดเองนะครับ....
Credit: http://tidno1.exteen.com/

วันอังคารที่ 11 พฤศจิกายน พ.ศ. 2551

ลุงแจวเรือจ้าง....กับหนุ่มนักเรียนนอก

วันนี้พักเรื่องหนักๆมาอ่าน FW กันดีกว่านะครับ ( จริงๆแล้วขี้เกียจเขียนแหละครับ.. ) ลองเอาไปอ่านกันดูนะครับผมว่ามันได้คิดอะไรเยอะนะเนี่ย

ลุงแจวเรือจ้าง...กับหนุ่มนักเรียนนอก
เด็กหนุ่มคนหนึ่ง...เป็นชาวสงขลา...
เรียนเก่งมาก...
ได้ทุนไปเรียนอเมริกา...ตั้งแต่เด็ก...จนจบด็อกเตอร์...
จึงกลับมาเยี่ยมบ้าน...
บ้านของเด็กหนุ่ม...
อยู่อีกฟากหนึ่ง...ของทะเลสาบสงขลา...
ต้องนั่งเรือแจว...ข้ามไป...ใช้เวลาแจวประมาณหนึ่งชั่วโมง...
เรือที่ติดเครื่องยนต์...ไม่มีเหรอ...ลุง...?
ไม่มีหรอกหลาน...ที่นี่มันบ้านนอก...
มันห่างไกลความเจริญ...มีแต่เรือแจว...
โอ...ล้าสมัยมากเลยนะลุง...โบราณมาก...
ที่อเมริกา....เขาใช้เครื่องบินกันแล้วลุง...ลุงยังมานั่งแจวเรืออยู่อีก...
ไปส่งผมฝั่งโน้น...เอาเท่าไร...ลุง...?
80 บาท...
OK...ไปเลยลุง...
ในขณะที่ลุงแจวเรือ...
หนุ่มนักเรียนนอก...ก็เล่าเรื่องความทันสมัย...
ความก้าวหน้า...ความศิวิไลช์...ของอเมริกาให้ลุงฟัง...
เมืองไทย...เมื่อเทียบกับอเมริกาแล้ว...ล้าสมัยมาก...
ไม่รู้คนไทย...อยู่กันได้ยังไง...?
ทำไมไม่พัฒนา...ทำไมไม่ทำตามเขา...เลียนแบบเขาให้ทัน...?
ลุง...ลุงใช้คอมพิวเตอร์...ใช้อินเตอร์เน็ต...เป็นไหม...?
ลุงไม่รู้หรอก...ใช้ไม่เป็น...
โอโฮ้...ลุงไม่รู้เรื่องนี้น่ะ....ชีวิตลุงหายไปแล้ว...25 %....
แล้วลุงรู้ไหมว่า...เศรษฐกิจของโลก...ตอนนี้เป็นยังไง...?
ลุงไม่รู้หรอก...
ลุงไม่รู้เรื่องนี้นะ...ชีวิตของลุงหายไป...50 %
ลุง...ลุงรู้เรื่องนโยบายการค้าโลกไหม...ลุง...?
ลุง...ลุงรู้เรื่องดาวเทียมไหม...ลุง...?
ลุงไม่รู้หรอก...หลานเอ๊ย...
ชีวิตของลุง...ลุงรู้อยู่อย่างเดียว...
ว่าจะทำยังไง...ถึงจะแจวเรือให้ถึงฝั่งโน้น...
ถ้าลุงไม่รู้เรื่องนี้...ชีวิตของลุง...หายไปแล้ว...75 %
พอดีช่วงนั้น...
เกิดลมพายุพัดมาอย่างแรง...คลื่นลูกใหญ่มาก...ท้องฟ้ามืดครึ้ม...
นี่พ่อหนุ่ม...เรียนหนังสือมาเยอะ...จบดอกเตอร์จากต่างประเทศ...
ลุงอยากถามอะไรสักหน่อยได้ไหม...?
ได้...จะถามอะไรหรือลุง...?
เอ็งว่ายน้ำเป็นไหม...?
ไม่เป็นจ๊ะ...ลุง....
ชีวิตของเอ็ง...กำลังจะหายไป 100 % ...แล้วพ่อหนุ่ม...

อ่านแล้วเป็นไงบ้างครับ คิดเหมือนผมรึเปล่า คิดยังไงก้บอกกันบ้างนะครับ

วันจันทร์ที่ 10 พฤศจิกายน พ.ศ. 2551

มาหาจำนวนเฉพาะกันดีกว่า

หลังจากที่แล้วๆมาผมเขียนแต่บทความที่อ่านง่าย (ความรู้ผมมันมีแค่นั้นครับ) วันนี้ผมเลยไปเอาบทความ chaowman มาฝากกันครับ เผื่อคนที่เข้ามาจะเบื่อบทความของผมลองอ่านกันดูนะครับ

http://www.bloggang.com/viewblog.php?id=chaowman&date=18-07-2008&group=1&gblog=5

เป็นบทความที่เกี่ยวกับการเขียนโทย์แก้ปัญหาตัวประกอบที่เป็นจำนวนเฉพาะครับ...ลองอ่านกันดูนะครับ
If Statement

if เป็นคำสั่งที่จะให้ทำงานที่มีการตัดสินใจนะครับ... โดยจะมีรูปแบบในการเขียนเป็นแบบนี้นะครับ
if ( condition )
statement ;
โดยนี่เป็นการเขียน if กับ คำสั่งเพียงคำสั่งเดียว แล้วถ้าเราจะใช้หลายๆคำสั่ง(statements) จะทำได้โดยนำ { และ } มาครอบคำสั่งหลัง if ไว้
if ( condition )
{
statement1;
statement2;
....
statements;
}
โดยนี่เป็นหลักการใช้ if ง่ายๆครับ เรามาดูโค้ดตัวอย่างกันดีกว่านะครับ
// โปรแกรมตัดเกรดอย่างง่ายโดยการใช้ if อย่างเดียว ( ครั้งหน้าเราจะมาว่ากันเรื่อง if else )
โหลดได้ที่นี่นะครับ >>>http://th.moneyupload.com/75098_20081110081800_grade.cs.rar.html
แค่นี้เราก้จะได้โปรแกรมคำนวณเกรดแบบง่ายๆมาหนึ่งโปรแกรมแล้วครับ
ยังไงก้ลองไปหัดใช้ if กันมาละครับใครว่างก็ลองทำโปรแกรม ATM ดูนะครับ
คราวหน้าเรามาต่อบทความกับ If else นะครับ

c# ของผม

ผมก้นังไม่รู้จะเขียนอะไรเหมือนเดิม....

เลยไปคุ้ยชีท c# ที่ใช้เรียนมา ลองเอาไปอ่านกันเล่นๆนะครับ

Sheet 01 >> http://th.moneyupload.com/75085_20081110075027_sheet01.rar.html
Sheet 02 >> http://th.moneyupload.com/75086_20081110075137_sheet02.rar.html
Sheet 03 >> http://th.moneyupload.com/75087_20081110075154_sheet03.rar.html
Sheet 04 >> http://th.moneyupload.com/75088_20081110075206_sheet04.rar.html
Sheet 05 >> http://th.moneyupload.com/75089_20081110075217_sheet05.rar.html
Sheet 06 >> http://th.moneyupload.com/75090_20081110075233_sheet06.rar.html
Sheet 07 >> http://th.moneyupload.com/75091_20081110075246_sheet07.rar.html
Sheet 08 >> http://th.moneyupload.com/75092_20081110075300_08_CharStringStructEnumTryCatch.rar.html

ถ้าใครอ่านแล้วงงไม่ต้องแปลกใจครับ เด๋วผมจะมาขยายความให้ฟังเพิ่มทีละชีทเอง
ส่วนใครที่อ่านแล้วเข้าใจ ก้แปลว่าเก่งแล้วละครับ ยังไงก็ช่วยติชมผมด้วยนะครับ
ตอนนี้ยังไม่รู้จะเขียนอะไรดียังไงก้เอา e-book ไปอ่านกันพลางๆก่อนนะครับ

อันนี้เป็น Bacis c# นะครับ Click Here!!!

ส่วนอันนี้เป็น Advance c# ครับ Click Here!!!


วันนี้ก้มีแค่นี้ก่อนละกันนะครัย

ไว้คิดไรได้เมื่อไหร่จะมาเขียน

ป.ล. ใครหลงเข้ามา ก็ช่วยติชมด้วยนะครับ

วันเสาร์ที่ 8 พฤศจิกายน พ.ศ. 2551

พวงมาลัยกับข้าวต้มมัด อ่านแล้วน่ารักดี

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

คนที่เอาพวงมาลัยมาวางให้ฉันทุกเช้าเป็นวิศวกรในแผนกวางแผน ฉันไม่ 
รู้จักเขามากนัก แต่เพื่อนๆในแผนกฉันพูดถึงเขาว่าเป็นคนไม่ค่อยเต็ม ออก 
จะขวางโลกนิดๆ ฐานะทางบ้านจัดว่าดีทีเดียว แต่ตัวเองงกชะมัด เดิมเขาขับ 
สปอร์ตคันหรูมาทำงาน ทำเอาสาวๆในบริษัทเก็บเอาไปฝันอยากเป็นตุ๊กตา 
หน้ารถของเขากันหลายคน แต่อยู่ดีๆเขากลับนั่งรถเมล์มาทำงานเสียเฉยๆ 
ทำให้สาวๆเหล่านั้นค่อยถอนตัวไปทีละคนสองคนจนไม่เหลือใคร 

ถึงฉันจะเป็นพนักงานบัญชีและเห็นด้วยกับมาตรการประหยัดของเขาแต่ 
แค่ดอกกุหลาบสักดอกคงไม่ได้แพงไปกว่าพวงมาลัยสักเท่าไรละมัง 

วันนี้ฉันมาทำงานเช้ากว่าปกติซึ่งทางหัวหน้าของฉันขอร้องมาสำหรับเช้า 
วันจันทร์ เพื่อมารับรายงานจากฝ่ายต่างๆและเตรียมรายงานให้เสร็จก่อน 
เก้าโมง เช้า ทำเอาฉันต้องรองท้องด้วยกาแฟเพียงแก้วเดียวสำหรับมื้อเช้า 
มื้อที่สำคัญที่สุดของวัน แต่ก็ทำให้ฉันได้มีโอกาสเจอวิศวกรคนนั้น คนที่ 
เอาพวงมาลัยมาวางที่โต๊ะฉันทุกเช้า 

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

'ขอบคุณค่ะ หอมจัง' ฉันบอกเขาไป 

'คุณชอบมันจริงๆเหรอ' เขาถามกลับ 

ฉันยิ้มให้ เขาควรจะไปตีความเอาเอง ว่าผู้หญิงหน้าตาน่ารักอย่างฉันเหมาะ 
กับพวงมาลัยไหม 

'ดีใจที่คุณชอบ' 

อ้าว ... นี่เขาเป็นวิศวกรจริงๆหรือเปล่านะ ไม่ฉลาดเอาเสียเลย 

'ทำไมวันนี้มาแต่เช้าล่ะครับ' เขาชวนคุย 

'พอดี พี่วรรณขอให้มาก่อนเวลาในทุกวันจันทร์น่ะค่ะ' ฉันตอบ 

'ถ้างั้นคุณคงไม่มีเวลาทานข้าวเช้า' 

ฉันยกแก้วกาแฟให้เขาดูแทนคำตอบ เขาทำสีหน้าครุ่นคิด นี่คงไม่ได้ 
กำลังคิดหรอกนะว่าฉันจะได้พลังงานจากกาแฟแก้วนี้กี่แคลอรี่ และเพียง 
พอกับการทำงานของฉันในช่วงเช้าหร ือเปล่า 

'แล้วทำไมมาเช้าจังล่ะคะ' ฉันถามเขา 

'ผมต้องต่อรถเมล์ มาน่ะครับ ถ้ามาสายรถจะติด' 

'แล้วรถคันเดิมไปไหนแล้วคะ' 

'ผมจอดไว้ที่หอพักเพื่อนแล้วขึ้นรถเมล์มาครับ สะดวกกว่า และได้ทำธุระ 
ด้วย' เขาบอก 

ธุระอะไรของเขานะ ที่ต้องทำแต่เช้าเชียว หรือจะใส่บาตร แต่ฉันก็ไม่ได้ 
ถามเขาไปหรอก 

'หอพักเพื่อนคุณ อยู่ใกล้เหรอคะ' ฉันถามเขาเพราะอยากหาที่พักใกล้ที่ทำ 
งานมากขึ้น สนองนโยบายรัฐ 

'ต่อรถเมล์มานี่ก็สองต่อเองครับใช้เวลาประมาณยี่สิบนาที' 

'พอมีเบอร์ติดต่อไหมคะ' 

'ผมพาไปได้ ถ้าคุณสนใจ' เขาบอก 

'ค่ะ' ฉันตอบ ก่อนที่เขาจะขอตัวกลับไปทำงาน 

................................................................................ 

จากนั้นในทุกวันจันทร์ บนโต๊ะของฉันนอกจากจะมีพวงมาลัยดอกมะลิแล้ว 
ยังมีข้าวต้มมัดเพิ่มมาด้วยอีกหนึ่งอย่าง ข้าวต้มมัดกับกาแฟ ดูท่าเขาจะเป็นคน 
ขวางโลกจริงๆเสียแล้วสิ 

เพื่อนสาวในแผนกฉันหลายคนได้รับดอกกุหลาบ บางคนมีขนมปัง โดนัท 
หรือมิฉะนั้นก็เป็นปาท่องโก๋และน้ำเต้าหู้ จากหนุ่มๆที่ตา ถึงและพากันมาเกาะ 
แกะกับสาวๆแผนกบัญชี บอกตรงๆว่าฉันก็อายอยู่ไม่น้อยกับรสนิยมของเขา 
แต่เพราะ บุคลิกที่เงียบขรึม ท่าทางจริงจัง และรอยยิ้มที่อ่อนโยนนั้นทำให้ 
ฉันปฏิเสธเขาไม่ลง ไม่รู้ว่าเพราะฉันกลัวเขาจะเสียน้ำใจ หรือเพราะชอบเขา 
ขึ้นมาแล้วกันแน่ 

'ช่วยเขียนแผนที่กับเบอร์ติดต่อหอพักที่ว่าให้หน่อยได้ไหมคะ' ฉันบอกเขา ในวันหนึ่ง 

'ไม่ต้องหรอก เดี๋ยวเย็นนี้ผมพาไปดู' เขาบอก 

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

'ใกล้จริงๆด้วยค่ะ' ฉันบอกเขา 

จากนั้นเขาพาฉันไปดูห้องตัวอย่างก็ห้องเพื่อนเขานั่นล่ะ ฉันตกลงใจที่จะ 
ย้ายมาอยู่ในเดือนหน้าและวางเงินมัดจำไปก่อน 

'เย็นนี้คุณรีบไปไหนหรือเปล่า' เขาถาม 

'ไม่ค่ะ' ฉันตอบ แอบคิดไปว่าเขาคงชวนทานข้าวละมัง 

'ทานข้าวกับผมนะ' เขาชวนจริงๆ ฉันยิ้ม อยากรู้เหมือนกันว่าเขาจะพาฉัน 
ไปทานที่ไหน คนที่ชอบ ข้าวต้มมัดกับพวงมาลัยจะมีรสนิยมเรื่องอาหาร 
ยังไงนะ แต่ก็ได้ยินเสีย งตัวเองตอบตกลงกับเขา 

ร้านที่เขาพามาเป็นร้านอาหารบรรยากาศดี ร่มรื่นไปด้วยต้นไม้ เหมือนสวน 
หลังบ้านเสียมากกว่าร้านอาหาร ดูเขาจะคุ้นเคยกับเจ้าของร้านเป็นอย่างดี 

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

'ไม่รู้ว่ามีร้านแบบนี้อยู่ด้วย' ฉันพูดกับเขา 

'ผมมาที่นี่บ่อยๆ' เขาบอก ฉันต้องแอบมองเขาด้วยความสงสัย ความจริง 
เขาก็ไม่ได้ถึงกับประหยัดอะไรมากมาย แต่ทำไมถึงเป็น พวงมาลัยและข้าวต้มมัดนะ ฉันแอบยิ้ม 

'คุณยิ้มทำไม' แย่จริง เขาจับได้ ก่อนที่เขาจะเรียกเด็กหญิงที่ขายดอกกุหลาบ 
มาและซื้อให้ฉันดอกหนึ่ง ทำเอาหัวใจฉันพองโต และนำกุหลาบดอกนั้น 
กลับมาทับด้วยหนังสือเล่มหนาที่หัวเตียง 
......................................................................... 

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

'ขายยังไงจ๊ะ' ฉันถามคุณยาย 
'พวงละยี่สิบบาท' 
ฉันยื่นธนบัตรฉบับละร้อยให้กับคุณยาย 
'เอาพวงนึง ไม่ต้องทอนจ๊ะ' 
'งั้นไม่ขาย ฉันไม่ใช่ขอทาน' คุณยายบอก พร้อมกับมองหน้าฉัน ซึ่งรู้สึก
ว่าหน้าตัวเองชาไปในทันที 
'หนูขอโทษ' ฉันพนมมือไหว้ ก่อนที่คุณยายจะยิ้มตอบ 
'ไม่เป็นไร หนูทำให้ฉันนึกถึงผู้ชายอีกคน' คุณยายเล่า 
'เขาทำแบบหนู แต่ให้แบงค์พัน ยายก็ดุเขาไปเหมือนกัน' คุณยายเล่าต่อ 
'แล้วเขาทำยังไงคะ' ฉันถาม 
เขาขอโทษ และซื้อพวงมาลัยวันละพวงแทน บางทีก็ซื้อข้าวต้มมัดของหลาน 
ยายด้วย นี่ใกล้จะมาแล้ว' คุณยายบอก 
'เขาบอกว่าซื้อไปให้แฟน ฉันยังถามเขาเลยว่าสาวๆที่ไหนจะชอบ มีแต่คนแก่ 
ที่ชอบพวงมาลัย'คุณยายเล่า โดยไม่ได้สังเกตเลยว่าหัวคิ้วฉันแทบจะชนกัน 
อยู่แล้ว 
'แต่เขาบอกว่าแฟนเขาชอบ' คุณยายเล่าต่อ ทำเอาฉันหน้าแดงขึ้นมาทันที 
ใครบอกว่าฉันเป็นแฟนนาย.... 

'อ้าว คุณ ทำไมออกมาก่อนล่ะ' เสียงทุ้มๆดังขึ้นด้านหลังของฉัน ฉันแกลังทำ 
เป็นไม่ได้ยินไปอย่างนั้น เพราะขืนฉันหันไปตอนนี้ คงซ่อนหน้าแดงๆนี้ไม่ได้ 
'คุณยาย นี่แฟนผม' เขาว่า ฉันตีต้นแขนเขาทันทีเหมือนกัน 
'พวงมาลัย พวงนึงครับ' เขาบอกก่อนจะหยิบธนบัตรใบละยี่สิบให้คุณยาย 
ส่วนฉัน หันไปคุยกับเด็กหญิงตัวเล็กที่นั่งอยู่ข้างๆ 
'ข้าวต้มมัดขายยังไงคะ' 
'มัดละห้าบาทค่ะ' เธอบอก 
'งั้นเอายี่สิบบาทด้วยค่ะ' ฉันบอกพร้อมกับยื่นสตางค์ให้โดยมีเขายืนยิ้มอยู่ข้างๆ 
'แสดงว่าที่ผมซื้อไปคุณทานไม่อิ่ม เพราะผมซื้อแค่สิบบาทเอง' เขาพูด 
'อิ่มย่ะ' ฉันเถียง เขาทำท่าจะพูดอะไรต่อแต่ก็ไม่เถียงฉัน ก่อนที่เราจะขึ้นรถเมล์ 
มาทำงานด้วยกัน 
'พวงมาลัยของคุณ ' เขาบอกพร้อมกับยื่นพวงมาลัยสีขาวสะอาดตานั้นให้ฉัน 
เมื่อเดินมาส่งฉันที่โต๊ะ 
'ข้าวต้มมัดของคุณ' ฉันแบ่งข้าวต้มมัดในถุงให้เขา 
'อ้าว' เขาร้อง 
'ไม่ชอบเหรอคะ' ฉันถามเขายิ้มๆ 
'ยังไม่เคยลองทานเลยครับ อร่อยไหม' เขาตอบกลับทำเอาฉันคิ้วขมวด นี่ฉัน 
กลายเป็นหนูลองยาให้เขาหรือนี่ 
'แต่ก็คงอร่อย เพราะคุณทานหมดทุกครั้ง' เขาตอบก่อนจะรับถุงข้าวต้มมัดไป 
จากมือ จงใจให้ปลายนิ้วสัมผัสกันนิดหนึ่ง 
'กลับบ้านพร้อมกันนะ' เขาชวน 
'ค่ะ' 
ฉันยิ้มให้ และตอบออกไปอย่างเต็มใจ เพื่อนฉันเพิ่งบอกเมื่อวานเองว่า 
อย่าไปหลงเสน่ห์ พ่อพวงมาลัยกับข้าวต้มมัด เพราะจะทำให้เสียชื่อสาวๆ 
แผนกบัญชี ดูท่าเช้านี้ ฉันต้องหาเหตุผลดีๆไว้แก้ตัวแล้วล่ะ.................... 

……………………………………………………………………………………………….
ถ้าไม่คิดจะปรับตัวเข้าหาใคร ก้ออยู่เป็นโสดไปดีกว่า ...
…………………………………………………………………………………………………

http://www.nsitez.net/ncottage/index.php?showtopic=22329&pid=36342&st=0&#entry36342

Namespace (เนมสเปช)

ในบทความแรกๆที่ผมไม่ได้อธิบายเกี่ยวกับ Namspace เอาไว้เพราะไม่รู้จะอธบายยังไงดีตอนนี้ผมไปเจอบทความนี้เข้าคิดว่าน่าจะน่าสนใจนะครับ


Namespace

        " Namespace เป็นวิธีการของ .Net ในการจัดหา Container ให้กับ Code Application เนื่องจาก Code และเนื้อหา ของมันนั้นอาจจะต้องถูก บ่งชี้แบบยูนีค (Unique ไม่ซ้ำกัน) Namespace ยังถูกใช้ในความหมาย ของการจัดกลุ่ม Item ใน .Net Framework เข้าด้วยกัน Item เหล่านี้ส่วนใหญ่เป็น นิยามชนิดข้อมูล

        โดย Default แล้ว C# นั้น ถูกกำหดเอาไว้ใน Global namespace นั่หมายความว่า Item ทั้งหลายที่บรรจุเอาไว้ใน Code จะถูกเข้าถึงได้จาก Code อื่นๆ ที่อยู่ใน Global namespace โดยการอ้างถึงด้วยชื่อ อย่างไรก็ตามเราสามารถใช้ Keyword namespace เพื่อกำหนด namespace สำหรับ Block ของ Code ให้ชัดเจนได้ ชื่อทั้งหลายที่อยู่ใน namespace หนึ่งๆ นั้น ต้องมีคุณสมบัติ ถ้ามันถูกนำไปใช้จาก Code ที่อยู่นอก namespace นี้

        ชื่อที่มีคุณสมบัติ คือชื่อที่บรรจุข้อมูลแบบลำดับชั้นของมันทั้งหมด หมายความว่า ถ้าเรามี Code ใน namespace หนึ่งๆ ซึ่งต้องใช้ชื่อที่กำหนดเอาไว้ ใน namespace ที่แตกต่างกัน เราต้องใส่การอ้างถึง namespace ดังกล่าวด้วย ชื่อที่มีคุณสมบัตินั้นใสตัวอักษร "." เอาไว้ระหว่างระดับของ namespace เช่น

namespace MySpace

{

// Code ที่อยู่ใน MySpace

// ชื่อหรืออะไรก็ตาม ที่ประกาศภานในนี้

}

// Code ที่อยู่ใน Global namespace

        ภายใน namespace สามารถกำหนด namespace ลดหลั่นกันได้ โดยการใช้ Keyword namespace ดังนี้

namespace MySpace

{

// Code ที่อยู่ใน MySpace

// ชื่อหรืออะไรก็ตาม ที่ประกาศภานในนี้

int a;

int b;

namespace MySpace2

{

// Code ที่อยู่ใน MySpace2

// ชื่อหรืออะไรก็ตาม ที่ประกาศภานในนี้

int c;

int d;

}

}

// Code ที่อยู่ใน Global namespace

        ในการอ้างอึง ก็ใช้วิธการอ้างถึง จัวแปรหรือสมาชิก ต่างๆ ใช้วิธีการอ้างถึง ดังนี้

MySpace.a; เป็นการอ้างถึงตัวแปร a ที่อยู่ใน namespace MySpace

MySpace.b; เป็นการอ้างถึงตัวแปร b ที่อยู่ใน namespace MySpace

MySpace.MySpace2.c; เป็นการอ้างถึงตัวแปร c ที่อยู่ใน namespace MySpace2 ซึ่งอยู่ภายใต้ namespace MySpace

MySpace.MySpace2.d; เป็นการอ้างถึงตัวแปร d ที่อยู่ใน namespace MySpace2 ซึ่งอยู่ภายใต้ namespace MySpace "

credit : 

http://www.thai-programmer.com

Expression & Operator (นิพจน์ และ ตัวดำนเนิการ)

นิพจน์(Expression)

C# นั้น บรรจุ Operator หรือตัวดำเนินการ จำนวนหนึ่งเพื่อวัตถุประสงค์นี้ การผสมผสาน Operator กับตัวแปร และค่าคงที่นั้น สิ่งเหล่านี้เรียกว่า Operand หรือตัวถูกดำเนินการ เราก็จะสามารถสร้างนิพจน์ หรือ Expression ซึ่งเป็น Block การสร้างการคำนวนพื้นฐานได้

Operator ที่มีให้ใช้ มีตังแต่ระดับ ง่าย จนถึงระดับที่ ซับซ้อน Operator อย่างงายประกอบไปด้วย การปฏิบัติการทาง คณิตศาสตร์ ขั้นพื้นฐาน ทั้งหมด เช่น บวก ลบ คูณ หาร เป็นต้น และ Operator ที่ซับซ้อนนั้น ประกอบไปด้วย การจัดการเนื้อหาตัวแปร โดยการแทนที่เนื้อหาเหล่านี้ด้วย ค่าของ Binaty เป็นต้น ยังมี Opreator ทางตรรกะที่จะใช้ในการ ติดต่อค่าประเภท Boolean โดยเฉพาะ Operator ทั้งหลายถูกแบ่งออกเป็น 3 กลุ่มดังนี้

Unary ทำงานกับ Operand เดียว

Binary ทำงานกับ Operand 2 ตัว

Ternary ทำงานกับ Operand 3 ตัว

Operator ส่วนใหญ่อยู่ในกลุ่ม Binary มี Operand แบบ Unary น้อยมาก และ Operator แบบ Ternary เพียงตัวเดียวที่เรียกว่า เงือนไข

Operator ทางคณิตศาสตร์

มี Operator ทางคณิตศาสตร์ แบบง่ายๆ อยู่ 5 ตัว ซึ่ง 6 ตัวอยู่ในกลุ่มของ Binary และ Unary ด้วย ดังในตารางข้างล่าง

Operator
กลุ่ม
ตัวอย่าง
ความหมาย
+
Binarya = b+c;a เท่ากับผลลัพธ์ของ b บวกกับ c
-
Binarya = b-c;a เท่ากับผลลัพธ์ของ b ลบกับ c
*
Binarya = b*c;a เท่ากับผลลัพธ์ของ b คูณกับ c
/
Binarya = b/c;a เท่ากับผลลัพธ์ของ b หารกับ c
%
Binarya = b%c;a เท่ากับผลลัพธ์ของเศษของ b หารกับ c
+
Unarya = +b;a เท่ากับผลลัพธ์ของ b
-
Unarya = -b;a เท่ากับผลลัพธ์ของ b คูณกับ -1
++
Unarya = ++b;a เท่ากับผลลัพธ์ของ b+1 b ถูกเพิ่มค่าอีก 1
--
Unarya = --b;a เท่ากับผลลัพธ์ของ b-1 b ถูกลดค่าอีก 1
++
Unarya = b++;a เท่ากับผลลัพธ์ของ b b ถูกเพิ่มค่าอีก 1
--
Unarya = b--;a เท่ากับผลลัพธ์ของ b b ถูกลดค่าอีก 1

เพื่อความเข้าใจมากยิ่งขึ้น ผมได้เขียนโปรแกรม เพื่อทดสอบผลลัพธ์ ข้างต้นเพื่อให้เห็นผลดังนี้

ตัวอย่าง โปรแกรมที่ 2

Download Source Code

จากโปรแกรมที่ 2 จะเห็นว่า เมื่อ b = 10 และ c = 5 ให้สังเกตุผลลัพธ์ของ ++b, --b, b++, b-- จะเห็นว่า หากเครื่องหมาย ++ และ -- อยู่ตัวแปร เพิ่มค่าให้กับตัวแปรก่อน แล้วค่อย กระทำการ กำหนดค่าให้กับ นิพจน์นั้นๆ เช่น a = ++b จะทำการ เพิ่มค่า b ก่อน แล้วนำค่า b มาเก็บไว้ที่ a แต่ถ้าเครื่องหมาย ++และ -- อยู่ หลังตัวแปร จะทำการ นำค่า b มาเก็บใน a ก่อน แล้วค่อยเพิ่มค่าของ b

Operator กำหนดค่า

เมื่อเรารู้จัก Opreator อย่างง่าย ไปแล้วคือ = แต่ก็ยังมี Operator กำหนดค่าอย่างอื่นอีก Operator กำหนดค่าทั้งหมดที่ว่านั้น จะทำงานคล้ายกับ = ซึ่งจะให้ผลลัพธ์ จากค่าที่ถูกกำหนด ให้กับตัวแปรที่อยู่ทางซ้ายมือ โดยขึ้นอยู่กับ Operand และ Operator ที่อยู่ทางด้านขวามือ ดังตาราง

Operator
กลุ่ม
ตัวอย่าง
ความหมาย
=
ฺBinarya = b;a เท่ากับผลลัพธ์ของ b
+=
Binarya += b;a เท่ากับผลลัพธ์ของ a บวก b
-=
Binarya -= b;a เท่ากับผลลัพธ์ของ a ลบ b
*=
Binarya *= b;a เท่ากับผลลัพธ์ของ a คูณ b
/=
Binarya /= b;a เท่ากับผลลัพธ์ของ a หาร b
%=
Binarya %= b;a เท่ากับผลลัพธ์ของเศษของ a หาร b

ดูตัวอย่าง Source เพื่อความเข้าใจมากยิ่งขึ้น

ตัวอย่าง โปรแกรมที่ 3

Download Source Code

Source code หากยังไม่ Login เข้าระบบ ท่านจะไม่สามารถ Download ได้ครับ และ หน้า Web Page จะกลับไปที่ Home โดย อัตโนมัติ ครับ


ความสำคัญของ Operator ( อีกรอบ )

เมื่อนิพจน์หนึ่งๆ ถูกประเมินค่า แต่ละ Operator ก็จะถูกประมวลตามลำดับของมัน อย่างไรก็ตาม นี่ไม่ได้หมายความว่า การประเมินค่า Operator เหล่านี้จะเริ่มจากซ้ายไปขวา แต่จะเริ่มจากความสำคัญของ Operator ดังตารางลำดับความสำคัญ

ลำดับความสำคัญ
Operator
1
++ (ใช้นำหน้า) เช่น ++a
2
-- (ใช้นำหน้า) เช่น --a
3
+ (ใช้นำหน้า) เช่น +a
4
- (ใช้นำหน้า) เช่น -a
5
* เช่น a * b
6
/ เช่น a / b
7
% เช่น a % b
8
+ เช่น a + b
9
- เช่น a - b
10
= เช่น a = b
11
*= เช่น a *= b
12
/= เช่น a /= b
13
%= เช่น a %= b
14
+= เช่น a += b
15
-= เช่น a -= b
16
++ (ใช้ตามหลัง) เช่น a++
17
-- (ใช้ตามหลัง) เช่น a--

จากตารางความสำคัญ หาก มีเครื่องหมาย ( ) จะทำใน () ก่อนเป็นอันดับแรก เช่น(a-b)+c*d จะทำ a-b ก่อน แล้วเก็บค่าไว้ ก่อน หลังจากนั้น จะทำ c*d แล้วจึงนำค่า ดังกล่าวมาบวกกัน เช่น  

(5-3) + 4*2 = 10  

(15-3)+5-4 = 3

4/2*5 = 0.4

        ดูตัวอย่าง Source เพื่อความเข้าใจมากยิ่งขึ้น

ตัวอย่าง โปรแกรมที่ 4

Download Source Code

****************หมายเหตุ Source Code สำหรับ Borland C# Builder เท่านั้น****************

credit: http://www.thai-programmer.com

Data Type (ตัวแปร)

ตัวแปร

        สำหรับตัวแปรใน C# จะคล้ายกับ C++ มาก ดังนั้นสำหรับผู้ที่ได้ศึกษาเรื่องของ C++ มาแล้วก็จะเป็นไปได้ง่าย ในการศึกษาเรื่องนี้ ในการที่จะใช้ตัวแปรนั้น เราจะต้องประกาศตัวแปรก่อน นั่นคือจะต้องกำหนดชื่อ และชนิดของตัวแปรนั้น ทันทีที่เราได้ประกาศชนิดของตัวแปรเสร็จสิ้น เราจะใช้มันเป็นตัวจัดเก็บข้อมูล ตามชนิดที่เราได้ประกาศไว้ได้ ซึ่งมีรูปแบบการประกาศดังนี้

Type name

        ถ้าเราพยายามใช้ตัวแปรที่ยังไม่มีการประกาศเอาไว้ก่อนแล้ว Code ของเราจะไม่ถูก Compile แต่ Compiler จะบอกถึงสาเหตุที่แท้จริงที่เกิดขึ้น ดังนั้นจึงไม่ใช่ข้อผิดพลาดที่รายแรงเท่าใดนัก นอกจากนี้ การพยายามที่จะใช้ตัวแปรที่ไม่ได้กำหนดค่าเริ่มต้น ให้กับมัน มักจะเกิดข้อผิดพลาด แต่ก็อีกนั้นแหละตัว Compiler จะตรวจสอบพบมันได้ ตัวแปรอย่างง่ายๆ ที่จะแนะนำนี้ คือชนิดของตัวแปร เช่น ตัวเลข และ Boolean ที่ใช้เป็นรากฐานในการสร้าง Block สำหรับ Application ของเรา และสำหรับสิ่งอื่นๆ คือ ตัวแปรที่สลับซับซ้อน ตัวแปรอย่างง่าย ส่วนใหญ่แล้ว คือ ตัวเลข ซึ่งเมื่อเริมต้นนั้น มันดูเหทือนแปลกตาอยู่บ้าง แน่นอนว่าจำเป็นไหม ที่เราต้องการแค่ชนิดเดียวเท่านั้นที่ใช้เก็บตัวเลข

        เหตุผลที่ตัวแปรชนิดตัวเลข มีอยู่มากมายนั้น เป็นไปตามกลไกของการจัดเก็บตัวเลข ในลักษณะอนุกรม ของ 0 และ 1 ในหน่วยความจำของคอมพิวเตอร์ สำหรับค่าจำนวนเต็ม เราเพียงแค่นำจำนวน Bit แล้วแทนที่จำนวนของเราในแบบ Binary ตัวแปรที่จัดเก็บ N Bit จะอนุญาติให้เราจัดเก็บจำนวนใดๆ ระหว่าง 0 ถึง 2n - 1 ได้ ถ้าจำนวนใดๆที่มากกว่าค่านี้ จะใหญ่เกินไป ที่จะใส่ไปในตัวแปรได้ ถ้าเราต้องการให้สามารถเก็บจำนวนได้มากขึ้น เราต้องใช้ Bit มากขึ้นด้วย ดังนั้น เราจึงจำเป็นจะต้องกำหนดตัวแปรให้เหมาะสม กับขนาดของข้อมูลที่เราจะใช้ ดังตารางต่อไปนี้ ซึ่งเป็นตารางตัวแปรชนิดตัวเลขจำนวนเต็ม

ชนิด
มาจาก
ช่วงข้อมูล
sbyte
System.Sbyte
-128 ถึง 127
byte
System.Byte
0 ถึง 255
short
System.Int16
-32768 ถึง 32767
ushort
System.UInt16
0 ถึง 65535
int
System.Int32
-2147483648 ถึง 21474483647
uint
System.UInt32
0 ถึง 4294967295
long
System.Int64
-9223372036854775808 ถึง 9223372036854775807
ulong
System.UInt64
0 ถึง 18446744073709551615

        ตัว u ที่อยู่ก่อนชื่อชนิดตัวแปร ย่อมาจาก "insigned" หมายความว่า ไม่สามารถจัดเก็บจำนวนติดลบในตัวแปรชนิดนี้ได้ หรือพูดอีกอย่างว่า ตัวแปรแบบไม่คิดเครื่องหมาย นั่นเอง

        นอกจาก ตัวแปรชนิดตัวเลขจำนวนเต็มแล้ว เรายังต้องการจัดเก็บแบบ ตัวเลขทศนิยม (Floating point) อีกด้วย ซึ่งเป็นอะไรก็ได้ที่ไม่ใช่ตัวเลขเสียทั้งหมด มีชนิดตัวแปรอยู่ 3 ชนิด สำหรับตัวเลขทศนิยม ที่เราสามารถใช้ได้ ได้แก่ float, double และ decimal สองชนิดแรกในจำนวนนี้ จะจัดเก็บทศนิยม ในรูปของ +/- m x 2e ซึ่งอนุญาติ ให้จัดเก็บค่าสำหรับ m และ e ต่างกันไปตามแต่ละชนิด ชนิดตัวแปร decimal ใช้รูปแบบเพิ่มเข้ามาอีกอย่างหนึ่งคือ +/- m x 10e ชนิดตัวแปรทั้ง 3 เหล่านี้ แสดงไว้ในตารางข้างล่าง พร้อมทั้งช่วงของข้อมูล ดังนี้

ชนิด
มาจาก
ช่วง m
ช่วง e
ช่วงข้อมูล
float
System.Single
0 ถึง 244
-149 ถึง 104
1.5x10-45 ถึง 3.4x1038
double
System.Double
0 ถึง 253
-1075 ถึง 970
5.0x10-324 ถึง 1.7x10308
decimal
System.Decimal
0 ถึง 296
-26 ถึง 0
1.0x10-28 ถึง 7.9x1028

        นอกจากนี้ยังมีชนิดตัวแปรอีก 3 ชนิด ดังตารางข้างล่าง

ชนิด
มาจาก
ค่าข้อมูล
char
System.Char
อักษร Unicode 0 ถึง 65535
bool
System.Boolean
ค่า Boolean คือ true & flase
string
System.String
สายลำดับอักขระ

        จะสังเกตเห็นว่า ไม่มีขีดจำกัดของจำนวนอักษร ที่เป็น string เนื่องจากมันสามารถ ใช้หน่วยความจำ ในจำนวนที่แปรเปลี่ยนได้

        ชนิดตัวแปรแบบ bool เป็นหนึ่งในชนิดตัวแปร ที่ใช้กันโดยทั่วไปใน C# และจริงๆ แล้ว ชนิดข้อมูลที่คล้ายกันนี้ ก็สืบทอดไปใน Code ของภาษาอื่นๆ อย่างเท่าเทียมกัน การที่มีตัวแปรที่สามารถ เป็น true หรือ false มีความสำคัญเชิงขยาย เมื่อมันถูกนำมาใช้กับ Flow ของ ตรรกะ ใน Application หนึ่งๆ


การประกาศตัวแปร

        การประกาศตัวแปรนั้น กระทำแบบเดียวกันกับ C++ เช่น

int a;

char b;

float c;

double d;

string e;

         หลังจากที่ประกาศตัวแปร เราก็จะกำหนดค่าให้กับตัวแปร โดยใช้ Operator = ดังนี้

a = 1;

b = 'd';

c = 1.05f;

d = 1234.44f;

e = "สกลนคร";

         จงจำไว้ว่า ใน C# นั้น ตัวแปรทั้งหลาย จะต้องกำหนดค่าเริ่มต้นให้กับมัน ก่อนที่เราจะใช้งานมัน เช่น

int a;

char b;

float c;

double d;

string e;

a = 1;

b = 'd';

c = 1.05f;

d = 1234.44f;

e = "สกลนคร";

หรือ

int a = 1;

char b= 'd';

float c = 1.05f;;

double d= 1234.44f ;

string e = "สกลนคร" ;

วันศุกร์ที่ 7 พฤศจิกายน พ.ศ. 2551

เรียน data type & operator จาก โปรแกรมคิดเลข

นี่เป็นโค้ดโปรแกรมคิดเลขง่ายๆีที่ผมเขียนมานะครับ

ีusing System;

class calulator
{
static void Main(void)
{
int a,b;
double c,d; 
a = 4;
b = 10;
c = 4;
d = 10;
Console.WriteLine("a+b = {0}",a+b);
Console.WriteLine("c+d = {0}",c+d);
Console.WriteLine("b-a = {0}",b-a);
Console.WriteLine("d-c = {0}",d-c);
Console.WriteLine("a*b = {0}",a*b);
Console.WriteLine("c*d = {0}",c*d);
Console.WriteLine("b/a = {0}",b/a);
Console.WriteLine("d/c = {0}",d/c);
Console.Read();
}
}
จากโปรแกรมดังกล่าวจะเห็นได้ว่าค่า b/a กับ d/c แม้ตัวตั้ง ตัวหาร จะมี่ค่าเท่ากันแต่คำตอบที่ได้ออกานั้นมีค่าไม่เท่ากัน
นี่ก็เนื่องมาขากชนิดของข้อมูล(Data Type) ของตัวแปรดังกล่าวเป็นคนละประเภทกัน โดยข้อมูลของตัวแปร a และ b เป็นข้อมูลชนิด integer คือข้อมูลที่เป็นประเภทจำนวนเต็ม เมื่อนำมาหารกันจะได้ 10/4 = 2 โดยมีตัวแปรที่เป็น integer ได้แก int long char ... แต่ตัวแปรของ c และ d เป็นตัวแปรประเภท double ซึ่งเป็นจำนวนจริงในที่นี้เมื่อ 10/4 = 2.5 ซึ่งตัวแปรที่เป็นจำนวนจริงที่นิยมได้แก่ double float decimal ... ซึ่งนอกจากตัวแปรสองตัวนี้แล้วยังมี string ซึ่งตัวของมันจะถูกมองว่าเป็น object ซึ่งจะขอกล่าวในบทความอื่นๆ อ้อเกือบลืม boolean ไปครับ ซึ่งเป็นตัวแปรที่ใช้เก็บค่า true false ซึ่ง็จะขอพูดที่หลังเหมือนกันครับ...
 
ต่อไปก้เป็น operator ใน c# โดยนอกจาก + - *  / แล้วใน c# ยังมี operator อื่นๆอีก โดยจะมีลำดับความสำคัญในการทำงานของแต่ละ operator คือ

ลำดับความสำคัญ
Operator
1
++ (ใช้นำหน้า) เช่น ++a
2
-- (ใช้นำหน้า) เช่น --a
3
+ (ใช้นำหน้า) เช่น +a
4
- (ใช้นำหน้า) เช่น -a
5
* เช่น a * b
6
/ เช่น a / b
7
% เช่น a % b
8
+ เช่น a + b
9
- เช่น a - b
10
= เช่น a = b
11
*= เช่น a *= b
12
/= เช่น a /= b
13
%= เช่น a %= b
14
+= เช่น a += b
15
-= เช่น a -= b
16
++ (ใช้ตามหลัง) เช่น a++
17
-- (ใช้ตามหลัง) เช่น a--
เด๋วเรื่อง operator ผมจะขอนำไปเขียนละเอียดในบทหน้าละกัน...

เริ่มต้นการเขียน c#

ก่อนที่จะเริ่มเขียนกันจริงๆเรามาดู code ตัวอย่างกันก่อนนะครับ

using System;
class name_clasee
{
static void Main(void)
{
Console.WriteLine("Hello World");
}
}


นี่เป็นโค้ดที่เรียกว่าคนที่เึคยเขียนโปรแกรมมาก่อนจะเจอกันทุกคนนะครับ
ในการเขียนโปแกรมทุกครั้งเราต้องเริ่มด้วย

using   ...; เป็นการประกาศเพื่่่อเรียกใ้ช้ name space ต่่างๆที่มีอยู่แล้ว อย่างโปรแกรมข้างต้นเป็นการเรียกใช้ System เพื่อที่เราจะสามารถเรียกให้ Console.WriteLine(); ได้ในโปรแรกมโดยไม่ต้องประกาศเป็น
System.Console.WriteLine(); ซึ่งจะช่วยให้เขียน code ได้ง่ายมากยิ่งขึ้น

ต่อไปคือการประกาศ class เืื่พื่อใช้ในการเขียน method โดยในนี้จะเป็น method Main()
ส่วนของ Console.WriteLine(); เป็นคำสั่งที่ใช้ในการเขียนข้อความแสดงบนหน้าจอ โดยจะแบ่งเป็นการเรียก method WriteLine(); จาก class Console ใน name_space System

นี่ก้เป็นคร่าวๆของการเขียน c# นะครับ...

.Net Framework & c# builder

ในการที่จะเริ่มเขียนโปรแกรมด้วย c# นั้นก่อนอื่นเรามารู้จัก .Net Framework กันก่อนนะครับ

Net Framework เป็นแพลตฟอร์มใหม่ และเปลี่ยนแปลงไปอย่างสิ้นเชิง ที่ถูกสร้างขึ้นมาโดย บริษัท Microsoft เพื่อใช้สำหรับ การพัฒนา Application .Net Framework ถูกออกแบบมาเพื่อให้สามารถ ถูกใช้จากภาษาใดๆ ก็ได้ รวมถึง C# ด้วย รวมถึง ภาษา C++, Visual Basic, JScript, Delphi และอื่นๆ เพื่อให้สิ่งเหล่านี้เป็นไปได้ จึงเกิดภาษาเหล่านี้ ขึ้นมาในรูปของ Version เฉพาะ สำหรับ .Net อีกด้วย ได้แก่ภาษา Managed C++, Visual Basic.Net, Jscript .Net,Borland C#, Delphi8 เป็นต้น และมีอีก มากว่านี้ ที่กำลังพัฒา และปล่อยอกสู่ท้องตลาดอยู่ ตลอดเวลา ไม่ใช่เพียงแค่ภาษาทั้งหมดเหล่านี้ จะมีการเข้าถึง .Net Framework เท่านั้น แต่มันยังสามารถสื่อสาร กับภาษาอื่นๆ ได้อีกด้วย

สิ่งที่อยู่ใน .Net Framework

        .Net Framework พื้นฐานประกอบขึ้นด้วย Libary ของ Source Code ขนาดมหึมา ซึ่งเราเรียกใช้จากภาษา Client ของเรา เช่น C#, C++ .Net โดยการใช้เทคนิคเชิงวัตถุ (OOP) Libary ที่ว่านี้ ถูกแบ่งกลุ่มออกเป็น Modul ต่างๆ ดังนั้นเราจึงใช้ส่วนของมัน ตามผลลัพธ์ที่เราต้องการได้ เช่น Windows Application เป็นต้น จุดมุ่งหมายในที่นี้ก็คือ ระบบปฏิบัติการ ที่แตกต่างกัน อาจจะสนับสนุน Modul เหล่านี้ บาง Modul หรือทั้งหมด ขึ้นอยู่กับคุณลักษณะของมัน เช่น PDA จะรวมเอาการสนับสนุน Function หน้าที่ที่เป็นแก่นของ .Net ทั้งหมด เป็นต้น

        ส่วน Libary .Net Framework กำหนดชนิด ข้อมูลพื้นฐานบางอย่างเอาไว้ ชนิดข้อมูลเป็นตัวแทนของข้อมูล และการแบ่งกฏเกณฑ์ทั้งหลายเหล่านี้ ที่จะส่งเสริมความสามารถ ในการสัมพันธ์ระหว่างภาษา โดยใช้ .Net Framework สิ่งนี้ถูกเรียกว่า Common Type System (CTS) เช่นเดียวกับการจัดให้มี Libary .Net Common Language Runtime (CLR) ซึ่งรับผิดชอบในการจัดการ กับ ระบบ)ฏิบัติการ ของ Application ทั้งหมดที่ถูกพัฒนาขึ้นมาด้วย Libary .Net Framework

ต่อไปเรามารู้จักกับ c# builder กันนะครับ

ไอ้เจ้าตัวนี้ถ้า้้เแปรตรงตัวจะได้ว่า "มันเป็นตัวสร้าง c#" (แปลแล้วแปลกๆนะครับ) หมายถึงโปรแกรมที่ช่วยเขียนโปรแกรมจากภาษา c# นี่ละครับ โดยโปรแกรมเหล่านี้มีเยอะครับ

ใน windows ก้ใช้ visual studio ก้ได้ครับ ซึ่งมันง่ายดี แต่ถ้าอยากใช้ตัวอื่นก้แล้วแต่ครับ

ใน Linux นี่ก้มีนะครับ(โดนบังคับเรียนในนี้ครับ ยากจิงๆ) ใช้ vi เขียน msc complie แล้วก้ใช้ mono ในการรันโปรแกรม exe ( ถ้าใครเคยเรียนคงรู้นะครับว่ามันยากขนาดไหนที่จะหัดพวกนี้ จากที่เคยใช้ windows )


จบแค่นี้ก่อนละครับไว้เจอกันในบทความหน้าเรื่องไวยกรณ์ของ c# หรือ c# Syntax

คุยกันก่อน..^^

    ยินดีเพื่อนๆทุกคนนะครับที่หลงเข้ามาในนี้..เข้าเรื่องกันดีกว่า

"c#" ทุกคนคงรู้จักกันอยู่แล้วในฐานะ ภาษาที่ใช้ในการเขียนโปรแกรมที่ได้รับควานิยมอย่างมากภาษาหนึ่ง

ในมุมมองของผมมันเป็นภาษาที่เป็นการผสมของ C และ Java โดยที่ตัวมันเองพัฒนาจากภาษาC->C++ ซึ่งก็บอกอยู่แล้วว่า c# (งงมั้ยครับ?) 

ซึ่งตอนนี้มีหลายที่แล้วที่เปลี่ยนจากการสอนภาษาอื่นๆมาเป็น c# เพราะมีความหยืดหยุ่นในการทำงานมากกว่าภาษาอื่นๆ( อาจารย์ผมบอกมาอีกทีครับ ) โดยส่วนตัวที่ผมเคยเขียน C php basic pascal javascript ผมคิดว่า c# มันหยืดหยุ่นมาก แต่ผมก้ยังถนัด C มากกว่า....

ตอนนี้ขอบ่นๆไว้ก่อนนะครับ ตอนหน้าผมถึงจะเริ่มมาเขียนถึงโปรแกรมที่ใช้เขียน c# แล้ว Syntax แล้วก็อื่นๆที่เขียนได้ แต่ต้องเขียน 2 อันนี้่ก่อนนะครับ จะได้เป็นพื้นฐานได้ง่าย