You are on page 1of 6

Họ và tên: Mã số sinh viên:

PHƯƠNG PHÁP LẬP TRÌNH – TRÁI CÂY 03


Câu 1. Điền thuật ngữ tiếng Anh tương ứng trong bảng sau: (5 phút)
Thuật ngữ tiếng Việt English Terminologies
2. Kiểu dữ liệu
3. Lập trình hướng thủ tục
4. Biểu thức
5. Toán tử
6. Toán hạng
7. Biến
8. Hằng
9. Chỉ thị tiền xử lý
10. Định danh
Câu 2. Điền thuật ngữ tương ứng với mô tả trong các dòng của bảng sau: (10 phút)
Mô tả Thuật ngữ
A. Là thành phần tham gia vào phép toán. Đó có thể là hằng hoặc biến, ví
dụ như 𝒂 + 𝒃 thì 𝑎 và 𝑏 được gọi là toán hạng.
B. Là tác vụ mà máy tính sẽ thực hiện trên một, hai, hoặc nhiều toán hạng,
ví dụ như 𝒂 + 𝒃 thì + là toán tử.
C. Là một định danh được người dùng đặt tên để chỉ không gian nhớ mà giá
trị sẽ KHÔNG bị thay đổi trong suốt chương trình.
D. Là một định danh được người dùng đặt tên để chỉ không gian nhớ mà
giá trị CÓ THỂ ĐƯỢC thay đổi trong suốt chương trình.
E. Là sự kết hợp giữa một hoặc nhiều biến, hằng, toán hạng, toán tử, hàm
theo một qui tắc nhất định nào đó trong ngôn ngữ lập trình. Để từ đó, máy
tính có thể tạo ra các kết quả theo qui tắc đã đặc tả, ví dụ 𝑎 + 𝑏 ∗ 2 −
𝑚𝑎𝑥(8,9). Trong đó 𝒎𝒂𝒙(𝒂, 𝒃) trả về giá trị lớn trong hai số.
F. Là toán tử chỉ cần ĐÚNG một toán hạng tham gia vào phép toán, ví dụ
phép phủ định (!), đảo dấu (-).
G. Là toán tử chỉ cần ĐÚNG hai toán hạng tham gia vào phép toán, ví dụ
như phép toán cộng (+), trừ (-), nhân (*), chia (/).
H. Máy tính sẽ thực hiện tính biểu thức vế phải, ghi giá trị vừa tính được
vào ô nhớ của đối tượng bên vế trái. Việc kiểm tra kiểu sẽ được tiến hành
để đảm bảo vế trái và vế phải cùng kiểu.
I. Là toán tử chỉ cần ĐÚNG ba toán hạng tham gia vào phép toán, ví dụ như
lệnh 𝒂 > 𝒃 ? 𝒂: 𝒃 để tìm số lớn nhất trong hai số.
Câu 3. Một số lệnh cơ bản trong môi trường Unix (Unix Commands) (7 phút)
1. Thư mục hiện hành khi khởi động Cygwin là thư mục b. ls
gốc chứa tên của người dùng hiện tại trên máy tính c. pwd
của bạn d. cp
2. Lệnh dùng để liệt kê tên file và tên thư mục trong thư 4. Lệnh dùng để dịch file /home/Programming/vidu.c
mục hiện tại thành mã máy:
a. cd a. gcc -Wall vidu.c -o vidu.out
b. ls b. g++ vidu.c -o vidu.exe
c. mkdir 5. Lệnh dùng để dịch file
d. cp /home/Programming/vidu.cpp thành mã máy:
3. Lệnh dùng để hiển thị thư mục hiện tại đang làm việc: a. gcc -Wall vidu.c -o vidu.out
a. cd b. g++ vidu.cpp -o vidu.exe
6. Giả sử thư mục hiện hành là /home, lệnh dùng để c. cd .
thực thi file /home/vidu.out: d. rm -rf Programming
a. gcc -Wall vidu.c -o vidu.out 11. Giả sử thư mục hiện hành là /home, lệnh nào di
b. g++ vidu.c -o vidu.exe chuyển file vidu.txt từ thư mục
c. ./vidu.exe /home/Programming đến thư mục /home/Vidu:
7. Giả sử thư mục hiện hành là /home, lệnh nào tạo thư a. rm -rf Programming
mục Programming là thư mục con của thư mục b. mv /home/Programming/vidu.txt /home/Vidu/
/home: c. cp /home/Programming/vidu.txt /home/Vidu/
a. mkdir Programming 12. Giả sử thư mục hiện hành là /home, lệnh nào sao chép
b. cd Programming file vidu.txt từ thư mục /home/Programming đến
c. rmdir Programming thư mục /home/Vidu:
d. rm -rf Programming a. rm -rf Programming
8. Giả sử thư mục hiện hành là /home, lệnh nào XÓA b. mv /home/Programming/vidu.txt /home/Vidu/
thư mục Programming (kể cả file và thư mục con c. cp /home/Programming/vidu.txt /home/Vidu/
bên trong Programming) là thư mục con của /home: 13. Giả sử ta có file vidu.txt trong thư mục
a. mkdir Programming /home/Programming/vidu.txt, lệnh nào xem nội
b. cd Programming dung của file vidu.txt:
c. rmdir Programming a. cat /home/Demo/vidu.txt
d. rm -rf Programming b. vim /home/Demo/vidu.txt
9. Giả sử thư mục hiện hành là /home, Programming 14. Trong các công cụ hỗ trợ người lập trình của khóa học
là thư mục con của thư mục /home, lệnh nào di này, Notepad, Notepad++ thuộc bộ công cụ nào:
chuyển đến thư mục Programming để a. Edit
Programming là thư mục đang hiện hành làm việc: b. Compile
a. mkdir Programming c. Runtime
b. cd Programming d. Debug
c. rmdir Programming 15. Trong các công cụ hỗ trợ người lập trình của khóa học
d. rm -rf Programming này, gcc trong cygwin có chứa công cụ nào (chọn
10. Giả sử thư mục hiện hành là /home/Programming, nhiều phương án):
lệnh nào di chuyển đến thư mục /home để /home là a. Edit
thư mục đang hiện hành làm việc:: b. Compile
a. mkdir Programming c. Runtime
b. cd .. d. Debug
Câu 4. ĐỌC 10 phút: Định nghĩa hàm, lời gọi hàm và truyền tham số
Trong C/C++, hàm là một nhóm các câu lệnh được định nghĩa rõ ràng, có thể được gọi một hoặc nhiều
lần tại một nơi nào đó của chương trình. Mỗi định nghĩa hàm tuân theo cú pháp:
Cú pháp Ví dụ
type name ( parameter1, parameter2, ...)
{
statements;
statements;
…;
return type;
}

