ƯƠ CH Ệ

NG 2 Ữ I THI U NGÔN NG

GI

C#

TR N MINH THÁI Email: minhthai@huflit.edu.vn Website: www.minhthai.edu.vn

1

2

M c tiêu

 Gi

ớ ơ ả ữ ệ ệ ề i thi u .Net FramWork, các khái ni m c  b n v  ngôn ng  C#

 C u trúc c a m t ch

ủ ấ ộ ươ ươ ng trình và cách trình bày ch ng trình

 Gi

ớ ụ ậ ứ ệ i thi u công c  l p trình và các ch c năng liên quan

ệ ậ ấ L nh nh p/ xu t trong C#

3

.NET Framework

ể ỗ ợ ư ệ ộ ậ ợ ườ ậ Framework là m t t p h p các th  vi n đ  h  tr  cho ng i l p trình.

 M i  Framework  đ

ỗ ượ ạ ộ ế c  t o  ra  có  m t  ki n  trúc  khác  nhau   LTV  ph i ả

ế tuân theo ki n trúc đó

ư ệ ỗ ợ ủ .NET  Framework  là  th   vi n  tài  nguyên  c a  Microsoft,  h   tr   cho  các

ầ ề ậ l p trình viên trong nhi u yêu c u khác nhau.

4

.NET Framework

5

.NET Framework

6

.Net Framework

7

.NET Framework

 Các ngôn ng  : C#, VB.Net, J#, F#, VC++…

 Công c  phát tri n Visual Studio

ụ ể

ặ ả ớ ữ L p đ c t ngôn ng  dùng chung (CLS)

 Các th  vi n đê phát tri n  ng d ng

ư ệ ể ứ ụ

ộ ự ữ B  th c thi ngôn ng  dùng chung (CLR)

8

.NET Framework

ươ

ượ

 Ch

ng trình đ

ữ c biên d ch thành ngôn ng

trung  gian  (MSIL  ­  Microsoft  Intermediate

ượ

Language), sau đó chúng đ

c CLR th c thi.

ề ả

 Common Language Runtime ­ CLR, n n t ng

ướ

ố ượ

ể ứ

h

ng  đ i  t

ng  cho  phát  tri n  ng  d ng

ể Windows  và  Web  mà  các  ngôn  ng   có  th

ẻ ử ụ chia s  s  d ng.  ầ

ộ ư ệ

Tr n Minh Thái  B  th  vi n Framework Class Library ­ FCL.

9

.NET Framework

 Common Language Runtime ­ CLR, n n t ng h

ề ả ướ ố ượ ng đ i t ng cho phát

ể ứ ụ ữ ể ẻ ử tri n  ng  d ng  Windows  và  Web  mà  các  ngôn  ng   có  th   chia  s   s

ụ d ng.

ộ ư ệ B  th  vi n Framework Class Library ­ FCL.

ầ Tr n Minh Thái

10

.NET Framework

ầ Tr n Minh Thái

11

.

k r o w e m a r F T E N

12

Ngôn ng  C#ữ

 Ngôn ng  l p trình đ

ữ ậ ượ ự ự ữ ữ ề ả c xây d ng d a trên n n t ng nh ng ngôn ng

ự ươ t ng t C (C, C++, Java)

 Ho t đ ng trên .NET Framework

ạ ộ

ầ Tr n Minh Thái

13

Ngôn ng  C#ữ

 D a trên ph

ự ươ ố ượ ng pháp thi ế ế ướ t k  h ng đ i t ng

Ứ ụ ng d ng : Console, WinForm, WebForm

ữ ễ ạ  Có tính di n đ t ng  nghĩa cao

ệ ữ ườ Phân bi t ch  hoa th ng

ầ Tr n Minh Thái

ở ạ

Kh i T o Project

B2. Ch nọ Console Application 14

B1. Ch nọ

ư ị B4. V  trí l u

ặ B3. Đ t tên Project

ặ B4. Đ t tên Solution

ở ạ

Kh i T o Project

15

File Program.cs là file mặc định chứa hàm Main của chương trình

16

ươ

Compile & ch y ch

ng trình

ị ứ ẽ ậ

ữ ươ ộ ậ ườ ạ

ị Trình  biên  d ch  (compiler)  s   biên  d ch  các  t p  tin  ch a  ngôn  ng   C#  ng  ng  là  các  file  .cs  trong  project  thành  m t  t p  tin  ch y  ch th trình .exe

 Có 2 cách biên d ch :

