53
Ngôn ngữ C Ngôn ngữ C ThS. Nguyễn Hà Giang ThS. Nguyễn Hà Giang CNTT - HUTECH CNTT - HUTECH

Ngôn ngữ C

  • Upload
    ceana

  • View
    86

  • Download
    0

Embed Size (px)

DESCRIPTION

Ngôn ngữ C. ThS. Nguyễn Hà Giang CNTT - HUTECH. Nội dung. Cấu trúc chương trình C# Kiểu dữ liệu, từ khoá, định danh biến, hằng… Chuyển đổi kiểu Console I/O Tham số ref, out, param Lệnh lặp for, while, do while, foreach Lệnh phân nhánh switch, lệnh nhảy Mảng 1 chiều, đa chiều - PowerPoint PPT Presentation

Citation preview

Page 1: Ngôn ngữ C

Ngôn ngữ CNgôn ngữ C

ThS. Nguyễn Hà GiangThS. Nguyễn Hà GiangCNTT - HUTECHCNTT - HUTECH

Page 2: Ngôn ngữ C

2Nguyen Ha Giang - 2008

Nội dungNội dung

1.1. Cấu trúc chương trình C#Cấu trúc chương trình C#2.2. Kiểu dữ liệu, từ khoá, định danh Kiểu dữ liệu, từ khoá, định danh

biến, hằng…biến, hằng…3.3. Chuyển đổi kiểuChuyển đổi kiểu4.4. Console I/OConsole I/O5.5. Tham số ref, out, paramTham số ref, out, param6.6. Lệnh lặp for, while, do while, foreachLệnh lặp for, while, do while, foreach7.7. Lệnh phân nhánh switch, lệnh nhảyLệnh phân nhánh switch, lệnh nhảy8.8. Mảng 1 chiều, đa chiềuMảng 1 chiều, đa chiều9.9. Kiểu enumerationKiểu enumeration

Page 3: Ngôn ngữ C

3Nguyen Ha Giang - 2008

Cấu trúc chương trình C#Cấu trúc chương trình C#using <namespace sử dụng>

