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 ครับ มันช่างง่ายดายเสียจริงถูกไหม ?
วันอังคารที่ 2 มิถุนายน พ.ศ. 2552
Object Foundation พื้นฐานความรู้ด้านอ๊อบเจ็ค
อ๊อบเจ็ค (Object)
เกริ่นให้เข้าใจเกี่ยวกับอ๊อบเจ็คกันซักเล็กน้อย ในชีวิตประจำวัน อ๊อบเจ็ค คือ วัตถุที่สามารถสัมผัสได้ทั้งทางตรงและทางอ้อม และมีคุณสมบัติและความสามารถหลายประการ
ในทางโปรแกรมมิ่งนั้น ความหมายของอ๊อบเจ็คไม่ได้แตกต่างจากในชีวิตประจำวันครับเพียงแต่เป็นการอ้างอิงให้รู้ว่า สิ่งที่เราสร้างหรือกำหนดขึ้นในโปรแกรมนั้นๆ มีลักษณะเฉพาะเจาะจง ความสามารถต่างๆ โดยที่เป็นอิสระจากสิ่งอื่นๆ ก็เหมือนกับสิ่งของวัตถุรอบๆตัวในชีวิตประจำวันนั่นเอง ที่มีการทำงานที่ต่างกันโดยสิ้นเชิง และไม่จำเป็นต้องสัมผัสได้เสมอไป
ยกตัวอย่างให้เข้าใจถึงอ๊อบเจ็คง่ายๆ เช่น ดินสอ (นี่ก็คือวัตถุ) คุณสมบัติ (property) ของดินสอ อาจจะมีลักษณะยาวหรือสั้น ตามแต่ชนิด ส่วนประกอบ แกรไฟต์ ความยาว ความกว้าง เส้นผ่านศูนย์กลาง นี่คือคุณสมบัติครับหรือจะเรียนลักษณะทางกายภาพก็ได้เช่นกัน ความสามารถ (Method) ของดินสอก็คือ สามารถทำให้เกิดลวดลายบนแผ่นกระดาษได้ นำไปเคาะทำให้เกิดเสียงได้ เป็นต้น สำหรับที่กล่าวมานี่เป็นการอธิบายอ๊อบเจ็คที่เรียกว่าดินสอนะครับ ดินสอก็มีหลายชนิดใช่ไหมครับ 2B เอย 3B เอย ในเชิงอ๊อบเจ็คจะเรียกชนิดของอ๊อบเจ็คว่า "Class" ครับจะเป็นการบ่งบอกชนิดของอ๊อบเจ็ค
**คุณสมบัติ (Property) ลักษณะทางกายภาพของวัตถุ เช่น ความกว้าง ความยาว ความสูง สี กลิ่น รส (ถ้ามีนะ)
**ความสามารถ (Method) ผลที่เกิดหรือพฤติกรรมเมื่อมีการใช้งานวัตถุ
เนื่องจากภาษา C# ก็เป็นหนึ่งในภาษาที่มีแนวคิดแบบ OOP
( Object Oriented Programming ) 100% จึงทำให้การเขียนโปรแกรมขนาดใหญ่เป็นเรื่องง่ายๆ เพราะการเขียนโปรแกรมจะเป็นในเชิงของวัตถุกล่าวคือ "เป็นอิสระจากกัน" ฟังดูอาจจะงงครับ ให้คุณผู้อ่านนึกถึงเครื่องคอมพิวเตอร์เครื่องหนึ่งที่มี ตู้ระบบรวมอุปกรณ์ต่างๆ อาทิเช่น แผงวงจรหลัก (เมนบอร์ด) การ์ดแสดงผล การ์ดเสียง ฮาร์ดดิส ฟรอปปี้ดิส และอีกมากมาย โอ๊คกำลังจะบอกว่า อุปกรณ์แต่ละมันทำหน้าที่เฉพาะเจาะจงของมันถูกไหมครับ การ์ดแสดงผลก็ควบคุมในส่วนของการแสดงผล การ์ดเสียงก็ควบคุมทางด้านเสียง ฮาร์ดดิสส่วนของการจัดเก็บข้อมูล เห็นไหมครับ แต่ละอุปกรณ์ล้วนมีหน้าที่เฉพาะเจาะจง เปรียบกับการเขียนโปรแกรมก็เช่นเดียวกัน เราจะเขียนการทำงานเฉพาะเจาะจงให้กับอ๊อบเจ็คแต่ละตัว โดยไม่มีความสัมพันธ์ใดๆต่อกัน เมื่อต้องการปรับแก้การทำงาน เราก็สามารถทำในส่วนของอ๊อบเจ็คนั้นๆได้ โดยที่เราไม่ต้องแก้โค้ดใหม่ทั้งหมด ซึ่งจะทำให้เสียเวลา หรือถ้าเป็นโปรแกรมใหญ่ๆก็จะเสียทั้งเงินต้นทุน และเวลามากมาย แนวคิด OOP จึงเป็นอีกทางเลือกของการเขียนโปรแกรมในปัจจุบัน
เพื่อเป็นแนวทางให้เข้าใจถึง อ๊อบเจ็ค อย่างดีก่อน แล้วเราจะมาพูดกันถึงการใช้งานของอ๊อบเจ็คกันอีกครั้ง.......
วันเสาร์ที่ 30 พฤษภาคม พ.ศ. 2552
Data & Data type (ข้อมูลและชนิดของข้อมูล)...!!!
เมื่อข้อมูลดิบถูกป้อนเข้ามาประมวลผลในคอมพิวเตอร์จึงเกิดปัญหาหน่วยความจำเนื่องจากขอบเขตของข้อมูล จึงต้องมีชนิดของข้อมูลเพื่อจำแนก ขอบเขตที่แน่นอนเพื่อที่คอมพิวเตอร์จะได้เตรียมพื้นที่ในการเก็บค่านั้นๆได้เพียงพอ
ข้อมูลชนิดจำนวนเต็ม
คือ ชนิดข้อมูลที่อยู่ในรูปจำนวนเต็มบวก เต็มลบ และ เต็มศูนย์
- int (ใช้พื้นที่ 32 บิต) (ขอบเขต 2^-31 ถึง 2^31 - 1)
- long (ใช้พื้นที่ 64 บิต) (ขอบเขต 2^-63 ถึง 2^63 - 1 )
- byte (ใช้พื้นที่ 8 บิต) (ขอบเขต 0 ถึง 2^8 )
- short (ใช้พื้นที่ 16 บิต) (ขอบเขต 2^-15 ถึง 2^15 - 1)
คือ ชนิดข้อมูลที่อยู่ในรูปจำนวนจริง มีจุดทศนิยม
- float (ใช้พื้นที่ 32 บิต)
- double (ใช้พื้นที่ 64 บิต)
** นิยมใช้ double มากกว่า float แม้ว่าจะใช้พื้นที่มากกว่าก็ตาม ทำให้ค่าที่เก็บนั้นไม่คลาดเคลื่อน
ข้อมูลชนิดตรรกะ
คือ ชนิดข้อมูลที่ใช้เก็บค่าทางตรรกะ ที่มีเพียง จริง และ เท็จ
- bool มีค่าเพียง 2 ค่า คือ true และ false
ข้อมูลชนิดข้อความ
คือ ชนิดข้อมูลที่ใช้เก็บข้อความ (string) และอักขระเพียงหนึ่งตัว (char)
- string (พื้นที่ขึ้นอยู่กับขนาดข้อความ) (สามารถรับอักขระได้หลายตัว)
- char (N/A) (สามารถรับอักขระได้เพียงตัวเดียว)
Variable ( ตัวแปร )....!!!
ก่อนที่จะนิยามตัวแปรต้องขออธิบายซักนิดครับ ถ้าพูดถึงวิชาคณิตศาสตร์ ตัวแปรนั้นจะหมายถึงสิ่งที่เราไม่ทราบค่าและต้องการหาค่าเหล่านั้น แต่ในทางโปรแกรมมิ่ง ตัวแปรคือ สิ่งที่ใช้เก็บค่าของข้อมูลนั้นๆ ในเงื่อนไขหนึ่งๆ
ตัวแปร คือ การตั้งชื่อให้กับหน่วยความจำเพื่อใช้ในการเก็บค่าต่างๆ ตัวแปรแต่ละตัวจะสามารถเก็บค่าได้เพียง 1 ค่าเท่านั้น
ในการเขียนโปรแกรมจะมีการจองพื้นที่หน่วยความจำ เพื่อใช้เก็บข้อมูล และต้องกำหนดชื่อเรียกเพื่อนอ้างอิงพื้นที่หน่วยความจำที่จอง ข้อมูลในตัวแปรสามารถเปลี่ยนแปลงได้ตลอดเวลา
กฏการตั้งชื่อตัวแปร
- ห้ามนำคำสงวน (reserved word) มาตั้งเป็นชื่อตัวแปร
- ชื่อตัวแปรจะต้องขึ้นต้นด้วย ตัวอักษรภาษาอังกฤษ อักขระพิเศษ @
และ _ (underscore) เท่านั้น - ตัวแปรจะต้องไม่ขึ้นต้นด้วยตัวเลข เช่น 9number, 105Ages ถือว่าผิด
- ชื่อตัวแปรจะต้องไม่ประกอบไปด้วยอักษรพิเศษทุกชนิด
(เครื่องหมาย /, +, -, *, %, !) และไม่มีการเว้นวรรค - ตัวอักษรใหญ่และเล็กจะถือว่าไม่เหมือนกัน เช่น mVar, MVAR จะถือว่าเป็นคนละตัวแปร
- ไม่ควรใช้ชื่อยาวเกินไป และควรตั้งให้เหมาะสมกับการนำไปใช้ เช่น ตัวแปรเก็บอายุก็ควรตั้งว่า Age เป็นต้น
ตัวอย่างการตั้งชื่อตัวแปรที่ถูก
- _Number (ถูกต้องเพราะขึ้นต้นด้วย _ และประกอบไปด้วยตัวอักษร)
- @humor123
- InputNumber (ถูกต้องเพราะขึ้นต้นด้วยตัวอักษร)
ตัวอย่างการตั้งชื่อตัวแปรที่ผิด
- 12Vat (ผิดเพราะ ขึ้นต้นด้วยตัวเลข)
- inter-net (ผิดเพราะมีอักขระพิเศษ - )
- case (ผิดเพราะ case เป็นคำสงวน)
การประกาศตัวแปร
ก่อนที่เราจะได้ใช้งานตัวแปร เราจะต้องทำการประกาศตัวแปรเสียก่อน เพื่อที่จะให้โปรแกรมได้จองพื้นที่หน่วยความจำ ไว้สำหรับรองรับค่าที่จะรับเข้ามาเก็บไว้ในตัวแปรต่อไป ขนาดของหน่วยความจำที่ใช้จะขึ้นอยู่กับชนิดของตัวแปร
(ชนิดของตัวแปร) (ชื่อของตัวแปร) ; // เป็นการประกาศค่าตัวแปรโดยที่ตัวแปรจะไม่มีค่าใดๆในหน่วยความจำ
เช่น int number ; // เป็นการประกาศตัวแปร number ชนิด int (จำนวนเต็ม)
เราสามารถประกาศตัวแปรได้หลายตัวพร้อมกัน
(ชนิดของตัวแปร) (ชื่อของตัวแปร 1), (ชื่อของตัวแปร 2), (ชื่อของตัวแปร 3), ...., (ชื่อของตัวแปร n) ;
เช่น int a,b,c,d,e ;
เราสามารถประกาศตัวแปรพร้อมกับใส่ค่าเริ่มต้นให้กับตัวแปรได้
(ชนิดของตัวแปร) (ชื่อของตัวแปร) = ค่าที่ของตัวแปร ;
เช่น double pi = 3.14 ; // เป็นการประกาศค่าตัวแปร pi ชนิด double (จำนวนจริง) พร้อมกับใส่ค่าให้กับตัวแปร pi
สำหรับการประกาศค่าของ string และ char จะมีการกำหนดค่าเริ่มต้นดังนี้
string text = "Oak" ; // จะมีเครื่องหมาย " มาครอบข้อความเอาไว้
char word = 'O' ; // จะมีเครื่องหมาย ' มาครอบข้อความเอาไว้
** สำหรับรายชื่อชนิดของข้อมูลให้ดูในหัวข้อ Data & Data type ครับ
การประกาศตัวแปรค่าคงที่ ( Constant )
ค่าคงที่ในโค้ดโปรแกรมมีหน้าที่เฉพาะเจาะจงในแต่ละค่า เช่น ค่า พาย ค่า e หรือค่าอะไรก็แล้วแต่ ซึ่งเมื่อเราประกาศตัวแปรค่าคงที่มาแล้วนั้น
จะไม่สามารถเปลี่ยนแปลงค่าได้อีก ไม่ว่าในส่วนของโปรแกรมใดๆ
รูปแบบการประกาศตัวแปรค่าคงที่
const (ชนิดของตัวแปรค่าคงที่) = (ค่าที่ต้องการ) ;
*** การประกาศตัวแปร const จะต้องประกาศพร้อมกับใส่ค่าให้กับตัวแปร จะประกาศเพียงชื่อไม่ได้
*** const int oak ; (ถือว่าผิด จะไม่สามารถรันโปรแกรมได้) x x x x x x
const double PI = 3.14159 ;
** ส่วนใหญ่มักจะตั้งชื่อค่างคงที่ด้วยตัวอักษรใหญ่
ส่วนประกอบในโค้ดของภาษา C#...!!!
เนื่องจากภาษา C# นั้นเป็นภาษาระดับสูงที่มีเครื่องหมายต่างๆมากมาย ก่อนเราจะเขียนโค้ดกัน มาทำความรู้จักกับเครื่องหมายต่างๆของภาษา C# กันก่อนดีกว่าครับ
Comment (ส่วนอธิบายโค้ด)
คือ ส่วนที่ compiler จะไม่ทำการแปลคำสั่ง ใช้เพื่ออธิบายโค้ดที่เราเขียนขึ้นครับ
- // คำอธิบาย (ในกรณีที่คำอธิบายมีบรรทัดเดียว)
- /*คำอธิบาย
คำอธิบาย (ในกรณีที่คำอธิบายมีหลายบรรทัด)
คำอธิบาย*/
Block (ขอบเขตคำสั่ง) ( "{", "}" )
คือ สัญลักษณ์ที่จะบอกขอบเขตการทำงานของแต่ละ function หรือ procedure และเป็นส่วนที่บรรจุคำสั่งต่างๆ (ตั้งแต่ 1 บรรทัดขึ้นไป) หรืออาจจะบรรจุบล๊อคย่อยๆได้อีกหลายบล๊อคเช่นกัน
- {...คำสั่ง...} // ตัวอย่างของบล๊อคที่บรรจุคำสั่งเพียงบรรทัดเดียว
(ในกรณีที่มีคำสั่งเพียง 1 บรรทัด ไม่จำเป็นต้องมี { } ก็ได้) - {
.....คำสั่ง 1 ;
.....คำสั่ง 2 ; // ตัวอย่างบล๊อคที่บรรจุคำสั่งหลายบรรทัด
.....คำสั่ง 3 ;
} - {
...{
........คำสั่ง 1 ; // ตัวอย่างบล๊อคที่บรรจุบล๊อคย่อย
...}
}
Semi Colon เครื่องหมายสิ้นสุดคำสั่ง (;)
คือ สัญลักษณํแทนการสิ้นสุดคำสั่งแต่ละคำสั่ง (แต่ละคำสั่งจะต้องปิดท้ายด้วย ; ซึ่งหมายถึงจบคำสั่งนั้นๆ) จะไม่ใช้ในการปิดบล๊อค (ขอบเขตของคำสั่ง)
- คำสั่ง 1;
คำสั่ง 2;
คำสั่ง 3; - คำสั่ง 1; คำสั่ง 2; คำสั่ง 3;
Method (ความสามารถของโปรแกรม)
คือ ส่วนของโปรแกรมที่อยู่ภายนอกโปรแกรมหลัก โดยจะนิยมเรียกกันว่าโปรแกรมย่อย (sub program) แนวคิดของ Method ก็คือการรวมคำสั่งที่ถูกใช้บ่อย และเราไม่จำเป็นต้องสนใจการทำงานภายในของ Method
Method สามารถแบ่งได้เป็น 2 ประเภท คือ
- Function (ฟังก์ชั่น)
เป็น Method ที่จะมีการส่งค่ากลับ เช่นเมื่อเราเรียกใช้งาน เราจะต้องนำตัวแปรมารับค่าที่ถูกส่งมาจาก Function
(จะขอกล่าวโดยละเอียดในบทถัดไป) - Procedure (โพรซีเจอร์)
เป็น Method ที่ไม่มีการส่งค่ากลับคืน เมื่อเราเรียกใช้จะไม่มีตัวแปรใดๆมารับค่า
Identifier (ไอเด็นติฟายเออร์)
คือ ชื่อที่ใช้สำหรับกำหนดให้กับส่วนประกอบต่างๆของโปรแกรม ไม่ว่าจะเป็น ตัวแปร ฟังก์ชั่น โพรซีเจอร์
(เป็นชื่อที่เราจะสามารถตั้งให้กับตัวแปรเก็บค่าต่างๆหรือชื่อฟังก์ชั่นได้ โดยมีเงื่อนไขตามแต่ละภาษากำหนด)
ประเภทของ Identifier มีดังนี้ คือ
- Reserved Word (คำสงวน)
คือ คำที่มีความหมายและเงื่อนไขการใช้ที่แน่นอน และไม่สามารถนำไปตั้งเป็นชื่อของตัวแปรได้
auto , string , int, double, goto, case, do, while, if, else, break
float, for, foreach, continue, default, long, void, enum, struct
stack, const, return, switch, in, class, checked, override, event
null, lock, random, private, public, protected, char, ref
** คำสงวนไม่จำเป็นต้องท่องนะครับ เมื่อได้ใช้บ่อยๆก็จะคุ้นเคยโดยอัตโนมัติ
** คำสงวนภายในโปรแกรม Visual Studio จะแสดงเป็นสีน้ำเงิน - User-Define Identifier
คือ ชื่อที่ผู้เขียนโปรแกรมจะต้องตั้งให้กับตัวแปร ฟังก์ชั่น และ เม็ดตอด ต่างๆ เพื่อเป็นการระบุหน้าที่
การใช้งานที่แตกต่างกันของแต่ละตัวแปร (หลักการตั้งชื่อตัวแปรจะขอกล่าวในบทถัดไป)
Chapter 6 'bout Magic Math...!!!
คราวนี้โอ๊คจะบอกเทคนิคในการคูณเลขสามหลักและเลขสี่หลักกับ เลข 11 ครับ ซึ่งจะเป็นเทคนิคที่เข้าใจง่ายและสามารถนำไปใช้ได้ดีด้วยครับในชีวิตประจำวันครับ มาดูเทคนิคกันเลยครับ
125 x 11 = ?
จากโจทย์นะครับ ให้แยก 125 ออกเป็น 12 กับ 5 นะครับ จากนั้นบวกกัน จะได้ 17 ใช่ไหมครับ
จากนั้นในส่วนของคำตอบให้เราคิด รอไว้เลยครับคือ 12_5 แต่ในช่องว่างเราจะใส่ตัวเลขลงไปเพียงหลักเดียวเท่านั้นนะครับ คือเลข 7 ส่วนเลข 1 จะนำไปทดในหลักถัดไปครับ เพื่อให้เข้าใจงั้นมาดูผลลัพธ์กันครับ
125 x 11 = 1375 (ในช่องว่างนำ 7 ไปใส่ จากนั้นนำ 1 ทดไปบวกกับเลขสองในหลักร้อย) นี่คือผลลัพธ์ครับ ง่ายไหม ?
มาดูการคูณเลขสี่หลักกับ 11 กันบ้างครับ
1547 x 11 = ?
จากโจทย์ให้จับ 1547 แยกออกเป็นสองส่วนครับ คือ 154 กับ 547 แล้วบวกกันครับ ได้เท่ากับ 701 นะครับเก็บไว้ในใจได้เลย จากนั้นเหมือนกับเลขสามหลักครับ เขียนคำตอบรอไว้เลยครับ 1___7 ในช่องว่างให้นำเลขที่คำนวณมาได้มาใส่ได้เพียงสามหลักนะครับ ที่เหลือนำไปทด เพื่อให้เข้าใจเรามาดูผลลัพธ์กันครับ
1547 x 11 = 17017 สำหรับคำตอบมันห่างจากคำตอบที่เราคะเนไว้ตอนแรกมากเหมือนกัน เกิดจากตัวทดครับ เราต้องสังเกตุและทดให้คล่องครับ ไม่เช่นนั้นอาจได้คำตอบที่ผิดได้นะครับ
วันศุกร์ที่ 29 พฤษภาคม พ.ศ. 2552
อธิบายการเปิดใช้งาน Visual Studio 2008...!!!
วันจันทร์ที่ 25 พฤษภาคม พ.ศ. 2552
Chapter 5 'bout Magic Math...!!!
ขอยกตัวอย่างเลยแล้วกันนะ
262 x 6 = ?
(ควรฝึกบวกเลขให้คล่องแคล่วเพื่อจะได้ทำให้การคูณเป็นเรื่องง่ายนะครับ)
เทคนิคอย่างแรกที่จะเรียกความมั่นใจให้กับเราคือ การใช้วิธีคูณจากซ้ายไปขวา (เคยทำไหมล่ะ) ถ้าถามว่าทำไมต้องทำแบบนี้ ก็เพราะถ้าเกิดเราคูณจากขวาไปซ้าย คิดดูว่ามันสับสนแค่ไหนเมื่อได้คำตอบมา (แน่นอนว่าคูณจากขวามาซ้ายต้องได้หลักหน่วยก่อนถูกไหมครับ จากนั้นพอได้คำตอบ ต้องมาเรียกสลับตำแหน่งกันอีก โอยช่างสับสนดีแท้ แหะๆ) โอ๊คขออธิบายจากโจทย์ที่ให้เลยแล้วกันนะครับ
จริงวิธีฝึกอีกวิธีที่ให้ผลได้เร็วคือ "การพูด" จะพูดออกเสียงหรือพูดในใจก็ได้ไม่ผิด เพื่อช่วยให้เราไม่ลืมตัวเลขที่เพิ่งคำนวณเสร็จ 2 x 6 ได้ 12 (คิดในใจ) แต่แอบเหล่เห็นว่าหลักต่อไป 6 x 6 = 36 ฉะนั้นเวลาเราพูดต้องจะต้องบอกผลลัพธ์ที่บวกตัวทดมาแล้ว (ยังไง ?) ก็พูดออกมา 1 พัน 3 ร้อย..... เป็นหกสิบไม่ได้เพราะอะไรครับ
(2x6 = 12) เช่นกัน ต้องบวกผลลัพธ์กับตัวทด (อย่าสับสนหลักเชียวนะ) ....(ต่อจากที่พูดตอนแรก) .... 7สิบ 2
ให้เราฝึกพูดไปด้วยเพื่อที่คำตอบในหัวของเราจะได้ไม่หายไปเสียก่อนๆที่จะคำนวณโจทย์ได้หมด โอ๊คเชื่อว่าจะทำได้คล่องแคล่วก็ต่อเมื่อเราฝึกฝนตัวเองบ่อยๆนะครับ ไม่ใช่เพียงรู้วิธีแล้วจะทำได้รวดเร็วกันทุกคน
วันอาทิตย์ที่ 24 พฤษภาคม พ.ศ. 2552
Chapter 4 'bout Magic Math...!!!
(จะไม่ขอพูดถึงเลขสองหลักที่มีหลักหน่วยเป็นศูนย์แล้วกัน เพราะมันเป็นเรื่องง่าย)
79 x 6 = ? ..... เชื่อว่าบางคนไม่สามารถคิดในใจได้ (อาจทำได้แต่มีกระบวนการที่ไม่เป็นระเบียบ) จะขอเสนอวิธีคิดที่เป็นระเบียบให้ดูนะครับ ปกติเราจะคุ้นเคยกับการคูณเลข 1 หลักด้วยเลข 1 หลัก (สูตรคูณ) ฉะนั้นโอ๊คจะนำความเคยชินตรงนี้มานำเสนอแล้วกัน
(70+9) x 6 เปลี่ยนโจทย์ให้อยู่ในรูปแบบนี้ เราก็จะคูณกระจายเข้าไป
7 x 6 = 42 แต่ต้องเติมศูนย์ไปเพราะ 7 เป็นหลักสิบ เป็น 420 ครับ
9 x 6 = 54 จากนั้นนำ 420 + 54 = 474 สำหรับวิธีคิดให้ชำนาญต้องหมั่นฝึกฝนครับ จากวิธีนี้โอ๊คได้เปลี่ยนการคูณที่วุ่นวายมาเป็นการคูณด้วยวิธีง่ายๆแล้วใช้การบวกมาช่วยแทน
มาดูตัวอย่างกันอีกซักนิดเพื่อให้เข้าใจนะครับ
86 x 7 = ?
(80+6) x 7
8 x 7 = 56 แต่ต้องเติมศูนย์เพราะ 8 เป็นหลักสิบ เป็น 560 นะครับ
6 x 7 = 42 จากนั้นนำ 560 + 42 = 602 ครับ
การคูณเลข 2 หลักด้วยเลข 1 หลัก อาจจะยังไม่ใช่เรื่องยากเย็นเท่าใดนัก แต่โอ๊คก็หวังว่ากระบวนการคิดที่เป็นระบบนี้จะช่วยให้ผู้อ่านสามารถนำไปใช้ได้ โดยไม่ต้องพึ่งเครื่องคิดเลขนะครับ
วันเสาร์ที่ 23 พฤษภาคม พ.ศ. 2552
Prepare for C# Language learning...!!!
ภาษา C# (C# Programming Language) จะเขียนว่า C Sharp (ซี-ชาร์พ) ก็ได้ไม่ผิด เราๆอาจจะเคยได้ยินภาษาอื่นๆที่คล้าย C# เช่น ภาษา C, Java, C++ ซึ่งแน่นอนมันเป็นที่มาของ C# นั่นเอง (ตัว C เป็นตัวบ่งบอกให้รู้ว่า C# มีต้นกำเนิดมาจาก C นั่นเอง) เครื่องหมาย # ดังที่เคยพูดคือ เป็นสิ่งที่แสดงถึงความก้าวหน้ากว่า C++ ไปอีกระดับนึง (มอง # ให้เป็นเครื่องหมาย + ซ้อนกันสี่มุมสิครับ อาจมองแบบ C++++ ก็ได้ไม่ผิด) ถ้าจะให้พูดกันเข้าใจง่ายๆอีกก็คือ C# ได้รวบรวมข้อดีของภาษาต่างๆเช่น Java, Delphi, C++ เข้าไว้ด้วยกัน อีกทั้งยังมีความเรียบง่ายกว่า
จะดูไม่ดีเลยถ้าเราจะไม่พูดถึงบิดาของภาษา C# กันซักหน่อย (C# เวอร์ชั่นต่างๆทั้งหลายที่ Microsoft พัฒนา ก็มีท่านคนนี้แหละครับเป็นต้นแบบที่มั่นคงของภาษาที่ได้รับความนิยมนี้)ท่านคือ Anders Hejlsberg (แอนเดรส ฮาเยสเบิร์ก)จะให้พูดกันจริงๆก็คือ ใครๆก็สามารถสร้างภาษาใหม่ๆขึ้นได้ แต่ความเรียบง่าย และสวยงามของ C# ที่ Hejlsberg ได้บรรจงสร้างมาให้เหล่าโปรแกรมเมอร์ยุคใหม่ใช้กันอย่างสะดวกสบาย เป็นอะไรที่หาที่เปรียบไม่ได้อีกแล้ว
แม้ต้นกำเนิดจะมาจาก Anders Hejlsberg นั้น แต่ไมโครซอร์ฟต้องการให้ภาษานี้ "อยู่ไปอีกนาน" จึงได้พัฒนา C# เรื่อยมาจนปัจจุบันเป็นเวอร์ชั่น C# 2008 แล้ว (2010 ก็ใกล้จะออกมาแล้วเหมือนกันนะ) อีกประการที่ควรเลือก C# ของไมโครซอร์ฟเพราะ เราสามารถมั่นใจได้ว่า ถ้าเราศึกษาตรงนี้ไปจะไม่เสียเปล่า เพราะจะมีการพัฒนาต่อไปเรื่อยๆ (ไม่ตกยุคนั่นเอง ไม่ต้องกลัวว่าไมโครซอร์ฟจะทิ้งเรา)
ฟรีครับฟรี ไมโครซอร์ฟเค้าใจดีปล่อย Visual C# 2008 Express Edition ซึ่งเป็นเวอร์ชั่นสำหรับการศึกษา แม้จะขาด component และคำสั่งบางส่วนไป แต่ในระดับเริ่มต้นก็ยังไม่ต้องใช้ครับ (นอกจาก C# แล้วภาษาอื่นก็มีเช่น Basic, C++) สำหรับลิ้งดาวโหลด โอ๊คได้ทำไว้ให้ข้างล่างแล้วครับ
Download Visual C# 2008 Express Edition
เมื่อเข้าลิ้งไปจะเห็นเป็นช่องๆ มีทั้ง Visual Basic , Visual C++ แต่ให้เราเลือก Visual C# (เลือกภาษาอังกฤษ)แล้วคลิกที่ Download ครับ
วันพฤหัสบดีที่ 21 พฤษภาคม พ.ศ. 2552
Chapter 3 'bout Magic Math...!!!
สำหรับเทคนิคนะครับเวลาเจอการบวกเลขที่มีจำนวนมากๆอย่างเช่นการบวก
456+975 = ? นะครับ
การบวกเลขจากซ้ายไปขวาจะมีประโยชน์ต่อเมื่อเจอตัวเลขมากๆหลักเข้า ขั้นตอนคือให้บวกเลขจากซ้ายไปขวาโดยที่สายตาควรเหล่ดูว่าหลักถัดไปมีตัวทดหรือไม่ ถ้ามีให้บวก ผลบวกกับตัวทดไปเลยอัตโนมัติ (เช่นในตัวอย่าง 9+4 = 13 แต่เหล่เห็นว่า 7+5 มันมีตัวทด ก็บวก 13 ด้วย 1 = 14 ครับ) ทำเช่นนี้จากซ้ายไปขวา
สำหรับวิธีนี้บางคนทำครั้งแรกอาจจะยังไม่ชิน แต่ต้องฝึกฝนอย่างต่อเนื่องครับ ก็หวังว่าบทความนี้จะเป็นประโยชน์กับผู้อ่านทุกคนครับ
วันพุธที่ 20 พฤษภาคม พ.ศ. 2552
Next Chapter 'bout Magic Math.....!!!
สำหรับเลขยกกำลัง 2 หลักนะครับ (จะไม่พูดถึงที่ลงท้ายหลักหน่วยด้วย 5 )
เช่น 76กำลัง2 เชื่อไหม รู้เทคนิคก็คิดได้ 10 วิ เนี่ย โอ๊คคิดได้ 5776
สำหรับเทคนิค ให้ทำให้ 76 เป็นจำนวนเต็มสิบโดยการลบนะ ยังไง เอ้าเช่น
76-6 = 70
เก็บ 70 ไว้ในหัวก่อนครับ จากนั้นบวกเพิ่มไปจากที่ลบไป 76+6 = 82 เก็บไว้ครับ
จากนั้นนำ 82 x 70 เลย จะได้เท่ากับ 5740 นั่นเอง แต่เก็บไว้ครับยังไม่เสร็จ
จากนั้นให้ดูว่าจำนวนที่นำไปบวกไปลบคืออะไร (ในตย.นี้คือ 6) ให้นำ 6ยกกำลัง2 บวกเข้าไปกับ 5740
คำตอบสุดท้ายคืออะไรครับ 5740+36 = 5776 ตรงกันพอดี !!! (ใครไม่เชื่อกดเครื่องคิดเลขตามได้ไม่ผิด)
สำหรับคนที่ไม่เข้าใจ โอ๊คขอเขียนเป็นสมการคร่าวๆให้ดูครับ
76^2 = (76-6) x (76+6) + 6^2 มันง่ายขึ้นตรงที่ เราจะคูณได้ง่ายขึ้น ไม่เชื่อลองฝึกคิดในหัวดูครับ ถ้าใช้วิธีธรรมดามันคงทำได้ยากแน่นอนอยู่แล้ว
มาดูเลข 3 หลักกันบ้าง
158 กำลัง2 ได้เท่ากับเท่าไหร่เอยย 24964 ถูกไหม
สำหรับวิธีคิดก็ไม่ต่างกันมาก เพียงแต่จะคิดได้ช้าหน่อยครับ เพราะเลขเยอะ แหะๆ
ขั้นแรกให้นำ 158-58 = 100 เก็บไว้ และ 158+58 = 216 เก็บไว้ แล้วจับ คูณกันครับ 216 x 100 = 21600 เก็บไว้ครับ จากนั้นเอาตัวที่บวกลบมาคิดนะครับ (ในตย.นี้คือ 58 ให้ทำเหมือนกานยกกำลังสอง 58 ใช้เทคนิคยกกำลังเลขสองหลัก) ให้นะ 58+8 = 66 เก็บไว้ และ 58-8 = 50 เก็บไว้ จับมาคูณกันจะได้
50 x 66 = 3300 ยังไม่เสร็จครับ จากนั้น นำตัวที่บวกลบมากำลังสอง คือ
8^2 = 64 นำไปบวกกับ 3300 จะได้ 3300+64 = 3364 แล้วจากนั้นนำไปบวกกับ 21600 จะได้ 21600+3364 = 24964 !!!
สำหรับใครที่ยังคิดไม่ทัน ตอนนี้โอ๊คก็กำลังฝึกอยู่ครับ (ข้อนี้ประมาณ 30 วินาที) ลองเอาส่วนนี้ไปคิดเล่นก็ดีครับ บริหารสมอง ก็หวังว่าผู้อ่านจะได้อะไรติดหัวบ้างนะครับ แหะๆ ปัญหาของการคิดวิธีนี้ในหัวโอ๊คคิดว่าเป็นปัญหาของเรื่องการจำตัวเลขที่คิดไว้ชั่วครู่ แล้วไปคิดคำนวณอีกอย่างนึง พอกลับมาก็ลืมเสียแล้ว ปัญหานี้ถ้าฝึกบ่อยๆก็จะคล่องเองครับ ยังไงก็เอาไปฝึกๆกันครับ ไม่มีใครทำได้ถ้าไม่หมั่นฝึกฝนนะครับ
วันพฤหัสบดีที่ 14 พฤษภาคม พ.ศ. 2552
First Time in WPF "SpeechSample"
ไหนๆขอโชว์ผลงานแรกใน WPF ก่อนแล้วกัน สำหรับโปรแกรม "SpeechSample" เป็นโปรแกรมที่เขียนในรูปแบบ WPF แต่ขอบอกเอาไว้ก่อนว่า หน้าตาโปรแกรมยังไม่สวยงามดังที่ได้กล่าวยกยอไปจากย่อหน้าบนนะครับ เพราะว่าโอ๊คใช้ปุ่มจากที่โปรแกรมได้เตรียมมาให้ ยังไม่ได้ออกแบบเอง (กำลังอยู่ในระหว่างศึกษา) SpeechSample เป็นโปรแกรมที่สามารถอ่านออกเสียงข้อความที่เราพิมพ์ลงไปได้ครับ (หรือจะโหลด text file มาให้มันอ่านก็ได้ครับ)
วิธีการใช้ SpeechSample
- เปิดไฟล์ .txt หรือพิมพ์ข้อความลงในกล่องข้อความ
- กด Speak โปรแกรมจะทำการออกเสียงคำที่เราพิมพ์ (ได้เฉพาะภาษาอังกฤษ)
- สามารถปรับเสียงและความเร็วในการพูดได้
วันพุธที่ 13 พฤษภาคม พ.ศ. 2552
Still working on My New Project BrainSaving...!!!!
โอ๊คเคยได้ยินผลงานวิจัยของญี่ปุ่น เกี่ยวกับการป้องกันและรักษาโรคสมองเสื่อมและอัลไซเมอร์ ซึ่งได้ผลการวิจัยเป็นที่แน่ชัดว่า สมองเราเมื่อไม่ได้ถูกใช้งานบ่อยๆ มันก็จะเสื่อมไปตามอายุขัย แต่หากใช้งานมันทุกๆวัน บริหารทุกๆวัน มันก็จะอยู่กับเราได้นานขึ้น สำหรับโรคสมองเสื่อมและอัลไซเมอร์จะพบมาในผู้ใหญ่และคนสูงอายุ ซึ่งบางคนที่เป็นโรคนี้อาจได้รับผลกระทบอย่างอื่น แต่... ส่วนใหญ่ก็มาจากการไม่ค่อยได้บริหารสมองหรือมีความเครียดสูงนั่นเอง สำหรับใครๆที่เคยเข้าร้านหนังสือแล้วไปเจอะกับหนังสือ "เลขคณิตพิชิตสมองเสื่อม" แล้วล่ะก็จะร้องอ๋อทันที เพราะหนังสือเล่มนี้ได้อธิบายผลการวิจัยไว้อย่างละเอียด เช่นว่า เมื่อคุณดูทีวีสมองส่วนไหนบ้างที่ทำงาน เวลานั่งอ่านหนังสือในใจเอย เวลาเล่นเอย แต่ผลการวิจัยที่น่าแปลกใจก็คือ การคิดเลขบวกลบเลขง่ายๆ สมองกลับถูกใช้งานมากกว่าการคิดเลขยากๆเสียอีก ด้วยความที่อยากฝึกอย่างในหนังสือแต่ก็ไม่อยากเสียเงิน (น้าน) ก็เลยคิดโปรเจค โปรแกรมรักษาสมองซะเลย เอ้ารักษายังไงบางคนยังงง ก็อย่างที่กล่าวไปข้างบนนั่นแหละ คิดเลขง่ายๆช่วยกระตุ้นสมองให้เสื่อมช้าลงได้ครับ โดยตัวโปรแกรมจะคล้ายกับการฝึกในหนังสือแต่จะมีเพิ่มเติมในสิ่งทีหนังสือทำไม่ได้ครับ (ยังไม่ขอเปิดเผย) โดยสามารถเลือกระดับความยากง่ายได้น่ะ สำหรับใครที่คิดว่าควรเพิ่มเติมอะไรก็ช่วยแนะนำได้ครับ โดยโปรแกรมนี้จะปล่อยให้เป็น Freeware ไปเลยเมื่อพัฒนาเสร็จครับ ที่บ้านใครมีผู้ใหญ่หรือคุณตาคุณยายที่เรารัก ก็เป็นการเหมาะที่จะให้ท่านได้บริหารสมองกับ
โปรแกรม BrainSaving นะครับ ........
Magic in Math.....!!!
การคูณจำนวน 2 หลัก ด้วย 11
32 x 11 = 352
56 x 11 = 616
ให้สังเกตุคำตอบในหลักสิบครับ เกิดจากการนำ จำนวนของตัวตั้งบวกกันนั่นเอง (ถ้าเกิดเก้าต้องทดในหลักถัดไป)
เช่น 97 x 11 = 1067
เทคนิคการยกกำลัง (ใช้ได้กับเลขสองหลักที่ลงท้ายด้วย 5)
35^2 = 1225
มันอาจไม่แปลกถ้าคิดเครื่องคิดเลข หรือทดในกระดาษ แต่ถ้าคิดในใจล่ะ ....... ไม่ยากครับ มีเทคนิคมาฝากอีกเช่นกัน
ให้สังเกตุคำตอบนะครับ แล้วแยกจำนวนออกเป็นคู่ เช่น 12 กับ 25 (จริงๆ 2 หลักหลังจะเป็น 25 ตลอดเพราะลงท้ายด้วย 25)
12 เกิดจาก 3 x (3+1) = 12
25 เกิดจาก 5 x 5 = 25
เอ้าเพื่อความมั่นใจโอ๊คจะยกตัวอย่างเพิ่มครับ
75^2 = ......... 5625 ถูกไหมครับ ไม่เชื่อกดเครื่องคิดเลขดูเลยเอ้า !
ยังไม่จบครับ มีเทคนิคการคูณมาฝากด้วย
สำหรับเลข 2 หลักมาคูณกัน แล้วเลขหลักสิบมีค่าเท่ากัน หลักหน่วย รวมกันได้สิบ
เช่น 56 x 54 = 3024
30 เกิดจาก 5 x (5+1)
24 เกิดจาก 6 x 4
เห็นไหมครับ มันไม่ใช่เรื่องยากอีกต่อไป ก็หวังว่าเกร็ดความรู้เล็กๆนี้จะเป็นประโยชน์กับทุกคนที่ได้อ่านนะครับ
วันจันทร์ที่ 11 พฤษภาคม พ.ศ. 2552
Advance Timer my Second Project....!!!
เวลาไม่เคยรอใครครับ ทุกชีวิตบนโลกต้องทำงานแข่งกับเวลา ลมหายใจเราเพียงไม่กี่วินาทีโลกก็มีสิ่งใหม่ๆก็ขึ้นมาตลอด พอโปรเจคแรกเสร็จโอ๊คก็เลยลองทำโปรเจคใหม่ทันที หลังจากพ่อโอ๊คสอนใช้ Timer ก็เลยลองเอามาคิดเล่นๆว่าจะทำอะไรต่อ คิดไปคิดมาก็มาลงเอยที่เจ้านาฬิกาจับเวลาตัวนี้ เพียงแต่พัฒนามาเรื่อยๆจากที่เป็นเพียง Timer ก็เลยเปลี่ยนชื่อซะเลยเป็น Advance Timer เพราะว่าเป็นนาฬิกาจับเวลาที่มีออฟชั่นเพิ่มขึ้นมาจากที่คิดเอาไว้เยอะเหมือนกัน (ใครคิดว่าควรมีอะไรเพิ่มเติมแนะนำโอ๊คได้เลยครับ) สำหรับตัวนี้เป็นเพียงเวอร์ชั่น BETA ที่ไม่เคยเอาไปปล่อยที่ไหนเลย (เพราะว่าไปปล่อยกลัวไม่มีคนสนใจน่ะ) สำหรับฟีเจอร์ของนาฬิกานะครับ โอ๊คจะลิสให้ดูง่ายๆนะครับ (ฟีเจอร์อาจเปลี่ยนแปลงเมื่อ Version เต็มออกนะครับ อันนี้เป็นเพียง BETA เท่านั้น)
ความสามารถหลักของโปรแกรม Advance Timer (Version BETA)
- จับเวลาเดินหน้า และถอยหลัง
- คำนวณวันและเวลา แบบแจกแจง (วัน/ชม/นาที/วินาที)
- คำนวณวันและเวลา แบบแยกประเภท
- ปรับแต่งสีของเวลา
- ปรับแต่งข้อความที่ใช้บันทึกในนาฬิกาจับเวลา
- ปรับแต่งข้อความเตือน เมื่อหมดเวลาของนาฬิกานับถอยหลัง
ความสามารถที่คาดว่าจะมีในอนาคต
- ตั้งเวลาปิดเครื่องคอมพิวเตอร์
- ใช้จัดเวลาทำงาน
- รองรับธุรกิจร้านเกม(อันนี้คิดเล่นๆครับแหะๆ คงเป็นจริงยาก แต่จะลองดู)
- ปรับแต่งพื้นหลังของโปรแกรมได้ตามใจชอบ
- ใช้เตือนความจำสำหรับสิ่งที่ต้องทำในแต่ละวัน
สำหรับเวอร์ชั่นตัวเต็มยังไม่มีกำหนดออกครับ จึงอยากให้ออกความเห็นกันว่าควรเพิ่มอะไรลงไปหรือแก้ไขตรงไหนเพิ่มเติมดีครับ สำหรับโปรเจคนี้จะเปิดให้เป็น OpenSource ครับ สำหรับ OpenSource ก็คือโค้ดที่ปล่อยให้โหลดไปใช้ฟรีๆ หรือจะเอาไปพัฒนาต่อได้ครับ เพื่อให้ตรงตามความต้องการของผู้ใช้ (โปรแกรมนี้เขียนด้วย Visual C# 2008)
สำหรับผู้ต้องการโหลดไปใช้งาน Download Here
สำหรับกรณีต้องการโหลดไปศึกษา Download OpenSource
วิธีใช้งาน Advance Timer (Version Beta 0.805)
- การใช้งานในส่วนของนาฬิกาจับเวลา จะมีปุ่มเริ่มจับเวลา เมื่อทำการคลิกที่ปุ่มจะทำให้นาฬิกาเริ่มจับเวลา แล้วตัวปุ่มนี้จะเปลี่ยนเป็นหยุดเวลา เพื่อให้สะดวกในสถานการณ์ที่ต้องการหยุดเวลาทันที
- ในส่วนของนาฬิกาจับเวลา สามารถบันทึกเวลาที่ได้จับเอาไว้ได้ (ข้อความที่ใช้สื่อข้อมูลเวลาสามารถปรับเปลี่ยนได้ใน tab ปรับแต่ง)
- ในส่วนของนาฬิกานับถอยหลัง ผู้ใช้สามารถตั้งเวลาได้ตามต้องการ แล้วโปรแกรมจะคำนวณให้เวลาออกมาในรูปแบบที่เข้าใจง่าย เช่น 99 วินาที คือ 1 นาที 30 วินาที
- ปุ่มเริ่มนับถอยหลังจะคล้ายคลึงกับส่วนของนาฬิกาจับเวลา
- ในส่วนของการคำนวณวันเวลานั้น เราสามารถเลือกที่จะคำนวณเวลาด้วยหรือไม่ก็ได้ (ขึ้นกับว่าเราสนใจเวลาเริ่มต้นและสิ้นสุดหรือไม่)
- การคำนวณวันแบบแจกแจงจะคำนวณออกมาในรูปแบบ วัน/ชม/นาที/วินาที
- การคำนวณวันแบบแยกประเภทผลลัพท์จะออกมาเป็นรูปแบบใดๆ แยกกันอย่างอิสระ เช่น 1 วัน 24 ชม 1440 นาที 86400 วินาที
Level of Programming Language...!!!
ใช่แล้วตัวแปรภาษา หรือ Compiler เนี่ยก็มีระดับภาษา แต่ระดับภาษานั้นมันบ่งบอกถึงความใกล้เคียงกับภาษาเครื่องนั่นเอง โดยแบ่งได้เป็น 3 ประเภทหลักๆก็คือ
- ภาษาระดับต่ำ
- ภาษาระดับกลาง
- ภาษาระดับสูง
ก็คือถ้าตัวแปรภาษานั้นจัดอยู่ในภาษาระดับต่ำ ตัวแปรภาษานั้นก็จะมีความใกล้เคียงกับภาษาเครื่องมาก แต่ถ้าตัวแปรภาษานั้นจัดอยู่ในภาษาระดับสูง ตัวแปรภาษานั้นก็จะมีความใกล้เคียงกับภาษามนุษย์เราๆกันมากขึ้น(ช่างสะดวกเสียจริง) มาดูระดับภาษาของภาษาคอมพิวเตอร์ที่เราพอจะคุ้นเคยหรือเคยได้ยินกันบ้างก็คือ ภาษา C ,Java, Basic, Pascal จัดเป็นภาษาระดับสูง ส่วนภาษาระดับต่ำก็คือ Assembly ซึ่งมีความใกล้เคียงภาษาเครื่องมาก มีสัญลักษณ์มาช่วยให้เขียนโปรแกรมได้ง่ายขึ้น แต่ก็ยังยากอยู่ดีนั่นล่ะ ฮ่าๆ ภาษาเขียนโปรแกรมนั้นในปัจจุบันมีเยอะมาก(หลายร้อยหลายพัน) เป็นสิ่งที่ทำให้รู้ว่าเราไม่มีทางชำนาญได้ทุกภาษาแน่นอน (เพราะมันมีเยอะมากนั่นแล) แต่อย่างที่เคยบอกไปคือ ถ้าเราชำนาญในภาษาใดภาษาหนึ่งแล้ว การจะกระโดดไปเล่นอีกภาษาหนึ่งๆนั้น ไม่ใช่เรื่องยาก การลำดับการทำงานของภาษาโปรแกรมต่างๆมีความคล้ายคลึงกันแต่อาจต่างกันแค่การใช้คำสั่งเท่านั้นเอง ด้วยเหตุนี้โปรแกรมเมอร์จึงต้องยืดหยุ่น สามารถปรับตัวได้เมื่อมีการเปลียนความนิยมหรือประสิทธิภาพของโปรแกรม ในตัวแปรภาษา
วันอาทิตย์ที่ 10 พฤษภาคม พ.ศ. 2552
How advantage Compiler have...?!!
(ภาษาเลขฐานสอง = ภาษาเครื่อง) นี่เป็นอีกสาเหตุให้วงการโปรแกรมมิ่งบูมมากๆในปัจจุบัน เพราะ Compiler ในปัจจุบันถือเป็นสุดยอดของความสะดวกแล้ว เพราะผมยังเคยคิดว่าการเขียนโปรแกรมนี่เป็นอะไรที่ยากมากนะ แต่ลองนึกย้อนไป คนสมัยก่อนเค้าต้องเขียนโดยใช้ภาษาเลขฐานสองมันลำบากกว่าแค่ไหนไม่มีตัวช่วยไม่มีอะไรเลย
สำหรับ Compiler ก็จะมีชนิดของมันต่างๆกันนะครับ มีหลายภาษา ก็เหมือนกับที่เคยๆได้ยินกันน่ะครับ ภาษา C บ้าง ภาษา Java บ้าง ภาษา PHP เอย ว่ากันไป ซึ่งหน้าที่ Compiler จะไม่ต่างกันแต่ต่างกันตรงที่ "ไวยากรณ์" อะอ้าวว ฟังดูแล้วอาจจะเข้าใจขึ้น เช่น การเอ่ยทักทายของภาษาแต่ละภาษาก็ต่างกัน ไทย(สวัสดี) อังกฤษ(Hello) อะไรประมาณนี้ กล่าวได้ว่า ถ้าเราชำนาญสักภาษาใดภาษาหนึ่งแล้ว ภาษาอืนๆก็ไม่ใช่เรื่องยาก(เอ้าก็พูดพร่ำทำเพลงเป็นแล้วนี่) เพียงแต่ต้องศึกษาไวยากรณ์ให้ดีๆ เท่านั้นเองครับ
Radix Converter My First WindowForm ... !!!
โปรแกรมแรกของโอ๊คใน WindowForm ครับใช้เวลาเขียนค่อนข้างนานพอดูนะ เพราะว่าเป็นครั้งแรก รูปร่างหน้าตาอาจธรรมดาไปหน่อยแต่รับประกันคุณภาพ แหะๆ เป็นโปรแกรมแปลงเลขฐานครับ เอ้าสำหรับคนที่ไม่รู้จักระบบเลขฐาน ก็ไม่เป็นเรา จะพูดถึงให้ฟังกันครับ ในเรื่องของระบบเลขฐาน (Radix Number)
ระบบเลขฐานนิยามให้เข้าใจค่อนข้างยาก แต่จะลองดูนะ ก็คือ การรวมกันของจำนวนที่มีค่าประจำแต่ละตำแหน่งโดยค่าประจำตำแหน่งก็จะเป็นค่าของเลขฐานนั้น เอ้างง ไม่เป็นไร ต้องบอกไว้ก่อนว่า เลขฐานที่เราคุ้นเคยกันในชีวิตประจำวันนั่นก็คือ เลขฐานสิบ ที่ประกอบไปด้วย เลข 0-9 นั่นล่ะ ความสัมพันธ์กันของเลขฐานแต่ละชนิดก็มีนะ เช่น 5ในเลขฐานสิบ ถ้าอยู่ในระบบเลขฐานสอง ก็คือ 0101 สำหรับคนไม่เข้าใจจริงๆไม่ต้องห่วงมาอ่านบทความนี้ได้อะไรติดหัวไปแน่นอน เอ้า ไอ้เจ้า 5 มันเป็น 0101 ในเลขฐานสองได้อย่างไร พูดในเรื่องความสัมพันธ์กันระหว่างระบบเลขฐานสิบกับเลขฐานสองนะ 5 = (0x2^3)+(1x2^2)+(0x2^1)+(1x2^0) ลองคิดเลขยกกำลังเล่นๆดู เป็น 5 ไหมครับ ? ใช่แล้วครับเลขชี้กำลังเริ่มจากทางขวามา(และเริ่มที่ 0)และเพิ่มจำนวนขึ้นทีละ1 ไปทางซ้ายจนกว่าจะหมด และที่ฐานของเลขชี้กำลังเป็น2 ก็เพราะว่าเป็นเลขฐานสอง และในแง่เดียวกันก็คือเลขฐานอื่นๆก็แค่เปลี่ยนฐานของเลขชี้กำลังเท่านั้นเองครับ (ฐานอื่นๆก็เช่น ฐานแปด ฐานสิบหก)แล้วจะมีไอ้ระบบเลขฐานวุ่นวายไปทำไม ? คำถามนี้โอ๊คเคยถามตัวเองอยู่เหมือนกันตอนนั่งทำความเข้าใจกับมันน่ะนะ คอมพิวเตอร์ของเราก็ใช้ประโยชน์จากเลขฐานนี้ครับ นั่นคือเลขฐานสอง ทำไมถึงเลขฐานสองน่ะหรอ ก็เพราะว่าคอมพิวเตอร์ก็ไม่ได้ต่างไปจากอุปกรณ์ไฟฟ้าตัวอื่นๆเท่าใดนักที่จะต้องมีสวิตท์ เปิด ปิด เหมือนกับเลขฐานสองที่มี 1(เปิด)กับ 0(ปิด)นั่นแหละครับ แล้วมันใช้ยังไงเอาคร่าวๆให้ฟังกัน ใช้ในด้านการคำนวณ การเก็บข้อมูล และอีกมาก ข้อมูลนั้นเกิดจากการนำ เลขฐานสองมาต่อๆกันหลายๆหลัก(ส่วนใหญ่หลักของเลขฐานสองจะเรียกว่าบิต) เช่น 00101, 11101
เห็นความสำคัญของเลขฐานแล้ว โอ๊คเลยทำโปรแกรมแปลงเลขฐานอย่างง่ายๆมาให้ดูครับ แหะๆ โปรแกรมนี้ใช้ Visual C# 2008 เขียนครับ จริงๆทำไว้นานแล้ว ไม่มีโอกาสเอามาให้ดูกันนะ ซึ่งโปรแกรมของโอ๊คก็แปลงระบบเลขฐานสำคัญๆได้ 4 ชนิด ก็คือ เลขฐานสอง, เลขฐานแปด, เลขฐานสิบ, เลขฐานสิบหก วิธีใช้ไม่ยากครับ เลือกเลขฐานที่ต้องการแปลง จากนั้นใส่ค่าในช่องด้านบนครับ จากนั้นก็เลือกว่าต้องการจะแปลงให้เป็นเลขฐานชนิดใด แล้วค่าจะออกมาในช่องด้านล่างครับ คิดว่าจะทำเป็นกรณีศึกษาให้ได้โหลดโค้ดไปศึกษาได้ครับ สำหรับคนที่ต้องการก็โหลดจากลิ้งด้านล่างได้เลยครับ
สามารถโหลดไปใช้ได้ครับ Download Radix Converter
สำหรับกรณีต้องการโหลดไปศึกษาครับ
ขอขอบคุณ sanook.com ที่ให้พื้นที่ฝากไฟล์ฟรีครับ
วันเสาร์ที่ 9 พฤษภาคม พ.ศ. 2552
WindowForm it Cool ...!!!
ประเด็นก็คือ เรามี Compiler (โปรแกรมตัวแปรภาษาที่ดีนี่เอง) ช่วยในการเขียนโปรแกรมได้ดีมากครับ และเป็นทั้งตัวออกแบบหน้าตาของวินโด้ฟอร์ม (ลากแปะๆ) ง่ายต่อการออกแบบ แต่โค้ดโปรแกรมนี่เราต้องมาคิดออกแบบกันอีกทีนะ
ข้อสรุปก็คือ วินโด้ฟอร์มยังช่วยแบ่งเบาภาระควบคุมในแต่ละส่วนประกอบต่างๆในโปรแกรมน่ะนะ ทำให้งานที่ซับซ้อนเป็นเรื่องง่ายไปทีเดียว
Next Step 'bout Programming.. !!!
ตั้งใจว่าจะให้เป็นบล๊อคเรื่องโปรแกรมมิ่งไปเลยล่ะกัน อาจมีนอกเรื่องบ้างเนอะ ตามกระแสบ้านเมืองนิดๆหน่อย ว่ากันไป จะไม่พูดพร่ำทำเพลงเอ้า ! ว่ากันเลย ในช่วงแรกๆของการเริ่มต้นเขียนโปรแกรมบน DOS ก็ทำให้พบว่ามันช่างยากเย็นอะไรเช่นนี้ (ยากตรงที่ต้องจัดอัลกอริทึมให้ดีๆไม่อย่างนั้น โปรแกรมเราจะผิดพลาด หรือไม่ตรงตามความต้องการของเราน่ะ) เอ้าบอกความหมายของ อัลกอริทึม(Algorithm)กันหน่อย ในที่แรกโอ๊คก็สงสัยในใจอยู่ว่ามันมีความเกี่ยวข้องกับ (logarithm)ป่าววะ ฮ่าๆ มันช่างชื่อคล้ายกันเสียจริง แต่ความจริงนั้นไม่ได้มีความข้องเกี่ยวกันแต่อย่างใด ไอ้เจ้าอัลกอริทึมเนี่ย ก็คือลำดับขั้นตอนการทำงานของโค้ดโปรแกรม(ถ้าพูดถึงการโปรแกรมนะ) เอ้ายังไม่เข้าใจก็ต้องยกตัวอย่างเช่น จะเจียวไข่ อัลกอริทึมของการเจียวไข่ = ขั้นตอนการเจียงไข่นั่นแหละ เอ้าขั้นแรกทำยังไงล่ะ สำหรับการเจียวไข่
- เตรียมกระทะ ตะหลิว เตา
- เตรียมไข่ เตรียมชามช้อน
- ตอกไข่มาตี ใส่ซีอิ๋ว
- ใส่น้ำมันให้กระทะ
- ใส่ไข่
- ลงมือเจียว
- ใส่จาน จัดโต๊ะ แล้วกินกันให้อร่อยโลด
นี่ก็คือตัวอย่างอัลกอรึทึมอย่างง่ายๆ เพียงแต่มันไม่ง่ายสำหรับเรื่องยากๆน่ะสิ นี่ก็คือปัญหาของการเขียนโปรแกรมบน DOS นะสำหรับความคิดของโอ๊คเท่าที่เคยเขียนโปรแกรมบน DOS เอ้ามาที่ DOS บ้าง มันคือไรนะ DOS (Disk Operating System) พูดง่ายๆก็คือ โปรแกรมที่มีแต่ตัวหนังสือยึกยือขึ้นมาเท่านั้น ไม่มีภาพเสียงสีสัน 3 มิตงมิติ ไม่มีทั้งนั้น (ไอ้จอดำๆจากบทความที่แล้ว) แม้ปัจจุบันจะไม่ค่อยมีให้เห็นกันแล้ว แต่อดีตกาลน่ะนะ โปรแกรมต่างๆเป็น DOS หมดเลย ฮ่าๆ สำหรับเราๆ ถ้ากลับไปใช้คงลำบากแย่ เพราะปัจจุบันที่เราใช้ๆกัน เป็น UI หมดแล้ว
วันศุกร์ที่ 8 พฤษภาคม พ.ศ. 2552
My Second Computer Language !!!
My First Computer Language !!!
My Life in the end of semester....!!
วันพฤหัสบดีที่ 7 พฤษภาคม พ.ศ. 2552
Electronic Engineering @ KMITL !!! , My new home
(อ่านไปเรื่อยๆครับ วิชาการหน่อยแต่ไม่ปวดหัวรับประกัน ^ ^)
บางคนอาจสงสัยว่าไอ้เจ้าอิเล็กทรอนิกส์มันต่างกับไฟฟ้าตรงไหน ?? ผมก็เคยนึกสงสัยมันเหมือนกัน ก็นึกตลกในใจมาก่อนว่า คำนี้มันค่อนข้างคุ้นหูมากแต่เราไม่รู้ความหมายของมัน ไฟฟ้าเป็นศาสตร์ที่ศึกษาพฤติกรรมของอิเล็กตรอนที่เคลื่อนที่ในตัวนำโลหะ ซึ่งอิเล็กทรอนิกส์จะศึกษาพฤติกรรมของ e ที่เคลื่อนที่ในสารกึ่งตัวนำ ( แก๊ส และอื่นๆ) ที่ไม่ใช่โลหะนั่นเอง เกร็ดความรู้เล็กๆเอามาฝากครับ
มาพูดกันถึงเรื่องเด่นเรื่องดังของวันนี้นั่นคือผลแอดมิชชั่นของทุกๆคน (เป็นยังไงกันบ้างเอย)
ผลการแอดมิชชั่นก็เพิ่งออกมาเมื่อประมาณ 5 โมงกว่าๆของวันนี้ครับ มีทั้งดีใจเสียใจผิดหวัง แน่นอนว่าคนผิดหวังต้องมากกว่าคนที่สมหวัง คนเราย่อมไม่พอใจในสิ่งที่ตนมี จริงไหมครับ ลองนึกดูว่าคุณมีอะไรบ้างแล้วคุณพอใจกับมันหรือเปล่า ยังไงก็ขอเป็นกำลังใจให้กับคนที่ผิดหวัง อยากจะบอกว่าอนาคตของคนเรามันไม่แน่นอนเพราะโอกาสของคนเรามันมีไม่เท่ากันนิครับ คนที่เรียนสูงอาจตกงาน กลับกันคนที่เรียนน้อยกลับรวยค้ำฟ้า โลกนี้ช่างเป็นอนิจจัง ฉะนั้นอย่าท้อแท้นะครับ สู้ๆกันต่อๆ อย่าท้อแท้ในชีวิต แล้วก็ห้ามคิดสั้นเด็ดขาด จำประโยคนี้ไว้ครับ ความทุกข์ที่เกินทนจะฝึกคนให้ทนทาน
Way of Programmer !!!...........
เราทุ่มเทแรงกายและใจให้กับมันดีแล้วหรือยัง ^ ^