Please enable JavaScript.
Coggle requires JavaScript to display documents.
Chương 9: LẬP TRÌNH CĂN BẢN - Coggle Diagram
Chương 9: LẬP TRÌNH CĂN BẢN
Nguyễn Hữu Thép
Ngôn ngữ lập trình và trình biên dịch
Ngôn ngữ lập trình
Khái niệm
Ngôn ngữ dùng để viết các chương trình máy tính
Gồm hệ thống ký hiệu, từ khóa, từ vựng và quy tắc cú pháp
Phân loại chính
Ngôn ngữ máy
CPU nhận biết và thực hiện trực tiếp
Lệnh dạng nhị phân hoặc Hex
Tốc độ nhanh nhất nhưng khó nhớ, cồng kềnh
Hợp ngữ (Assembly)
Ngôn ngữ bậc thấp, viết lệnh bằng mã chữ tiếng Anh
Dùng trình hợp dịch (Assembler) để sang mã máy
Thao tác trực tiếp với phần cứng, driver, hệ nhúng
Ngôn ngữ lập trình bậc cao
Gần với ngôn ngữ tự nhiên và toán học
Ít phụ thuộc phần cứng, dễ học, dễ đọc, dễ sửa
Ví dụ: Fortran, Pascal, C, C++, Java, Python...
Các cách 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ữ (Cổ điển, Hàm, Logic, Hướng đối tượng, Truy vấn)
Trình biên dịch và Trình thông dịch
Trình thông dịch (Interpreter)
Dịch và thực thi từng câu lệnh một
Không tạo tệp mã đối tượng (.obj/.exe)
Dễ dò tìm lỗi, dùng cho BASIC, Python, Perl...
Trình biên dịch (Compiler)
Dịch toàn bộ chương trình nguồn sang mã máy
Tạo ra tệp mã đối tượng khi không còn lỗi cú pháp
Mỗi lần chạy không cần dịch lại, tốc độ tối ưu
Áp dụng cho Pascal, C, C++...
Các bước lập trình cơ bản
Bước 1: Soạn thảo chương trình
Nhập mã nguồn (source code) và lưu tệp (.pas, .c, .cpp...)
Bước 2: Biên dịch chương trình
Trình biên dịch dịch sang mã đối tượng (object code)
Bộ liên kết (Linker) tạo tệp thực thi (.exe)
Bước 3: Chạy thử và hiệu chỉnh
Chạy tệp thực thi, nhập dữ liệu mẫu để kiểm tra
Sửa lỗi thuật toán/cú pháp nếu kết quả sai
Môi trường lập trình (IDE)
Tích hợp bộ soạn thảo, biên dịch, liên kết và gỡ rối (Debug)
Ví dụ IDE: Dev-C++, Visual Studio, Free Pascal...
Các phương pháp lập trình
Lập trình tuyến tính (Phi cấu trúc)
Mọi dữ liệu là toàn cục, lệnh nằm trong chương trình chính
Khó kiểm soát, cồng kềnh, không tái sử dụng được mã
Lập trình cấu trúc
Chia nhỏ chương trình thành các chương trình con (hàm/thủ tục)
Phân định rõ dữ liệu toàn cục và cục bộ
Cấu trúc rõ ràng, dễ quản lý, tái sử dụng code tốt
Lập trình hướng đối tượng (OOP)
Trừu tượng hóa dữ liệu, tập trung vào Đối tượng (Object)
Kết hợp dữ liệu và thao tác thành Lớp (Class)
Tính năng: Đóng gói, Kế thừa, Đa hình
Lập trình căn bản với C++
9.4.1. Giới thiệu C++
Lịch sử: Bjarne Stroustrup phát triển từ 1979 (C with Classes)
Chuẩn hóa: C++98, C++03, C++11, C++14, C++17...
Đặc điểm: Hỗ trợ OOP lẫn lập trình cấu trúc, tối ưu hệ thống
Trình biên dịch phổ biến: Dev-C++, Visual C++, Borland C++, g++
9.4.2. Các phần tử cơ bản
Tập ký tự
Chữ cái (A-Z, a-z), chữ số (0-9), ký hiệu toán học & đặc biệt
Từ khóa (Keywords)
Từ dành riêng của ngôn ngữ (int, float, if, for, return...)
Tên (Identifier)
Dùng xác định biến, hằng, hàm...
Quy tắc: Không trùng từ khóa, bắt đầu bằng chữ cái hoặc '_'
Hằng và Biến
Hằng: Đại lượng không đổi (VD: PI = 3.14)
Biến: Dùng lưu trữ dữ liệu, có thể thay đổi giá trị
Toán tử & Biểu thức
1 ngôi (-, ++, --), 2 ngôi (+, -, *, /, %)
Quan hệ (>, >=, <, <=, ==, !=)
Logic (!, &&, ||)
Thao tác Bit (&, |, ^, <<, >>, ~)
Biểu thức điều kiện (điều_kiện ? giá_trị_1 : giá_trị_2)
Phép gán (=) và Ép kiểu ((kiểu_mới) biến)
Chú thích (Comment)
Một dòng: // ...
Nhiều dòng: /
...
/
Kiểu dữ liệu cơ bản
Ký tự: char (1 byte), unsigned char
Số nguyên: short (2 byte), int (2/4 byte), long (4 byte)
Số thực: float (4 byte), double (8 byte), long double (10 byte)
9.4.3. Cấu trúc chương trình & Khai báo
Cấu trúc chung
include <thư_viện>
using namespace std;
int main() { /
Khai báo & Lệnh
/ return 0; }
Cú pháp khai báo
Khai báo thư viện: #include <iostream>
Khai báo hằng: #define PI 3.141593
Khai báo biến: kiểu_dữ_liệu tên_biến;
9.4.4. Vào ra dữ liệu & Cấu trúc điều khiển
Vào ra dữ liệu
Xuất ra màn hình: cout << biểu_thức; (dùng '\n' hoặc endl để xuống dòng)
Nhập từ bàn phím: cin >> biến;
Cấu trúc rẽ nhánh
Lệnh if / if-else / if lồng nhau
Lệnh switch-case (chỉ dùng cho kiểu nguyên/ký tự, kết thúc bằng break)
Cấu trúc vòng lặp
Vòng lặp for(khởi_tạo; điều
kiện; thay
đổi)
Vòng lặp while(điều_kiện)
Vòng lặp do-while(điều_kiện) (thực hiện ít nhất 1 lần)
Lệnh điều khiển vòng lặp
break: Thoát hẳn khỏi vòng lặp/switch
continue: Bỏ qua lần lặp hiện tại, chuyển sang lần lặp kế
9.4.5. Mảng và Xâu ký tự
Mảng (Array)
Tập hợp các phần tử cùng kiểu, chỉ số bắt đầu từ 0
Khai báo: kiểu_dữ_liệu tên_mảng[kích_thước];
Vào/Ra: Phải duyệt qua từng phần tử bằng vòng lặp
Xâu ký tự (String / C-string)
Mảng 1 chiều chứa ký tự, kết thúc bằng '\0' (null)
Khai báo: char tên_xâu[độ_dài
tối
đa + 1];
Vào ra xâu có khoảng trắng: cin.get(s, sizeof(s));
Hàm xử lý xâu (#include <string.h>)
strlen(s): Độ dài xâu
strcpy(s1, s2): Sao chép s2 vào s1
strcat(s1, s2): Nối s2 vào sau s1
strcmp(s1, s2): So sánh 2 xâu
9.4.6. Vào ra dữ liệu từ tệp (#include <fstream>)
Ghi dữ liệu ra tệp
ofstream fout("tệp.txt");
fout << dữ_liệu;
fout.close();
Đọc dữ liệu từ tệp
ifstream fin("tệp.txt");
fin >> biến;
fin.close();