Bài giảng Nhập môn về lập trình - Chương 6: Hàm (Function) (Mới)
Chương 6
Ham (Function)
̀
Presenter:
Slide 1
Nhập môn về lập trình (C6)
Learning outcomes
L.O.4.1 – Xá c định được thành phần của một hàm.
L.O.4.2 – Hiện thực được giải thuật dưới dạng hàm.
L.O.4.3 – Giải thí ch được cá c kiểu truyền tham số trong C.
L.O.4.4 – Tổ chức được cá c chương trì nh lớn, gồm nhiều
hàm.
L.O.3.5 – Hiện thực được cá c giải thuật đệ quy bằng ngô n
ngữ C và hiểu được nguyên tắc hoạt động của nó .
Slide 2
Nhập môn về lập trình (C6)
Tổ chứ c chương trình C
Cấu trúc module
❖ Tiền xꢀ lꢁ:
• #include
Mô tꢃ module
#<Tiꢀn xꢁ lꢂ>
• #define
❖ Khai bꢂo / định nghꢃa:
• Hằng
Khai bꢄo / đꢅnh nghꢆa
Hꢇm 1
• Biꢄn
• Hꢅm/biꢄn extern
• Mô tả hꢅm
❖ Cꢂc hꢅm:
Hꢇm 2
• main được chạy đầu tiên.
• Định nghꢃa ngang cꢆp,
không lồng nhau.
Hꢇm 3
• Được gꢇi mới chạy.
Slide 3
Nhập môn về lập trình (C6)
Hàm là gì ?
❖ Hꢅm lꢅ phương tiện phân chia code của module ra nhiều
đơn vị nhỏ hơn để dễ quản lꢁ vꢅ sꢀa chữa.
❖ Một dꢈ ꢄn/giꢃi phꢄp/chương trꢉnh = tập hợp N module
❖ Một Module = tập hợp N hꢇm
Slide 4
Nhập môn về lập trình (C6)
Hàm là gì ?
❖ Hàm (function) tꢂch ứng dụng thꢅnh từng đơn vị độc lập
❖ Câu lệnh trong thân hꢅm
• được viꢄt một lần
• dùng được nhiều nơi trong ứng dụng
• che giꢆu đối với cꢂc hꢅm khꢂc
❖ Kinh nghiệm:
• Một phương thức thực hiện một tꢂc vụ
• Tên phương thức cần thể hiện tꢂc vụ đó
Slide 5
Nhập môn về lập trình (C6)
Hàm là gì ?
❖ Phải chia thꢅnh từng bꢅi toꢂn nhỏ vꢅ đơn giản hơn
• Kỹ thuật chia để trị (divide-and-conquer)
❖ Hoặc tꢂi sꢀ dụng cꢂc phương thức sẵn có (đã viꢄt) vꢅo
ứng dụng mới
• Tái sử dụng phần mềm (reusability)
❖ Trꢂnh việc viꢄt một cùng đoạn mã hai lần
❖ Dễ sꢀa lỗi vꢅ bổ sung tính năng về sau
Slide 6
Nhập môn về lập trình (C6)
Hàm là gì ?
❖ Khối lệnh: tập hợp của cꢂc lệnh
❖ VD 1:
if (delta > 0) {
x1 = (-b + sqrt(delta))/(2*a);
x2 = (-b - sqrt(delta))/(2*a);
}
❖ VD 2:
for (int i = 0; i < 10; i++)
{
temp = i*i;
sum += temp;
}
Slide 7
Nhập môn về lập trình (C6)
Hàm là gì ?
❖ Hꢅm cũng lꢅ tập hợp của những câu lệnh, nhưng
• Có tên
• Có tham số
• Có giꢂ trị trả về
❖ VD
float
{
average(float a, float b)
float val;
val = (a + b) /2;
return val;
}
Slide 8
Nhập môn về lập trình (C6)
Hàm là gì ?
void main()
{
float x1, x2, x3, x4;
printf("Input x1, x2, x3, x4: ");
scanf("%f %f %f %f", &x1, &x2, &x3, &x4);
printf("Average of x1, x2: %f\n", (x1+x2)/2);
printf("Average of x3, x4: %f\n", (x3+x4)/2);
}
Slide 9
Nhập môn về lập trình (C6)
Hàm là gì ?
float average(float a, float b){
float val;
val = (a + b) /2;
return val;
}
void main() {
float x1, x2, x3, x4, ave1, ave2;
printf("Input x1, x2, x3, x4: ");
scanf("%f %f %f %f", &x1, &x2, &x3, &x4);
ave1 = average(x1, x2);
ave2 = average(x3, x4);
printf("Average of x1, x2: %f\n", ave1);
printf("Average of x3, x4: %f\n", ave2);
}
Slide 10
Nhập môn về lập trình (C6)
Hàm là gì ?
float average(float a, float b){
float val;
val = (a + b) /2;
return val;
}
void main() {
float x1, x2, x3, x4;
printf("Input x1, x2, x3, x4: ");
scanf("%f %f %f %f", &x1, &x2, &x3, &x4);
printf("Average of x1, x2: %f\n", average(x1, x2));
printf("Average of x3, x4: %f\n", average(x3, x4));
}
Slide 11
Nhập môn về lập trình (C6)
Ca
́
́
̀
cu
̉
̀
Khai bꢄo hꢇm
❖ extern
❖ Mô tả trước
Hꢇm
Đꢅnh nghꢆa hꢇm
❖ Định nghꢃa biꢄn
❖ Lệnh thực thi
Gꢊi hꢇm
❖ Trực tiꢄp
❖ Giꢂn tiꢄp
Truyꢀn tham sꢋ hꢇm
❖ Trị
❖ Tham khảo
Slide 12
Nhập môn về lập trình (C6)
Các vấn đề của hàm
❖ Hꢅm gồm 4 phần:
• Kiểu của giá trị trả về
• Tên hàm
• Tham số.
• Thân hàm: các câu lệnh nằm trong cặp dấu { }.
◼ Ví dụ :
int FindMax (int x, int y) {
Ưu điểm:
-Kỹ thuật chia để trị (divide-and-
conquer)
-Tái sử dụng phần mềm
(reusability)
-Trꢂnh việc viꢄt một cùng đoạn mã hai
lần
int maximum;
if ( x > = y)
maximum = x;
else
maximum = y;
return maximum;
-Dễ sꢀa lỗi vꢅ bổ sung tính năng về sau
Slide 13
Nhập môn về lập trình (C6)
}
Các vấn đề của hàm
❖ <returnType> FunctionName (<parameter1, parameter2,
..., parameterX>)
{
...
}
i1
i2
o
…………….
Slide 14
Nhập môn về lập trình (C6)
Gọi hàm
int FindMax (int x, int y) {
int maximum;
if ( x >= y) maximum = x;
else
maximum = y;
return maximum;
}
void main(){
int m1 = FindMax(50, 100);
int m2, a = 14, b = 20;
m2 = FindMax(a, b);
printf("m1 = %d; m2 = %d", m1, m2);
}
Slide 15
Nhập môn về lập trình (C6)
Gọi hàm
void giaiptbac2(float a, float b, float c){
float delta = b*b - 4*a*c, x1, x2;
if(delta == 0) {
x1 = -b/(2*a);
x2 = -b/(2*a);
printf("Phuong trinh co nghiem kep x = %f\n", x1);
}
else if(delta > 0){
x1 = (-b + sqrt(delta))/(2*a);
x2 = (-b - sqrt(delta))/(2*a);
printf("Phuong trinh co 2 nghiem x1 = %f, x2 = %f\n", x1, x2);
}
else
printf("Phuong trinh vo nghiem\n");
}
Slide 16
Nhập môn về lập trình (C6)
Gọi hàm
void main()
{
giaiptbac2(5, -11, 6);
float
fltA = 7, fltB = -13, fltC = 6;
giaiptbac2(fltA, fltB, fltC);
}
Slide 17
Nhập môn về lập trình (C6)
Khai báo hàm
❖ Nꢄu định nghꢃa hꢅm xuꢆt hiện trước lời gꢇi hꢅm thì không
cần khai bꢂo.
❖ Nꢄu định nghꢃa hꢅm xuꢆt hiện sau lời gꢇi hꢅm thì cần
phải khai bꢂo (tùy từng môi trường lập trình)
Slide 18
Nhập môn về lập trình (C6)
Khai báo hàm
int maximum( int x, int y, int z) {
int max = x;
Lưu ꢂ:Có sự tương
ứng 1-1 giữa tham số
hình thức vꢅ tham số
thực
if ( y > max ) max = y;
if ( z > max ) max = z;
return max;
}
void main() {
int a, b, c;
printf( "Enter three integers: ");
scanf("%d %d %d", &a, &b, &c);
printf( "Maximum is: %d\n", maximum (a, b, c));
}
Slide 19
Nhập môn về lập trình (C6)
Khai báo hàm
int maximum( int x, int y, int z);
void main() {
int a, b, c;
printf( "Enter three integers: ");
scanf("%d %d %d", &a, &b, &c);
printf( "Maximum is: %d\n", maximum (a, b, c));
}
int maximum( int x, int y, int z) {
int max = x;
if ( y > max ) max = y;
if ( z > max ) max = z;
return max;
}
Slide 20
Nhập môn về lập trình (C6)
Tải về để xem bản đầy đủ
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Nhập môn về lập trình - Chương 6: Hàm (Function) (Mới)", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
File đính kèm:
bai_giang_nhap_mon_ve_lap_trinh_chuong_6_ham_function_moi.ppt

