Pranithan's profileชีวิตอุทิศให้.. se aeoni...PhotosBlogListsMore Tools Help

Blog


    September 02

    ว่าด้วย คณิต(สาดด) กับคอมพิวเตอร์

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

    เรื่อง ที่ทำให้เป็น "เรื่อง"
    เหตุผลที่ทำให้เป็นเรื่องก็เพราะว่า การกล่าวถึงคณิตศาสตร์ มันเป็นอะไรที่ยิ่งใหญ่มากกก เกินกว่าที่หัวสมองเล็กๆของผมจะเข้าใจหมด ซึ้งงทุกแก่นแท้(แค่ผิวๆ ก็ซึ้งมากละครับOpen-mouthed) เพราะฉะนั้น ผมจะรวบรวมหัวข้อที่คิดว่าน่าจะเป็นพื้นฐานที่เกี่ยวข้องกับการเขียนโปรแกรมจริงๆ ดังต่อไปนี้

    จำนวน
    คงไม่ต้องอธิบายคำนี้อีกแล้วนะครับ แต่ขอเฉียดไปถึงความสับสนระหว่างจำนวนกับตัวเลขหน่อยนะครับ ว่า อะไร? คือความแตกต่างระหว่าง จำนวน และตัวเลข จำนวนก็คือ ปริมาณของสิ่งใดสิ่งหนึ่ง แล้วตัวเลขละ? ตัวเลขก็คือสิ่งที่ใช้แทนจำนวน(พูดง่ายๆก็คือแทนปริมาณนะครับ) ฉะนั้นแล้ว จำนวน นั้นอาจไม่ใช่ตัวเลขเสมอไป เพราะผมอาจจะบอกว่า ผมไม่มีเงินเลยสักบาท (คงไม่มีใครบนโลกนี้พูดประโยค "ผมมีเงินอยู่ 0 บาท" ใช่ไหมละครับ ^^'') แต่อย่างไรก็ดีนับแต่นี้ ผมขอให้จำนวนที่ผมเอ่ยถึงแทนด้วยตัวเลข(รวมตัวอักษร A-F) นะครับ เอาละทีนี้ เรื่องจำนวนเนี่ยมันยังแบ่งออกเป็นหลายส่วนเหมือนกันนะครับ(ท่านที่เคยเรียนไปแล้วพอจะเห็นภาพลางๆ ไหมครับ) แต่ผมจะกล่าวถึงเพียงแค่ จำนวนเต็ม(Integers) และจำนวนทศนิยม(Decimal Numbers) เท่านั้น(เพราะคอมพิวเตอร์มีการเก็บข้อมูลได้จำกัด) ทั้งจำนวนเต็ม และจำนวนทศนิยมนั้น เป็นส่วนหนึ่งของจำนวนตรรกยะ(Rational Numbers)
    • จำนวนเต็ม(Integers) จำนวนเต็มมีความสำคัญมาก จำนวนเต็มอาจเรียกอีกชื่อว่า จำนวนนับ (ซึ่งคอมพิวเตอร์ก็ใช้ "นับ" จริงๆด้วย เดี๋ยวท่านจะทราบในภายหลัง ว่ามันนับยังไง) คงไม่ต้องอธิบายเพิ่มเติมแล้วครับเกี่ยวกับจำนวนเต็ม (เพราะใช้กันอยู่ทุกวัน ไม่เชื่อก็นับ 1 2 3 !ดูสิครับ +_+)
    • จำนวนทศนิยม(Decimal Numbers) จำนวนทศนิยมก็คือ จำนวนเต็ม(อาจมีค่าเป็น 0) บวกกับจำนวนหลังจุดทศนิยม(Decimal Point) เช่น 0.0002 ตรงนี้นะครับ ขอเสริมอีกนิดหนึ่งเกี่ยวกับหลักการของภาษา C++ (เน้นนะครับว่า C++) ว่าท่านสามารถป้อนจำนวนดังกล่าวเข้าเครื่องคอมพิวเตอร์เป็น 2e-4 ได้ โดยนิพจน์ดังกล่าวนี้หมายความว่า 2 x 10-4 (ซึ่ง e ย่อมาจาก Exponential)
    ฐาน ของจำนวนในคอมพิวเตอร์
    ไหนๆ ก็เอ่ยถึงเรื่องจำนวนแล้ว ก็ขอเอ่ยถึงเรื่องฐาน(Base) ของจำนวนหน่อยนะครับ ในที่นี้บางท่าน(รวมถึงตัวผมเองด้วย) อาจจะไปสับสนกับเรื่อง Logarithm ได้นะครับ ขอให้แยกกันโดยสิ้นเชิงเลยนะครับ มันไม่เกี่ยวกันนะครับ เรื่องเลขฐานในคอมพิวเตอร์มีขึ้นมาเพื่อ? เพื่อให้เราชาวโลกได้ปวดหัว??? เปล่าครับมิได้เป็นเช่นนั้น เหตุผลที่มีเลขฐานขึ้นมาก็เพราะว่า คอมพิวเตอร์มันโง่ครับ! มันไม่รู้หรอกว่าหนึ่งถึงสิบ คืออะไร ทำไม 1+1 ถึงได้ 2 มันคิดไม่ได้ครับ แต่มนุษย์(อันแสนฉลาด) อย่างเราๆเนี่ยแหละที่เสกสรรปั้นแต่ง ทดแทนการคิดของมันจนได้ แล้วเขาทำได้อย่างไรละ ก็ต้องเกริ่นเรื่องพื้นฐานการคำนวนของคอมพิวเตอร์กันก่อนครับ คอมพิวเตอร์นั้นมันรู้จักเลขอยู่ฐานเดียวครับคือเลขฐานสอง (ซึ่งมีแค่ 0 กับ 1 เท่านั้น!!) เออแปลกไหม
    สำหรับหลักการคิดคำนวนจากเลขฐานหนึ่งไปอีกฐานหนึ่งนั้น ผมจะอธิบายภายหลังนะครับ แต่จะขอสรุปสั้นๆก่อนว่า ทุกสิ่งทุกอย่างที่ปรากฎอยู่ต่อหน้าท่านบนจอภาพ ไม่ว่าจะเป็นอักษร ภาพ ตัวเลข ล้วนแล้วแต่เป็นจำนวนของเลขฐานสองทั้งสิ้นที่เก็บ และประมวลอยู่ในระบบคอมพิวเตอร์
    • อนึ่งเลขฐาน ที่นิยมใช้ในการเขียนโปรแกรม(ที่ใช้ในภาษา C) ได้แก่ เลขฐานสิบ เลขฐานสิบหก และฐานแปด แล้วฐานสองมันหายไปไหน? ผมก็ไม่ทราบเหมือนกันว่าทำไมคนสร้างตัวแปลภาษามันไม่ยอมเพิ่มจำนวนที่เป็นเลขฐานสองเข้าไป(อาจจะคิดว่ามันแปลงๆ แล้วลงตัวกับฐานแปดกับสิบหกแล้วมั้ง เลยไม่อยากให้เขียนยืดยาว)
      • เลขฐานสิบแต่ละหลักประกอบไปด้วย ตัวเลข 0-9 (ทั้งหมดสิบตัว)
      • เลขฐานสิบหกแต่ละหลักประกอบไปด้วย ตัวเลข 0-9 และตัวอักษร A-F (ทั้งหมดสิบหกตัว เพราะฉะนั้นเวลาจะนับเลขฐานนี้ก็ต้องนับ 0 1 2 3 4 5 6 7 8 9 A B C D E F แล้วค่อยเป็น 10!! เฮ้อเหนื่อย+_+ <- นี้ไม่ใช่สิบในเลขฐานสิบนะครับเตือนๆ)
      • ส่วนเลขฐานแปด(ผม)ไม่ค่อยได้ใช้สักเท่าไหร่ มีตัวเลข 0-7 ตัวเท่านั้น
    เอาไว้จะมาเขียนเรื่องอื่นต่อนะครับ..

    อ้างอิง : รำพรรณ จันทวีวัฒน์, ผู้ช่วยศาสตราจารย์. คณิตศาสตร์สำหรับคอมพิวเตอร์. กรุงเทพฯ. โอเดียนสโตร์. พิมพ์ครั้งที่ 1 ปี 2543

    Comments

    Please wait...
    Sorry, the comment you entered is too long. Please shorten it.
    You didn't enter anything. Please try again.
    Sorry, we can't add your comment right now. Please try again later.
    To add a comment, you need permission from your parent. Ask for permission
    Your parent has turned off comments.
    Sorry, we can't delete your comment right now. Please try again later.
    You've exceeded the maximum number of comments that can be left in one day. Please try again in 24 hours.
    Your account has had the ability to leave comments disabled because our systems indicate that you may be spamming other users. If you believe that your account has been disabled in error please contact Windows Live support.
    Complete the security check below to finish leaving your comment.
    The characters you type in the security check must match the characters in the picture or audio.

    To add a comment, sign in with your Windows Live ID (if you use Hotmail, Messenger, or Xbox LIVE, you have a Windows Live ID). Sign in


    Don't have a Windows Live ID? Sign up

    Trackbacks

    The trackback URL for this entry is:
    http://pranithan-kang.spaces.live.com/blog/cns!350202B86A674A52!518.trak
    Weblogs that reference this entry
    • None