02 basic
DESCRIPTION
TRANSCRIPT
พื้��นฐานการเขี�ยนโปรแกรมด้�วย C#
เน��อหา โครงสร�างโปรแกรมโครงสร�างโปรแกรม ชนิ�ดข้�อม�ลชนิ�ดข้�อม�ล ตั�วแปรตั�วแปร นิ�พจนิ�นิ�พจนิ� ค�าส��งแสดงผลค�าส��งแสดงผล
โปรแกรมภาษา C# พ�จารณาโปรแกรมตั�อไปนิ !พ�จารณาโปรแกรมตั�อไปนิ !
namespace HelloW { class HelloWClass { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); } }}
namespace HelloW { class HelloWClass { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); } }}
โปรแกรมภาษา C# ตั�วอ�กษรเล$กตั�วอ�กษรเล$ก//ใหญ่�ม ความส�าค�ญ่ใหญ่�ม ความส�าค�ญ่ ค�าส��งทุ)กค�าส��งตั�องป*ดทุ�ายด�วยค�าส��งทุ)กค�าส��งตั�องป*ดทุ�ายด�วย
เซม�โคลอนิ เซม�โคลอนิ (;)(;) จ�านิวนิช�องว�าง จ�านิวนิช�องว�าง ((ทุ�!งแนิวตั�!งแนิวนิอนิทุ�!งแนิวตั�!งแนิวนิอนิ ) )
ไม�ม ผลตั�อการทุ�างานิไม�ม ผลตั�อการทุ�างานิ ใช�เคร.�องหมายป/กกา ใช�เคร.�องหมายป/กกา {} {} จ�บกล)�มค�าส��งจ�บกล)�มค�าส��ง ข้�อความทุ �อย��ระหว�าง ข้�อความทุ �อย��ระหว�าง /* */ /* */ หร.อหล�ง หร.อหล�ง // //
ถื.อเป3นิคอมเม�นิตั� ซ4�งไม�ม ผลตั�อการถื.อเป3นิคอมเม�นิตั� ซ4�งไม�ม ผลตั�อการทุ�างานิข้องโปรแกรมทุ�างานิข้องโปรแกรม
โครงสร�างขีองโปรแกรม จ)ดเร��มตั�นิข้องโปรแกรมจะอย��ทุ �จ)ดเร��มตั�นิข้องโปรแกรมจะอย��ทุ �::
เร ยกว�าเมทุ$อด เร ยกว�าเมทุ$อด MainMain เมทุ$อดตั�องอย��ภายใตั�คลาส เมทุ$อดตั�องอย��ภายใตั�คลาส (class)(class) คลาสอาจอย��ภายใตั�เนิมสเปส คลาสอาจอย��ภายใตั�เนิมสเปส
(namespace) (namespace) หร.อไม�ก$ได�หร.อไม�ก$ได�
static void Main () { ... starting point ... }
static void Main () { ... starting point ... }
โครงสร�างขีองโปรแกรม คลาสเปร ยบเสม.อนิกล�องบรรจ)เมทุ$อดหลาย คลาสเปร ยบเสม.อนิกล�องบรรจ)เมทุ$อดหลาย
ๆ เมทุ$อดๆ เมทุ$อด เนิมสเปสเปร ยบเสม.อนิกล�องบรรจ)คลาสเนิมสเปสเปร ยบเสม.อนิกล�องบรรจ)คลาส
หลาย ๆ คลาสหลาย ๆ คลาส เนิมสเปสอาจอย��ภายใตั�เนิมสเปสอ.�นิได�อ กเนิมสเปสอาจอย��ภายใตั�เนิมสเปสอ.�นิได�อ ก
โปรแกรมหนิ4�ง ๆ อาจประกอบด�วยหลายโปรแกรมหนิ4�ง ๆ อาจประกอบด�วยหลายเนิมสเปส หร.ออาจไม�อย��ในิเนิมสเปสใด ๆ เนิมสเปส หร.ออาจไม�อย��ในิเนิมสเปสใด ๆ เลยก$ได�เลยก$ได�method1method1
method2method2
NamespaceNamespace
ClassClass
โครงสร�างขีองโปรแกรม
ส�าหร�บโปรแกรมอย�างง�ายส�าหร�บโปรแกรมอย�างง�าย โปรแกรมประกอบด�วยคลาสเพ ยงคลาสโปรแกรมประกอบด�วยคลาสเพ ยงคลาส
เด ยวเด ยว โปรแกรมอาจประกอบด�วยเมทุ$อด โปรแกรมอาจประกอบด�วยเมทุ$อด Main Main
เพ ยงเมทุ$อดเด ยวเพ ยงเมทุ$อดเด ยว
namespace HelloW { class HelloWClass { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); } }}
namespace HelloW { class HelloWClass { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); } }}
ค�าส��ง (Statement) ค�าส��งใช�อธิ�บายการทุ�างานิข้องค�าส��งใช�อธิ�บายการทุ�างานิข้อง
โปรแกรมในิแตั�ละข้�!นิตัอนิโปรแกรมในิแตั�ละข้�!นิตัอนิ
เมทุ$อดถื�กสร�างข้4!นิจากค�าส��งตั�!งแตั�หนิ4�งเมทุ$อดถื�กสร�างข้4!นิจากค�าส��งตั�!งแตั�หนิ4�งถื4งหลายค�าส��งถื4งหลายค�าส��ง
class Hello { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); }}
class Hello { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); }}
Statement#1Statement#1
Statement#2Statement#2
ค�าส��ง (Statement)
method1method1
method2method2NamespaceNamespaceClassClass
Statement#1Statement#1Statement#2Statement#2
::
namespace HelloW { class HelloWClass { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); } }}
namespace HelloW { class HelloWClass { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); } }}
การตั้��งชื่��อ ทุ�!งเมทุ$อด คลาส เนิมสเปส ตั�องม การตั�!งช.�อก�าก�บทุ�!งเมทุ$อด คลาส เนิมสเปส ตั�องม การตั�!งช.�อก�าก�บ ในิภาษา ในิภาษา C# C# ม กฎการตั�!งช.�อด�งนิ !ม กฎการตั�!งช.�อด�งนิ !
ข้4!นิตั�นิด�วยอ�กข้ระภาษาอ�งกฤษ ข้4!นิตั�นิด�วยอ�กข้ระภาษาอ�งกฤษ ((A-Z, a-zA-Z, a-z)) หร.อตั�วหร.อตั�วข้ ดเส�นิใตั� ข้ ดเส�นิใตั� (_)(_)
ส�วนิทุ �เหล.อประกอบด�วยอ�กข้ระภาษาอ�งกฤษ ตั�วเลข้ ส�วนิทุ �เหล.อประกอบด�วยอ�กข้ระภาษาอ�งกฤษ ตั�วเลข้ หร.อตั�วข้ ดเส�นิใตั�หร.อตั�วข้ ดเส�นิใตั�
ความยาวส�งส)ด ความยาวส�งส)ด 63 63 ตั�วอ�กษรตั�วอ�กษร ตั�องไม�ซ�!าก�บค�าสงวนิ ตั�องไม�ซ�!าก�บค�าสงวนิ (reserved words) (reserved words) เช�นิ เช�นิ
class, namespaceclass, namespace ตั�วอย�างช.�อทุ �ถื�กกฎตั�วอย�างช.�อทุ �ถื�กกฎ
hEllOhEllO, , E3_32abE3_32ab, , X_x_X022X_x_X022 ตั�วอย�างช.�อทุ �ผ�ดกฎตั�วอย�างช.�อทุ �ผ�ดกฎ
32ABC32ABC, , A.2A.2, , C#ProgramC#Program, , whilewhile
ค�าสงวน ค�าเหล�านิ !ห�ามนิ�าไปใช�เป3นิช.�อในิภาษา ค�าเหล�านิ !ห�ามนิ�าไปใช�เป3นิช.�อในิภาษา
C#C#
ตั้�วแปร (Variable) ตั�วแปรใช�ส�าหร�บเก$บค�าข้องข้�อม�ลตั�วแปรใช�ส�าหร�บเก$บค�าข้องข้�อม�ล การประกาศตั�วแปรการประกาศตั�วแปร
การก�าหนิดค�าให�ตั�วแปรการก�าหนิดค�าให�ตั�วแปร
ตั�วอย�างตั�วอย�าง
<<typetype> <> <namename>;>;<<typetype> <> <namename>;>;
<name> = <expression>;<name> = <expression>;<name> = <expression>;<name> = <expression>;
int width, height;int area;width = 10; height = 20;area = width * height;
int width, height;int area;width = 10; height = 20;area = width * height;
ชื่น!ด้ขี�อม"ล (Data Type)ชื่น!ด้ชื่น!ด้ ขีนาด้ขีนาด้ ความหมายความหมาย ชื่$วงชื่$วง
boolbool 1 byte1 byte ค�าความจร�ง ค�าความจร�ง ((จร�งจร�ง--เทุ$จเทุ$จ)) true true / / false false
charchar 2 byte2 byte อ�กข้ระโดดอ�กข้ระโดด character code 0...65535character code 0...65535
sbytesbyte 1 byte1 byte จ�านิวนิเตั$มจ�านิวนิเตั$ม -128...127-128...127
bytebyte 1 byte1 byte จ�านิวนิเตั$มไม�ตั�ดลบจ�านิวนิเตั$มไม�ตั�ดลบ 0...2550...255
shortshort 2 bytes2 bytes จ�านิวนิเตั$มจ�านิวนิเตั$ม -32,768...32,767-32,768...32,767
ushortushort 2 bytes2 bytes จ�านิวนิเตั$มไม�ตั�ดลบจ�านิวนิเตั$มไม�ตั�ดลบ 0...655350...65535
intint 4 bytes4 bytes จ�านิวนิเตั$มจ�านิวนิเตั$ม -2.1-2.1 x 10x 1099...2.1 x 10...2.1 x 1099 uintuint 4 bytes4 bytes จ�านิวนิเตั$มไม�ตั�ดลบจ�านิวนิเตั$มไม�ตั�ดลบ 0...4.3 x 100...4.3 x 1099
longlong 8 bytes8 bytes จ�านิวนิเตั$มจ�านิวนิเตั$ม -9.2 x 10-9.2 x 101818...9.2 x 10...9.2 x 101818
ulongulong 8 bytes8 bytes จ�านิวนิเตั$มไม�ตั�ดลบจ�านิวนิเตั$มไม�ตั�ดลบ 0...1.8 x 100...1.8 x 101919
floatfloat 4 bytes4 bytes จ�านิวนิจร�งจ�านิวนิจร�ง ±±1.5x101.5x10-45-45......±±3.4x103.4x103838
doubledouble 8 bytes8 bytes จ�านิวนิจร�งความละเอ ยดสองเทุ�าจ�านิวนิจร�งความละเอ ยดสองเทุ�า ±±5.0x105.0x10-324-324......±±1.7x101.7x10308308
decimaldecimal 16 bytes16 bytes จ�านิวนิจร�งความละเอ ยดส�งจ�านิวนิจร�งความละเอ ยดส�ง ±±1.0x101.0x10--28--28......±±7.9x107.9x102828
stringstring N/AN/A สายอ�กข้ระสายอ�กข้ระ N/AN/A
การก�าหนด้ค$าให�ตั้�วแปร เราสามารถืก�าหนิดค�าเร��มตั�นิให�ก�บเราสามารถืก�าหนิดค�าเร��มตั�นิให�ก�บ
ตั�วแปรได�พร�อมก�บการประกาศตั�วแปรตั�วแปรได�พร�อมก�บการประกาศตั�วแปรนิ�!นิ ๆ ได�ทุ�นิทุ นิ�!นิ ๆ ได�ทุ�นิทุ
ตั�วอย�างตั�วอย�างint width = 10, height = 20;int area;
area = width * height;
int width = 10, height = 20;int area;
area = width * height;
น!พื้จน' (Expressions) น!พื้จน'น!พื้จน'เป3นิส�วนิหนิ4�งข้องค�าส��งทุ �ถื�กเป3นิส�วนิหนิ4�งข้องค�าส��งทุ �ถื�ก
ประเม�นิเป3นิค�าได�ประเม�นิเป3นิค�าได� อาจเป3นิค�าโดดหร.อประกอบข้4!นิมาจากอาจเป3นิค�าโดดหร.อประกอบข้4!นิมาจาก
นิ�พจนิ�ทุ �เล$กกว�านิ�พจนิ�ทุ �เล$กกว�า ตั�วอย�างข้องนิ�พจนิ�ทุ �เป3นิค�าโดดตั�วอย�างข้องนิ�พจนิ�ทุ �เป3นิค�าโดด
ตั�วเลข้ตั�วเลข้ 32123212, , 3.14153.1415 อ�กข้ระอ�กข้ระ 'C''C' ค�าความจร�งค�าความจร�ง truetrue or or falsefalse ข้�อความข้�อความ "Hello, World""Hello, World" ตั�วแปรหร.อค�าคงทุ �ตั�วแปรหร.อค�าคงทุ � xx, , myNamemyName
น!พื้จน'ทางคณิ!ตั้ศาสตั้ร' นิ�พจนิ�ทุางคณ�ตัศาสตัร�นิ�พจนิ�ทุางคณ�ตัศาสตัร� (arithmetic (arithmetic
expression) expression) ค.อนิ�พจนิ�ทุ �ถื�กตั ความเป3นิค�าค.อนิ�พจนิ�ทุ �ถื�กตั ความเป3นิค�าจ�านิวนิจ�านิวนิ
นิ�พจนิ�ทุางคณ�ตัศาสตัร�สามารถืนิ�ามาประกอบเป3นินิ�พจนิ�ทุางคณ�ตัศาสตัร�สามารถืนิ�ามาประกอบเป3นินิ�พจนิ�ทุ �ซ�บซ�อนิข้4!นิได�โดยอาศ�ยนิ�พจนิ�ทุ �ซ�บซ�อนิข้4!นิได�โดยอาศ�ยตั�วด�าเนิ�นิการทุางตั�วด�าเนิ�นิการทุางคณ�ตัศาสตัร�คณ�ตัศาสตัร� (arithmetic operators)(arithmetic operators) ++, , --, , **, , // %% ( (ให�ค�าเศษจากการหารให�ค�าเศษจากการหาร))
ตั�วอย�างตั�วอย�าง 11+511+5 1616 11/211/2 55 11.0/211.0/2 5.55.5 11%211%2 11 5.0%2.25.0%2.2 0.60.6
ล�าด้�บการค�านวณิ (Precedence Rules)1.1. ( )( )2.2. *, / , % *, / , % 3.3. +, –+, –4 .4 .ซ�ายไปข้วาซ�ายไปข้วา
int Width,Height;int Width,Height;Width = 10*5+(16 * 12)/5;Width = 10*5+(16 * 12)/5;Height = (16+5)+20%2;Height = (16+5)+20%2;
การหารแบบจ�านวนเตั้,ม การหารนิ�พจนิ�ทุ �เป3นิจ�านิวนิเตั$มสองจ�านิวนิการหารนิ�พจนิ�ทุ �เป3นิจ�านิวนิเตั$มสองจ�านิวนิ
ให�ผลล�พธิ�เป3นิจ�านิวนิเตั$มเสมอให�ผลล�พธิ�เป3นิจ�านิวนิเตั$มเสมอ เศษจะถื�กป<ดทุ�!งเศษจะถื�กป<ดทุ�!ง
หากตั�วตั�!งและหากตั�วตั�!งและ//หร.อตั�วหารเป3นิจ�านิวนิหร.อตั�วหารเป3นิจ�านิวนิทุศนิ�ยม ทุศนิ�ยม (float (float หร.อ หร.อ double) double) การหารจะการหารจะค�านิวณทุศนิ�ยมให�ค�านิวณทุศนิ�ยมให�int i1 = 10, i2 = 8;double f1 = 10, f2 = 8;double r1 = i1/i2; // r1 = 1double r2 = f1/f2; // r2 = 1.25double r3 = f1/i2; // r3 = 1.25double r4 = i1/f2; // r4 = 1.25
int i1 = 10, i2 = 8;double f1 = 10, f2 = 8;double r1 = i1/i2; // r1 = 1double r2 = f1/f2; // r2 = 1.25double r3 = f1/i2; // r3 = 1.25double r4 = i1/f2; // r4 = 1.25
double r1 = 10/8; // r1 = 1double r2 = 10.0/8.0; // r2 = 1.25double r3 = 10.0/8; // r3 = 1.25double r4 = 10/8.0; // r4 = 1.25
double r1 = 10/8; // r1 = 1double r2 = 10.0/8.0; // r2 = 1.25double r3 = 10.0/8; // r3 = 1.25double r4 = 10/8.0; // r4 = 1.25
ค�าส��ง using การใช�ค�าส��ง การใช�ค�าส��ง usingusing < <ช.�อเนิมสเปสช.�อเนิมสเปส>> ทุ �ตั�นิทุ �ตั�นิ
โปรแกรมเป3นิการระบ)ว�าเราตั�องการเร ยกใช�โปรแกรมเป3นิการระบ)ว�าเราตั�องการเร ยกใช�งานิคลาสในิเนิมสเปสนิ�!นิ ๆงานิคลาสในิเนิมสเปสนิ�!นิ ๆ
ตั�วอย�างตั�วอย�าง: : คลาสคลาส Console Console อย��ในิเนิมสเปส อย��ในิเนิมสเปส SystemSystem
using System;
class Hello { static void Main () { Console.WriteLine("Hello World!"); Console.ReadLine(); }}
using System;
class Hello { static void Main () { Console.WriteLine("Hello World!"); Console.ReadLine(); }}
class Hello { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); }}
class Hello { static void Main () { System.Console.WriteLine("Hello World!"); System.Console.ReadLine(); }}
ค�าส��งส�าหร�บแสด้งผลทางหน�าจอ ใช�ค�าส��งใช�ค�าส��ง WriteWrite หร.อหร.อ WriteLineWriteLine ซ4�งอย��ในิคลาสซ4�งอย��ในิคลาส
ConsoleConsole ( (ซ4�งอย��ในิเนิมสเปสซ4�งอย��ในิเนิมสเปส SystemSystem อ กทุ หนิ4�งอ กทุ หนิ4�ง)) การใช�งานิพ.!นิฐานิการใช�งานิพ.!นิฐานิ::
การใช�งานิช�!นิส�งการใช�งานิช�!นิส�ง::Console.WriteLine(”Size {0}x{1}”, width, height);Console.WriteLine(”Size {0}x{1}”, width, height);
double salary=12000;Console.WriteLine("My salary is {0:f2}.", salary);
double salary=12000;Console.WriteLine("My salary is {0:f2}.", salary);
Console.WriteLine("Hello");Console.WriteLine(area);
Console.WriteLine("Hello");Console.WriteLine(area);