Tham khảo tài liệu ''kỹ thuật lập trình c chuyên nghiệp phần 2'', công nghệ thông tin, kỹ thuật lập trình phục vụ nhu cầu học tập, nghiên cứu và làm việc hiệu quả
Phương pháp Heuristic y y Trong nhiều ề toán dùng phương pháp thử - sai dẫn ẫ đến số lượng thử lớn không chấp nhận Heuristic ước lượng vềề khả dẫn ẫ đến ế lời giải trạng thái: phương pháp vét cạn có thêm tri thức kèm, kè tối ối ưu cục bộ, nguyên ê lý hướng h đích, đí h nguyên ê lý thứ tự, y víí dụ: d Một em bé bị lạc đường nhà, em nhớ nhà cao khu vực, vực em tìm đến tịa nhà cao vùng em thấy, lại tiếp tục , Giải phương trình bậc 2, đốn nghiệm theo Vi Vi-ét ét Tìm kiếm kiế theo h chiều hiề sâu chiều hiề rộng y y Là thử - sai theo nguyên lý mê cung thử sai kết hợp lần ngược Ngược với tìm kiếm theo chiều sâu, sâu tìm kiếm theo chiều rộng mang hình ảnh vết dầu loang Giải thuật ậ A* Phương gp phápp trí tuệệ nhân tạo y "Dạy" Dạy máy tính để có "trí trí thơng minh minh" người bắt chước khả "suy luận" người ví dụ: tốn đong nước, nước có bình A, A B, B C có dung tích 5, 8, 13 lít Làm đong 11 lít nước bình C? Bình C ban đầu đầy nước nước Một số phương pháp chuyển giao tri thức Biểu diễn tri thức Hệ chuyên h ê gia i Máy học Mảng - Array Phạm Thế Bảo Trường Đại học Khoa học Tự nhiên Tp.HCM Tp HCM Mả – Array Mảng A Một số tính chất Khai Kh i báo bá mảng ả t C Truy xuất thành phần Truyền tham số kiểu mảng cho hàm Một sốố thao th tác tá sở Mảng nhiều chiều Mả – Mộ Mảng Một sốố tính í h chất hấ Mảng kiểu ể liệu có cấu ấ trúc người lập trình định nghĩa Dù biểu Dùng biể diễn diễ đối tượng t liệu liệ dạng d ột dãy thành phần có kiểu với – kiểu sở NNLT C định khối nhớ liên tục cho ộ biến kiểu mảngg Kích thước mảng xác định khai báo khôngg bao ggiờ thayy đổi Mả – Khai Mảng Kh i bá báo C t typedef d f kiể kiểucơsở Tênkiểu Tê kiể [Sốthànhphần Tênkiểu[ Sốthà h hầ ]; Sốthànhphần] kiểu thành phần hằ số, ố số ố thành h phần hầ tối đa mảng lập trình viên đặt tên typedef int AINT[100 AINT[ 100]; ]; //AINT // AINT kiểu mảng biểu diễn dãy gồm 100 thành phần int AINT a; //a: biến kiểu AINT Mảng – Ví dụ d #define SIZE 10 int a[5]; // a dãy gồm số nguyên long int big[100]; // big: chiếm 400 bytes! double d[100]; [ ] long double // d: chiếm 800 bytes! y v[SIZE];// v:10 long doubles long double d[2.5]; long double d[0]; long double d[-4]; long double ble d[n] d[n]; Mảng – Ví dụ d int i double short long a[5] [5] d[100] primes[] b[50] = = = = { { { { khởi trị cho thành phần 10 10, 20 20, 30 30, 40 40, 50} 50}; 1.5, 2.7}; 1, 2, 3, 5, 7, 11, 13}; }; compiler xác định kích thước gồm thành phần int i = 7; const int c = 5; int a[i]; double d[c]; short primes[]; cách nhanh để khởi trị tất thành phần thành phần khởi trị, phần lại: Mảng – Truy xuất phần tử Các thành phần mảng truy xuất thông qua số ủ chúng hú size sizei -1 Thao tác truy xuất không kiểm tra giới hạn số giá trị khơng kiểm sốt int main() { int a[6]; int i = 7; a[0] = 59; a[5] = -10; a[i/2] = 2; a[6] = 0; a[-1] = 5; return 0; } a T ề tham Truyền th sốố Mảng Mả cho h hà hàm Th Tham sốố kiểu kiể mảng ả đ t ề cho truyền h hàm hà hí h địa đị hỉ phần tử mảng Số thành phần tham số mảng để trống trống Số thành phần thực sử dụng phải truyền qua tham số khác (vd (vd:: size) int t add_e add elements(int e e ts( t a[], int t s size) e) { int add_elements(int *p, int size) { Ví dụ #include void id sum(long (l [] [], i int); t) int main(void) { long primes[6] = { 1, 2, 3, 5, 7, 11 }; sum(primes, 6); printf("%li\n", primes[0]); return 0; } void sum(long a[], int sz) { int i; long total = 0; for(i = 0; i < sz; i++) total += a[i]; a[0] = total; } primes 11 a sz dùng để kiểm tra giới hạn số tổng lưu vào phần tử Chú ý Khô thể thực Không th hiệ thao th tác tá chép nội ội dung d ột mảng ả sang mảng khác khác Chép phần tử mảng char A[3]={‘a’,’b’,’c A[3]={‘a’,’b’,’c’}; ’}; char B[3]; B = A; // ??? for(int for( int i=0; i