intTypePromotion=1
zunia.vn Tuyển sinh 2024 dành cho Gen-Z zunia.vn zunia.vn
ADSENSE

kỹ thuật lập trình C chuyên nghiệp phần 2

Chia sẻ: Thái Duy Ái Ngọc | Ngày: | Loại File: PDF | Số trang:0

67
lượt xem
7
download
 
  Download Vui lòng tải xuống để xem tài liệu đầy đủ

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ả

Chủ đề:
Lưu

Nội dung Text: kỹ thuật lập trình C chuyên nghiệp phần 2

  1. Phương pháp Heuristic Trong nhiều bài toán dùng phương pháp thử - sai sẽ dẫn đến số lượng thử quá lớn không chấp nhận được. Heuristic chính là ước lượng về khả năng dẫn đến lời giải của một trạng thái: phương pháp vét cạn nhưng có thêm tri thức đi kèm, tối ưu cục bộ, nguyên lý hướng đích, nguyên lý sắp thứ tự, .... ví dụ: Một em bé bị lạc đường về nhà, em nhớ nhà mình cao nhất trong khu vực, em sẽ tìm đến tòa nhà cao nhất trong vùng em thấy, rồi lại tiếp tục , ... Giải phương trình bậc 2, đoán nghiệm theo Vi-ét
  2. Tìm kiếm theo chiều sâu và chiều ki rộng Là thử - sai theo nguyên lý mê cung hay chính là thử - sai kết hợp lần ngược. Ngược với tìm kiếm theo chiều sâu, tìm kiếm theo chiều rộng mang hình ảnh của vết dầu loang. Giải thuật A*
  3. Phương pháp trí tuệ nhân tạo "Dạy" máy tính để có "trí thông minh" như con người bắt chước khả năng "suy luận" của con người. ví dụ: bài toán đong nước, có 3 bình A, B, và C có dung tích 5, 8, và 13 lít. Làm sao đong được 11 lít nước trong bình C? Bình C ban đầu đầy nước.
  4. Một số phương pháp chuyển giao tri thức 1. Biểu diễn tri thức 2. Hệ chuyên gia 3. Máy học
  5. Mảng - Array Array Phạm Thế Bảo Trường Đại học Khoa học Tự nhiên Tp.HCM Đạ Khoa nhiên Tp
  6. Mảng – Array Một số tính chất Khai báo mảng trong C Kh Truy Truy xuất các thành phần Truy Truyền tham số kiểu mảng cho hàm Một số thao tác cơ sở Mảng nhiều chiều
  7. Mảng – Một số tính chất Mảng là một kiểu dữ liệu có cấu trúc do người lập trình định nghĩa Dù Dùng biểu diễn các đối tượng dữ liệu ở dạng một dãy các thành phần có cùng kiểu với nhau – kiểu cơ sở NNLT NNLT C luôn chỉ định một khối nhớ liên tục cho một biến kiểu mảng Kích Kích thước của mảng được xác định ngay khi khai báo và không bao giờ thay đổi
  8. Mảng – Khai báo trong C bá typedef kiểucơsở Tênkiểu[Sốthànhphần]; kiểu của mỗi thành phần thành ph hằng số, số thành phần thà tối đa của mảng do lập trình viên đặt tên typedef int AINT[100]; INT[100]; //AINT là 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
  9. Mảng – Ví dụ #define SIZE 10 int a[5]; // a dãy gồm 5 số nguyên long int big[100]; // big: chiếm 400 bytes! double d[100]; // d: chiếm 800 bytes! long double v[SIZE];// v:10 long doubles long double d[2.5]; long double d[0]; long double d[-4]; long double d[n]; do d[n]
  10. Mảng – Ví dụ khởi trị cho 5 tr cho thành phần int a[5] = { 10, 20, 30, 40, 50}; 10 20 30 40 50} double d[100] = { 1.5, 2.7}; short primes[] = { 1, 2, 3, 5, 7, 11, 13}; long b[50] = { 0 }; 2 thành phần đầ tiên đượ đầu tiên được compiler xác định khởi trị, phần kích thước gồm 7 còn lại: 0 thành ph thành phần cách nhanh nhất để nhanh nh để khởi trị tất cả các int i = 7; thành phần bằng 0 const int c = 5; int 5; int a[i]; double d[c]; short primes[];
  11. Mảng – Truy xuất các phần tử Các Các thành phần của mảng được truy xuất thông qua chỉ số của chúng 0..size-1 ..s ze- Thao Thao tác truy xuất không kiểm tra giới hạn của chỉ số nhưng giá trị không kiểm soát được int main() a { 0 int a[6]; 1 int i = 7; 2 a[0] = 59; 59; a[5] = -10; 3 a[i/2] = 2; 4 a[6] = 0; 0; 5 a[-1] = 5; return 0; }
  12. Truyền tham số Mảng cho hàm th hà Th Tham số kiểu mảng được truyền cho hàm chính là địa chỉ của phần tử đầu tiên trên mảng Số thành phần trong tham số mảng có thể để trống. Số thành phần thực sự được sử dụng phải truyền qua một tham số khác (vd: size) int add_elements(int a[], int size) add e a[], { int add_elements(int *p, int size) {
  13. Ví dụ Ví primes #include 1 void sum(long [], int); [] 2 int main(void) { 3 long primes[6] = { 1, 2, 5 3, 5, 7, 11 }; sum(primes, 6); 7 printf("%li\n", primes[0]); 11 return 0; a } sz 6 void sum(long a[], int sz) { int i; long total = 0; 0; dùng để kiểm tra để ki tra for(i = 0; i < sz; i++) giới hạn chỉ số total += a[i]; tổng được lưu vào đượ vào a[0] = total; total; phần tử đầu tiên }
  14. Chú ý Chú Khô Không thể thực hiện các thao tác chép nội dung một mảng sang mảng khác. khác. Chép từng 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
  15. Một số thao tác cơ sở th tá Nh N hậ p Xuất Xu Thêm Thêm một thành phần dữ liệu Lo Loại bỏ một thành phần dữ liệu Tìm Tìm kiếm Sắp xếp
  16. Mảng – Nhập dữ liệu li void ReadData(int a[], int size) { duyệt qua tất cả các int int i; phần tử for(i = 0; i < size; i++) 0; { printf(“Nhap thanh phan %d: ”, i); scanf(“%d”, &a[i]); } } nhập dữ liệu cho a[i]
  17. Mảng – Xuất dữ liệu ra màn hình li hì void WriteData(int a[], int size) { int i; for(i = 0; i < size; i++) 0; size; i++) printf(“%d ”, a[i]); printf(“\n”); }
  18. Mảng – Nhập xuất dữ liệu li #include
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

Đồng bộ tài khoản
2=>2