ạ ử

 T i c a s  cmd, gõ : csc.exe tenfile.cs

 Nh n Build / Compile (ho c Build / Build Solution)

 Biên d ch c  project.

17

ươ

Compile & ch y ch

ng trình

ươ ạ Ch y ch ng trình

ư ụ ử ụ S  d ng file tenfile.exe trong th  m c Bin\Debug

 Ho c click Debug\ Start (Ctrl + F5)

T  khoá – Keywords

abstract

add*

as

base

bool

break

byte

case

catch

char

checked

class

const

continue

decimal

default

delegate

do

double

else

enum

event

explicit

extern

false

finally

fixed

float

for

foreach

get*

goto

if

implicit

in

int

lock

interface

internal

is

long

namespace

new

null

object

operator

out

override

params

partial*

private

protected

public

readonly

ref

remove

return

sbyte

sealed

set*

short

sizeof

stackalloc

static

string

struct

switch

this

throw

true

try

typeof

uint

ulong

unchecked

unsafe

ushort

using

value*

virtual

void

volatile

where*

while

yield

18

19

ở ạ

Kh i T o Project

 C u trúc m t project : using System; //khai báo không gian tên sử

dụng

namespace BaiTapVD {

class Program //tên lớp, tên file = tên lớp {

static void Main(string[] args)

{

//Các lệnh viết tại đây

}

} }

20

Namespace (không gian tên)

ệ ộ ượ ử ụ ố ượ ể ớ Namespace là m t khái ni m đ c s  d ng đ  phân nhóm các l p đ i t ng

ố ượ ữ ớ ệ trong .Net Framework, tránh vi c trùng tên gi a các l p đ i t ng

ầ Tr n Minh Thái

21

Namespace (không gian tên)

Ví d :ụ

System.Drawing2D.Pen

và System.Drawing3D.Pen

ề ậ ộ ớ ố ượ ề ư ộ ế đ u đ  c p đ n m t l p đ i t ng Pen nh ng thu c hai namespace khác

ố ượ ớ nhau, do đó chúng là hai l p đ i t ng khác nhau.

ầ Tr n Minh Thái

ử ụ

S  d ng Namespace 22

ủ ự ế ầ ằ Khai báo tr c ti p b ng cách ghi đ y đ  namespace.

VD:

System.Media.SoundPlayer spStart

=new System.Media.SoundPlayer(“start.wav”);

ầ Tr n Minh Thái

ử ụ

S  d ng Namespace 23

ử ụ ừ ướ ẽ ượ ế ể   khóa  using  đ   khai  báo  tr c  namespace  s   đ c  tham  chi u

S   d ng  t đ n.ế

VD:

using System.Media;

SoundPlayer spStart = new SoundPlayer();

ầ Tr n Minh Thái

24

Comments (ghi chú)

Ý nghĩa

Ví dụ

Ki u ể Comments

/*comment*/

Delimited  comments

ể ở ộ Chú thích có th  m  r ng cho  ồ nhi u dòng mã ngu n

//comment

Single­line  comments

ử ụ Chú thích s  d ng cho m t  dòng mã ngu nồ

/**comment**/

ử ụ ồ

ẩ ủ

Chú thích s  d ng cho nhi u  dòng mã ngu n chu n c a XML

XML  delimited  comments

///comment

ộ ẩ ủ

ử ụ Chú thích s  d ng cho m t  ồ dòng mã ngu n chu n c a XML

XML single­ line comments ầ

Tr n Minh Thái

25

T p các ký t

ự ườ  th

ng dùng

 Ch  cái hoa: A, B, ..., Z ườ

ng: a, b, c, ..., z

ữ  Ch  cái th ữ ố

 Ch  s : 0, 1, ..., 9

 Các ký hi u toán h c: +, ­, *, /, =,

(, ),...

 Ký hi u g ch n i: _ ệ

ư . ,  ; []

t nh :

ặ  Các ký hi u đ c bi {} ? ! \ & | % # ...

ượ

ư

c dùng các ký hi u nh :

, α

 Không đ φ Ω π

ế

,  , … ho c ti ng vi

t có d u: â,

,

ă, ô…

26

ố ệ

L nh & Kh i l nh

 M t câu l nh th c hi n m t ch c năng nào đó (gán, xu t, nh p, …) và

ứ ự ệ ệ ấ ậ ộ ộ

