3.
This presentation is the property of its rightful owner.
Sponsored Links
1 / 29

3. ชนิดข้อมูล และการดำเนินการกับข้อมูล PowerPoint PPT Presentation


  • 70 Views
  • Uploaded on
  • Presentation posted in: General

3. ชนิดข้อมูล และการดำเนินการกับข้อมูล. การดำเนินกันของข้อมูล จะต้องทราบชนิดข้อมูลนั้นก่อน. เป้าหมายการเรียนรู้. ชนิดข้อมูล (Data Type) และ Common Type System (CTS) การประกาศตัวแปร อโนนิมัสไทป์ และการแปลงชนิดข้อมูล ขอบเขตการใช้ตัวแปร ค่าคงที่ และค่าอ่านได้อย่างเดียว

Download Presentation

3. ชนิดข้อมูล และการดำเนินการกับข้อมูล

An Image/Link below is provided (as is) to download presentation

Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


3

3. ชนิดข้อมูล และการดำเนินการกับข้อมูล

การดำเนินกันของข้อมูล จะต้องทราบชนิดข้อมูลนั้นก่อน

C# Programming with Visual C# 2010 Express


3

เป้าหมายการเรียนรู้

  • ชนิดข้อมูล (Data Type) และ Common Type System (CTS)

  • การประกาศตัวแปร อโนนิมัสไทป์ และการแปลงชนิดข้อมูล

  • ขอบเขตการใช้ตัวแปร

  • ค่าคงที่ และค่าอ่านได้อย่างเดียว

  • การดำเนินการของข้อมูลทางคณิตศาสตร์

  • การดำเนินการของข้อมูลทางตรรกศาสตร์

  • ลำดับการทำงานของตัวถูกดำเนินการ

  • การกำหนดชนิดข้อมูลใช้เอง

C# Programming with Visual C# 2010 Express


3

ชนิดข้อมูล

ในการเขียนโปรแกรมต้องมีการดำเนินการกับข้อมูลในรูปแบบของภาษาซีชาร์ป นักเขียนโปรแกรมต้องรู้จักชนิดข้อมูลเพื่อดำเนินกับตัวแปร ชนิดข้อมูลอาจเรียกทับศัพท์ว่า ไทป์ (Type) ไทป์มีหลายลักษณะ คือ

  • Dynamic Type

  • Static

  • Type Safety

  • Strong Type

C# Programming with Visual C# 2010 Express


3

ชนิดข้อมูลใน C#

C# Programming with Visual C# 2010 Express


Common type system cts

Common Type System (CTS)

Type

Reference Type

Built-in Type

Value Type

User- defined Type

C# Programming with Visual C# 2010 Express


3

Int32:55

สัญลักษณะที่ใช้

Char: A

“Hello”

Value Type

String:

Reference Type

Heap

Int16:21

Stack

การเก็บชนิดข้อมูลในหน่วยความจำ

C# Programming with Visual C# 2010 Express


3

ตาราง 3.2 คีย์เวิร์ด ที่เป็นชื่อพ้องกับชนิดข้อมูล

C# Programming with Visual C# 2010 Express


3

ตัวอย่าง การประกาศใช้ชนิดข้อมูลแบบต่างๆ

  • static void Main(string[] args) {

  • int _int = 0;

  • string _str = null;

  • bool _bool= true;

  • decimal _dec = 0.000001M;

  • double _dou = 0.00d;

  • char _chr = 'a';

  • Console.WriteLine("_int = {0}", _int);

  • Console.WriteLine("_str = {0}", _str);

  • Console.WriteLine("_bool = {0}", _bool);

  • Console.WriteLine("_dec = {0}", _dec);

  • Console.WriteLine("_dou = {0}", _dou);

  • Console.WriteLine("_chr = {0}", _chr);

  • Console.ReadLine();

  • }

C# Programming with Visual C# 2010 Express


3

การประกาศตัวแปร

