Bài giảng Kiến trúc máy tính - Chương 3: Hàm và tổ chức chương trình cung cấp cho người học các kiến thức: Mở đầu, định nghĩa hàm, khai báo nguyên mẫu hàm, phạm vi của biến, hàm đệ quy, một số hàm chuẩn trong C,... Mời các bạn cùng tham khảo nội dung chi tiết.
3.1 Mở đầu Một chương trình viết C dãy hàm có hàm hàm main() Hàm đoạn chương trình độc lập, giải cơng việc hồn chỉnh sử dụng nhiều lần chương trình Hàm chia tốn lớn thành cơng việc nhỏ giúp cho việc thực công việc lặp lại cách nhanh chóng mà khơng cần viết lại mã lệnh chương trình Thứ tự hàm chương trình bất kỳ, song chương trình ln thực hàm main() Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3.2 Định nghĩa hàm Cú pháp tổng quát để định nghĩa hàm sau: Kiểu_trả_về tên_hàm (kiểu danh_sách_tham_số) { /* thân hàm */ Các_câu_lệnh ; return giá_trị ; } - Kiểu_trả_về kiểu kết cần trả hàm Nếu hàm không cần trả kết kiểu_trả_về void - Tên_hàm đặt tên theo quy tắc định danh Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3.2 Định nghĩa hàm - Danh_sách_tham_số: Tham số hàm phương tiện để truyền liệu cần thiết từ bên vào hàm từ hàm bên ngồi Nếu có nhiều tham số chúng phải cách dấu phẩy phải khai báo riêng biệt - Câu lệnh return dùng để kết thúc việc thực hàm (nếu hàm có giá trị trả về), trả kết chuyển quyền điều khiển nơi gọi hàm Giá trị kết phải có kiểu phù hợp với kiểu_trả_về khai báo dòng tiêu đề Cú pháp tổng quát lệnh return: return biểu_thức; Lưu ý: C không cho phép hàm lồng nhau, nghĩa phần định nghĩa hàm phải độc lập hoàn toàn với hàm khác Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3.2 Định nghĩa hàm ĐỊNH NGHĨA HÀM DÙNG LỆNH: #define Trong số trường hợp, định nghĩa hàm dùng lệnh #define đơn giản Cú pháp: #define Tên_hàm(Các_tham_số) Biểu_thức_Giá_trị VÍ DỤ: #define SUM(x, y) (x + y) //Tổng hai số #define SQR(x) (x*x) // Bình phương số #define MAX(x, y) (x > y) ? x : y //Tìm số lớn số Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3.3 Khai báo nguyên mẫu hàm Một khai báo nguyên mẫu hàm cung cấp cho trình biên dịch mơ tả hàm định nghĩa vị trí chương trình Cú pháp tổng quát khai báo nguyên mẫu hàm: Kiểu_trả_về tên_hàm (kiểu danh_sách_tham_số); Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3.4 Gọi hàm Cú pháp gọi hàm: Tên_hàm (danh_sách_đối_số) ; Cặp dấu ngoặc () bắt buộc phải có cho dù hàm có đối số không Trong danh_sách_đối_số không đưa kiểu liệu đối số Nếu hàm cần truyền nhiều đối số chúng phải tách dấu phẩy Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật Ví dụ 1: Hàm khơng có giá trị trả Kết chạy chương trình : - Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật Ví dụ 2: Hàm có giá trị trả Kết chạy chương trình : Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3.5 Phạm vi biến Phạm vi biến: vùng chương trình mà biến sử dụng Thời gian sống biến: khoảng thời gian biến tồn nhớ Mỗi biến sau khai báo cấp phát vùng nhớ để lưu trữ Đến thời điểm đó, vùng nhớ bị thu hồi lại để lưu trữ biến khác Biến sử dụng gồm hai loại là: - Biến toàn cục : khai báo bên tất hàm tác dụng tồn chương trình - Biến cục : khai báo thân hàm khối lệnh tác dụng phạm vi khai báo 10 Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3.6 Hàm đệ quy Hàm đệ quy hàm mà từ điểm thân gọi tên hàm Khi hàm gọi đệ quy lần gọi, máy tạo tập biến cục hoàn toàn độc lập với tập biến cục tạo từ lần gọi trước Số lần gọi đệ quy phải có giới hạn, tức việc gọi đệ quy phải có điểm dừng 11 Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật Xây dựng hàm đệ quy Hàm đệ quy thường viết theo dạng sau: if (trường_hợp_cơ_sở) { /*giải toán trả kết quả*/ } else /*trường_hợp_tổng_quát */ { //gọi đệ quy tới hàm với đối số truyền vào có giá trị khác } - Phần không đệ quy: bao gồm trường hợp sở giải trực tiếp, mà khơng cần đến toán Phần định tính dừng thuật tốn - Phần đệ quy: trường hợp tổng quát Bài toán quy tốn dạng nhỏ có giá trị tham số thay đổi 12 Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật Ví dụ: Hàm đệ quy tính n! Kết chạy chương trình: 13 Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3.7 Một số hàm chuẩn C Tên hàm Khai báo Ý nghĩa rand() stdlib.h Cho giá trị ngẫu nhiên từ đến 32767 random(x) stdlib.h Cho giá trị ngẫu nhiên từ đến x pow(x,y) math.h Tính x mũ y sqrt(x) math.h Tính bậc x sin(x), cos(x), tan(x) math.h Tính sin, cosin, tang góc x có số đo x radian abs(a) stdlid.h Cho giá trị tuyệt đối số nguyên a labs(a) stdlid.h Cho giá trị tuyệt đối số nguyên dài a exp(x) math.h Tính e mũ x log(x) math.h Tính logarit số e x log10(x) math.h Tính logarit số 10 x ceil(x) math.h Phần nguyên nhỏ không nhỏ x floor(x) math.h Phần nguyên lớn không lớn x 14 Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3.7 Một số hàm chuẩn C Tên hàm Khai báo Ý nghĩa atof(str) stdlib.h Chuyển chuỗi str sang giá trị số thực atoi(str) stdlib.h Chuyển chuỗi str sang số nguyên itoa(x,str,y) stdlib.h Chuyển số nguyên x sang chuỗi str theo số y tolower(x) ctype.h Đổi chữ hoa sang chữ thường toupper(x) ctype.h Đổi chữ thường sang chữ hoa strcat(a,b) string.h Thêm chuỗi b vào sau chuỗi a strcpy(a,b) string.h Sao chép chuỗi b vào a strlwr(s) string.h Chuyển chuỗi s sang chữ thường strupr(s) string.h Chuyễn chuỗi s sang chữ hoa strlen(s) math.h Trả độ dài chuỗi s 15 Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật Bài tập luyện tập Bài 1: Viết hàm kiểm tra số có phải số phương hay khơng ? hàm trả giá trị số kiểm tra số phương, ngược lại hàm trả giá trị Từ liệt kê số phương khoảng (m;n) Bài 2: Viết hàm kiểm tra số có phải số nguyên tố hay không ? hàm trả giá trị số kiểm tra số nguyên tố, ngược lại hàm trả giá trị 0.Từ liệt kê số nguyên tố khoảng (m;n) Bài 3: Viết chương trình chứa hàm để tính giai thừa số tự nhiên Trong hàm main() in hình hệ số số hạng thứ k khai triển nhị thức Newton : (a+b)100 ? 16 Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật Bài tập luyện tập Bài 4: Viết chương trình xuất hình hệ số số hạng khai triển nhị thức Newton (1+x)n với n nguyên dương nhập từ bàn phím Bài 5: Viết hàm đệ quy tính biểu thức sau : a) S = 1+2+3+…+n b) P = x*x*x*…*x (n lần số x) c) Q = 5+10+15+…+5*n Bài 6: Tính giá trị lớn nhỏ số ? Bài 7: Xuất hình tam giác Pascal với chiều cao n Bài 8: Viết hàm in số dạng máy tính bỏ túi với tham số hàm từ đến 17 Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật ... 5+10+15+…+5*n Bài 6: Tính giá trị lớn nhỏ số ? Bài 7: Xuất hình tam giác Pascal với chiều cao n Bài 8: Viết hàm in số dạng máy tính bỏ túi với tham số hàm từ đến 17 Khoa CNTT - Bài giảng THĐC - Khối... } - Kiểu_trả_về kiểu kết cần trả hàm Nếu hàm không cần trả kết kiểu_trả_về void - Tên_hàm đặt tên theo quy tắc định danh Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3. 2 Định nghĩa hàm -. .. là: - Biến toàn cục : khai báo bên tất hàm tác dụng tồn chương trình - Biến cục : khai báo thân hàm khối lệnh tác dụng phạm vi khai báo 10 Khoa CNTT - Bài giảng THĐC - Khối ngành kỹ thuật 3. 6