CHAPTER 1 GIẢI QUYẾT CÁC VẤN ĐỀ LẬP TRÌNH • 1) Viết chương trình nhập vào mã số sinh viên, họ và tên, điểm thi 1 sinh viên Xuất ra màn hình thông tin sinh viên vừa nhập • Xác định kiểu dữ liệu, khai b[.]
Trang 1GIẢI QUYẾT CÁC VẤN ĐỀ LẬP
TRÌNH
• 1) Viết chương trình nhập vào mã số sinh viên, họ và tên, điểm thi 1 sinh viên Xuất ra màn hình thông tin sinh viên vừa nhập.
• Xác định kiểu dữ liệu, khai báo biến, xử lý nhập, xử lý xuất
• Không cần xây dựng class-object
• 2) Viết chương trình nhập vào 1 danh sách 100 số điện thoại của khách hàng, xuất ra màn hình danh sách 100 sđt đó
• Chỉ cần sử dụng cấu trúc dữ liệu mảng
• 3) Viết chương trình nhập vào 1 danh sách khách hàng có makh, tenkh, sđt, diachi, diachiemail, phanloaikhachhang Xuất ra màn hình thông tin khách hàng theo makh
• Xây dựng cấu trúc class-object khachhang
• Tạo cơ sở dữ liệu mảng đối tượng khách hang
• Nếu không: Sử dụng 6 mảng, thêm xoá sửa 1 mảng kéo theo các mảng còn lại.
Trang 2GIẢI QUYẾT CÁC VẤN ĐỀ LẬP
TRÌNH
• 4) Viết chương trình tạo, nhập danh sách, tìm kiếm, thêm, xoá, sửa danh sách khách hang
• Xây dựng class-object khachhang
• Nhiều tác vụ trên danh sách: xây dựng class-object quản lý danh sách kh
Trang 3Case study:
• Nêu nhận xét về chương trình quản lý danh sách sinh viên hiện tại, các điều chỉnh, phát triển để có thể trở thành một ứng dụng trong thực tế.
Trang 4GIẢI QUYẾT VẤN ĐỀ XỬ LÝ NHẬP
• Xử lý nhập/xuất dữ liệu từ bàn phím
• Xử lý nhập/xuất dữ liệu từ file trên hệ thống
• Xử lý nhập/xuất dữ liệu từ network
• Xử lý nhập/xuất dữ liệu từ giao tiếp với ứng dụng khác
• Vấn đề kiểm tra định dạng dữ liệu khi nhập
• Định dạng chuẩn
• Định dạng tự định nghĩa: đc email, biển số xe…
• Nhập sai định dạng -> Ngoại lệ (Lỗi/Xử lý ngoại lệ)
Trang 5GIẢI QUYẾT VẤN ĐỀ XỬ LÝ DỮ
LIỆU
• Chương trình luôn đối mặt vấn đề:
• Chiếm dụng tài nguyên không gian tài nguyên bộ nhớ -> Solution?
• Thời gian thực thi -> Solution?
• Thời gian truy xuất ->Solution?
• Ví dụ chương trình quản lý danh sách sinh viên
• Chiếm dụng tài nguyên không gian tài nguyên bộ nhớ -> Lựa chọn cấu trúc dữ liệu tốt nhất
• Thời gian thực thi -> Giải thuật sắp xếp tốt nhất
• Thời gian truy xuất -> Giải thuật tìm kiếm tốt nhất
Trang 6Nội dung tuần:
• Phát triển chương trình quản lý danh sách sinh viên:
• Nhập danh sách sinh viên từ file và xuất ra file txt, excel
• Xử lý nhập dữ liệu – xử lý ngoại lệ
• Chuyển cấu trúc dữ liệu sử dụng mảng có kích thước động - ArrayList
• Chuyển cấu trúc dữ liệu sử dụng dach sách liên kết – Linked List
Tuần tới: Sử dụng cấu trúc cây, các giải thuật sắp xếp và tìm kiếm
Trang 7Xử lý ngoại lệ khi nhập liệu:
• Sử dụng cấu trúc cho block lệnh nhập liệu có thể xảy ra ngoại lệ:
• Try {…} catch (Exception e) {e.printStackTrace();} //in ra lỗi
• Try {…} catch (Exception e) {} //chỉ thử thực hiện không cần quan tâm lỗi
• {….} if (điều_kiện_xảy_ra_ngoại_lệ) throw new InputMismatchException(“Loi nhap lieu”);
• Sử dụng throws cho phương thức đẩy ngoại lệ cho bên truy xuất phương thức xử lý ngoại lệ
Public void method() throws IOException {
{…}
If (điều_kiện_xảy_ra_ngoại_lệ) throw new IOException(“Loi vi pham dieu kien”);
}
Trang 8Chuyển đổi cấu trúc dữ liệu
ArrayList
• ArrayList<sinhvien> danhsachsv = new ArrayList<sinhvien>();
• Soluongsv -> danhsachsv.size()
add(int index, sinhvien e) Chèn sinhvien e vào vị trí index
get(int index) Lấy đối tượng sinh viên vị trí index trong danh sách set(int index, sinhvien element) Thay thế đối tượng ở vị trí index bằng đối tượng
sinhvien element
indexOf(Object o), lastIndexOf(Object o) Trả về vị trí đầu tiên, vị trí cuối, -1 nếu không thấy remove(int index) Gở bỏ phần tử tại vị trí index
Trang 9Chuyển đổi cấu trúc dữ liệu Linked List
• List<sinhvien> danhsachsv = new LinkedList<>();
add(int index, Object element)
addFirst(Object o)
addLast(Object o)
addAll(Collection e)
addAll(int index, Collection e)
get(int index)
getFirst()
getLast()
removeObject(Object o),remove(int index),
removeFirst(),removeLast()
clear(),size()
Contains(Object o), indexOf(Object o), lastIndexOf(Object o)