SlideShare a Scribd company logo
1 of 65
Hàm
1
2
 Chương trình con: là một phần mã trong một
chương trình lớn hơn, phần mã này thực hiện một tác vụ cụ thể
và tương đối độc lập với phần mã còn lại Số lượng phần tử cố
định (tĩnh).
 Một chương trình con thường được viết mã sao cho nó có thể
được gọi nhiều lần từ nhiều nơi trong thời gian chạy của một
chương trình (có thể được gọi bởi chính nó). Truy xuất phần tử
thông qua chỉ số.
 Các chương trình con thường được tập trung thành các thư
viện, là một cơ chế quan trọng cho việc chia sẻ và tái sử dụng
mã.
Chương trình con
3
 Chương trình con có 2 loại: Thủ tục
(Procedure) và hàm (Function)
Thủ tục (PROCEDURE): Dùng để thực hiện một
hay nhiều nhiệm vụ nào đó.
Hàm (FUNCTION): Trả về một giá trị nào đó (có
kiểu vô hướng, kiểu string hoặc kiểu con trỏ).
Hàm có thể sử dụng trong các biểu thức.
Chương trình con
4
 Khi nào thì nên dùng thủ tục/hàm:
 Dùng hàm khi:
 Kết quả của bài toán trả về 1 giá trị duy nhất
(kiểu vô hướng, kiểu string hoặc kiểu con trỏ).
 Phát biểu gọi CHƯƠNG TRÌNH CON cần nằm trong
các biểu thức tính toán.
 Dùng thủ tục khi:
 Kết quả của bài toán không trả về giá trị nào
hoặc trả về nhiều giá trị hoặc trả về kiểu dữ liệu có cấu
trúc (Array, Record, File).
 Phát biểu gọi CHƯƠNG TRÌNH CON không
nằm trong các biểu thức tính toán.
Chương trình con
5
 Chương trình con được dùng khi xây dựng
các chương trình lớn nhằm:
 giảm đáng kể kích thước và chi phí của một chương trình/
 làm cho chương trình dễ theo dõi, dễ sửa chữa, nâng cao
độ tin cậy của ch ơng trình.ƣ
Một đặc điểm nổi bật của chương trình con là nó có tính đệ
quy nhờ thế mà nhiều bài toán được giải quyết dễ dàng.
Chương trình con trong ngôn ngữ C là hàm
Chương trình con
6
 Định nghĩa hàm gồm tên hàm, kiểu trả về,
các tham số và thân hàm (chứa các phát biểu
chương trình), thực thi một việc cụ thể.
 Dạng định nghĩa hàm:
trong đó:
Khai báo hàm, định nghĩa hàm
7
Kiểu trả về (return_type, còn gọi là kiểu hàm) tương
ứng với kiểu của giá trị mà hàm trả về thông qua phát
biểu return.
 Tên hàm (func_name) được đặt theo nguyên tắc đặt
tên, nhưng nên đặt tên sao cho dễ hiểu.
ParameterList là danh sách tham số, mỗi tham số
được xác định bởi kiểu dữ liệu và tên. Các tham số
phân cách nhau bởi dấu phẩy. Có thể là danh sách
rỗng.
 Phần thân hàm nằm giữa cặp ngoặc { và }.
Khai báo hàm, định nghĩa hàm
8
 Nếu không xác định return_type, mặc định sẽ là
kiểu int.
 Nếu hàm không trả về giá trị, dùng void (thay cho
return_type).
 Không được phép đặt định nghĩa hàm này trong một
hàm khác.
 Các hàm đ ợc định nghĩa không phải theo một thứƣ
tự nào.
Nếu có phát biểu gọi hàm trước khi hàm được định
nghĩa thì cần có một khai báo hàm trước lời gọi hàm
đó.
Khai báo hàm, định nghĩa hàm
9
Khai báo hàm, định nghĩa hàm
10
Khai báo hàm, định nghĩa hàm
11
 Khai báo hàm là đ a ra một “mẫu hàm”, môƣ
tả tên hàm, kiểu trả về và danh sách tham số.
 Kết thúc khai báo hàm với dấu chấm phẩy “;”.
 Dạng khai báo hàm:
return_type func_name (ParameterList)
Xét các ví dụ sau:
 void f1(int i, int j, float k);
 void f2(int a, b, float c); //??
 f3();
