แนะนำ_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 และ xy, จากนั้นให้
ตอบว่าค่าของ 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