SlideShare a Scribd company logo
1 of 9
BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015
KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 1
PHẦN 1. THÔNGTIN CHUNG
1.1. Một số lưuý trước khilàmbài
 Chương trình của Sinh Viên phải thực thi được trên Cygwin1 trước khi nộp. Sinh
Viên có thể đọc hướng dẫn cài đặt và cách thực thi chương trình trên Cygwin trong
file đính kèm khi tải bài tập lớn từ hệ thống Sakai.
 Tên file nộp bài ĐÚNG yêu cầu người ra đề. Sinh Viên không nên tự ý thay đổi cấu
trúc chương trình viết sẵn. Đã xảy ra trường hợp Sinh Viên tự ý đôi tên file, nén file,
vân vân. Tất cả đều gây lỗi khi chấm bài TỰ ĐỘNG.
 Giảng Viên KHÔNG nhận bài được gửi qua mail hoặc bất kỳ hình thức nào khác.
 Sakai sẽ TỰ ĐỘNG ĐÓNG chức năng nộp bài khi hết hạn. Sinh viên nên nộp
bài sớm nhất có thể. Hệ thống đã được thiết lập cho phép sinh viên được nộp
bài tối đa là 3 lần.
 Khi nộp bài sinh viên phải clicknút Submit trên Sakai và chờ đến khi có thông
báo nộp bài thành công. Trong mục Assignment List trạng thái bài làm là
Submitted. Sinh viên sẽ nhận được một email xác nhận là nộp bài thành công.
 Sinh Viên nên thường xuyên cập nhật thông báo trên hệ thống Sakai để về các
thay đổi của bài tập lớn. Mọi thắc mắc sẽ không được giải quyết nếu thông tin
đã được thông báo trước.
 Sinh Viên KHÔNG NÊN làm những gì đề bài KHÔNG YÊU CẦU.
 Sinh Viên có quyền làm trái những ràng buộc đề bài đã nêu ra. Tuy nhiên, nếu
bạn đủ can đảm chấp nhận điểm 0 và muốn ĐƯỢC ĐÌNH CHỈ THI CUỐI KỲ
thì cứ thực hiện những gì bạn muốn ^^.
1.2. Đạo văn (Plagiarism) và hình thức xử lý
Sinh viên nên TỰ LÀM bài tập. Sinh viên sẽ được kết luận là đạo văn nếu:
 Có sự giống nhau giữa mã nguồn của các bài nộp. TẤT CẢ các bài nộp giống nhau
đều bị kết luận là đạo văn.
1 Cygwin là môi trường giả lập Unix/Linux trên máy tính chạy Windows. Nếu máy tính sinh viên dùng hệ
điều hành Unix/Linux thì chạy trực tiếp mà không cần phải cài Cygwin để kiểm tra chương trình.
BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015
KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 2
 Sinh viên không hiểu mã nguồn do chính mình viết, trừ những phần mã được
cung cấp sẵn trong chương trình.
 Các khóa trước đã xảy ra tình trạng bạn Tèo cho bạn Tí xem hoặc nhờ nộp bài của
mình. Tí âm thầm copy bài của Tèo làm bài của mình và mang nộp. Chương trình
kiểm tra đạo văn phát hiện và cả hai “về hưu sớm”. Do đó, sinh viên nên bảo vệ mã
nguồn bài tập lớn của mình không nên để cho bạn xem hoặc nhờ bạn nộp bài giúp.
Sau mỗi bài tập lớn được nộp, sẽ có một số sinh viên được phỏng vấn ngẫu nhiên để
chứng minh bài là do tự mình làm. Những trường hợp đạo văn bị xử lý nhẹ nhất là
ĐƯỢC ĐÌNH CHỈ THI CUỐI KỲ. Nếu Sinh Viên vi phạm nghiêm trọng đạo
đức nghề nghiệp thì Giảng Viên sẽ đề xuất nhà trường xử lý học vụ.
 Nếu có một bài tập lớn có 0 testcases đúng hoặc Sinh Viên không làm đủ 3 bài tập
