For Newbie Programmer with C# Language.... มาเรียนเขียนโปรแกรมภาษา C# เบื้องต้นกันเถอะ ที่นี่จะทำให้มุมมองของการโปรแกรมมิ่งของคุณเปลี่ยนไป
วันอังคารที่ 2 มีนาคม พ.ศ. 2553
เงินหมื่นแรกในชีวิต....
ช่วงสอบแท้ๆ แต่มามีโน๊ตบุ้คเล่น ได้มาใหม่ๆ โหลดเกมอย่างเดียวเป็นสิบๆเกม เล่นไม่หวัดไม่ไหวเลย 555 เอ้าขยันหน่อยเร็ว
วันพฤหัสบดีที่ 21 มกราคม พ.ศ. 2553
Learn to start my own business... and begin to be good giver
วันพฤหัสบดีที่ 31 ธันวาคม พ.ศ. 2552
Return to my Blog
มาอัพอีกทีก็จะปีใหม่แล้วอีกไม่กี่ชั่วโมง ในปีนี้เหมือนเป็นปีที่โอ๊คได้โอกาสในการทำสิ่งที่ไม่คิดว่าจะได้ทำเป็นอาชีพ ทำแล้วได้เงินว่างั้นเถอะ คือ สอนพิเศษ เกิดมาจากท้องพ่อท้องแม่ไม่คิดว่าชีวิตนี้ "กู" ต้องมาเป็นติวเตอร์หรือนี่ ! ย้อนกลับไปยังจำความรู้สึกที่ได้สอนฟิสิกส์แฟนครั้งแรก มันรู้สึกว่าสนุกที่ได้หาคำอธิบายให้คนอื่นเข้าใจ มีความสุขเวลาเห็นคนที่เราสอนทำข้อสอบได้คะแนนดี(รู้สึกอย่างนั้นจริงๆ) เวลาต่อมาในช่วงที่เรียนพิเศษกับพี่นพ ตอนนั้นถือว่าเป็นช่วงหัวเลี้ยวหัวต่อ ไอ้เราก็จัดว่าเป็นคนที่มีพื้นฐานการเรียนแย่มาก แต่ในตอนนั้นกลับฟื้นขึ้นมาเรียนได้ดีพอๆกับเพื่อนในเดอะซู (ชื่อที่เรียนพิเศษ) ได้มีโอกาสนั่งคุยกับแม่ของเพื่อนได้เล่าความรู้สึกของการที่เป็นเด็กคะแนนท้ายๆของห้องที่ได้พากเพียรจนมาเป็นเด็กคะแนนท๊อปของห้อง จนแม่ของเพื่อนรู้สึกอยากให้ลูกเขาเป็นอย่างโอ๊คบ้าง (หลังจากนั้นไม่กี่วันเลยให้ลูกเขาอีกคน เพื่อนโอ๊คมาตามให้ไปสอนพิเศษ) ไอ้งานสอนนี้มันเหมือนกับเป็นสิ่งที่ฟ้ามอบให้เลย (เหมือนเว่อ) แต่จริงๆ บ้านโอ๊คขัดสนมาก เงินในส่วนของงานสอนได้เอามาช่วยเติมเต็มเวลาทางบ้านมีปัญหาได้อย่างหวุดหวิดหลายครั้งมาก
วันอาทิตย์ที่ 14 มิถุนายน พ.ศ. 2552
output & input (การแสดงผลและการรับข้อมูล)
การแสดงผล คือ การสั่งให้คอมพิวเตอร์นำข้อมูลในหน่วยความจำ ไปแสดงผลในรูปแบบที่เรากำหนด ไม่ว่าจะเป็นการแสดงผลผ่านทางหน้าจอ ผ่านทางอุปกรณ์ต่างๆ เช่น เครื่องปริ้นส์ ก็เรียกว่าการแสดงผลเช่นกัน
การแสดงผลในโค้ดโปรแกรมภาษา C# สำหรับผู้เริ่มต้นจะเป็นการแสดงผลในรูปแบบของ Console หรือ ข้อความเพียงอย่างเดียว ซึ่งเป็นการปูพื้นฐานความเข้าใจที่ดีในการเขียนโปรแกรม เรามาดูโค้ดการแสดงผลในรูปแบบ Console กันเลยดีกว่าครับ
System.Console.WriteLine( parameter ) ;
โค้ดนี้จะเป็นการสั่งให้แสดงผลออกมาเป็นข้อความใน Console ซึ่งให้สังเกตุโค้ดให้ดีๆครับ มันมีที่มาที่ไป ในการนิยาม กล่าวคือ เราได้ทำการเรียก Namespace ชื่อ System จากนั้นคั่นด้วย "." และตามด้วย Class ที่ชื่อ Console คั่นด้วย "." ตามด้วยการเรียน เมธอด WriteLine() เพื่อใช้งานอีกที การเขียนโค้ดส่วนใหญ่เราจะอ้างอิงจากใหญ่ลงมาถึงส่วนเล็ก นั่นก็คือ Namespace > Class > Method ซึ่งอาจจะดูยาวเกินจำเป็น เราสามารถ กำหนดในส่วนหัวของโค้ดว่า using System ; เพื่อที่เราจะได้ไม่ต้องนิยามถึง Namespace กล่าวคือ โค้ดที่เราจะเขียนจะเหลือเพียง
Console.WriteLine( parameter ) ;
ซึ่งจะเป็นผลดีที่เราไม่ต้องเขียนโค้ดยาวๆ ไม่เพียงแต่ namespace System เท่านั้น เราสามารถอ้างอิง namespace อื่นๆได้อีก ด้วยเหตุผลเดียวกัน
ในตอนนี้ขอให้ความสำคัญในส่วนของผลลัพธ์ก่อนแล้วเราจะมาพูดถึงการนิยามโค้ดที่ถูกต้องกันในภายหลัง
การแสดงผลข้อความใน Console จะมี 2 แบบ
- Console.Write( ) ;
เป็นการแสดงผลข้อความโดยจะไม่มีการเว้นบรรทัด หรือ cursor จะอยู่หลังข้อความที่โปรแกรมได้พิมพ์ - Console.WriteLine( ) ;
เป็นการแสดงผลข้อความโดยจะมีการเว้นบรรทัด หรือ cursor จะเลื่อนไปอยู่บรรทัดใหม่
รูปแบบการใช้งานของโค้ดแสดงผล
Console.WriteLine( parameter ) ;
parameter ที่จะใส่เข้าไปจะมีอยู่ 2 แบบ คือ
- รูปแบบของ string โปรแกรมจะทำการแสดงผล string ที่เราพิมพ์เอาไว้ใน " " มาแสดงผล
Console.Write("Hello World!!");
เมื่อ Compile จะได้
Hello World!!
- เป็น object (ตัวแปร) เมื่อเราส่งค่าที่เป็น object ไปเพื่อแสดงผล โปรแกรมจะนำค่าของ object มาแสดงผล
int Number = 20 ;
Console.Write(Number) ;
เมื่อ Compile จะได้
20
Data Type Conversion การแปลงชนิดของข้อมูล.. !!!
ด้วยความที่ข้อมูลทุกชนิดเป็น object เป็นอีกหนึ่งสาเหตุที่ทำให้ภาษา C# เข้มเรื่องของชนิดของข้อมูลมาก ซึ่งก็หมายความว่า ข้อมูลต่างชนิดกัน เราไม่สามารถนำมากระทำการต่างๆได้ในบางกรณี ซึ่งในหัวข้อนี้จะบอกถึงวิธีการแปลงชนิดข้อมูล และรูปแบบการแปลงข้อมูลต่างๆ
- Implicit Conversion
เป็นการแปลงชนิดข้อมูลที่เกิดขึ้นโดยอัตโนมัติ เกิดจากการที่เรานำข้อมูลชนิดเดียวกันหรือต่างกันมากระทำกันทางคณิตศาสตร์ แล้วผลลัพธ์ที่ได้เกินขอบเขตของชนิดข้อมูล โดยจะแปลงไปสู่ขนาดของข้อมูลที่ใหญ่กว่าเสมอ เช่น
int number1 = 20 ;
double number2 = 3.5 ;
** ข้อมูลชนิด int จะรับข้อมูลที่เป็นตัวเลขเฉพาะจำนวนเต็มเท่านั้น
number1 + number2 จะมีค่าเท่ากับ 23.5 ในโค้ดส่วนนี้จะเป็นตัวอย่างการกระทำการทางคณิตศาสตร์ ซึ่งจะทำให้ข้อมูลที่ได้ ถูกแปลงไปเป็น double โดยอัตโนมัติ (เนื่องด้วย number2 เป็นชนิดตัวแปรที่ใหญ่กว่า number1) ดังนั้น ต้องนำชนิดตัวแปรที่มีขอบเขตครอบคลุมผลลัพธ์ที่ได้ด้วยเพื่อป้องกันการ error ของโปรแกรม
double Result = number1 + number2 ; // จริงๆแล้วชนิดข้อมูลที่นำมารองรับไม่จำเป็นต้องเป็น double ก็ได้ เพียงแต่ขอให้รองรับกับผลลัพธ์ของ number1 + number2 ได้ก็พอ
int Resule = number1 + number2 ; // ตัวอย่างของโค้ดที่ผิด จะทำให้โปรแกรม error เพราะเกินขอบเขตของตัวแปร integer - Explicit Conversion
การแปลงข้อมูลที่เราสามารถกำหนดให้เกิดความชัดเจน เช่น
int number1 = 20 ;
double number2 = 3.5 ;
int Result = (int)(number1 + number2);
** จะเป็นการแปลง number1 + number2 เป็นข้อมูลชนิด int เพื่อที่จะทำให้ไม่เกินขอบเขตของตัวแปร Result ที่มารับ (ผลลัพธ์ ที่เป็นทศนิยมจะถูกปัดทำให้เกิดความคลาดเคลื่อนได้) - การใช้ เมธอด Parse
เป็นการแปลงข้อมูลชนิด string หรือข้อความเมื่อข้อความนั้นเป็นข้อความของตัวเลข เป็นข้อมูลชนิดตัวเลข (สามารถกำหนดเป็น int หรือ double ก็ได้) ตัวอย่างของโค้ด
string Number = " 200" ; // 200 ในชนิดของ string ไม่สามารถนำไปคำนวณได้
int ConvertNum = int.Parse(Number) ;
ก็จะได้ตัวแปร ConvertNum ที่มีค่าเท่ากับ 200 สามารถนำไปใช้ในการคำนวณได้ต่อไป
** ส่วนใหญ่เราจะใช้ เมธอด Parse แปลงข้อมูล string ตัวเลข ที่รับมาจากการใส่ค่าของผู้ใช้โปรแกรม
** ในส่วนของ Parse(Number) Number จะถูกเรียกว่า argument หรือตัวแปรที่จะส่งค่าไปเพื่อแปลงเป็น string
เช่น int InputNum = int.Parse(Console.ReadLine( )) ; // ซึ่งจะอธิบายต่อไปในส่วนของการรับค่า - การใช้ เมธอด ToString
เป็นการแปลงข้อมูลที่ทำหน้าที่ตรงกันข้ามกัน เมธอด Parse ซึ่งก็คือจะแปลงข้อมูลชนิดตัวเลข ไปเป็นข้อมูลชนิด string ซึ่งส่วนใหญ่จะแปลงไปเพื่อไปแสดงผลในรูปแบบต่างๆ ตัวอย่างโค้ดเช่น
double ShirtCost = 599 ;
string ShowCost = Convert.ToString(ShirtCost) ;
ตัวแปร ShowCost จะมีค่าเป็น 599 ในชนิด string เพื่อที่จะนำไปแสดงผลต่อไป
** ในส่วนของ ToString(ShirtCost) ShirtCost จะถูกเรียกว่า argument หรือตัวแปรที่จะส่งค่าไปเพื่อแปลงเป็น string
วันอังคารที่ 9 มิถุนายน พ.ศ. 2552
Operator (สัญลักษณ์การดำเนินการ) 1#
ตัวดำเนินการ "Operator" ซึ่งเราสามารถแบ่งตัวดำเนินการได้หลายประเภทดังนี้
- ตัวดำเนินการทางคณิตศาสตร์ ( Arithmetic Operator )
1.) " + " เครื่องหมาย บวก ตัวอย่างการใช้งาน
int a = 5 ;
int b = 3 ;
int c = a + b ;
(ดังนั้น c = 8)
2.) " - " เครื่องหมาย ลบ
int a = 5 ;
int b = 6 ;
int c = b - a ;
(ดังนั้น c = 1)
3.) " * " เครื่องหมาย คูณ
int a = 5 ;
int b = 2 ;
int c = a * b ;
( c = 10 )
4.) " / " เครื่องหมายการ หาร
int a = 6 ;
int b = 3 ;
int c = a/b ;
( c = 2 )
5.) " % " เครื่องหมายการ หารเอาเศษ
int a = 3 ;
int b = 2 ;
int c = a%b ;
( c = 1 ) (ค่า c จะเป็นเศษของการหาร)
ขั้นตอนการคำนวณของคอมพิวเตอร์ในตัวดำเนินการทางคณิตศาสตร์ (สิ่งที่จะเรียงลำดับต่อไปนี้ จะเป็นสิ่งที่คอมพิวเตอร์จะให้ความสำคัญ หรือทำงานก่อนลำดับถัดไป)
1. วงเล็บ " ( " , " ) " ไม่ว่าอย่างไรก็ตาม คอมพิวเตอร์จะทำการคำนวณในวงเล็บให้เสร็จก่อนดำเนินการต่อไป
2. การคูณ และ การหาร (*), (/) นับจากซ้ายไปขวา เจอเครื่องหมายใด (คูณ หรือ หาร) ก็จะทำก่อน
3. การบวก และ ลบ (+), (-) จากซ้ายไปขวาเช่นกัน เจอเครื่องหมายใด (บวก หรือ ลบ) ก็จะทำก่อน
มาดูตัวอย่างกันซักหน่อยเพื่อความเข้าใจ
10/5 + (6+1*12)/2 = ?
ตอบ 11 ครับ
ขั้นแรกให้ทำในวงเล็บก่อนครับ โดยในวงเล็บให้ทำเครื่องหมายคูณก่อน จะได้ (6+12) จากนั้นพอคำนวณในวงเล็บเสร็จเราจะได้ 10/5 + 18/2 จากนั้น ในทำการหารจากซ้ายไปขวา (เจออันไหนทำก่อน) จะได้ 2 + 9 = 11 นั่นคือคำตอบ - ตัวดำเนินการในการกำหนดค่า ( Assignment Operator )
เป็นสัญลักษณ์ในการป้อนค่าต่างๆให้กับตัวแปรเพื่อที่จะเก็บค่านำไปประมวลผลต่อ
1. " = " ทำหน้าที่นำ ค่า/ข้อความ จากฝั่งขวาของ "=" ใส่ในตัวแปรที่อยู่ฝั่งซ้ายของ "=" เช่น
int c = 12 ; // เป็นการป้อนค่า 12 ให้กับตัวแปร c
string text = "hello" ; // เป็นการป้อนข้อความ hello ให้ตัวแปร text
2. " += " ทำหน้าที่ บวก ค่าเดิมของตัวแปรฝั่งซ้ายกับ ค่า/ข้อความ ทางฝั่งขวา ก่อนจะรับค่าเข้ามาอีกทีหนึ่ง เช่น
int a = 3 ; // กำหนดค่าเริ่มต้นให้ a เท่ากับ 3 ;
a += 6 ; // มีความหมายเหมือนกับ a = a+6
(ดังนั้น a = 9)
3. " -= " ทำหน้าที่ ลบ ค่าเดิมของตัวแปรฝั่งซ้ายกับ ค่า/ข้อความ ทางฝั่งขวา ก่อนจะรับค่าเข้ามาอีกทีหนึ่ง เช่น
int b = 6;
b -= 3 ; // มีความหมายเหมือนกับ b = b-3
(b = 3)
4. " *= " ทำหน้าที่ คูณ ค่าเดิมของตัวแปรฝั่งซ้ายกับ ค่า/ข้อความ ทางฝั่งขวา ก่อนจะรับค่าเข้ามาอีกทีหนึ่ง เช่น
int x = 10 ;
x *= 2 ; // มีความหมายเหมือนกับ x = x*2
( x = 20 )
5. " /= " ทำหน้าที่ หาร ค่าเดิมของตัวแปรฝั่งซ้ายกับ ค่า/ข้อความ ทางฝั่งขวา ก่อนจะรับค่าเข้ามาอีกทีหนึ่ง เช่น
int y = 20 ;
y /= 2 ; // มีความหมายเหมือนกับ y = y*2
( y = 10 )
6. " %= " ทำหน้าที่ หารเอาเศษ ค่าเดิมของตัวแปรฝั่งซ้ายกับ ค่า/ข้อความ ทางฝั่งขวา ก่อนจะรับค่าเศษเข้ามาอีกทีหนึ่ง เช่น
int g = 20 ;
g %= 6 ; // มีความหมายเหมือนกับ g = g % 6
( g = 2 )
