วันพฤหัสบดีที่ 31 ธันวาคม พ.ศ. 2552

Return to my Blog

ห่างหายไปนานแสนนานหลังจากทิ้งบทความสุดท้ายไว้กลางปี 555+ ก็หลังจากเปิดเรียนนั่นล่ะ ชีวิตเดิมๆของเด็ก ม.ปลาย ก็ต้องเปลี่ยนไปอย่างสิ้นเชิง พร้อมกับการได้เรียนรู้ชีวิตใหม่ในรั้วลาดกระบัง (คงต้องเรียกว่ารั้ววิศวะถึงจะถูก) จริงๆ ที่หายไปก็ไม่ถึงกับไม่ว่างขนาดนั้น แต่คงยังเหลิงกับชีวิตใหม่ 555+ น่าจาเก็บความทรงจำดีๆมาอัพบล๊อค แต่ดันลืมบล๊อคนี้ไปได้ซะงั้น

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

วันอาทิตย์ที่ 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#

Operation ในทางโปรแกรมมิ่ง คือ การกระทำการต่างๆกับตัวแปร และค่าคงที่ ต่างๆ ไม่ว่าจะเป็น การกำหนดค่า "=" การบวก ลบ คูณ และหาร ต่างๆ ซึ่งเราจะเรียกสัญลักษณ์ของการกระทำต่างๆ เช่น บวก ลบ คูณ หาร เท่ากับ และอื่นๆ ว่า
ตัวดำเนินการ "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 และ 999 กันครับ

มาเริ่มกันที่ การคูณเลขสองหลัก ด้วย 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 พื้นฐานความรู้ด้านอ๊อบเจ็ค

ในเมื่อ C# นั้นเป็นภาษาเชิง OOP 100% การที่จะข้ามการกล่าวถึง Object ไปดูจะเป็นอะไรที่ไม่สมเหตุสมผลเอาเสียเลย งั้นเรามาทำความเข้าใจกันก่อนดีกว่าครับ

อ๊อบเจ็ค (Object)
เกริ่นให้เข้าใจเกี่ยวกับอ๊อบเจ็คกันซักเล็กน้อย ในชีวิตประจำวัน อ๊อบเจ็ค คือ วัตถุที่สามารถสัมผัสได้ทั้งทางตรงและทางอ้อม และมีคุณสมบัติและความสามารถหลายประการ

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

ยกตัวอย่างให้เข้าใจถึงอ๊อบเจ็คง่ายๆ เช่น ดินสอ (นี่ก็คือวัตถุ) คุณสมบัติ (property) ของดินสอ อาจจะมีลักษณะยาวหรือสั้น ตามแต่ชนิด ส่วนประกอบ แกรไฟต์ ความยาว ความกว้าง เส้นผ่านศูนย์กลาง นี่คือคุณสมบัติครับหรือจะเรียนลักษณะทางกายภาพก็ได้เช่นกัน ความสามารถ (Method) ของดินสอก็คือ สามารถทำให้เกิดลวดลายบนแผ่นกระดาษได้ นำไปเคาะทำให้เกิดเสียงได้ เป็นต้น สำหรับที่กล่าวมานี่เป็นการอธิบายอ๊อบเจ็คที่เรียกว่าดินสอนะครับ ดินสอก็มีหลายชนิดใช่ไหมครับ 2B เอย 3B เอย ในเชิงอ๊อบเจ็คจะเรียกชนิดของอ๊อบเจ็คว่า "Class" ครับจะเป็นการบ่งบอกชนิดของอ๊อบเจ็ค

**คุณสมบัติ (Property) ลักษณะทางกายภาพของวัตถุ เช่น ความกว้าง ความยาว ความสูง สี กลิ่น รส (ถ้ามีนะ)

**ความสามารถ (Method) ผลที่เกิดหรือพฤติกรรมเมื่อมีการใช้งานวัตถุ