lớn thì sinh viên ĐƯỢC ĐÌNH CHỈ THI CUỐI KỲ.
PHẦN 2. ASSIGNMENT 1 – PHẦN 1
2.1. Giới thiệu Assignment1 – Phần 1:Kỹ năng và Công nghệ
Cloud Strife, với tuyệt chiêu Omnislash, từ sau khi đánh bại được chiến binh vĩ đại
Sephiroth đã được tôn vinh là chiến binh giỏi nhất của loài người. Desperado là một
terminator siêu cao cấp do các máy móc từ tương lai gửi về hiện tại để tiêu diệt loài
người. Cuộc đấu giữa Cloud và Desperado, do đó, đã trở thành cuộc đấu giữa kỹ năng
và công nghệ.
BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015
KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 3
2.2. Tài nguyên Sinh Viên được cung cấp trong Assignment 1 – Phần 1
Sinh viên tải file assigment1.zip từ hệ thống Sakai, giải nén file này sẽ được:
Assignment.doc File mô tả nội dung bài tập lớn, nộp bài, chấm bài.
Cygwin_Guide.doc File hướng dẫn cài đặt Cygwin.
A1_CSLT_2015 Project tạo sẵn trên môi trường Visual Studio 2010
1_in.txt Một file input ví dụ. SV có thể sửa để chạy nhiều ví dụ khác
1_out.txt File output tương ứng với nội dung của file 1_in.txt
Sinh viên dùng chương trình Microsoft Visual Studio 2010 để khởi động project
A1_CLST_2015 (hoặc click kép vào file A1_CSLT_2015.sln). Khi mở project thành
công thì chương trình như hình sau:
BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015
KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 4
Thông tin các tập tin trong project được mô tả như sau:
main.cpp Chương trình chứa hàm main – SV KHÔNG nên sửa và KHÔNG CẦN
HIỂU file này
cloud.cpp Sinh viên CHỈ CODE trong file này
cloud.h SV KHÔNG CẦN QUAN TÂM file này
1_in.txt Một file input ví dụ.
1_out.txt File output tương ứng với nội dung của file 1_in.txt
2_in.txt Một file input ví dụ.
2_out.txt File output tương ứng với nội dung của file 2_in.txt
3_in.txt Một file input ví dụ.
3_out.txt File output tương ứng với nội dung của file 3_in.txt
2.3. Ý nghĩa dữ liệunhậpvà thựcthivídụ mẫu
Trong file input.txt có 5 dòng, mỗi dòng mang ý nghĩa như bảng sau:
Tên Ý nghĩa Ví dụ
A1 Chỉ số tấn công của Cloud, là một số nguyên từ 1 đến 100 429
D1 Chỉ số phòng thủ của Cloud, là một số nguyên từ 1 đến 98 92
A2 Chỉ số tấn công của Desperado, là một số nguyên từ 1 đến 90 89
D2 Chỉ số phòng thủ của Desperado, là một số nguyên từ 1 đến 88 56
P Mã địa điểm thi đấu, là một số nguyên từ 1 đến 11 6
Để thực thi ví dụ mẫu trên Visual Sutudio 2010, sinh viên nhấn tổ hợp phím Ctrl +
F5 và quan sát kết quả trên màn hình.
Để thực thi ví dụ mẫu trên Cygwin, sinh viên thực hiện các công việc sau:
1. Copy các file (main.cpp, cloud.cpp, cloud.h, 1_in.txt, 1_out.txt, 2_in.txt, 2_out.txt,
3_in.txt, 3_out.txt) vào cùng một thư mục trong Cygwin. Ví dụ như thư mục đó có
đường dẫn là C:CygwinhomeVoDucVinh
2. Mở Cygwin và thực hiện các lệnh cd cần thiết để chuyển đến thư mục VoDucVinh.
BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015
KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 5
3. Ghõ lệnh:
$> g++ -o main.exe main.cpp cloud.cpp cloud.h (Nhấn ENTER)
$>./main.exe (Nhấn ENTER và quan sát kết quả)
Lưu ý: Project mẫu có 3 ví dụ. Sinh viên muốn kiểm tra nhiều trường hợp khác nhau
thì cần TẠO THÊM các file .txt như trong project là được. Ví dụ sinh viên muốn tạo thêm
ví dụ 4 thì mở notepad tạo 2 file, ghõ nội dung đặt tên là 4_in.txt và 4_out.txt (file này
chứa kết quả của ví dụ 4). Sau đó, các bạn lưu lại cùng thư mục với 6 file .txt sẵn có. Đồng
thời, trong file main.cpp, các bạn tìm đến dòng lệnh:
const int NUMBER_OF_TESTCASE = 3; và sử thành
const int NUMBER_OF_TESTCASE = 4;
2.4. Nhiệmvụ của SinhViên trong Assignment1 – Phần 1
Sinh viên tính giá trị 𝑝(𝐶) dự đoán xác suất thắng trận của Cloud. Với 𝑝(𝐶) là một số
thập phân có dạng. Việc tính toángiá trị 𝑝(𝐶) được thực hiện bằng cách VIẾT CODE
TRONG FILE cloud.cpp. Trong quá trình viết code trong file cloud.cpp, Sinh Viên
KHÔNG IN BẤT KỲ thông tin gì ra màn hình, KHÔNG INCLUDE thư viện. Tất
cả những gì SV cần làm là tính ĐÚNG và dùng lệnh return trả về giá trị 𝑝(𝐶), HẾT.
Quá trình tính p(C) được mô tả như sau: nếu 𝑃 <5 thì khả năng tấn công của Cloud sẽ
tăng gấp đôi (không quá 100) nhưng chỉ số phòng thủ sẽ giảm một nửa (phần nguyên
của phép chia 𝐷1 / 2 nhưng không nhỏ hơn 1). Nếu 5 < 𝑃 < 11 thì khả năng tấn công
của Desperado sẽ tăng thêm 20 lần (không quá 90) đồng thời chỉ số phòng thủ sẽ giảm
20 (không dưới 1). Nếu 𝑃 = 5 thì các chỉ sổ của Cloud và Desperado sẽ được giữ
nguyên. Đặc biệt nếu 𝑃 = 11 thì chỉ số tấn công của Desperado sẽ tăng lên tối đa 90
và chỉ số phòng thủ sẽ giảm còn 1. Giá trị 𝑝(𝐶) được tính bằng công thức:
𝑃(𝐶) = 𝑚𝑖𝑛 (𝑚𝑎𝑥 (
(A1− D2+88)(12−P)
1232
,
(D1− A2+90)(12−P)
1260
) ,1.00) (1)
Ví dụ 1: Với dữ liệu nhập là:
10 20 20 10 5
thì kết quả xuất ra màn hình là 0.50
BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015
KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 6
Ngoài ra, các chỉ số tấn công, phòng thủ và địa điểm thi đấu của đôi bên có thể làm
xuất hiện các tình huống đặc biệt như sau:
a) Khi 𝑃 ≥ 5, Desperado vượt trội so với Cloud cả về tấn công lẫn phòng thủ nên
chiến thắng chắc chắn thuộc về Desperado, 𝑃(𝐶) = 0.00. Tuy nhiên nếu 𝑃 < 5
thì 𝑝(𝐶) sẽ được tính như đã mô tả trong trường hợp cơ bản.
Ví dụ 2: Với dữ liệu nhập là:
10 27 60 30 6
thì kết quả xuất ra màn hình là 0.00
Ví dụ 3: Với dữ liệu nhập là:
10 27 60 30 1
thì kết quả xuất ra màn hình là 0.70
b) 𝐴1 > 𝐷2 + 30 hoặc 𝐷1 > 𝐴2 + 30, do Cloud là một chiến binh thông minh nên
chỉ cần thỏa mãn 1 trong 2 điều này thì chiến thắng chắc chắn thuộc về Cloud.
𝑃(𝐶) = 1.
Ví dụ 4: Với dữ liệu nhập là:
50 4 61 15 6
thì kết quả xuất ra màn hình là 1
c) 𝐴2 = 𝐴𝐵̅̅̅̅ với A, B là 2 chữ số chẵn, 𝐷2 = 𝐶𝐷̅̅̅̅ với C, D là 2 chữ số lẻ.
𝑃(𝐶) = 0.50 – 𝑚𝑖𝑛 (
|50 − 𝐴1| 𝑃
1100
,
|49 − 𝐷1| 𝑃
1078
)
Ví dụ 5: Với dữ liệu nhập là:
50 4 28 31 6
thì kết quả xuất ra màn hình là 0.50
d) Nếu A1 là lập phương của một số nguyên dương và 𝑃 < 11 thì
BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015
KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 7
𝑃(𝐶) = 0.50 + 𝑚𝑎𝑥 (
|45 − 𝐴2|(11 − 𝑃)
990
,
|44 − 𝐷2|(11 − 𝑃)
968
)
Tuy nhiên nếu 𝑃 = 11, tính như đã mô tả trong trường hợp cơ bản. .
Ví dụ 6: Với dữ liệu nhập là:
36 27 45 88 1
thì kết quả xuất ra màn hình là 0.95
Ví dụ 7: Với dữ liệu nhập là:
36 27 45 88 11
thì kết quả xuất ra màn hình là 0.10
e) (Bonus) Nếu A1, D1, A2, D2 lập thành cấp số cộng (theo thứ tự bất kì), thì
Desperado chính là Dark Maul, một chiến binh Sith đến từ một miền thiên hà xa
xăm. Khi đó giá trị 𝑝(𝐶) được tính như sau:
𝑃(𝐶) =
√𝑃2 + (11 − 𝑃)2
12
Ví dụ 7: Với dữ liệu nhập là:
12 18 15 21 11
thì kết quả xuất ra màn hình là 0.92
Lưu ý: các tình huống đặc biệt có độ ưu tiên từ a đến e trong trường hợp cả 2 tình
huống cùng xảy ra. Tức là tình huống a sẽ có độ ưu tiên CAO NHẤT, b có độ ưu tiên
cao kế tiếp sau a. Kết quả xuất ra màn hình sẽ dựa vào kết quả của tình huống có độ ưu
tiên cao hơn.
Ví dụ 8: Với dữ liệu nhập là:
22 25 28 31 4
thì kết quả xuất ra màn hình là 0.41 (theo tình huống c dù dữ liệu nhập này thỏa cả
điều kiện e)
BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015
KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 8
Ví dụ 9: Với dữ liệu nhập là:
30 27 80 70 4
thì kết quả xuất ra màn hình là 0.51 (theo tình huống a dù dữ liệu nhập này thỏa cả
điều kiện d)
2.5. Cách kiểmthử chương trình
Sinh viên sẽ được cung cấp bộ Testcase mẫu trên Sakai trước deadline khoảng 1 tuần
để tự kiểm tra chương trình của mình. Bộ Testcase chấm bài sẽ hoàn toàn khác bộ Testcase
mẫu nhưng có tính chất tương tự. Do đó, sinh viên nên tra chương trình của mình chạy
đúng tất cả testcase mẫu. Lúc đó, khả năng đạt điểm cao là rất lớn.
2.6. Deadline và cách nộp bài
 Sinh Viên đăng nhập vào hệ thống Sakai thông qua tài khoản đã được cấp phát.
 Sinh Viên nộp duy nhất 1 file TÊN LÀ cloud.cpp trong mục Assignment (Sinh Viên
không nén file, không đổi tên file).
 Trước khi nộp bài, Sinh viên nên kiểm tra bài phải thực thi “ngon lành” trênCygwin.
 Deadline: 23h55’ ngày 08.02.2015.
 Sakai đã được thiết lập để Sinh Viên nộp bài tối đa 3 lần. Bài nộp mới nhất sẽ được
