Tổng hợp tài liệu tin học đại cương, các dạng công thức excel,.........................................................................................................................................................................................
.c om cu u du o ng th an co ng 50 LỖI THƯỜNG GẶP TRONG THỰC HÀNH TIN HỌC ĐẠI CƯƠNG - IT1110 VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG CuuDuongThanCong.com https://fb.com/tailieudientucntt GIỚI THIỆU CHUNG cu u du o ng th an co ng c om • Gồm 50 lỗi thường gặp thực hành THĐC • Giúp sinh viên học thực hành dễ dàng Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om NỘI DUNG LỖI TRANG ng th Kiểu liệu biểu thức C Vào liệu C an Nộp hệ thống CodeForces cu Mảng Xâu ký tự u du o Cấu trúc điều khiển C co ng NỘI DUNG #1 - #3 5–7 #4 - #16 - 21 #17 - # 35 23 - 41 #36 - #50 43 - 57 Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om ng cu u du o ng th an co NỘP BÀI LÊN HỆ THỐNG CODEFORCES Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt #1 – LỖI LIMIT KHI SUBMIT BÀI GIẢI THÍCH LỖI CÁCH XỬ LÝ Lỗi báo time limit test Thường sinh viên sử dụng lệnh làm chương trình “đợi” thuật toán chưa tối ưu dẫn đến thời gian chạy Trong ảnh bên dùng hàm getch() Hàm getch() đợi input từ bàn phím sau chạy tiếp, thế, đọc tới lệnh này, chương trình đứng “đợi” suốt dịng lệnh Với lỗi dùng hàm getch(): Xố bỏ lệnh thư viện conio.h tương ứng Với lỗi thuật toán chưa tối ưu: kiểm tra lại tối ưu lại thuật toán .c om LỖI XUẤT HIỆN cu u du o ng th an co ng Lỗi limit submit hệ thống codeforces: Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt #2 – BIÊN DỊCH LỖI DO SAI CÚ PHÁP GIẢI THÍCH LỖI CÁCH XỬ LÝ Biên dịch lỗi submit lên CodeForces thường lỗi cú pháp (thiếu ngoặc, chấm phẩy…) Với lỗi cú pháp, sinh viên chạy code Dev C++, trình biên dịch Dev C++ báo vị trí lỗi du o u cu Lỗi xảy ra: ng th an co ng c om LỖI XUẤT HIỆN Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt #3 – LỖI SAI OUTPUT GIẢI THÍCH LỖI CÁCH XỬ LÝ Lệnh fflush(stdin) xố nhớ đệm stdin codeforces Vì thế, chương trình chạy output sai submit CodeForces Trên máy tính, input nhập vào tuần tự, fflush xố nhớ tạm ký tự nhập trước đó, ký tự sau tiếp tục nhập bình thường Cịn Codeforces, input stdin tạo sẵn, lệnh xoá bỏ nhớ đệm input làm cho chương trình chạy sai khơng ý muốn Khơng sử dụng lệnh fflush(stdin) phải submit lên Codeforces Tìm hiểu phương pháp khác để nhận liệu từ stdin cho Sinh viên thử kiểm nghiệm code với chức custom invocation CodeForces cu u du o ng th an co ng c om LỖI XUẤT HIỆN Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om cu u du o ng th an co ng KIỂU DỮ LIỆU VÀ BIỂU THỨC TRONG C VÀO – RA DỮ LIỆU TRONG C Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt #4 – LỖI TRÀN SỐ GIẢI THÍCH LỖI CÁCH XỬ LÝ Lỗi xảy thực phép tính vượt phạm vi kiểu liệu (char) dẫn đến tràn số, tương tự cho kiểu liệu khác (chú ý với phép cộng nhân số lớn gây tràn số ) Khai báo biến có kiểu liệu có kích thước lớn kiểu liệu chẳng hạn int, cu u du o ng th an co ng c om LỖI XUẤT HIỆN Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt #5 – LỖI KHI THAY ĐỔI GIÁ TRỊ CỦA HẰNG SỐ GIẢI THÍCH LỖI c om LỖI XUẤT HIỆN cu u du o ng th an co ng Biến số (constant) không phép thay đổi CÁCH XỬ LÝ Chỉ sử dụng constant với biến cố định, khơng thay đổi suốt q trình thực thi code Với biến có thay đổi giá trị, khơng sử dụng kiểu biến constant Trang 10 CuuDuongThanCong.com https://fb.com/tailieudientucntt #37 – LỖI LOGIC GIẢI THÍCH LỖI CÁCH XỬ LÝ Xóa phần tử mảng, hình bên sai lỗi logic, gán giá trị cho phần tử cần xóa Cách giải tìm tới vị trí phần tử đó, tìm cách cho khỏi mảng giảm kích thước mảng Ví dụ: chuyển vị trí phần tử xuống cuối mảng giảm kích thước mảng phần tử xong cu u du o ng th an co ng c om LỖI XUẤT HIỆN Trang 44 CuuDuongThanCong.com https://fb.com/tailieudientucntt #38 – LỖI KHAI BÁO BIẾN SAI GIẢI THÍCH LỖI CÁCH XỬ LÝ Mảng khai báo với kích thước phần tử sử dụng vượt số phần tử ban đầu khiến số vùng nhớ khác bị ghi đè Khai báo lại mảng Kiểm soát số lượng phần tử mảng viết code cu u du o ng th an co ng c om LỖI XUẤT HIỆN Trang 45 CuuDuongThanCong.com https://fb.com/tailieudientucntt #39 – LỖI SAI KHI SO SÁNH MẢNG ng co an th ng du o u cu GIẢI THÍCH LỖI CÁCH XỬ LÝ Đây lỗi hay gặp C so sánh mảng cách so sánh tên mảng, Vì tên mảng chứa địa phẩn tử mảng Một cách xử lý hay dùng sử dụng vòng lặp duyệt phần tử mảng so sánh chúng với .c om LỖI XUẤT HIỆN Trang 46 CuuDuongThanCong.com https://fb.com/tailieudientucntt #40 – LỖI SAI CÚ PHÁP GIẢI THÍCH LỖI CÁCH XỬ LÝ Chương trình khơng chạy báo lỗi dịng +Ngun nhân: Tại dòng 4, khai báo biến mảng với tên ‘mang’ người lập trình quên cặp ký tự ‘[]’ Đây lỗi cú pháp khai báo biến mảng Xem lại sửa phần khai báo biến mảng Lưu ý khai báo biến mà không kèm giá trị khởi tạo phải nhớ xác định số lượng phần tử tối đa mảng Ví dụ: int array[100]; Cịn muốn khai báo biến kèm giá trị khởi tạo khơng cần xác định số lượng phần tử tối đa Ví dụ: int array[] = {1,2,3,5}; cu u du o ng th an co ng c om LỖI XUẤT HIỆN Trang 47 CuuDuongThanCong.com https://fb.com/tailieudientucntt #41 – LỖI KHI SỬ DỤNG MẢNG GIẢI THÍCH LỖI CÁCH XỬ LÝ Mặc dù khai báo mảng array với kích cỡ phần tử, sử dụng array[5], array[6]… không báo lỗi Do địa array[5], array[6]… tồn tiếp nối sau array[4], chứa giá trị “rác” Chú ý khai báo kích cỡ mảng Chú ý mục index sử dụng phần tử mảng cu u du o ng th an co ng c om LỖI XUẤT HIỆN Trang 48 CuuDuongThanCong.com https://fb.com/tailieudientucntt #42 – LỖI VƯỢT Q KÍCH THƯỚC MẢNG CÁCH XỬ LÝ Bài tốn thêm phần tử vào mảng thường bị lỗi vượt kích cỡ mảng Như ví dụ mảng bị tràn nên giá trị Khai báo mảng với kích cỡ lớn Hoặc kiểm tra mảng đầy chưa, lần thêm phần tử phải nới rộng kích cỡ mảng ng co an th ng cu u du o GIẢI THÍCH LỖI c om LỖI XUẤT HIỆN Trang 49 CuuDuongThanCong.com https://fb.com/tailieudientucntt #43 – LỖI NHẦM HÀNG VÀ CỘT GIẢI THÍCH LỖI CÁCH XỬ LÝ Mảng nhiều chiều - mảng hai chiều Khai báo ma trận hàng cột in ma trận lại hàng cột Ma trận in bị số giá trị lại có thêm số giá trị lạ (Lệnh in ma trận bị nhầm: i chạy từ đến n j chạy từ đến m) Chú ý lập trình khơng để nhầm lẫn kích cỡ chiều mảng cu u du o ng th an co ng c om LỖI XUẤT HIỆN Trang 50 CuuDuongThanCong.com https://fb.com/tailieudientucntt #44 – LỖI SO SÁNH MẢNG ng co an th ng du o u cu GIẢI THÍCH LỖI CÁCH XỬ LÝ So sánh xâu với Lỗi xảy sử dụng == Mặc dù chương trình compile chương trình in sai kết Cụ thể đây, mong muốn in Yes chương trình lại in No Lý lỗi: chương trình so sánh địa mảng str1 str2 Khi so sánh xâu sử dụng hàm strcmp() để so sánh c om LỖI XUẤT HIỆN Trang 51 CuuDuongThanCong.com https://fb.com/tailieudientucntt #45 – LỖI SỬ DỤNG HÀM KHÔNG PHÙ HỢP ng co an th ng du o u cu GIẢI THÍCH LỖI CÁCH XỬ LÝ Nhập xâu sử dụng scanf Khi in hình nhận phần xâu nhập vào Cụ thể phần xâu trước dấu Space (“tin”) thay tồn xâu (“tin hoc dai cuong hoc ky 20192”) Lý lỗi: hàm scanf() dừng tổng hợp ký tự gặp dấu xuống dòng, dấu cách Sử dụng hàm gets() Tuy nhiên hàm gets() bị xóa phiên C11 Gợi ý sử dụng hàm fgets() thay .c om LỖI XUẤT HIỆN Trang 52 CuuDuongThanCong.com https://fb.com/tailieudientucntt #46 – LỖI THIẾU LỆNH FFLUSH ng co an th ng du o u cu GIẢI THÍCH LỖI CÁCH XỬ LÝ Xâu s khơng nhập vào Do hàm scanf kết thúc kí tự \n, kí tự lưu đệm Lệnh fgets() chạy nhận kí tự từ đệm kết thúc nhập Xóa đệm trước nhập xâu Sử dụng lệnh fflush() .c om LỖI XUẤT HIỆN Thêm lệnh fflush(stdin) trước lệnh fgets() Trang 53 CuuDuongThanCong.com https://fb.com/tailieudientucntt #47 – LỖI SAI THỨ TỰ THAM SỐ GIẢI THÍCH LỖI c om LỖI XUẤT HIỆN Kiểm tra lại thứ tự chuỗi nguồn, chuỗi đích sử dụng hàm strcpy() cu u du o ng th an co ng Sai thứ tự tham số sử dụng hàm strcpy() CÁCH XỬ LÝ Trang 54 CuuDuongThanCong.com https://fb.com/tailieudientucntt #48 – LỖI NHẦM NGOẶC ĐƠN VÀ NGOẶC KÉP GIẢI THÍCH LỖI CÁCH XỬ LÝ Lỗi sử Sửa lại cách dụng sai ‘ ‘ biểu diễn “ ” Lưu ý chuỗi ‘ ‘ dùng cho ký tự “ “ dùng cho chuỗi cu u du o ng th an co ng c om LỖI XUẤT HIỆN Trang 55 CuuDuongThanCong.com https://fb.com/tailieudientucntt #49 – LỖI LẬP TRÌNH CHƯA ĐÚNG GIẢI THÍCH LỖI c om LỖI XUẤT HIỆN cu u du o ng th an co ng Lỗi names mảng nhiều chuỗi nên dùng printf với %s in chuỗi mảng thay tất chuỗi mảng CÁCH XỬ LÝ Tìm hiểu thêm phương pháp in danh sách chuỗi (gợi ý dùng vòng for) Trang 56 CuuDuongThanCong.com https://fb.com/tailieudientucntt #50 – LỖI SAI CÚ PHÁP GIẢI THÍCH LỖI Nhập xâu sử dụng %c, biến lưu trữ kí tự nhập vào CÁCH XỬ LÝ Xem lại dòng 9, sửa %c thành %s (dùng để đọc vào chuỗi kí tự khơng có khoảng trắng) cu u du o ng th an co ng c om LỖI XUẤT HIỆN Trang 57 CuuDuongThanCong.com https://fb.com/tailieudientucntt .c om ng co an th ng du o u cu CuuDuongThanCong.com https://fb.com/tailieudientucntt ... CodeForces cu Mảng Xâu ký tự u du o Cấu trúc điều khiển C co ng NỘI DUNG #1 - #3 5–7 #4 - #16 - 21 #17 - # 35 23 - 41 #36 - #50 43 - 57 Trang CuuDuongThanCong.com https://fb.com/tailieudientucntt .c... ቊ CÁCH XỬ LÝ Đây lỗi sai Sửa lại điều logic kiện là: Điều kiện -1