Tại hạ lược giải cụm từ định nghĩa rõ ràng như sau:
- name: tên của hàm. Tên là một định danh (identifier). Do đó, tên cần được đặt tuân theo qui tắc đặt
tên của ngôn ngữ lập trình. Thông thường, dân lập trình dùng một tên gợi nhớ đến chức năng để đặt tên
cho hàm. Trong ví dụ trên, chức năng của hàm là cộng hai số nguyên nên tên hàm được đặt là addition.
- type: kiểu dữ liệu trả về của hàm. Trong ví dụ trên, kiểu dữ liệu trả về của hàm addition là kiểu int. Với
một vài trường hợp, nếu một hàm không cần giá trị trả về thì các tình yêu dùng kiểu void.
- parameters: danh sách tham số của hàm. Một hàm có ít nhất 0 tham số, nhiều nhất n tham số tùy theo
từng bài toán. Các tham số cách nhau bởi dấu phẩy (‘,’), được bao trong dấu ‘(‘ và ‘)’. Mỗi tham số tuân
theo quy tắc khai báo biến mà các tình yêu đã biết: type name. Ví dụ trên thì danh sách tham số được
khai báo là (int a, int b).
- statements: là các câu lệnh được viết ra nhằm mục đích hiện thực chức năng của hàm, được bao bọc
bởi dấu ‘{‘ và ‘}’. Trong ví dụ trên, phần statement của hàm addition là đoạn mã từ lệnh 6 đến 10. Thêm
nữa, phần statement có thể thuộc một trong các loại sau: cấu trúc điều khiển - control structures (cấu
trúc tuần tự - sequence structure, cấu trúc rẽ nhánh - selection structure, và cấu trúc lặp - iteration
structure) hoặc lời gọi đến một function, hoặc thậm chí là lời gọi đến chính function đó mà ta gọi là đệ
qui (recursion), tại hạ sẽ giải thích khái niệm đệ qui ở phía sau).
- return: là từ khóa trong C/C++, từ khóa này làm cho một hàm kết thúc ngay lập tức và trả về giá trị là
kiểu dữ liệu phù hợp với type đã định nghĩa. Trong ví dụ trên, từ return tại lệnh số 9 trả về giá trị r có
kiểu int là kết quả của phép cộng hai số a và b, đồng thời kết thúc hàm addition.
Đến đây, ta có sự hiểu biết khá chi tiết về hàm. Các tình yêu cũng lưu ý rằng hàm main cũng là một hàm.
Hàm main là hàm đặc biệt trong C++, là điểm bắt đầu chương trình. Một chương trình chỉ có duy nhất
một hàm main.

Câu 5. ĐỌC 5 phút: Lời gọi hàm và truyền đối số


