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
Phương pháp giải quyết vấn đề bằng máy tính
Phân tích bài toán
Xác định dữ liệu đầu vào
Xác định dữ liệu đầu ra
Mô hình hóa bài toán
Xây dựng giải thuật
Lựa chọn ngôn ngữ lập trình
Cài đặt chương trình
Dịch chương trình
Thực thi chương trình
Kiểm tra chương trình
Hoàn thiện và bảo trì
Xác định và phát biểu bài toán
Xác định mục đích của bài toán
Xác định đối tượng cần xử lý
Xác định dữ liệu
Xác định kết quả cần đạt được
Xác định điều kiện và ràng buộc
Xác định phạm vi của bài toán
Yêu cầu chức năng
Yêu cầu phi chức năng
Xác định dữ liệu vào và dữ liệu ra
Dữ liệu vào - Input
Thông tin chương trình tiếp nhận
Tên dữ liệu
Kiểu dữ liệu
Miền giá trị
Đơn vị
Số lượng
Điều kiện hợp lệ
Quá trình xử lý - Process
Các phép tính
Các thao tác xử lý
Các điều kiện
Dữ liệu ra - Output
Kết quả cần cung cấp
Định dạng kết quả
Mô hình hóa bài toán
Đơn giản hóa bài toán thực tế
Xác định đối tượng
Xác định dữ liệu
Xác định quan hệ
Xác định thao tác
Loại bỏ thông tin không cần thiết
Xây dựng giải thuật
Xác định phương pháp giải quyết
Xác định trình tự các bước
Mô tả cách xử lý
Giải thuật không phụ thuộc hoàn toàn vào ngôn ngữ lập trình
Cài đặt chương trình
Chuyển giải thuật thành mã nguồn
Lựa chọn ngôn ngữ lập trình
Tuân thủ cú pháp
Lựa chọn kiểu dữ liệu
Sử dụng biến và hằng
Sử dụng cấu trúc điều khiển
Chia chương trình thành hàm hoặc mô-đun
Dịch và thực thi chương trình
Chương trình nguồn
Tiền xử lý
Biên dịch
Mã đối tượng
Liên kết
Chương trình thực thi
Nạp chương trình
Thực thi
Kiểm tra và hoàn thiện chương trình
Kiểm tra dữ liệu đầu vào
Kiểm tra trường hợp thông thường
Kiểm tra trường hợp đặc biệt
Kiểm tra dữ liệu biên
Kiểm tra dữ liệu không hợp lệ
So sánh kết quả thực tế với kết quả mong đợi
Phát hiện lỗi
Sửa lỗi
Kiểm tra lại
Chất lượng chương trình
Đúng yêu cầu
Cho kết quả chính xác
Hoạt động ổn định
Sử dụng tài nguyên hợp lý
An toàn
Dễ đọc
Dễ kiểm tra
Dễ bảo trì
1.2. Giải thuật
Khái niệm giải thuật
Dãy hữu hạn các bước
Các bước có thứ tự
Các bước được xác định rõ ràng
Nhận dữ liệu vào
Xử lý dữ liệu
Tạo dữ liệu ra
Giải quyết một bài toán cụ thể
Vai trò của giải thuật
Là cầu nối giữa bài toán và chương trình
Mô tả cách giải quyết bài toán
Giúp phân tích bài toán trước khi viết code
Không phụ thuộc vào một ngôn ngữ lập trình cụ thể
Có thể cài đặt bằng nhiều ngôn ngữ
Tính chất của giải thuật
Tính xác định
Mỗi bước phải rõ ràng
Không gây nhiều cách hiểu
Cùng dữ liệu → cùng cách xử lý
Tính hữu hạn
Phải kết thúc
Có điều kiện dừng
Không thực hiện vô hạn
Tính đúng đắn
Kết quả phải phù hợp yêu cầu
Dữ liệu hợp lệ → kết quả đúng
Tính khả thi
Các bước phải thực hiện được
Con người hoặc máy tính có thể thực hiện
Tính tổng quát
Áp dụng cho nhiều dữ liệu
Áp dụng cho một lớp bài toán
Tính hiệu quả
Sử dụng thời gian hợp lý
Sử dụng bộ nhớ hợp lý
Giảm số thao tác không cần thiết
Biểu diễn giải thuật
Ngôn ngữ tự nhiên
Mô tả bằng câu văn
Dễ hiểu
Có thể gây mơ hồ
Giả mã
Gần với ngôn ngữ lập trình
Không phụ thuộc hoàn toàn vào cú pháp
Tập trung vào logic
Lưu đồ
Biểu diễn trực quan
Hình bắt đầu / kết thúc
Hình nhập / xuất
Hình xử lý
Hình điều kiện
Mũi tên chỉ hướng thực hiện
Ngôn ngữ lập trình
Cài đặt giải thuật thành chương trình
C++
Java
Python
C
Thiết kế giải thuật
Xác định Input
Xác định Output
Phân tích bài toán
Chia bài toán thành các phần
Xác định các bước xử lý
Kết hợp các bước
Kiểm tra tính đúng đắn
Đánh giá hiệu quả
Độ phức tạp của giải thuật
Độ phức tạp thời gian
Số thao tác
Thời gian thực hiện
Phụ thuộc kích thước dữ liệu
Độ phức tạp không gian
Bộ nhớ sử dụng
Dữ liệu lưu trữ
Bộ nhớ phụ
Ký hiệu Big-O
O(1)
O(log n)
O(n)
O(n log n)
O(n²)
1.3. Ngôn ngữ lập trình
Khái niệm
Phương tiện giao tiếp giữa người và máy tính
Dùng để mô tả dữ liệu
Dùng để biểu diễn giải thuật
Dùng để xây dựng chương trình
Có cú pháp
Có ngữ nghĩa
Cú pháp và ngữ nghĩa
Cú pháp
Quy tắc viết chương trình
Quy tắc kết hợp các thành phần
Lỗi cú pháp
Ngữ nghĩa
Ý nghĩa của câu lệnh
Ý nghĩa của cấu trúc chương trình
Lỗi logic
Các mức của ngôn ngữ lập trình
Ngôn ngữ máy
Dạng mã máy
Gần phần cứng
Khó viết
Phụ thuộc bộ xử lý
Hợp ngữ
Sử dụng ký hiệu gợi nhớ
Gần phần cứng
Phụ thuộc kiến trúc máy
Ngôn ngữ bậc cao
Gần cách tư duy của con người
Dễ đọc
Dễ viết
Dễ bảo trì
C
C++
Java
Python
Phương pháp thực thi
Ngôn ngữ biên dịch
Chương trình nguồn
Biên dịch
Mã đối tượng hoặc mã trung gian
Liên kết
Chương trình thực thi
Ngôn ngữ thông dịch
Trình thông dịch
Phân tích chương trình
Thực hiện chương trình
Kết hợp biên dịch và thông dịch
Mã trung gian
Máy ảo
Môi trường thực thi
Các thành phần cơ bản
Tập ký tự
Từ khóa
Định danh
Biến
Hằng
Kiểu dữ liệu
Toán tử
Biểu thức
Câu lệnh
Hàm
Mô-đun
Thư viện
Kiểu dữ liệu
Số nguyên
Số thực
Ký tự
Logic
Kiểu dữ liệu có cấu trúc
Lựa chọn ngôn ngữ lập trình
Mục đích chương trình
Hiệu năng
Nền tảng
Thư viện
Công cụ phát triển
Khả năng tích hợp
Khả năng bảo trì
Trình độ người lập trình
Yêu cầu của hệ thống
1.4. Môi trường lập trình và các bước xây dựng chương trình
Khái niệm môi trường lập trình
Tập hợp các công cụ hỗ trợ lập trình
Viết chương trình
Biên dịch
Thực thi
Kiểm thử
Gỡ lỗi
Bảo trì
IDE - Môi trường phát triển tích hợp
Trình soạn thảo
Trình biên dịch
Trình gỡ lỗi
Quản lý dự án
Công cụ kiểm thử
Terminal
Các thành phần của môi trường lập trình
Trình soạn thảo mã nguồn
Viết mã
Chỉnh sửa mã
Tô màu cú pháp
Gợi ý mã
Trình biên dịch
Kiểm tra mã nguồn
Chuyển mã nguồn
Tạo mã phù hợp để thực thi
Trình thông dịch
Phân tích chương trình
Thực hiện chương trình
Trình liên kết
Kết hợp các mô-đun
Kết hợp thư viện
Tạo chương trình hoàn chỉnh
Trình gỡ lỗi
Breakpoint
Chạy từng bước
Quan sát biến
Tìm nguyên nhân lỗi
Các bước xây dựng chương trình
Bước 1: Phân tích bài toán
Xác định yêu cầu
Xác định Input
Xác định Output
Xác định ràng buộc
Bước 2: Xây dựng giải pháp
Phân tích dữ liệu
Chọn cấu trúc dữ liệu
Xây dựng giải thuật
Viết giả mã
Vẽ lưu đồ
Bước 3: Cài đặt chương trình
Chọn ngôn ngữ
Viết mã nguồn
Chia hàm
Chia mô-đun
Bước 4: Dịch chương trình
Biên dịch
Phát hiện lỗi cú pháp
Liên kết
Bước 5: Thực thi
Chạy chương trình
Cung cấp dữ liệu đầu vào
Nhận kết quả
Bước 6: Kiểm thử
Trường hợp thông thường
Trường hợp đặc biệt
Dữ liệu biên
Dữ liệu không hợp lệ
Bước 7: Gỡ lỗi
Phát hiện lỗi
Xác định vị trí
Phân tích nguyên nhân
Sửa lỗi
Kiểm tra lại
Bước 8: Hoàn thiện
Tối ưu chương trình
Viết tài liệu
Triển khai
Bảo trì
Quá trình biên dịch và thực thi
Mã nguồn
Tiền xử lý
Biên dịch
Mã đối tượng
Liên kết
Chương trình thực thi
Nạp vào bộ nhớ
Thực thi
Kiểm thử chương trình
Xác định kết quả mong đợi
Chuẩn bị dữ liệu kiểm thử
Chạy chương trình
So sánh kết quả
Phát hiện lỗi
Kiểm tra lại sau khi sửa
Gỡ lỗi chương trình
Lỗi cú pháp
Lỗi liên kết
Lỗi khi chạy
Lỗi logic
Breakpoint
Step by step
Quan sát biến
Sửa lỗi
Bảo trì chương trình
Sửa lỗi
Cập nhật
Cải thiện hiệu năng
Bổ sung chức năng
Thích nghi với môi trường mới
Cập nhật tài liệu
1.5. Các phương pháp lập trình
Khái niệm
Cách tiếp cận để xây dựng chương trình
Cách tổ chức dữ liệu
Cách tổ chức chương trình
Cách chia nhỏ bài toán
Cách quản lý trạng thái
Lập trình tuyến tính
Câu lệnh thực hiện tuần tự
Đi từ đầu đến cuối
Cấu trúc đơn giản
Phù hợp chương trình nhỏ
Hạn chế khi chương trình lớn
Lập trình thủ tục
Chia chương trình thành thủ tục
Chia chương trình thành hàm
Mỗi hàm đảm nhiệm một nhiệm vụ
Tái sử dụng hàm
Dễ kiểm thử
Dễ bảo trì
Lập trình cấu trúc
Cấu trúc tuần tự
Thực hiện lần lượt
Cấu trúc lựa chọn
if
if...else
switch
Cấu trúc lặp
for
while
do...while
Ưu điểm
Luồng chương trình rõ ràng
Dễ đọc
Dễ kiểm tra
Dễ bảo trì
Lập trình hướng đối tượng
Đối tượng
Trạng thái
Thuộc tính
Hành vi
Lớp
Khuôn mẫu
Thuộc tính
Phương thức
Đóng gói
Kết hợp dữ liệu và phương thức
Kiểm soát truy cập
Kế thừa
Tái sử dụng
Mở rộng lớp
Đa hình
Một giao diện
Nhiều cách thực hiện
Trừu tượng
Tập trung đặc điểm quan trọng
Che giấu chi tiết không cần thiết
Lập trình hàm
Hàm là thành phần trung tâm
Hàm thuần
Hạn chế thay đổi trạng thái
Hạn chế tác dụng phụ
Dễ kiểm thử
Dễ suy luận trong một số bài toán
Lập trình hướng sự kiện
Sự kiện
Người dùng thao tác
Hệ thống phát sinh
Dữ liệu thay đổi
Bộ xử lý sự kiện
Phản hồi theo sự kiện
Ứng dụng giao diện
Ứng dụng web
Lập trình đệ quy
Hàm gọi lại chính nó
Bài toán lớn
Bài toán con cùng dạng
Điều kiện cơ sở
Bước đệ quy
Điều kiện dừng
Sử dụng ngăn xếp
Ứng dụng
Duyệt cây
Chia để trị
Tìm kiếm
Lập trình mô-đun
Chia chương trình thành mô-đun
Mỗi mô-đun có nhiệm vụ riêng
Tính kết dính cao
Liên kết thấp
Dễ phát triển
Dễ kiểm thử
Dễ bảo trì
Dễ mở rộng
Lựa chọn phương pháp lập trình
Dựa vào loại bài toán
Dựa vào quy mô hệ thống
Dựa vào yêu cầu
Dựa vào dữ liệu
Dựa vào mức độ phức tạp
Dựa vào khả năng bảo trì
Có thể kết hợp nhiều phương pháp
Nguyên tắc chung
Hiểu rõ yêu cầu
Phân tích bài toán
Thiết kế giải thuật
Lựa chọn cấu trúc dữ liệu
Cài đặt rõ ràng
Kiểm thử
Gỡ lỗi
Tài liệu hóa
Bảo trì