Khai báo hàm, định nghĩa hàm
12
 Chỉ với định nghĩa hàm, hàm đó chưa thực
thi. Hàm chỉ thực thi khi nó được gọi.
 Để “yêu cầu” một hàm thực thi, ta “gọi” tên
hàm cùng với các tham số thực sự:
func( arg1, arg2,…); //Lưu ý: không có kiểu dữ liệu
Gọi hàm
13
Gọi hàm
14
Tham số trong chương trình con
 Chương trình con có thể không cần tham số
mà chỉ có các biến riêng (biến cục bộ).
 Trường hợp cần chuyển các giá trị cho hàm
khi gọi hàm thì cần định nghĩa danh sách tham
số của hàm, còn gọi là các tham số hình thức.
 Mỗi giá trị thực chuyển cho hàm khi gọi hàm
được gọi là đối số (hay tham số thực).
 Mỗi khi gọi hàm, có thể chuyển các đối số
khác nhau.
15
Truyền tham số
 Để một hàm thực thi, cần gọi hàm với tên và
chuyển các đối số t ơng ứng với danh sáchƣ
tham số hình thức cả về kiểu và thứ tự.
 Truyền bằng tham trị:
 Là khi giá trị của đối số đ ợc sao chép vào choƣ
tham số hình thức. Nh vậy, các thay đổi choƣ
tham số hình thức (trong hàm) không làm thay đổi
đối với tham số thực.
 Mặc định, với cách khai báo danh sách tham số với
kiểu và tên, ta có cách chuyển tham trị.
16
Truyền tham số
 Phần tử có dữ liệu gồm 3 thành phần
 Truyền bằng tham chiếu:
 Khi muốn tham số hình thức và tham số thực cùng
địa chỉ (bản chất là cùng ô nhớ nh ng khác tên), taƣ
dùng cách chuyển tham chiếu cho hàm.
 Khai báo tham số của hàm với kí tự „& ngay tr ớc‟ ƣ
tên (giữa KDL và tên).
 Như vậy, mọi thay đổi đối với tham số hình thức
cũng làm thay đổi tham số thực.
 Có thể dùng chuyển tham chiếu để trả về giá trị cho
nơi gọi hàm.
17
Ví dụ
 So sánh 2 hàm hoán vị sau đây, dùng chuyển
tham chiếu và tham trị:
18
Giá trị trả về
 Một hàm không trả về giá trị khi hàm được khai
báo có kiểu là void.
 Ngược lại, hàm phải trả về giá trị có kiểu cùng với
kiểu trả về đã khai báo.
 Phát biểu return nhằm dừng thực thi hàm, trở về nơi
gọi nó; và còn được dùng để trả giá trị (tính toán được)
về cho nơi gọi hàm.
 Trong một hàm, có thể có nhiều phát biểu return,
nhưng chỉ 1 phát biểu return được thực thi.
 Trong một phát biểu return chỉ có 1 giá trị
được trả về.
19
Ví dụ
 Trong các định nghĩa hàm sau đây, có những
định nghĩa hàm không hợp lệ.
20
Phạm vi của biến
 Có 3 nơi cơ bản mà biến đ ợc khai báo:ƣ
 trong một hàm
 trong định nghĩa danh sách tham số của
hàm
 ngoài tất cả các hàm
 Tương ứng với vị trí xuất hiện của biến, có:
 Biến địa phương
 Tham số hình thức
 Biến toàn cục
21
Biến địa phương
 Các biến (hằng) đ ợc khai báo trong một hàmƣ
được gọi là các biến địa phương.
 Biến có thể đ ợc khai báo bất kì đâu trongƣ
hàm, chỉ các phát biểu trong cùng khối mới có
thể truy xuất.
 Biến địa phương chỉ tồn tại (thời gian sống)
trong khi khối lệnh có chứa khai báo biến đó
thực thi.
 Khối lệnh hoặc hàm khác không thể truy xuất
chúng.
02/04/15 22Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Tham số hình thức
 Dùng tham số hình thức để chuyển các giá trị
cho hàm.
 Các tham số hình thức đ ợc dùng như biếnƣ
địa phương.Nghĩa là:
 biến chỉ đ ợc sinh ra khi hàm đ ợc gọiƣ ƣ
thực thi và bị hủy khi hàm thực thi xong.
 Chỉ đ ợc truy xuất bởi các phát biểu trongƣ
