[Tự Học Lập Trình C] Chương Trình Con Và Hàm

Trang chủPhat trien he thong [Tự học lập trình C] Chương trình con và hàm tháng 3 08, 2016 [Tự học lập trình C] Các khái niệm cơ bản trong ngôn ngữ lập trình C [Tự học lập trình C] Cấu trúc chương trình C [Tự học lập trình C] Hằng - biến - toán tử - biểu thức trong ngôn ngữ lập trình C [Tự học lập trình C] Nhập xuất dữ liệu trong ngôn ngữ lập trình C [Tự học lập trình C] Câu lệnh điều khiển rẽ nhánh [Tự học lập trình C] Câu lệnh lặp với số lần xác định trong ngôn ngữ C. [Tự học lập trình C] Câu lệnh lặp với số lần không xác định trước Một chương trình viết trong ngôn ngữ C là một dãy các hàm, trong đó có một hàm chính (hàm main()). Hàm chia các bài toán lớn thành các công việc nhỏ hơn, giúp thực hiện những công việc lặp lại nào đó một cách nhanh chóng mà không phải viết lại đoạn chương trình. Thứ tự các hàm trong chương trình là bất kỳ, song chương trình bao giờ cũng đi thực hiện từ hàm main(). Trong C chương trình con chỉ tồn tại dới dạng hàm chứ không có thủ tục. 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 có phép xây dựng một hàm bên trong các hàm khác. Khai báo và định nghĩa hàm Xây dựng một hàm bao gồm: khai báo kiểu hàm, đặt tên hàm, khai báo các đối và đưa ra câu lệnh cần thiết để thực hiện yêu cầu đề ra cho hàm. Một hàm được viết theo mẫu sau: <Kiểu_trả_về> <tên_hàm> ( [khai báo các tham số hình thức]) { [Khai báo các biến cục bộ] [Các câu lệnh] [return[biểu thức];] } Giải thích: - <Kiểu_trả_về>: giá trị kiểu dữ liệu của dữ liệu sẽ trả về cho hàm - <tên_hàm>: tên của hàm mà bạn muốn định nghĩa, được đặt theo qui tắc đặt tên của C - [khai báo các tham số hình thức]: các tham số hình thức và kiểu của chúng - [Khai báo các biến cục bộ]: khai báo các biến cục bộ, các biến này chỉ có tác dụng trong nội bộ hàm - [return]: là lệnh thực hiện gán giá trị trả về cho hàm - [biểu thức]: là giá trị trả về cho hàm, có thể là biến, hằng, biểu thức nhưng phải có giá trị xác định và có kiểu dữ liệu là kiểu đã khai báo cho hàm. Ví dụ 1: Hàm tìm giá trị lớn nhất giữa hai giá trị int tim_max(int a, int b) { if(a>=b) return a; else return b; } @ Chú ý: - Hàm có thể có giá trị trả về hoặc không, giá trị trả về phải cùng kiểu với kiểu trả về đã khai báo hàm. Nếu hàm không có giá trị trả về thì đặt từ khóa void trước tên hàm để báo hiệu là hàm không cần giá trị trả về cho hàm. - Khi hàm khai báo không có kiểu ở trước nó thì nó được mặc định là kiểu int. - Không nhất thiết phải khai báo nguyên mẫu hàm. Nhưng nói chung nên có vì nó cho phép chương trình biên dịch phát hiện lỗi khi gọi. - Nguyên mẫu của hàm thực chất là dòng đầu tiên của hàm thêm vào dấu;. Tuy nhiên, trong nguyên mẫu có thể bỏ tên các tham số hình thức. Ví dụ 2: Hàm in ra dãy số từ 1 đến n void In_dayso(int n) { for(int i=1;i<=n;i++) Printf(“%d”,i); } Hàm này không cần có giá trị trả về nên ta khai báo từ khóa void trước tên hàm. Lời gọi hàm Cú pháp: tên hàm ([Danh sách các tham số thực]) Danh sách các tham số thực phải bằng số tham số hình thức và lần lượt chúng có kiểu tương ứng với nhau. Ví dụ 3 #include <stdio.h> #include <conio.h> // khai bao prototype int tim_max(int a, int b); void main(void) { int a=5, b=7; printf(“Max là %d ”,tim_max(a,b)); getch(); } // ham so sanh a và b int tim_max(int a, int b) { if(a>=b) return a; else return b; } Tham số hình thức, tham số thực và biến cục bộ Các tham số dùng khi khai báo hàm được gọi là tham số hình thức. Các tham số được cung cấp cho hàm khi gọi hàm là tham số thực. Tham số thực có thể là một biểu thức, trong khi tham số hình thức thì không thể là 1 biểu thức. Dãy các tham số thực phải tương ứng về kiểu với tham số hình thức. Có những hàm không cần có tham số. Vì vậy, khi khai báo ta có thể dùng từ khóa void để báo rằng hàm không cần tham số. Ví dụ 4: Hàm in ra bảng cửu chương 2 void in_cuuchuong2(void) { for(int i=1;i<=10;i++) printf(“2 x %d = %d\n”, i, i*2); } Biến cục bộ là biến chỉ có phạm vi hoạt động trọng nội bộ hàm, được khia báo bên trong hàm. Do tham số thực và biến cục bộ đều có phạm vi hoạt động trong cùng một hàm nên tham số thực và biến cục bộ cần có tên khác nhau. Tham số hình thức và biến cục bộ có thể trùng tên với các đại lượng ngoài hàm mà không gây ra nhầm lẫn nào. Khi một hàm được gọi tới, việc đầu tiên là giá trị của các tham số thực được gán cho các tham số hình thức. Như vậy các tham số hình thức chính là các bản sao của các tham số thực. Hàm chỉ làm việc trên các tham số hình thức. Các tham số hình thức có thể bị biến đổi trong thân hàm, còn các tham số thực thì không bị thay đổi. Ví dụ 5: #include <stdio.h> #include <conio.h> // khai bao prototype int power(int, int); void main(void) { printf("2 mu 2 = %d.\n", power(2, 2)); printf("2 mu 3 = %d.\n", power(2, 3)); getch(); } // ham tinh so mu int power(int ix, int in) { int i, ip = 1; for(i = 1; i <= in; i++) ip *= ix; //tương đương với ip=ip*ix return ip; //giá trị trả về cho hàm } Giải thích chương trình: Hàm power có hai tham số truyền vào là ix, in có kiểu int và kiểu trả về cũng có kiểu int. Dòng lệnh: return ip, trả về giá trị sau khi tính toán Hai tham số ix, in của hàm power là dạng truyền tham trị. Ví dụ 6: #include <stdio.h> #include <conio.h> // khai bao prototype void time(int & , int &);//co the k can ghi tham so hinh thuc // ham doi phut thanh gio:phut void time(int &ig, int &ip) { ig = ip/60; ip %= 60; } void main(void) { int igio, iphut; printf("Nhap vao so phut: "); scanf("%d", &iphut); time(igio, iphut); printf("%02d:%02d\n", igio, iphut); getch(); } Giải thích chương trình: Hàm time có hai tham số hình thức là ig, ip có kiểu int. 2 tham số này có toán tử địa chỉ & đi trước cho biết 2 tham số này là dạng truyền tham biến. Quy tắc hoạt động của hàm Khi gặp một lời gọi hàm thì nó sẽ bắt đầu được thực hiện. Nói cách khác, khi máy gặp lời gọi hàm ở một vị trí nào đó trong chương trình, máy sẽ tạm dời chỗ đó và chuyển đến hàm tương ứng. Quá trình đó diễn ra theo trình tự sau: - Cấp phát bộ nhớ cho các biến cục bộ. - Gán giá trị của các tham số thực cho các tham số hình thức tương ứng. - Thực hiện các câu lệnh trong thân hàm. - Khi gặp câu lệnh return hoặc dấu } cuối cùng của thân hàm thì máy sẽ xoá các tham số hình thức, biến cục bộ và ra khỏi hàm. Nếu trở về từ một câu lệnh return có chứa biểu thức thì giá trị của biểu thức được gán cho hàm. Giá trị của hàm sẽ được sử dụng trong các biểu thức chứa nó. Bài tập thực hành: Viết lại các bài tập ở bài số 6 & 7 dưới dạng hàm. Bài tập có lời giải. 1.Viết một chương trình C++ để nhập một chuỗi từ bàn phím và in ra màn hìnhđộ dài của chuỗi đó. 2.Viết chương trình C++ để nhập một số nguyên và tìm lập phương của số đó. 3.Viết chương trình C++ để in ra màn hình số kế tiếp của số nguyên bạn vừa nhập. 4.Viết chương trình C++ để nhắc người dùng chọn một tùy chọn. Sau đó nhắc họnhập hai số nguyên và in kết quả tương ứng với tùy chọn đó. 5.Viết chương trình C++ để in một bảng cửu chương. 6.Viết chương trình C++ nhắc người dùng nhập 3 số nguyên và sau đó in các sốnhỏ nhất và lớn nhất bởi sử dụng hàm trong C++. 7.Viết chương trình C++ để tính giai thừa của một số nguyên dương sử dụnghàm trong C++. 8.Sử dụng nạp chồng hàm để xếp thứ tự 10 số nguyên, hoặc 10 giá trị long hoặc10 giá trị double trong cùng một chương trình C++. 9.Sử dụng khái niệm truyền mảng tới hàm để tính giá trị trung bình của cácgiá trị nguyên được nhập từ bàn phím. Các giá trị nguyên được lưu trữ trongmảng một chiều và được truyền tới hàm có tên là avg. 10.Viết chương trình C++ sử dụng khái niệm hàm đệ qui để tính tích sau: Sn= 11 *22 * 33 * 44 *...* nn. 11.Viết chương trình C++ để tìm giá trị trung bình với hàm friend. 12.Viết chương trình C++ để tính diện tích hình tròn, hình tam giác, hình chữnhật bởi sử dụng khái niệm nạp chồng hàm trong C++ tùy theo lựa chọn của ngườidùng. 13.Trao đổi giá trị giữa các số bởi sử dụng khái niệm Function Template trongC++. 14.Viết một chương trình C++ đểnhập hai giá trị và tính tích và lập phương của chúng bởi sử dụng khái niệminline function trong C++. Download bài giải ở đây. [Tự học lập trình C] Mảng một chiều Tags Phat trien he thong Mới hơn Cũ hơn