Lời gọi hàm (function call) là việc một chương trình hay một hàm nào đó gởi một yêu cầu đến một hàm
khác để hỗ trợ nó hoàn thành chức năng của mình. Hàm được gọi bắt buộc phải được định nghĩa trước
đó tại một nơi nào đó của chương trình nhưng không có điều ngược lại. Nghĩa là, một hàm được định
nghĩa rồi thì có thể không được gọi trong toàn bộ chương trình. Khi đó, việc định nghĩa một hàm trở nên
vô nghĩa.
Một hàm có thể được gọi nhiều lần để tái sử dụng. Trong ví dụ trên, hàm main gọi hàm addition để thực
hiện cộng hai số. Cú pháp một lời gọi hàm tuân theo qui tắc như sau:
name(argument1, argument2,..);
Trong đó:
- name: là tên hàm muốn gọi. Tên này phải đúng như tên đã được định nghĩa trước đó.
- argument: là danh sách các đối số truyền cho hàm để hàm thực thi. Các tình yêu chú ý cách gọi hàm
và truyền tham số để sau này làm bài tập như ví dụ sau:
Trong ví dụ trên, hàm addition được hàm main gọi 3 lần. Mỗi lần hàm addition thực thi, các đối số a
và b mang giá trị khác nhau. Các tình yêu hãy thực thi thử ví dụ này để hiểu được cơ chế gọi hàm và
truyền đối số nhé. Các tình yêu nên lưu ý đến thứ tự các đối số vì việc này sẽ ảnh hưởng đến chương
trình. Với chương trình trên, giả sử tại hạ nhập 𝑎 = 6, 𝑏 = 2 thì cả hai lệnh gọi hàm ở dòng 24 và dòng
27 đều cho kết quả là 8 nhưng có một sự khác biệt, các tình yêu tự giải thích nhé. Quá trình biên dịch,
thực thi và kết quả in ra màn hình tương ứng với dữ liệu nhập như sau:
Câu 6. ĐÚNG/SAI (Đ/S) hoặc điền vào chỗ trống các câu hỏi sau: (5 phút)
a. Đ/S: Function là một đoạn mã được viết 1 lần và có thể dùng lại nhiều lần
b. Đ/S: Function Prototype gồm có tên, kiểu trả về, và danh sách tham số.
c. Đ/S: Tên của một function có thể không tuân theo qui tắc đặt tên của ngôn ngữ lập trình.
d. Đ/S: Một function có thể không có kiểu trả về
e. Đ/S: Một function phải được định nghĩa trước khi được gọi.
f. Đ/S: Một function có ít nhất là 1 tham số.
g. Đ/S: Nếu function có nhiều tham số thì các tham số cách nhau bởi dấu chấm phẩy.
h. Trong C/C++, Java, từ khóa ………………….. dùng để trả về kết quả và báo hiệu kết thúc function.
i. Kiểu dữ liệu trả về phải tương thích với kiểu của function khi được định nghĩa.
j. Đ/S: Một function có thể không làm gì cả (function rống).
k. Đ/S: Để thực thi đoạn mã của một function, chương trình phải thực hiện một ……………………….
thông qua tên và truyền đối số tương ứng cho function.
l. Hai cách truyền đố số phổ biến trong function là ………………………………….……..……… và
………………………….……………..
m. Đ/S: Trong C/C++ và Java, có thể thực hiện chuỗi lời gọi hàm như main gọi A, A gọi B, B gọi C.
Với A, B, C là các function đã định nghĩa trước đó.
n. Khi một function gọi lại chính nó thì ta gọi đó là (2 từ) ………………………..
Câu 7. Viết các hàm sau: (4 phút)
Diện tích Độ dài đường chéo
Tổng hai số nguyên Tích hai số thực
hình chữ nhật hình chữ nhật
int add(int a, int b)
{
return a + b;
}

Thương hai số thực


Hiệu hai số nguyên Chu vi hình chữ nhật
khác 0

