1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng Kỹ thuật lập trình: Chương 2 - ThS. Phạm Thanh An

32 626 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 32
Dung lượng 0,95 MB

Nội dung

Bài giảng Kỹ thuật lập trình: Chương 2 - ThS. Phạm Thanh An

Trang 1

Chương 2

Nền tảng ngôn ngữ C#

Giảng viên: ThS Phạm Thanh An

Khoa công nghệ thông tin

Đại học Ngân hàng Tp Hồ Chí Minh

Nội dung trình bày

Mô tả kiểu dữ liệu trong C#

String Array ValueType Exception Delegate Class1

Multicast Delegate Class2

Class3 Object

Enum1

Structure1 Enum

Trang 2

Kiểu dữ liệu

 C# là một ngữ mạnh về kiểu dữ liệu

 Phải khai báo kiểu của mỗi biến, đối tượng khi

sử dụng

integer, float, string, byte, buttons, v.v

 C# chia thành hai tập hợp kiểu dữ liệu chính:

Kiểu xây dựng sẵn (built- in)

Kiểu được người dùng định nghĩa (user-defined)

do người lập trình tạo ra (lớp, struct, v.v).

Kiểu dữ liệu tham chiếu (reference type):

classes, interfaces, arrays và strings

Kiểu dữ liệu xây dựng sẵn

ushort 2 Uint16 Số nguyên không dấu 0 – 65.535

int 4 Int32 Số nguyên có dấu –2.147.483.647 và

2.147.483.647

int val = 12;

uint 4 Uint32 Số nguyên không dấu 0 –

4.294.967.295

Trang 3

Kiểu dữ liệu xây dựng sẵn (tt)

sbyte 1 Sbyte Số nguyên có dấu ( từ -128 đến 127)

byte 1 Số nguyên không dấu từ 0 - 255

long 8 Int64 Kiểu số nguyên có dấu có giá trị trong

khoảng : -9.223.370.036.854.775.808 đến 9.223.372.036.854.775.807ulong 8 Uint64 Số nguyên không dấu từ 0 đến

float 4 Single Kiểu dấu chấm động, giá trị xấp xỉ từ

3,4E-38 đến 3,4E+38, với 7 chữ số

có nghĩa Có thêm hậu tố F sau giá trị

float val = 1.23F;

double 8 Double Kiểu dấu chấm động có độ chính xác

gấp đôi, giá trị xấp xỉ 1.7E308 1.7E+308, với 15,16 chữ số có nghĩadecimal 8 Decimal Chính xác đến 28 con số và giá trị

-thập phân, được dùng trong tính toán tài chính, đòi hỏi hầu tố “m” hay “M”

theo sau giá trị

Kiểu dữ liệu xây dựng sẵn (tt)

bool 1 Boolean Giá trị logic true/ false bool val1 = true;

bool val2 = false;

char 2 Char Ký tự Unicdoe char val = 'h';

Trang 4

Kiểu dữ liệu xây dựng sẵn (tt)

Ghi chú:

Kiểu giá trị logic chỉ có thể nhận được giá trị là true hay

false

Khác với C/C++, một giá trị nguyên không thể gán vào

một biến kiểu logic trong C# và không có bất cứ chuyển

đổi ngầm định nào

Biên dịch: xuất hiện lỗi

Error CS0029 : Cannot implicitly convert type 'int' to 'bool '

Kiểu dữ liệu xây dựng sẵn (tt)

 Kiểu dữ liệu ký tự thể hiện các ký tự Unicode

Bao gồm các ký tự đơn giản, ký tự theo mã Unicode

và các ký tự thoát khác được bao trong những dấu

nháy đơn

Ký tự thoát là những ký tự đặc biệt bao gồm hai ký tự

liên tiếp trong đó ký tự dầu tiên là dấu chéo ‘\’ Ví dụ,

Trang 5

\r Đầu dòng (Carriage return)

\t Tab ngang (Horizontal tab)

\v Tab dọc (Vertical tab)

Chuyển đổi kiểu dữ liệu

 Chuyển đổi kiểu dữ liệu này qua kiểu dữ liệ khác

 Có 2 cách: chuyển đổi tường minh và ngầm định