hàm đó.
23
Biến toàn cục
 Để tạo biến (hằng) toàn cục, khai báo biến
(hằng) ngoài tất cả các hàm.
 Biến toàn cục có thể đ ợc truy xuất bởi cácƣ
phát biểu ở bất kì đâu trong ch ơng trình kể từƣ
sau khi nó đ ợc định nghĩa (khai báo).ƣ
 Thời gian sống của biến toàn cục là suốt quá
trình ch ơng trình thực thi.ƣ
02/04/15 24Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Ví dụ
25
Trường hợp trùng tên biến
 Không thể định nghĩa hai biến trùng tên trong
cùng khối.
 Nếu có biến địa ph ơng trong hàm trùng tênƣ
với biến toàn cục, thì trong hàm đó, mặc định sẽ
truy xuất đến biến địa ph ơng.ƣ
Để truy xuất đến biến toàn cục, ta dùng phép
toán phân định phạm vi, là dấu hai chấm kép [::]
ngay trước tên biến.
26
Ví dụ
02/04/15 27Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng
 Mảng là một nhóm các biến có cùng tên, cùng
kiểu dữ liệu.
Mảng có thể là một hoặc nhiều chiều.
Mỗi phần tử (mỗi biến) của mảng đ ợc truyƣ
xuất thông qua chỉ số.
 Mảng một chiều a có 8 phần tử, hiện có 4
phần tử đã được gán giá trị.
02/04/15 28Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Ví dụ
Mẫu khai báo: <kiểu dữ liệu>
TenBien[MAX] ;
 TenBien: theo nguyên tắc đặt tên,
 MAX: phải là hằng (hằng khai báo, hằng giá trị,
…).
 Ví dụ:
 #define MAX 20
 int a[10];
 int b[MAX]
 double m[MAX]
02/04/15 29Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Định nghĩa mảng một chiều
Ví dụ:
 #define MAX 20
 int a[10];
 int b[MAX]
 double m[MAX]
V i khai báo trên:ớ
Là ta đã định nghĩa một mảng có MAX phần tử
T t c ph n tấ ả ầ ử(bi n)ế này có cùng ki u d li u.ể ữ ệ
M i ph n t c a m ng cóỗ ầ ử ủ ả ch sỉ ố từ [0]->[MAX–1].
02/04/15 30Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Định nghĩa mảng một chiều
Ví dụ:
 Char s[50]; => đ nh nghĩa 50 bi n ki uị ế ể char g m :ồ
s[0], s[1], s[2],…s[49].
 s[0]=‘H’, s[1]=‘e’, s[2]=‘l’;
02/04/15 31Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Định nghĩa mảng một chiều
02/04/15 32Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Định nghĩa mảng một chiều
02/04/15 33Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Định nghĩa mảng một chiều
02/04/15 34Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Định nghĩa mảng một chiều
Ví dụ:
Đ khai báo m ng s nguyên có 25 ph n tể ả ố ầ ử
v i tên làớ mg là:
int mg[25];
Hay
#define MAX 25
int mg[MAX];
02/04/15 35Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Lưu trữ
Khi mảng được định nghĩa:
 Vùng nhớ cho các phần tử của mảng được cấp
phát là các ô nhớ liền nhau.
 M i ph n t chi m s byte tùy thu c ki u d li u.ỗ ầ ử ế ố ộ ể ữ ệ
 Sizeof (<tên bi n m ngế ả >); => cho bi t t ng sế ổ ố
byte c a m ng.ủ ả
02/04/15 36Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Lưu trữ
02/04/15 37Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Lưu ý
02/04/15 38Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Lưu ý
02/04/15 39Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Lưu ý
02/04/15 40Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
khởi tạo
02/04/15 41Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
khởi tạo
02/04/15 42Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
khởi tạo
02/04/15 43Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
khởi tạo
02/04/15 44Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
- Tham số được khai báo như khai báo biến
mảng.
- Có thể không cần xác định số phần tử của mảng
- Mảng được chuyển tham chiếu
Vd:Hàm xuất nội dung một mảng các số nguyên:
void xuatMang(int a[], int N);
Vd:Hàm nhập nội dung một mảng các số nguyên:
void nhapMang(int a[], int &N);// lưu ý khi
nhập N trong hàm
02/04/15 45Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 46Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 47Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
Tham số được khai báo như khai báo biến
mảng.
- Có thể không cần xác định số phần tử của
mảng
-Mảng được chuyển tham chiếu
-Vd:Hàm tính tổng các phần tử của mảng
nguyên(vd: a = [3 7 4 9] =>S= 23)
int tinhTong(int a[], int N);
02/04/15 48Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 49Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 50Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 51Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 52Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 53Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 54Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 55Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 56Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 57Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 58Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 59Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 60Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 61Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 62Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 63Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 64Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm
02/04/15 65Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng
Biến mảng là tham số của hàm