กฏข้อห้ามสำหรับการประกาศตัวแปร คือ

  • ใช้ตัวเลขขึ้นต้นชื่อตัวแปรไม่ได้

  • ใช้คีย์เวิร์ดแทนชื่อตัวแปรไม่ได้

    คำแนะนำสำหรับการประกาศชื่อตัวแปร ซึ่งไม่ผิดกฏ

  • ควรใช้อักษรพิมพ์เล็ก เป็นอักษรเริ่มต้น และอักษรในคำความหมายใหม่ ใช้อักษรพิมพ์ใหญ่เช่น myInt

  • ไม่ควรใช้คีย์เวิร์ด ที่เลี่ยงไปใช้อักษรพิมพ์เล็กหรือใหญ่ เพื่อให้เกิดความแตกต่าง

  • สำหรับชื่อตัวแปรที่เป็นชื่อ เมทธอด หรือชื่อคลาส นิยมใช้อักษรพิมพ์ใหญ่ขึ้นต้น เช่น MyClass

  • ควรใช้ชื่อตัวแปรที่มีความหมายเพื่อความเข้าใจง่าย

  • ชื่อตัวแปรค่าคงที่ ควรเป็นอักษรพิมพ์ใหญ่

C# Programming with Visual C# 2010 Express


Anonymous type

Anonymous Type

Value Type

varmyInt = 2;

Class

var v = new { Amount=108, Message="Hello" };

Array

var anonArray = new[]

{ new { name = “A"}, new { name = “B" }};

LINQ

var productQuery = from prod in products

selectnew { prod.Color, prod.Price };

C# Programming with Visual C# 2010 Express


3

การแปลงชนิดชนิดไทป์

การแปลงชนิดข้อมูลมีสองลักษณะที่ทำได้

  • Casting ใช้แปลงชนิดข้อมูลในกลุ่มเดียวกัน

  • Boxing ใช้แปลชนิดข้อมูลข้ามกลุ่มกัน

    แปลงชนิดข้อมูลมีสองวิธีคือ

  • Implicit เป็นการแปลงทางอ้อม CLR จะทำให้อัตโนมัติ

  • Explicit เป็นการแปลงทางตรง ที่จะเขียนชนิดข้อมูลที่แปลง

int a = 4;

double b;

b = a //Implicit conversion of int to doubleb = (int) a; //Explicit conversion (casting) of int to double

C# Programming with Visual C# 2010 Express


3

ตาราง 3.4 การแปลงค่าแบบอิมพลิสิท

C# Programming with Visual C# 2010 Express


Tryparse

เมธอด TryParse( )

int number = 0;

string numberString = "1234";

if (int.TryParse(numberString, out number))

{

Console.WriteLine("Conversion succeeded");

Console.WriteLine(number);

}

else

{

Console.WriteLine("failed");

}

C# Programming with Visual C# 2010 Express


3

ขอบเขตของตัวแปร

  • Block เป็นระดับที่เล็กที่สุด เช่น บล็อกของ ของคำสั่ง if, while

  • Procedure เป็นระดับเมทธอด พล็อบเพอร์ตี้ ตัวแปรภายในโพรซีเตอร์จะใช้ได้เฉพาะโพรซีเดอร์นี้เท่านั้น

if (x > 10)

{

int x = x * x;

}

void WhatYourName( )

{

string name = Console.Read( );

Consoel.Writeln("Hello " + name);

}

C# Programming with Visual C# 2010 Express


3

ขอบเขตของตัวแปร (ต่อ)

  • Module เป็นการอ้างอิงในการใช้สมาชิกในโมดูล ที่มีทั้ง สมาชิกของโมดูล โพรซีเดอร์ บล็อก และคลาส มักใช้กับตัวแปรที่ประกาศเป็น private

public class Person

{

private string name;

public void SetName(string x)

{

name = x;

}

public string GetName( )

{

return name;

}

}

C# Programming with Visual C# 2010 Express


3

ขอบเขตของตัวแปร (ต่อ)

  • Namespace เป็นการอ้างอิงในระดับที่กว้างที่สุด ที่มีทั้งระดับ บล็อก โพรซีเดอร์ และโมดูล มักใช้คีย์เวิร์ด public ที่ทำให้คลาสอื่นๆ สามารถใช้งานตัวแปรในทุกส่วนภายในเนมสเปสเดียวกันได้

namespace ConsoleApplication1{

class Program {

static void Main(string[] args) {

Person p1; // สามารถใช้ Person ได้ เพราะ มีคีย์เวิร์ด public นำหน้า Person

}

}

public class Person {

private string name;

public void SetName(string x) {

name = x;

}

}

}

C# Programming with Visual C# 2010 Express


3

