For Newbie Programmer with C# Language.... มาเรียนเขียนโปรแกรมภาษา C# เบื้องต้นกันเถอะ ที่นี่จะทำให้มุมมองของการโปรแกรมมิ่งของคุณเปลี่ยนไป
วันพฤหัสบดีที่ 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 )
วันเสาร์ที่ 6 มิถุนายน พ.ศ. 2552
Magic Math Chapter 8
แต่จะเป็นการคูณเลข 2 หลักที่ ลงท้ายด้วย 1 นะครับ
เช่น
51 x 81 = ?
ขั้นแรกให้ตั้งหลักหน่วยไว้เลยครับ ก็คือ 1
จากนั้นนำ 8 + 5 = 13 เก็บ 3 ไว้เป็นหลักสิบนะครับ จากนั้น เลข 1 เก็บไว้เพื่อนำไปทดในหลักร้อย
และนำ 8 x 5 = 40 ให้เป็นหลักพัน และ หลักร้อยครับ (หลักร้อยมีการบวกกับตัวทดด้วย)
ฉะนั้น คำตอบในข้อนี้จะได้เป็น
51 x 81 = 4131 ง่ายไหมม !!!! (ไม่เชื่อลองกดเครื่องคิดเลขดูได้เลยครับ)
มาดูตัวอย่างอีกซักข้อแล้วกันครับ
61 x 31 = ?
เหมือนเดิมครับตั้งหลักหน่วย ไว้เป็น 1
จากนั้นนำ 6 + 3 = 9 ตั้งไว้เป็นหลักสิบครับ
จากนั้นนำ 6 x 3 = 18 ครับ
ขั้นตอนสุดท้ายได้เวลารวมคำตอบครับ
61 x 31 = 1891 !!!
วันศุกร์ที่ 5 มิถุนายน พ.ศ. 2552
Magic Math Chapter 7
มาเริ่มกันที่ การคูณเลขสองหลัก ด้วย 99 กันครับ
ดูโจทย์พร้อมกับทำความเข้าใจกันไปเลยแล้วกันนะครับ
53 x 99 = ?
ขั้นแรกให้นำ 53 - 1 = 52 เก็บเอาไว้เป็นหลักพันและหลักร้อยของคำตอบนะครับ
จากนั้น หาผลต่างของ 99 และ 52 ได้เท่าไหร่ นั่นคือ หลักสิบ และ หลักหน่วยของคำตอบครับ
ซึ่งก็ได้เท่ากับ 47 ครับ
ดังนั้น 53 x 99 = 5247 ครับ ง่ายไหม !!!
(ใครไม่เชื่อลองกดเครื่องคิดเลขดูเลยเอ้า)
มาต่อกันที่ การคูณเลขสามหลักด้วย 999 กันครับ
123 x 999 = ?
ขั้นแรกเหมือนเดิมครับให้นำ 123 - 1 = 122 เก็บเอาไว้เป็นหลักแสน หลักหมื่น และหลักพันของคำตอบครับ
จากนั้น หาผลต่างของ 999 และ 122 ครับ ได้เท่าไหร่ นั่นคือ หลักร้อย หลักสิบ หลักหน่วยของคำตอบครับ
ซึ่งก็จะได้เท่ากับ 877
ดังนั้น 123 x 999 = 122877 ครับ มันช่างง่ายดายเสียจริงถูกไหม ?
