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

Bài giảng Lập trình C: Chương 6 - Hàm và cấu trúc chương trình

Chia sẻ: _ _ | Ngày: | Loại File: PPT | Số trang:34

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

Bài giảng "Lập trình C: Chương 6 - Hàm và cấu trúc chương trình" được biên soạn với các nội dung chính sau: Quy tắc xây dựng một hàm; Quy tắc hoạt động của hàm; Các khái niệm liên quan đến hàm; Cách xây dựng hàm; Con trỏ và địa chỉ. Mời các bạn cũng tham khảo bài giảng tại đây!

Chủ đề:
Lưu

Nội dung Text: Bài giảng Lập trình C: Chương 6 - Hàm và cấu trúc chương trình

  1. CHƯƠNG VI HÀM VÀ CẤU TRÚC CHƯƠNG TRÌNH I. Hàm 1. Quy tắc xây dựng một hàm: Hàm  có  thể  xem  là  một  đơn  vị  độc  lập  của  chương  trình.  Các  hàm  có  vai  trò  ngang  nhau,  vì  vậy không cho phép xây dựng một hàm bên trong  một hàm khác. Dòng đầu tiên (của một hàm) chứa các thông tin về  hàm: ­ Kiểu giá trị của hàm (nếu hàm có giá trị) ­ Tên hàm ­ Danh sách các đối số (nếu có)
  2. Các dòng tiếp theo dùng để khai báo kiểu giá  trị của đối số.Và bắt buộc phải khai báo kiểu  giá trị cho tất cả các đối số. Tiép theo là thân hàm. Thân hàm là nội dung  chính của hàm nó bắt đầu bằng dấu { và kết  thúc } Trong thân hàm có thể dùng 1 hoặc nhiều lệnh  return hoặc có thể không dùng. Và có thể đặt  chúng ở bất kỳ chỗ nào nếu thấy thích hợp. Cú pháp chung của lệnh return return ([Biểu thức]); Giá trị của biểu thức trong ngoặc sẽ được  gán cho hàm.
  3. 2. Quy tắc hoạt động của hàm Cách gọi hàm: tên_hàm([Danh sách tham số thực]); Chú ý:  ­ Số  tham  số  thực  phải  bằng  với  số  tham  số hình thức (đối) và mỗi tham số thực phải  có cùng kiểu với giá trị như kiểu giá trị của  đối tương ứng của nó. ­ Về  nguyên  tắc  mọi  hàm  cần  được  khái  báo  trước  khi  sử  dụng  nó.  Nó  hoàn  toàn  giống với việc khai báo một biến.
  4. Ví dụ: Viết chương trình tìm số lớn nhất và nhỏ nhất  của từng cột trong ma trận, có sử dụng hàm tìm  max, tìm min. #include "stdio.h" int max(a,b) int a,b; { int m; m=a>b?a:b; return (m); }
  5. int min(a,b) int a,b; { int m; m=a
  6. for (i=0;i
  7. for (j=0;j
  8. 3. Các khái niệm liên quan đến hàm: ­ Tên hàm ­ Kiểu giá trị của hàm ­ Đối hay tham số hình thức ­ Thân hàm ­ Khái báo hàm ­ Lời gọi hàm ­ Tham số thực
  9. 4. Cách xây dựng hàm [type] tên_hàm([Danh sách đối số]) [Khai báo kiểu giá trị cho tất cả các đối] { [Các khai báo kiểu giá trị cho các biến cục bộ và  các  hàm nó sử dụng] [return ([Biểu thức]);] } Chú ý:  ­ Khi  xây  dựng  hàm  cần  nắm  vững  những  qui  định  về mối quan hệ giữa: tham số thực và tham số hình  thức (đối) cũng như các đối trong thân của hàm
  10. ­ Đối với hàm không cho giá trị thì chúng ta  không cần khai báo kiểu giá trị của nó. ­ Đối  với  các  hàm  có  giá  trị  mà  ta  quên  không khai báo kiểu giá trị của nó, thì máy  sẽ  coi  hàm  đó  có  giá  trị  nguyên.  Như  vậy  đối  với  hàm  có  gái  trị  kiểu  nguyên  thì  không cần khai báo kiểu giá trị cho chúng. ­ Khi gặp lệnh return có chứa biểu thức, thì  giá  trị  của  biểu  thức  bao  giờ  cũng  được  chuyển về theo kiểu giá trị của hàm trước  khi nó được gán cho hàm.
  11.  Nguyên tắc hoạt động của tham số thực, các đối và các  biến cục bộ ­ Do đối và biến cục bộ đều có phạm vi hoạt động trong  cùng một hàm nên  đối và biến cục bộ cần có tên khác  nhau. ­ Đối và biến cục bộ  đều là biến tự  động. Chúng  được  cung cấp bộ nhớ khi hàm  được khởi  động và chúng sẽ  lập tức biến mất khi máy ra khỏi hàm. Như vậy, không  thể mang giá trị của đối ra khỏi hàm. Điều này có nghĩa  là  không  thể  sử  dụng  đối  để  làm  thay  đổi  giá  trị  của  bất kỳ một đại lượng nào ở ngoài hàm. ­ Khi một hàm  được gọi tới, việc  đầu tiên là gái trị của  các tham số thực  được gán cho các  đối. Như  vậy, các  đối chính là bản sao của các tham số thực. Hàm chỉ làm  vcệc trên các  đối, tức là chỉ làm việc trên các bản sao  này. Các đối có tể bị biến  đổi nhưng các tham số thực  (các bản chính) không hề bị thay đổi
  12. II. Con trỏ và địa chỉ 1. Đia chỉ Liên quan đến một biến ta đã có các khái niệm: ­ Tên biến ­ Kiểu giá trị của biến ­ Giá trị của biến Khi khai báo một biến thì máy sẽ cấp phát cho  biến một vùng nhớ có số byte bằng với  độ lớn  của kiểu đó.  Ví dụ:  Kiểu int là 2 byte Kiểu float là 4 byte
  13. Chúng ta cũng có thể hiểu: Địa chỉ của biến là  số thứ tự của byte  đầu tiên trong một dãy các byte  liên tiếp nhau mà máy dành cho biến. Cần  chú  ý  rằng:  Địa  chỉ  của  biến  là  mộ  số  nguyên  nhưng  không  được  đánh  đồng  nó  với  các  số nguyên thông thường trong các phép tính Phép toán &x  cho ta địa chỉ của biến x
  14. 2. Con trỏ  Con trỏ là một biến dùng  để chứa  địa chỉ. Vì có  nhiều  loại  địa  chỉ  nên  cũng  có  bấy  nhiêu  kiểu  con trỏ tương ứng. Ví dụ: Con trỏ kiểu int dùng  để chứa  địa chỉ các  biến kiểu int. Cũng  như  biến  thì  con  trỏ  cũng  cần  phải  đựoc  khai báo trước khi sử dụng. Cú pháp khai báo: type *tên_con_trỏ    Ví dụ: int x,y,*px,*py
  15. Toán tử: & và * là các toán tử một ngôi, nó chỉ tác động  lên biến, phần tử của mảng hoặc chuỗi. &: Toán tử lấy đại chỉ của biến *: Toán tử lấy giá trị tại địa chỉ nào đó. Các toán tử này có độ ưu tiên hơn các toán tử số học và  có độ ưu tiên tương đương với toán tử một ngôi. 3. Các biểu thức con trỏ: a. Phép gán con trỏ: Con trỏ cũng là một biến nên ta cũng có thể áp dụng  phép gán lên nó. Ví dụ: int *p1, *p2,x; Lúc đó  các phép toán sau là hợp lệ: p1=&x; p2=p1;
  16. b. Phép toán số học trên con trỏ: Các phép toán số học được áp dụng trên biến con trỏ cũng  như giá trị của nó là 2 phép toán cộng và trừ. Ví dụ: int  *p; Thì ta có thể dùng: p++: để trỏ đến phần tử kế tiếp; p­­: trỏ đến phần tử trước đó p= p+3: Nhảy đến địa chỉ cách p là 3*Sizeof(p) Trong biểu thức ta có thể dùng các dạng sau của một biến  con trỏ p: (*p)++,++(*p):Tăng giá trị tại p lên 1 *(p++): lấy gía trị phần tử kế tiếp trỏ bởi p,...
  17. c. So sánh con trỏ Các phép toán so sánh địa chỉ của các biến con  trỏ là: >,
  18. 5. Hàm có đối con trỏ: Nếu đối là con trỏ thì tham số thực tương ứng  phải là địa chỉ của biến hoặc địa chỉ của phần tử  mảng có kiểu tương ứng. Khi đó địa chỉ của biến được truyền cho đối con  trỏ tương ứng. Ví dụ:
  19. #include "stdio.h" int swap(x,y) int x,y; { int tem; tem=x; x=y; y=tem; return (x,y); }
  20. main() { int x,y,swap(); printf("Nhap x = \n y = "); scanf("%d %d",&x,&y); printf("x = %d    y = %d",x,y); swap(x,y); printf("x = %d    y = %d",x,y); getch(); return 0; }
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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