Popular Posts

[Thuật toán] Thuật toán tìm kiếm tuần tự

tháng 3 04, 2016 2

[Tự học lập trình C/C++] Viết hàm tính giá trị trung bình cộng của các phần tử có trong mảng.

tháng 5 06, 2016 3

[Tự học lập trình C/C++] Các lỗi thường gặp trong lập trình

tháng 5 17, 2016 4

[Hệ thống thông tin] Tổng quan về hệ thống thông tin

tháng 10 05, 2015

Đăng ký

Nhận thông báo qua email

Categories

  • Algorithm (27)
  • Chuyen nganh (64)
  • Cong nghe XML (1)
  • Cơ sở dữ liệu (3)
  • Cơ sở lập trình (2)
  • Design Pattern (2)
  • Download mẫu văn bản (1)
  • download winrar (1)
  • Downloads (4)
  • Đồ họa máy tính (6)
  • Giáo dục điện tử (3)
  • Hệ quản trị cơ sở dữ liệu (21)
  • Hệ quản trị cơ sở dữ liệu. (8)
  • Học Power point (2)
  • Hồ sơ xin việc (1)
  • Image processing (3)
  • Kiến trúc Web (1)
  • Lap trinh assembly (4)
  • Lap trinh C va C plus (65)
  • Lap trinh C va C++ (3)
  • Lap trinh C/C++ (2)
  • Lap trinh C# (6)
  • lap trinh co so du lieu (2)
  • Lap trinh he thong (9)
  • lap trinh hop ngu (7)
  • Lap trinh huong doi tuong voi Java (12)
  • lap trinh windows (3)
  • lập trình C (3)
  • lập trình với C# (2)
  • Lập trình windows (7)
  • Mẫu CV (1)
  • Nâng cao chất lượng ảnh (1)
  • News (8)
  • Ngẫm nghĩ (2)
  • Phan tich thiet ke he thong (1)
  • Phat trien he thong (42)
  • quangcaotructuyen (1)
  • Sách (9)
  • sách bán chạy (4)
  • Sách công nghệ thông tin (5)
  • sách kỹ năng (1)
  • SQL cơ bản và nâng cao (1)
  • su dung accsess (3)
  • sudungExcel (28)
  • sudungword (10)
  • System Information (19)
  • thiet bi tin hoc (2)
  • Thu nhan anh (1)
  • Thuật ngữ (1)
  • Thuongmaidientu (4)
  • Tin hoc dai cuong (1)
  • Tin hoc van phong (23)
  • trac nghiem (1)
  • trituenhantao (5)
  • Tư duy thiết kế (2)
  • Windows 7 USB Download Tool (1)
  • xulyanh (5)
  • xử lý ảnh (4)

