โครงสร้างโปรแกรมภาษา C# และข้อมูลพื้นฐานและตัวดำเนินการ
การโปรแกรมภาษา C# ขั้นพื้นฐานที่มีเฉพาะส่วนของโปรแกรมหลักและไม่มีโปรแกรมย่อย(subroutine) จะมีส่วนประกอบดังนี้namespace ___(A)___
{
class ___(B)___
{
static void Main()
{
___(C)___
}
}
}
ตามโครงสร้างข้างต้น ณ ตำแหน่ง (A), (B), and (C) มีความหมายดังต่อไปนี้
• ตำแหน่ง (A) ระบุชื่อของเนมสเปซ (namespace) ซึ่งใช้ในการกำหนดขอบเขตให้กับคลาสต่าง ๆ
รวมถึงใช้ในการจัดโครงสร้างของโปรแกรมขนาดใหญ่ให้เป็นสัดส่วนอีกด้วย โดยเฉพาะอย่างยิ่ง
ในการพัฒนาแอพลิเคชันที่ซับซ้อนโดยผู้พัฒนาหลายคน การกำหนดเนมสเปซของตนเองสามารถ
ป้องกันปัญหาการตั้งชื่อคลาสหรือค่าคงที่อื่น ๆ ซ้ำกันได้ ส่วนไลบรารีของภาษา C# ที่มีให้เรา
เรียกใช้งานได้ ก็ถูกเตรียมเอาไว้ในเนมสเปซชื่อต่าง ๆ เช่นเดียวกัน
• ตำแหน่ง (B) ระบุชื่อของคลาส (class)
• ตำแหน่ง (C) เป็นพื้นที่สำหรับคำสั่งต่าง ๆ ที่ผู้เขียนโปรแกรมต้องการให้คอมพิวเตอร์ปฏิบัติตาม
นอกจากนี้โปรแกรมที่ไม่ซับซ้อนมากยังสามารถละส่วนที่ระบุเนมสเปซทิ้งไปได้ คลาสที่ถูกสร้าง
ขึ้นมาโดยไม่อยู่ในขอบเขตของเนมสเปซใดจะถือว่าอยู่ในเนมสเปซกลาง (global namespace)
class ___(B)___
{
static void Main()
{
___(C)___
}
}
โปรแกรมภาษา C# ซึ่งแสดงข้อความ Hello World! ออกทางจอภาพ จากนั้นรอจนกว่าผู้ใช้จะกด Enter และจบการทำงาน โปรแกรมนี้อยู่ในเนมสเปซชื่อ HelloApp และคลาสชื่อ HelloClass
namespace HelloApp
{
class HelloClass
{
static void Main()
{
System.Console.WriteLine("Hello World!");
System.Console.ReadLine();
}
}
}
โปรแกรมภาษา C# ซึ่งให้ผลลัพธ์เช่นเดียวกับโปรแกรมข้างต้น แต่เขียนโดยไม่ระบุเนมสเปซ
class HelloClass
{
static void Main()
{
System.Console.WriteLine("Hello World!");
System.Console.ReadLine();
}
}
กฎการตั้งชื่อตัวระบุในภาษา C#
โปรแกรมภาษา C# ที่นำไปใช้งานจริงมักจะมีการใช้งานตัวระบุ (identifier) อยู่ทั่วไปภายในโปรแกรม เช่นชื่อของเนมสเปซและคลาสที่ได้กล่าวไปข้างต้น ภาษา C# ได้จำกัดกฎเกณฑ์การตั้งชื่อให้ตัวระบุเอาไว้ดังต่อไปนี้
• ชื่อตัวระบุต้องประกอบด้วยตัวอักษรภาษาอังกฤษ (A-Z,a-z) ตัวเลข (0-9) หรือเครื่องหมายขีดเส้น
ใต้ (_) เท่านั้น
• ตัวอักษรตัวแรกของชื่อต้องเป็นตัวอักษรภาษาอังกฤษ หรือตัวขีดเส้นใต้
• ชื่อตัวระบุจะมีความยาวได้ไม่เกิน 63 ตัวอักษร
• ชื่อตัวระบุต้องไม่ซ้ำกับคำสงวน (reserved word) เช่น class, namespace, int, void,
static
ชนิดข้อมูล (Data Types) ใน C#
C# กำหนดชนิดของข้อมูลไว้หลากหลายชนิดเพื่อรองรับการจัดเก็บข้อมูลหลาย ๆ ประเภท
ตารางที่ 1 แสดงชนิดข้อมูลหลัก ๆ ที่พบบ่อยในโปรแกรมทั่วไป
ตารางที่ 1 ชนิดข้อมูลหลัก ๆ ของภาษา C#
ชนิดข้อมูล คำอธิบายchar อักขระเดี่ยว เช่น a
bool ค่าความจริง เป็นไปได้สองค่าคือ true หรือ false
byte จำนวนเต็มไม่มีเครื่องหมาย ตั้งแต่ 0 ถึง 255
int จำนวนเต็มมีเครื่องหมาย ตั้งแต- 2,147,483,648 ถึง 2,147,483,647
uint จำนวนเต็มไม่มีเครื่องหมาย ตั้งแต่ 0 ถึง 4,294,967,295
long จำนวนเต็มมีเครื่องหมาย ตั้งแต- 9,223,372,036,854,775,808 ถึง 9,223,372,036,854,775,807
ulong จำนวนเต็มไม่มีเครื่องหมาย ตั้งแต่ 0 and 18,446,744,073,709,551,615
float จำนวนจริง (มีทศนิยมได้) เช่น 3.14159
double จำนวนจริงที่เก็บความละเอียดมากเป็นสองเท่า
string ข้อความ (สายอักขระ) เช่น Hello
ตัวแปร (Variables)
ตัวแปร (variable) เป็นตัวระบุประเภทหนึ่งที่นำมาใช้ในการอ้างถึงข้อมูล โดยค่าของมันสามารถถูกเปลี่ยนแปลงได้ตลอดเวลาที่โปรแกรมกำลังทำงานอยู่ ในภาษา C# ตัวแปรทุกตัวต้องถูกประกาศก่อนที่จะถูกนำมาใช้งาน โดยมีการระบุชนิดข้อมูลที่จะใช้กับตัวแปรนั้น ๆ ไว้ด้วยตามรูปแบบดังนี้
DataType variableName;
ในที่นี้ variableName คือชื่อของตัวแปร และ DataType คือชื่อของชนิดข้อมูลที่ตัวแปรนี้
เก็บค่าได้ (ตามตัวอย่างในตารางที่ 1)
นอกจากการประกาศตัวแปรตามแบบข้างต้นแล้ว เรายังสามารถกำหนดค่าเริ่มต้นให้กับตัว
แปรนั้นๆ ได้อีกด้วย โดยมีรูปแบบดังนี้
DataType variableName = initialValue;
จะเห็นว่าส่วนที่เพิ่มขึ้นมาคือเครื่องหมาย = และ initialValue ซึ่งระบุค่าเริ่มต้นให้กับตัว
แปรชื่อvariableName
คำสั่งด้านล่างประกาศตัวแปรชื่อ distance ที่มีชนิดข้อมูลเป็น uint และไม่มีการกำหนดค่าเริ่มต้น
uint distance;
คำสั่งด้านล่างประกาศตัวแปรชื่อ salary ที่มีชนิดข้อมูลเป็น long และค่าเริ่มต้นเป็น 30000
long salary = 30000;
ค่าคงที่ (Constants)
ค่าคงที่เป็นตัวระบุอีกประเภทหนึ่งที่นำมาใช้ในการอ้างถึงข้อมูลเช่นเดียวกับตัวแปร สิ่งที่แตกต่างจากตัวแปรก็คือค่าของมันไม่สามารถเปลี่ยนแปลงได้อีกหลังจากการประกาศในภาษา C# ค่าคงที่ต้องถูกประกาศโดยระบุชนิดข้อมูลและค่าตั้งต้นก่อนถูกนำมาใช้งานเสมอการประกาศค่าคงที่จะคล้ายคลึงกับการประกาศตัวแปร แตกต่างกันตรงที่ต้องมีการระบุด้วยคีย์เวิร์ดconst ดังแสดง
const DataType constantName = value;
ในที่นี้ constantName คือชื่อของค่าคงที่ ส่วน DataType คือชื่อชนิดข้อมูลที่ค่าคงที่นี้ใช้
อ้างถึง และ value ระบุค่าที่ค่าคงที่นี้ถูกใช้เป็นตัวแทน
คำสั่งด้านล่างประกาศค่าคงที่ชื่อ myconst โดยมีชนิดข้อมูลเป็นแบบ double และใช้แทนค่า 2.71828
const double myconst = 2.71828;
การใช้งานค่าคงที่มีประโยชน์มากในกรณีที่เราต้องอ้างอิงถึงค่าใด ๆ ซ้ำกันอยู่บ่อยครั้งภายใน
โปรแกรม ดังเช่นตัวอย่างต่อไปนี้
โปรแกรมด้านล่างเป็นโปรแกรมที่ทำให้คอมพิวเตอร์กล่าวคำทักทายทั่ว ๆ ไปสองบรรทัดกับผู้ใช้ซึ่งสมมติว่าชื่อ Harry จะเห็นว่าหากเราต้องการเปลี่ยนชื่อผู้ใช้เป็นชื่ออื่นนั้นก็สามารถทำได้ง่าย ๆ โดยแก้ไขบรรทัด ที่ 5 ให้ค่าคงที่แทนด้วยค่าอื่นเท่านั้น
1: using System;
2:
3: class Intro {
4: static void Main() {
5: const string MY_NAME = "Harry";
6:
7: Console.WriteLine("Hello {0}, how are you?", MY_NAME);
8: Console.WriteLine("And how can I help you, {0}?",
9: MY_NAME);
10: Console.ReadLine();
11: }
12: }
ตัวแปร)รวมถึงค่าคงที่ (ที่มีชนิดข้อมูลแบบเดียวกันสามารถถูกประกาศร่วมกันภายในคำสั่งเดียวกันได้โดยคั่นด้วยเครื่องหมายคอมม่า
const int FreezingPoint = 32;
int x, y;
int wd = 5, ht = 8;
const double PI = 3.1424;
char ch = 'A';
string mynote = "Hello, Kitty";
int j = 5;
นิพจน์ทางคณิตศาสตร์ (Arithmetic Expressions)
นิพจน์ (expression) ภายในโปรแกรมภาษา C# หมายถึงส่วนของโปรแกรมที่สามารถถูกตีความเป็นค่าต่าง ๆ ได้ โดยนิพจน์อาจประกอบด้วยเทอมเพียงเทอมเดียว หรือเกิดจากการผสมกันของนิพจน์อื่นที่เล็กกว่า ด้านล่างเป็นตัวอย่างของนิพจน์ที่ประกอบด้วยเทอมเพียงเทอมเดียว• ตัวเลขโดด เช่น 3000, 1.414
• ข้อความ เช่น "Hello, World"
• ค่าความจริง ได้แก่ true และ false
• ตัวแปรหรือค่าคงที่เดี่ยว ๆ ที่ผ่านการกำหนดค่าให้แล้ว เช่น myName, salary
ในที่นี้จะเน้นการศึกษาเกี่ยวกับนิพจน์ที่ให้ค่าเป็นตัวเลข เรียกว่า นิพจน์ทางคณิตศาสตร์ (arithmeticexpression) โดยเราสามารถผสมนิพจน์ต่าง ๆ ให้เป็นนิพจน์ที่ซับซ้อนขึ้นโดยอาศัยตัวดำเนินการทางคณิตศาสตร์ที่มีให้ในภาษา C# ดังตารางที่2
ตารางที่ 2 ตัวดำเนินการทางคณิตศาสตร์
บวก (add) + 2 x+4 24
ลบ (subtract) - 2 32-x 12
คูณ (multiply) * 2 x*2 40
หาร (divide) / 2 x/2 10
หารเอาเศษ
(modulo) % 2 x%6 2
ตัวดำเนินการ สัญลักษณ์ จำนวนนิพจน์ที่นำมาผสม ตัวอย่าง ค่าของนิพจน์เมื่อ x = 20
กลับเครื่องหมาย
(negate) - 1 -x -20
จัดกลุ่ม ( ) N/A (x+2)*3 66
หากนิพจน์ที่สร้างขึ้นมาใหม่ประกอบด้วยตัวดำเนินการมากกว่าหนึ่งตัว C# จะคำนวณค่าเรียง
ตามลำดับก่อนหลังดังนี้
• ( )
• *, / และ %
• + และ -
• หากตัวดำเนินการมีลำดับเท่าเทียมกัน คำนวณจากซ้ายไปขวา
คำสั่งที่ใช้ในการแสดงผล
คำสั่งหลักที่ใช้ในการแสดงข้อความออกทางจอภาพได้แก่คำสั่ง Write และ WriteLine
ซึ่งถูกนิยามไว้ในคลาสชื่อ Console และเนมสเปสชื่อ System สองคำสั่งนี้มีการใช้งานในลักษณะ
เดียวกัน แตกต่างกันที่คำสั่ง WriteLine จะพิมพ์ข้อความตามด้วยการขึ้นบรรทัดใหม่หลังจากพิมพ์เสร็จลองพิจารณาการใช้งานจากตัวอย่างต่อไปนี้
การเรียกใช้งานคำสั่ง Write และ WriteLine โดยระบุเนมสเปสเต็มรูปแบบ
class Hello
{
static void Main()
{
System.Console.Write("Hello, ");
System.Console.WriteLine("everybody");
}
}
สังเกตว่าการเรียกใช้คำสั่ง Write และ WriteLine นั้นต้องระบุถึงคลาส Console ซึ่งเป็น
คลาสที่นิยามคำสั่งนี้เอาไว้ และเนื่องจากคลาส Console เป็นคลาสที่อยู่ในเนมสเปส System จึงต้อง
ระบุชื่อเนมสเปสไว้ด้วยตามตัวอย่าง อย่างไรก็ตามเราสามารถทำโปรแกรมให้สั้นลงได้โดยใช้คำสั่ง
using ซึ่งเป็นการสั่งให้คอมไพเลอร์ค้นหาคลาสที่เรียกใช้งานในเนมสเปสที่ระบุ ดังตัวอย่างต่อไปนี้
การเรียกใช้งานคำสั่ง Write และ WriteLine โดยใช้คำสั่ง using
using System;
class Hello
{
static void Main()
{
Console.Write("Hello, ");
Console.WriteLine("everybody");
}
}
คำสั่ง Write และ WriteLine นั้นยังสามารถเรียกใช้งานในรูปแบบที่ซับซ้อนกว่านี้อีกมาก ดังแสดงในตัวอย่างต่อไปนี้
การเรียกใช้งานคำสั่ง Write และ WriteLine โดยใช้สตริงกำหนดรูปแบบ (formatting string)
using System;
class Hello
{
static void Main()
{
int width = 80, height = 30;
Console.WriteLine("Area of {0}x{1} rectangle = {2}",
width, height, width*height);
}
}
จะเห็นว่าสตริงที่เป็นพารามิเตอร์ตัวแรกของคำสั่ง WriteLine นั้นเป็นสตริงที่ใช้สำหรับ
กำหนดรูปแบบในการแสดงผลของนิพจน์ที่ตามมาอีกสามตัว สัญลักษณ์ {0} {1} และ {2} คือตำแหน่งที่ C# จะนำค่าของนิพจน์ width, height และ width*height มาแทนที่
การขอความช่วยเหลือ
Express) มีการเชื่อมต่อกับระบบไลบรารีของ Microsoft Developer Network (MSDN Library) ซึ่งรวบรวมเอกสารเชิงเทคนิคสำหรับการพัฒนาซอฟต์แวร์บนไมโครซอฟต์วินโดวส์ไว้โดยละเอียด หาก MSDN Library ได้ถูกติดตั้งไว้พร้อมกับการติดตั้ง MS Visual C# ผู้พัฒนาโปรแกรมก็สามารถเรียก MSDN Library จากเมนู Help เพื่อเปิดเอกสารเพื่ออ่านรายละเอียดคุณสมบัติและการใช้งานคลาสต่าง ๆ ที่ถูกเตรียมไว้ใน .NET Framework ได้ รูปที่ 1.6 แสดงการเรียกใช้งาน MSDN Library จากหน้าจอหลักของ MS Visual C# ซึ่งจะได้หน้าจอคล้ายคลึงกับรูปที่ 1.7
รูปที่ 1.6 การเรียกใช้งาน MSDN Library จากหน้าจอหลักของ MS Visual C#
หัวข้อจากสารบัญทางด้านซ้ายมือ หรือป้อนคำค้นในกล่อง Search เพื่อค้นหาหัวข้อที่เกี่ยวข้อง รูปที่ 1.8
แสดงผลลัพธ์จากการค้นหาด้วยคำค้น Math
รูปที่ 1.7 หน้าจอของ MSDN Library ในส่วนของการค้นหา
รูปที่ 1.8 ผลลัพธ์จากการป้อนคำค้น Math
รายละเอียดของชื่อเนมสเปส คลาส คีย์เวิร์ด หรือเมท็อดที่ต้องการได้จากพื้นที่การเขียนโปรแกรมโดยตรง โดยเลื่อนเคอร์เซอร์มาวางไว้ในคำที่ต้องการสืบค้น แล้วกดปุ่ม F1 ดังแสดงตัวอย่างในรูปที่ 1.9 ซึ่งจะได้ผลลัพธ์เป็นรายการของคลาสที่อยู่ในเนมสเปส System ดังรูปที่ 1.10
รูปที่ 1.9 การขอความช่วยเหลือโดยใช้ปุ่ม F1
รูปที่ 1.10 รายชื่อคลาสในเนมสเปซ System หลังใช้คำสั่งค้นหาผ่าน MSDN Library
ไม่มีความคิดเห็น:
แสดงความคิดเห็น