nhận để chấm. Bài trước đó sẽ bị bỏ qua dù có làm tốt hơn bài nộp sau.
PHẦN 3. CÁCH TÍNH ĐIỂM MÔN HỌC
Thang điểm môn học gồm các phần như sau:
 Điểm thi giữa kỳ chiếm trọng số 20%. Điểm này được tính bởi bài thi giữa kỳ của
Sinh Viên. Điểm này tối đa là 10 điểm.
 Điểm kiểm tra chuyên cần chiếm trọng số 10%. Điểm này được tính bởi các bài
thực hành hàng tuần. Điểm này tối đa là 10 điểm.
 Điểm thi cuối kỳ chiếm trọng số 70%. Điểm này chính là điểm mà Sinh Viên quan
sát trên Website của Phòng Đào Tạo gồm hai phần: bài thi cuối kỳ và bài tập lớn.
BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015
KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 9
Đ𝑖ể𝑚 70% =
(Đ𝑖ê𝑚̉ 𝐴𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡 ∗ 2 + Đ𝑖ể 𝑚 𝑡ℎ𝑖 𝐻𝐾 ∗ 5)
7
Trong đó, điểm bài tập lớn được tính như sau:
Đ𝑖ể 𝑚 𝐴𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡 =
𝐴𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡 1.1 + 𝐴𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡 1.2 + 𝐴𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡2
Tổ ng số Testcase chấ m bài
+ Đ𝑖ể 𝑚 𝑡ℎưở𝑛𝑔
Điểm thưởng là điểm dành tặng những Sinh Viên tích cực và tiêu cực trong khóa học.
Số điểm thưởng sẽ không cố định tùy từng trường hợp cụ thể. Điểm thưởng cũng có thể
là một số âm. Điểm này xảy ra trong các trường hợp sau:
 Sinh Viên tích cực thảo luận và giải đáp thắc mắc của bạn bè trên Forum của Sakai.
