วันอาทิตย์ที่ 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 ที่ให้พื้นที่ฝากไฟล์ฟรีครับ

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

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