Ả BU I 2 :Ổ Ề Ơ Ấ CÁC V N Đ  C   Ủ B N C A C#

01/14/16

Các thành phần của C#

01/14/16

Có thể tìm hiểu thêm trong các giáo

Danh hi uệ Là tên do NSD đặt ra để gọi tên các lớp, hàm/phương thức, biến/thuộc tính, hằng,….

trình, taì liệu

Trước mắt có thể sử dụng 1 số qui định tương tự như Pascal để dễ dàng trong việc viết chương trình Lưu ý : C/C++/C#/Java phân biệt chữ thường/hoa

01/14/16

ừ T  khóa Không nhiều từ khóa Các từ khóa đều ở dạng chữ

thường

Tương tự như Pascal, các từ

khóa thường là các phát biểu điều khiển, kiểu dữ liệu,…..

Ví dụ if else do while int long

try catch checked ………...

01/14/16

ế Khai báo bi n !!! Nếu khai báo trong 1 hàm : biến Nếu khai báo ngoài hàm nhưng

nằm trong 1 lớp : không phải là biến

Cú pháp khai báo

;

Thường thì nên kết hợp khai báo với khởi động giá trị ban đầu cho biến

=;

01/14/16

ế Khai báo bi n !!!

int k ; int j = 1, k; float f = 12.3f; double d =23.777; char c = ‘Y’; bool b = true; string s1, s2=“Hello”,s3=“World”;

01/14/16

Trong giai đoạn đầu, luôn khai báo

ế Khai báo bi n !!!

các biến trong hàm Main

Có thể khai báo biến ở vị trí bất kỳ

trong hàm

Phạm vi và tầm vực ảnh hưởng của

biến : nằm trong khối chứa nó Tốt nhất : khai báo các biến ngay

phần đầu hàm Main()

01/14/16

Khai báo bi n !!!

ế Không khai báo biến ở đây !!!!

class

Khai báo biến ở đây sẽ có ý nghĩa khác !!!!

{ static public void Main( )

{

Khai báo biến trong đây !!

}

}

01/14/16

ế Khai báo bi n !!!