Câu 8. Chọn thuật ngữ tiếng Anh tương ứng trong bảng sau: (5 phút)
Thuật ngữ tiếng Việt English Terminologies Trả lời
1. Hàm/thủ tục/chương trình con A. Scope
2. Nguyên mẫu hàm B. Sequence structure
3. Cấu trúc tuần tự C. Function prototype
4. Cấu trúc rẻ nhánh D. Fucntion
5. Cấu trúc lặp E. Selection structure
6. Giá trị trả về F. Iteration structure
7. Tham số hàm G. Return value
8. Khai báo hàm H. Global variable
9. Định nghĩa hàm I. Local variable
10. Biến cục bộ J. Function definition
11. Biến toàn cục K. Function declaration
12. Tầm vực L. Function parameter
13. Đối số mặc định của hàm M. Default Argument
Câu 9. Sử dụng FUNCTION để viết chương trình cho mỗi bài toán sau: (40 phút)
1. Yêu cầu người dùng nhập năm sinh, tính tuổi của người đó đến năm 2015. Biết rằng người dùng luôn
nhập một số nguyên dương nhỏ hơn 2015.
2. Yêu cầu người dùng nhập vào bán kính của một đường tròn, tính chu vi và diện tích của hình tròn đó.
Biết rằng: 𝑐ℎ𝑢 𝑣𝑖 đườ𝑛𝑔 𝑡𝑟ò𝑛 = 2 ∗ 𝜋 ∗ 𝑟, 𝑑𝑖ệ𝑛 𝑡í𝑐ℎ ℎì𝑛ℎ 𝑡𝑟ò𝑛 = 𝜋 ∗ 𝑟 2 .
3. Nhập tên, số lượng và giá của sản phẩm, chương trình tính tổng số tiền của đơn hàng (có cả thuế
VAT). Biết rằng: Tiền hàng = 𝑠ố 𝑙ượ𝑛𝑔 ∗ 𝑔𝑖á; 𝑉𝐴𝑇 = 10% (𝑡𝑖ề𝑛 ℎà𝑛𝑔)
4. Người dùng nhập vào thông tin độ dài, độ rộng, độ cao của một hình hộp chữ nhật. Chương trình tính
và in ra thể tích khối hộp, diện tích các mặt bên và độ dài đường chéo xiêng của khối hộp. Biết:
𝑉 = 𝑑à𝑖 ∗ 𝑟ộ𝑛𝑔 ∗ 𝑐𝑎𝑜
𝑆 = 𝑑𝑖ệ𝑛 𝑡í𝑐ℎ ℎ𝑎𝑖 đá𝑦 + 𝑑𝑖ệ𝑛 𝑡í𝑐ℎ 4 𝑚ặ𝑡 𝑏ê𝑛
5. In ra kích thước của mỗi kiểu dữ liệu trên máy tính của bạn: int, float, double, char, bool, short. Gợi
ý: dùng lệnh sizeof(int) sẽ trả về số byte để biểu diễn số nguyên trên máy tính.
Ví dụ printf(“Size of integer is %d”, sizeof(int)); có thể sẽ xuất ra giá trị 4.
6. Khai báo năm biến a, b, c, d, e để lưu giữ năm giá trị lần lượt là 28, 32, 37, 25, 33. Chương trình tính
và in ra giá trị trung bình của 5 giá trị vừa liệt kê.
7. Tèo là sinh viên ngành IT, gia đình của Tèo có 10 mẫu ruộng. Mỗi mẫu ruộng có hình chữ nhật với
kích thước (𝑑à𝑖 ∗ 𝑟ộ𝑛𝑔 = 100 ∗ 10) mét. Má của Tèo muốn ba của Tèo mua lưới cao 1 mét rào toàn
bộ 10 mẫu ruộng này, đồng thời đến cơ quan nhà nước yêu cầu cấp lại giấy chứng nhận sử dụng đất.
Giả sử nhà nước tính thuế trên mỗi 𝑚2 đất là 300 nghìn đồng, mỗi mét vuông lưới trị giá 200 nghìn
đồng (1 mét * 1 mét). Ba Tèo chẳng biết tính toán như thế nào để ra tổng tiền. Bạn hãy viết chương
trình giúp Tèo tính tổng số tiền. Chương trình gồm có các biến sau: số mẫu ruộng, chiều dài mỗi mẫu,
chiều rộng mỗi mẫu, giá trị mỗi mét vuông lưới, tiền thuế trên mỗi mét vuông đất, và tổng tiền.
8. Chương trình yêu cầu người dùng nhập tên, địa chỉ, số điện thoại, chuyên ngành (là một chuỗi ký tự)
sau đó in các thông tin này ra màn hình.
9. *Hoán đổi giá trị của hai số nguyên dương 𝑎 và 𝑏. Ví dụ, ban đầu 𝑎 = 3, 𝑏 = 2 thì sau khi chương
trình thực thi thành công giá trị trong bộ nhớ là 𝑎 = 2, 𝑏 = 3.

Câu 10. *Hàm và kỹ thuật thiết kế từ trên xuống: (30 phút)


Xây dựng chương trình tính tổng chi phí vận chuyển đĩa trong 1 năm của công ty như trong slide
chương 4. Biết rằng mỗi năm được chia làm 4 quý. Công ty sẽ nhập tham số cho chương trình mỗi
quý một lần. Tức là chương trình tính chi phi 4 lần sau đó cộng lại để ra tổng chi phí của cả năm.
Câu 11. Công việc về nhà: ôn lại TRÁI CÂY 03 (60 phút), làm trước TRÁI CÂY 04 (60 phút),
đọc bài giảng chương kế tiếp (60 phút).

You might also like