Please enable JavaScript.
Coggle requires JavaScript to display documents.
(CHƯƠNG 1: TỔNG QUAN VỀ KỸ THUẬT LẬP TRÌNH) - Coggle Diagram
CHƯƠNG 1: TỔNG QUAN VỀ KỸ THUẬT LẬP TRÌNH
1.1. CHƯƠNG TRÌNH MÁY TÍNH
Giải quyết bài toán bằng máy tính
Xác định INPUT
Xác định OUTPUT
Quy trình:
Bài toán → Giải thuật → Chương trình → Ngôn ngữ máy → Máy thực hiện
Chương trình máy tính
Tập hợp câu lệnh / chỉ thị
Một hoặc nhiều ngôn ngữ lập trình
Trật tự xác định
Dữ liệu / tài liệu liên quan
→ Tự động thực hiện nhiệm vụ / giải quyết vấn đề
1.2. GIẢI THUẬT
Khái niệm
Dãy hữu hạn thao tác / phép toán
Trình tự xác định
Tác động lên dữ liệu
→ Kết quả mong muốn
Tính chất
INPUT
OUTPUT
Hữu hạn
Kết thúc sau hữu hạn bước
Xác định
Rõ ràng, chính xác → 1 INPUT → 1 OUTPUT
Hiệu quả
Đơn giản
Dễ cài đặt
Ít bộ nhớ
Thực hiện nhanh
Cách diễn đạt
Ngôn ngữ tự nhiên
Liệt kê từng bước
Lưu đồ
Bắt đầu / Kết thúc
INPUT / OUTPUT
Điều kiện
Thao tác + Cung
Giả mã
Cấu trúc điều khiển
Ngôn ngữ tự nhiên
Ký hiệu toán học
Ví dụ: Euclid – UCLN
INPUT: a,b > 0
Nếu a = b → UCLN = b
Nếu a > b → a = a-b
Nếu a < b → b = b-a
Lặp đến khi a = b
Thiết kế giải thuật
Mô-đun hóa
Bài toán lớn → Bài toán nhỏ
Tinh chỉnh từng bước
Ngôn ngữ tự nhiên
→ Giả ngôn ngữ → Ngôn ngữ lập trình
Ví dụ: Sắp xếp lựa chọn
Chọn phần tử nhỏ nhất
Đưa vào vị trí i
Đổi chỗ
Lặp i = 1 → n-1
Độ phức tạp
Tiêu chí
Thời gian
Bộ nhớ
T(n)
Số phép toán sơ cấp theo n
Big-O
f(n) = O(g(n))
Cấp độ tăng dần
O(1)
O(log₂n)
O(n)
O(nlog₂n)
O(n²), O(n³), ..., O(nᵏ)
O(2ⁿ), O(n!), O(nⁿ)
Quy tắc cộng
O(f) + O(g) = O(max(f,g))
Quy tắc nhân
O(f) × O(g) = O(f.g)
Bỏ hằng số
O(c.f) = O(f)
Phép toán tích cực
Quan tâm phép toán thực hiện nhiều nhất
1.3. NGÔN NGỮ LẬP TRÌNH
Khái niệm
Ngôn ngữ viết chương trình
Ký hiệu
Từ khóa / từ dành riêng
Từ vựng
Cú pháp
Các loại chính
Ngôn ngữ máy
CPU hiểu trực tiếp
Nhị phân / hệ 16
Thực hiện nhanh
Khó viết / khó đọc / khó sửa
Hợp ngữ
Bậc thấp
Mã chữ gần ngôn ngữ máy
Assembler
Gần kiến trúc máy tính
Bậc cao
Gần ngôn ngữ tự nhiên / toán học
Dễ học / đọc / viết / sửa
Ít phụ thuộc phần cứng
Ngôn ngữ giải thuật
Fortran, Pascal, C, C++, Java, PHP...
Phân loại khác
Mức trừu tượng
Bậc thấp / Bậc cao
Hình thức lập trình
Khai báo / Mệnh lệnh
Họ ngôn ngữ
Máy + Hợp ngữ
Cổ điển
Hàm
Logic
Hướng đối tượng
Truy vấn
Chương trình dịch
Interpreter – Thông dịch
Dịch từng câu
Dịch → thực thi ngay
Không tạo Object code
Mỗi lần chạy → dịch lại
Dễ dò lỗi
BASIC, VB, Perl, Python...
Compiler – Biên dịch
Dịch toàn bộ chương trình
Tạo Object code
Phân tích từ vựng + cú pháp
Báo lỗi
Linker → Executable
Chạy nhiều lần không cần biên dịch lại
Pascal, C, C++...
1.4. MÔI TRƯỜNG LẬP TRÌNH
IDE
Soạn thảo
Biên dịch
Liên kết
Gỡ rối
Chạy thử
Xây dựng chương trình
B1. Soạn thảo
Viết mã nguồn
Lưu .pas / .c / .cpp
B2. Biên dịch
Source code
↓
Compiler
↓
Object code
↓
Linker → Executable
Lỗi cú pháp → Sửa mã nguồn
B3. Chạy thử
Input mẫu
Kiểm tra Output
Sai / lỗi → Sửa giải thuật → Làm lại
1.5. PHƯƠNG PHÁP LẬP TRÌNH
Tuyến tính
Phi cấu trúc
Dữ liệu toàn cục
Lệnh trong chương trình chính
Cồng kềnh
Không tái sử dụng
Khó kiểm soát dữ liệu
Hướng cấu trúc
Chương trình con
Hàm
Thủ tục
Dữ liệu toàn cục / cục bộ
Cấu trúc rõ ràng
Dễ phát hiện + sửa lỗi
Tái sử dụng chương trình con
Kiểm soát dữ liệu tốt
Hướng đối tượng
Cấu trúc + Trừu tượng hóa dữ liệu
Tập trung vào đối tượng
Dữ liệu + Thao tác → Lớp
Kế thừa
Tái sử dụng code
Dễ bảo trì
Dễ hiệu chỉnh
Dễ mở rộng