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

Bài giảng Tin học đại cương Phần 2: Bài 5 - Nguyễn Hữu Nam Dương

Chia sẻ: Codon_03 Codon_03 | Ngày: | Loại File: PDF | Số trang:16

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

Mời các bạn cùng tìm hiểu khai báo và sử dụng hàm; phạm vi biến; nguyên mẫu hàm được trình bày cụ thể trong "Bài giảng Tin học đại cương Phần 2: Bài 5" do Nguyễn Hữu Nam Dương biên soạn.

Chủ đề:
Lưu

Nội dung Text: Bài giảng Tin học đại cương Phần 2: Bài 5 - Nguyễn Hữu Nam Dương

  1. TIN HỌC ĐẠI CƯƠNG PHẦN 2: LẬP TRÌNH BẰNG NGÔN NGỮ C BÀI 5: HÀM (FUNCTION) Nguyễn Hữu Nam Dương Email: duongnnhn- duongnnhn-fit@mail.hut.edu.vn 1 BÀI 5: HÀM (FUNTION) 5.1. Giới thiệu về hàm (function) 5.2. Khai báo và sử dụng hàm 5.3. Phạm vi biến 5.4. Nguyên mẫu hàm 2 1
  2. 5.1. Giới thiệu về hàm Một trong những tư tưởng chính của lập trình cấu trúc:  Chia nhỏ một chương trình thành các chương trình con đảm nhận những công việc nhỏ.  Viết thành hàm (function) để khi cần chỉ cần gọi ra chứ không phải viết lại toàn bộ.  Ví dụ: Các hàm toán học: sin(x), pow(x,y), sqrt(x),... sqrt(x),... Các hàm do người dùng viết ra. 3 Giới thiệu về hàm(tiếp) Đầu vào của hàm:  Các tham số Hàm có thể có nhận vào các tham số đầu vào hoặc không. Đầu ra của hàm:  Giá trị của hàm  Sự thay đổi giá trị của các tham số. Hàm có thể trả về giá trị hoặc không trả về giá trị 4 2
  3. BÀI 5: HÀM 5.1. Giới thiệu về hàm (function) 5.2. Khai báo và sử dụng hàm 5.3. Phạm vi biến 5.4. Nguyên mẫu hàm 5 5.2.1. Khai báo hàm (tiếp) Tên hàm  Có thể là bất kì một định danh hợp lệ nào.  Thường mang nghĩa gợi ý chức năng công việc mà hàm thực hiện.  Các hàm không được đặt tên trùng nhau. 6 3
  4. 5.2.1. Khai báo hàm (tiếp) Kiểu dữ liệu trả về của hàm:  Kiểu dữ liệu của giá trị tính toán mà hàm trả về sau khi thực hiện.  Hàm có thể có giá trị trả về hoặc không có giá trị trả về. Nếu có giá trị trả về, trong thân hàm có ít nhất một lệnh return return.. Nếu không có giá trị trả về cần khai báo cho hàm đó có kiểu trả về là void void.. 7 5.2.1. Khai báo hàm (tiếp) Tham số của hàm hàm::  Tham số chứa dữ liệu vào cung cấp cho hàm hàm.. (đầu (đầu vào vào))  Tham số chứa dữ liệu ra mà hàm tính toán được được..  Một hàm có thể không có tham số số,, hoặc có nhiều tham số số.. 8 4
  5. 5.2.1. Khai báo hàm Cách khai báo và sử dụng Cách 1:  Khai báo hàm  Viết mã lệnh hoàn chỉnh cho hàm.  Sử dụng hàm. 9 5.2.1. Khai báo hàm Cách 2:  Khai báo hàm nguyên mẫu  Sử dụng các hàm đã khai báo  Viết mã lệnh hoàn chỉnh cho các hàm nguyên mẫu đã khai báo. 10 5
  6. 5.2.1. Khai báo hàm Cách 1: Cú pháp: kieu_gia_tri_tra_ve ten_ham(danh_sach_tham_so) { //Than ham` bao gồm: //Các khai bao biến ... //Các câu lệnh } 11 5.2.1. Khai báo hàm (tiếp) Ví dụ: int giai_thua(int a)  Dong dau ham { int ket_qua;  Cac khai bao int i; ket_qua = 1; for(i = 1;i
  7. Ví dụ #include #include int max(int x, int y, int z) { int max1; max1 = x>y?x:y; max1 = max1>z?max1:z; return max1;// max(x,y,z) = max1; } 13 void main() { int a,b,c a,b,c;; clrscr clrscr(); (); printf(" printf ("\ \n Nhap gia tri cho 3 so nguyen a, b, c: "); scanf("%d scanf ("%d %d %d",&a,&b,&c %d",&a,&b,&c); ); printf(" printf ("\ \n Gia tri cac so vua nhap nhap:: "); printf(" printf (" a = %- %-5d b = %- %-5d c = %- %-5d"); printf("\ printf(" \n Gia tri lon nhat trong 3 so la %d",max d",max((a,b,c a,b,c)); )); getch(); getch (); } 14 7
  8. 5.2.1. Khai báo hàm (tiếp) Lệnh return  Cú pháp: return bieu_thuc;  Khi gặp lệnh này, chương trình sẽ tính toán giá trị của bieu_thuc bieu_thuc,, lấy kết quả tính toán được làm giá trị trả về cho lời gọi hàm rồi kết thúc việc thực hiện hàm, trở về chương trình đã gọi nó.  Nếu thiếu bieu_thuc  Kết thúc việc thực hiện hàm mà không trả về giá trị nào cả. 15 5.2.2. Sử dụng hàm Sử dụng hàm hay gọi hàm  Cú pháp: Ten_ham([danh_sach_tham_so]) Tham số được cung cấp cho hàm trong quá trình thực hiện được gọi là tham số thực. Kiểu dữ liệu của tham số hình thức và tham số thực phải giống nhau. 16 8
  9. Quá trình thực hiện một hàm Khi hàm được gọi, quá trình diễn ra như sau:  Nếu hàm có tham số, trước tiên các tham số sẽ được gán giá trị thực tương ứng. ứng.  Chương trình sẽ thực hiện tiếp các câu lệnh trong thân hàm bắt đầu từ lệnh đầu tiên đến câu lệnh cuối cùng.  Khi gặp lệnh return hoặc dấu } cuối cùng trong thân hàm, chương trình sẽ thoát khỏi hàm để trở về chương trình gọi nó và thực hiện tiếp tục những câu lệnh của chương trình này. 17 BÀI 5: HÀM 5.1. Khái niệm hàm 5.2. Khai báo và sử dụng hàm 5.3. Phạm vi biến 5.4. Nguyên mẫu hàm 18 9
  10. 5.3. Phạm vi biến Biến địa phương (Local Variable):  Là các biến được khai báo trong lệnh khối hoặc trong thân chương trình con. Biến toàn cục (Global Variable):  Vị trí khai báo của biến toàn cục là sau phần khai báo tệp tiêu đề và khai báo hàm nguyên mẫu 19 5.3. Phạm vi biến (tiếp) Ví dụ 1: #include void main() { { int a = 1; printf(“ printf (“\ \n a1 = %d”,a %d”,a); ); { int a = 2; printf(“ printf (“\ \n a2 = %d”,a %d”,a); ); } printf(“ printf (“\ \n a3 = %d”,a %d”,a); ); } { int a = 3; printf(“ printf (“\ \n a4 = %d”,a %d”,a); ); } } 20 10
  11. Ví dụ 2 #include #include int a, b, c; int tich() { printf("\ printf(" \n Gia tri cac bien tong the a, b, c: "); printf(" a = %- %-5d b = %- %-5d c = %- %- 5d“,a,b,c); return a*b*c; } 21 void main() { clrscr(); printf("\ printf("\n Nhap gia tri cho 3 so nguyen a, b, c: "); scanf("%d %d %d",&a,&b,&c); printf("\ printf("\n Tich cua 3 so la %d",tich()); getch(); } 22 11
  12. 23 Biến register Thanh ghi có tốc độ truy nhập nhanh hơn so với các loại bộ nhớ khác (RAM, bộ nhớ ngoài). Nếu một biến thường xuyên sử dụng được lưu vào trong thanh ghi thì tốc độ thực hiện của chương trình sẽ được tăng lên. Để làm điều này ta đặt từ khóa register trước khai báo của biến đó.  Ví dụ: register int a; Số lượng và kích thước các thanh ghi có hạn  Số lượng biến khai báo register sẽ không nhiều và thường chỉ áp dụng với những biến có kích thước nhỏ như kiểu char char,, int int.. 24 12
  13. Biến static Một biến cục bộ khi ra khỏi phạm vi của biến đó thì bộ nhớ dành để lưu trữ biến đó sẽ được giải phóng. Nếu cần lưu giá trị của các biến cục bộ này, cần khai báo biến với từ khóa static static..  Ví dụ: static int a; Biến static là biến tĩnh, nghĩa là nó sẽ được cấp phát một vùng nhớ thường xuyên từ lúc khai báo và chỉ giải phóng khi chương trình chính kết thúc. 25 Ví dụ # include # include void fct fct() () { static int count = 1; printf(" printf ("\ \n Day la lan goi ham fct lan thu %2d", count++); } void main() { int i; for(i = 0; i < 10; i++) fct(); getch(); } 26 13
  14. BÀI 5: HÀM 5.1. Khái niệm hàm 5.2. Khai báo và sử dụng hàm 5.3. Phạm vi biến 5.4. Nguyên mẫu hàm 27 Nguyên mẫu hàm – Ví dụ #include #include int max(int, int, int); // khai bao nguyen mau ham void main() { int a,b,c; clrscr(); printf("\ printf("\n Nhap gia tri cho 3 so nguyen a, b, c: "); scanf("%d %d %d",&a,&b,&c); printf("\ printf("\n Gia tri cac so vua nhap: "); printf(" a = %- %-5d b = %- %-5d c = %- %-5d"); printf("\ printf("\n Gia tri lon nhat trong 3 so la %d",max(a,b,c)); getch(); } 28 14
  15. int max(int x, int y, int z) { int max; max = x>y?x:y; max = max>z?max:z; return max; } 29 Nguyên mẫu hàm Nếu muốn đặt phần khai báo hàm nằm sau hàm main()  Cần khai báo nguyên mẫu của hàm  Để báo cho chương trình dịch biết có một hàm có dòng đầu hàm giống như trong phần nguyên mẫu này.  Chương trình dịch có thể kiểm tra được là các lời gọi hàm trong chương trình chính có đúng hay không Có phù hợp về kiểu dữ liệu trả về hay không Các tham số thực có kiểu dữ liệu có phù hợp với kiểu dữ liệu đã khai báo hay không. Trong hàm nguyên mẫu có thể không cần nêu tên các tham số hình thức, nhưng trong phần khai báo hàm ta cần phải có các tham số hình thức. 30 15
  16. Câu hỏi? 31 16
ADSENSE

CÓ THỂ BẠN MUỐN DOWNLOAD

 

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