static public void Main(String[ ] s) { int i= 0; ……….. // i int k = 2; ………. // i và k If ( ….) ………….{

int i = 1; ………… // i và k int j = 2; ……….. // i và k, j } …………. // i và k }

Tham khảo thêm trong C/C++/C#

01/14/16

ằ Khai báo h ng !!! Tương tự như biến : có ý nghĩa

khác nhau nếu khai báo ở các vị trí khác nhau

Không khai báo hằng ở đây !!!!

class

{

Khai báo hằng ở đây sẽ có ý nghĩa khác !!!!

static public void Main( )

{

Khai báo hằng trong đây !!

}

}

01/14/16

Khai báo h ng !!! Cú pháp

const = ;

Ví dụ

const int THISYEAR = 2006; const float LAISUAT = 0.0085f; const double GIATOC = 9.81; const char YES = ‘Y’; const string Hello = “Hello”;

01/14/16

01/14/16

ẩ ể ữ ệ Các ki u d  li u chu n

ể ữ ệ ầ

Các ki u d  li u c n  nh !!!ớ  Kiểu nguyên int (tương tự như integer trong

Pascal) và lớp tương đương Int32

 Kiểu thực float (tương tự như real trong Pascal)

và lớp tương đương Float

 Kiểu ký tự char (tương tự như char trong

Pascal) và lớp tương đương Char

 Kiểu logic bool (tương tự như boolean trong

Pascal) và lớp tương đương Boolean

 Kiểu chuỗi string (tương tự như string trong

Pascal) và lớp tương đương String

01/14/16

Khai báo Nên khai báo và khởi tạo giá trị ban

đầu

int i, j=2, k = 2*j; // i??? float f=11.56 ; // lỗi!ngầm hiểu double float g = 23.72f; char yes=‘Y’; //dùng nháy đơn bool male=true; string hello=“Hello!”;//nháy kép

01/14/16

ơ ả Các phép toán c  b n

Các phép toán số học + - * / %

Cộng Trừ Nhân Chia Chia lấy phần dư

Lưu ý : Phép chia (/) 2 số nguyên sẽ

“chặt” bỏ phần dư

01/14/16

ơ ả

Các phép toán c  b n Ví dụ

int a = 17 , b= 3; int c = a / b ; // c = 5 int d = a % b ; // d = 2 float e = (float)a / b ; // e = 5.6667 float f = a /(float)b ; // f = 5.6667

Ép kiểu (Type Casting)

float f ; int i ; ……; f=i; i= (int)f;

01/14/16

Các phép toán so sánh số học

ơ ả Các phép toán c  b n

Bằng Khác nhau Lớn hơn, lớn hơn hay bằng Nhỏ hơn, nhỏ hơn hay bằng

== != > >= < <=

Lưu ý Thường hay quên và lầm lẫn giữa =

và ==

01/14/16

Các phép toán trên kiểu chuỗi

ơ ả Các phép toán c  b n

Ghép chuỗi So sánh bằng nhau So sánh khác nhau

+ == !=

Lưu ý : không thể dùng các phép so sánh >, >=, <, <= trên 2 chuỗi

01/14/16

Các phép toán logic

ơ ả Các phép toán c  b n

Và Hoặc Phủ định

&& || !

01/14/16

Một số phép toán khác (đặc biệt!!!)

ơ ả Các phép toán c  b n

Tự tăng Tự giảm

++ - -

Ví dụ

Thay vì ghi i = i+1; thì ghi i++; Thay vì ghi j = j - 1; thì ghi j --;

Nếu không quen thuộc thì hạn chế sử dụng!!!

01/14/16

ơ ả

Các phép toán c  b n Lưu ý thêm

++ : Tăng thêm 1, sau đó sử

dụng giá trị

++ : Sử dụng giá trị, sau đó

tăng thêm 1

Ví dụ int a=0, b=5; a = b++; // a=5 và b=6 int a=0, b=5; a=++b ; // a=6 va b=6

Tương tự cho --

01/14/16

Các phép toán rút gọn !!!!

ơ ả Các phép toán c  b n

Thay vì a = a + b ; thì viết a += b; Thay vì a = a - b ; thì viết a -= b; Thay vì a = a * b ; thì viết a *= b; Thay vì a = a / b ; thì viết a /= b; Thay vì a = a % b ; thì viết a %= b;

Nếu không quen thuộc thì hạn chế sử dụng!!!

01/14/16

ơ ả

Các phép toán c  b n Phép toán điều kiện: hiệu quả, tiện lợi, tương tự hàm IF(Excel), IIF(Fox) <điều kiện>?:;

Ví dụ a = b<=5&&c>=10? b + 1 : c-2 ; String s1= s=="abc"?"zyz":"123"; Console.WriteLine(“Kq={0}”,a>b?a:b); z=a>b?(a>c?a:c):(b>c?b:c);

Nên sử dụng tối đa !!!!

01/14/16

ườ

ộ ố ươ

ng

ứ ng th c th

M t s  ph dùng Trong thời gian đầu, luôn khai báo using System; ở dòng đầu tiên của chương trình (có thể hình dung tương tự như uses crt; trong Pascal !!!)

Các phương thức thường dùng và

cần sử dụng thành thạo :

01/14/16

ộ ố ươ

ườ

ứ ng th c th

ng

M t s  ph dùng In dữ liệu ra màn hình : dùng

Console.Write và Console.WriteLine Có khoảng 18 cách sử dụng khác nhau!! Console.Write( chuỗi ); Console.Write(chuỗi định dạng , dstham số); Ví dụ int i=5; String s=“abcd”; Console.WriteLine(i); Console.Write( s + s + i ); Console.Write( “{0} {1} {2}”,s,s,i);

01/14/16

ộ ố ươ

ườ

ứ ng th c th

ng  M t s  ph dùngNhập dữ liệu từ bàn phím: dùng

Console.ReadLine() Lưu ý là kết quả nhận được là 1 chuỗi, do vậy cần phải chuyển đổi nếu cần thiết Ví dụ String hoten=“”; wnamsinh=“”; hoten = Console.ReadLine(); wnamsinh=Console.ReadLine(); //sau đó chuyển sang số nguyên !!!

01/14/16

ộ ố ươ

ứ ng th c th

ng

ườ M t s  ph dùngMột số phương thức toán học

Math.Abs(biểu thức số) Math.Sqrt(biểu thức số) Math.Ceiling(biểu thức số) Math.Floor(biểu thức số) Math.Max(biểu thức số) Math.Min(biểu thức số) Math.Round(biểu thức số) hằng số Math.PI và Math.E

01/14/16

ộ ố ươ

ườ

ứ ng th c th

ng

M t s  ph dùng Ví dụ

float R=12.6; float S = R*R*Math.PI;

int a,b,c,d; //Nhập 4 số a,b,c và d Console.Write(Math.Max(a,Math.Max (b,Math.Max(c,d))));

01/14/16

ộ ố ươ

ườ

ứ ng th c th

ng  M t s  ph dùngChuyển đổi kiểu chuỗi sang các

kiểu dữ liệu khác Từ chuỗi sang số thực (dạng float)

Single.Parse(chuỗi)

Ví dụ

string s; s="123.45"; float f = Single.Parse( s);

Từ chuỗi sang số thực (dạng double) Ví dụ string s="3.45";

double d = Double.Parse(s);

01/14/16

ộ ố ươ

ườ

ứ ng th c th

ng

M t s  ph dùng

Từ chuỗi sang số nguyên

String s="45"; short i = Int16.Parse(s); int j = Int32.Parse(s); long k = Int64.Parse(s);

String wns = “”; Console.Write(“Nhap nam sinh : “); wns=Console.ReadLine(); int ns = Int32.Parse(wns); // hay int ns=Int32.Parse(Console.ReadLine());

01/14/16

ộ ố ươ

ườ

ứ ng th c th

ng  M t s  ph dùngChuyển đổi kiểu dữ liệu số sang

kiểu chuỗi

Nguyên tắc

.ToString( ) ;

Ví dụ int i = 231 ; float j = 34.56f ; //ngầm định là double !!! String kq; kq = " i= "+ i.ToString() + " va j = "+ j.ToString();

Console.WriteLine(kq);

01/14/16

ộ ố ươ

ườ

ứ ng th c th

ng

M t s  ph dùng

int i = 231 ; float j = 34.56f ; //ngầm định là double !!! Console.WriteLine(" i= “ + i + " va j = “ + j); Chuyển đổi tương tự cho các kiểu bool

và char bool b= true; char yes=‘Y’; string s1 = b.ToString( ) ; // s1 = “True” string s2 = yes.ToString( ); // s2 = “Y”; Console.Write( b + yes ); //lỗi !!! Console.Write (b + “” + yes);

01/14/16

ộ ố ươ

ườ

ứ ng th c th

ng  M t s  ph dùngMột số phương thức của kiểu chuỗi

.ToLower( ); .ToUpper( ); .Substring(vị trí, số ký tự); .Length ; //không có ( và ) [ vị trí ] Ví dụ string S = “hello woRld”; string u = S.ToUpper(); char c = S[1]; // c = ‘e’ int l = S.Substring(0,4).Length ; //thay vì ghi (S.Substring(0,4)).Length

01/14/16

ả ử ụ

Thao kh o và s  d ng  thêmLớp System.Int32, System.Single,

System.String, System.Character, System.Boolean

01/14/16

ể Đi u khi n màn hình Lớp System.Console Có 1 số thuộc tính sau

Console.ForegroundColor= ; Console.BackgroundColor=; Console.CursorVisible = ; Console.CursorSize=; Console.CapsLock =; Console.NumberLock =; Console.Title = ;

Màu :

ConsoleColor.

01/14/16

01/14/16

ề ể Đi u khi n màn hình

ề ể

Đi u khi n màn hình Các phương thức

Console.Clear ( ); Console.Beep ( ); Console.Beep (tần số, thời gian-ms) ; Console.SetCursorPosition (cột, hàng); Console.SetWindowSize( rộng, cao ); Console.ResetColor ( ); Console.ReadKey( ) ;

 Lưu ý Console.ReadKey( ) trả về 1 giá trị kiểu

ConsoleKeyInfo

 Trừ Console.ReadKey( ), tất cả các phương thức

trên có dạng “thủ tục” (void)

01/14/16

ể ề

Đi u khi n màn hình Console.Title = “Xin chao cac ban !”; Console.CursorSize = 80; Console.CapsLock=true; Console.Clear( ); Console.SetCursorPosition (15,5); Console.Beep(1000,2000); Console.WriteLine(“An 1 phim di !!”); ConsoleKeyInfo cik =

Console.ReadKey( );

Chương trình ViDu1_12.cs

01/14/16