More Related Content

What's hot

Tai lieu lap trinh c cho 8051
Tai lieu lap trinh c cho 8051Tai lieu lap trinh c cho 8051
Tai lieu lap trinh c cho 8051engineertrongbk
 
Ky thuat lap trinh c++
Ky thuat lap trinh c++Ky thuat lap trinh c++
Ky thuat lap trinh c++ptquang160492
 
Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051Mr Giap
 
Phan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhconPhan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhconLy hai
 
Thực hành lập trình led đơn codientu.info--
Thực hành lập trình led đơn   codientu.info--Thực hành lập trình led đơn   codientu.info--
Thực hành lập trình led đơn codientu.info--trungnb22
 
Chương trình dịch nguyễn văn linh[bookbooming.com]
Chương trình dịch   nguyễn văn linh[bookbooming.com]Chương trình dịch   nguyễn văn linh[bookbooming.com]
Chương trình dịch nguyễn văn linh[bookbooming.com]bookbooming1
 
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lậpXây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lậpnataliej4
 
C cho 8051
C cho 8051C cho 8051
C cho 8051Nhan Bui
 
Lập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiểnLập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiểnMr Giap
 
Giáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtGiáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtMôi Trường Việt
 
Phong cach lap trinh c++
Phong cach lap trinh c++Phong cach lap trinh c++
Phong cach lap trinh c++ptquang160492
 
Tin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4uTin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4uXephang Daihoc
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functionsHồ Lợi
 

What's hot (15)

Tai lieu lap trinh c cho 8051
Tai lieu lap trinh c cho 8051Tai lieu lap trinh c cho 8051
Tai lieu lap trinh c cho 8051
 
Ky thuat lap trinh c++
Ky thuat lap trinh c++Ky thuat lap trinh c++
Ky thuat lap trinh c++
 
Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051Lập trình C cho VĐK 8051
Lập trình C cho VĐK 8051
 
Phan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhconPhan2 chuong5 ctrinhcon
Phan2 chuong5 ctrinhcon
 
Thực hành lập trình led đơn codientu.info--
Thực hành lập trình led đơn   codientu.info--Thực hành lập trình led đơn   codientu.info--
Thực hành lập trình led đơn codientu.info--
 
Kế toán Excel
Kế toán ExcelKế toán Excel
Kế toán Excel
 
Chương trình dịch nguyễn văn linh[bookbooming.com]
Chương trình dịch   nguyễn văn linh[bookbooming.com]Chương trình dịch   nguyễn văn linh[bookbooming.com]
Chương trình dịch nguyễn văn linh[bookbooming.com]
 
ưU tiên trong c
ưU tiên trong cưU tiên trong c
ưU tiên trong c
 
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lậpXây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
Xây dựng mô hình gián đoạn của động cơ một chiều kích từ độc lập
 
C cho 8051
C cho 8051C cho 8051
C cho 8051
 
Lập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiểnLập trình C cơ bản cho vi điều khiển
Lập trình C cơ bản cho vi điều khiển
 
Giáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việtGiáo trình c++ full tiếng việt
Giáo trình c++ full tiếng việt
 
Phong cach lap trinh c++
Phong cach lap trinh c++Phong cach lap trinh c++
Phong cach lap trinh c++
 
Tin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4uTin học ứng dụng trong kinh doanh data4u
Tin học ứng dụng trong kinh doanh data4u
 
Lect04 functions
Lect04 functionsLect04 functions
Lect04 functions
 

Similar to Ltc 6

THCS_W11_BaiDocThem
THCS_W11_BaiDocThemTHCS_W11_BaiDocThem
THCS_W11_BaiDocThemCNTT-DHQG
 
Giáo trình pascal cho gv hs thpt
Giáo trình pascal cho gv hs thptGiáo trình pascal cho gv hs thpt
Giáo trình pascal cho gv hs thptTâm Phan
 