เนื่องจากภาษา C# ก็เป็นหนึ่งในภาษาที่มีแนวคิดแบบ OOP
( Object Oriented Programming ) 100%
จึงทำให้การเขียนโปรแกรมขนาดใหญ่เป็นเรื่องง่ายๆ เพราะการเขียนโปรแกรมจะเป็นในเชิงของวัตถุกล่าวคือ "เป็นอิสระจากกัน" ฟังดูอาจจะงงครับ ให้คุณผู้อ่านนึกถึงเครื่องคอมพิวเตอร์เครื่องหนึ่งที่มี ตู้ระบบรวมอุปกรณ์ต่างๆ อาทิเช่น แผงวงจรหลัก (เมนบอร์ด) การ์ดแสดงผล การ์ดเสียง ฮาร์ดดิส ฟรอปปี้ดิส และอีกมากมาย โอ๊คกำลังจะบอกว่า อุปกรณ์แต่ละมันทำหน้าที่เฉพาะเจาะจงของมันถูกไหมครับ การ์ดแสดงผลก็ควบคุมในส่วนของการแสดงผล การ์ดเสียงก็ควบคุมทางด้านเสียง ฮาร์ดดิสส่วนของการจัดเก็บข้อมูล เห็นไหมครับ แต่ละอุปกรณ์ล้วนมีหน้าที่เฉพาะเจาะจง เปรียบกับการเขียนโปรแกรมก็เช่นเดียวกัน เราจะเขียนการทำงานเฉพาะเจาะจงให้กับอ๊อบเจ็คแต่ละตัว โดยไม่มีความสัมพันธ์ใดๆต่อกัน เมื่อต้องการปรับแก้การทำงาน เราก็สามารถทำในส่วนของอ๊อบเจ็คนั้นๆได้ โดยที่เราไม่ต้องแก้โค้ดใหม่ทั้งหมด ซึ่งจะทำให้เสียเวลา หรือถ้าเป็นโปรแกรมใหญ่ๆก็จะเสียทั้งเงินต้นทุน และเวลามากมาย แนวคิด OOP จึงเป็นอีกทางเลือกของการเขียนโปรแกรมในปัจจุบัน

เพื่อเป็นแนวทางให้เข้าใจถึง อ๊อบเจ็ค อย่างดีก่อน แล้วเราจะมาพูดกันถึงการใช้งานของอ๊อบเจ็คกันอีกครั้ง.......

วันเสาร์ที่ 30 พฤษภาคม พ.ศ. 2552

Data & Data type (ข้อมูลและชนิดของข้อมูล)...!!!

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

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

ข้อมูลชนิดจำนวนเต็ม
คือ ชนิดข้อมูลที่อยู่ในรูปจำนวนเต็มบวก เต็มลบ และ เต็มศูนย์
  • 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 ( ตัวแปร )....!!!

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

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

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


กฏการตั้งชื่อตัวแปร


  1. ห้ามนำคำสงวน (reserved word) มาตั้งเป็นชื่อตัวแปร
  2. ชื่อตัวแปรจะต้องขึ้นต้นด้วย ตัวอักษรภาษาอังกฤษ อักขระพิเศษ @
    และ _ (underscore) เท่านั้น
  3. ตัวแปรจะต้องไม่ขึ้นต้นด้วยตัวเลข เช่น 9number, 105Ages ถือว่าผิด
  4. ชื่อตัวแปรจะต้องไม่ประกอบไปด้วยอักษรพิเศษทุกชนิด
    (เครื่องหมาย /, +, -, *, %, !) และไม่มีการเว้นวรรค
  5. ตัวอักษรใหญ่และเล็กจะถือว่าไม่เหมือนกัน เช่น mVar, MVAR จะถือว่าเป็นคนละตัวแปร
  6. ไม่ควรใช้ชื่อยาวเกินไป และควรตั้งให้เหมาะสมกับการนำไปใช้ เช่น ตัวแปรเก็บอายุก็ควรตั้งว่า 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...!!!



เราจะเริ่มเขียนโปรแกรมในรูปแบบของ Console Application ซึ่งเป็นโปรเจคที่ใช้พัฒนาแอพพลิเคชั่นที่ทำงานในแบบ Command Line ซึ่งจะอนุญาตให้ผู้ใช้งานป้อนคำสั่งเข้าไปได้อย่างเดียว และแสดงผลเพียงตัวอักษรเท่านั้น จะปรากฏในระบบปฏิบัติการ แบบ DOS และ ยูนิกส์

ซึ่งการเขียนโปรแกรมในรูปแบบ Console Application เป็นการฝึกให้เราได้คิดรูปแบบ Algorithm ของโปรแกรมของเรา และเข้าใจกระบวนการทำงานเบื้องต้นของตัวโปรแกรมก่อนที่จะพัฒนาไปเขียนในรูปแบบอื่นๆ รูปแบบนี้ถือว่า คลากสิกสุดๆครับ เหมาะแก่การศึกษา
** สามารถนำไปประยุกต์กับภาษาอื่นๆได้ เช่น Visual Basic, Visual C++

วันจันทร์ที่ 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# (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...!!!

