วันอังคารที่ 2 มีนาคม พ.ศ. 2553

เงินหมื่นแรกในชีวิต....

ในที่สุดก็หาเงินหมื่นแรกได้ เห้อ กว่าจะเก็บได้แต่ละหมื่น หืดขึ้นคอเลย บังเอิญมีสอนติดกัน สามวัน ติวให้เด็กวัฒนา วิชาเลข สอนทีเดียว สามสี่คน โอย คุมไม่อยู่เลย แต่น้า รร ดังแท้ๆ แต่ไหงเด็กซนฟังภาษาไม่รุ้เรื่องเนี้ยย เมื่อวานยิ่งแล้วใหญ่นัดเราไป แปดโมงครึ่ง ได้สอนจริงๆก็สิบเอ็ดโมง ตายๆ ไม่ต้องทำไรเลยกุ 555 นี่น้าชีวิตลูกจ้าง ต้องอดทนสุดๆกว่าจะได้เงินมา ใกล้ปิดเทอมแล้วว ช่วงนี้เหลือสอบอีก 4 ตัว วางแพลนจะไปพัทยาซะหน่อย เท่วทะเล เสร็จแล้วต้องมาดูแลตัวเองหน่อยแล้วด้วยอาหารเสริม ปิดเทอมนี้ต้องสิวหายเกลี้ยงหน้าแน่นอน

ช่วงสอบแท้ๆ แต่มามีโน๊ตบุ้คเล่น ได้มาใหม่ๆ โหลดเกมอย่างเดียวเป็นสิบๆเกม เล่นไม่หวัดไม่ไหวเลย 555 เอ้าขยันหน่อยเร็ว

วันพฤหัสบดีที่ 21 มกราคม พ.ศ. 2553

Learn to start my own business... and begin to be good giver

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

วันพฤหัสบดีที่ 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 )

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

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