Bài giảng Lập trình tính toán khoa học kỹ thuật - Buổi 5: Hàm và chương trình - Lê Hoàng Sơn

Lập trình tính toán khoa học kỹ thuật 1

Buổi 5: Hàm và chương trình

Nội dung chính

1 Hàm & chương trình con

2 Bài tập

pdf 20 trang phuongnguyen 7620
Bạn đang xem tài liệu "Bài giảng Lập trình tính toán khoa học kỹ thuật - Buổi 5: Hàm và chương trình - Lê Hoàng Sơn", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình tính toán khoa học kỹ thuật - Buổi 5: Hàm và chương trình - Lê Hoàng Sơn

Bài giảng Lập trình tính toán khoa học kỹ thuật - Buổi 5: Hàm và chương trình - Lê Hoàng Sơn
 Buổi 5: Hàm và chương trình 
 Giảng viên: TS. Lê Hoàng Sơn 
 lehoangson@hus.edu.vn 
Lập trình tính toán khoa học kỹ thuật 1 
Nội dung chính 
 1 Hàm & chương trình con 
 2 Bài tập 
 2/20 Lê Hoàng Sơn 
 1. 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 rồi trả về một giá trị cho chương trình đã 
 gọi nó. 
 Hỗ trợ cho chương trình chính nhằm thực hiện một số 
 thao tác cụ thể. 
 Một chương trình C bao gồm một hoặc nhiều hàm. 
 Hàm main() là thành phần bắt buộc của chương trình 
 Đặc điểm của hàm: 
 . Là một đơn vị độc lập của chương trình. 
 . Không cho phép xây dựng một hàm bên trong một hàm khác. 
 3/20 Lê Hoàng Sơn 
 Cú pháp Hàm 
 Kiểu dữ liệu (KiểuDL): Giá trị trả 
 về của hàm được xác định dựa KiểuDL: hàmA (tham số) 
 vào mục đích của hàm. VD: int, 
 float, double, void { 
 danh sách biến; 
 Tên hàm (hàmA): theo quy ước 
 đặt tên biến các lệnh; 
 return KiểuDL; 
 Tham số: danh sách các giá trị 
 đầu vào (tham trị) và đầu ra } 
 (tham biến) của hàm 
 int main() { 
 Danh sách biến: là các biến chỉ 
 sử dụng trong từng hàm con hàmA(); 
 Gọi hàm trong main() bằng tên 
 hàm và tham số } 
 4/20 Lê Hoàng Sơn 
 Ví dụ: Tính lũy thừa m của x 
# include 
# include 
# include 
double luy_thua(int x, int m) { Định nghĩa hàm 
 double ket_qua; 
 ket_qua = pow(x,m); 
 return ket_qua; Trả về lũy thừa m của x 
} 
int main() { 
 int a, n; 
 printf("\n Nhap vao a va so mu n:"); 
 scanf("%d%d", &a,&n); 
 printf("\n Luy thua a^n = %5.3f",luy_thua(a,n)); Gọi hàm 
 getch(); 
 return 0; 
} 
 5/20 Lê Hoàng Sơn 
 Ví dụ: Vẽ dấu * 
# include 
# include 
void line(int num) { Hàm vẽ dấu * 
 int i; 
 for(i = 0; i < num; i++) 
 printf("*"); 
 printf("\n"); 
} Không có giá trị trả về 
int main() { 
 int so; 
 printf("\n Nhap vao so dau *:"); 
 scanf("%d", &so); 
 line(so); Gọi hàm 
 getch(); 
 return 0; 
} 
 6/20 Lê Hoàng Sơn 
 Nguyên tắc hoạt động của hàm 
 Trong hàm main() khi gặp hàm thì cấp phát bộ nhớ cho 
 các tham số và biến của hàm 
 Gán giá trị cho tham số hàm 
 Thực hiện các lệnh trong thân hàm 
 Khi gặp câu lệnh return hoặc dấu hiệu kết thúc hàm thì 
 giải phóng bộ nhớ của các tham số và biến của hàm 
 Thoát khỏi hàm quay về thời điểm sau khi gọi hàm trong 
 main() 
 7/20 Lê Hoàng Sơn 
 Tham số của hàm 
 Tham trị: các giá trị sẽ truyền cho hàm (Input). 
 Tham trị không bảo lưu lại những kết quả thay 
 đổi của nó được tính toán trong Hàm khi Hàm 
 kết thúc. 
 Ví dụ: int so; 
 line(so); 
 Tham biến: các giá trị của biến mà ta mong 
 muốn nhận được sau khi kết thúc hàm (output). 
 Khai báo dưới dạng địa chỉ. 
 8/20 Lê Hoàng Sơn 
 Ví dụ: Đếm số lần xuất hiện và in vị trí cuối trong dãy 
