Tải bản đầy đủ (.ppt) (37 trang)

Bài 2: Các kiểu dữ liệu - Khai báo biên

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (404.42 KB, 37 trang )


LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
Bài 2 Các kiểu dữ liệu-Khai báo biến
Nội dung
- Các kiểu dữ liệu: giá trị , tham chiếu
- Khai báo biến : qui tắc, cách đặt tên
- Các kiểu dữ liệu cơ bản

Các kiểu dữ liệu

C# cung cấp 2 kiểu thể hiện dữ liệu

Kiểu dữ liệu có sẵn – chuẩn . Ví dụ kiểu số
nguyên : có thể lưu trữ 1 giá trị số nguyên.
Ngoài thông tin lưu trữ ra , các biến kiểu này
không có thêm bất kỳ thông tin nào khác

Kiểu do NSD định nghĩa , thường gọi là lớp
(class): có thể chứa thông tin cùng nhiều
nhiều thông tin khác

Các kiểu dữ liệu(tt)

Ví dụ : Có thể xây dựng 1 lớp để thể hiện lớp
mèo nhà , trong lớp này, ta có những thông
tin như : tuổi, màu lông. Cũng tropng lớp
này, ta lại mô tả những khả năng của lớp
mèo như : kêu meo meo, ăn hay ngủ.

Các khả năng của 1 lớp  thiết kế và thi
công : gọi là phương thức của 1 lớp.



Kiểu do NSD định nghĩa bao gồm các lớp và
giao diện do người lập trỉnh xây dựng và
đóng góp thêm vào thư viện .NET Framework

Cách lưu trữ và truy xuất dữ liệu

Kiểu dữ liệu giá trị : lưu trữ trên stack, biến
chứa giá trị trong chính nó

