TRƯỜNG ĐẠI HỌC KHOA HỌC TỰ NHIÊN TP.HCM
KHOA CÔNG NGHỆ THƠNG TIN
HỆ CHÍNH QUI – LỚP CỬ NHÂN TÀI NĂNG 2014
MƠN: NHẬP MƠN LẬP TRÌNH
BÀI TẬP THỰC HÀNH
Tuần 5
HÀM VÀ TỔ CHỨC MÃ NGUỒN
ĐẶNG HOÀNG HẢI
ĐỖ NGUYÊN KHA
TP.HCM, ngày 10 tháng 11 năm 2014
{dhhai, dnkha}@fit.hcmus.edu.vn
1 Bài tập về hàm
PHẦN 1
Viết một chương trình cung cấp các chức năng tương ứng với các hàm dưới đây (Bài tập
1 đến Bài tập 5). Xây dựng menu chương trình cho phép người dùng chọn sử dụng 1
trong 5 chức năng. Sau khi thực hiện xong chức năng cho phép người dùng chọn một
chức năng khác. Kết thúc chương trình khi người dùng nhập 0.
Bài tập 1: Viết hàm tính giá trị n! , với n là số nguyên dương và n > 1.
Bài tập 2: Viết hàm để kiểm tra một ngày nào đó có hợp lệ hay không, kiểm tra năm
nhuận.
Bài tập 3: Viết hàm để nhận biết một số nguyên dương có phải là số nguyên tố hay
không.
Bài tập 4: Viết hàm xuất ra màn hình dãy số Fibonanci thứ n
Bài tập 5: Viết hàm tính tổ hợp C(n, k)
PHẦN 2
Bài tập 6:
Viết chương trình tính giai thừa với 3 cài đặt khác nhau: stub (trả về số nguyên bất kỳ),
stirling (sử dụng công thức xấp xỉ Stirling làm tròn thành số nguyên), accurate (trả về kết
quả chính xác)
Cơng thức xấp xỉ Stirling 𝑛! ≈ 2𝜋𝑛
! !
!
Nộp các tập tin mã nguồn, tập tin build.bat chứa các lệnh đã sử dụng và tập tin
BaoCao.doc/docx chứa bảng so sánh kết quả của 3 chương trình cài đặt với ít nhất 10 giá
trị n cho trước, các nhận xét khác (nếu có)
2 Hướng dẫn biên dịch, liên kết và thực thi từ dòng lệnh
Sử dụng MinGW đã học:
• Tập tin mã nguồn là C++ thì sử dụng g++ để biên dịch, cú pháp tương tự
g++ -c hello.cpp
3
{dhhai, dnkha}@fit.hcmus.edu.vn
• Dù ngơn ngữ lập trình C/C++ đều sử dụng lệnh gcc –o file.o để liên kết mã
• Nếu chương trình có nhiều tập tin mã nguồn thì biên dịch từng tập tin thành
các tập tin .o tương ứng. Chỉ biên dịch tập tin mã nguồn .c, .cpp không biên
dịch những tập tin .h
gcc -c file1.c file2.c [filen.c]
• Liên kết nhiều tập tin .o
gcc –o program.exe file1.o file2.o [filen.o]
3 Bài tập trên lớp
Sử dụng bộ công GNU, xây dựng chương trình tìm ước số chung lớn nhất của 2 số
nguyên dương đáp ứng các yêu cầu sau:
1. Bao gồm các tập tin:
• main.cpp: Chứa chương trình chính, cho phép người dùng nhập 2 số
nguyên dương
• gcd.h: Chứa khai báo hàm tìm ước số chung lớn nhất như sau
unsigned
int
gcd(unsigned
int
a,
unsigned
int
b);
• gcd_stub.cpp: Chứa cài đặt hàm tìm ước số chung lớn nhất trả về một
số nguyên dương bất kỳ (tùy bạn quyết định)
• gcd_naive.cpp: Chứa cài đặt hàm tìm ước số chung lớn nhất bằng
cách sử dụng vịng lặp tìm thử-sai từ 1 đến min(a, b)
• gcd_euclidean.cpp: Chứa cài đặt hàm tìm ước số chung lớn nhất sử
dụng thuật tốn Euclidean
2. Sử dụng dịng lệnh để biên dịch và thực thi chương trình với từng phiên bản
cài đặt khác nhau:
• gcd_stub.exe
• gcd_naive.exe
• gcd_euclidean.exe
3. Nộp bài bao gồm các tập tin mã nguồn và tập tin build.bat chứa các lệnh đã
sử dụng ở bước 2
4