# include int main() { 
# include float m[5], n; int i, vitri, solan; 
int dem(float *a, int kichthuoc, float b, for(i = 0; i < 5; i++) { 
 int *vitri) printf("\n Nhap vao so thu 
{ %d:",i+1); 
 int i, so = 0; scanf("%f", &m[i]); 
 for(i = 0; i < kichthuoc; i++) } 
 if(a[i] == b) printf("\n Nhap vao so can tim:"); 
 { scanf("%f", &n); 
 so++; 
 *vitri = i; solan = dem(m,5,n,&vitri); 
 } printf("\n So lan xuat hien = %d, vi 
 return so; tri cuoi = %d",solan,vitri); 
} getch(); 
 return 0; 
 } 
 9/20 Lê Hoàng Sơn 
Kết quả 
 10/20 Lê Hoàng Sơn 
 Phạm vi của biến 
 Biến cục bộ: các biến sử dụng trong từng hàm kể cả 
 hàm main(). Kết thúc hàm sẽ giải phóng bộ nhớ của các 
 biến này. 
 Biến toàn cục: các biến khai báo từ đầu chương trình và 
 không thuộc về hàm nào. Mục đích để sử dụng chung 
 giữa các hàm. 
 Nên khai báo ít biến toàn cục để tránh lãng phí bộ nhớ. 
 Nếu tên biến toàn cục và cục bộ trùng nhau thì sẽ ưu 
 tiên cho biến cục bộ 
 11/20 Lê Hoàng Sơn 
 Ví dụ: Kiểm tra một số có phải số nguyên tố 
# include int main() { 
# include printf("\n Nhap vao so can kiem 
int n; //biến toàn cục tra: "); 
 scanf("%d", &n); 
int languyento(int so) { 
 int i, kt = 1; //biến cục bộ if (languyento(n)) 
 printf("\n Day la so nguyen 
 for(i = 2; i < so; i++) to"); 
 if(so % i == 0) { else 
 printf("\n Day khong la so 
 kt = 0; nguyen to"); 
 break; 
 } getch(); 
 return kt; return 0; 
} } 
 12/20 Lê Hoàng Sơn 
Kết quả 
 13/20 Lê Hoàng Sơn 
 Ví dụ: Sắp xếp dãy tăng dần 
# include void sapxep(float *a, int n) { 
# include float tam; 
# include for(i = 0; i < n -1; i++) 
float *a; int n, i, j; for(j = i + 1; j < n ; j++) 
float *nhapday(int *n) { if (a[i] > a[j]) // đổi chỗ 
 float *b; { 
 printf("\n Nhap vao so phan tu: "); tam = a[i]; 
 scanf("%d", n); a[i] = a[j]; 
 b = (float *) calloc(*n, a[j] = tam; 
 sizeof(float)); } 
 for(i = 0; i < *n; i++) { } 
 printf("\n Nhap A[%d] = ",i); void inday(float *a, int n) { 
 scanf("%f",&b[i]); puts("Day sau khi da sap xep la:"); 
 } for(i = 0; i < n; i++) 
 return b; printf("%f\t",a[i]); 
} } 
 14/20 Lê Hoàng Sơn 
 Ví dụ: Sắp xếp dãy tăng dần (tiếp) 
int main() { 
 a = nhapday(&n); 
 sapxep(a,n); 
 inday(a,n); 
 getch(); 
 return 0; 
} 
 15/20 Lê Hoàng Sơn 
 Tóm tắt bài học 
Hàm và chương trình con 
 . Cấu trúc hàm 
 . Các loại tham số 
 . Phạm vi của biến 
 16/20 Lê Hoàng Sơn 
Câu hỏi thảo luận 
 17/20 Lê Hoàng Sơn 
Nội dung chính 
 1 Hàm & chương trình con 
 2 Bài tập 
 18/20 Lê Hoàng Sơn 
 Bài tập 
1. Viết hàm tính n! 
2. Viết hàm tính tổng S = 1+2n+.+mn 
3. Viết lại bài số đối xứng (Lesson 4) thành dạng hàm. 
4. Số hoàn hảo là số nguyên dương có tổng các ước số 
 nguyên dương bé hơn nó bằng chính nó. Hãy tìm tất 
 cả các số hoàn hảo nhỏ hơn một số N cho trước. 
5. Nhập vào số N. In ra N số Fibonacci đầu tiên 
6. Tìm tất cả các ước của số N 
7. Nhập hai dãy kích thước N từ bàn phím. Trộn hai dãy 
 này thành một dãy tăng. 
8. Viết các hàm nhập, in và tính tổng hai ma trận cỡ m x 
 n thành các hàm. 
 19/20 Lê Hoàng Sơn 
 Lê Hoàng Sơn 
 C l i c k to e d i t c o m p a n y s l o g a n . 
Lập trình tính toán khoa học kỹ thuật 

File đính kèm:

  • pdfbai_giang_lap_trinh_tinh_toan_khoa_hoc_ky_thuat_buoi_5_ham_v.pdf