ượ ế ấ ẩ ằ đ ấ c k t thúc b ng d u ch m ph y (;)

ề ệ ố ệ ồ ượ ặ ặ ặ ọ Kh i l nh g m nhi u l nh và đ ấ c đ t trong c p d u ngo c nh n { }

27

ữ ệ

ể Data Types (Ki u d  li u ­ KDL)

ạ ữ ệ ị ủ ạ ộ ớ KDL là các  lo i d  li u và  ph m vi giá tr  c a chúng trong b  nh  mà

ườ ậ ử ụ ể ư ng ữ i l p trình s  d ng đ  l u tr .

 Có 2 lo i : KDL d ng s n & KDL t

ự ẵ ạ ự ị đ nh nghĩa.

28

ữ ệ

ể Data Types (Ki u d  li u ­ KDL)

ữ ệ ế ể ậ ị C# cũng chia t p d  li u thành hai ki u: giá tr  và tham chi u

ị ượ ư ế ể ớ stack Bi n ki u giá tr  đ c l u trong vùng nh

ế ể ế ượ ư ớ heap Bi n ki u tham chi u đ c l u trong vùng nh

29

ị KDL đ nh s n

ố S  nguyên

ố ự S  th c

ự Ký t , logic

 M ng, chu i ký t

ả ỗ ự

 M t s  KDL có c u trúc khác

ộ ố ấ

30

S  nguyên

C#

.NET

Mi n giá tr

Mô tả

Kích cướ Th (byte)

ươ

ng

Byte

[0..255]

byte

1

S  nguyên d không d uấ

Sbyte

[­128..127]

ấ S  nguyên có d u

sbyte

1

Int16

[0..65.535]

S  nguyên không d u

short

2

Int32

ấ S  nguyên có d u

int

4

ừ ế

T  ­2.147.483.647  đ n 2.147.483.646

ế Uint32 T  0 đ n 4.294.967.295

S  nguyên không d u

uint

4

Int64

ấ S  nguyên có d u

long

8

ừ ế

T  ­9.223.370.036.854.775.808 đ n 9.223.370.036.854.775.807

ế

ulong

Uint64 T  0 đ n 0xffff ffff ffff ffff

S  nguyên không d u

8

31

Ký t

và logic

C#

.NET

ị Mi n giá tr

Mô tả

Kích  c ướ th (byte) 1 2

bool char

Boolean true ho c false Char

ị Giá tr  logic  ự Ký t Unicode

32

ố ự S  th c

C#

.NET

Mi n giá tr

Mô tả

Kích  c ướ th (byte)

4

float

Single

ừ T  3,4E­38  ế đ n 3,4E+38

8

double

Double

ừ T  1,7E308  ế đ n 1,7E+308

ấ ữ ố

ấ ể Ki u d u ch m  ữ ố ớ ộ đ ng, v i 7 ch  s   có nghĩa ấ ể Ki u d u ch m  ộ ộ đ ng có đ  chính  ớ xác g p đôi, v i 15  ch  s  có nghĩa

8

decimal

Decimal

ả ặ

“m” ho c

ế Có đ  chính xác đ n  ố 28 con s , ph i có  ậ ố h u t “M” theo sau giá trị

33

ể String (ki u chu i)

ể ộ ớ ạ ữ ệ ể ứ Ki u ể string có th  ch a n i dung không gi i h n, vì đây là ki u d  li u

ố ượ ượ ứ ở ộ đ i t ng đ c ch a ớ  b  nh  heap.

Khai báo:

string s = “Nguyen Van A”;

34

Ki u m ng

 M ng là m t t p h p các ph n t

ộ ậ ầ ử ả ợ ế ể ộ ữ ệ  cùng m t ki u d  li u liên ti p nhau

ượ ấ và đ ỉ ố c truy xu t thông qua ch  s .

 Ch  s  b t đ u t

ỉ ố ắ ầ ừ 0.

35

Ki u m ng

 M ng m t chi u

 []=new [S  ph n

t

];ử

 VD: Khai báo m ng s  nguyên

ề ả ộ

ồ arr g m 5

ầ ử

ph n t

int [] arr = new int [5];

36

Ki u m ng

 M ng hai chi u

 [,]=new [S  dòng, s

c t];ộ

 VD: Khai báo ma tr n s  nguyên

ề ả

mt g m 5 dòng và

3 c tộ

long [ ,] mt = new long [5, 3];

37

Enum (ki u li

t kê)