Gt ung dung tin hoc trong kinh doanh
Gt ung dung tin hoc trong kinh doanhGt ung dung tin hoc trong kinh doanh
Gt ung dung tin hoc trong kinh doanhvantai30
 
Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗipnanhvn
 
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.comBài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.commai_non
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoHuy Nguyễn
 
10. C - Function And Operator Overload
10. C   - Function And Operator Overload10. C   - Function And Operator Overload
10. C - Function And Operator OverloadDarian Pruitt
 
lap trinh assembly cho VXL
lap trinh  assembly cho VXLlap trinh  assembly cho VXL
lap trinh assembly cho VXLThân Khương
 
Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàmLAnhHuy4
 
LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2pnanhvn
 

Similar to Ltc 6 (20)

Session 15
Session 15Session 15
Session 15
 
THCS_W11_BaiDocThem
THCS_W11_BaiDocThemTHCS_W11_BaiDocThem
THCS_W11_BaiDocThem
 
Giáo trình pascal cho gv hs thpt
Giáo trình pascal cho gv hs thptGiáo trình pascal cho gv hs thpt
Giáo trình pascal cho gv hs thpt
 
Gt ung dung tin hoc trong kinh doanh
Gt ung dung tin hoc trong kinh doanhGt ung dung tin hoc trong kinh doanh
Gt ung dung tin hoc trong kinh doanh
 
Hàm và Chuỗi
Hàm và ChuỗiHàm và Chuỗi
Hàm và Chuỗi
 
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.comBài giảng Lập trình cơ bản - truongkinhtethucpham.com
Bài giảng Lập trình cơ bản - truongkinhtethucpham.com
 
Lap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_caoLap trinh c_tu_co_ban_den_nang_cao
Lap trinh c_tu_co_ban_den_nang_cao
 
Ch assembly
Ch assemblyCh assembly
Ch assembly
 
Chuong 2
Chuong 2Chuong 2
Chuong 2
 
Phong cach lap trinh c++
Phong cach lap trinh c++Phong cach lap trinh c++
Phong cach lap trinh c++
 
Chuong 01 mo dau
Chuong 01 mo dauChuong 01 mo dau
Chuong 01 mo dau
 
10. C - Function And Operator Overload
10. C   - Function And Operator Overload10. C   - Function And Operator Overload
10. C - Function And Operator Overload
 
Web201 slide 3
Web201   slide 3Web201   slide 3
Web201 slide 3
 
lap trinh assembly cho VXL
lap trinh  assembly cho VXLlap trinh  assembly cho VXL
lap trinh assembly cho VXL
 
Chuong 05 mang, con tro, tham chieu
Chuong 05 mang, con tro, tham chieuChuong 05 mang, con tro, tham chieu
Chuong 05 mang, con tro, tham chieu
 
Chuong 08 tai dinh nghia
Chuong 08 tai dinh nghiaChuong 08 tai dinh nghia
Chuong 08 tai dinh nghia
 
Ham excel
Ham excelHam excel
Ham excel
 
Chuong 05
Chuong 05Chuong 05
Chuong 05
 
Hàm và nạp chồng hàm
Hàm và nạp chồng hàmHàm và nạp chồng hàm
Hàm và nạp chồng hàm
 
LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2LAP TRINH C - SESSION 2
LAP TRINH C - SESSION 2
 