ในบทความนี้จะบอกเทคนิคการบวกเลขแบบคล่องๆครับ โดยก่อนอื่นต้องบอกตามตรงว่าธรรมชาติของเรา จะคิดเลขจากขวาไปซ้าย ในเทคนิคนี้จะให้ลองทำกลับกันครับ คือเวลาบวกเลขให้บวกจากซ้ายไปขวา (อาจจะงงว่าทำยังไง กลัวผิด...เราไปดูกัน) ปัญหาในการบวกเลขของคนเราส่วนใหญ่จะเกิดจากตัวเลขที่มีจำนวนมาก พอบวกกันแล้วเกินต้องทดในหลักต่อไป (จริงไหมครับ?) แต่กลับกันเราจะถนัดในการบวกเลขที่ไม่มีการทด 89+95 โอยบวกน่ะบวกได้นะ แต่ให้ทำเร็วๆนี่คงยากและอาจผิดพลาด (ในบางสถานการณ์ที่คับขันเช่นเวลาทำข้อสอบ) แต่ถ้าเป็น 20+19 โอว มันช่างสบายๆสมองอะไรเช่นนี้

สำหรับเทคนิคนะครับเวลาเจอการบวกเลขที่มีจำนวนมากๆอย่างเช่นการบวก

456+975 = ? นะครับ

การบวกเลขจากซ้ายไปขวาจะมีประโยชน์ต่อเมื่อเจอตัวเลขมากๆหลักเข้า ขั้นตอนคือให้บวกเลขจากซ้ายไปขวาโดยที่สายตาควรเหล่ดูว่าหลักถัดไปมีตัวทดหรือไม่ ถ้ามีให้บวก ผลบวกกับตัวทดไปเลยอัตโนมัติ (เช่นในตัวอย่าง 9+4 = 13 แต่เหล่เห็นว่า 7+5 มันมีตัวทด ก็บวก 13 ด้วย 1 = 14 ครับ) ทำเช่นนี้จากซ้ายไปขวา

สำหรับวิธีนี้บางคนทำครั้งแรกอาจจะยังไม่ชิน แต่ต้องฝึกฝนอย่างต่อเนื่องครับ ก็หวังว่าบทความนี้จะเป็นประโยชน์กับผู้อ่านทุกคนครับ

วันพุธที่ 20 พฤษภาคม พ.ศ. 2552

Next Chapter 'bout Magic Math.....!!!

เอาอีกแล้ว หลังจาก 5 วันที่หายหน้าไป ก็ไปร้านหนังสือบ่อยมาก ไม่ได้ซื้อไรติดมือไม้มานะ ไปยืนอ่านฟรี (แป่ว) แหะๆ เลยมีอะไรติดหัวมาบ้าง เอาเป็นว่าเริ่มเลยล่ะกัน จะพูดถึงการคิดเลขให้เร็ว(โดยมีเทคนิคมาให้เหมือนเดิม) ก่อนเริ่มทำให้นึกถึงเวลาเรายกกำลังเลข 2 หลัก และ 3 หลัก ด้วยวิธีทดในกระดาษครับ มันช่างเป็นอะไรที่แสนน่าเบื่อมาก (จริงมั้ย?) แล้วถ้าให้คิดในหัวเรอะ ! ไม่ต้องพูดถึง แต่เทคนิคที่โอ๊คจะเล่าสู่กันฟังต่อไปนี้ แค่คิดในหัวเพียงไม่กี่วินาที ก็สามารถให้คำตอบแบบตรงเป๊ะ ! ชัวร์ๆเลยครับ ถึงขนาดที่เครื่องคิดเลขยังต้องเรียกพี่.... เอ้าไปดูกันครับ

