Bài giảng Kỹ thuật lập trình hệ cơ điện tử: Chương 3 - Kiểu, toán tử và biểu thức được biên soạn bao gồm các nội dung chính sau: Kiểu dữ liệu trong C; Hằng và các biến số; Các phép toán số học; Các phép toán quan hệ và logic; Chuyển đổi kiểu, Phép toán tăng giảm; Toán tử thao tác bit; Toán tử gán và biểu thức; Các biểu thức điều khiển; Thứ tự ưu tiên và trật tự tính toán. Mời các bạn cùng tham khảo bài giảng!
TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Programming Engineering in Mechatronics Giảng viên: TS. Đặng Thái Việt Đơn vị: Bộ mơn Cơ điện tử, Viện Cơ khí Hà Nội, 09/2017 KỸ THUẬT LẬP TRÌNH HỆ CƠ ĐIỆN TỬ Tổng quan về ngơn ngữ lập trình Cấu trúc Giới thiệu sơ bộ ngơn ngữ C Vào/ra trong C Kiểu, tốn tử và biểu thức Cơ sở của C++ Dịng điều khiển 10 Lớp Hàm và cấu trúc chương trình 11 Kế thừa và đa hình Con trỏ và mảng 12 Luồng vào/ra trong C++ KIỂU, TỐN TỬ VÀ BIỂU THỨC 3.1Kiểu dữ liệu trong C 3.2Hằng và các biến số 3.3Các phép tốn số học 3.4Các phép tốn quan hệ và logic 3.5Chuyển đổi kiểu 3.6Phép tốn tăng giảm 3.7Tốn tử thao tác bit 3.8Tốn tử gán và biểu thức 3.9Các biểu thức điều khiển 3.10 Thứ tự ưu tiên và trật tự tính tốn Kiểu dữ liệu trong C/C++ • • Trong làm việc với ngôn ngữ lập trình nào, bạn cần sử dụng kiểu biến đa dạng để lưu giữ thơng tin Các biến, khơng khác ngồi vị trí nhớ dành riêng để lưu giá trị Nghĩa là, bạn tạo biến, bạn dành riêng số không gian nhớ cho biến Bạn thích lưu thơng tin kiểu liệu (Data Type) đa dạng Character, Wide Character, integer, floating-point, double floating point, Boolean, … Dựa kiểu liệu biến, hệ thống cấp phát nhớ định lưu giữ nhớ dành riêng Kiểu dữ liệu trong C/C++ 1.1 Kiểu dữ liệu ngun thủy trong C/C++ • Tên tiếng Anh Primitive Type, cịn gọi kiểu liệu gốc, kiểu liệu có sẵn C/C++ Bên cạnh kiểu liệu gốc này, C/C++ cung cấp kiểu liệu user-defined Kiểu liệu Từ khóa Boolean bool Ký tự char Số nguyên int Số thực float Số thực dạng Double double Kiểu khơng có giá trị void Kiểu Wide character wchar_t Kiểu dữ liệu trong C/C++ 1.2 Kiểu cơ bản • Một số kiểu sửa đổi sử dụng nhiều modifier - signed (kiểu có dấu). - unsigned (kiểu khơng có dấu) - short - long Kiểu dữ liệu trong C/C++ • Bảng sau hiển thị kiểu biến, lượng nhớ dùng để lưu giá trị nhớ, giá trị lớn nhỏ lưu giữ với kiểu biến đó: Kiểu Độ rộng bit Dãy giá trị char byte -127 tới 127 tới 255 unsigned char byte tới 255 signed char byte -127 tới 127 int byte -2147483648 tới 2147483647 unsigned int byte tới 4294967295 signed int byte -2147483648 tới 2147483647 Kiểu dữ liệu trong C/C++ short int byte -32768 tới 32767 unsigned short int Range tới 65,535 signed short int Range -32768 tới 32767 long int byte -2,147,483,647 tới 2,147,483,647 signed long int byte Tương tự long int unsigned long int byte tới 4,294,967,295 float byte +/- 3.4e +/- 38 (~7 chữ số) double byte +/- 1.7e +/- 308 (~15 chữ số) long double byte +/- 1.7e +/- 308 (~15 chữ số) wchar_t byte wide character Kiểu dữ liệu trong C/C++ • Kích cỡ biến khác với hiển thị bảng, phụ thuộc vào compiler máy tính bạn sử dụng Sử dụng lệnh sizeof() Kiểu dữ liệu trong C/C++ • Khai báo typedef C/C++ - Bạn có thể tạo một tên mới cho một kiểu dữ liệu đang tồn tại bởi sử dụng typedef trong C/C++. Cú pháp đơn giản sau để định nghĩa một kiểu dữ liệu mới bởi sử dụng typedef: typedef kieu_du_lieu ten_moi; - Ví dụ: typedef float sothuc; sothuc vantoc; 10 Chuyển đổi kiểu - Phép chuyển đổi số học thông thường không thực cho toán tử gán, cho toán tử logic: && || 34 Phép toán tăng giảm v Toán tử tăng (++) cộng toán hạng thêm một đơn vị, và toán tử giảm () trừ một đơn vị từ toán hạng 35 Phép tốn tăng giảm v Cả tốn tử tăng và tốn tử giảm đều có dạng tiền tố đặt trước hoặc hậu tố theo sau tốn hạng 36 Phép tốn tăng giảm 37 Tốn tử thao tác bit v Tốn tử so sánh bit làm việc trên đơn vị bit, tính tốn biểu thức so sánh từng bit. Bảng dưới đây về &, |, và ^ như sau: 38 Tốn tử thao tác bit v Tốn tử so sánh bit 60 13 12 61 49 -61 39 Tốn tử thao tác bit Tốn tử Miêu tả Ví dụ & Toán tử AND (và) nhị phân chép bit tới kết (A & B) cho kết quả tồn hai tốn hạng 12, tức 0000 1100 | Toán tử OR (hoặc) nhị phân chép bit tới kết tồn hai tốn hạng (A | B) cho kết 61, tức 0011 1101 ^ Toán tử XOR nhị phân chép bit mà tồn tốn hạng mà hai (A ^ B) cho kết 49, tức 0011 0001 ~ Toán tử đảo bit (đảo bit thành bit ngược lại) (~A ) cho kết -61, tức 1100 0011 > Toán tử dịch phải Giá trị toán hạng trái dịch A >> cho kết chuyển sang phải số bit xác định 15, tức 0000 1111 (dịch toán hạng bên phải sang phải hai bit) 40 A &= Phép AND bit C &= tương đương với C=C&2 ^= Phép OR loại trừ bit C ^= tương đương với C=C^2 |= Phép OR bit C |= tương đương với C=C|2 42 Tốn tử gán và biểu thức v Biểu thức là sự mơ tả quan hệ giữa các tốn hạng (hằng, biến, hàm), phép tốn và cặp dấu () theo một quy tắc nhất định v Giá trị của biểu thức được tính tốn dựa theo thứ tự ưu tiên của các phép tốn: i Các biểu thức trong cặp dấu ngoặc () ii Các phép tốn 1 ngơi (++, , &, * ¡) iii Các phép tốn số học iv Các phép tốn quan hệ, logic v Các phép gán 43 Các biểu thức điều khiển v Dưới đây là một số tốn tử hỗn hợp quan trọng được hỗ trợ bởi ngơn ngữ C++ Tốn tử Miêu tả sizeof Tốn tử sizeof C++ trả kích cỡ biến Ví dụ: sizeof(a), với a integer, trả Điều kiện ? X : Y Toán tử điều kiện C++ Nếu Condition true ? trả giá trị X : khơng trả Y , Toán tử Comma C++ làm cho dãy hoạt động thực Giá trị toàn biểu thức comma giá trị biểu thức cuối danh sách phân biệt dấu phảy (dot) -> (arrow) Toán tử thành viên C++ sử dụng để tham chiếu phần tử đơn lớp, cấu trúc, union 44 Các biểu thức điều khiển Toán tử Cast Miêu tả Toán tử ép kiểu (Casting) C++ biến đổi kiểu liệu thành kiểu khác Ví dụ: int(2.2000) trả & Toán tử trỏ & C++ trả địa biến Ví du: &a; trả địa thực biến * Toán tử trỏ * C++ trỏ tới biến Ví dụ: *var trỏ tới biến var 45 Thứ tự ưu tiên và trật tự tính tốn v Thứ tự ưu tiên tốn tử trong C++ xác định cách biểu thức được tính tốn v Bảng dưới đây liệt kê thứ tự ưu tiên của các tốn tử. Các tốn tử với quyền ưu tiên cao nhất xuất hiện trên cùng của bảng, và các tốn tử có quyền ưu tiên thấp nhất thì ở bên dưới cùng của bảng. Trong một biểu thức, các tốn tử có quyền ưu tiên cao nhất được tính tốn đầu tiên 46 Thứ tự ưu tiên và trật tự tính tốn Loại Tốn tử Thứ tự ưu tiên Postfix () [] -> ++ - - Trái sang phải Unary + - ! ~ ++ - - (type)* & Phải sang trái sizeof Tính nhân */% Trái sang phải Tính cộng +- Trái sang phải Dịch > Trái sang phải < >= Trái sang phải chuyển Quan hệ 47 Thứ tự ưu tiên và trật tự tính tốn Loại Tốn tử Thứ tự ưu tiên Phép AND bit & Trái sang phải Phép XOR bit ^ Trái sang phải Phép OR bit | Trái sang phải Phép AND logic && Trái sang phải Phép OR logic || Trái sang phải Điều kiện ?: Phải sang trái Gán = += -= *= /= %=>>=