Kiểm tra nhập dữ liệu đầu vào cho các biến 1.1- Kiểm tra việc nhập các chức năng muốn thực hiện Khi nhập chức năng muốn thực hiện là: “ absj “ mà không phải là số 1 hoặc 2 chương trình b
Trang 1TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
BÀI TẬP NHÓM MÔN HỌC
KỸ THUẬT LẬP TRÌNH
HÀ NỘI 2013
Giảng viên hướng dẫn : TS Vũ Thị Hương Giang
- Trần Trung Hiếu
- Nguyễn Minh Tiến
- Nguyễn Văn Tùng
- Nguyễn Hồng Vinh
CHỮA BÀI NHÓM 6
Trang 2Mục lụ
Mục lục 2
I- KIỂM THỬ 4
1 Kiểm tra nhập dữ liệu đầu vào cho các biến 4
1.1- Kiểm tra việc nhập các chức năng muốn thực hiện 4
1.2- Kiểm tra việc nhập số lượng phần tử cho mảng 4
1.3- Kiểm tra việc nhập giá trị cho các phần tử trong mảng 5
2 Kiểm thử các chức năng của chương trình 5
2.1- Bubble sort 6
2.2- Insertion sort 6
2.3- Selection sort 6
2.4- Tìm phần tử lớn nhất và các vị trí xuất hiện 7
2.5- Tìm phần tử nhỏ nhất và các vị trí xuất hiện 7
2.6- Giá trị trung bình của các phần tử trong mảng 8
2.7- Độ lệch của 2 phân tử ở 2 vị trí cho trước 8
2.8- Độ lệch trung bình 9
2.9- Tìm kiếm tuần tự 10
2.10- Tìm kiếm nhị phân 11
2.11- Tính thời gian tính 12
II- GỠ RỐI 13
1 Lỗi khi nhập số lượng phần tử vào từ bàn phím 13
1.1- Nguyên nhân 13
1.2- Phương án khắc phục 13
1.3- Kết quả sau khi khắc phục 15
2 Lỗi nhập các giá trị phần tử của mảng từ bàn phím 15
2.1- Nguyên nhân 15
2.2- Phương án khắc phục 16
2.3- Kết quả sau khi khắc phục 17
3 Lỗi nhập yêu cầu bằng ký tự 17
3.1- Nguyên nhân 17
Trang 33.3- Kết quả sau khi khắc phục 17
Tài liệu tham khảo 19
Trang 4I- KIỂM THỬ
Để tiến hành tiến hành kiểm thử chương trình của nhóm 6 nhóm chúng em đã tiến hành kiểm thử chương trình theo chức năng cụ thể như sau:
1 Kiểm tra nhập dữ liệu đầu vào cho các biến
1.1- Kiểm tra việc nhập các chức năng muốn thực hiện
Khi nhập chức năng muốn thực hiện là: “ absj “ mà không phải là số (1 hoặc 2) chương trình bị “treo”, không thực hiện được tiếp nữa
1.2- Kiểm tra việc nhập số lượng phần tử cho mảng
Lỗi khi nhập số lượng phần tử là “sds” từ bàn phím chương trình chạy không dừng
Trang 51.3- Kiểm tra việc nhập giá trị cho các phần tử trong mảng
nhập dữ liệu từ bàn phím là kiểu ký tự (VD ret) cho các phần tử trong mảng chương trình bỏ qua việc nhập các phần tử khác khi thực hiến chức năng thì
bị treo
Để kiểm thử các chức năng của chương trình chúng em đã tiến hành nhập số phần tử cho mảng là 10
Với các giá trị các phần tử trong mảng như sau:
Trang 62.1- Bubble sort
chương trình cho kết quả như sau:
Kết luận : chương trình chạy đúng theo yêu cầu
Chương trình cho kết quả như sau:
Kết luận : chương trình chạy đúng theo yêu cầu
Chương trình cho kết quả như sau:
Trang 7Kết luận : chương trình chạy đúng theo yêu cầu
Chương trình cho kết quả như sau:
Kết luận : chương trình chạy đúng theo yêu cầu
2.5- Tìm phần tử nhỏ nhất và các vị trí xuất hiện.
Chương trình cho kết quả như sau:
Trang 8Kết luận : chương trình chạy đúng theo yêu cầu
Chương trình cho kết quả như sau:
Kết luận : chương trình chạy đúng theo yêu cầu
2.7- Độ lệch của 2 phân tử ở 2 vị trí cho trước
TH1: nhập vị trí lớn hơn kích thước mảng
Chương trình đưa ra lỗi và kết thúc
Trang 9Kết luận : chương trình chạy đúng theo yêu cầu
TH2: cả hai vị trí đều thuộc mảng
Chương trình chạy đúng
2.8- Độ lệch trung bình
Chương trình chạy đúng :
Trang 102.9- Tìm kiếm tuần tự.
TH1: Không có phần tử :
Chương trình chạy đúng
TH2: Có 1 phần tử
Chương trình chạy đúng
TH3: Có nhiều hơn hai phần tử bằng giá trị cần tìm
Chương trình chạy đúng
Trang 112.10- Tìm kiếm nhị phân.
TH1: Không có phần tử:
Chương trình chạy đúng
TH2: Có 1 phần tử:
Chương trình chạy đúng:
TH3: Có nhiều hơn 1 phần tử:
Chương trình chạy đúng:
Trang 122.11- Tính thời gian tính.
Chương trình chạy đúng
Trang 13
II- GỠ RỐI
1 Lỗi khi nhập số lượng phần tử vào từ bàn phím
Không viết Assertions dùng để kiểm tra lỗi khi nhập số lượng phần tử vào từ bàn phím như
1.2- Phương án khắc phục
Xây dựng Assertions dùng để kiểm tra lỗi khi nhập số lượng phần tử vào từ bàn phím như sau :
int b;
float a;
Trang 14printf("\n Nhap so luong phan tu cua mang count = ");
scanf("%s",&dulieu);
fflush(stdin);
if(strcmp(dulieu,"0")!=0){
a= atof(dulieu);
b= atoi(dulieu);
if(a ==0){
printf("\n ban da nhap so luong phan tu la ky tu");
printf("\n sai yeu cau moi ban nhap lai");
b= ASSERT3();
return b;
} else{
if((a-b)!=0){
printf("\n ban da nhap so luong phan tu la kieu so thuc"); printf("\n sai yeu cau moi ban nhap lai");
b= ASSERT3();
return b;
} else{
if(b<0||b>1000){
printf("\n ban da nhap so luong phan tu khong dung kich thuoc yeu cau");
printf("\n sai yeu cau moi ban nhap lai");
b= ASSERT3();
Trang 15return b;
} else return b;
} }
}
else {
b=0;
return b;
}}
2 Lỗi nhập các giá trị phần tử của mảng từ bàn phím
2.1- Nguyên nhân
Không viết Assertions dùng để kiểm tra lỗi nhập các giá trị phần tử của mảng từ
Trang 16- lỗi khi nhập vào bàn phím là ký tự
2.2- Phương án khắc phục
Viết Assertions dùng để kiểm tra lỗi nhập các giá trị phần tử của mảng từ bàn phím như sau:
float ASSERT1( int chiso){
float a;
char dulieu[10];
printf("\n nhap phan tu thu %3d max[%3d]= ", chiso+1, chiso);
scanf("%s",&dulieu);
fflush(stdin);
if(strcmp(dulieu,"0")!=0){
a= atof(dulieu);
if(a ==0){
printf("\n nhap sai!! moi ban nhap lai");
a= ASSERT1(chiso);
return a;
} else return a;
}
else {
a=0;
return a;
}
}
Trang 172.3- Kết quả sau khi khắc phục
3 Lỗi nhập yêu cầu bằng ký tự
3.1- Nguyên nhân
Biến n (biến xác định chức năng) không xác định khi người dùng nhập vào kiểu ký tự
3.2- Phương án khắc phục
Viết một hàm quy định khi nhập ký tự vào thì n được xác định là bằng 0 như sau: Char dulieu[10];
printf("\n \n Chon chuc nang: "); scanf("%s",&dulieu);
n=atoi(dulieu);
3.3- Kết quả sau khi khắc phục
Nhập ký tự từ bàn phím
Trang 18Sau khi ấn enter sẽ được chọn lại
Trang 19Tài liệu tham khảo
[1] Slide bài giảng KTLT-Vũ Thị Hương Giang
[2] Code complete A Practical Handbook ofd Software Construction của tác giả Steve Mc Connell