Số mục trả lời và giải đáp ít nhất là 20.
 Sinh Viên có tiến bộ vượt bậc trong từng bài tập lớn. Ví dụ Assignment 1 Sinh Viên
đúng 10% số Testcase nhưng Assignment 2 Sinh Viên đúng 80%.
 Sinh Viên tụt hậu đáng kể trong từng bài tập lớn. Ví dụ Assignment 1 Sinh Viên
đúng 80% số Testcase nhưng Assignment 2 Sinh Viên đúng 10%. Điểm thưởng sẽ
là một số âm.
 Sinh Viên làm bài cực kỳ tốt nhưng trên Forum hoàn toàn không có một comment
nào hỗ trợ bạn bè làm bài. Điểm thưởng sẽ là một số âm.
 Sinh Viên tố giác các trường hợp đạo văn mà Giảng Viên chưa phát hiện.
 …
Giảng viên sẽ trực tiếp quan sát và tặng điểm thưởng đến Sinh Viên.
Lưu ý: điểm bài tập lớn có thể vượt quá thang điểm 10, chẳng hạn Sinh Viên làm bài
đạt 8 điểm nhưng tích cực trong khóa học và được Giảng Viên thưởng 8 điểm. Điểm
mang đi tổng kết sẽ là 16 điểm. Tuy nhiên, điểm 70% phải lấy thang điểm 10 để phù
hợp với qui định của nhà trường. Do đó, Sinh Viên, ngoài việc học tốt, còn được khuyến
khích tạo ra nhiều giá trị hơn để giúp đỡ cộng đồng mà mình đang gắn bó.

More Related Content

Viewers also liked (7)

3 dien moi
3 dien moi3 dien moi
3 dien moi
 
T3 3
T3 3T3 3
T3 3
 
Toan cao cap a1
Toan cao cap a1Toan cao cap a1
Toan cao cap a1
 
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
 
Toan t1 chuong 4-vi_phan_motbien_4
Toan t1   chuong 4-vi_phan_motbien_4Toan t1   chuong 4-vi_phan_motbien_4
Toan t1 chuong 4-vi_phan_motbien_4
 
Toan cao cap a1
Toan cao cap a1Toan cao cap a1
Toan cao cap a1
 
T3 6
T3 6T3 6
T3 6
 

Similar to Assignment specification

00 mo dau
00 mo dau00 mo dau
00 mo dauDu Dan
 
300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdf300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdfHuyPhc9
 
Chuong 6 tin 11
Chuong 6 tin 11Chuong 6 tin 11
Chuong 6 tin 11Sunkute
 
Lớp học lập trình android tại hà đông
Lớp học lập trình android tại hà đôngLớp học lập trình android tại hà đông
Lớp học lập trình android tại hà đôngEnter Focus
 
45128de03569526f74ab41afe7186aef
45128de03569526f74ab41afe7186aef45128de03569526f74ab41afe7186aef
45128de03569526f74ab41afe7186aefPhi Phi
 
Bồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánBồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánNguyễn Đức
 
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danGiao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danVăn Võ Ntn
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#Hihi Hung
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#LanLT2011
 
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]leduyk11
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#LanLT2011
 

Similar to Assignment specification (20)

00 mo dau
00 mo dau00 mo dau
00 mo dau
 
