พื้นฐานการเขียนโปรแกรมด้วย C#
เนื้อหา โครงสร้างโปรแกรม ชนิดข้อมูล ตัวแปร นิพจน์ คำสั่งแสดงผล
โปรแกรมภาษา C# พิจารณาโปรแกรมต่อไปนี้ namespace HelloW { class HelloWClass { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); }
โปรแกรมภาษา C# ตัวอักษรเล็ก/ใหญ่มีความสำคัญ คำสั่งทุกคำสั่งต้องปิดท้ายด้วยเซมิโคลอน (;) จำนวนช่องว่าง (ทั้งแนวตั้งแนวนอน) ไม่มีผลต่อการทำงาน ใช้เครื่องหมายปีกกา {} จับกลุ่มคำสั่ง ข้อความที่อยู่ระหว่าง /* */ หรือหลัง // ถือเป็นคอมเม้นต์ ซึ่งไม่มีผลต่อการทำงานของโปรแกรม
โครงสร้างของโปรแกรม จุดเริ่มต้นของโปรแกรมจะอยู่ที่: เรียกว่าเมท็อด Main เมท็อดต้องอยู่ภายใต้คลาส (class) คลาสอาจอยู่ภายใต้เนมสเปส (namespace) หรือไม่ก็ได้ static void Main () { ... starting point ... }
โครงสร้างของโปรแกรม คลาสเปรียบเสมือนกล่องบรรจุเมท็อดหลาย ๆ เมท็อด เนมสเปสเปรียบเสมือนกล่องบรรจุคลาสหลาย ๆ คลาส เนมสเปสอาจอยู่ภายใต้เนมสเปสอื่นได้อีก โปรแกรมหนึ่ง ๆ อาจประกอบด้วยหลายเนมสเปส หรืออาจไม่อยู่ในเนมสเปสใด ๆ เลยก็ได้ Namespace Class method1 method2
โครงสร้างของโปรแกรม สำหรับโปรแกรมอย่างง่าย โปรแกรมประกอบด้วยคลาสเพียงคลาสเดียว โปรแกรมอาจประกอบด้วยเมท็อด Main เพียงเมท็อดเดียว namespace HelloW { class HelloWClass { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); }
คำสั่ง (Statement) คำสั่งใช้อธิบายการทำงานของโปรแกรมในแต่ละขั้นตอน เมท็อดถูกสร้างขึ้นจากคำสั่งตั้งแต่หนึ่งถึงหลายคำสั่ง Statement#1 class Hello { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); } Statement#2
คำสั่ง (Statement) Class Namespace namespace HelloW { class HelloWClass { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); } Namespace Class method1 method2 Statement#1 Statement#2 :
การตั้งชื่อ ทั้งเมท็อด คลาส เนมสเปส ต้องมีการตั้งชื่อกำกับ ในภาษา C# มีกฎการตั้งชื่อดังนี้ ขึ้นต้นด้วยอักขระภาษาอังกฤษ (A-Z, a-z) หรือตัวขีดเส้นใต้ (_) ส่วนที่เหลือประกอบด้วยอักขระภาษาอังกฤษ ตัวเลข หรือตัวขีดเส้นใต้ ความยาวสูงสุด 63 ตัวอักษร ต้องไม่ซ้ำกับคำสงวน (reserved words) เช่น class, namespace ตัวอย่างชื่อที่ถูกกฎ hEllO, E3_32ab, X_x_X022 ตัวอย่างชื่อที่ผิดกฎ 32ABC, A.2, C#Program, while
คำสงวน คำเหล่านี้ห้ามนำไปใช้เป็นชื่อในภาษา C#
ตัวแปร (Variable) ตัวแปรใช้สำหรับเก็บค่าของข้อมูล การประกาศตัวแปร การกำหนดค่าให้ตัวแปร ตัวอย่าง <type> <name>; <name> = <expression>; int width, height; int area; width = 10; height = 20; area = width * height;
ชนิดข้อมูล (Data Type) ขนาด ความหมาย ช่วง bool 1 byte ค่าความจริง (จริง-เท็จ) true / false char 2 byte อักขระโดด character code 0...65535 sbyte จำนวนเต็ม -128...127 byte จำนวนเต็มไม่ติดลบ 0...255 short 2 bytes -32,768...32,767 ushort 0...65535 int 4 bytes -2.1 x 109...2.1 x 109 uint 0...4.3 x 109 long 8 bytes -9.2 x 1018...9.2 x 1018 ulong 0...1.8 x 1019 float จำนวนจริง ±1.5x10-45...±3.4x1038 double จำนวนจริงความละเอียดสองเท่า ±5.0x10-324...±1.7x10308 decimal 16 bytes จำนวนจริงความละเอียดสูง ±1.0x10--28...±7.9x1028 string N/A สายอักขระ
การกำหนดค่าให้ตัวแปร เราสามารถกำหนดค่าเริ่มต้นให้กับตัวแปรได้พร้อมกับการประกาศตัวแปรนั้น ๆ ได้ทันที ตัวอย่าง int width = 10, height = 20; int area; area = width * height;
นิพจน์ (Expressions) นิพจน์เป็นส่วนหนึ่งของคำสั่งที่ถูกประเมินเป็นค่าได้ อาจเป็นค่าโดดหรือประกอบขึ้นมาจากนิพจน์ที่เล็กกว่า ตัวอย่างของนิพจน์ที่เป็นค่าโดด ตัวเลข 3212, 3.1415 อักขระ 'C' ค่าความจริง true or false ข้อความ "Hello, World" ตัวแปรหรือค่าคงที่ x, myName
นิพจน์ทางคณิตศาสตร์ นิพจน์ทางคณิตศาสตร์ (arithmetic expression) คือนิพจน์ที่ถูกตีความเป็นค่าจำนวน นิพจน์ทางคณิตศาสตร์สามารถนำมาประกอบเป็นนิพจน์ที่ซับซ้อนขึ้นได้โดยอาศัยตัวดำเนินการทางคณิตศาสตร์ (arithmetic operators) +, -, *, / % (ให้ค่าเศษจากการหาร) ตัวอย่าง 11+5 16 11/2 5 11.0/2 5.5 11%2 1 5.0%2.2 0.6
ลำดับการคำนวณ (Precedence Rules) ( ) *, / , % +, – ซ้ายไปขวา int Width,Height; Width = 10*5+(16 * 12)/5; Height = (16+5)+20%2;
การหารแบบจำนวนเต็ม การหารนิพจน์ที่เป็นจำนวนเต็มสองจำนวนให้ผลลัพธ์เป็นจำนวนเต็มเสมอ เศษจะถูกปัดทิ้ง หากตัวตั้งและ/หรือตัวหารเป็นจำนวนทศนิยม (float หรือ double) การหารจะคำนวณทศนิยมให้ int i1 = 10, i2 = 8; double f1 = 10, f2 = 8; double r1 = i1/i2; // r1 = 1 double r2 = f1/f2; // r2 = 1.25 double r3 = f1/i2; // r3 = 1.25 double r4 = i1/f2; // r4 = 1.25 double r1 = 10/8; // r1 = 1 double r2 = 10.0/8.0; // r2 = 1.25 double r3 = 10.0/8; // r3 = 1.25 double r4 = 10/8.0; // r4 = 1.25
คำสั่ง using การใช้คำสั่ง using <ชื่อเนมสเปส> ที่ต้นโปรแกรมเป็นการระบุว่าเราต้องการเรียกใช้งานคลาสในเนมสเปสนั้น ๆ ตัวอย่าง: คลาส Console อยู่ในเนมสเปส System class Hello { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); } using System; class Hello { static void Main () { Console.WriteLine("Hello World!"); Console.ReadLine(); }
คำสั่งสำหรับแสดงผลทางหน้าจอ ใช้คำสั่ง Write หรือ WriteLine ซึ่งอยู่ในคลาส Console (ซึ่งอยู่ในเนมสเปส System อีกทีหนึ่ง) การใช้งานพื้นฐาน: การใช้งานชั้นสูง: Console.WriteLine("Hello"); Console.WriteLine(area); Console.WriteLine(”Size {0}x{1}”, width, height); double salary=12000; Console.WriteLine("My salary is {0:f2}.", salary);