Bài giảng Tin học đại cương: Chương 5 - Nguyễn Duy Hiệp
lượt xem 6
download
Bài giảng Tin học đại cương: Chương 5 cung cấp những kiến thức về hàm – function. Nội dung trình bày trong chương này gồm có: Khái niệm về hàm; tham số và biến cục bộ; giá trị trả về; hàm gọi hàm; hàm với tham số là mảng, xâu ký tự; biến, hằng toàn cục; biến tĩnh – static; hàm đệ quy. Mời các bạn cùng tham khảo.
Bình luận(0) Đăng nhập để gửi bình luận!
Nội dung Text: Bài giảng Tin học đại cương: Chương 5 - Nguyễn Duy Hiệp
- 11/11/2010 Nội dung Khái niệm về hàm Tham số và biến cục bộ 5. Hàm – function Giá trị trả về Hàm gọi hàm Hàm với tham số là mảng, xâu ký tự Biến, hằng toàn cục Biến tĩnh – static Hàm đệ quy 1
- 11/11/2010 5.1. Khái niệm về hàm printf ("Programming is fun.\n"); scanf("%i",&n); 5.1. Khái niệm về hàm int main(void) Mọi chương trình C đều ẩn chứa một khái niệm cơ bản là hàm Hàm (function) cung cấp cơ chế cho phép các chương trình dễ dàng viết, đọc, hiểu, debug (bắt lỗi), sửa đổi và bảo trì. 2
- 11/11/2010 5.1. Khái niệm về hàm 5.1. Khái niệm về hàm Định nghĩa hàm Dòng đầu tiên trong định nghĩa hàm cung cấp cho chương #include trình dịch 4 thông tin về hàm (theo thứ tự từ trái sang) void printMessage (void) Người có thể gọi hàm này { Kiểu giá trị nó trả về printf ("Programming is fun.\n"); Tên hàm } Các tham số mà nó cần int main (void) Ví dụ { void printMessage (void) printMessage (); return 0; int intTong(int x, int y) } Dòng đầu tiên trong định nghĩa hàm được gọi là mẫu hàm 3
- 11/11/2010 5.1. Khái niệm về hàm 5.1. Khái niệm về hàm Kết quả chạy chương trình ? Kết quả chạy chương trình ? #include #include void printMessage (void) void printMessage (void) { { printf ("Programming is fun.\n"); printf ("Programming is fun.\n"); } } int main (void) int main (void) { { printMessage (); int i; printMessage (); for ( i = 1; i
- 11/11/2010 #include #include //cho ham system() #include void CircleArea(float r) { float S; 5.2. Tham số và S= M_PI*r*r; biến cục bộ printf("%.2f co dien tich la: %.2f\n",r,S); } int main() { CircleArea(5); CircleArea(45); return 0; } 5
- 11/11/2010 5.2. Tham số và biến cục bộ 5.2. Tham số và biến cục bộ Tham số của hàm: Với hàm giaiThua(int) đã được định nghĩa giống tham số trong một hàm toán học, int main (void) Tăng hiệu quả và tính mềm dẻo của hàm { giaiThua(5); giaiThua(7); void giaiThua(int n) giaiThua(10); { int i; return 0; long gt; } for(i=1;i
- 11/11/2010 5.2. Tham số và biến cục bộ 5.2. Tham số và biến cục bộ Hàm không có tham số: phần khai báo danh sách tham số của hàm để trống hoặc dùng từ khóa void (nên dùng cách Biến cục bộ: các biến được định nghĩa trong hàm là biến này) cục bộ. Dùng hàm không có tham số: tên_hàm(); Chúng được tự động tạo ra mỗi khi hàm được gọi void trinhBay(void) Giá trị của chúng là cục bộ (chỉ được truy cập trong { phạm vi của hàm đó) printf("CHUONG TRINH GIAI PHUONG TINH BAC HAI\n"); Nếu biến có giá trị khởi tạo thì giá trị đó được gán printf("=====================================\n"); mỗi khi gọi hàm } int main (void) { trinhBay(); return 0; } 7
- 11/11/2010 5.2. Tham số và biến cục bộ void USCLN(int u, int v) { int tmp; printf ("USCLN cua %i va %i la ", u, v); while ( v != 0 ) { tmp = u % v; 5.3. Giá trị trả về u = v; v = tmp; } printf ("%i\n", u); } int main (void) { USCLN (150, 35); USCLN (1026, 405); return 0; } 8
- 11/11/2010 5.3. Giá trị trả về 5.3. Giá trị trả về Trong khai báo hàm kiểu giá trị Hàm có thể thực hiện và in luôn kết quả nên không cần trong khai báo phải trùng với giá trị trả về (khai báo hàm với từ khóa void) kiểu trả về trong lệnh return. void USCLN(int u, int v) void giaiThua(int n) int gcd (int u, int v) float goc_do (float goc_rad) Khi không muốn hiển thị ngay kết quả, hoặc kết quả thực Ví dụ hiện của hàm chưa phải kết quả cuối cùng. Ta cần trả về int USCLN (int u, int v) giá trị của hàm cho nơi gọi hàm. { int temp; Trả về giá trị trong hàm bằng từ khóa return while ( v != 0 ) { temp = u % v; u = v; v = temp; return biểu_thức; } return u; } 9
- 11/11/2010 5.3. Giá trị trả về 5.3. Giá trị trả về Với hàm USCLN đã khai báo ở trên Hàm có giá trị trả về được dùng giống như các hàm trong int main (void) thư viện math.c như abs(), floor(), sqrt(), pow(),… { int result; result = USCLN(150, 35); Kiểu trả về phải trùng với kiểu của giá trị trả về của biểu thức trong lệnh return, nếu không sẽ lỗi printf ("USCLN cua 150 va 35 la %i\n", result); result = USCLN(1026, 405); Hàm khai báo với từ khóa void thì không có giá trị trả printf ("USCLN cua 1026 va 405 la %i\n", result); về. Mọi cách thử dùng hàm này như một biểu thức đều gây ra lỗi biên dịch. printf ("USCLN cua 83 va 240 la %i\n", USCLN(83,240)); Ví dụ. Với hàm void giaiThua(int n) ta không thể return 0; dùng } int n=giaiThua(10); 10
- 11/11/2010 5.4. Hàm gọi hàm Chương trình đọc số nguyên có nhiều nhất 3 chữ số, ví dụ đầu vào là số -125 thì chương trình sẽ in ra màn hình là âm một trăm hai mươi năm. 5.4. Hàm gọi hàm Hướng giải quyết: chia nhỏ vấn đề thành các bài toán con Xây dựng hàm đọc chữ số Xây dựng hàm kiểm tra số đầu vào có hợp lệ hay không (có tối đa ba chữ số) Xây dựng hàm đọc số từ hàm trên 11
- 11/11/2010 5.4. Hàm gọi hàm 5.4. Hàm gọi hàm //hàm đọc chữ số void docChuSo(int a) Hàm kiểm tra số đầu vào số hợp lệ hay không (có tối đa { ba chữ số). Hàm này trả về giá trị -1 nếu số đầu vào if(a==0) printf("khong"); không hợp lệ, trả về 0 nếu ngược lại else if(a==1)printf("mot"); else if(a==2)printf("hai"); else if(a==3)printf("ba"); int kiemTra(int n) else if(a==4)printf("bon"); { else if(a==5)printf("nam"); else if(a==6)printf("sau"); if(n>999 || n
- 11/11/2010 c=n%10; n=n/10; 5.4. Hàm gọi hàm b=n%10; n=n/10; a=n%10; if(a>0){ docChuSo(a); printf(" tram ");} Hàm đọc số if(a>0 && b==0)printf("le "); void docSo(int n) if(b==1){ printf("muoi ");} { if(b>1){ docChuSo(b);printf(" muoi ");} int a,b,c; docChuSo(c); printf("\n"); } if(kiemTra(n)==-1) } printf("Loi! So khong hop le.\n"); else int main(void) { { if(n
- 11/11/2010 5.4. Hàm gọi hàm Hàm và thiết kế top-down Thiết kế top-down: chia bài toán ban đầu thành các bài toán con cho đến khi các bài toán con có thể xử lý trực 5.5. Hàm với tham số là tiếp được. mảng và xâu ký tự Viết các hàm để xử lý các bài toán con Chương trình chính sẽ chỉ cần gọi các hàm để thưc hiện các công việc Ưu điểm: chương trình gọn, dễ bắt lỗi 14
- 11/11/2010 5.5 Tham số là mảng, xâu ký tự 5.5 Tham số là mảng, xâu ký tự Hàm tìm giá trị lớn nhất trong một mảng số thực. Hàm in giá trị của các phần tử trong một mảng số thực gồm 10 phần tử float maximum(float A[], int size) { float maxVal=A[0]; void display(float A[10]) int i; { for(i=0;imax) maxVal=A[i]; for(i=0;i
- 11/11/2010 5.5 Tham số là mảng, xâu ký tự 5.5 Tham số là mảng, xâu ký tự int main(void) { Thay đổi giá trị của các phần tử trong mảng float array1[10] = { 15.7, -2.8, -3.7, 26, 1.08, 64, 5.6, 12, 34, 9.01}; Hàm tăng giá trị các phần tử trong mảng lên 2 đơn vị float array2[7] = { 1.2, 4.5, 1, -10, 6.5, 3, 2.2 }; printf("Noi dung mang array1\n"); void incrementBy2(float A[], int size) display(array1); { int i; printf("Gia tri lon nhat trong array1: %.2f\n", for(i=0;i
- 11/11/2010 5.5 Tham số là mảng, xâu ký tự 5.5 Tham số là mảng, xâu ký tự lần lặp 2 5 3 7 4 2 5 3 7 4 2 Hàm sắp xếp giá trị các phần tử trong mảng theo thứ tự giảm dần 5 7 3 4 2 5 7 3 4 2 Thuật toán sắp xếp mảng đơn giản: Dãy ban đầu 3 5 2 7 4 5 7 4 3 2 5 7 4 3 2 lần lặp 1 3 5 2 7 4 5 3 2 7 4 lần lặp 3 5 7 4 3 2 7 5 4 3 2 5 3 2 7 4 5 3 2 7 4 7 5 4 3 2 7 5 4 3 2 5 3 7 2 4 5 3 7 2 4 lần lặp 4 7 5 4 3 2 7 5 4 3 2 5 3 7 4 2 5 3 7 4 2 Dãy kết quả 7 5 4 3 2 17
- 11/11/2010 void sort (int a[], int n) 5.5 Tham số là mảng, xâu ký tự { int i, j, temp; for ( i = 0; i < n - 1; ++i ) Thuật toán nổi bọt (đổi chỗ): for ( j = i + 1; j < n; ++j ) if ( a[i] < a[j] ) { Gán temp = a[i]; Bước lặp: Lặp từ phần tử đầu tiên đến phần tử thứ a[i] = a[j]; (với biến lặp là ) a[j] = temp; So sánh giá trị hai phần tử kề nhau thứ và } } Nếu giá trị phần tử lớn hơn thì thực hiện đổi void display(int A[], int size) chỗ hai phần tử này { Gán int i; Thực hiện lại bước lặp cho tới khi for(i=0;i
- 11/11/2010 5.5 Tham số là mảng, xâu ký tự 5.5 Tham số là mảng, xâu ký tự int main(void) { Tham số là mảng nhiều chiều. Với mảng 2 chiều tham int i; số được khuyết chỉ có thể là số dòng. int array[16] = { 34, -5, 6, 0, 12, 100, 56, 22, 44, -3, -9, 12, 17, 22, 6, 11 }; Hàm in nội dung mảng 2 chiều dưới dạng bảng với số lượng dòng không xác định printf ("Mang ban dau:\n"); void display(int A[][5], int size) display(array,16); { int i,j; sort (array, 16); for(i=0;i
- 11/11/2010 int main(void) 5.5 Tham số là mảng, xâu ký tự { int i; int Matrix[3][5] = { 34, -5, 6, 0, 12, Hàm nhân đôi giá trị các phần tử trong mảng 100, 56, 22, 44, -3, -9, 12, 17, 22, 6}; void nhanDoi(int A[][5],int nRow) printf("Mang ban dau\n"); { display(Matrix,3); int i,j; for(i=0;i
CÓ THỂ BẠN MUỐN DOWNLOAD
-
Bài giảng tin học đại cương - trường ĐH Tôn Đức Thắng
175 p | 1024 | 287
-
Bài giảng Tin học đại cương - Chương 1: Các vấn đề cơ bản về CNTT
167 p | 419 | 31
-
Bài giảng Tin học đại cương: Bài 1 - ĐH Bách khoa Hà Nội
33 p | 263 | 21
-
Bài giảng Tin học đại cương: Bài 4 - ĐH Bách khoa Hà Nội
8 p | 155 | 13
-
Bài giảng Tin học đại cương: Chương 2 - Tin học và công nghệ thông tin
12 p | 183 | 10
-
Bài giảng Tin học đại cương: Bài 3 - ĐH Bách khoa Hà Nội
14 p | 143 | 8
-
Bài giảng Tin học đại cương - Nguyễn Vũ Duy
95 p | 43 | 8
-
Bài giảng Tin học đại cương: Phần 1 - ThS. Phạm Thanh Bình
18 p | 93 | 6
-
Bài giảng Tin học đại cương: Chương 1 - Đại cương về tin học
16 p | 124 | 5
-
Bài giảng Tin học đại cương: Chương 1 - Thông tin
29 p | 150 | 5
-
Bài giảng Tin học đại cương: MS Excel - ThS. Ngô Cao Định
31 p | 11 | 4
-
Bài giảng Tin học đại cương: Tổng quan về máy tính - ThS. Ngô Cao Định
38 p | 13 | 4
-
Bài giảng Tin học đại cương: Biểu diễn và xử lý thông tin - ThS. Ngô Cao Định
56 p | 7 | 3
-
Bài giảng Tin học đại cương: Mạng và Internet - ThS. Ngô Cao Định
55 p | 9 | 3
-
Bài giảng Tin học đại cương: Hệ điều hành - ThS. Ngô Cao Định
86 p | 8 | 2
-
Bài giảng Tin học đại cương: Chương 1 - Trần Quang Hải Bằng (ĐH giao thông Vận tải)
31 p | 80 | 2
-
Bài giảng Tin học đại cương: Bài 13 - Bùi Thị Thu Cúc
10 p | 78 | 2
-
Bài giảng Tin học đại cương: Tổng quan về cơ sở dữ liệu - ThS. Ngô Cao Định
11 p | 7 | 2
Chịu trách nhiệm nội dung:
Nguyễn Công Hà - Giám đốc Công ty TNHH TÀI LIỆU TRỰC TUYẾN VI NA
LIÊN HỆ
Địa chỉ: P402, 54A Nơ Trang Long, Phường 14, Q.Bình Thạnh, TP.HCM
Hotline: 093 303 0098
Email: support@tailieu.vn