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

Bài giảng Kĩ thuật lập trình

Chia sẻ: Hikari Jun | Ngày: | Loại File: PDF | Số trang:62

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

Hàm là một đoạn chương trình độc lập thực hiện trọn vẹn một công việc nhất định, sau đó trả về giá trị cho chương trình gọi nó.Hay nói cách khác hàm là sự chia nhỏ của chương trình.Truyền Tham Chiếu (&): Bên trong giá trị các tham số thay đổi, ra khỏi hàm bị thay đổi theo.Truyền Tham Biến (*): Bên trong giá trị các tham số thay đổi, ra khỏi hàm bị thay đổi theo.Ngôn ngữ C cho phép từ trong thân của một hàm có lời gọi hàm chính hàm đó. Hàm như vậy gọi là hàm...

Chủ đề:
Lưu

Nội dung Text: Bài giảng Kĩ thuật lập trình

  1. Chương 7: CON TRỎ (POINTER)
  2. CON TRỎ (Pointer) Khai báo biến và khởi tạo int x = 8, y = 10; 0xFA30 0xFA32 Khai báo biến pointer x -8 4 16 y -5 10 int *p; Gán địa chỉ P = &x; // p = x; Error p 0xAA00 ???? Truy xuất nội dung biến 0xAA00 0xFA30 0xFA32 ???? 6? NULL *p = *p – 12; // x = *p = – 4 , y = 10 p = &y; // y = *p = 10 , x = – 4 y – = 15; // y = *p = – 5 , x = – 4 x += 20; // x = 16 , y = *p = – 5 P = (int*)malloc(sizeof(int)); *P = x – 10; // *p = 6, x = 16, y = – 5 Free(p); // p = NULL
  3. Chương 8: HÀM (FUNCTION)
  4. Function Khái niệm  Hàm là một đoạn chương trình độc lập thực hiện trọn vẹn một công việc nhất định, sau đó trả về giá trị cho chương trình gọi nó.  Hay nói cách khác hàm là sự chia nhỏ của chương trình.
  5. Function #include Ví dụ: #include //------Prototype--------------- void HoanDoi (int& a, int& b); //--------------------------------- void main() { int a,b; clrscr(); printf("Nhap vao 2 so nguyen A,B: "); scanf("%d %d",&a,&b); printf("Truoc khi hoan doi: A=%d va B=%d\n",a,b); HoanDoi(a,b); printf("Sau khi hoan doi: A=%d va B=%d\n",a,b); getch(); } //--------------------------------- void HoanDoi (int& a, int& b) { int temp = a; a = b; b = temp; }
  6. Function Khai báo Tên hàm([ danh sách các tham số]); Với: Kiểu dữ liệu : int, float, char, struct... (void: không kiểu) Tên hàm : người lập trình tự đặt tên theo qui tắc như tên Biến. Ví dụ: void HoanDoi (int& a, int& b);
  7. Function Cách Khai báo biến trong hàm: Tên_hàm (danh sách các tham số) { Khai báo các biến cục bộ Các câu lệnh / khối lệnh hay lời gọi đến hàm khác. } #include #include //--------------------------------- //------Prototype--------------- void HoanDoi (int& a, int& b) void HoanDoi (int& a, int& b); { //--------------------------------- int temp = a; void main() a = b; { b = temp; int a,b; } clrscr(); printf("Nhap vao 2 so nguyen A,B: "); scanf("%d %d",&a,&b); printf("Truoc khi hoan doi: A=%d va B=%d\n",a,b); HoanDoi(a,b); printf("Sau khi hoan doi: A=%d va B=%d\n",a,b); getch(); }
  8. Function Truyền tham số hàm: 1. Truyền Tham Trị: Bên trong giá trị các tham số thay đổi, nhưng ra khỏi hàm vẫn không đổi. Truyền Tham TRỊ Ví dụ: int Tinh (int a) { int temp; a = a+3; temp = 2*(a+4); return temp; }
  9. Function Truyền tham số hàm: 2. Truyền Tham Chiếu (&): Bên trong giá trị các tham số thay đổi, ra khỏi hàm bị thay đổi theo. Ví dụ: Truyền Tham CHIẾU void HoanDoi (int& a, int& b) { int temp = a; a = b; b = temp; }
  10. Function Truyền tham số hàm: 3. Truyền Tham Biến (*): Bên trong giá trị các tham số thay đổi, ra khỏi hàm bị thay đổi theo. Ví dụ: Truyền Tham BiẾN void HoanDoi (int* a, int* b) { Cơ chế giống Tham int temp = *a; Chiếu, nhưng cách *a = *b; viết theo con trỏ *b = temp; }
  11. Function Hàm Đệ quy:  Ngôn ngữ C cho phép từ trong thân của một hàm có lời gọi hàm chính hàm đó. Hàm như vậy gọi là hàm đệ qui.  Khi hàm gọi đệ qui đến chính nó, thì mỗi lần gọi, máy sẽ tạo ra một tập các biến cục bộ mới hoàn toàn độc lập với tập các biến cục bộ đã được tạo ra trong các lần gọi trước. Ví dụ: #include #include //------------------------------------ unsigned long GiaiThua(int n) // Tính n! với n>=0 //-----Prototype------------------- { unsigned long GiaiThua(int n); unsigned long gt=1; unsigned long GiaiThuaDQ(int n); for (int i=2; i
  12. Chương 9: MẢNG (ARRAY)
  13. MẢNG MỘT CHIỀU (One-dimensional array) Nội dung  Khái niệm  Khai báo  Khởi tạo mảng  Chỉ số – giá trị – địa chỉ của phần tử mảng  Truyền mảng qua tham số của hàm  Các thao tác trên mảng
  14. MẢNG MỘT CHIỀU (One-dimensional array) Nội dung  Khái niệm  Khai báo  Khởi tạo mảng  Chỉ số(index)–Giá trị(value)–Địa chỉ(address) của phần tử mảng  Truyền mảng qua tham số của hàm  Các thao tác trên mảng
  15. Khái niệm CHỖ ĐẬU XE 0 1 2 3 4 3 Tất cả xe này của tôi
  16. One-dimensional array Khái niệm  Mảng là nhóm các phần tử cùng kiểu dữ liệu và có chung tên.  Mỗi phần tử là một biến thành phần của mảng được quản lý bằng chỉ số(index) bắt đầu từ 0 (liên tiếp, tăng một đơn vị). Như vậy để truy xuất một phần tử của mảng, chúng ta phải biết được chỉ số của nó.  Trong bộ nhớ, các phần tử của mảng được cấp phát các ô nhớ có địa chỉ liên tiếp khác nhau.
  17. MẢNG MỘT CHIỀU (One-dimensional array) Nội dung  Khái niệm  Khai báo  Khởi tạo mảng  Chỉ số(index)–Giá trị(value)–Địa chỉ(address) của phần tử mảng  Truyền mảng qua tham số của hàm  Các thao tác trên mảng
  18. One-dimensional array Khai báo dạng con trỏ hằng (constant pointer) < Kiểu dữ liệu > < Tên mảng > [ < Số phần tử tối đa của mảng> ] ; Với: Kiểu dữ liệu : int, float, char, struct, pointer... Tên mảng : người lập trình tự đặt tên theo qui tắc như tên Biến. Tên mảng thực chất là một hằng địa chỉ của phần tử đầu tiên. Số phần tử tối đa của mảng : là hằng số nguyên cụ thể. Ví dụ: int a[100]; // Khai báo mảng số nguyên a gồm 100 phần tử #define MAX 50 float b[MAX]; // Khai báo mảng số thực b gồm 50 phần tử const int n = 10; // n là biến hằng char str[n]; // Error, n không phải là hằng số nguyên cụ thể long c[]; // Error, phải khai báo số phần tử tối đa của mảng
  19. One-dimensional array Khai báo dạng Con trỏ động (Pointer) (1) < Kiểu dữ liệu > *< Tên mảng >; Lưu ý: Tên mảng tại thời điểm khai báo này thực chất là biến (pointer) đang chỉ đến vùng nhớ (kể cả giá trị tại vùng nhớ đó) không tường minh. Để chính thức là mảng cần thao tác thêm: Cách 1: cùng quản lý chung với mảng đã tồn tại Ví dụ : p ?? int *p; // khai báo con trỏ p ?? ?? ? int b[100]; p = b; // p trỏ vào phần tử tại vị trí 0 của mảng b Với cách viết này có thể hiểu các cách viết sau là tương đương: p[i]  *(p + i)  b[i]  *(b+i)
  20. One-dimensional array Khai báo dạng Con trỏ động (dynamic array) (2) Cách 2: Xin cấp phát một vùng nhớ động để con trỏ thành mảng động. - Dùng hàm malloc trong thư viện Ví dụ: px ???? ? int *px; ???? // Khai báo con trỏ px px = (int*) malloc(10*sizeof(int)); // Cấp phát 10 ô nhớ kiểu int Chú ý: Sau khi sử dụng xong thì nên giải phóng vùng nhớ bằng hàm free Ví dụ : free (px) ; // giải phóng vùng nhớ cho con trỏ px px 0xFA30
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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