Main Tags

  • Algorithm
  • Chuyen nganh
  • Cong nghe XML
  • Cơ sở dữ liệu
  • Cơ sở lập trình
  • Design Pattern
  • Download mẫu văn bản
  • download winrar
  • Downloads
  • Đồ họa máy tính
  • Giáo dục điện tử
  • Hệ quản trị cơ sở dữ liệu
  • Hệ quản trị cơ sở dữ liệu.
  • Học Power point
  • Hồ sơ xin việc
  • Image processing
  • Kiến trúc Web
  • Lap trinh assembly
  • Lap trinh C va C plus
  • Lap trinh C va C++
  • Lap trinh C/C++
  • Lap trinh C#
  • lap trinh co so du lieu
  • Lap trinh he thong
  • lap trinh hop ngu
  • Lap trinh huong doi tuong voi Java
  • lap trinh windows
  • lập trình C
  • lập trình với C#
  • Lập trình windows
  • Mẫu CV
  • Nâng cao chất lượng ảnh
  • News
  • Ngẫm nghĩ
  • Phan tich thiet ke he thong
  • Phat trien he thong
  • quangcaotructuyen
  • Sách
  • sách bán chạy
  • Sách công nghệ thông tin
  • sách kỹ năng
  • SQL cơ bản và nâng cao
  • su dung accsess
  • sudungExcel
  • sudungword
  • System Information
  • thiet bi tin hoc
  • Thu nhan anh
  • Thuật ngữ
  • Thuongmaidientu
  • Tin hoc dai cuong
  • Tin hoc van phong
  • trac nghiem
  • trituenhantao
  • Tư duy thiết kế
  • Windows 7 USB Download Tool
  • xulyanh
  • xử lý ảnh

Bài đăng phổ biến

Tập lệnh assembly của Intel 8086/8088 (Phần 3)

tháng 3 06, 2017 2

Tập lệnh assembly của Intel 8086/8088 (Phần 1)

tháng 3 06, 2017 3

[Tự học lập trình C] Chương trình con và hàm

tháng 3 08, 2016 Tin học cơ bản Copyright 2021 Tinhoccoban.net

Bài viết mới nhất

Tin học cơ bản - Nền tảng của mọi kỹ năng

Mọi thông tin trên blog đều được giữ bản quyền bởi Tin học cơ bản. Các bạn nếu muốn lấy thông tin từ blog vui lòng ghi rõ nguồn Tinhoccoban.net

TIN HỌC CƠ BẢN

Chia sẻ với ứng dụng khác Sao chép Liên kết bài đăng Sao chép

Biểu mẫu liên hệ

Từ khóa » Viết Chương Trình Con Trong C