Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 2 : Kiểu dữ liệu - Nguyễn Văn Hòa

Chương 2 : Kiꢀu dꢁ liꢂu  
Giꢀng viên: Ph.D Nguyꢁn Văn Hòa  
Khoa KT-CN-MT – ðH An Giang  
1
Bits và giá trꢃ (values)  
10010101010011101101001110101011  
Signed Integer  
Unsigned Integer  
Address  
10010101010011101101001110101011  
10010101010011101101001110101011  
10010101010011101101001110101011  
10010101010011101101001110101011  
String  
Single Float  
10010101010011101101001110101011  
2
Nꢄi dung chính cꢅa chương  
ꢀ Giꢂi thiꢃu kiꢄu dꢅ liꢃu  
ꢀ Kiꢄu dꢅ liꢃu cơ bꢀn  
ꢀ Kiꢄu do ngưꢆi dùng ñꢇnh nghĩa  
ꢀ Kiꢄu dꢅ liꢃu có cꢈu trúc  
3
Dꢁ liꢂu (data)  
ꢀ Dꢅ liꢃu / máy tính  
ꢁ ðưꢉc lưu trꢅ ꢊ bꢋ nhꢂ  
ꢁ ðưꢉc tꢌ chꢍc thành dꢎng bits, bytes, words  
ꢀ Dꢅ liꢃu / NNLT  
ꢁ ðưꢉc tꢌ chꢍc phꢍc tꢎp: sꢏ, chuꢐi ký tꢑ, các mꢀng,  
ngăn xꢒp, …  
ꢁ Thuꢓt ngꢅ ñꢀi tưꢁng dꢂ liꢃu (data objects) là mꢋt tꢓp  
hꢉp (set) cꢔa mꢋt hoꢕc nhiꢖu mꢗu dꢅ liꢃu  
ꢁ VD Int = {- 231 … 0 … 231 }  
4
ðꢆi tưꢇng dꢁ liꢂu  
ꢀ Mꢋt ñꢏi tưꢉng dꢅ liꢃu là mꢋt chꢐ chꢍa các giá trꢇ  
cꢔa dꢅ liꢃu – mꢋt vꢇ trí trong bꢋ nhꢂ máy tính,  
ñưꢉc ñꢕt tên và có thꢄ lưu trꢅ giá trꢇ cꢔa dꢅ liꢃu  
ꢀ Có 1 tꢓp các thuꢋc tính xác ñꢇnh sꢏ lưꢉng và kiꢄu  
cꢔa các giá trꢇ mà ñꢏi tưꢉng dꢅ liꢃu có thꢄ lꢈy, tꢌ  
chꢍc luꢓn lý cꢔa các giá trꢇ này  
5
Phân loꢈi ñꢆi tưꢇng dꢁ liꢂu  
ꢀ Phân loꢎi dꢑa trên cꢈu trúc: 2 loꢎi  
ꢁ ðTDL sơ cꢈp: chꢍa mꢋt giá trꢇ dꢅ liꢃu ñơn  
ꢁ ðTDL có cꢈu trúc: tꢓp hꢉp cꢔa các dꢅ liꢃu khác  
ꢁ VD!  
ꢀ Phân loꢎi trên nguꢘn gꢏc: 2 loꢎi  
ꢁ ðTDL tưꢆng minh: do ngưꢆi dùng khai báo như biꢒn,  
hꢙng…)  
ꢁ ðTDL ꢚn: ñưꢉc ñꢇnh nghĩa bꢊi hꢃ thꢏng như các ngăn  
xꢒp lưu trꢅ các giá trꢇ trung gian, các ô nhꢂ ñꢃm  
6
Thuꢄc tính cꢅa ðTDL  
ꢀ Thuꢋc tính cꢔa mꢋt ðTDL là mꢋt tính chꢈt ñꢕc  
trưng cꢔa ðTDL ñó  
ꢀ Mꢐi ÐTDL có mꢋt tꢓp hꢉp các thuꢋc tính ñꢄ phân  
biꢃt ðTDL này vꢂi ðTDL khác.  
ꢀ Các ðTDL sơ cꢈp có mꢋt thuꢋc tính duy nhꢈt là  
kiꢄu dꢅ liꢃu  
ꢁ VD Int: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX  
ꢀ Các ðTDL có cꢈu trúc có thêm các thuꢋc tính  
nhꢙm xác ñꢇnh sꢏ lưꢉng, kiꢄu dꢅ liꢃu cꢔa các  
phꢛn tꢜ. VD Struct, Union  
7
Giá trꢃ dꢁ liꢂu (GTDL)  
ꢀ GTDL cꢔa mꢋt ðTDL sơ cꢈp có thꢄ là mꢋt sꢏ,  
mꢋt ký tꢑ hoꢕc là mꢋt giá trꢇ logic tùy thuꢋc vào  
kiꢄu cꢔa ðTDL ñó.  
ꢀ GTDL ñưꢉc biꢄu diꢁn bꢊi 1 dãy các bits, ðTDL  
ñưꢉc biꢄu diꢁn bꢊi mꢋt khꢏi ô nhꢂ.  
ꢁ VD mꢋt ðTDL A chꢍa GTDL B ~ khꢏi ô nhꢂ biꢄu  
diꢁn A chꢍa dãy bits biꢄu diꢁn B  
ꢀ GTDL cꢔa mꢋt ðTDL có cꢈu trúc là mꢋt tꢓp hꢉp  
các GTDL cꢔa các phꢛn tꢜ cꢔa ðTDL ñó.  
8
Thꢉi gian tꢊn tꢈi cꢅa ðTDL  
ꢀ Thꢆi gian tꢘn tꢎi (lifetime) cꢔa mꢋt ÐTDL là  
khoꢀng thꢆi gian ðTDL chiꢒm giꢅ bꢋ nhꢂ cꢔa  
máy tính  
ꢀ Thꢆi gian này ñưꢉc tính tꢝ khi ÐTDL ñưꢉc tꢎo ra  
cho ñꢒn khi nó bꢇ hꢔy bꢞ  
9
Biꢋn và hꢌng  
ꢀ Biꢒn  
ꢁ ÐTDL ñưꢉc ñꢇnh nghĩa và ñꢕt tên mꢋt cách tưꢆng  
minh  
ꢁ Biꢒn là cách trù tưꢉng hóa mꢋt hoꢕc nhiꢖu ô nhꢂ  
ꢁ Thuꢋc tính : name, address, value, type, lifetime, scope  
ꢀ Hꢙng  
ꢁ ÐTDL có tên và giá trꢇ cꢔa hꢙng không thay ñꢌi trong  
thꢆi gian tꢘn tꢎi cꢔa nó  
ꢁ VD!  
10  
Phꢈm vi cꢅa biꢋn (Scope)  
ꢀ
ꢀ
Phꢎm vi cꢔa biꢒn là vùng mà biꢒn có thꢄ trông thꢈy ñưꢉc  
Phꢎm vi tĩnh (static scope or block) : C, C++, Java & C#  
void sub(){  
int count;  
…
while (…) {  
int count;  
count++;  
}
}
11  
int main(){  
int count;  
count = 10;  
printf("count %d\n",count);  
{
int count;  
count = 2;  
count++;  
printf("count %d\n",count);  
}
count = count -5;  
printf("count %d\n",count);  
}
12  
Phꢈm vi cꢅa biꢋn (tt)  
ꢀ
Phꢎm vi ñꢋng (dynamic scope): Perl, COMMON, LISP cho phép khai  
báo phꢎm vi ñꢋng  
Procedure Big is  
X : integer;  
Procedure Sub1 is  
Begin  
… X …  
End;  
Procedure Sub2 is  
X: integer;  
Begin  
…
End  
Begin  
…
End  
13  
Phꢈm vi cꢅa biꢋn: ví dꢍ  
x : integer;  
procedure setX(n : integer)  
x := n;  
procedure printX()  
write integer(x);  
procedure first()  
setX(4); printX();  
procedure second()  
x : integer; setX(2); printX();  
// bꢀt ñꢁu chương trình chính  
setX(1);  
second();  
printX();  
first();  
printX();  
14  
int x = 2  
procedure f(){ x = x * x;}  
procedure g(){ h(f) }  
procedure h(P){  
int x = 4  
P()  
}
// bꢟt ñꢛu chương trình chính  
g()  
print(x)  
15  
Scope VS Lifetime cꢅa biꢋn  
ꢀ ðôi khi scope và lifetime là tương tꢑ nhau  
ꢁ Java: 1 biꢒn ñưꢉc khai báo trong 1 hàm (no method  
calls), scope ñưꢉc bꢟt ñꢛu tꢝ vꢇ trí khai báo ñꢒn cuꢏi  
hàm và lifetime là thꢆi gian thꢑc hiꢃn cꢔa hàm  
ꢀ Nhưng scope và lifetime hoàn toàn không tương  
tꢑ nhau  
ꢁ Scope là khái niꢃn liên quan ñꢒn không gian  
ꢁ Lifetime là khái niꢃn liên quan ñꢒn thꢆi gian  
16  
Các liên kꢋt (binding)  
ꢀ Mꢋt ÐTDL có thꢄ tham gia vào nhiꢖu mꢏi liên kꢒt  
trong thꢆi gian tꢘn tꢎi cꢔa nó  
ꢀ Các mꢏi liên kꢒt phꢌ biꢒn  
ꢁ ðTDL vꢂi GTDL: phép gán  
ꢁ ðTDL vꢂi 1 hoꢕc nhiꢖu tên tham chiꢒu: khai báo, gꢠi  
và trꢀ CT con  
ꢁ ðTDL vꢂi ðTDL (component): giá trꢇ cꢔa pointer và  
pointer có thꢄ bꢇ thay ñꢌi do thay ñꢌi pointer  
ꢁ ðTDL và ô nhꢂ: trình quꢀn lý bꢋ nhꢂ (routine) thiꢒt lꢓp  
17  
ðꢎt tên (names)  
ꢀ Cách ñꢕt tên : biꢒn, hꢙng và hàm  
ꢁ Có phân biꢃt ký tꢑ HOA và thưꢆng không?  
ꢁ Tꢝ khóa gꢘm nhꢅng tꢝ nao?  
ꢀ Chiꢖu dài tꢏi ña cꢔa tên  
ꢁ Fortran cho phép tꢏi ña 31  
ꢁ C99 chꢈp nhꢓn 63 ký tꢑ ñꢛu tiên  
ꢁ Java không giꢂi hꢎn ñꢋ dài  
ꢀ Hꢛu hꢒt các NNLT ñꢖu cho phép dùng các chꢅ  
cái, các sꢏ và «_» ñꢄ ñꢕt tên  
18  
ðꢎt tên (names) (tt)  
ꢀ Vài NNLT dùng khái niꢃn «camel» : ký tꢑ HOA  
giꢅa 2 tꢝ. VD myStack  
ꢀ C, C++, Java phân biꢃt giꢅa chꢅ hoa chꢅ thưꢆng  
(case sensitive). VD rose, ROSE và Rose  
ꢀ Tꢝ khóa trong tꢝng NNLT ñưꢉc dùng trong các  
tình huꢏng ñꢕc biꢃt  
ꢀ Không ñưꢉc dùng tꢝ khóa ñꢄ ñꢕt tên, chꢡng hꢎn  
tên biꢒn, tên hꢙng, tên hàm, etc  
19  
ðꢎc tꢏ kiꢀu dꢁ liꢂu  
ꢀ ðꢕc tꢀ kiꢄu dꢅ liꢃu bao gꢘm ba yꢒu tꢏ sau:  
ꢁ Các thuꢋc tính: xác ñꢇnh các ñꢏi tưꢉng dꢅ liꢃu thuꢋc  
kiꢄu  
ꢁ Các giá trꢇ: mà các ñꢏi tưꢉng dꢅ liꢃu thuꢋc kiꢄu có thꢄ  
ñưꢉc gán cho  
ꢁ Các tác vꢢ: các thao tác có thꢄ có trên các ñꢏi tưꢉng dꢅ  
liꢃu thuꢋc kiꢄu  
20  
Tải về để xem bản đầy đủ
pdf 63 trang myanh 24960 Free
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nguyên lý ngôn ngữ lập trình - Chương 2 : Kiểu dữ liệu - Nguyễn Văn Hòa", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

File đính kèm:

  • pdfbai_giang_nguyen_ly_ngon_ngu_lap_trinh_chuong_2_kieu_du_lieu.pdf