สำหรับเลขยกกำลัง 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 หรือ Window Presentation Foundation เป็นอีกรูปแบบของการเขียนโปรแกรมครับ แต่มันต่างกันยังไงน่ะหรอครับ งั้นให้คุณผู้อ่านลองนึกภาพโปรแกรมหน้าตาธรรมดาๆที่โอ๊คเคยเขียนดูสิ กับโปรแกรมที่มีรูปแบบ ปุ่มคำสั่งต่างๆสวยงามแพรวพราว (ใครที่ใช้ Vista นั่นเป็นอีกตัวอย่างหนึงของเทคโนโลยีนี้ครับ) หัวใจหลักของ WPF ก็คือ การทำโปรแกรมที่มี User Interface (หน้าตาของโปรแกรม) สวยงามน่าใช้นั่นเอง ถ้าเขียนโปรแกรม ในรูปแบบ Window Application (ซึ่งในสมัยก่อนก็ถือว่าหรูแล้ว) มันก็เหมือนกับเราเขียนโปรแกรมที่ไม่ให้ความสำคัญกับความสวยงามของรูปร่างหน้าตาของโปรแกรม แต่ปัจจุบันมันเปลี่ยนไปแล้วครับ โอ๊คอยากถามว่า คุณชอบใช้โปรแกรมที่มีรูปร่างหน้าตาสวยงาม (คำตอบส่วนใหญ่คงชอบถูกไหม ?) ฉะนั้นเทคโนโลยี WPF จึงถูกสร้างขึ้น แนวคิดของมันก็คือ ตัวเรามีความสามารถในสองด้าน 1.ออกแบบหน้าตาโปรแกรม 2.เขียนโค้ดควบคุมโปรแกรม ซึ่ง 2 อย่างนี้ให้คุณทำหน้าที่ของมันได้อย่างอิสระแยกจากกันสิ้นเชิง คิดดูแล้วกันเพราะมันทำให้เราได้สร้างสรรค์หน้าตาของโปรแกรมได้อย่างอิสระ แล้วเพียงแค่มาใส่โค้ดเอาที่หลังก็ยังได้ (เครื่องมือดีๆ ที่เหมือน มีนักออกแบบ และโปรแกรมเมอร์มาร่วมมือกันสร้างโปรแกรม) ใน Window Application นั้นในส่วนของการออกแบบหน้าตาโปรแกรมจะถูกควบคุมด้วยภาษาโปรแกรมนั้นๆ (เช่น C# ส่วนออกแบบก็จะเป็นภาษา C#) แต่แนวคิดของ WPF ภาษาในส่วนออกแบบนั้นจะต่างจากภาษาที่ใช้เขียนโค้ด กล่าวคือ ใช้ภาษา XML (ซึงพอมาทำงานร่วมกันกับการสร้างโปรแกรมก็จะเรียกใหม่เป็น XAML อ่านว่า แซม-แอล) XAML ย่อมาจาก eXtensible Application Markup Language ใช่แล้วครับเป็นภาษาตระกูล Markup ที่จะมีทั้ง tag เปิดและปิด ซึ่งภาษานี้สามารถทำงานด้านแสดงผลได้เป็นอย่างดี แล้วยังเป็นภาษาที่เข้าใจได้ง่ายอีกด้วย (เอาเป็นว่าถ้ามีโอกาสจะทำบทความสอนเลยแล้วกัน)

SpeechSample



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


สำหรับผู้ที่ต้องการลองเอาไปใช้ Download Here


วิธีการใช้ 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)

  1. การใช้งานในส่วนของนาฬิกาจับเวลา จะมีปุ่มเริ่มจับเวลา เมื่อทำการคลิกที่ปุ่มจะทำให้นาฬิกาเริ่มจับเวลา แล้วตัวปุ่มนี้จะเปลี่ยนเป็นหยุดเวลา เพื่อให้สะดวกในสถานการณ์ที่ต้องการหยุดเวลาทันที
  2. ในส่วนของนาฬิกาจับเวลา สามารถบันทึกเวลาที่ได้จับเอาไว้ได้ (ข้อความที่ใช้สื่อข้อมูลเวลาสามารถปรับเปลี่ยนได้ใน tab ปรับแต่ง)
  3. ในส่วนของนาฬิกานับถอยหลัง ผู้ใช้สามารถตั้งเวลาได้ตามต้องการ แล้วโปรแกรมจะคำนวณให้เวลาออกมาในรูปแบบที่เข้าใจง่าย เช่น 99 วินาที คือ 1 นาที 30 วินาที
  4. ปุ่มเริ่มนับถอยหลังจะคล้ายคลึงกับส่วนของนาฬิกาจับเวลา
  5. ในส่วนของการคำนวณวันเวลานั้น เราสามารถเลือกที่จะคำนวณเวลาด้วยหรือไม่ก็ได้ (ขึ้นกับว่าเราสนใจเวลาเริ่มต้นและสิ้นสุดหรือไม่)
  6. การคำนวณวันแบบแจกแจงจะคำนวณออกมาในรูปแบบ วัน/ชม/นาที/วินาที
  7. การคำนวณวันแบบแยกประเภทผลลัพท์จะออกมาเป็นรูปแบบใดๆ แยกกันอย่างอิสระ เช่น 1 วัน 24 ชม 1440 นาที 86400 วินาที

Level of Programming Language...!!!

ใช่แล้วตัวแปรภาษา หรือ Compiler เนี่ยก็มีระดับภาษา แต่ระดับภาษานั้นมันบ่งบอกถึงความใกล้เคียงกับภาษาเครื่องนั่นเอง โดยแบ่งได้เป็น 3 ประเภทหลักๆก็คือ

  • ภาษาระดับต่ำ
  • ภาษาระดับกลาง
  • ภาษาระดับสูง

