620 likes | 745 Views
MÔN HỌC PHƯƠNG PHÁP LẬP TRÌNH. Giới thiệu. Mục tiêu môn học Cung cấp cho sinh viên kiến thức căn bản về kỹ thuật lập trình và lập trình theo tiếp cận hướng đối tượng, một phương pháp lập trình rất thông dụng hiện nay. Nội dung Một số thuật ngữ liên quan đến máy tính và lập trình.
E N D
Giới thiệu • Mục tiêu môn học Cung cấp cho sinh viên kiến thức căn bản về kỹ thuật lập trình và lập trình theo tiếp cận hướng đối tượng, một phương pháp lập trình rất thông dụng hiện nay. • Nội dung • Một số thuật ngữ liên quan đến máy tính và lập trình. • Sơ lược về ngôn ngữ lập trình • Ngôn ngữ minh họa Pseudo code và C/C++ • Các giải thuật cơ bản • Kỹ năng tư duy và thực hành trên ngôn ngữ cụ thể.
Phương thức • Phương thức học • Giờ lý thuyết: giảng và báo cáo • Giờ thực hành tại phòng máy • Kiểm tra và thi • Kiểm tra thực hành: kỹ năng lập trình • Thi lý thuyết : trắc nghiệm khách quan • Tài liệu tham khảo • Slide bài giảng Lập Trình Căn Bản • Giáo trình Phương Pháp Lập trình – Khoa CNTT • Tài liệu khác • CDROM bài tập và thực hành
Chương 1 Khái niệm cơ bản Một số khái niệm cơ bản về Máy tính & chương trình máy tính Ngôn ngữ lập trình ,translator,.. Giải thuật và flow chart Giải thuật & biểu diễn giải thuật Flowchart Công cụ phát triển Công cụ IDE, Compiler Error & debug
Máy tính - Computer • Máy tính Analog • Máy tính số • Hệ nhị phân • Máy tính lập trình được • Mô hình máy Turing và Von Newman • Các thế hệ máy tính • Đặc tính chung • Khả năng tính toán • Khả năng thực hiện các phép toán logic • Tốc độ tính toán cao • Làm theo chỉ thị
Kiến trúc máy tính • Máy tính (Computer system) Bao gồm nhiều thiết bị phần cứng (hardware devices) • Keyboard • Screen (monitor) • Disks • Memory • Processing Units • Hệ điều hành (Operating System – OS) • Phần mềm (software) • Công dụng: êệ thống, ứng dụng, cơ sở dữ liệu • Môi trường hoạt động: OS, Network, WEB, Server,..
Chương trình máy tính • Chương trình • Danh mục các trang thiết bị, tài nguyên sử dụng • Tiến trình sử dụng các tài nguyên và thực hiện các công việc định trước • Kết quả thực hiện • Chương trình máy tính • Tập hợp các lệnh được liệt kê theo một trình tự nhất định • Các dữ liệu sẽ được nhận • Các tài nguyên cần sử dụng • Các kết quả sẽ có được • Mục tiêu: xử lý dữ liệu theo yêu cầu định trước • Lập trình: viết chương trình cho máy tính
Ngôn ngữ lập trình • Ngôn ngữ lập trình • Phương tiện để viết chương trình cho máy tính • Hàng trăm ngôn ngữ lập trình khác nhau • Những quy định về cú pháp (syntax) & ngữ nghĩa (semantic) • Máy tính có thể hiểu được • Phân chia làm 3 nhóm chính • Ngôn ngữ máy - Machine languages • Ngôn ngữ duy nhất của máy tính - CPU • Hợp ngữ - Assembly languages • Ngôn ngữ cấp cao - High-level languages
Ngôn ngữ máy - Machine languages • Ngôn ngữ duy nhất được máy tính (CPU) hiểu trực tiếp. • Được xác định bởi tập lệnh của CPU • Phụ thuộc vào máy tính cụ thể • Dạng nhị phân {0,1}* • Rất khó đọc hiểu • Khó có khả năng viết chương trình trực tiếp • Khó nhớ hàng chục ngàn lệnh dạng {0,1}* • Rất khó xác định & sửa lỗi • Không được sử dụng trong thực tế để viết chương trình • Nền tảng xây dựng hợp ngữ
Hợp ngữ - Assembly Languages • Sử dụng các từ khóa tiếng Anh cho các lệnh hay nhóm lệnh của mã máy. • Được dịch sang mã máy khi thực hiện • Chuyển đỗi nhanh chóng • Dễ đọc và dễ hiểu hơn • Vẫn tương đối khó sử dụng do • Các lệnh còn đơn giản nên phải dùng nhiều lệnh. • Chưa có những cấu trúc điều khiển thuận tiện • Khả năng tìm và sửa lỗi cũng chưa thuận tiện. • Nền tảng xây dựng các ngôn ngữ cấp cao
Ngôn ngữ cấp cao • Một câu lệnh diễn tả nhiều động thái • Có cấu trúc ngày càng giống ngôn ngữ tự nhiên (tiếng Anh) • Được dịch sang assembly hay mã máy bằng các chương trình dịch trước khi thực thi. • Source code & Executed code • Được phân làm nhiều lớp • Lập trình goto • Lập trình cấu trúc – Structured • Lập trình hướng đối tượng – Object Oriented • Các dạng khác
Học ngôn ngữ lập trình • Học ngữ pháp • Quy tắc ngữ pháp • Từ vựng • Cấu trúc câu • Ngữ nghĩa của các lệnh • Các “thành ngữ” • Học ngôn ngữ lập trình VS. Học ngôn ngữ tự nhiên • Quy tắc ngữ pháp đơn giản • Từ vựng ít, tự quy định • Cấu trúc câu đơn giản • Hạn chế và khó khăn của sử dụng ngôn ngữ lập trình.
Chương trình dịch • Dùng để dịch từ một ngôn ngữ lập trình này sang ngôn ngữ lập trình khác • Mục tiêu cuối cùng là dịch sang mã máy để có được executed code –> chương trình thực thi • Phân loại: • Intepreter – thông dịch • Compiler – biên dịch • Intepreter vs. Compiler • Công cụ phát triển – Integrated Development Environment (IDE) • Soạn thảo • Dịch và sửa lỗi chương trình • Chạy thử và sửa lỗi
Một số khái niệm khác • Lỗi và sửa lỗi • Syntax error – lỗi ngữ pháp • Semantic error- lỗi ngữ nghĩa • Runtime error - Lỗi thực thi • Debug – Tìm và sửa lỗi • Dữ liệu, kiểu dữ liệu • Các kiểu dữ liệu cơ bản • Số nguyên, Số thực, Kí tự • Kiểu dữ liệu có cấu trúc: mảng, chuỗi, cấu trúc,.. • Biến (Variable) & Hằng (Constant) • Giải thuật: khái niệm, công cụ biểu diễn • Flow chart – lưu đồ
Flow chart • Start /Begin bắt đầu giải thuật. Chỉ có 1 và chỉ 1 điểm START. Start • Dòng xử lý • Input / Output dữ liệu xuất/nhập • Đặc tả thao tác xử lý hay tính toán dữ liệu No Điều kiện • Điều khiển rẽ nhánh Yes Giá trị xét phân nhánh • Phát biểu rẽ nhánh khác Trường hợp 1 Trường hợp i Khác Stop • Stop/End kết thúc của giải thuật. Có thể có một hoặc nhiều điểm STOP.
Flow chart • Ưu điểm • Trình bày trực quan giải thuật • Độc lập với ngôn ngữ tự nhiên • Độc lập với ngôn ngữ lập trình • Bảo đảm khả năng lập trình • Cho phép dễ dàng kiểm tra giải thuật • Nguyên tắc kiểm tra • Đi từ START theo bất cứ đường nào cũng phải đến một điểm dừng STOP • Không có sự quay vòng vĩnh viễn • Không có sự kết thúc lưng chừng
Flow chart Algorithms Giải phương trình ax + b = 0 Start Nhập a, b a=0 ? b=0 ? Yes Yes No No X=-b/a Vô số nghiệm Không có nghiệm Stop
Cấu trúc lệnh cơ bản • if (condition) Statement; • if (condition) Statement 1; else Statement 2; • switch(BiểuThứcChọn) { case hằng 1: S1;break; case hằng 2: S2;break; ……. case hằng n: Sn;break; default: S0; } • while (condition) Statement; • do{ Statement }while (condition); • for (BT1; ĐK ; BT2) Statement;
Chu kỳ sống của phần mềm • Thu thập yêu cầu • Phân tích thiết kế • Phát triển chương trình - codeing • Xác định giải thuật • Viết code và dịch thử , hiệu chỉnh các lỗi syntax • Thử nghiệm - Testing • Chạy thử với các dữ liệu mẫu để kiểm tra lỗi semantic và runtime • Vận hành và bảo trì • Phát triển theo yêu cầu
Một số ngôn ngữ lập trình • Lập trình goto • Assembly • Basic • Lập trình cấu trúc • Pascal, C • Foxpro • Lập trình hướng đối tượng • Java, C++, Object Pascal,… • Khác • Prolog, LISP, Visual basic (VB), VC++, J++, Delphi, ASP, PHP,.. • Visual studio .NET: VB.NET, ASP.NET, C++.NET, C#
Chương 2Dữ liệu & cấu trúc chương trình Các khái niệm cơ bản về dữ liệu và biểu diễn dữ liệu trong máy tính Khai báo dữ liệu trong chương trình Một số phép toán cơ bản Cấu trúc cơ bản một chương trình C/C++
Danh hiệu • Khái niệm “Danh hiệu” • Là tên của các đối tượng khác nhau trong lập trình, dùng để phân biệt giữa đối tượng này với đối tượng khác. • Các đối tượng thường được đặt tên bằng danh hiệu: biến, hằng, chương trình con, …… • Qui tắc ngữ pháp của danh hiệu: • Bắt đầu bằng chữ cái (A-Z, a-z) hay dấu gạch dưới ( _ ) • Theo sau là chữ cái, dấu gạch dưới hay chữ số. • Với Pascal không phân biệt CHỮ HOA hay chữ thường • Một số ngôn ngữ có phân biệt như Java,… • Ví dụ: X , BienDem, Bien_dem, X1 , X2 , X3 , x1,x2,x3 • Ví dụ sai: 101X3, (X1), Bien Dem
Danh hiệu (tt) • Danh hiệu gồm 2 loại: • Danh hiệu thuộc ngôn ngữ (Pre-defined) • Do ngôn ngữ quy định trước ý nghĩa của nó. • Được dùng cho các đối tượng có sẵn trong ngôn ngữ • Ví dụ: int, cin, cout,… • Danh hiệu do người sử dụng đặt ra (user defined) • Do người sử dụng tự qui ước và qui định ý nghĩa của nó trong chương trình nguồn (source code) • Ví dụ: abc, xyz1, xyz2, delta, namsinh, tinh_giai_thua • Từ dành riêng: Là những từ do ngôn ngữ quy định sẵn như là một bộ phận cấu thành ngôn ngữ đó. • Ví dụ: if, else, do, while • Ký hiệu đặc biệt: là những ký tự có ý nghĩa được quy định trước trong ngôn ngữ. • Ví dụ: + - * / > >= := <> ; , ( ) @ [ ]
Qui ước đặt tên danh hiệu • Qui tắc đặt tên danh hiệu • Tuân thủ quy tắc ngữ pháp của danh hiệu • Không được trùng lắp với danh hiệu thuộc ngôn ngữ hoặc đã được định nghĩa. • Nên sử dụng các tên gợi nhớ • Tên gợi nhớ? • Tên mà khi đọc đến sẽ giúp ta biết được ý nghĩa của đối tượng mang tên đó. • Lợi ích của tên gợi nhớ: giúp chương trình dễ đọc, dễ hiểu & dể kiểm tra. if (ABC < 0) cout<<“ Phuong trinh vo nghiem”; ABC không gợi nhớ if (Delta < 0) cout<<“ Phuong trinh vo nghiem”) Delta là tên gợi nhớ
Kiểu dữ liệu (data type) • Kiểu dữ liệu là gì? • Một kiểu dữ liệu là một qui định về hình dạng, cấu trúc, miền giá trị, cách biểu diễn và cách xử lý một loại dữ liệu thực tế nào đó trong máy tính. Kiểu int biểu diễn số nguyên từ -32767 đến 32768 và thực hiện được các phép toán cộng, trừ, nhân, chia, div, mod Kiểu char biểu diễn các ký tự và biểu diễn giữa cắp dấu nháy đơn. ‘A’ Có thể thực hiện phép so sánh, không thể cộng, trừ, nhân, chia • Mọi dữ liệu muốn được xử lý bằng máy tính thì phải quy về một kiểu dự liệu nào đó mà ngôn ngữ lập trình đó hiểu được. • Số kiểu dữ liệu là một yếu tố so sánh ngôn ngữ lập trình. Càng nhiều kiểu thì càng thuận lợi cho xử lý. • Bao nhiêu kiểu dữ liệu thì đủ?
Các kiểu dữ liệu • Các kiểu dữ liệu đơn giản • Kiểu liên tục: float, double • Kiểu rời rạc: int, char, liệt kê, .. • Các kiểu dữ liệu có cấu trúc/Kiểu do người dùng định nghĩa • MÃNG • CẤU TRÚC • TẬP TIN • CHUỖI • Kiểu pointer (con trỏ)
Kiểu dữ liệu cơ sở • Kiểu int: biểu diễn các số nguyên dạng thập phân. Chiếm 2 byte trong bộ nhớ, miền giá trị -32767 đến 32768 • Kiểu float: biểu diễn các số thực dạng thập phân hay dạng lũy thừa 10 bằng ký tự E. (3.2E8)Chiếm 4 byte trong bộ nhớ.Miền giá trị nhỏ nhất đến (1.9E-39) và lớn nhất đến (1.7E38) • Kiểu char: biểu diễn cho dữ liệu ký tự. Chiếm 1 byte trong bộ nhớ . Miền giá trị theo bảng mã ASCCI. Biểu diễn bằng ký tự nằm giữa hai dấu nháy đơn'A’, 'a’,.. • Bảng mã ASSCI chuẩn và mở rộng. • Bảng mã và fonts • Các vấn đề bản mã tiếng Việt 1 byte, 2 byte, Unicode Một số phép toán: so sánh, int ('F’) = 70 , char(65) = 'A’
Phần Khai báo Chứa các khai báo tài nguyên sẽ sử dụng Các khai báo nào không cần thiết có thể bỏ đi. Các #include Các #define Các prototype hàm Các biến toàn cục Hàm main() { Các khai bao biến cục bộ , hằng các phát biểu, câu lệnh; } Định nghĩa các hàm Cấu trúc đơn giản chương trình C/C++ • Phần Thân Chương trình Nội dung các câu lệnh mô tả công việc sẽ được thực hiện.
Các Khai báo trong C/C++ • #define tênhằng giátrịhằng • const kiểu tênhằng=giátrịhằng; • #define PI 3.14 • const int PI=3.14159; Hằng và ý nghĩa sử dụng hằng trong chương trình. • Biến và khai báo biến • Biến: là ô nhớ lưu trữ dữ liệu và thay đỗi được. Có kiểu dữ liệu tương ứng. kiểu dữ liệu tên biến;
Biểu thức • Các phép toán quan hệ: != == , < , > , <=, >= cho kết quả bằng 0 hoặc 1 ( ‘a’ > ‘B’ ) có giá trị bằng 0 • Các phép toán logic !, &&, || • Các phép toán số học: • +, - , * , /, % • Phép gọi hàm: gọi một chương trình con loại hàm số tương đương với một phép toán • Biểu thức: là một công thức tính toán tạo từ các biến, hằng, các giá trị cụ thể, các phép toán và dấu (, ) . Kiểu dữ liệu trả về cũng là kiểu dữ liệu của biểuthức. A+2*b(c-d) Biến là một biểu thức
Phát biểu gán và thủ tục xuất nhập • Phát biểu gán = Gán một giá trị của một biểu thức cho một biến TenBien = Bieuthuc; • Các thao tác xuất nhập: • cin>>B1>>B2; • cout<<Chuoi<<BT1; cin>>a>>b ; 12 15
Chương 3Các phát biểu điều khiển Các phát biểu điều khiển Phát biểu điều khiển và flowchart So sánh và đánh giá
Tổng quan • Phát biểu điều khiển: là những dòng lệnh dùng để điều khiển hoạt động của chương trình. • Các phát biểu điều khiển cơ bản • Phát biểu gán (assignment statement) • Các phát biểu điều khiển (control statements) • Phát biểu ghép { } • Phát biểu điều kiện if • Phát biểu điều kiện if..else • Phát biểu điều kiện switch ..case • Phát biểu lặp while • Phát biểu lặp for • Phát biểu lặp do..while • Phát biểu goto, break, continue • Phát biểu gọi hàm (function call): gọi các hàm
Phát biểu ghép { }; • Dùng để ghép nhiều phát biểu thành một phát biểu. • Cú pháp : { các phát biểu;} Ví dụ { t =x; x =y; y =t; cout<<“Hello!”; } S1 S2 Sn { N phát biểu 1 phát biểu }
Phát biểu if • Dùng để thực hiện hay không một phát biểu theo một điều kiện. • Cú pháp if (condition) statement; Chỉ có 1 phát biểu trong thân của if • Ví dụ if (Delta > 0) { X1= (-b + sqrt(Delta))/(2*a); X2= (-b - sqrt(Delta))/(2*a); } Condition Yes No Statements
Phát biểu if .. else • Dùng để chọn lựa phát biểu nào sẽ được thực hiện giữa 2 phát biểu. • Cú pháp if (condition)statement1 else statement2 ; • Ví dụ if (Delta > 0) { X1= (-b + sqrt(Delta))/(2*a); X2= (-b - sqrt(Delta))/(2*a); } else { cout<<(‘Còn xét tiếp’);} Condition No Yes Statement1 Statement2
Trường hợp đặc biệt • Xét phát biểu sau: • if (ĐK1) if (ĐK2) S1; else S2; • else sẽ thuộc về if nào gần nhất chưa có ELSE ? else else ĐK2 Yes ĐK2 No Yes No S1 S2
Dùng để chọn một trong số những phát biểu để thực hiện tùy theo giá trị của biểuthức chọn. Các nhãn case: chỉ ra các trường hợp phân nhánh. Các nhãn case là một hay nhiều giá trị hằng rời rạc theo sau là dấu : và một phát biểu tương ứng. switch(BiểuThứcChọn) { case hằng 1: S1;break; case hằng 2: S2;break; ……. case hằng n: Sn;break; default: S0; } Phát biểu switch..case BiểuThứcChọn Hằng1 Hằng 2 Hằng N default: S1 S2 SN S0
Dùng để lặp đi lặp lại nhiều lần một công việc nào đó. Cú phápwhile(ĐK) statement; while kiểm tra điều kiện trước rồi mới thực hiện phát biểu. Số lầp lặp là không biết trước. Số lần lặp tối thiểu là 0 và tối đa là không xác định. Chú ý: Trong thân của while phải có ít nhất một phát biểu có khả năng thay đổi giá trị của điều kiện. Nếu không sẽ lặp vô tận (infinite loop) Ví dụ: gt =1; i=1 ; while (i<n) do { i=i+1; gt=gt*i; } Phát biểu while Yes ĐK S1 No
Dùng để lặp đi lặp lại nhiều lần một công việc nào đó. Cú phápdo{ statements; } while (ĐK); do..while thực hiện xong các phát biểu rồi mới kiểm tra điều kiện. Số lầp lặp là không biết trước. Số lần lặp tối thiểu là 1 và tối đa là không xác định. Chú ý: Trong thân của do..while phải có ít nhất một phát biểu có khả năng thay đổi giá trị của điều kiện. Nếu không sẽ lặp vô tận (infinite loop) Ví dụ: gt=1; i=1 do{ i:=i+1; gt:=gt*I; }while( i<=n); Phát biểu do..while S1 ĐK No Yes
Phát biểu for • Dùng để lặp lại một công việc nào đó với số lần lặp là xác định được. • Sử dụng biến đếm và biểu thức cận để xác định số lần lặp lại. • for (BT1;ĐK;BT2) Statements; Hoaït ñoäng cuûa caáu truùc for: caáu truùc for laøm vieäc theo caùc böôùc sau ñaây: b1.Xaùc ñònh bieåu thöùc 1b2.Xaùc ñònh bieåu thöùc 2. b3.Tuyø thuoäc vaøo tính ñuùng sai cuûa bieåu thöùc 2 maø maùy seõ löïa choïn moät trong hai nhaùnh:Neáu bieåu thöùc 2 coù giaù trò 0(sai) maùy seõ ra khoûi for, ngöôïc laïi neáu bieåu thöùc khaùc 0( ñuùng) maùy seõ thöïc hieän caùc caâu leänh trong thaân for, khi gaëp daáu } cuoái cuøng trong thaân for hoaëc gaëp caâu leänh continue maùy seõ chuyeån ñeán böôùc 4( khôûi ñaàu laïi) b4.Tính bieåu thöùc 3 sau ñoù quay trôû laïi böôùc 2 ñeå baét ñaàu moät voøng môùi cuûa chu trình.
Một số chú ý với phát biểu for • Bieåu thöùc 1 bao giôø cuõng chæ ñöôïc tính moät laàn. Coøn bieåu thöùc 2,3 vaø thaân voøng laëp coù theå ñöôïc laëp ñi laëp laïi nhieàu laàn. • -Khi bieåu thöùc 2 vaéng maët thi thì noù luoân ñöôïc xem laø ñuùng. Trong tröôøng hôïp naøy vieäc ra khoûi chu trình for caàn ñöôïc thöïc hieän nhôø caâu leänh break hoaëc return ( vieát trong thaân chu trình) • -Trong daáu ngoaëc troøn sau töø khoaù for goàm 3 thaønh phaàn caùch nhau bôûi daáu chaám phaåy, trong moãi phaàn khoâng nhöõng coù theå vieát moät bieåu thöùc maø coøn coù quyeàn vieát moät daõy bieåu thöùc phaàn caùch vôùi nhau bôûi daáu phaåy. Khi ñoù bieåu thöùc trong moãi phaàn seõ ñöôïc xaùc ñònh töø traùi qua phaûi. Tính ñuùng sai cuûa daõy bieåu thöùc trong phaàn thöù 2 ñöôïc hieåu laø tính ñuùng sai cuûa bieâu thöùc cuoái cuøng trong daõy naøy. • -Beân trong thaân caáu truùc for coù theå duøng caùc caáu truùc for khaùc.-Leänh break coù theå ñöôïc söû duïng ñeå thoaùt sôùm khoûi voøng laëp for.( while, do while) • -khi gaëp continue thì maùy seõ boû qua caùc caâu leänh coøn laïi trong thaân chu trình ñeå chuyeån ñeán xeùt bieåu thöùc 3.
Chương 4Các kiểu dữ liệu do người dùng định nghĩa Các kiểu dữ liệu rời rạc Các kiểu dữ liệu có cấu trúc Một số giải thuật trên aray. Khái niệm cơ bản về cấu trúc dữ liệu
Bài tập • Các bài tập trong sách giáo trình • Bài tập nhân 2 ma trận. • Bài tập xác định ma trận đối xứng • Bài tập quản lý điểm sinh viên dùng mảng và cấu trúc • Các bài tập khác bằng chương trình C/C++
Chương 4:Kiểu dữ liệu MẢNG • Định nghĩa: Mảng là một dãy gồm nhiều phần tử cùng một kiểu. • Các phần tử có mối quan hệ về vị trí trong dãy được xác định bằng chỉ số (index). Chính là thứ tự về vị trí của nó trong dãy • Khai báo dãy:kieudulieutenmang[SPT]; • SPT là số phần tử tối đa của mảng • SPT là kiểu đếm được • Phần tử đầu tiên của mảng có chỉ số = 0
Khởi tạo các giá trị của mảng • int A[ 10 ]; /* khai báo mảng A */ • A[ 0 ] = 1; /* Khởi tạo các giá trị của mảng 1, 2, 3… 10 */ • A[ 1 ] = 2; • A[ 2 ] = 3; • A[ 3 ] = 4; • A[ 4 ] = 5; • A[ 5 ] = 6; • A[ 6 ] = 7; • A[ 7 ] = 8; • A[ 8 ] = 9; • A[ 9 ] = 10;
Truy xuất phần tử mảng • Có thể truy xuất hoặc thay đổi giá trị của mảng thông qua tên mảng và chỉ số. • Ví dụ: Khai báo int A[10]; • A[0] = 10; //Gán giá trị 10 cho phần tử đầu tiên • A[9] = 100;// Gán giá trị 100 cho phần tử cuối cùng • Chỉ số phần tử cuối cùng của mảng 10 -1 • Khởi tạo giá trị mảng dùng vòng lặp • int A[ 5000 ]; • /* Khởi tạo 5000 phần tử (chỉ số từ 0 đến 4999) for (i = 0; i < 5000; i++) { A[ i ] = 0; }
Một số đặc tính của kiểu array • Số phần tử của kiểu array là cố định ngay từ khi khai báo. Dù là ta dùng bao nhiêu phần tử thì cũng chiếm đúng số bộ nhớ mà dãy đã khai báo. • Do đó thông thường phải khai báo dư hơn số thường dùng để tránh bị thiếu => lãng phí bộ nhớ. • Các phần tử của dãy được xếp liên tục trong bộ nhớ do đó: • Cho phép khả năng truy xuất ngẫu nhiên => nhanh • Cần có vùng nhớ trống liên tục đủ lớn khi cấp phát bộ nhớ cho dãy. => khó cấp phát.