Trang 1 TRƯỜNG ĐẠI HỌC THỦY LỢIKHOA CƠ KHÍTHỰC TẬP LẬP TRÌNHCƠ ĐIỆN TỬBộ mơn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering Trang 2 2Bộ môn Kỹ thuật Cơ điện tử | Department
Trang 1TRƯỜNG ĐẠI HỌC THỦY LỢI
KHOA CƠ KHÍ
THỰC TẬP LẬP TRÌNH
CƠ ĐIỆN TỬ
Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
BỘ MÔN KỸ THUẬT CƠ ĐIỆN TỬ
Trang 2Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
MỤC TIÊU CỦA HỌC PHẦN
Nắm vững kiến thức cơ bản về ngôn ngữ lập trình C/C++;
Phân tích và giải quyết các vấn đề của một bài toán lập
trình;
Có khả năng làm việc độc lập và chủ động học tập;
Có khả năng làm việc theo nhóm và giao tiếp hiệu quả;
Có thái độ và ứng xử tích cực
Trang 3Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
NỘI DUNG MÔN HỌC
Trang 5• Tác giả: Dennis Ritchie.
• Ra đời trong những năm 1970, gắn liền với sự
phát triển HĐH Unix.
• Là một trong những ngôn ngữ phổ biến nhất
• Là ngôn ngữ cấp trung
Ngôn ngữ C++:
• Tác giả: Bjarne Stroustrup.
• Ra đời năm 1979 bằng việc mở rộng ngôn ngữ
C.
• Bổ sung các tính năng mới so với C: lập trình
hướng đối tượng (OOP), lập trình tổng quát (template), một số tính năng giúp cho lập trình linh hoạt
Trang 6Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Một số phần mềm lập trình phổ biến
Giới thiệu về ngôn ngữ lập trình C/C++
Microsoft Visual Studio
Visual Studio Code
Trang 8Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
• Dòng 1: khai báo thư viện
iostream cho việc nhập xuất.
• Dòng 2: sử dụng thư viện chuẩn
• Dòng 3: Hàm chính
• Dòng 5: Khai báo biến x
• Dòng 6: Nhập dữ liệu từ bàn phím cho biến x
• Dòng 7: Xuất kết quả
• Dòng 8: Hàm trả về 0
Cấu trúc một chương trình C/C++
Trang 9Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Biến (Variable)
Biến chứa giá trị, có thể thay đổi trong khi chạy
Cần khai báo trước khi dùng và phải có kiểu dữ liệu
Phạm vi sử dụng: Toàn cục/ nội bộ (global/local)
Khai báo biến: <kiểu dữ liệu><danh sách biến>
Biến có thể được khởi tạo giá trị khi khai báo
Biến & hằng
Trang 10 Khai báo bằng cách thêm từ khóa const phía trước:
Sử dụng macro để khai báo hằng:
Biến & hằng
Trang 11Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Biến & hằng
Kiểu Kích thước
(byte) Loại Khoảng giá trị
char 1 Ký tự -127 tới 127 hoặc 0 tới 255
int 4 Số nguyên -2147483648 tới 2147483647
long int 4 Số nguyên -2,147,483,647 tới 2,147,483,647
Trang 12Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Một số kiểu dữ liệu khác:
• Kiểu liệt kê: enum <tên kiểu>{<các giá trị>}
• Kiểu cấu trúc: struct <tên kiểu>{<các thuộc tính>}
• Kiểu mảng array: <tên kiểu ><tên>[<số phần tử>]
• Kiểu boolean (không có trong C)
• Kiểu chuỗi ký tư
• Kiểu union
Biến & hằng
Trang 13Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Cơ bản: +, - , *, /
Chia lấy số dư: %
Tăng giảm một đơn vị: ++, Chú ý phân biệt: a++ và ++a(tương tự cho a và a)
• Ví dụ 1: x = 1; y = ++x;
• Ví dụ 2: x = 1; y = x++;
Kết quả x, y ?
Toán tử
Trang 15Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Bao gồm : &, |, ^, ~, >>, <<
Chỉ áp dụng với kiểu số nguyên
Chú ý tránh nhầm lần với các toán tử logic
Toán tử
Trang 20Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
CHƯƠNG 2: CẤU TRÚC ĐIỀU KHIỂN
2.1 Cấu trúc điều kiện if…else
2.2 Cấu trúc lựa chọn switch…case
2.3 Cấu trúc lặp
2.4 Lệnh rẽ nhánh và lệnh nhảy
Trang 21Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Cấu trúc điều kiện if … else
Ví dụ 1: Viết chương trình nhập vào số tự nhiên, kiểm tra xem số đó
có chia hết cho 2 hay không ?
Trang 22Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Cấu trúc lựa chọn switch … case
• Ví dụ 3: Viết chương trình
nhập vào một số tự nhiên, xuất ra màn hình số ngày của tháng đó.
Trang 24từ 5 đến 1235
• Ví dụ 7: Viết chương
trình kiểm tra số tự nhiên chẵn lẻ, chương trình chỉ kết thúc khi người dùng nhập ký tự ‘n’ hoặc ‘N’
khi được hỏi có tiếp tục hay không.
Cấu trúc lặp
Trang 25Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
break, continue, goto
• Ví dụ 8:
for (x = 1; x <= 10; x++) {
if (x == 8) break ; cout << x; }
• Ví dụ 9:
for (x = 1; x <= 10; x++) {
if (x == 8) continue ; cout << x;}
Lệnh rẽ nhánh và lệnh nhảy
• break: dùng để ngắt giữa chừng một vòng lặp mà không
cần kiểm tra điều kiện của vòng lặp
• continue: dùng để kết thúc lần lặp đang chạy và nhảy sang lần lặp mới
• goto: nhảy tới vị trí của nhãn và chạy tiếp (hạn chế sử dụng
vì phá vỡ tính cấu trúc)
Trang 27Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Giới thiệu chung
Trang 28• Ví dụ 1: Viết hàm so sánh hai số và trả về số lớn hơn.
• Ví dụ 2: Viết hàm kiểm tra số nguyên tố.
• Ví dụ 3: Sử dụng ví dụ 2, viết chương trình nhập số n và in ra các số
nguyên tố nhỏ hơn n
Trang 29• các lệnh sau return sẽ bị bỏ qua.
Hàm void: không trả về giá trị gì
• Câu lệnh return không có tham số
• Không cần lệnh return ở cuối hàm
• Ví dụ 4: Viết hàm so sánh hai số và ghi ra màn hình số lớn hơn.
• Ví dụ 5: Viết hàm kiểm tra và ghi ra màn hình số đó có là số nguyên tố
hay không.
Trang 30Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Truyền tham số cho hàm
void assign10(int x) { x = 10; }int main()
Trang 31Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Hàm được gọi là đệ quy nếu bên trong thân hàm có một lờigọi đến chính nó
Luôn luôn phải có điều kiện dừng – “điểm neo” Khi đặt tớiđiểm neo này, hàm sẽ không gọi chính nó nữa
• Ví dụ 6: Viết hàm tính giai thừa.
• Ví dụ 7: Viết hàm tính số thứ n của dãy Fibonacci.
Trang 32Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Thư viện hàm (libraries)
Một số hàm có thể được dùng trong nhiều chương trình
khác nhau => sử dụng thư viện hàm
• #include <ten_file.h> => trong đường dẫn mặc định
• #include "ten_file.h" => cùng thư mục với file dịch
Trang 33Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
CHƯƠNG 4: CON TRỎ VÀ MẢNG
4.1 Khai báo mảng, con trỏ
thao tác trên mảng
4.3 Mảng nhiều chiều
Trang 35Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Khai báo & khởi tạo mảng một chiều
Trang 36Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Cú pháp: <array name> [< index>]
Chú ý: phần tử đầu tiên của mảng có chỉ số là 0.
• Ví dụ 1: Tạo mảng một chiều chứa 20 số tự nhiên liên tiếp đầu tiên rồi
in mảng đó ra ngoài màn hình.
• Ví dụ 2: Tạo mảng một chiều gồm 10 số được nhập tùy ý từ bàn phím
Tính tổng các phần tử trong mảng.
Trang 37Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Khai báo & khởi tạo mảng hai chiều
Trang 38Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Cú pháp: <array name> [< index of row> ][<index of column>]
Chú ý: phần tử đầu tiên mỗi của hàng và cột có chỉ số là 0.
• Ví dụ 3: Tạo mảng ma trận kích thước 5 × 5 với các giá trị các phần tử
nhập tùy ý từ bàn phím Sau đó in ra màn hình ma trận đó.
• Ví dụ 4: Tạo mảng ma trận kích thước 5 × 5 với các giá trị các phần tử
nhập tùy ý từ bàn phím Sau đó tính tổng các phần tử của ma trận đó và
in ra màn hình.
Trang 40 Con trỏ là biến mà giá trị của nó là địa chỉ của một biến khác hay
nói cách con trỏ này đang trỏ biến(địa chỉ) đó.
Thông qua con trỏ chúng ta có thể lấy được giá trị của biến mà
Trang 41 Toán tử & - lấy địa chỉ của một biến
Toán tử * - truy xuất giá trị tại vị trí đang được con trỏ trỏ đến
Trang 42Bộ môn Kỹ thuật Cơ điện tử | Department of Mechatronic Engineering
Con trỏ và Mảng
Mảng là con trỏ tĩnh (không thể thay đổi địa chỉ) mà giá trị của nó
là phần tử đầu tiên của mảng.
Con trỏ cũng có thể hiểu là mảng và có thể được xem như mảng
Trang 43 Sử dụng tham số là con trỏ (truyền giá trị kiểu tham chiếu)
thường được dùng như một cách khác để trả về thêm giá trị
Ví dụ 10:
int assign( int * x) { int a; *x = 10; a = *x + 10; return a; }
int main ( int argc, char const *argv[]) {