ก็คือถ้าตัวแปรภาษานั้นจัดอยู่ในภาษาระดับต่ำ ตัวแปรภาษานั้นก็จะมีความใกล้เคียงกับภาษาเครื่องมาก แต่ถ้าตัวแปรภาษานั้นจัดอยู่ในภาษาระดับสูง ตัวแปรภาษานั้นก็จะมีความใกล้เคียงกับภาษามนุษย์เราๆกันมากขึ้น(ช่างสะดวกเสียจริง) มาดูระดับภาษาของภาษาคอมพิวเตอร์ที่เราพอจะคุ้นเคยหรือเคยได้ยินกันบ้างก็คือ ภาษา C ,Java, Basic, Pascal จัดเป็นภาษาระดับสูง ส่วนภาษาระดับต่ำก็คือ Assembly ซึ่งมีความใกล้เคียงภาษาเครื่องมาก มีสัญลักษณ์มาช่วยให้เขียนโปรแกรมได้ง่ายขึ้น แต่ก็ยังยากอยู่ดีนั่นล่ะ ฮ่าๆ ภาษาเขียนโปรแกรมนั้นในปัจจุบันมีเยอะมาก(หลายร้อยหลายพัน) เป็นสิ่งที่ทำให้รู้ว่าเราไม่มีทางชำนาญได้ทุกภาษาแน่นอน (เพราะมันมีเยอะมากนั่นแล) แต่อย่างที่เคยบอกไปคือ ถ้าเราชำนาญในภาษาใดภาษาหนึ่งแล้ว การจะกระโดดไปเล่นอีกภาษาหนึ่งๆนั้น ไม่ใช่เรื่องยาก การลำดับการทำงานของภาษาโปรแกรมต่างๆมีความคล้ายคลึงกันแต่อาจต่างกันแค่การใช้คำสั่งเท่านั้นเอง ด้วยเหตุนี้โปรแกรมเมอร์จึงต้องยืดหยุ่น สามารถปรับตัวได้เมื่อมีการเปลียนความนิยมหรือประสิทธิภาพของโปรแกรม ในตัวแปรภาษา

วันอาทิตย์ที่ 10 พฤษภาคม พ.ศ. 2552

How advantage Compiler have...?!!

คอมพิวเตอร์จะเข้าใจเพียงภาษาที่เป็นเลขฐานสองเท่านั้น เช่น 10101111010 อาจเป็นคำสั่งที่ใช้สำหรับแสดงผล คำสั่งพวกนี้เป็นเสมือนลิสรายการที่คอมพิวเตอร์จะต้องทำ มนุษย์เป็นเพียงผู้ป้อนคำสั่งเข้าไปๆเท่านั้น ซึ่งภาษาเลขฐานสองสำหรับมนุษย์แล้วเป็นเรื่องยากมากที่จะทำความเข้าใจ เอาง่ายๆเลยก็ต้องท่องจำกันไป(กว่าจะจำหมดคงเวียนว่ายตายเกิดหลายชั่วอายุคน) ซึ่งไม่จำเป็นเอาเสียเลยที่จะต้องมาลำบากเพื่อให้ได้ผลออกมาน้อยนิด จริงไหมครับ จึงเป็นสาเหตุให้ Compiler ถือกำเนิดขึ้นมาเพื่ออำนวยความสะดวกตรงจุดนี้ครับ แหะๆ ถ้าเปรียบ Compiler กับมนุษย์แล้ว Compiler เปรียบเสมือนล่ามดีๆนี่เอง แต่เป็นล่ามที่เข้าใจภาษาคอมพิวเตอร์นะ เพราะเราจะเขียนภาษาที่มนุษย์อย่างเราๆเข้าใจใส่เข้าไป จากนั้นเจ้า Compiler เนี่ยจะแปลภาษาของเราไปเป็นภาษาเครื่องโดยอัตโนมัติ โดยที่เราไม่ต้องไปสนิทคบค้ากับภาษาเลขฐานสองอีกต่อไป
(ภาษาเลขฐานสอง = ภาษาเครื่อง) นี่เป็นอีกสาเหตุให้วงการโปรแกรมมิ่งบูมมากๆในปัจจุบัน เพราะ 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


Radix Converter


เห็นความสำคัญของเลขฐานแล้ว โอ๊คเลยทำโปรแกรมแปลงเลขฐานอย่างง่ายๆมาให้ดูครับ แหะๆ โปรแกรมนี้ใช้ Visual C# 2008 เขียนครับ จริงๆทำไว้นานแล้ว ไม่มีโอกาสเอามาให้ดูกันนะ ซึ่งโปรแกรมของโอ๊คก็แปลงระบบเลขฐานสำคัญๆได้ 4 ชนิด ก็คือ เลขฐานสอง, เลขฐานแปด, เลขฐานสิบ, เลขฐานสิบหก วิธีใช้ไม่ยากครับ เลือกเลขฐานที่ต้องการแปลง จากนั้นใส่ค่าในช่องด้านบนครับ จากนั้นก็เลือกว่าต้องการจะแปลงให้เป็นเลขฐานชนิดใด แล้วค่าจะออกมาในช่องด้านล่างครับ คิดว่าจะทำเป็นกรณีศึกษาให้ได้โหลดโค้ดไปศึกษาได้ครับ สำหรับคนที่ต้องการก็โหลดจากลิ้งด้านล่างได้เลยครับ

