Professional Documents
Culture Documents
Foundation - Cyberlearn
Foundation - Cyberlearn
-----------------------------------------------------------
*** B1: Xây dựng tư duy lập trình
- Monkey Coding
+ Không có kỹ năng tư duy: nhìn thì code theo được nhưng tự code ko nổi
+ Không phân tích nghiệp vụ
+ Code máy móc: không sáng tạo đc vì ko biết cấu trúc dl, giải thuật
+ Chỉ biết ngôn ngữ lập trình
+ Hàm (Function)
+ Collections:
Mảng (Arrays)
Danh sách (List)
- Cấu trúc dữ liệu: lưu trữ, tổ chức dữ liệu sao cho hiệu quả
Một số cấu trúc dữ liệu phổ biến:
+ Mảng (Array, ArrayList)
+ Danh sách liên kết (LinkedList)
+ Hàng đợi (Queue)
+ Ngăn xếp (Stack)
+ Bảng băm (Hastable)
+ Cây (Tree)
-----------------------------------------------------------
*** B2: IDE
- IDE là gì?
+ Dùng để code
+ Giúp biên dịch (build $ compile) và thực thi (run) code
+ Giúp debug
+ Hỗ trợ auto complete: đề xuất từ khóa, câu lệnh điều khiển, hàm, lớp...
+ Syntax Highlighter: tô màu tên hàm, lớp,...
- Một số IDE thông dụng
- Các chức năng chính trên IDE
- Phím tắt của IDE: hotkeys
- Chế độ code tự động (Intelligent code completion)
-----------------------------------------------------------
*** B3: Tư duy máy tính, thuật toán, thuật giải
-----------------------------------------------------------
*** B4: Chương trình HelloWorld Java
- Hàm main?
+ Là entry point, điểm đầu vào của chương trình. Khi một ch tr khởi chạy,
nó sẽ tìm đến hàm main và xử lý các lệnh ở bên trong hàm đó. Nếu không có
hàm main, ch tr sẽ ko chạy được.
- Một số ký tự in ra console:
+ \t: khoảng tab
+ \n: xuống dòng
+ \": in dấu "
+ \': in dấu '
+ \\: backslash, in dấu \
-------------------------------------------------------------------------------
*** KHÓA 2: MẢNG - CHUỖI
Tên mảng là địa chỉ ô nhớ của phần tử đầu tiên của mảng, cũng là địa chỉ
của mảng
* Mảng 1 chiều
Xuất mảng 1 chiều dùng for...each:
for (kieu_du_lieu tenBien : tenMang) {
// code
};
* Mảng 2 chiều
* Hàm và mảng
-------------------------------------------------------------------------------
*** KHÓA 4: NỀN TẢNG LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG
-----------------------------------------------------------
B1: Giới thiệu OOP
- Class là tập hợp các đối tượng có chung các thuộc tính và phương thức
- UML - Unified Modeling Language - Sơ đồ lớp: mô hình hóa các lớp đối tượng
cần có, bao gồm các thuộc tính nào, phương thức nào từ nghiệp vụ nhận được.
-----------------------------------------------------------
B2: Instance
- Là thể hiện của lớp đối tượng, hay là một đối tượng cụ thể của 1 lớp
- VD:
NhanVien nhanVien1 = new NhanVien ();
Trong đó:
NhanVien: class
nhanVien1: tên instance(đối tượng)
new: từ khóa tạo mới đối tượng, cấp phát vùng nhớ cho đối tượng đó
NhanVien(): hàm khởi tạo của class NhanVien
-----------------------------------------------------------
B3,4: next
-----------------------------------------------------------
B5: Tính đóng gói - Encapsulation
- Kiểm soát được việc cho bên ngoài thấy hay không thấy (không truy cập, sửa
đổi được)
- Tạo ra cơ chế ngăn ngừa việc gọi phương thức của lớp này tác động hay truy
xuất dữ liệu của lớp khác
- Không quan tâm bên trong code gì, chỉ cho bên ngoài dùng cái cần thiết
- Thay đổi code bên trong lớp đó mà ko ảnh hưởng đến lớp khác
- Bảo trì và nâng cấp mà không đụng đến các lớp khác
- Ngăn ngừa việc gán các giá trị KHÔNG HỢP LỆ vào các thuộc tính của đối tg
-> Có thể control điều này qua accessor modifier: public, private, protected,
internal,
và accessor method: get, set
-> muốn cho bên ngoài dùng thì get
-> muốn cho bên ngoài sửa thì dùng set
-----------------------------------------------------------
B6: ArrayList & LinkedList (thuộc Collections)
- Tại sao lại phải dùng những kiểu này mà ko dùng array?
=> array sau khi khởi tạo -> không thay đổi được kích thước, nghĩa là không
thêm hay xóa được phần tử trong arr.
=> Phải dùng thêm ArrayList & LinkedList
-------------------------------------------------------------------------------
KHÓA 5: LẬP TRÌNH HƯỚNG ĐỐI TƯỢNG CHUYÊN SÂU
-----------------------------------------------------------
*** Abstract Class
- Syntax:
abstract class tên_lớp {
các_thuộc_tính;
các_phương_thức;
}
- Khác lớp thường ở chỗ nào?
+ Lớp trừu tượng là trong lớp đó có ít nhất 1 phương thức trừu tượng
* Không thể tạo Instance (1 thể hiện) của lớp này (mà chỉ các class kế thừa
từ lớp abstract này tạo instance được)
* Phương thức trừu tượng:
+ Không có thân hàm
-> Các lớp kế thừa từ class có pt trừu tượng phải cài đặt cho phương
thức này.
- Tại sao lại có abstract class?
+ Phương thức (là pt abstract) chưa biết sẽ được cài đặt thế nào, chi tiết
cài đặt sẽ nằm ở lớp con (lớp kế thừa)
+ Nếu không có abstract -> lớp con không cài cũng ok ->Nếu người code lớp
cha và lớp con khác nhau -> dễ bị miss code
-> Có abstract sẽ giúp ko bỏ sót việc cài đặt các abstract method này vì
IDE sẽ thông báo.
-----------------------------------------------------------
*** Interface
- Tại sao lại có Interface?
+ Java và C# KHÔNG có đa kế thừa class (đa kế thừa: 1 lớp có thể kế thừa từ
nhiều lớp khác nhau) mà chỉ có thể kế thừa từ 1 lớp -> phải tạo ra Interface
để 1 lớp có thể implement nhiều Interface (giống như đa kế thừa nhưng không
phải đa kế thừa)
- Định nghĩa về interface:
+ Interface KHÔNG phải class
+ Không có quan hệ cha con (cùng loại, vd class DongVat, class con là Cho
hoặc mèo) với class mà chỉ là quan hệ về chức năng (phương thức, hành động)
v class nghĩa là: interface là tập hợp các phương thức mà nhiều lớp có thể
implement và cài đặt
+ Một class có thể implement nhiều interface
+ Interface ko có thân hàm, việc cài đặt thân hàm là dành cho các lớp
implement interface đó.
+ Interface có thể có cả thuộc tính lẫn phương thức:
++ Các thuộc tính mặc định là static + public + final. Không cần ghi
khi
khai báo, truy xuất như biến static - nghĩa là truy xuất trực tiếp qua
tên Interface
++ Các phương thức mặc định access mod là public và có sẵn static
Note:
1 class cần khai báo các phần:
+ Attributes
+ Get/Set
+ Constructors
+ Input/Output
+ Business Methods
-------------------------------------------------------------------------------
*** ALGORITHM
- Để lựa chọn 1 thuật toán phù hợp cần phải cân nhắc 2 yếu tố quan trọng:
+ Tốc độ chạy -> tốc độ chạy thì phải phụ thuộc vào nhiều yếu tố:
. Kiến trúc máy tính: 32 bit - 64 bit
. Bộ xử lý: 1 core - đa core
. Cách thực thi, xử lý: tuần tự - song song
. SỐ LƯỢNG INPUT
.Thời gian truy xuất bộ nhớ: đọc - viết - ...
=> Độ phức tạp thuật toán được biểu diễn bằng 1 hàm thể hiện mối liên hệ
giữa số lượng input đầu vào (ký hiệu là n) với số phép tính mà thuật toán
đó phải thực hiện
- Big O loại bỏ các biến số đầu vào có ảnh hưởng nhỏ và giữ lại các biến số
có ảnh hưởng lớn KHI `số lượng đầu vào` tiến tới nhiều vô cùng
-----------------------------------------------------------
3. THUẬT TOÁN TÌM KIẾM
-> Mỗi khi tìm hiểu về thuật toán, phải hiểu cách hoạt động của nó
-> Bất chấp ngôn ngữ là gì, đều có thể tái hiện lại thuật toán đó