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

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

37 1,2K 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

Tiêu đề Bài 2 Các Kiểu Dữ Liệu - Khai Báo Biến
Trường học Trường Đại Học Công Nghệ Thông Tin
Chuyên ngành Lập Trình Hướng Đối Tượng
Thể loại Bài Giảng
Định dạng
Số trang 37
Dung lượng 370,5 KB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

LẬP TRÌNH HƯỚNG ĐỐI TƯỢNGBà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... Ngoài

Trang 1

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

Trang 2

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

Trang 3

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

Trang 4

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

Trang 5

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ị)

Trang 6

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.

Trang 7

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

Trang 8

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ụ

Trang 9

Ví dụ lệnh gán

Trang 10

Ví dụ lệnh gán

Trang 11

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;}

}

Trang 12

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);

Trang 14

Khai báo biến

• Phần trình bày tiếp theo sẽ đề cập

• 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

Trang 15

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

Trang 16

Ví dụ

static public void Main()

{ float x=23.12345678F, y=23.12345679F;

Trang 17

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

Trang 18

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).

Trang 19

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

Trang 21

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

Trang 22

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

Trang 23

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.

• 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 ;

Trang 24

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ỉ)

Trang 25

Từ khoá (Keywords )

• readonly ref return sbyte sealed short sizeof stack

Trang 26

Cú pháp khai báo biến giá trị

• Cú pháp khai báo biến:

<Kiểu dữ liệu> <tên biến>;

• Ví dụ :

int count;

float bendingMoment;

char myInitial;

• Lưu ý : kết thức khai báo biến bằng ký tự ;

• Các biến địa phương (local variables) là các biến nằm trong 1 phương thức (method) phải được khai báo trước khi sử dụng

Trang 27

Khởi tạo và phép gán

• Khi khai báo và gán luôn giá trị cho 1 biến :

thường gọi là khởi tạo biến(initialization).

int count = 0;

double bodyTemperature=99.5; //gọi là khởi tạo-initialization string messages = "The elephant was pink";

• Cũng có thể khai báo và gán giá trị cho biến tại

các phần khác nhau trong chương trình

• int count; //Khai báo

Trang 28

• Trong C#: Tất cả các biến đều phải lưu trữ dữ liệu nghĩa là chúng phải được khởi tạo hay gán trị trước khi sử dụng

• Nếu không tuân thủ : thông báo lỗi từ trình dịch

public static void Main()

Trang 29

• Trong C/C++: Biến có thể sử dụng mà không cần được gán trước 1 giá trị mà không bị cảnh báo từ trình biên dịch Đây chính là nguyên nhân gây lỗi trong chương trìnhvà điểm yếu của ngôn ngữ C/C++

• Xem thử tình huống minh họa sau

Trang 31

Chuyển kiểu(Conversions)

• Biến có thể được khởi tạo hay gán bới 1 giá trị cùng

kiểu với nó hay từ 1 giá trị thuộc các kiểu khác được ‘chuyển đỏi’ sang kiểu của nó

• Việc chuyển kiểu có thể là ngầm định hay rõ ràng

(implicit /explicit)

• Chuyển kiểu ngầm định xảy ra khi 1 giá trị của 1

kiểu có thể chuyển sang 1 kiểu khác mà không mất thông tin

• Ví dụ kiểu short và int ta có thể chuyển kiểu ngầm

định từ short sang int mà không mất thông tin

• Tương tự kiểu float và double.

• Chuyển kiểu ngầm định từ 1 kiểu có phạm vi biểu

diễn rộng sang 1 kiểu phạm vi nhỏ hơn sẽ gây ra lỗi Do vậy phải chuyển kiểu 1 cách rõ ràng (ép kiểu)

Trang 32

Ví dụ về việc chuyển kiểu

Trang 34

Nhận xét kết quả in ra !!!

i = (int) f; //Explicit Conversion

System.Console.WriteLine("i is {0}",i); }

Trang 35

• Nhận xét : Giá trị biến d có các điểm

khác biệt so với giá trị biến f Lý do : f có

độ chính xác thấp hơn nên các bit dư trong d sẽ có giá trị ngẫu nhiên

• Nhận xét : Biến i mang giá trị 52

Trang 36

Làm quen kiểu string

string str="Thu Khao Sat Du Lieu Chuoi Ky Tu";

System.Console.WriteLine("Chuoi ban dau : {0}",str);

System.Console.WriteLine("Doi sang dang chu hoa la :"+str.ToUpper());

System.Console.WriteLine("Doi sang dang chu thuong la :"+str.ToLower()); System.Console.WriteLine("Co tat ca la {0} ky tu ",str.Length);

//System.Console.WriteLine("abc < aBC = {0}" ,"abc"<"aBc");

System.Console.WriteLine("abc < aBC -> {0}" ,"abc".CompareTo("aBc")); System.Console.WriteLine("xyz = xyz -> {0}" ,"xyz".CompareTo("xyz"));

Trang 37

Làm quen kiểu float

float f=1.4F;

string fnum= f.ToString();

System.Console.WriteLine("float f = {0} string fnum = {1}",f,fnum);

System.Console.WriteLine("So nho nhat kieu float bieu dien la :

Ngày đăng: 09/05/2014, 14:34

TỪ KHÓA LIÊN QUAN

w