สามารถโหลดไปใช้ได้ครับ Download Radix Converter

สำหรับกรณีต้องการโหลดไปศึกษาครับ

ขอขอบคุณ sanook.com ที่ให้พื้นที่ฝากไฟล์ฟรีครับ

วันเสาร์ที่ 9 พฤษภาคม พ.ศ. 2552

WindowForm it Cool ...!!!

วินโด้ฟอร์มก็คือโปรแกรมที่มีภาพ ข้อความ สีสัน และอะไรมากมายต่างๆเข้ามาช่วยให้ผู้ใช้สามารถใช้ได้ง่ายขึ้นครับ ก็เห็นได้ชัดว่า ปัจจุบันนี้โปรแกรมแทบทั้งหมดเป็น วินโด้ฟอร์มซะหมดแล้ว เอ้าเช่นๆ Winamp, Window Media Player, Firefox, MSN แต่เชื่อไหมครับว่า โปรแกรมจากวินโด้ฟอร์มเนี่ยยังสร้างขึ้นได้สะดวกกว่าเขียนโปรแกรมใน DOS เสียอีกนะ เนื่องจากมีส่วนที่ทำการควบคุมการทำงานแยกเป็นอิสระจากกันครับ เอ้าเดี๋ยวงง เช่น ในโปรแกรมมีปุ่ม อยากให้ปุ่มทำอะไรล่ะ ! คลิกแล้วออกจากโปรแกรม เอ้าจัดไป ก็จัดการเขียนโค้ดในเงื่อนไขว่าถ้าคลิกให้ออกจากโปรแกรม มี track อยากให้เลื่อนแล้วตัวอักษรเปลี่ยนสี เอ้าจัดไป ! ก็เขียนโค้ดในเงื่อนไขของการเลื่อน track ว่าถ้าเลื่อนทางนี้ค่าเปลี่ยนนะ ฟังดูอาจจะยังไม่เห็นภาพว่ามันสะดวกกว่าเขียนบน DOS ยังไง ลองนึกดูว่า ถ้าเราทำโปรแกรมที่ซับซ้อน เอาง่ายๆแล้วกันเครื่องคิดเลขก็พอ แล้วเลือกให้มีหลายฟังก์ชั่น (ถอดรู้ท ยกกำลัง log ln) DOS ก็ทำได้ แต่เพียงเขียนโค้ดกันมือหงิก ถ้าเป็นวินโด้ฟอร์มอ่ะนะ ง่ายม้ากกก จัดไปเลย เอ้ารับค่ามาสองค่า หรือทีละค่า ลากมาปุ่มนี้ทำหน้าที่อะไร เขียนโค้ดๆ
ประเด็นก็คือ เรามี Compiler (โปรแกรมตัวแปรภาษาที่ดีนี่เอง) ช่วยในการเขียนโปรแกรมได้ดีมากครับ และเป็นทั้งตัวออกแบบหน้าตาของวินโด้ฟอร์ม (ลากแปะๆ) ง่ายต่อการออกแบบ แต่โค้ดโปรแกรมนี่เราต้องมาคิดออกแบบกันอีกทีนะ
ข้อสรุปก็คือ วินโด้ฟอร์มยังช่วยแบ่งเบาภาระควบคุมในแต่ละส่วนประกอบต่างๆในโปรแกรมน่ะนะ ทำให้งานที่ซับซ้อนเป็นเรื่องง่ายไปทีเดียว

Next Step 'bout Programming.. !!!

