Table of Content

Important

Tham khảo

1. Giới thiệu về lập trình

Các bước tiếp cận một ngôn ngữ lập trình mới:

  1. Syntax:
    • Chữ, số, kí hiệu
    • Không viết số ở đầu
    • Phân biệt chữ hoa/thường hay không
  2. Built-in data types
  3. Variable, constant, biểu thức
    • Variable:
      • Cách khai báo
      • Local/Global variable
      • Life cycle
    • Constant:
      • Hằng số bình thường: Ví dụ: Ta khai báo x = 5
      • Hằng số đại diện: Ví dụ: Ta khai báo pi = 3.14
    • Biểu thức (functions):
      • Hàm biến đổi kiểu
  4. Nhập xuất từ console
  5. Statement, control structures
  6. UDF (User Defined Function):
    • Truyền tham số:

Ngôn ngữ biên dịch và thông dịch (compiler/interpreter)

Compiler:

  • Source code → Compiler → File .exe/.bin → Hệ điều hành chạy trực tiếp

  • Ví dụ: C, C++, C#, Java (biên dịch sang bytecode trước khi chạy)

  • Ưu điểm:

    • Chạy nhanh do mã máy đã được tạo sẵn.
    • Tối ưu hiệu suất trong quá trình biên dịch.
  • Nhược điểm:

    • Mất thời gian chờ biên dịch.
    • Phải biên dịch lại mỗi khi thay đổi mã nguồn. Interpreter:
  • Là chương trình đọc và thực thi mã nguồn trực tiếp, không tạo file thực thi riêng.

  • Nó sẽ dịch từng dòng hoặc từng khối lệnh sang mã máy và chạy ngay lập tức.

  • Ví dụ: Python, JavaScript, Ruby, PHP

Nhập xuất dữ liệu với console:

Console = Bàn phím và màn hình → Vậy tức là nhập/xuất từ bàn phím và màn hình.

Các cấu trúc lập trình:

  • Rẽ nhánh:
    • Rẽ nhánh theo điều kiện logic:
      • Rẽ một nhánh
      • Rẽ hai nhánh
      • Rẽ nhiều nhánh
    • Rẽ nhánh theo giá trị của biến
  • Vòng lặp:
    • Vòng lặp được điều khiển theo điều kiện
      • Thực hiện trước, kiểm tra sau
      • Kiểm tra trước, thực hiện sau
    • Vòng lặp được lặp theo số lần
  • Nhảy

Thủ tục

Truyền tham số:

  • Truyền giá trị → chỉ nhận giá trị, không thay đổi giá trị tại địa chỉ gốc
  • Truyền địa chỉ → thay đổi luôn biến Python chỉ có kiểu object mới truyền theo tham chiếu được. Đọc thêm: M01W3.2_Variables and Addresses in Python
  1. Phụ thuộc hàm (Functional Dependency)Cơ sở dữ liệu
  • Khái niệm: Trong mô hình quan hệ (database), phụ thuộc hàm là mối quan hệ giữa hai tập thuộc tính của một bảng, thể hiện rằng giá trị của thuộc tính A quyết định duy nhất giá trị của thuộc tính B.

  • Ký hiệu: (A xác định B).

  • Ví dụ: Trong bảng SinhVien(MSSV, HoTen, Lop)

    • MSSV → HoTen nghĩa là mỗi MSSV chỉ có một họ tên duy nhất.
  • Ý nghĩa kỹ thuật:

    • Dùng trong chuẩn hóa dữ liệu để tránh dư thừa và bất thường (anomaly).
    • Là cơ sở xác định khóa chínhkhóa ứng viên.

  1. Phụ thuộc đa trị (Multivalued Dependency)Cơ sở dữ liệu
  • Khái niệm: Là một dạng phụ thuộc giữa các thuộc tính, trong đó một thuộc tính có thể xác định nhiều giá trị độc lập của thuộc tính khác.

  • Ký hiệu: (A xác định đa trị B).

  • Ví dụ: Trong bảng GiaoVien(MaGV, MonDay, NgoaiNgu)

    • MaGV ⇒ MonDayMaGV ⇒ NgoaiNgu nếu môn dạy và ngoại ngữ độc lập với nhau.
  • Ý nghĩa kỹ thuật:

    • Xuất hiện khi dữ liệu lặp lại không cần thiết → cần chuẩn hóa lên dạng chuẩn 4 (4NF).

  1. Hàm (Function)Toán & Lập trình
  • Toán học:
    • Hàm là ánh xạ từ mỗi phần tử của tập X tới duy nhất một phần tử của tập Y.

    • Điều kiện: Một đầu vào → chỉ một đầu ra.

  • Lập trình:
    • Khối mã nhận đầu vào (input) → xử lý → trả về giá trị (output).

    • Ví dụ Python:

      def binh_phuong(x):
          return x * x

Tuy nhiên hàm Python có thể trả về nhiều giá trị

  1. Ánh xạ (Mapping)Toán & Kỹ thuật
  • Toán học:
    • Là khái niệm tổng quát hơn hàm: mỗi phần tử của tập nguồn được gán (map) tới một hoặc nhiều phần tử của tập đích.
    • Nếu mỗi phần tử nguồn → duy nhất một phần tử đích → ánh xạ đó chính là hàm.
    • Nếu một phần tử nguồn → nhiều phần tử đích → quan hệ đa trị.
  • Kỹ thuật lập trình:
    • Mapping là việc tạo quan hệ tương ứng giữa 2 tập dữ liệu.

    • Ví dụ Python:

      # Ánh xạ tên -> tuổi
      mapping = {"An": 20, "Bình": 21}
      print(mapping["An"])  # 20