แนะนำ_c - ครูอนุรักษ์ จันทวะฤทธิ์
Download
Report
Transcript แนะนำ_c - ครูอนุรักษ์ จันทวะฤทธิ์
แนะนำภำษำ C#
ครูอนุรกั ษ์ จันทวะฤทธิ์
โรงเรียนบ้านหมีว่ ทิ ยา
ภำษำ C#
รองรับการโปรแกรมเชิงวัตถุ (Object-Oriented
Programming – OOP)
พัฒนาโดยบริษัทไมโครซอฟต์ เพื่อเป็ นส่วนหนึ่งของ
สถาปัตยกรรม .NET
มีโครงสร้ างคล้ ายคลึงกับภาษา Java และ C++
ทางานร่วมกับภาษาอื่นในสถาปัตยกรรม .NET ได้ ง่าย
สถำปั ตยกรรม .NET
กำรพัฒนำโปรแกรมด้วย C#
วิเครำะห์ปัญหำและควำมต้องกำร
แบ่งปั ญหำเป็ นส่วน ๆ
ออกแบบขั้นตอนวิธีของแต่ละส่วน
นำขั้นตอนวิธีมำเขียนเป็ นโปรแกรม .cs
คอมไพล์โปรแกรมจำก .cs ให้เป็ น .exe
ตรวจสอบกำรทำงำน
กำรสร้ำงและคอมไพล์โปรแกรม
มีหลายทางเลือก
เขียนโปรแกรมด้ วย Text Editor และคอมไพล์ด้วยโปรแกรม
csc.exe ใน C:\WINDOWS\Microsoft.NET\Framework\v3.5
ใช้ โปรแกรมประเภท Integrated Development Environment
(IDE) ที่รวม Text Editor และจัดการเรื่องการคอมไพล์ให้
เช่น Microsoft Visual C#
กำรติดตั้ง MS Visual C#
กำรติดตั้ง MS Visual C#
กำรติดตั้ง MS Visual C#
ประเภทของแอพลิเคชัน
คอนโซลแอพลิเคชัน
แสดงผลในรูปตัวอักษร
รับข้ อมูลผ่านแป้ นพิมพ์เพียงอย่างเดียว
วินโดวส์แอพลิเคชัน
ใช้ ได้ ท้งั แป้ นพิมพ์และเมาส์
แสดงผลในรูปกราฟิ คส์
กำรขอควำมช่วยเหลือ
โปรแกรม MS Visual C# มีระบบเชื่อมต่อกับ
Microsoft Developer Network (MSDN)
เปิ ดได้ จากเมนู Help
พื้ นฐำนกำรเขียนโปรแกรมด้วย C#
เนื้ อหำ
โครงสร้ างโปรแกรม
ชนิดข้ อมูล
ตัวแปร
นิพจน์
คาสั่งแสดงผล
โปรแกรมภำษำ C#
พิจารณาโปรแกรมต่อไปนี้
namespace Hello {
class HelloClass {
static void Main () {
System.Console.WriteLine("Hello World!");
System.Console.ReadLine();
}
}
}
โปรแกรมภำษำ C#
ตัวอักษรเล็ก/ใหญ่มีความสาคัญ
คาสั่งทุกคาสั่งต้ องปิ ดท้ ายด้ วยเซมิโคลอน (;)
จานวนช่องว่าง (ทั้งแนวตั้งแนวนอน) ไม่มีผลต่อการ
ทางาน
ใช้ เครื่องหมายปี กกา {} จับกลุ่มคาสั่ง
ข้ อความที่อยู่ระหว่าง /* */ หรือหลัง // ถือเป็ นคอม
เม้ นต์ ซึ่งไม่มีผลต่อการทางานของโปรแกรม
โครงสร้ำงของโปรแกรม
จุดเริ่มต้ นของโปรแกรมจะอยู่ท่:ี
static void Main ()
{
... starting point ...
}
เรียกว่าเมท็อด Main
เมท็อดต้ องอยู่ภายใต้ คลาส (class)
คลาสอาจอยู่ภายใต้ เนมสเปส (namespace) หรือไม่กไ็ ด้
โครงสร้ำงของโปรแกรม
คลาสเปรียบเสมือนกล่องบรรจุเมท็อดหลาย ๆ เมท็อด
เนมสเปสเปรียบเสมือนกล่องบรรจุคลาสหลาย ๆ คลาส
เนมสเปสอาจอยู่ภายใต้ เนมสเปสอื่นได้ อกี
โปรแกรมหนึ่ง ๆ อาจประกอบด้ วยหลายเนมสเปส หรืออาจไม่
อยู่ในเนมสเปสใด ๆ เลยก็ได้
method1
method2
Class
Namespace
โครงสร้ำงของโปรแกรม
namespace HelloW {
class HelloWClass {
static void Main () {
System.Console.WriteLine("Hello World!");
System.Console.ReadLine();
}
}
}
สาหรับโปรแกรมอย่างง่าย
โปรแกรมประกอบด้ วยคลาสเพียงคลาสเดียว
โปรแกรมอาจประกอบด้ วยเมท็อด Main เพียงเมท็อด
เดียว
คำสัง่ (Statement)
คาสั่งใช้ อธิบายการทางานของโปรแกรมในแต่ละขั้นตอน
Statement#1
Statement#2
class Hello {
static void Main () {
System.Console.WriteLine("Hello World!");
System.Console.ReadLine();
}
}
เมท็อดถูกสร้ างขึ้นจากคาสั่งตั้งแต่หนึ่งถึงหลายคาสั่ง
คำสัง่ (Statement)
namespace HelloW {
class HelloWClass {
static void Main () {
System.Console.WriteLine("Hello World!");
System.Console.ReadLine();
}
}
}
method1
method2
Statement#1
Statement#2
:
Class
Namespace
กำรตั้งชื่อในภำษำ C#
ทั้งเมท็อด คลาส เนมสเปส ต้ องมีการตั้งชื่อกากับ
ในภาษา C# มีกฎการตั้งชื่อดังนี้
ตัวอย่างชื่อที่ถูกกฎ
ขึ้นต้ นด้ วยอักขระภาษาอังกฤษ (A-Z, a-z) หรือตัวขีดเส้ นใต้ (_)
ส่วนที่เหลือประกอบด้ วยอักขระภาษาอังกฤษ ตัวเลข หรือตัวขีดเส้ นใต้
ความยาวสูงสุด 63 ตัวอักษร
ต้ องไม่ซา้ กับคาสงวน (reserved words) เช่น class, namespace
hEllO, E3_32ab, X_x_X022
ตัวอย่างชื่อที่ผดิ กฎ
32ABC, A.2, C#Program, while
คำสงวน
คาเหล่านี้ห้ามนาไปใช้ เป็ นชื่อในภาษา C#
ชนิดข้อมูล (Data Type)
ชนิด
bool
char
sbyte
byte
short
ushort
int
uint
long
ulong
float
double
ขนำด
1 byte
2 byte
1 byte
1 byte
2 bytes
2 bytes
4 bytes
4 bytes
8 bytes
8 bytes
4 bytes
8 bytes
decima 16 bytes
l
ควำมหมำย
ค่าความจริง (จริง-เท็จ)
อักขระโดด
จานวนเต็ม
จานวนเต็มไม่ติดลบ
จานวนเต็ม
จานวนเต็มไม่ติดลบ
จานวนเต็ม
จานวนเต็มไม่ติดลบ
จานวนเต็ม
จานวนเต็มไม่ติดลบ
จานวนจริง
จานวนจริงความละเอียดสองเท่า
จานวนจริงความละเอียดสูง
ช่วง
true / false
character code 0...65535
-128...127
0...255
-32,768...32,767
0...65535
-2.1 x 109...2.1 x 109
0...4.3 x 109
-9.2 x 1018...9.2 x 1018
0...1.8 x 1019
±1.5x10-45...±3.4x1038
±5.0x10-324...±1.7x10308
±1.0x10--28...±7.9x1028
ตัวแปร (Variable)
ตัวแปรใช้ สาหรับเก็บค่าของข้ อมูล
การประกาศตัวแปร
<type> <name>;
การกาหนดค่าให้ ตัวแปร
<name> = <expression>;
ตัวอย่าง
int width, height;
int area;
width = 10; height = 20;
area = width * height;
กำรกำหนดค่ำให้ตวั แปร
เราสามารถกาหนดค่าเริ่มต้ นให้ กบั ตัวแปรได้ พร้ อมกับ
การประกาศตัวแปรนั้น ๆ ได้ ทนั ที
ตัวอย่าง
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
11/2
11.0/2
11%2
5.0%2.2
16
5
5.5
1
0.6
ลำดับกำรคำนวณ (Precedence Rules)
1.
2.
3.
4.
()
*, / , %
+, –
ซ้ ายไปขวา
int Width,Height;
Width = 10*5+(16 * 12)/5;
Height = (16+5)+20%2;
กำรหำรแบบจำนวนเต็ม
การหารนิพจน์ท่เี ป็ นจานวนเต็มสองจานวนให้ ผลลัพธ์เป็ น
จานวนเต็มเสมอ
เศษจะถูกปัดทิ้ง
หากตัวตั้งและ/หรือตัวหารเป็ นจานวนทศนิยม (float หรือ
double) การหารจะคานวณทศนิยมให้
int
double
double
double
double
double
i1
f1
r1
r2
r3
r4
=
=
=
=
=
=
10, i2 = 8;
10, f2 = 8;
i1/i2; // r1 = 1
f1/f2; // r2 = 1.25
f1/i2; // r3 = 1.25
i1/f2; // r4 = 1.25
double
double
double
double
r1
r2
r3
r4
=
=
=
=
10/8;
10.0/8.0;
10.0/8;
10/8.0;
//
//
//
//
r1
r2
r3
r4
=
=
=
=
1
1.25
1.25
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);
คำสั่ งรับค่ ำและฟังก์ชันทำงคณิตศำสตร์
เนื้ อหำ
คาสั่งรับอินพุทจากผู้ใช้
ตัวดาเนินการทางคณิตศาสตร์
การเปลี่ยนชนิดข้ อมูล
การเรียกใช้ งานเมท็อด
เมท็อดในคลาส Math
คำสังรั
่ บอินพุท
ใช้ เมท็อด ReadLine ซึ่งอยู่ในคลาส Console
รับข้ อมูลจากแป้ นพิมพ์จนกว่าผู้ใช้ จะกด Enter
ส่งค่าทั้งหมดให้ โปรแกรมในรูปสตริง
ตัวอย่าง:
string yourname;
yourname = System.Console.ReadLine();
ตัวอย่ำงโปรแกรม: ReadLine
โปรแกรมด้ านล่างจะให้ ผ้ ูใช้ ป้อนชื่อและกล่าวคาทักทาย
using System;
class HelloYou
{
static void Main()
{
string name;
Console.Write("What is your name: ");
name = Console.ReadLine();
Console.WriteLine("Hello, {0}", name);
}
}
กำรเปลีย่ นสตริงให้เป็ นตัวเลข
เป็ นที่ทราบว่าเมท็อด Console.ReadLine คืนค่าเป็ น
สตริง
ตัวเลขที่อยู่ในรูปสตริงไม่สามารถนาไปใช้ ในการคานวณได้
โดยตรง
string s = "12";
int x = s+1; // Error!
ชนิดข้ อมูลตัวเลขทุกชนิดมีเมท็อด Parse ซึ่งทาหน้ าที่
เปลี่ยนข้ อมูลสตริงให้ เป็ นชนิดตัวเลขตามแบบข้ อมูลนั้น ๆ
string s = Console.ReadLine();
int x = int.Parse(s);
double y = double.Parse(s);
ตัวอย่ำง: คำนวณพื้ นทีส่ เี่ หลีย่ ม
using System;
class AreaCalculation
{
static void Main()
{
int width, height, area;
string input;
Console.Write("Enter width: ");
Obtaining "width"
input = Console.ReadLine();
width = int.Parse(input);
Console.Write("Enter height: ");
Obtaining "height"
input = Console.ReadLine();
height = int.Parse(input);
area = width * height;
Console.WriteLine("Area = {0}x{1} = {2}", width, height, area);
}
}
width
height area = width x height
แบบฝึ กหัด: แก้สมกำร
เขียนโปรแกรมเพื่ออ่านค่า x+y และ xy, จากนั้นให้
ตอบว่าค่าของ x และ y คือเท่าใด
เริ่มต้ นจากการคิดขั้นตอนวิธี และเขียน pseudo-code
นา pseudo-code มาเขียนเป็ นโปรแกรม
กำรเปลีย่ นชนิดข้อมูลตัวเลข
ละเอียดมำก
double
long
int
short
sbyte
ulong
uint
ushort
byte
การกาหนดค่าให้ ตัวแปรที่เก็บข้ อมูลได้ ละเอียดมากกว่า
ทาได้ ทนั ที
int i = 50;
float
ละเอียดน้ อย
เนื่องจากข้ อมูลไม่มีการสูญหาย
double d = i;
char
// OK
C# บังคับให้ ระบุชนิดข้ อมูลให้ ชัดเจนสาหรับการกาหนดค่าให้ ตัวแปร
ที่ละเอียดน้ อยกว่า
ระบุชัดเจนว่าต้ องการเปลี่ยนค่า
double d = 5000.78;
long x = d;
// ERROR!!!
long x = (long) d; // OK
double เป็ น long
ตัวดำเนินกำรแบบ "modify-and-assign"
เราสามารถผสมตัวดาเนินการทางคณิตศาสตร์บางตัวเข้ ากับ
"=" เพื่อใช้ เป็ นตัวดาเนินการแบบ modify-and-assign
รูปแบบคำสัง่
var += expression
var -= expression
var *= expression
var /= expression
ควำมหมำย
เพิ่มค่าใน var เป็ นจานวนเท่ากับ expression
ลดค่าใน var เป็ นจานวนเท่ากับ expression
คูณค่า var ด้ วย expression เก็บผลลัพธ์ใน var
หารค่า var ด้ วย expression เก็บผลลัพธ์ใน var
ตัวอย่าง
sum += x;
//
prod *= 2.5; //
y -= 3+a;
//
ให้ผลเหมือนกับ
ให้ผลเหมือนกับ
ให้ผลเหมือนกับ
sum = sum + x
prod = prod * 2.5
y = y – (3+a)
ตัวดำเนินกำรสำหรับเพิม่ /ลดค่ำ
ตัวดาเนินการ ++ และ – ใช้ สาหรับเพิ่มและลดค่าให้ ตัวแปร
ทีละ 1
คำสัง่
x++
x--
ผลลัพธ์
เพิ่มค่า x ขึ้น 1
ลดค่า x ลง 1
ตัวอย่าง:
int n = 0;
n++;
//
n++;
//
n--;
//
ให้ผลเหมือนกับ n
n มีค่ำเท่ำกับ 2
n มีค่ำเท่ำกับ 1
= n+1, or n += 1
กำรเรียกใช้งำนเมท็อด
คลาสหลายคลาสมีเมท็อดชนิดสแตติก (static) ที่สามารถ
เรียกใช้ ผ่านคลาสโดยตรงได้ ทนั ที
เรียกเมท็อด methodName ผ่านคลาส className ที่อยู่ใน
เนมสเปส namespaceName
namespaceName.className.methodName(optional-arguments)
หากเนมสเปส namespaceName ถูกระบุผ่านคาสั่ง using ไว้
ก่อนหน้ านี้ การเรียกเมท็อดไม่จาเป็ นต้ องระบุเนมสเปส
using namespaceName;
:
className.methodName(optional-arguments)
เมท็อดที่ค้ ุนเคยกันได้ แก่ System.Console.WriteLine() และ
System.Console.ReadLine()
คลำส Math
คลาส Math ในเนมสเปส System ได้ เตรียมเมท็อดและค่าคงที่ไว้ หลาย
ตัวสาหรับการคานวณทางคณิตศาสตร์ท่ซี ับซ้ อนขึ้น
ตัวอย่าง (บางส่วน):
เมท็อด/ค่ำคงที่
PI
Max(x,y)
Abs(x)
Sqrt(x)
Round(x)
Pow(x,y)
Log(x)
Ceiling(x)
Cos(x)
ค่ำที่คืนกลับมำ
ค่า
ค่าที่มากกว่าระหว่าง x และ y
ค่าสัมบูรณ์ของ x
รากที่สองของ x
ค่า x ที่ปัดเป็ นจานวนเต็ม
ค่า x ยกกาลัง y
ล็อกฐานธรรมชาติของ x
ค่า x ที่ปัดเศษขึ้น
โคซายน์ของ x เรเดียน
ตัวอย่ำงกำรใช้งำน
ผลลัพธ์
Math.PI
3.1415927
Math.Max(1,2)
2
Math.Abs(-1.3)
1.3
Math.Sqrt(4.0)
2.0
Math.Round(0.8)
1
Math.Pow(3,2)
9.0
Math.Log(10)
2.302585
Math.Ceiling(4.1)
5
Math.Cos(Math.PI)
-1