อ่านไปเถอะนะรับประกันไม่ปวดหัวแต่ได้เกร็ดความรู้เล็กๆติดหัวปายย !!!
ตั้งใจว่าจะให้เป็นบล๊อคเรื่องโปรแกรมมิ่งไปเลยล่ะกัน อาจมีนอกเรื่องบ้างเนอะ ตามกระแสบ้านเมืองนิดๆหน่อย ว่ากันไป จะไม่พูดพร่ำทำเพลงเอ้า ! ว่ากันเลย ในช่วงแรกๆของการเริ่มต้นเขียนโปรแกรมบน DOS ก็ทำให้พบว่ามันช่างยากเย็นอะไรเช่นนี้ (ยากตรงที่ต้องจัดอัลกอริทึมให้ดีๆไม่อย่างนั้น โปรแกรมเราจะผิดพลาด หรือไม่ตรงตามความต้องการของเราน่ะ) เอ้าบอกความหมายของ อัลกอริทึม(Algorithm)กันหน่อย ในที่แรกโอ๊คก็สงสัยในใจอยู่ว่ามันมีความเกี่ยวข้องกับ (logarithm)ป่าววะ ฮ่าๆ มันช่างชื่อคล้ายกันเสียจริง แต่ความจริงนั้นไม่ได้มีความข้องเกี่ยวกันแต่อย่างใด ไอ้เจ้าอัลกอริทึมเนี่ย ก็คือลำดับขั้นตอนการทำงานของโค้ดโปรแกรม(ถ้าพูดถึงการโปรแกรมนะ) เอ้ายังไม่เข้าใจก็ต้องยกตัวอย่างเช่น จะเจียวไข่ อัลกอริทึมของการเจียวไข่ = ขั้นตอนการเจียงไข่นั่นแหละ เอ้าขั้นแรกทำยังไงล่ะ สำหรับการเจียวไข่


  1. เตรียมกระทะ ตะหลิว เตา
  2. เตรียมไข่ เตรียมชามช้อน
  3. ตอกไข่มาตี ใส่ซีอิ๋ว
  4. ใส่น้ำมันให้กระทะ
  5. ใส่ไข่
  6. ลงมือเจียว
  7. ใส่จาน จัดโต๊ะ แล้วกินกันให้อร่อยโลด

นี่ก็คือตัวอย่างอัลกอรึทึมอย่างง่ายๆ เพียงแต่มันไม่ง่ายสำหรับเรื่องยากๆน่ะสิ นี่ก็คือปัญหาของการเขียนโปรแกรมบน DOS นะสำหรับความคิดของโอ๊คเท่าที่เคยเขียนโปรแกรมบน DOS เอ้ามาที่ DOS บ้าง มันคือไรนะ DOS (Disk Operating System) พูดง่ายๆก็คือ โปรแกรมที่มีแต่ตัวหนังสือยึกยือขึ้นมาเท่านั้น ไม่มีภาพเสียงสีสัน 3 มิตงมิติ ไม่มีทั้งนั้น (ไอ้จอดำๆจากบทความที่แล้ว) แม้ปัจจุบันจะไม่ค่อยมีให้เห็นกันแล้ว แต่อดีตกาลน่ะนะ โปรแกรมต่างๆเป็น DOS หมดเลย ฮ่าๆ สำหรับเราๆ ถ้ากลับไปใช้คงลำบากแย่ เพราะปัจจุบันที่เราใช้ๆกัน เป็น UI หมดแล้ว

วันศุกร์ที่ 8 พฤษภาคม พ.ศ. 2552

My Second Computer Language !!!

หลังจากนั้นผมก็ห่างเหิญจากภาษา HTML มาได้ระยะหนึ่ง ซึ่งก็เป็นเวลานานพอดู จนได้มีโอกาสจับภาษาตัวที่สองของชีวิตโอ๊ค นั่นก็คือ C# บางคนอาจจะคุ้นเคยกับคำว่า ภาษา C มากกว่า ซึ่งจริงๆแล้วไม่ต่างกันมากครับ C# นั้นต่อยอดจาก C เท่านั้นเอง ( C++ ต่อยอดจาก C แล้ว C# ต่อยอดจาก C++ อีกที ไม่เชื่อดูสิ # คือ + ซ้อนกันสี่มุม ถูกไหม) ซึ่งผู้สอนนั้นก็คืออาจารย์หมวดคอม ที่โรงเรียนของโอ๊คนั่นเอง ก่อนที่จะเรียนไอ้เราก็คิดว่าพื้นฐาน HTML จะช่วยได้ แต่จริงๆแล้วไม่มีความคล้ายคลึงกันเอาซะเลย ฮ่าๆ ประโยคที่มักติดปากของอาจารย์คือ "การเขียนโปรแกรมก็เหมือนกับปิดตาเดินไปโรงเรียนนั่นแหละ มีเพียงไม้เท้า(เครื่องมือเขียนโปรแกรม) คอยช่วยนำทางเท่านั้น" แปลกแต่จริง แต่ที่อาจารย์พูดนั้นไม่มีผิดเลย มันถูกไปหมดซะด้วยซ้ำ เพราะโปรแกรมซักโปรแกรมเนี่ย ไม่ใช่จะเขียนได้ดังใจไปเสียหมด ต้องอาศัยเวลาในการแก้ไข ทดลองโปรแกรมลองผิดลองถูก (ก็เหมือนกับเดินปิดตาแล้วหาทางไปโรงเรียนจริงๆ) หลังจากฝึกกับอาจารย์ได้สักพักก็มาหาซื้อหนังสือมาอ่าน เกี่ยวกับภาษา C# ซึ่งก็ทำให้ค้นพบตัวเองในภายหลังว่า การโปรแกรมมันช่างสนุกอะไรเยี่ยงนี้ แม้ว่าเคยเกือบท้อและนึกที่จะเลิกเขียนโปรแกรมไปเลยก็มี ยังจำครั้งนั้นได้ก็คือ อาจารย์ให้โจทย์เขียนโปรแกรมมาแล้วบอกว่าจะไม่ปล่อยกลับบ้านถ้าทำไม่เสร็จ ซึ่งก็ดึกมากแล้ว อีกทั้งหัวสมองนั้นตึ้บไปหมด (แต่ก็โชคดีที่ลองผิดลองถูกมาได้จนสำเร็จ) อาจารย์เริ่มสอนให้เขียนโปรแกรมใน DOS ซึ่งต้องลำดับการโปรแกรมให้ดี ไม่อย่างนั้นโปรแกรมผิดพลาดได้ง่ายๆเลย มีภาพมาให้ดูครับ โปรแกรมแรกในชีวิตในรูปแบบ DOS