namespace Tên Namespace{

[Khóa truy xuất] class Tên lớp {

public static void Main(){

}

// khác …

}

// lớp khác …

Page 4: Ngôn ngữ C

4Nguyen Ha Giang - 2008

using: làm chương trình gọn hơn, ko using: làm chương trình gọn hơn, ko cần phải dùng tên của namspacecần phải dùng tên của namspace

using System.using System.

namespace của chương trình: ko bắt namespace của chương trình: ko bắt buộcbuộc

class: Tối thiểu có 1 lớp chứa hàm class: Tối thiểu có 1 lớp chứa hàm entry point Main của chương trìnhentry point Main của chương trình

public static void Main(): hàm entry public static void Main(): hàm entry point của chương trình C#point của chương trình C#

Cấu trúc chương trình C#Cấu trúc chương trình C#

Page 5: Ngôn ngữ C

5Nguyen Ha Giang - 2008

Cấu trúc chương trình C#Cấu trúc chương trình C#

Nếu ko có namespace Nếu ko có namespace namespace mặc định ko tên namespace mặc định ko tên

Namespace có thể chứa: struct, interface, delegate, Namespace có thể chứa: struct, interface, delegate, enumenum

Trường hợp đơn giản nhất: 1 lớp, 1 file cs và Trường hợp đơn giản nhất: 1 lớp, 1 file cs và namespace mặc địnhnamespace mặc định

Page 6: Ngôn ngữ C

6Nguyen Ha Giang - 2008

Kiểu dữ liệuKiểu dữ liệuBao gồmBao gồm

Lớp đối tượngLớp đối tượng objectobject

Ký tựKý tự charchar

ChuỗiChuỗi stringstring

Số nguyên có dấuSố nguyên có dấu sbytesbyte, , shortshort, , intint, , longlong

Số nguyên không dấuSố nguyên không dấu bytebyte, , ushortushort, , uintuint, , ulongulong

Số thựcSố thực floatfloat, , doubledouble, , decimaldecimal

LogicLogic boolbool – – {true{true, , false}false}

Là alias của các lớp có sẵn trong .NET FrameworkLà alias của các lớp có sẵn trong .NET Frameworkstringstring ↔↔ System.StringSystem.String

intint ↔↔ System.Int32System.Int32

Page 7: Ngôn ngữ C

7Nguyen Ha Giang - 2008

Kiểu dữ liệuKiểu dữ liệu

Sử dụng kiểu dữ liệuSử dụng kiểu dữ liệu

Định nghĩa trước (C#)Định nghĩa trước (C#)Built-in value type: int, long, string, Built-in value type: int, long, string, object…object…

Chương trình định nghĩaChương trình định nghĩaClass, struct, enum…Class, struct, enum…

Page 8: Ngôn ngữ C

8Nguyen Ha Giang - 2008

The built-in value typeThe built-in value typeNameName CTS TypeCTS Type SizeSize RangeRange

sbytesbyte System.SByte System.SByte 88 -128..127-128..127

shortshort System.Int16System.Int16 1616 (-32768 .. 32767)(-32768 .. 32767)

intint Sytem. Int32Sytem. Int32 3232 -2-23131..2..23131-1-1

longlong Sytem. Int64Sytem. Int64 6464 -2-26363..2..26363-1-1

bytebyte System.SByte System.SByte 88 0..2550..255

ushortushort System.UInt16System.UInt16 1616 (0 .. 65535)(0 .. 65535)

uintuint System.UInt32System.UInt32 3232 0..20..23232-1-1

ulongulong System.UInt64System.UInt64 6464 0..20..26464-1-1

floatfloat System.SingleSystem.Single 3232 xấp xỉ từ 3,4E - 38 đến 3,4E+38xấp xỉ từ 3,4E - 38 đến 3,4E+38

doubledouble System.DoubleSystem.Double 6464 1,7E-308 đến 1,7E+3081,7E-308 đến 1,7E+308

decimaldecimal System.DecimalSystem.Decimal 128128 Có độ chính xác đến 28 con sốCó độ chính xác đến 28 con số

boolbool System.Boolean System.Boolean Kiểu true/falseKiểu true/false

charchar System.CharSystem.Char 1616 Ký tự unicodeKý tự unicode

Page 9: Ngôn ngữ C

9Nguyen Ha Giang - 2008

object: Sytem.Objectobject: Sytem.ObjectKiểu dữ liệu gốc, cha của tất cả các kiểu Kiểu dữ liệu gốc, cha của tất cả các kiểu dữ liệu trong C#dữ liệu trong C#

object o = new object();object o = new object();

string: Sytem.Stringstring: Sytem.StringChuỗi ký tự UnicodeChuỗi ký tự Unicode

string s1 = “Hutech”;string s1 = “Hutech”;

string s2 = “Hi “;string s2 = “Hi “;

string s = s1 + s2;string s = s1 + s2;

The built-in reference typeThe built-in reference type

Page 10: Ngôn ngữ C

10Nguyen Ha Giang - 2008

The built-in reference typeThe built-in reference type

Page 11: Ngôn ngữ C

11Nguyen Ha Giang - 2008

Phân loại kểu dữ liệuPhân loại kểu dữ liệu

Value typeReference

type

Data type

int Num;long count;

Object obj = new Object();String str = “reference type”;

Phân loại theo cách thức lưu trữ dữ liệu

Page 12: Ngôn ngữ C

12Nguyen Ha Giang - 2008

Kiểu giá trịKiểu giá trị

Chứa giá trị trực tiếpChứa giá trị trực tiếp

Không thể Không thể nullnullPhải chứa giá trị xác địnhPhải chứa giá trị xác định

Bao gồmBao gồmKiểu cơ bản (primitive type)Kiểu cơ bản (primitive type)

doubledouble, , charchar, , intint, , floatfloat,…,…

Kiểu enumKiểu enum

Kiểu structKiểu struct

int i = 59;

5959i

7.837.83x

5959a

double x = 7.83;int a = i;

Page 13: Ngôn ngữ C

13Nguyen Ha Giang - 2008

Kiểu tham chiếuKiểu tham chiếu

Chỉ tới nơi chứa dữ liệuChỉ tới nơi chứa dữ liệu

Có thể Có thể nullnull

nullnull: không chỉ tới bất : không chỉ tới bất kỳ đâukỳ đâu

Bao gồmBao gồm

Lớp (class) Lớp (class)

stringstring, , objectobject

Giao diện (interface)Giao diện (interface)

Mảng (array)Mảng (array)

Đại diện (delegate)Đại diện (delegate)

string s1 = "Hello";

"Hello""Hello"

"Bye""Bye"s2

s3

s1

string s2 = "Bye";string s3;s3 = s1;

Page 14: Ngôn ngữ C

14Nguyen Ha Giang - 2008

Value type vs. Reference Value type vs. Reference typetypeCharacteristicCharacteristic Value typeValue type Reference Reference

typetypeVariable holdVariable hold ValueValue ReferenceReference

AllocatedAllocated StackStack HeapHeap

DefaultDefault ZeroZero NullNull

ParameterParameter Copy valueCopy value Copy Copy referencereference

Page 15: Ngôn ngữ C

15Nguyen Ha Giang - 2008

Định danhĐịnh danhĐịnh danh: những từ được đặt ra để đại diện cho mọi thứ dùng trong chương trìnhĐịnh danh: những từ được đặt ra để đại diện cho mọi thứ dùng trong chương trình

Khi đặt định danh: nên có tính gợi nhớKhi đặt định danh: nên có tính gợi nhớ

Tạo ra định danh mớiTạo ra định danh mớiHelloWorldHelloWorld, , ProgramProgram, , PerformPerform,…,…

phải khai báo trước khi sử dụngphải khai báo trước khi sử dụng

Dùng định danh có sẵnDùng định danh có sẵnConsoleConsole, , WriteLineWriteLine, , ReadLineReadLine,…,…

phải chỉ ra nơi chứa định danh (namespace)phải chỉ ra nơi chứa định danh (namespace)

Page 16: Ngôn ngữ C

16Nguyen Ha Giang - 2008

Định danhĐịnh danhBao gồm chữ cái, chữ số, ký tự gạch Bao gồm chữ cái, chữ số, ký tự gạch dướidưới

Không được bắt đầu bằng chữ sốKhông được bắt đầu bằng chữ sốChuong_TrinhChuong_Trinh, , x25x25, , zz, , _abc_abc, , XửLýXửLý hợp hợp lệlệ

2abc2abc, , Chuong-TrinhChuong-Trinh, , Xu Ly, class Xu Ly, class không hợp lệkhông hợp lệ

Phân biệt CHỮ HOA và chữ thườngPhân biệt CHỮ HOA và chữ thườngChuongTrinhChuongTrinh và và chuongtrinhchuongtrinh là khác là khác nhaunhau

Các định danh được khai báo trong Các định danh được khai báo trong cùng phạm vi (scope) không được cùng phạm vi (scope) không được trùng nhautrùng nhau

Phải khác với từ khóaPhải khác với từ khóa

Page 17: Ngôn ngữ C

17Nguyen Ha Giang - 2008

Từ khoáTừ khoá

abstract const extern in operator sbyte throw virtualas continue false int out sealed true voidbase decimal finally interface override set try volatilebool default fixed internal params short typeof wherebreak delegate float is partial sizeof uint whilebyte do for lock private stackalloc ulong yieldcase double foreach long protected static uncheckedcatch else get namespace public string unsafechar enum goto new readonly struct ushortchecked event if null ref switch usingclass explicit implicit object return this value

Các từ khóa trong C# 2005

Page 18: Ngôn ngữ C

18Nguyen Ha Giang - 2008

HằngHằng

Một hằng (constant) là một biến Một hằng (constant) là một biến nhưng trị không thay đổinhưng trị không thay đổi

const int a = 100; // giá trị ko thể const int a = 100; // giá trị ko thể thay đổithay đổi

Hằng bắt buộc phải được gán giá trị Hằng bắt buộc phải được gán giá trị lúc khai báo lúc khai báo

Trị của hằng có thể được tính toán Trị của hằng có thể được tính toán vào lúc biên dịch vào lúc biên dịch

Hằng bao giờ cũng static Hằng bao giờ cũng static

Page 19: Ngôn ngữ C

19Nguyen Ha Giang - 2008

HằngHằng

Ưu điểmƯu điểm

Chương trình dễ đọc, khắc phục những Chương trình dễ đọc, khắc phục những con số “con số “magic numbermagic number” trong code.” trong code.

Chương trình dễ sửa hơn.Chương trình dễ sửa hơn.

Tránh lỗi dễ dàng hơn, trình biên dịch Tránh lỗi dễ dàng hơn, trình biên dịch sẽ báo lỗi nếu gán lại giá trị cho hằngsẽ báo lỗi nếu gán lại giá trị cho hằng

Page 20: Ngôn ngữ C

20Nguyen Ha Giang - 2008

HằngHằngMinh họa sử dụng hằngMinh họa sử dụng hằng

Định nghĩa hằng

Page 21: Ngôn ngữ C

21Nguyen Ha Giang - 2008

BiếnBiến

Biến (variable) là nơi lưu dữ liệu của Biến (variable) là nơi lưu dữ liệu của chương trìnhchương trình

Dữ liệu của biếnDữ liệu của biếnNằm trong bộ nhớ vật lý (physical RAM)Nằm trong bộ nhớ vật lý (physical RAM)

Có thể thay đổi giá trịCó thể thay đổi giá trị

Phải khai báo trước khi dùngPhải khai báo trước khi dùngIdentifier: tên để đại diện cho biếnIdentifier: tên để đại diện cho biến

Datatype: dạng lưu trữ dữ liệu của biếnDatatype: dạng lưu trữ dữ liệu của biến

Datatype identifier

Page 22: Ngôn ngữ C

22Nguyen Ha Giang - 2008

BiếnBiến

Phạm vi (scope)Phạm vi (scope)Được xác định bởi cặp dấu Được xác định bởi cặp dấu {{ và và }}

Có thể chứa phạm vi nhỏ hơnCó thể chứa phạm vi nhỏ hơn

Vị trí khai báo biếnVị trí khai báo biếnTrong thân phương thức: biến cục bộTrong thân phương thức: biến cục bộ

Trong thân lớp: thuộc tínhTrong thân lớp: thuộc tính

Biến trong C# chỉ có tác dụng trong Biến trong C# chỉ có tác dụng trong phạm vi mà nó được khai báophạm vi mà nó được khai báo

Page 23: Ngôn ngữ C

23Nguyen Ha Giang - 2008

Ép kiểuÉp kiểu

Ép kiểu (type-cast): chuyển giá trị từ Ép kiểu (type-cast): chuyển giá trị từ kiểu này sang kiểu kháckiểu này sang kiểu khác

Ví dụVí dụChuyển từ Chuyển từ intint qua qua floatfloat và ngược lại và ngược lại

Có hai loạiCó hai loạiÉp kiểu ngầm định (implicit type-cast)Ép kiểu ngầm định (implicit type-cast)

Ép kiểu chỉ định (explicit type-cast)Ép kiểu chỉ định (explicit type-cast)

Page 24: Ngôn ngữ C

24Nguyen Ha Giang - 2008

Ép kiểu ngầm địnhÉp kiểu ngầm định

Do C# tự thực hiệnDo C# tự thực hiện

Không cần lập trình viên can thiệpKhông cần lập trình viên can thiệp

Xảy ra khiXảy ra khiÉp từ kiểu nhỏ qua kiểu lớnÉp từ kiểu nhỏ qua kiểu lớn

Ép từ lớp dẫn xuất qua lớp cơ sởÉp từ lớp dẫn xuất qua lớp cơ sở

int i = 59;double x = i;

string s = "Hello";object o = s;

Page 25: Ngôn ngữ C

25Nguyen Ha Giang - 2008

C# hỗ trợ ép kiểuC# hỗ trợ ép kiểu

FromFrom ToTo

sbyte sbyte short, int, long, float, double, decimal short, int, long, float, double, decimal

byte byte short, ushort, int, uint, long, ulong, float, short, ushort, int, uint, long, ulong, float, double, decimal double, decimal

short short int, long, float, double, decimal int, long, float, double, decimal

ushort ushort int, uint, long, ulong, float, double, decimal int, uint, long, ulong, float, double, decimal

int int long, float, double, decimal long, float, double, decimal

uint uint long, ulong, float, double, decimal long, ulong, float, double, decimal

long, ulong long, ulong float, double, decimal float, double, decimal

float float double double

char char ushort, int, uint, long, ulong, float, double, ushort, int, uint, long, ulong, float, double, decimal decimal

Page 26: Ngôn ngữ C

26Nguyen Ha Giang - 2008

Ép kiểu chỉ địnhÉp kiểu chỉ định

Do lập trình viên chỉ địnhDo lập trình viên chỉ định

Xảy ra khiXảy ra khiÉp từ kiểu lớn qua kiểu nhỏ: có thể mất Ép từ kiểu lớn qua kiểu nhỏ: có thể mất giá trịgiá trị

Ép từ lớp cơ sở qua lớp dẫn xuấtÉp từ lớp cơ sở qua lớp dẫn xuất

double x = 74.86;int i = (int)x; // i = 74

string s = "Hello";object o = s;string s2 = (string)o;

Page 27: Ngôn ngữ C

27Nguyen Ha Giang - 2008

Ép kiểu chỉ định bằng Ép kiểu chỉ định bằng ConvertConvert

Thường dùng khi cần chuyển đổi giữa Thường dùng khi cần chuyển đổi giữa các kiểu không có liên hệ với nhaucác kiểu không có liên hệ với nhau

Convert.toDataType(Convert.toDataType(SourceValueSourceValue))

Ví dụ: chuyển từ chuỗi sang số thựcVí dụ: chuyển từ chuỗi sang số thực

string s1 = "56.8";

double x = Convert.ToDouble(s1); // x = 56.8int i = Convert.ToInt32(s2); // i = 95

string s2 = "95";

byte j = Convert.ToByte(x); // j = 56, ít dùng

Page 28: Ngôn ngữ C

28Nguyen Ha Giang - 2008

Console I/OConsole I/O

Để đọc ký tự văn bản từ cửa sổ Để đọc ký tự văn bản từ cửa sổ consoleconsole

Console.Read() giá trị trả về là intConsole.Read() giá trị trả về là int

Console.ReadLine() giá trị trả về là stringConsole.ReadLine() giá trị trả về là string

Để xuất chuỗi ký tự dùngĐể xuất chuỗi ký tự dùngConsole.Write() / Console.WriteLine()Console.Write() / Console.WriteLine()

Page 29: Ngôn ngữ C

29Nguyen Ha Giang - 2008

Console I/OConsole I/O

Console.WriteLine()Console.WriteLine()

\n: ký tự xuống dòng

Page 30: Ngôn ngữ C

30Nguyen Ha Giang - 2008

Console I/OConsole I/O

/ F5

Xuất chuỗiĐọc chuỗi

Chờ đọc 1 dòng, mục đích là dừng màn hình

Page 31: Ngôn ngữ C

31Nguyen Ha Giang - 2008

Boxing & UnboxingBoxing & Unboxing

Kiểu giá trị có thể được chuyển thành Kiểu giá trị có thể được chuyển thành kiểu đối tượngkiểu đối tượng

BoxingBoxing

UnboxingUnboxing UnboxingUnboxing

BoxingBoxing

Page 32: Ngôn ngữ C

32Nguyen Ha Giang - 2008

Keywords Keywords const & const & readonlyreadonlyconstconst: phải được gán giá trị khi khai báo

readonlyreadonly: ko cần khởi tạo trước, khi gán giá trị thì sau đó ko thay đổi được

Chưa được khởi gán

Ko được thay đổi

Page 33: Ngôn ngữ C

33Nguyen Ha Giang - 2008

checked & uncheckedchecked & unchecked

throws OverFlowException

Page 34: Ngôn ngữ C

34Nguyen Ha Giang - 2008

refref, out, param, out, param

ref: tương tự như truyền tham chiếu trong ref: tương tự như truyền tham chiếu trong C/C++C/C++

Từ khoá ref phải được dùng lúc gọi hàmTừ khoá ref phải được dùng lúc gọi hàm

Các tham số truyền dạng ref phải được Các tham số truyền dạng ref phải được khởi tạo giá trị trước khởi tạo giá trị trước

Khai báo ref trước kiểu dữ liệu

sử dụng ref cho tham số khi gọi hàm

Page 35: Ngôn ngữ C

35Nguyen Ha Giang - 2008

refref, , outout, param, param

out: tương tự như refout: tương tự như ref

Khác ref là ko cần khởi tạo giá trị trước khi Khác ref là ko cần khởi tạo giá trị trước khi truyềntruyền

Khai báo cho tham số

Dùng trước tham số khi gọi hàm

Page 36: Ngôn ngữ C

36Nguyen Ha Giang - 2008

refref, , outout, , paramparam

3 phần tử 6 phần tử Mảng array

Luôn khai báo ở cuối danh sách tham số

Page 37: Ngôn ngữ C

37Nguyen Ha Giang - 2008

thisthis

public class list{ private int size;

...

public SetSize (int size) { this.size = size; }

Page 38: Ngôn ngữ C

38Nguyen Ha Giang - 2008

Lệnh lặpLệnh lặp

Tương tự như C: while, do while, forTương tự như C: while, do while, for

while <điều kiện>while <điều kiện>{{

// phần thân while// phần thân while

}}

do do {{

// phần thân do while// phần thân do while

} while <điều kiện>;} while <điều kiện>;

for( khởi tạo biến lặp; <điều kiện theo biến lặp>; thay đổi biến lặp)for( khởi tạo biến lặp; <điều kiện theo biến lặp>; thay đổi biến lặp){{

// phần thân for// phần thân for

}}

Phải là giá trị bool: true, falsePhải là giá trị bool: true, false

Page 39: Ngôn ngữ C

39Nguyen Ha Giang - 2008

Lệnh lặpLệnh lặpindex = 10;while(index != 0){ Console.WriteLine(index); index--;}

index = 0;do{ Console.WriteLine("Happens at least once"); }while(index < 0);

for(index = 0;index<100;index++){ Console.Write(index); Console.Write("\t");}

Giá trị {true, false}Giá trị {true, false}

Page 40: Ngôn ngữ C

40Nguyen Ha Giang - 2008

Lệnh lặp Lệnh lặp foreachforeachforeach( typedata identifier foreach( typedata identifier inin objectArray) objectArray){{

// thân foreach// thân foreach

}}

==

Chỉ sử dụng biến i cho mỗi

lần lặp

Sử dụng chỉ số mảng như bình

thường

Page 41: Ngôn ngữ C

41Nguyen Ha Giang - 2008

switchswitch

Biểu thức switch gồm: kiểu số, ký tự, enum và Biểu thức switch gồm: kiểu số, ký tự, enum và chuỗichuỗi

sử dụng break, goto, return để điều khiển luồng sử dụng break, goto, return để điều khiển luồng thực thithực thi

Nếu ko nhãn nào phù hợp -> defaultNếu ko nhãn nào phù hợp -> default

Nếu ko có default -> thực hiện lệnh sau switchNếu ko có default -> thực hiện lệnh sau switch

Page 42: Ngôn ngữ C

42Nguyen Ha Giang - 2008

Lệnh nhảyLệnh nhảy

breakbreakThoát khỏi vòng lặpThoát khỏi vòng lặp

continuecontinueQua bước lặp kếQua bước lặp kế

gotogotoNhảy đến nhãn Nhảy đến nhãn

Sử dụng goto case <Sử dụng goto case <expressionexpression>, trong >, trong switchswitch

Page 43: Ngôn ngữ C

43Nguyen Ha Giang - 2008

Lệnh nhảy returnLệnh nhảy return

Thoát khỏi hàm voidThoát khỏi hàm void

Trả về 1 giá trị của hàmTrả về 1 giá trị của hàm

void Func1(int x) {

if (x == 0)

return;

...

}

int max(int a, int b) { if (a > b) return a; else return b;}

Page 44: Ngôn ngữ C

44Nguyen Ha Giang - 2008

MảngMảng

Chứa một số những biến có cùng kiểu Chứa một số những biến có cùng kiểu dữ liệu.dữ liệu.

Truy xuất phần tử thông qua chỉ số Truy xuất phần tử thông qua chỉ số (index)(index)

Chỉ số bắt đầu bằng 0.Chỉ số bắt đầu bằng 0.

VDVDint[] myInteger = new int[5];int[] myInteger = new int[5];

string[] myString = string[] myString = {“BeMun”,”BeTien” };{“BeMun”,”BeTien” };

Datatype[ ] array-nameDatatype[ ] array-name

Page 45: Ngôn ngữ C

45Nguyen Ha Giang - 2008

MảngMảng

Lấy kích thước mảng qua thuộc tính LengthLấy kích thước mảng qua thuộc tính Lengthint Size = myArray.Length;int Size = myArray.Length;

NNếu thành phần của mảng là kiểu ếu thành phần của mảng là kiểu định trước, có thể dùng hàm Sort của định trước, có thể dùng hàm Sort của Array để sắp xếpArray để sắp xếp

Array.Sort(myArray);Array.Sort(myArray);

Dùng hàm Reverse của Array để đảo Dùng hàm Reverse của Array để đảo thứ tự các phần tử trong mảngthứ tự các phần tử trong mảng

Array.Reverse(myArray);Array.Reverse(myArray);

Page 46: Ngôn ngữ C

46Nguyen Ha Giang - 2008

MảngMảng

Dùng phương thức tĩnh Sort của lớp Array để sort artists

Dùng phương thức tĩnh Reverse của lớp Array để đảo thứ tự artists

Page 47: Ngôn ngữ C

47Nguyen Ha Giang - 2008

Mảng nhiều chiềuMảng nhiều chiều

Khai báo mảng int 2 dòng 3 cộtKhai báo mảng int 2 dòng 3 cộtint[,] myMatrix = new int[2,3];int[,] myMatrix = new int[2,3];

Có thể khởi gánCó thể khởi gánint[,] myMatrix = new int[,] {{1,2},{3,4},int[,] myMatrix = new int[,] {{1,2},{3,4},{5,6},{7,8}};{5,6},{7,8}};

int[,] myMatrix = {{1,2},{3,4},{5,6},{7,8}};int[,] myMatrix = {{1,2},{3,4},{5,6},{7,8}};

string[,] beatleName = {{"Lennon","John"}, string[,] beatleName = {{"Lennon","John"},

{"McCartney","Paul"}, {"McCartney","Paul"}, {"Harrison","George"}, {"Harrison","George"},

{"Starkey","Richard"}}; {"Starkey","Richard"}};

Datatype[,] array-nameDatatype[,] array-name

Page 48: Ngôn ngữ C

48Nguyen Ha Giang - 2008

Mảng nhiều chiềuMảng nhiều chiều

Truy cập tuần tự theo kiểu mảng 1 chiều

Truy cập theo dạng dòng cột qua chỉ mục i và j

Page 49: Ngôn ngữ C

49Nguyen Ha Giang - 2008

Mảng JaggedMảng Jagged

Jagged là mảng mà mỗi phần tử là một Jagged là mảng mà mỗi phần tử là một mảng có kích thước mảng có kích thước khác nhaukhác nhau

Những mảng con này phải được khai báo Những mảng con này phải được khai báo riêngriêng

Khai báo mảng 3 dòng, mỗi dòng là một Khai báo mảng 3 dòng, mỗi dòng là một mảng 1 chiềumảng 1 chiều

Datatype[ ][ ] array-nameDatatype[ ][ ] array-name

int[][] a = new int[3][];a[0] = new int[4];a[1] = new int[3];a[2] = new int[1];

Khai báo số dòng, hàng

Khai báo số cột riêng chotừng dòng

Page 50: Ngôn ngữ C

50Nguyen Ha Giang - 2008

Mảng JaggedMảng Jagged

Truy cập theo dòng, cột Truy cập dùng foreach

Page 51: Ngôn ngữ C

51Nguyen Ha Giang - 2008

EnumerationEnumeration

Dùng thay thế hằngDùng thay thế hằng

Tập hợp các giá trị hằng được đặt tênTập hợp các giá trị hằng được đặt tên

Khai báo trực tiếp trong namespaceKhai báo trực tiếp trong namespace

Là kiểu dữ liệuLà kiểu dữ liệuenum Color { Red, Green, Blue };enum Access { personal = 1, group = 2, all = 4 };

Color c = Color.Red;

Access a = Access.personal | Access.group;If ((Access.personal & a) != 0) Console.WriteLine("access granted");

Sử dụngSử dụng

Page 52: Ngôn ngữ C

52Nguyen Ha Giang - 2008

EnumerationEnumeration

Enumeration kế thừa từ object (Equals, Enumeration kế thừa từ object (Equals, ToString()).ToString()).

Page 53: Ngôn ngữ C

53Nguyen Ha Giang - 2008

EnumerationEnumeration