วันอังคารที่ 23 มิถุนายน พ.ศ. 2558

Week4 : โปรแกรมภาษาคอมพิวเตอร์ C#

วันนี้จะขอมาแนะนำและให้ความรู้เกี่ยวกับภาษาC# แต่ก่อนอื่นเราว่าดูประวัติของภาษาCกันก่อนที่จะเริ่มเข้าเรื่องภาษาC#กันเถอะ



ประวัติภาษาC

ภาษาซีเป็นภาษาที่ถือว่าเป็นทั้งภาษาระดับสูงและระดับต่ำ ถูกพัฒนาโดยเดนนิส ริดชีโดยเดนนิส
ได้ใช้หลักการของภาษา บีซีพีแอล (BCPL : Basic Combine Programming Language) ซึ่งพัฒนาขึ้นโดยเคน ทอมสัน การออกแบบและพัฒนาภาษาซีของเดนนิส ริดชี มีจุดมุ่งหมายให้เป็นภาษาสำหรับใช้เขียนโปรแกรมปฏิบัติการระบบยูนิกซ์ และได้ตั้งชื่อว่า ซี (C) เพราะเห็นว่า ซี (C) เป็นตัวอักษรต่อจากบี (B) ของภาษา BCPL ภาษาซีถือว่าเป็นภาษาระดับสูงและภาษาระดับต่ำ

Dennis Ritchie




ทำไมภาษาCจึงจัดว่าเป็นภาษาระดับสูงและภาษาระดับต่ำ

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



จาก C สู่ C++
       ถูกพัฒนาโดย Bjarne Stroustrup แห่ง Bell Labs โดยได้นำเอาภาษา C มาพัฒนาและใส่แนวคิดการเขียนโปรแกรมเชิงวัตถุ หรือ OOP (Object Oriented Programming)เข้าไปด้วย ซึ่งเป็นที่มาของ C++ ก็คือ นำภาษา C มาพัฒนาปรับปรุงให้มีประสิทธิภาพมากขึ้น


Bjarne Stroustrup



หลังจากที่เราได้ศึกษาประวัติของภาษาCมาแล้ว ต่อมาเรามาศึกษาภาษาC#กันต่อไปเลยดีกว่า...

ภาษา C#
ภาษา C# (ซี-ชาร์ป) เป็นภาษาโปรแกรมคอมพิวเตอร์ระดับสูงที่ใช้สาหรับเขียนโปรแกรมคอมพิวเตอร์1 ที่ได้รับความนิยมเพิ่มมากขึ้นเรื่อยๆ ในปัจจุบัน และเป็นภาษาโปรแกรมคอมพิวเตอร์ที่เหมาะสาหรับผู้ที่เริ่มต้นสนใจที่จะเขียนโปรแกรมคอมพิวเตอร์เป็นอย่างยิ่ง ซึ่งภาษา C# ถูกพัฒนามาจากภาษา C++ (ซี-พลัสพลัส) และมีโครงสร้างแบบเชิงวัตถุ (object-oriented programming) โดยใช้ Visual Studio (วิชวล-สตูดิโอ) เป็นเครื่องมือสาหรับพัฒนาโปรแกรมคอมพิวเตอร์ ซึ่ง Visual Studio เป็นเครื่องมือที่คอยอานวยความสะดวกในการพัฒนาโปรแกรมคอมพิวเตอร์ ทาให้ผู้เขียนโปรแกรมสามารถพัฒนาโปรแกรมคอมพิวเตอร์ได้ไม่ยากนัก



ข้อดีของภาษาC#

1. เป็นภาษาที่เขียนง่าย ไม่ซับซ้อนและเรียบง่าย เพราะคล้ายภาษา Java ภาษา C และ ภาษา C++ ทำให้หลายคนเข้าใจได้ไม่ยาก

2. เป็นภาษาโปรแกรมคอมพิวเตอร์ยุคใหม่ที่ถูกสร้างขึ้นมาสำหรับการพัฒนาโปรแกรมคอมพิวเตอร์ ภายใต้แนวคิด .NET Framework ซึ่งเป็นแนวคิดที่ได้รับความนิยมสูงที่สุดในปัจจุบัน

3. เป็นภาษาที่ถูกออกแบบมาให้ทำงานบน .NET Framework (ดอตเน็ต-เฟรมเวิร์ก) โดย .NET Framework เป็นรูปแบบในการพัฒนาโปรแกรมคอมพิวเตอร์สมัยใหม่ ซึ่งบริษัทไมโครซอพท์เป็นผู้พัฒนา ซึ่งคุณสมบัติที่สาคัญของ .NET Framework ก็คือ ผู้ใช้งานสามารถใช้งานบนระบบฮาร์ดแวร์ (Hardware) หรือ ระบบปฏิบัติการ (Operating System) ที่แตกต่างกันได้อย่างไม่มีปัญหา เช่น เครื่องพีซีกับเครื่องแมคหรือ ระบบปฏิบัติการวินโดว์กับระบบปฏิบัติการแมคอินทอช เป็นต้น ดังนั้น ผู้เขียนโปรแกรมจึงสามารถเขียนโปรแกรมคอมพิวเตอร์ใหม่ๆ ได้โดยง่าย รวดเร็ว และไม่ต้องติดข้อจากัดต่างๆ อย่างเช่นการเขียนโปรแกรมคอมพิวเตอร์ในสมัยก่อนอีกต่อไป