My First Computer Language !!!

ภาษาคอมพิวเตอร์ตัวแรกที่โอ๊คได้มีโอกาสสัมผัสมันก็คือ ภาษา HTML โดยที่ในตอนนั้นโอ๊คชอบเกมมาก จึงได้เข้าร่วมเล่น webboard กับเกมเมอร์ทั้งหลาย ได้มีการแลกเปลี่ยนความคิดเห็นเกี่ยวกับเกม หรือเอาเกมใหม่ๆมาเล่าสู่กันฟัง จนทำให้รู้จักคำว่า Review เกม หรือการวิจารณ์เกมนั่นแหละ และหลังจากนั้นก็ไปเจอกับเวปไซด์เปิดใหม่(ของคนไทยนี่แหละครับ) เกี่ยวกับเกม แต่เวปนี้ไม่ค่อยมีคน แต่ด้วยความที่ไอ้เราก็มืออยู่ไม่สุก มีที่ไหนใหม่ๆต้องแจมเป็นที่นั่น เลยเข้าไป Review เกมใหม่ๆ ในบอร์ด ซึ่ง โอ๊คทำไว้เยอะมาก มันสนุกนะที่ได้เขียนให้คนอื่นได้อ่าน แปลกดีนะชีวิต แหะๆ และแล้วจุดเริ่มต้นของภาษา HTML ก็อยู่ตรงนี้เอง คือ เวปมาสเตอร์เห็นความกระตือรือล้นของโอ๊ค เลยจับมาเป็น Moderate ซะเลย (ผู้ดูแลเวปบอร์ด) พอหลังจากนั้นเค้าก็ให้เริ่มเขียนบทความขึ้นเวป ทีนี้แหละครับ ต้องมาเจอกับภาษา HTML เต็มๆ แต่ด้วยความที่เครื่องมือการใช้งานในการเขียนบทความ เราแทบไม่ต้องมีความรู้ภาษา HTML เลยก็เขียนได้ง่ายๆแล้ว โอ๊คเขียนบทความให้ที่นั่นเยอะมากจนคุ้นเคยกับ HTML มากพอสมควร (แต่ไม่ชำนาญนะ) รู้คล่าวๆว่า ภาษา HTML นั้นหลักๆคือ เป็นลักษณะ Tag ถ้ามี tag เปิดที่ไหน จะต้องมี tag ปิดอยู่ในนั้นไม่ที่ใดก็ที่หนึ่ง ก็ถือเป็นจุดเริ่มต้นของภาษาคอมพิวเตอร์ภาษาแรกที่ได้ทำความรู้จักกับมันโดยไม่รู้อิโหน่อิเหน่

My Life in the end of semester....!!

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

วันพฤหัสบดีที่ 7 พฤษภาคม พ.ศ. 2552

Electronic Engineering @ KMITL !!! , My new home


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

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

Way of Programmer !!!...........

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

รับปรับมุมมองในการโปรแกรมมิ่งสำหรับผู้เริ่มต้นเขียนโปรแกรม

รับปรับมุมมองในการโปรแกรมมิ่งจากเรื่องยากๆไม่เข้าใจ จะช่วยทำให้เป็นเรื่องง่ายและสนุก แอดมาคุยกันได้ครับ (ขอจำกัดไว้สำหรับผู้เพิ่งเริ่มต้นเขียนโปรแกรมเท่านั้น ในระดับสูงไปกว่านี้เช่นเขียนจนชำนาญแล้วจะไม่รับนะครับ)
Powered By Blogger