Ltc 6

  • 2. 2  Chương trình con: là một phần mã trong một chương trình lớn hơn, phần mã này thực hiện một tác vụ cụ thể và tương đối độc lập với phần mã còn lại Số lượng phần tử cố định (tĩnh).  Một chương trình con thường được viết mã sao cho nó có thể được gọi nhiều lần từ nhiều nơi trong thời gian chạy của một chương trình (có thể được gọi bởi chính nó). Truy xuất phần tử thông qua chỉ số.  Các chương trình con thường được tập trung thành các thư viện, là một cơ chế quan trọng cho việc chia sẻ và tái sử dụng mã. Chương trình con
  • 3. 3  Chương trình con có 2 loại: Thủ tục (Procedure) và hàm (Function) Thủ tục (PROCEDURE): Dùng để thực hiện một hay nhiều nhiệm vụ nào đó. Hàm (FUNCTION): Trả về một giá trị nào đó (có kiểu vô hướng, kiểu string hoặc kiểu con trỏ). Hàm có thể sử dụng trong các biểu thức. Chương trình con
  • 4. 4  Khi nào thì nên dùng thủ tục/hàm:  Dùng hàm khi:  Kết quả của bài toán trả về 1 giá trị duy nhất (kiểu vô hướng, kiểu string hoặc kiểu con trỏ).  Phát biểu gọi CHƯƠNG TRÌNH CON cần nằm trong các biểu thức tính toán.  Dùng thủ tục khi:  Kết quả của bài toán không trả về giá trị nào hoặc trả về nhiều giá trị hoặc trả về kiểu dữ liệu có cấu trúc (Array, Record, File).  Phát biểu gọi CHƯƠNG TRÌNH CON không nằm trong các biểu thức tính toán. Chương trình con
  • 5. 5  Chương trình con được dùng khi xây dựng các chương trình lớn nhằm:  giảm đáng kể kích thước và chi phí của một chương trình/  làm cho chương trình dễ theo dõi, dễ sửa chữa, nâng cao độ tin cậy của ch ơng trình.ƣ Một đặc điểm nổi bật của chương trình con là nó có tính đệ quy nhờ thế mà nhiều bài toán được giải quyết dễ dàng. Chương trình con trong ngôn ngữ C là hàm Chương trình con
  • 6. 6  Định nghĩa hàm gồm tên hàm, kiểu trả về, các tham số và thân hàm (chứa các phát biểu chương trình), thực thi một việc cụ thể.  Dạng định nghĩa hàm: trong đó: Khai báo hàm, định nghĩa hàm
  • 7. 7 Kiểu trả về (return_type, còn gọi là kiểu hàm) tương ứng với kiểu của giá trị mà hàm trả về thông qua phát biểu return.  Tên hàm (func_name) được đặt theo nguyên tắc đặt tên, nhưng nên đặt tên sao cho dễ hiểu. ParameterList là danh sách tham số, mỗi tham số được xác định bởi kiểu dữ liệu và tên. Các tham số phân cách nhau bởi dấu phẩy. Có thể là danh sách rỗng.  Phần thân hàm nằm giữa cặp ngoặc { và }. Khai báo hàm, định nghĩa hàm
  • 8. 8  Nếu không xác định return_type, mặc định sẽ là kiểu int.  Nếu hàm không trả về giá trị, dùng void (thay cho return_type).  Không được phép đặt định nghĩa hàm này trong một hàm khác.  Các hàm đ ợc định nghĩa không phải theo một thứƣ tự nào. Nếu có phát biểu gọi hàm trước khi hàm được định nghĩa thì cần có một khai báo hàm trước lời gọi hàm đó. Khai báo hàm, định nghĩa hàm
  • 9. 9 Khai báo hàm, định nghĩa hàm
  • 10. 10 Khai báo hàm, định nghĩa hàm
  • 11. 11  Khai báo hàm là đ a ra một “mẫu hàm”, môƣ tả tên hàm, kiểu trả về và danh sách tham số.  Kết thúc khai báo hàm với dấu chấm phẩy “;”.  Dạng khai báo hàm: return_type func_name (ParameterList) Xét các ví dụ sau:  void f1(int i, int j, float k);  void f2(int a, b, float c); //??  f3(); Khai báo hàm, định nghĩa hàm
  • 12. 12  Chỉ với định nghĩa hàm, hàm đó chưa thực thi. Hàm chỉ thực thi khi nó được gọi.  Để “yêu cầu” một hàm thực thi, ta “gọi” tên hàm cùng với các tham số thực sự: func( arg1, arg2,…); //Lưu ý: không có kiểu dữ liệu Gọi hàm
  • 14. 14 Tham số trong chương trình con  Chương trình con có thể không cần tham số mà chỉ có các biến riêng (biến cục bộ).  Trường hợp cần chuyển các giá trị cho hàm khi gọi hàm thì cần định nghĩa danh sách tham số của hàm, còn gọi là các tham số hình thức.  Mỗi giá trị thực chuyển cho hàm khi gọi hàm được gọi là đối số (hay tham số thực).  Mỗi khi gọi hàm, có thể chuyển các đối số khác nhau.
  • 15. 15 Truyền tham số  Để một hàm thực thi, cần gọi hàm với tên và chuyển các đối số t ơng ứng với danh sáchƣ tham số hình thức cả về kiểu và thứ tự.  Truyền bằng tham trị:  Là khi giá trị của đối số đ ợc sao chép vào choƣ tham số hình thức. Nh vậy, các thay đổi choƣ tham số hình thức (trong hàm) không làm thay đổi đối với tham số thực.  Mặc định, với cách khai báo danh sách tham số với kiểu và tên, ta có cách chuyển tham trị.
  • 16. 16 Truyền tham số  Phần tử có dữ liệu gồm 3 thành phần  Truyền bằng tham chiếu:  Khi muốn tham số hình thức và tham số thực cùng địa chỉ (bản chất là cùng ô nhớ nh ng khác tên), taƣ dùng cách chuyển tham chiếu cho hàm.  Khai báo tham số của hàm với kí tự „& ngay tr ớc‟ ƣ tên (giữa KDL và tên).  Như vậy, mọi thay đổi đối với tham số hình thức cũng làm thay đổi tham số thực.  Có thể dùng chuyển tham chiếu để trả về giá trị cho nơi gọi hàm.
  • 17. 17 Ví dụ  So sánh 2 hàm hoán vị sau đây, dùng chuyển tham chiếu và tham trị:
  • 18. 18 Giá trị trả về  Một hàm không trả về giá trị khi hàm được khai báo có kiểu là void.  Ngược lại, hàm phải trả về giá trị có kiểu cùng với kiểu trả về đã khai báo.  Phát biểu return nhằm dừng thực thi hàm, trở về nơi gọi nó; và còn được dùng để trả giá trị (tính toán được) về cho nơi gọi hàm.  Trong một hàm, có thể có nhiều phát biểu return, nhưng chỉ 1 phát biểu return được thực thi.  Trong một phát biểu return chỉ có 1 giá trị được trả về.
  • 19. 19 Ví dụ  Trong các định nghĩa hàm sau đây, có những định nghĩa hàm không hợp lệ.
  • 20. 20 Phạm vi của biến  Có 3 nơi cơ bản mà biến đ ợc khai báo:ƣ  trong một hàm  trong định nghĩa danh sách tham số của hàm  ngoài tất cả các hàm  Tương ứng với vị trí xuất hiện của biến, có:  Biến địa phương  Tham số hình thức  Biến toàn cục
  • 21. 21 Biến địa phương  Các biến (hằng) đ ợc khai báo trong một hàmƣ được gọi là các biến địa phương.  Biến có thể đ ợc khai báo bất kì đâu trongƣ hàm, chỉ các phát biểu trong cùng khối mới có thể truy xuất.  Biến địa phương chỉ tồn tại (thời gian sống) trong khi khối lệnh có chứa khai báo biến đó thực thi.  Khối lệnh hoặc hàm khác không thể truy xuất chúng.
  • 22. 02/04/15 22Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Tham số hình thức  Dùng tham số hình thức để chuyển các giá trị cho hàm.  Các tham số hình thức đ ợc dùng như biếnƣ địa phương.Nghĩa là:  biến chỉ đ ợc sinh ra khi hàm đ ợc gọiƣ ƣ thực thi và bị hủy khi hàm thực thi xong.  Chỉ đ ợc truy xuất bởi các phát biểu trongƣ hàm đó.
  • 23. 23 Biến toàn cục  Để tạo biến (hằng) toàn cục, khai báo biến (hằng) ngoài tất cả các hàm.  Biến toàn cục có thể đ ợc truy xuất bởi cácƣ phát biểu ở bất kì đâu trong ch ơng trình kể từƣ sau khi nó đ ợc định nghĩa (khai báo).ƣ  Thời gian sống của biến toàn cục là suốt quá trình ch ơng trình thực thi.ƣ
  • 24. 02/04/15 24Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Ví dụ
  • 25. 25 Trường hợp trùng tên biến  Không thể định nghĩa hai biến trùng tên trong cùng khối.  Nếu có biến địa ph ơng trong hàm trùng tênƣ với biến toàn cục, thì trong hàm đó, mặc định sẽ truy xuất đến biến địa ph ơng.ƣ Để truy xuất đến biến toàn cục, ta dùng phép toán phân định phạm vi, là dấu hai chấm kép [::] ngay trước tên biến.
  • 27. 02/04/15 27Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng  Mảng là một nhóm các biến có cùng tên, cùng kiểu dữ liệu. Mảng có thể là một hoặc nhiều chiều. Mỗi phần tử (mỗi biến) của mảng đ ợc truyƣ xuất thông qua chỉ số.  Mảng một chiều a có 8 phần tử, hiện có 4 phần tử đã được gán giá trị.
  • 28. 02/04/15 28Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Ví dụ
  • 29. Mẫu khai báo: <kiểu dữ liệu> TenBien[MAX] ;  TenBien: theo nguyên tắc đặt tên,  MAX: phải là hằng (hằng khai báo, hằng giá trị, …).  Ví dụ:  #define MAX 20  int a[10];  int b[MAX]  double m[MAX] 02/04/15 29Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Định nghĩa mảng một chiều
  • 30. Ví dụ:  #define MAX 20  int a[10];  int b[MAX]  double m[MAX] V i khai báo trên:ớ Là ta đã định nghĩa một mảng có MAX phần tử T t c ph n tấ ả ầ ử(bi n)ế này có cùng ki u d li u.ể ữ ệ M i ph n t c a m ng cóỗ ầ ử ủ ả ch sỉ ố từ [0]->[MAX–1]. 02/04/15 30Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Định nghĩa mảng một chiều
  • 31. Ví dụ:  Char s[50]; => đ nh nghĩa 50 bi n ki uị ế ể char g m :ồ s[0], s[1], s[2],…s[49].  s[0]=‘H’, s[1]=‘e’, s[2]=‘l’; 02/04/15 31Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Định nghĩa mảng một chiều
  • 32. 02/04/15 32Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Định nghĩa mảng một chiều
  • 33. 02/04/15 33Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Định nghĩa mảng một chiều
  • 34. 02/04/15 34Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Định nghĩa mảng một chiều Ví dụ: Đ khai báo m ng s nguyên có 25 ph n tể ả ố ầ ử v i tên làớ mg là: int mg[25]; Hay #define MAX 25 int mg[MAX];
  • 35. 02/04/15 35Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Lưu trữ Khi mảng được định nghĩa:  Vùng nhớ cho các phần tử của mảng được cấp phát là các ô nhớ liền nhau.  M i ph n t chi m s byte tùy thu c ki u d li u.ỗ ầ ử ế ố ộ ể ữ ệ  Sizeof (<tên bi n m ngế ả >); => cho bi t t ng sế ổ ố byte c a m ng.ủ ả
  • 36. 02/04/15 36Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Lưu trữ
  • 37. 02/04/15 37Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Lưu ý
  • 38. 02/04/15 38Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Lưu ý
  • 39. 02/04/15 39Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Lưu ý
  • 40. 02/04/15 40Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng khởi tạo
  • 41. 02/04/15 41Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng khởi tạo
  • 42. 02/04/15 42Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng khởi tạo
  • 43. 02/04/15 43Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng khởi tạo
  • 44. 02/04/15 44Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm - Tham số được khai báo như khai báo biến mảng. - Có thể không cần xác định số phần tử của mảng - Mảng được chuyển tham chiếu Vd:Hàm xuất nội dung một mảng các số nguyên: void xuatMang(int a[], int N); Vd:Hàm nhập nội dung một mảng các số nguyên: void nhapMang(int a[], int &N);// lưu ý khi nhập N trong hàm
  • 45. 02/04/15 45Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 46. 02/04/15 46Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 47. 02/04/15 47Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm Tham số được khai báo như khai báo biến mảng. - Có thể không cần xác định số phần tử của mảng -Mảng được chuyển tham chiếu -Vd:Hàm tính tổng các phần tử của mảng nguyên(vd: a = [3 7 4 9] =>S= 23) int tinhTong(int a[], int N);
  • 48. 02/04/15 48Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 49. 02/04/15 49Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 50. 02/04/15 50Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 51. 02/04/15 51Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 52. 02/04/15 52Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 53. 02/04/15 53Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 54. 02/04/15 54Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 55. 02/04/15 55Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 56. 02/04/15 56Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 57. 02/04/15 57Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 58. 02/04/15 58Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 59. 02/04/15 59Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 60. 02/04/15 60Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 61. 02/04/15 61Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 62. 02/04/15 62Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 63. 02/04/15 63Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 64. 02/04/15 64Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm
  • 65. 02/04/15 65Bộ môn KHMT - Khoa CNTT - Trường ĐH Tôn Đức Thắng Biến mảng là tham số của hàm