Kiểu dữ liệu tham chiếu: có 2 phần phần
tham chiếu (con trỏ, số hiệu – handle) chứa
trên stack, bản thân thông tin đối tượng lưu
trữ trên heap (do C# quản lý). Phần tham
chiếu  chứa địa chỉ của đối tượng trên heap

Satck được C# quản lý nhằm chứa tất cả các
biến được tạo ra trong chương trình

Biến lưu trên heap được tạo bởi lập trình viên
bằng cách sử dụng toán tử “new”

Lưu trữ biến trên stack và heap

Biến kiểu nguyên (integer : kiểu giá trị) ,biến
kiểu chuổi (string : kiểu tham chiếu), biến ký
tự (kiểu giá trị)

Sao chép dữ liệu – phép gán


Ngoài sự khác biệt về việc lưu trữ thông tin,
kiểu giá trị và tham chiếu còn có khác biệt cơ
bản trong thao tác “sao chép”

Khi 1 biến kiểu giá trị đưọc gán bởi 1 biến
khác : Giá trị lưu trữ sẽ được sao chép từ
biến này sang biến kia.

Deep Copy

Cả 2 biến count1 và count2 đều có dữ
liệu riêng của chúng, trong trường hợp
này là 5. Vùng dữ liệu của 2 biến độc
lập nhau. Nghĩa là nếu gán 6 cho
count1 thì count2 vẫn có giá trị 5

Kiểu sao chép này được gọi là “deep
copy” (sao chép sâu): Giá trị, thông tin
của biến dữ liệu được sao chép.

Shallow Copy

Các biến tham chiếu thực hiện lệnh gán theo
1 cách khác

Lưu ý là kiêu tham chiếu gồm 2 thành
phần : dữ liệu thực sử trên heap và địa chỉ
tham chiếu đến vùng dữ liệu này chứa trong
stack.


Khi gán 1 biến tham chiếu này cho biến
tham chiếu khác : chỉ sao chép địa chỉ tham
chiếu mà thôi  cả 2 biến đều tham chiếu
đến cùng 1 vùng dữ liệu trên heap(shallow
copy).

Ví dụ

Ví dụ lệnh gán

Ví dụ lệnh gán

Ví dụ (phép gán với biến class)
class Point
{
public int x,y;
public Point(int u, int v){x=u;y=v;}
}

public class VD4
{
static public void Main()
{
Point a=new Point (1,2);
Point b=new Point (3,4);
Point c=new Point (1,2);
Console.WriteLine("a = b > {0}", a= =b);
Console.WriteLine("a = c > {0}", a= =c);

b=a;

Console.WriteLine("a = b > {0}", a==b);
a.x++;
b.y ;
Console.WriteLine("a({0},{1}) b({2},
{3})",a.x,a.y,b.x,b.y);
Console.ReadLine();
}
}
Demo2.VD4

Khai báo biến

Phần trình bày tiếp theo sẽ đề cập
đến các vấn đề sau

Khai báo, sử dụng các kiểu có sẵn

Các qui tắc, các gợi ý khi khai báo
và đật tên biến

Một số hiệu ứng khi thực hiện
phép toán gán (=)

Như đã nói ở phần trên các kiểu
built-in là các kiểu giá trị: 1 biến
kiểu này có thể xem như 1 vùng
nhớ chứa trực tiếp giá trị dữ liệu

Khai báo biến (tt)


int count = 5;
float temperature = 99.5F;

Giá trị kiểu float  phải theo sau bằng ký tự "F".
Nếu không : hiểu là “doubles”

Kiểu double cũng chứa giá trị số thực nhưng có
phạm vì biểu diễn rộng hơn và có độ chính xác cao
hơn

Ví dụ
static public void Main()
{
float x=23.12345678F, y=23.12345679F;
double x1=23.12345678, y1=23.12345679;
Console.WriteLine(x= =y);
Console.WriteLine(x1= =y1);
Console.ReadLine();
}

Demo2.VD2

Lưu trữ biến giá trị

Tóm lại : biến kiểu giá trị là 1 vùng bộ nhớ chứa
dữ liệu của chính nó cùng với 1 tên mô tả

Qui tắc đặt tên biến

Vấn đề : tên phải đặt sao cho hợp lệ và

có tính gợi nhớ, tránh sai sót

Qui tắc đật tên trong C#
Tên (danh hiệu) bao gồm ký tự, ký số và lý tự
gạch dướiunderscores (_).
Tên(danh hiệu phải bắt đầu bằng 1 ký tự hay
ký tự gạch dưới.
Tên(danh hiệu) không được trùng với các từ
khóa (keyword , reserved word).

Tên biến nào hợp lệ?

int idnumber;
int transaction_number;
int __my_phone_number__;
float 4myfriend;
float its4me;
double VeRyStRaNgE;
float while;
float myCash;
int CaseNo;
int CASENO;
int caseno;

Trả lời

int idnumber; Hợp lệ
int transaction_number; Hợp lệ
int __my_phone_number__; Hợp lệ
float 4myfriend; Không Hợp lệ

float its4me; Hợp lệ
double VeRyStRaNgE; Hợp lệ
float while; Không Hợp lệ
float myCash; Hợp lệ

Lưu ý !!!!

C# phân biệt chữ thường chữ hoa, vì vậy các
khai báo dưới đây sẽ tạo ra 3 biến khác biệt
nhau
int CaseNo;
int CASENO;
int caseno;

Do vậy tránh sử dụng những khai báo nhập
nhằng như trên do có thể dẫn đến sai sót khi
lập trình

Thủ thuật đặt tên biến

Việc đặt tên biến rất quan trọng : sử dụng
trong chương trình, tìm lỗi,bảo trì,…

Ví dụ :Biến lưu trữ năm sinh của 1 học viên
namSinh
NamSinh
NAMSINH
nam_sinh
_nam_sinh


Tất cả đều hợp lệ !!.

Thủ thuật đặt tên biến (tt)

Qui tắc do Microsoft đề xuất : không bắt đầu
bằng ký tự _, ký tự đầu tiên là ký tự thường,
các ký tự đầu tiên trong các từ tiếp theo ở dạng
chữ hoa.
cabinPressure
restrictedTransactionType
bodyTemperature
newYorkYankees
momentOfInertia
aLengthyUnnecessaryLongVariableName

Tránh dùng lại 1 tên biến dù sử dụng tính
chất : C# phân biệt ký tự thường/hoa.
int namSinh , namsinh, NamSinh ;

Các kiểu dữ liệu giá trị

Kiểu Kích cỡ Mô tả

bool 1 byte true or false

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

char 2 bytes ký tự trong bảng mã Unicode

decimal 16 bytes độ chính xác đến 28 ký số


double 8 bytes số thực (chính xác gấp 2)

float 4 bytes số thực

int 4 bytes Số nguyên:-2 tỷ đến 2 tỷ (xấp xỉ)

long 8 bytes Số nguyên có dấu

sbyte 1 byte -128 đến 127

short 2 bytes -32000 đến 32000 (xấp xỉ)

uint 4 bytes 0 4 tỳ

ulong 8 bytes Số nguyên không dấu

ushort 2 bytes Số nguyên từ 0 64000(xấp xỉ)

Từ khoá (Keywords )

abstract 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 goto if implicit


in int interface internal is lock long

namespace new null object operator out

override params private protected public

readonly ref return sbyte sealed short sizeof stack

alloc static string struct switch this throw

true try typeof uint ulong unchecked

unsafe ushort using virtual void while

×