Chuyển đổi ngầm định được thực hiện một cách tự

động đảm bảo là không mất thông tin.

Từ kiểu nhỏ sang kiểu lớn

short x = 10;

int y = x; // chuyển đổi ngầm định

Trường hợp này không thực hiện

short x;

int y = 100;

x = y;// Không biên dịch, lỗi !!!

Trang 6

Chuyển đổi kiểu dữ liệu (tt)

short x;

int y = 500;

x = (short) y; // Ép kiểu tường minh, trình biên dịch không báo lỗi

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

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

short int, long, float, double, decimal

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

int long, float, double, decimal

uint long, ulong, float, double, decimal

long, ulong float, double, decimal

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

Chuyển đổi tường mình

Ép từ kiểu lớn qua kiểu nhỏ: có thể mất giá trị

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

Trang 7

Console.WriteLine (“Result is {0} when 100

is multiplied by number {1}”, result, number);

Chuyển đổi tường minh

Chuyển đổi tường minh

Trang 8

Input / Output trong C#

 Sử dụng các phương thức của lớp Console

trong không gian tên System

Console.ReadLine()

Console.WriteLine()

Định danh

Là tên mà người lập trình chỉ định cho các kiểu dữ

liệu, các phương thức, tên biến, hằng, lớp hay đối

tượng

Định danh không trùng với từ khóa của C#

Định danh phải bắt đầu với một ký tự chữ cái hay dấu

gạch dưới,

 các ký tự còn lại phải là ký tự chữ cái, chữ số, dấu gạch dưới

C# phân biệt chữ hoa và chữ thường

Ví dụ:

 Định danh đúng: result , _score, footballTeam, plan9

 Định danh sai: result%, footballTeam$, 9plan

Các từ khóa của C#

Các từ khóa trong C#

Trang 9

Nằm trong bộ nhớ vật lý (physical RAM)

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

Định danh: tên để đại diện cho biến

Kiểu dữ liệu: dạng lưu trữ dữ liệu của biến

Biến (tt)

 Bạn có thể khai báo kết hợp khởi đầu giá trị

cho biến

 Tên biến không được trùng với từ khóa của

C#, nếu muốn sử dụng từ khóa làm tên biến

phải thêm @ trước từ khóa

 Khai báo biến:

<Kiểu> tên biến ;

int tuoi;

tuoi = 21 ;Console.WriteLine(tuoi);

Ví dụ

Trang 10

Ví dụ: về khai báo biến

Output: Khởi đầu, myInt: 7 sau khi gán, myInt: 5

Ví dụ: sử dụng từ khóa làm tên biến

<const> <type> <tên hằng> = <giá trị>;

const int DoSoi = 100; // Độ C

const int DoDong = 0; // Độ C

System.Console.WriteLine( “Do dong cua nuoc {0}”, DoDong );

System.Console.WriteLine( “Do soi cua nuoc {0}”, DoSoi );

Trang 11

 Trong C#, những khoảng trắng, tab và các

dòng được xem như là khoảng trắng

Trang 12

Sử dụng từ khóa phân nhánh : goto, break,

continue, return, throw

Phân nhánh có điều kiện

{ static void Main( )

{ Console.WriteLine(“Trong Main! Gọi hàm SomeMethod( ) ");

SomeMethod( );

Console.WriteLine(“Quay về Main( ).");

}

static void SomeMethod( )

{ Console.WriteLine(“Xin chao tu SomeMethod!");

}

}

}

Trang 14

if ( i < 10 )goto lap; // nhãy về nhãn lapreturn 0;

}}

Trang 15

 Thực hiện câu lệnh trong khi điều kiện vẫn còn đúng

 Câu lệnh break sẽ thoát ngay khỏi vòng lặp

 Câu lệnh continue sẽ bỏ qua lần lặp hiện tại và thực

hiện lần lặp tiếp theo

{0}”,i);

i++;

} while ( i < 10 )return 0;

}}

Trang 16

Console.WriteLine(“{0} ”,i);

} else { Console.Write(“{0} ”,i);

}return 0;

Trang 17

khi chia hai số nguyên : 17/4 = 4