300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdf300 BÀI CODE THIẾU NIÊN.pdf
300 BÀI CODE THIẾU NIÊN.pdf
 
Bai tap thuc hanh
Bai tap thuc hanhBai tap thuc hanh
Bai tap thuc hanh
 
Chuong 6 tin 11
Chuong 6 tin 11Chuong 6 tin 11
Chuong 6 tin 11
 
Lớp học lập trình android tại hà đông
Lớp học lập trình android tại hà đôngLớp học lập trình android tại hà đông
Lớp học lập trình android tại hà đông
 
45128de03569526f74ab41afe7186aef
45128de03569526f74ab41afe7186aef45128de03569526f74ab41afe7186aef
45128de03569526f74ab41afe7186aef
 
Oop 7
Oop 7Oop 7
Oop 7
 
Bồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toánBồi dưỡng HSG Tin chuyên đề thuật toán
Bồi dưỡng HSG Tin chuyên đề thuật toán
 
Dotnet
DotnetDotnet
Dotnet
 
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_danGiao an trinh_pascal_bai_tap_co_dap_an_huong_dan
Giao an trinh_pascal_bai_tap_co_dap_an_huong_dan
 
Long week03-review
Long week03-reviewLong week03-review
Long week03-review
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
C# cơ bản hay
C# cơ bản hayC# cơ bản hay
C# cơ bản hay
 
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
Lập trình c# 2008 cơ bản (nhất nghệ) [thủ thuật it 360]
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
Nhat nghe c#
Nhat nghe   c#Nhat nghe   c#
Nhat nghe c#
 
005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf
 
005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf005. LAP TRINH C#.pdf
005. LAP TRINH C#.pdf
 
Tin11
Tin11Tin11
Tin11
 