ể ặ ị ể ứ ộ ị ố Enum  là  m t  cách  th c  đ   đ t  tên  cho  các  tr   nguyên  (các  tr   ki u  s

ươ ự ư ậ ươ nguyên, theo nghĩa nào đó t ng t ằ  nh  t p các h ng), làm cho ch ng

ễ ể ơ trình rõ ràng, d  hi u h n

38

Enum (ki u li

t kê)

VD1:

enum Ngay {Hai, Ba, Tu, Nam, Sau, Bay, ChuNhat};

Hai = 0; Ba = 1; … ; ChuNhat = 6

VD2:

enum Ngay {Hai = 1, Ba, Tu, Nam, Sau, Bay, ChuNhat};

Hai = 1; Ba = 2; … ; ChuNhat = 7

39

Enum (ki u li

t kê)

VD3:

enum Ngay {Hai = 1, Ba, Tu, Nam, Sau=10, Bay, ChuNhat};

Hai = 1; Ba = 2; … ; Sau=10; Bay=11;ChuNhat = 12

40

ể Struct (ki u c u trúc)

ữ ệ ộ ố ượ ế ể ng  nào

Struct  dùng  đ   nhóm  các  d   li u  cùng  liên  quan  đ n  m t  đ i  t đó.

Khai báo :

struct 

{

Danh sách các thu c tính;

}

ế ấ ấ Truy xu t:  ộ .thu c tính

41

ể Struct (ki u c u trúc)

struct SV {

public string ten;      public string maso;

}