ค่าคงที่ และตัวแปรอ่านได้อย่างเดียว

  • ตัวแปรค่าคงที่ (Constant variable) จะต้องระบุค่าเริ่มต้นด้วย ณ ตอนประกาศค่าตัวแปร

  • ตัวแปรอ่านได้อย่างเดียว (Read-only variable)จะต้องระบุค่าเริ่มต้นด้วย ณ ตอนประกาศค่าตัวแปร หรือระบุตอนสร้างคอนสตรักเตอร์ (constructor) เมทธอดคอนสตรักเตอร์จะทำงานตอนสร้างวัตถุ

class Program

{ readonly int y; //read-only variable

Program()//constructor

{ y=1; }

static void Main(string[] args) {

Program p = new Program();

const int x=2; //constant variable

}

}

C# Programming with Visual C# 2010 Express


3

การดำเนินการของข้อมูล

  • การดำเนินการกับตัวแปร หรือที่เรียกว่า เอ็กเพรสชัน (Expression) ประกอบด้วย ตัวถูกดำเนินการ (Operands) ตัวดำเนินการ (Operator) ตัวอย่างเช่น a + b โดยที่ a, b เป็น Operands และ + เป็น Operator

C# Programming with Visual C# 2010 Express


3

การดำเนินการทางคณิตศาสตร์อย่างลัด

var += expression; // var = var + expression

var -= expression; // var = var - expression

var *= expression; // var = var * expression

var /= expression; // var = var / expression

var %= expression; // var = var % expression

item[(index + 1) % 32] = item[( idex + 1) % 32 ] + 1

=

item[(index + 1) % 32] += 1;

C# Programming with Visual C# 2010 Express


3

ตาราง 3.5 ตารางความจริง

  • สำหรับการดำเนินทางตรรกะ จะใช้ความพื้นฐานของตารางความจริง เช่น การใช้ตรรกะเปรียบเทียบการใช้คำพูดว่า (คนเป็นสัตว์เลือดเย็น) และ (คนเป็นสัตย์เลี้ยงลูกด้วยนม) มีเท่ากับ FalseAND True = False

C# Programming with Visual C# 2010 Express


3

ตัวอย่างการดำเนินการทางตรรกะ

ทดสอบการใช้ตรรกะ OR

bool a, b, c;

a = true;

b = true;

c = false;

Console.WriteLine(a | b | c);// Print True

ทดสอบการใช้ตรรกะ Short OR

bool a, b, c;

a = true;

b = true;

c = false;

Console.WriteLine(a || b || c);// Print True

C# Programming with Visual C# 2010 Express


3

~

0

0

0

0

0

0

0

0

0

0

1

0

1

1

0

1

1

0

1

0

0

1

0

1

0

0

0

0

0

0

0

0

0

0

0

1

1

1

0

1

1

0

1

0

0

1

0

0

0

0

0

0

0

0

0

1

1

1

1

1

0

0-

1

1

1

1

0

1

1

0

0

1

1

0

1

0

1

0

1

1

1

1

1

1

1

0

1

1

^

|

&

การดำเนินการกับบิท

  • การดำเนินการทางตรรกะ ยังประยุกต์ได้กับบิท ซึ่ง มีตัวดำเนินการ ^ แทน XOR, ~ แทน Complement, & แทน AND, และ| แทน OR

C# Programming with Visual C# 2010 Express


3

ตัวอย่างการดำเนินการทางตรรกะ

ทดสอบการ bitwise AND

int a, b;

a = 7; //00000111

b = 85;//01010101

Console.WriteLine(a & b);//print 5 //0000 0101

ทดสอบการ bitwise XOR

int a, b;

a = 7; //00000111

b = 85;//01010101

Console.WriteLine(a ^ b);//print 82 //0101 0010

C# Programming with Visual C# 2010 Express


3

ลำดับการทำงานของของตัวดำเนินการ

  • ลำดับการดำเนินการมีความสำคัญ เพราะหากเข้าใจผิด อาจทำให้เขียนโปรแกรมผิดพลาดโดยไม่รู้ตัวได้ หรือที่เรียกว่า logic error

  • ตัวอย่างเช่น 5 – 2 * 4 = 5 – 8 = -3

C# Programming with Visual C# 2010 Express


3