Chia cho số thực có kiểu như float, double, hay

decimal thì kết quả chia được trả về là một số

thực.

Toán tử chia dư (%) : 17%4 = 1

Trang 18

var1 = ++var2; // var1 = 11, var2 = 11

var1 = var2++; //var1 = 10 , var2 = 11

Trang 19

Toán tử quan hệ

Toán tử logic

Độ ưu tiên toán tử

Một ngôi

Trang 20

Độ ưu tiên toán tử

Nhằm tránh sự xung đột về tên, giúp cho

việc sử dụng các thư viện khác nhau từ các

nhà cung cấp

Giảm bớt độ phức tạp khi sử dụng lại mã

cho ứng dụng khác

C# đưa ra từ khóa using đề khai báo sử

dụng namespace trong chương trình:

Trang 21

class WalkMan{ }

}

namespace Sony

{class Television{ }

class Walkman{ }

}class T21inches{

}}

Trang 23

public T21inches(){

Console.WriteLine ("A

21 inches Television");

}}}//end of namespace Television

}//end of namespace Sony

T14inches Television = new T14inches();

T21inches Television2 = new T21inches();

Trang 25

Ví dụ: Khai báo khác khối

public class Tester { public static int Main() {

Demo1.Example1.Show1();

return 0;

} } } // end Demo2}// end MyLib

Ví dụ: Khai báo khác khối

 Lớp Example2 có cùng namespace MyLib.Demo1 với lớp

Example1 nhưng hai khai báo không cùng một khối

Xử lý ngoại lệ (exception handling)

Đọc một file trên đĩa, nhưng file đã bị xóa

 Chia cho số 0

trước được các tình huống có thẻ gây

ra bởi 1 lỗi nào đó

và bắt các lỗi có thể xảy ra trong một

chương trình

Trang 26

Phát sinh và bắt giữ ngoại lệ

đối tượng ngoại lệ

Kiểu dữ liệu là System.Exception, hay những

đối tượng được dẫn xuất từ kiểu dữ liệu này.

 throw new System.Exception();

 throw new IOException();

Phát sinh và bắt giữ ngoại lệ (tt)

 Khi gặp ngoại lệ, thì sẽ làm ngừng việc thực

thi câu lệnh tiếp theo, CLR sẽ tìm kiếm một

trình xử lý ngoại lệ

 Nếu trình xử lý ngoại lệ không được tìm thấy

trong phương thức hiện thời, thì CLR tiếp tục

tìm trong phương thức gọi cho đến khi nào tìm

thấy.

 Nếu CLR trả về lớp Main() mà không tìm thấy

bất cứ trình xử lý ngoại lệ nào, thì nó sẽ kết

thúc chương trình.

Trang 27

Sử dụng khối try … catch

 Có thể có nhiều khối catch

 Khối Finally có thể có hoặc không

 Khối finally luôn được thực hiện dù có lỗi xảy hay không

Ví dụ

Khối try … catch

 Bắt đầu thực hiện câu lệnh trong khối try

 Nếu không có lỗi xuất hiện, việc thực thi tiến

hành cho đến cuối khối try, chuyển đến khối

finally

 Nếu có một lỗi xuất hiện trong khối try, thực

thi sẽ nhảy đến một trong các khối catch

 Vào cuối của khối catch , việc thực thi được

chuyển khối finally

 Khối finally được thực thi (có thể có hoặc

không)

Trang 28

userInput = Convert.ToInt32 (Console.ReadLine());

quotient = divident /userInput;

Console.WriteLine("The Integer Quotient

of 50 divided by {0} is {1}", userInput, quotient);

}

}

}

}

Trang 29

Ví dụ

các ngoại lệ

Kiểu giá trị và kiểu tham chiếu

bản

- int, char and structures

- classes, interfaces, arrays and strings

Kiểu giá trị và kiểu tham chiếu

 Lưu một giá trị trong trong bộ nhớ

Trang 31

Lưu ý

thừa từ kiểu object, định nghĩa trong

namespace system

Convert Class

Ví dụ: sử dụng lớp Convert

Trang 32

Thank you all for your attention and patient !

Ngày đăng: 27/05/2014, 14:58

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w