static void Main(string[] args)    {         SV a;         a.ten = "Le Van Teo";         a.maso = "002";      Console.WriteLine("Ten: "+a.ten+" Ma so:

"+a.maso);

Console.ReadLine();

}

42

Identifier (đ nh danh)

ế ệ ằ ị ị  Đ nh danh là vi c xác đ nh tên: bi n, hàm, h ng, …

ệ ữ ườ Phân bi t ch  hoa th ng

43

Identifier (đ nh danh)

ướ

Quy

c đ t tên :

ử ụ ữ ườ ữ ố S  d ng 26 ch  cái (th ng/ hoa), 10 ch  s

 D u n i ( _ )

ấ ố

ữ ố ở ầ Không dùng ch  s đ u

ớ ừ Không trùng v i t khoá

44

Bi nế

ế

ớ ế

ế

ộ  M t  bi n  đ i  di n  cho  m t  vùng  nh   hay  ộ ậ t p  các  vùng  nh   trên  b   nh   chính  c a  ượ c  dùng  đ   tham  máy  tính.  Tên  bi n  đ ớ kh o đ n nh ng vùng nh  này ữ

ể ư

ị ị ạ

ườ ờ

ế ậ

i  dùng   Bi n  đ   l u  tr   các  giá  tr   do  ng nh p  vào  ho c  các  giá  tr   t m  th i  trong  quá trình tính toán

ế

ể ượ ư

ỗ ữ ệ ươ ng  ị ế ng.  Ki u  d   li u  c a  bi n  xác  đ nh  ữ c  l u

ế

 M i  bi n  s   có  tên  và  ki u  d   li u  t ữ ệ ứ ể ị nh ng  giá  tr   ki u  nào  có  th   đ ụ ố trong bi n (ví d  s  hay ch …)

ướ

ử ụ

 PH I khai báo Bi N tr

c khi s  d ng

45

ế

ế

Bi n & khai báo bi n

Khai báo:

 tên bi n;ế

VD:

int x;

int a, b;

46

ế

ế

Bi n & khai báo bi n

ở ạ VD: Khai báo và kh i t o:

int x = 5;

int y = x;

float z = 3.7;

float k = (float) x/2;

47

ử ố ọ

Toán t

s  h c

Ký hi uệ

Ý nghĩa

Ghi chú

+

­

*

C ngộ Trừ Nhân

/

Chia

ố ớ ố ế

ị ầ

Đ i v i s  chia & b  chia là nguyên  ả thì cho k t qu  là ph n nguyên

%

ấ Chia  l y  ph n  dư

ố ụ Ch  áp d ng cho s  chia & b  chia là  ố s  nguyên

ị Tăng x 1 đ n vơ

++x;  x+ +

ơ

ị ả ­­x; x­­ Gi m x 1 đ n v

48

Ký hi u so sánh và phép toán bit

Ý nghĩa

Ký hi uệ

Ý nghĩa

Ký hi uệ >

&

Và bit

ặ ằ

ơ L n h n ơ

>=

L n h n ho c b ng

|

ặ Ho c bit

<

>>

ả D ch ph i

ặ ằ

ỏ ơ Nh  h n ỏ ơ

<=

<<

D ch trái

==

^

Xor bit

!=

Nh  h n ho c b ng B ngằ Khác

&&

||

!

Và Ho cặ ủ ị Ph  đ nh

ứ ự ư

Th  t

49

ự ế

u tiên phép toán ộ ư Đ   u

Trình t

k t

Toán tử

()  []  ­>

tiên 1

!  ~  ++  ­­  ­  +  *  &  sizeof

2

*  /   %

3

+   ­

4

<<    >>

5

<   <=   >=   >

6

==   !=

7

&

8

h pợ T  trái qua  ph iả ừ ả T  ph i qua  trái T  trái qua  ph iả T  trái qua  ph iả T  trái qua  ph iả T  trái qua  ph iả T  trái qua  ph iả T  trái qua  ph iả

|

9

T  trái qua

ph iả

^

10

T  trái qua

ph iả

&&

11

T  trái qua

ph iả

||

12

T  trái qua

ph iả

ừ ả

? :

13

T  ph i qua

trái

ừ ả

=  +=  ­=  *=  /=  %=

14

T  ph i qua

trái

Stt

x

y

z

Ví d :ụ

1

5

11

int x = 5, y = 11;

2

int z = ++x + y++;

++x x=6

3

ế

K t qu : x=6; y=12; z=17

z=x+y z=6+11=17

4

y++ y=12

ế ế

ả ủ

ươ

Cho bi

t k t qu  c a đo n ch

ng trình sau:

int a, b;

b=a++ + ++a + ­­a;

ế

ả V i a = 2 K t qu :

ế

ả V i a = 9 K t qu :

50

ế ế ả ủ ạ ươ Cho bi t k t qu  c a đo n ch ng trình sau:

51 int a, b;

b=a%2 + a/2 + ­­a;

ế ớ ả V i a = 17 K t qu : a = ?; b = ?

ế ớ ả V i a = 3  K t qu : a = ?; b = ?

­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­­

int a, b;

b=a/3 + a­­;

ế ả ớ V i a = 8 K t qu : a = ?; b = ?

ế ả ớ V i a =21 K t qu : a = ?; b = ?

ử ề

Toán t

đi u ki n

ườ

ườ

ng h p đúng>:

ng

52

(ĐK)?

Ví d :ụ

n = 10  (n%2==0): đúng ệ ệ  th c hi n l nh n++ = 10++ = 11

int n;

(n%2==0)? n ++ : n ­­;

n = 21  (n%2==0): sai  th c hi n l nh n­­ = 21­­ = 20 ệ ệ

ế

ế

 n u n = 10 thì giá tr  n = 11  n u n = 21 thì giá tr  n = 20

ế ế

ươ

Cho bi

ả t k t qu  đo n ch

ng trình sau:

int k;

m = (k%3==0)?k++: k­­;

ế V i k =10 K t qu : m = ?

ế V i k =15 K t qu : m = ?

53

Hàm xu t – System. Console

 Write (Xu t ra màn hình)

 WriteLine (Xu t xong xu ng dòng)

 Xu t không đ nh d ng

int a = 5;

double x = 7.534;

string s = "ABC";

Console.WriteLine("a = " +a);

Console.WriteLine("x = "+x+"; s = "+s);

54

Hàm xu t – System. Console

ấ ậ ị ạ Xu t có đ nh d ng th p phân

float x = 7.53489F;

double y = 5.6482;

Console.WriteLine("x = {0: 0.0000};

y = {1: 0.00} ", x, y);

ầ Tr n Minh Thái

55

ự ặ

ấ Xu t ký t

đ c bi

t

ượ

c “\”

ế

c

Ký t \’  \”  \\  \0  \a  \b  \f  \n  \r  \t

Ý nghĩa  ấ ơ D u nháy đ n  ấ D u nháy đôi  ấ D u chéo ng Null  Alert : Ti ng bip ề ướ Lùi v  tr Form feed  ố Xu ng dòng  ề ầ V  đ u dòng  ầ Tr n Minh Thái Tab ngang

56

Bài t p áp d ng

 Vi

ế ươ ẫ t ch ng trình in ra màn hình thông tin cá nhân theo m u sau:

Ho ten:

Lop:

Thong tin lien lac:

Dia chi:

So dien thoai:

Hàm nh p – System. Console

57

string s;

int n;

s = Console.ReadLine();

n = int.Parse(s);

Ho cặ

int n;

n = int.Parse(Console.ReadLine());

ầ Tr n Minh Thái

Hàm nh p – System. Console

58

ẫ M u chung:

 Bi n;ế

ế Bi n = .Parse(Console.ReadLine());

Ho c ặ

 Bi n;ế

ế Bi n = Convert.To(Console.ReadLine());

ầ Tr n Minh Thái

59

ế

ươ

t ch

ố ừ

ố ậ ng trình nh p vào s   VD Vi nguyên và in ra màn hình s  v a  nh pậ

int n;

n = int.Parse(Console.ReadLine());

Console.WriteLine(“So ban vua nhap la: “ + n);

60

Bài t p áp d ng

ậ ờ ấ ế ả ổ Nh p vào gi phút và giây, đ i ra giây và xu t k t qu  ra màn hình.

ủ ậ ộ ố ị ố Nh p  vào  3  s   nguyên  a,  b  và  c,  tính  giá  tr   trung  bình  c ng  c a  3  s

ấ ế ả trên và xu t k t qu  ra màn hình.

61

Thao tác trên Console

Console.WindowWidth

t

Cửa sổ Console Cửa sổ Console

i

(0, 0)

Cột

i

.

h g e H w o d n W e

l

D ò n g

o s n o C

ầ Tr n Minh Thái

62

Di chuy n d u nháy

ộ Console.SetCursorPosition(c t, dòng);

ấ ộ ỗ ị VD: Xu t chu i Hello v  trí dòng 20 và c t 10

Console.SetCursorPosition(10, 20);

Console.Write(“Hello”);

ầ Tr n Minh Thái

63

L y s  ng u nhiên

ươ

Ph

ứ ng th c

ị Mi n giá tr  phát sinh

Next()

[0…2,147,483,646]

Next(max)

[0…max ­1]

Next(min, max)

[min..max ­1]

ố ự ừ

NextDouble()

S  th c t

ế  0.0 đ n 1.0

ử ụ ớ S  d ng l p Random

ầ Tr n Minh Thái

int songaunhien;

double sothuc;

Random rd = new Random();

songaunhien = rd.Next();

Console.WriteLine(songaunhien);

songaunhien = rd.Next(100);

Console.WriteLine(songaunhien);

songaunhien = rd.Next(10, 100);

Console.WriteLine(songaunhien);

sothuc = rd.NextDouble();

64

Console.WriteLine(sothuc);

ầ Tr n Minh Thái

65

ờ ệ ố

L y ngày gi

h  th ng

ử ụ ớ S  d ng l p DateTime

ộ Thu c tính

Ý nghĩa

int iNg = d.Day; int iTh = d.Month; int iNm = d.Year; int iGio = d.Hour;         int iPhut = d.Minute; int iGiay = d.Second; int iMGiay = d.Millisecond; L y ph n ngàn c a

DateTime d = DateTime.Now

ấ L y ngày ấ L y tháng ấ L y năm ờ ấ L y gi ấ L y phút ấ L y giây ầ ấ giây

ầ Tr n Minh Thái

ấ Xác đ nh phím nh n trong Console

66

ConsoleKeyInfo  k = Console.ReadKey()

ế ể ị ượ ề ấ   N u  không  mu n  hi n  th   phím  đ ố ố c  nh n  thì  truy n  true  vào  tham  s

ươ ứ ph ng th c ReadKey:

ConsoleKeyInfo  k = Console.ReadKey(true)

ầ Tr n Minh Thái

ấ Xác đ nh phím nh n trong Console

67

ấ C u trúc ConsoleKeyInfo

ộ ứ ượ ấ ằ ị Thu c tính c nh n. Xác đ nh b ng cách so giá Key: Ch a tên phím đ

ị ớ tr  v i các phím trong ConsoleKey

ộ ế ượ ấ Thu c tính t phím c nh n Modifiers: Cho bi Ctrl, Shift ho c ặ Alt có đ

kèm

ầ Tr n Minh Thái

68

ấ Xác đ nh phím nh n trong Console

ượ

Xác  đ nh  phím  Ctrl,  Alt  hay  Shift  đ

c  nh n

b ng cách dùng phép toán AND (&) thu c tính

Modifiers v i :ớ

 ConsoleModifiers.Ctrl

 ConsoleModifiers.Alt

 ConsonleModifiers.Shift

ầ Tr n Minh Thái

ườ

VD Ki m tra xem ng

i dùng nh n phím A, Shift + A ho c phím

up arrow

ConsoleKeyInfo k; k = Console.ReadKey(true); switch(k.Key) {      case ConsoleKey.A:

if (k.Modifiers!=0 && (k.Modifiers&ConsoleModifiers.Shift)!=0)

Console.Write(“Ban nhan phim Shift + A”);

else

Console.Write(“Ban nhan phim A”);

break;

case ConsoleKey.UpArrow:

Console.Write(“Ban nhan phim mui ten huong len”); break;

default: Console.Write(“Ban nhan phim khac”); }

69

Ki m tra phím có nh n hay không?

70

ấ  Có nh n phím:

Console.KeyAvailable = true

ấ Không nh n phím:

Console.KeyAvailable = false

ầ Tr n Minh Thái

ị ờ ệ ố

ế

h  th ng cho đ n khi nh n phím b t

Hi n th  gi 71 kỳ

while (!Console.KeyAvailable)

{

DateTime d = DateTime.Now;

Console.Write("{0:00}:{1:00}:{2:00}",

d.Hour, d.Minute, d.Second);

Thread.Sleep(1000); //using

System.Threading;

Console.Clear();

}

ầ Tr n Minh Thái

72

ế ậ

Thi

t l p màu

ề  Màu n n c a ch

Console.BackgroundColor = h ng s  màu;

VD: Console.BackgroundColor =

ConsoleColor.Green;

 Màu chữ

Console.ForegroundColor = h ng s  màu;

VD: Console.ForegroundColor = ConsoleColor.Red;

 Xóa n i dung c a s  console: Console.Clear();

ầ Tr n Minh Thái

73

ố H ng s  màu

Các h ng s  màu

ố ConsoleColor.DarkRed ConsoleColor.DarkYellow ConsoleColor.Gray ConsoleColor.Green ConsoleColor.Magenta ConsoleColor.Red ConsoleColor.White

ConsoleColor.Black ConsoleColor.Blue ConsoleColor.Cyan ConsoleColor.DarkBlue ConsoleColor.DarkCyan ConsoleColor.DarkGray ConsoleColor.DarkGreen ConsoleColor.DarkMagenta ConsoleColor.Yellow

74

ấ n hi n d u nháy

Ẩ ấ n d u nháy

Console.CursorVisible = false;

 Hi n d u nháy

ệ ấ

Console.CursorVisible = true;

ị ờ ề ớ ể VD: Hi n  th  gi phút giây trên màn hình v i màu n n là màu xanh và màu

ỏ ữ ch  là đ

ầ Tr n Minh Thái

Console.CursorVisible = false;

ConsoleColor mauchu = Console.ForegroundColor;

ConsoleColor maunen = Console.BackgroundColor;

Console.BackgroundColor = ConsoleColor.Green;

while (!Console.KeyAvailable)

{

Console.ForegroundColor = ConsoleColor.Red;

DateTime d = DateTime.Now;

Console.SetCursorPosition(5, 5);

Console.Write("{0:00}:{1:00}:{2:00}", d.Hour, d.Minute,  d.Second);

Thread.Sleep(1000); //using System.Threading;

Console.ForegroundColor = Console.BackgroundColor;

Console.SetCursorPosition(5, 5);

75

}

Tr n Minh Thái      Console.Write("{0:00}:{1:00}:{2:00}", d.Hour, d.Minute,  d.Second);

76

Qui t c đ t tên

ể ặ

ế

Dùng đ  đ t tên bi n, tên h ng, tên  hàm, …

ắ ầ

.

ữ ố

ướ

ằ  B t đ u b ng m t ký t ể ế ự  trong tên bi n ch  có th  là   Các ký t ặ ự  ch , s  ho c d u g ch  các ký t i (_) d

ượ

 Không đ

khoá.

ượ

c trùng v i các t ạ

c trùng v i ph m vi khai

 Không đ báo.

ễ ể

 Tên d  hi u, súc tích và g i nh .

ườ

 Phân bi

t ch  hoa và th

ng

 Main

ợ ệ ị Các đ nh danh nào sau đây là không h p l ?

Tinh Tong

Tinh­Tong

Tinh_Tong

x_Mu_2

2_Mu_2

using

class

Tien$

default

yahoo.com

77

78

Khai báo bi nế

ữ ệ

ế

Cú pháp ể  tênbi n; Ví d : ụ

ể ư

ế

ố int a; //Khai báo bi n đ  l u s   nguyên tên a

ố ự

ể ư

float c; //Khai báo bi n đ  l u s  th c tên  ế c

ế

Khai báo nhi u bi n cùng ki u

ữ ệ

ế

ế

 tênbi n1, tênbi n2,  tênbi n3;ế

Ví d :ụ

int a, x, y;

79

ở Khai báo và kh i gán giá tr  ban

ế

đ u cho bi n

ữ ệ

ế

 tênbi n = giá tr ;

Ví d :ụ

int a = 5;

float b = 5.4, c = 9.2;

char ch = ‘n’;

80

ạ ằ Các lo i h ng s

 H ng s : Đó là các giá tr  xác đ nh, m t h ng s  có th  là

ể ố ị

ộ ằ ể ố ữ ệ nguyên (có ki u ể ị th c ự (có  ki u  d   li u  là  float,  double,  long

ằ ữ ệ d   li u  int,  hay  long  int)  hay  double)

ự ượ ụ ấ ặ ơ ươ ứ ớ : Đ c đ t trong d u nháy đ n. Ví d : 'A', 'a' t ng  ng v i giá

ằ  H ng ký t ị ả tr  nguyên 65, 97 trong b ng mã ASCII

 H ng chu i: Là t p h p các ký t

ợ ặ ặ ỗ ự ượ  đ ấ c đ t trong c p d u nháy kép " ". Ví

ằ ụ ậ d : “Lap trinh C#”

81

ươ

Cách trình bày ch

ng trình

ỗ ệ

 M i  l nh  n m  trên  m t  dòng.  Cu i  dòng

l nh ệ

PH IẢ  có d u ch m ph y (;)

ể ượ

ế

 L nh  quá  dài  có  th   đ

c  vi

t  thành  nhi u

ỗ ệ

ả ượ

dòng sao cho m i l nh ph i  đ

c quan sát

ổ ệ

tr n v n trong pham vi c a s  l nh

82

ươ

Cách trình bày ch

ng trình

(tt)

ề ệ ả

ế

ộ ế

ủ ố ệ

ươ

ấ ng trình phân c p các kh i l nh

 Không nên đ t nhi u l nh trên cùng  m t  dòng,  ngay  c   các  khai  báo  ế bi n,  n u  các  bi n  có  khác  ki u  cũng  nên  đ t  trên  các  dòng  khác  nhau.  Có các chú thích, ghi chú đ y đầ  Ch ộ con theo t ng c t

83

ườ

ế

ươ

i th

ng g p khi vi

t ch

ng

ỗ Các l trình

ử ụ

ế

 KHÔNG  khai  báo  các  bi n  s   d ng  trong

ươ

ch

ng trình

ư

ư

ế

 L u  m t  giá  tr   vào  m t  bi n  nh ng

ữ ệ

ế

ể KHÔNG cùng ki u d  li u v i bi n

ử ụ

ế

 S   d ng  bi n  trong  m t  bi u  th c  khi

CH AƯ  có giá trị

84

ườ

ế

ươ

i th

ng g p khi vi

t ch

ng

ể ố

ỗ Các l trình

 Dùng phép chia KHÔNG ép ki u cho s  nguyên

Ví d : ụ

float kq = 3.2 + 2/3 + 1.5;

ẽ ằ thì kq s  b ng 4.7

thay vì

float kq = 3.2 + (float)2/3 + 1.5;

ẽ ằ thì kq s  b ng 5.36666666666667

85

Bài t p v  nhà

ế

ươ

 Vi

t ch

ng trình cho phép nh p vào m t

s   đo  nhi

t  đ   theo  đ   Fahrenheit  và

xu t  ra  nhi

t  đ   t

ủ ng  c a  nó  )32

ộ ươ 0 C ử theo  đ   Celsius,  s   d ng  công  th c

ươ ng  đ 5 0 F ( ụ 9

ổ ể chuy n đ i:

ế

ươ

 Vi

t  ch

ng  trình  nh p  vào  3  s   nguyên

ế

ố ừ

a, b và c, cho bi

t 3 s  v a nh p có th

ấ ế

t

tăng d n

ầ  (a

(cid:0) (cid:0)

86

Q&A