การสร้างชนิดข้อมูลใช้เอง

  • อีนัม (enum) เป็นชนิดข้อมูลที่เหมาะกับการใช้กับข้อมูลที่ได้กำหนดเป็นชุดๆ หรือประเภท การกำหนดของอีนัม ใช้คีย์เวิร์ด enum แล้วตามด้วยชื่อตัวแปร และค่าเริ่มต้น เช่น enum Color{Blue, Yellow, Red}

  • สตรัก (struct) เป็นชนิดข้อมูลที่เหมาะกับการเก็บโครงสร้าง อย่าง เป็นแถว การใช้งานสตรัก เริ่มต้นจากประกาศชนิดข้อมูลด้วยคีย์เวิร์ด stuct แล้วตัวแปรชื่อตัวแปร ภายในบล็อก จะประกาศโครงสร้างย่อยๆ สำหรับการเรียกใช้งาน ทำได้เพียงประกาศตัวแปร และเรียกใช้ด้วยเรียกชื่อตัวแปรและจุดตามด้วยชื่อข้อมูลในโครงสร้าง

C# Programming with Visual C# 2010 Express


3

ตัวอย่างการใช้อีนัม

  • private enum Color{Blue, Yellow, Red}

  • static void Main(string[] args){

  • Color Color1, Color2, Color3;

  • Color1 = Color.Blue;

  • Color2 = (Color)1;//Casting to Color enum

  • Color3 = (Color)2;

  • Console.WriteLine("myColor:{0}", Color1);

  • Console.WriteLine("myColor:{0}", Color2);

  • Console.WriteLine("myColor:{0}", Color3);

  • }

C# Programming with Visual C# 2010 Express


3

ตัวอย่างการใช้สตรักต์

  • public struct Customer {

  • public string name;

  • public string lastName;

  • public string tel;

  • }

  •  static void Main(string[] args) {

  • Customer Ae;

  • Ae.name = "Vilasinee";

  • Ae.lastName = "Choti";

  • Ae.tel = "01-234-5678";

  • Console.WriteLine("Name:{0} {1} tel: {2}",

  • Ae.name, Ae.lastName, Ae.tel);

  • }

C# Programming with Visual C# 2010 Express


3

ทำถามทบทวน

  • ภาษาซีชาร์ป มีระบบไทป์(Type System) เป็นแบบใด และมีความหมายไทป์นั้นเป็นอย่างไร

  • จะใช้ชนิดข้อมูลอะไรเก็บอักษรเพียงตัวเดียว

  • การประกาศตัวแปรในข้อใด ไม่สามารถทำได้ และข้อใดไม่ควรใช้

    • char 5Letter;

    • int _int;

    • float This;

    • string MYSTRING

    • double $double;

  • ภายในเนมสเปสเดียวกัน ประกอบด้วยสองคลาส จะทำอย่างไรที่จะประกาศตัวแปรให้อีกคลาสหนึ่งใช้ตัวแปรของอีกคลาสหนึ่งได้ จะต้องประกาศตัวแปรเป็นอย่างไร

C# Programming with Visual C# 2010 Express


3

ทำถามทบทวน (ต่อ)

  • ให้หาผลลัพธ์ของ การดำเนินการของข้อย่อยต่อไปนี้ และเมื่อกำหนดให้ a = 5

    ก. –a ข. a-- ค. 5 / 2 ง. 5.0 / 2

    จ. “99” + “1” ฉ. 5==3?1:2 ช. 3 * 5 + 2 * 2

  • จากการโค้ดต่อไปนี้ ส่วนใดเป็นแปลงข้อมูลแบบ อิมพลิสิท และเป็นการแปลงข้อมูลแบบ เอ็กพลิสิท และโปรแกรมนี้มีความผิดพลาด ให้อธิบายความผิดพลาดในการแปลงข้อมูลด้วย

    int a = 4; float b;

    b = (float)a + 1.2;

  • ในซีชาร์ปใช้เมทธอดอะไรเพื่อทดสอบความผิดพลาดในแปลงชนิดข้อมูลหนึ่งไปเป็นอีกชนิดข้อมูลหนึ่ง

  • อะไรคือความเหมือนและต่างที่สำคัญของตัวแปรประเภท read-only และ const

  • ในกรณีใดที่ควรใช้การกำหนดชนิดข้อมูลใช้เอง

C# Programming with Visual C# 2010 Express


  • Login