Assignment specification

  • 1. BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015 KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 1 PHẦN 1. THÔNGTIN CHUNG 1.1. Một số lưuý trước khilàmbài  Chương trình của Sinh Viên phải thực thi được trên Cygwin1 trước khi nộp. Sinh Viên có thể đọc hướng dẫn cài đặt và cách thực thi chương trình trên Cygwin trong file đính kèm khi tải bài tập lớn từ hệ thống Sakai.  Tên file nộp bài ĐÚNG yêu cầu người ra đề. Sinh Viên không nên tự ý thay đổi cấu trúc chương trình viết sẵn. Đã xảy ra trường hợp Sinh Viên tự ý đôi tên file, nén file, vân vân. Tất cả đều gây lỗi khi chấm bài TỰ ĐỘNG.  Giảng Viên KHÔNG nhận bài được gửi qua mail hoặc bất kỳ hình thức nào khác.  Sakai sẽ TỰ ĐỘNG ĐÓNG chức năng nộp bài khi hết hạn. Sinh viên nên nộp bài sớm nhất có thể. Hệ thống đã được thiết lập cho phép sinh viên được nộp bài tối đa là 3 lần.  Khi nộp bài sinh viên phải clicknút Submit trên Sakai và chờ đến khi có thông báo nộp bài thành công. Trong mục Assignment List trạng thái bài làm là Submitted. Sinh viên sẽ nhận được một email xác nhận là nộp bài thành công.  Sinh Viên nên thường xuyên cập nhật thông báo trên hệ thống Sakai để về các thay đổi của bài tập lớn. Mọi thắc mắc sẽ không được giải quyết nếu thông tin đã được thông báo trước.  Sinh Viên KHÔNG NÊN làm những gì đề bài KHÔNG YÊU CẦU.  Sinh Viên có quyền làm trái những ràng buộc đề bài đã nêu ra. Tuy nhiên, nếu bạn đủ can đảm chấp nhận điểm 0 và muốn ĐƯỢC ĐÌNH CHỈ THI CUỐI KỲ thì cứ thực hiện những gì bạn muốn ^^. 1.2. Đạo văn (Plagiarism) và hình thức xử lý Sinh viên nên TỰ LÀM bài tập. Sinh viên sẽ được kết luận là đạo văn nếu:  Có sự giống nhau giữa mã nguồn của các bài nộp. TẤT CẢ các bài nộp giống nhau đều bị kết luận là đạo văn. 1 Cygwin là môi trường giả lập Unix/Linux trên máy tính chạy Windows. Nếu máy tính sinh viên dùng hệ điều hành Unix/Linux thì chạy trực tiếp mà không cần phải cài Cygwin để kiểm tra chương trình.
  • 2. BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015 KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 2  Sinh viên không hiểu mã nguồn do chính mình viết, trừ những phần mã được cung cấp sẵn trong chương trình.  Các khóa trước đã xảy ra tình trạng bạn Tèo cho bạn Tí xem hoặc nhờ nộp bài của mình. Tí âm thầm copy bài của Tèo làm bài của mình và mang nộp. Chương trình kiểm tra đạo văn phát hiện và cả hai “về hưu sớm”. Do đó, sinh viên nên bảo vệ mã nguồn bài tập lớn của mình không nên để cho bạn xem hoặc nhờ bạn nộp bài giúp. Sau mỗi bài tập lớn được nộp, sẽ có một số sinh viên được phỏng vấn ngẫu nhiên để chứng minh bài là do tự mình làm. Những trường hợp đạo văn bị xử lý nhẹ nhất là ĐƯỢC ĐÌNH CHỈ THI CUỐI KỲ. Nếu Sinh Viên vi phạm nghiêm trọng đạo đức nghề nghiệp thì Giảng Viên sẽ đề xuất nhà trường xử lý học vụ.  Nếu có một bài tập lớn có 0 testcases đúng hoặc Sinh Viên không làm đủ 3 bài tập lớn thì sinh viên ĐƯỢC ĐÌNH CHỈ THI CUỐI KỲ. PHẦN 2. ASSIGNMENT 1 – PHẦN 1 2.1. Giới thiệu Assignment1 – Phần 1:Kỹ năng và Công nghệ Cloud Strife, với tuyệt chiêu Omnislash, từ sau khi đánh bại được chiến binh vĩ đại Sephiroth đã được tôn vinh là chiến binh giỏi nhất của loài người. Desperado là một terminator siêu cao cấp do các máy móc từ tương lai gửi về hiện tại để tiêu diệt loài người. Cuộc đấu giữa Cloud và Desperado, do đó, đã trở thành cuộc đấu giữa kỹ năng và công nghệ.
  • 3. BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015 KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 3 2.2. Tài nguyên Sinh Viên được cung cấp trong Assignment 1 – Phần 1 Sinh viên tải file assigment1.zip từ hệ thống Sakai, giải nén file này sẽ được: Assignment.doc File mô tả nội dung bài tập lớn, nộp bài, chấm bài. Cygwin_Guide.doc File hướng dẫn cài đặt Cygwin. A1_CSLT_2015 Project tạo sẵn trên môi trường Visual Studio 2010 1_in.txt Một file input ví dụ. SV có thể sửa để chạy nhiều ví dụ khác 1_out.txt File output tương ứng với nội dung của file 1_in.txt Sinh viên dùng chương trình Microsoft Visual Studio 2010 để khởi động project A1_CLST_2015 (hoặc click kép vào file A1_CSLT_2015.sln). Khi mở project thành công thì chương trình như hình sau:
  • 4. BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015 KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 4 Thông tin các tập tin trong project được mô tả như sau: main.cpp Chương trình chứa hàm main – SV KHÔNG nên sửa và KHÔNG CẦN HIỂU file này cloud.cpp Sinh viên CHỈ CODE trong file này cloud.h SV KHÔNG CẦN QUAN TÂM file này 1_in.txt Một file input ví dụ. 1_out.txt File output tương ứng với nội dung của file 1_in.txt 2_in.txt Một file input ví dụ. 2_out.txt File output tương ứng với nội dung của file 2_in.txt 3_in.txt Một file input ví dụ. 3_out.txt File output tương ứng với nội dung của file 3_in.txt 2.3. Ý nghĩa dữ liệunhậpvà thựcthivídụ mẫu Trong file input.txt có 5 dòng, mỗi dòng mang ý nghĩa như bảng sau: Tên Ý nghĩa Ví dụ A1 Chỉ số tấn công của Cloud, là một số nguyên từ 1 đến 100 429 D1 Chỉ số phòng thủ của Cloud, là một số nguyên từ 1 đến 98 92 A2 Chỉ số tấn công của Desperado, là một số nguyên từ 1 đến 90 89 D2 Chỉ số phòng thủ của Desperado, là một số nguyên từ 1 đến 88 56 P Mã địa điểm thi đấu, là một số nguyên từ 1 đến 11 6 Để thực thi ví dụ mẫu trên Visual Sutudio 2010, sinh viên nhấn tổ hợp phím Ctrl + F5 và quan sát kết quả trên màn hình. Để thực thi ví dụ mẫu trên Cygwin, sinh viên thực hiện các công việc sau: 1. Copy các file (main.cpp, cloud.cpp, cloud.h, 1_in.txt, 1_out.txt, 2_in.txt, 2_out.txt, 3_in.txt, 3_out.txt) vào cùng một thư mục trong Cygwin. Ví dụ như thư mục đó có đường dẫn là C:CygwinhomeVoDucVinh 2. Mở Cygwin và thực hiện các lệnh cd cần thiết để chuyển đến thư mục VoDucVinh.
  • 5. BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015 KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 5 3. Ghõ lệnh: $> g++ -o main.exe main.cpp cloud.cpp cloud.h (Nhấn ENTER) $>./main.exe (Nhấn ENTER và quan sát kết quả) Lưu ý: Project mẫu có 3 ví dụ. Sinh viên muốn kiểm tra nhiều trường hợp khác nhau thì cần TẠO THÊM các file .txt như trong project là được. Ví dụ sinh viên muốn tạo thêm ví dụ 4 thì mở notepad tạo 2 file, ghõ nội dung đặt tên là 4_in.txt và 4_out.txt (file này chứa kết quả của ví dụ 4). Sau đó, các bạn lưu lại cùng thư mục với 6 file .txt sẵn có. Đồng thời, trong file main.cpp, các bạn tìm đến dòng lệnh: const int NUMBER_OF_TESTCASE = 3; và sử thành const int NUMBER_OF_TESTCASE = 4; 2.4. Nhiệmvụ của SinhViên trong Assignment1 – Phần 1 Sinh viên tính giá trị 𝑝(𝐶) dự đoán xác suất thắng trận của Cloud. Với 𝑝(𝐶) là một số thập phân có dạng. Việc tính toángiá trị 𝑝(𝐶) được thực hiện bằng cách VIẾT CODE TRONG FILE cloud.cpp. Trong quá trình viết code trong file cloud.cpp, Sinh Viên KHÔNG IN BẤT KỲ thông tin gì ra màn hình, KHÔNG INCLUDE thư viện. Tất cả những gì SV cần làm là tính ĐÚNG và dùng lệnh return trả về giá trị 𝑝(𝐶), HẾT. Quá trình tính p(C) được mô tả như sau: nếu 𝑃 <5 thì khả năng tấn công của Cloud sẽ tăng gấp đôi (không quá 100) nhưng chỉ số phòng thủ sẽ giảm một nửa (phần nguyên của phép chia 𝐷1 / 2 nhưng không nhỏ hơn 1). Nếu 5 < 𝑃 < 11 thì khả năng tấn công của Desperado sẽ tăng thêm 20 lần (không quá 90) đồng thời chỉ số phòng thủ sẽ giảm 20 (không dưới 1). Nếu 𝑃 = 5 thì các chỉ sổ của Cloud và Desperado sẽ được giữ nguyên. Đặc biệt nếu 𝑃 = 11 thì chỉ số tấn công của Desperado sẽ tăng lên tối đa 90 và chỉ số phòng thủ sẽ giảm còn 1. Giá trị 𝑝(𝐶) được tính bằng công thức: 𝑃(𝐶) = 𝑚𝑖𝑛 (𝑚𝑎𝑥 ( (A1− D2+88)(12−P) 1232 , (D1− A2+90)(12−P) 1260 ) ,1.00) (1) Ví dụ 1: Với dữ liệu nhập là: 10 20 20 10 5 thì kết quả xuất ra màn hình là 0.50
  • 6. BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015 KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 6 Ngoài ra, các chỉ số tấn công, phòng thủ và địa điểm thi đấu của đôi bên có thể làm xuất hiện các tình huống đặc biệt như sau: a) Khi 𝑃 ≥ 5, Desperado vượt trội so với Cloud cả về tấn công lẫn phòng thủ nên chiến thắng chắc chắn thuộc về Desperado, 𝑃(𝐶) = 0.00. Tuy nhiên nếu 𝑃 < 5 thì 𝑝(𝐶) sẽ được tính như đã mô tả trong trường hợp cơ bản. Ví dụ 2: Với dữ liệu nhập là: 10 27 60 30 6 thì kết quả xuất ra màn hình là 0.00 Ví dụ 3: Với dữ liệu nhập là: 10 27 60 30 1 thì kết quả xuất ra màn hình là 0.70 b) 𝐴1 > 𝐷2 + 30 hoặc 𝐷1 > 𝐴2 + 30, do Cloud là một chiến binh thông minh nên chỉ cần thỏa mãn 1 trong 2 điều này thì chiến thắng chắc chắn thuộc về Cloud. 𝑃(𝐶) = 1. Ví dụ 4: Với dữ liệu nhập là: 50 4 61 15 6 thì kết quả xuất ra màn hình là 1 c) 𝐴2 = 𝐴𝐵̅̅̅̅ với A, B là 2 chữ số chẵn, 𝐷2 = 𝐶𝐷̅̅̅̅ với C, D là 2 chữ số lẻ. 𝑃(𝐶) = 0.50 – 𝑚𝑖𝑛 ( |50 − 𝐴1| 𝑃 1100 , |49 − 𝐷1| 𝑃 1078 ) Ví dụ 5: Với dữ liệu nhập là: 50 4 28 31 6 thì kết quả xuất ra màn hình là 0.50 d) Nếu A1 là lập phương của một số nguyên dương và 𝑃 < 11 thì
  • 7. BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015 KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 7 𝑃(𝐶) = 0.50 + 𝑚𝑎𝑥 ( |45 − 𝐴2|(11 − 𝑃) 990 , |44 − 𝐷2|(11 − 𝑃) 968 ) Tuy nhiên nếu 𝑃 = 11, tính như đã mô tả trong trường hợp cơ bản. . Ví dụ 6: Với dữ liệu nhập là: 36 27 45 88 1 thì kết quả xuất ra màn hình là 0.95 Ví dụ 7: Với dữ liệu nhập là: 36 27 45 88 11 thì kết quả xuất ra màn hình là 0.10 e) (Bonus) Nếu A1, D1, A2, D2 lập thành cấp số cộng (theo thứ tự bất kì), thì Desperado chính là Dark Maul, một chiến binh Sith đến từ một miền thiên hà xa xăm. Khi đó giá trị 𝑝(𝐶) được tính như sau: 𝑃(𝐶) = √𝑃2 + (11 − 𝑃)2 12 Ví dụ 7: Với dữ liệu nhập là: 12 18 15 21 11 thì kết quả xuất ra màn hình là 0.92 Lưu ý: các tình huống đặc biệt có độ ưu tiên từ a đến e trong trường hợp cả 2 tình huống cùng xảy ra. Tức là tình huống a sẽ có độ ưu tiên CAO NHẤT, b có độ ưu tiên cao kế tiếp sau a. Kết quả xuất ra màn hình sẽ dựa vào kết quả của tình huống có độ ưu tiên cao hơn. Ví dụ 8: Với dữ liệu nhập là: 22 25 28 31 4 thì kết quả xuất ra màn hình là 0.41 (theo tình huống c dù dữ liệu nhập này thỏa cả điều kiện e)
  • 8. BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015 KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 8 Ví dụ 9: Với dữ liệu nhập là: 30 27 80 70 4 thì kết quả xuất ra màn hình là 0.51 (theo tình huống a dù dữ liệu nhập này thỏa cả điều kiện d) 2.5. Cách kiểmthử chương trình Sinh viên sẽ được cung cấp bộ Testcase mẫu trên Sakai trước deadline khoảng 1 tuần để tự kiểm tra chương trình của mình. Bộ Testcase chấm bài sẽ hoàn toàn khác bộ Testcase mẫu nhưng có tính chất tương tự. Do đó, sinh viên nên tra chương trình của mình chạy đúng tất cả testcase mẫu. Lúc đó, khả năng đạt điểm cao là rất lớn. 2.6. Deadline và cách nộp bài  Sinh Viên đăng nhập vào hệ thống Sakai thông qua tài khoản đã được cấp phát.  Sinh Viên nộp duy nhất 1 file TÊN LÀ cloud.cpp trong mục Assignment (Sinh Viên không nén file, không đổi tên file).  Trước khi nộp bài, Sinh viên nên kiểm tra bài phải thực thi “ngon lành” trênCygwin.  Deadline: 23h55’ ngày 08.02.2015.  Sakai đã được thiết lập để Sinh Viên nộp bài tối đa 3 lần. Bài nộp mới nhất sẽ được nhận để chấm. Bài trước đó sẽ bị bỏ qua dù có làm tốt hơn bài nộp sau. PHẦN 3. CÁCH TÍNH ĐIỂM MÔN HỌC Thang điểm môn học gồm các phần như sau:  Điểm thi giữa kỳ chiếm trọng số 20%. Điểm này được tính bởi bài thi giữa kỳ của Sinh Viên. Điểm này tối đa là 10 điểm.  Điểm kiểm tra chuyên cần chiếm trọng số 10%. Điểm này được tính bởi các bài thực hành hàng tuần. Điểm này tối đa là 10 điểm.  Điểm thi cuối kỳ chiếm trọng số 70%. Điểm này chính là điểm mà Sinh Viên quan sát trên Website của Phòng Đào Tạo gồm hai phần: bài thi cuối kỳ và bài tập lớn.
  • 9. BÀI TẬP LỚN CƠ SỞ LẬP TRÌNH HK2-2014-2015 KHOA CÔNG NGHỆ THÔNG TIN ĐẠI HỌC TÔN ĐỨC THẮNG 9 Đ𝑖ể𝑚 70% = (Đ𝑖ê𝑚̉ 𝐴𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡 ∗ 2 + Đ𝑖ể 𝑚 𝑡ℎ𝑖 𝐻𝐾 ∗ 5) 7 Trong đó, điểm bài tập lớn được tính như sau: Đ𝑖ể 𝑚 𝐴𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡 = 𝐴𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡 1.1 + 𝐴𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡 1.2 + 𝐴𝑠𝑠𝑖𝑔𝑛𝑚𝑒𝑛𝑡2 Tổ ng số Testcase chấ m bài + Đ𝑖ể 𝑚 𝑡ℎưở𝑛𝑔 Điểm thưởng là điểm dành tặng những Sinh Viên tích cực và tiêu cực trong khóa học. Số điểm thưởng sẽ không cố định tùy từng trường hợp cụ thể. Điểm thưởng cũng có thể là một số âm. Điểm này xảy ra trong các trường hợp sau:  Sinh Viên tích cực thảo luận và giải đáp thắc mắc của bạn bè trên Forum của Sakai. Số mục trả lời và giải đáp ít nhất là 20.  Sinh Viên có tiến bộ vượt bậc trong từng bài tập lớn. Ví dụ Assignment 1 Sinh Viên đúng 10% số Testcase nhưng Assignment 2 Sinh Viên đúng 80%.  Sinh Viên tụt hậu đáng kể trong từng bài tập lớn. Ví dụ Assignment 1 Sinh Viên đúng 80% số Testcase nhưng Assignment 2 Sinh Viên đúng 10%. Điểm thưởng sẽ là một số âm.  Sinh Viên làm bài cực kỳ tốt nhưng trên Forum hoàn toàn không có một comment nào hỗ trợ bạn bè làm bài. Điểm thưởng sẽ là một số âm.  Sinh Viên tố giác các trường hợp đạo văn mà Giảng Viên chưa phát hiện.  … Giảng viên sẽ trực tiếp quan sát và tặng điểm thưởng đến Sinh Viên. Lưu ý: điểm bài tập lớn có thể vượt quá thang điểm 10, chẳng hạn Sinh Viên làm bài đạt 8 điểm nhưng tích cực trong khóa học và được Giảng Viên thưởng 8 điểm. Điểm mang đi tổng kết sẽ là 16 điểm. Tuy nhiên, điểm 70% phải lấy thang điểm 10 để phù hợp với qui định của nhà trường. Do đó, Sinh Viên, ngoài việc học tốt, còn được khuyến khích tạo ra nhiều giá trị hơn để giúp đỡ cộng đồng mà mình đang gắn bó.