4. เป็นภาษาที่แข็งแกร่ง เพราะเป็นภาษาที่ได้มีการแก้ไขข้อบกพร่องบางอย่างของภาษา Java ภาษา C และ ภาษา C++ เหล่านั้น ทาให้ ภาษา C# เป็นภาษาที่มีความสมบูรณ์ตามแบบฉบับของโครงสร้างแบบเชิงวัตถุ(object-oriented programming)



เปรียบเทียบภาษา C# กับภาษาอื่นๆ
     1.ถ้าพูดถึงความใกล้เคียงกับภาษาอื่นๆ ภาษา C# ใกล้เคียงกับภาษา Java มากที่สุด โดยมีความเหมือนกันถึง 70% ดั้งนั้นนักเขียนโปรแกรมภาษา Java จึงอาจย้ายมาเขียนภาษา C# ได้โดยศึกษาว่ามีสิ่งใดที่แตกต่างกันบ้าง ภาษา C# ยังมีความคล้ายคลึงกับภาษ C++.NET และภาษา VB.NET เป็นอย่างมาก ทำให้นักเขียนโปรแกรมภาษา C# สามารถอ่าน-เขียนโค้ดในภาษากลุ่มนี้ได้เมื่อฝึกฝนเพียงเล็กน้อย 
     2.C# และภาษา Java ทั้งคู่เป็นแบบสืบจากคลาสหลักได้คลาสเดียว ขณะที่ภาษา C++ สามารถสืบจากคลาสหลักได้มากกว่าหนึ่ง (Multiple inheritance) โดยภาษา C# และภาษา Java ใช้ Interface มาทดแทน Multiple inheritance เหมือนกันทั้งคู่
     3.สิ่งที่ภาษา C# และ Java มีร่วมกันคือเรื่อง Garbage Collection แต่ไม่มีใน C++ จึงทำให้ดูเหมือนว่าภาษา Java ต่อยอดมาจากภาษา C++ และ C# ต่อยอดมาจาก Java อีกที ที่เป็นเช่นนั้นเพราะทั้ง Java และ C# มีต้นสายมาจาก C++ ทำให้สองภาษานี้ดูคล้ายกัน แต่ภาษา C# ไม่ใช่ภาษา Java มันมีกลไกที่เป็นเอกลักษณ์หลายอย่าง เช่น พารามิเตอร์แบบ reference และ output การจัดเก็บ object ไว้ใน stack (struct) การทำ Versioning และยังมีสิ่งใหม่ๆ ที่เป็นข้อดี เช่น delegate, properties และ operator overloading ซึ่งจะไม่พบในภาษา Java




  






โครงสร้างโปรแกรมภาษา C#
            โครงสร้างโปรแกรมภาษา C# ขั้นพื้นฐานจะประกอบด้วยส่วนของโปรแกรมหลักแต่จะไม่มีส่วนของโปรแกรมย่อย (subroutine) โดยแสดงดังรูปที่ 1

                  

รูปที่ 1 โครงสร้างโปรแกรมภาษา C# ขั้นพื้นฐาน

จากรูปที่ 1 แสดงโครงสร้างโปรแกรมภาษา C# ขั้นพื้นฐาน โดยมีรายละเอียดดังนี้


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

            นอกจากนี้ ในบางกรณี ผู้เขียนโปรแกรมสามารถที่จะไม่เขียนในส่วนของ namespace ได้ ถ้าโปรแกรมคอมพิวเตอร์นั้นมีขนาดเล็ก และ ไม่ซับซ้อนมากนัก ซึ่งการที่ไม่เขียนในส่วนของ namespace จะถือว่า class ที่ถูกสร้างขึ้นมาอยู่ใน namespace กลาง โดยแสดงดังรูปที่ 2


รูปที่ 2 โครงสร้างโปรแกรมภาษา C# ขั้นพื้นฐาน กรณีไม่เขียนในส่วนของ namespace

ตัวอย่าง โครงสร้างโปรแกรมภาษา C# ขั้นพื้นฐาน ซึ่งจะแสดงข้อความ Hello C# ออกทางจอภาพ และจากนั้นรอจนกว่าผู้ใช้งานจะกด Enter แล้วจบการทางาน
กรณีที่ 1 เขียนในส่วนของ namespace โดยแสดงดังรูปที่ 3


รูปที่ 3 ตัวอย่างโครงสร้างโปรแกรมภาษา C# ขั้นพื้นฐาน กรณีเขียนในส่วนของ namespace

กรณีที่ 2 ไม่เขียนในส่วนของ namespace โดยแสดงดังรูปที่ 4



รูปที่ 4 ตัวอย่างโครงสร้างโปรแกรมภาษา C# ขั้นพื้นฐาน กรณีไม่เขียนในส่วนของ namespace



หลังจากที่เราได้ศึกษาภาษาC#บางส่วนไปแล้ว ก็หวังว่าจะเข้าใจเรื่องราวของภาษาC#กันมากขึ้นนะคะ


https://sites.google.com/site/programmingm42/phasa-c
http://www.vcharkarn.com/blog/43670/17073

3 ความคิดเห็น: