Bài giảng Nhập môn về lập trình - Chương 3: Tổ chức dữ liệu trong chương trình với mục tiêu giúp sinh viên biết được tên và các thuộc tính của các kiểu dữ liệu cơ bản về số, ký tự, enum và logic (logic trong mở rộng của C, C++); nhập được giá trị của các biến từ bàn phím và xuất được giá trị của các biến ra màn hình... Mời các bạn cùng tham khảo chi tiết nội dung bài giảng.
Trang 1Chương 3
Tổ chức dữ liệu trong chương trình
Presenter:
Trang 2Learning outcomes
L.O.2.1 – Biết được tên và các thuộc tính của các kiểu dữ
liệu cơ bản về số, ký tự, enum và logic (logic trong
mở rộng của C, C++)
L.O.2.2 – Khai báo được các biến và hằng
L.O.2.3 – Xác định và giải thích rõ các kiểu lưu trữ biến
L.O.2.4 – Sử dụng được các toán tử có thể thực hiện được
với các kiểu dữ liệu để thành lập biểu thức
L.O.2.5 – Nhập được giá trị của các biến từ bàn phím và
xuất được giá trị của các biến ra màn hình (nhắc
lại có nâng cao)
L.O.2.6 – Định nghĩa được các kiểu có cấu trúc và sử dụng
chúng
Trang 3Tổ chức dữ liệu trong chương trình C
Phân loại
Dữ liệu dùng trong các chương trình C thường xuất hiện dưới 3 hình thức:
• Giá trị tức thời (value)
• Hằng (constant): có tên (name) và giá trị thay thế (value)
• Biến (variable): có tên (name), kiểu (type) và nội dung chứa bên trong (value)
Trang 4Giá trị tức thời
Cách viết
Dữ liệu số :
• Số nguyên hệ 8: bắt đầu bằng chữ „O‟ (Octal)
Ví dụ: O165 -O203
• Số nguyên hệ 16: bắt đầu bằng 0x (Hexadecimal)
Ví dụ: 0x3D -0x3AF8
• Số nguyên hệ 10: (Decimal)
Ví dụ: 169 -2053
• Số thực chấm động: (floating point)
Ví dụ: 3.14159 -0.31459e1 -83.1E-9
Dữ liệu ký tự / chuỗi
• Ký tự: đặt trong 2 dấu nháy đơn („)
Ví dụ: „A‟ „7‟ „\064‟ „\t‟
• Chuỗi: đặt trong 2 dấu nháy kép (“)
Ví dụ: “Nhap so: “ “%-10.3f\n”
Trang 5Hằng
Hằng là một giá trị được đặt tên (thường dùng chữ lớn)
Cú pháp định nghĩa hằng gợi nhớ cơ bản :
const <type> <name> = <value> ;
hay
Ví dụ: const int VMAX = 15;
#define VMAX 15
Lưu ý : dấu < > chỉ để miêu tả phần tử do người sử dụng đặt
Trang 6• Có nội dung: là giá trị chứa trong biến
Kiểu dữ liệu cung cấp bởi C++ chia ra thành kiểu có sẳn
(tên kiểu do C++ qui định) và kiểu của người sử dụng (tên kiểu do người sử dụng đặt thông qua đặc tả kiểu)
Trang 7Kiểu dữ liệu có sẳn của C++
void : 0 byte (không có giá trị nào), được dùng để miêu tả kiểu trả về
của hàm mà không muốn trả về giá trị
short / short int : 2 bytes (-32,768 32,767)
unsigned short : 2 bytes (0 to 65535)
int / long (long integer) : 4 bytes (-2,147,483,648 2,147,483,647)
unsigned int / unsigned long : 4 bytes (0 to 4,294,967,295)
float (single-precision floating-point) :4 bytes [6 chữ số]
(1.175494351E-38F 3.402823466E+38)
double (double-precision floating-point) : 8 bytes [15 chữ số]
(2.2250738585072014E-308 1.7976931348623158E+308)
Trang 8Biến
Định nghĩa và khai báo
Định nghĩa biến theo cú pháp:
<type> <variable> [ =<ConstExpr>] ;
trong đó <type> có thể là kiểu có sẳn hay kiểu của người sử dụng
<ConstExpr> là trị ban đầu, có thể không có
Ví dụ: int so=3;
char kytu; float x1,x2;
hoso sv1;
Khai báo biến (đã được định nghĩa trong module khác):
extern <type> <variable> ;
Ví dụ: extern int so;
extern char gioitinh;
Định nghĩa biến tĩnh:
static <type> <variable> [=<ConstExpr>];
Ví dụ: static long dem;
Biến static là biến toàn cục
Biến automatic là biến cục bộ
Biến dynamic cấp phát lúc chạy
Trang 9Biểu thức
Các thành phần của biểu thức
Biểu thức thể hiện cách xử lý dữ liệu trong chương trình
Biểu thức là cách tính toán của chương trình
Các thành phần xác định biểu thức :
• Các toán hạng : các biến, hằng dữ liệu,
• Các toán tử tham gia biểu thức : +,-,*,/,
• Qui trình tính biểu thức của phần mềm
• Kiểu kết quả sau khi tính biểu thức
Trang 10Biểu thức
Biểu thức cơ bản
Biểu thức cơ bản là phần tử nhỏ nhất tạo ra biểu thức
Các biểu thức cơ bản gồm :
• Giá trị ( kiểu nguyên, thực, chuỗi, ) [ chính giá trị ]
• ( Biểu thức ) [ giá trị Biểu thức ]
Biểu thức cơ bản là biểu thức
Nhiều biểu thức cơ bản kết hợp với nhau bằng các toán
tử cũng là biểu thức
Trang 11Biểu thức
Các toán tử
Phân loại theo số lượng toán hạng :
• Toán tử 1 ngôi : chỉ cần 1 toán hạng [ & , * , + , - , ~ , ! ]
Ví dụ: toán tử '-' (số âm), toán tử „!‟ (not luận lý)
• Toán tử 2 ngôi : cần dùng 2 toán hạng
Ví dụ: toán tử '*' (nhân 2 số), „%‟ (chia lấy phần dư),
• Toán tử 3 ngôi : cần dùng 3 toán hạng
Ví dụ: toán tử 'c ? v1 : v2 ' (kiểm tra điều kiện c, nếu c đúng trả về
v1, c sai trả về v2)
VC++ thường dùng các ký tự đặc biệt để miêu tả toán tử
Ví dụ: '+ ' là cộng, '- ' là trừ, '* ' là nhân, '/ ' là chia,
Trang 12Biểu thức
Qui trình tính biểu thức
Qui trình tính : Từ trái sang phải, mỗi lần gặp 1 toán tử
( CurrentOp ) thì phải nhìn tiếp toán tử đi ngay sau nó
quyết định như sau :
• Nếu không có SussesorOp thì tính ngay toán tử CurrentOp (trên
1, 2 hay 3 toán hạng của nó)
• Nếu toán tử CurrentOp có độ ưu tiên cao hơn hay bằng toán tử
SussesorOp thì tính ngay toán tử CurrentOp (trên 1, 2 hay 3
toán hạng của nó)
• Các trường hợp còn lại thì cố gắng thực hiện toán tử
bước đầu,
Trang 13 Bảng liệt kê độ ưu tiên các toán tử từ cao xuống thấp :
Member selection (object) Left to right
Biểu thức
Nhóm toán tử và độ ưu tiên (1)
Trang 14Operator Name or Meaning Associativity
– Arithmetic negation (unary) None
% Remainder (modulus) Left to right
Biểu thức
Nhóm toán tử và độ ưu tiên (2)
Trang 15Biểu thức
Nhóm toán tử và độ ưu tiên (3)
^ Bitwise exclusive OR Left to right
Trang 16Biểu thức
Nhóm toán tử và độ ưu tiên (4)
*= Multiplication assignment Right to left
/= Division assignment Right to left
%= Modulus assignment Right to left
+= Addition assignment Right to left
-= Subtraction assignment Right to left
|= Bitwise inclusive OR assignment Right to left
^= Bitwise exclusive OR assignment Right to left
Trang 17Biểu thức
Kiểu của biểu thức
Kiểu của biểu thức lấy theo kiểu của toán hạng lớn nhất
So sánh các kiểu số dựa trên độ lớn (10x) và độ chính xác
(số chữ số có nghĩa)
Kiểu Số byte Độ chính xác Độ lớn
char < short < int/long < double
char < short < float < double
Trang 18+= iNum1 += iNum2 iNum1 = iNum1 + iNum2
-= iNum1 -= iNum2 iNum1 = iNum1 - iNum2
*= iNum1 *= iNum2 iNum1 = iNum1 * iNum2
/= iNum1 /= iNum2 iNum1 = iNum1 / iNum2
%= iNum1 %= iNum2 iNum1 = iNum1 % iNum2
Ví dụ : tính tổng S=1+2+3+ +7
tong=0;
for (dem=1; dem<=7; dem++) tong += dem;
Trang 19Biểu thức
Toán tử tăng / giảm
-
++ Cộng 1 vào toán hạng
Trừ 1 vào toán hạng
++ hay là các toán tử một toán hạng có thể dùng ở trước (prefix)
hoặc sau (postfix) tên biến
Toán tử prefix sẽ được thực hiện trước khi sử dụng toán hạng
Ví dụ : dem = ++tridau; tương đương
tridau++; dem=tridau;
Toán tử postfix sẽ được thực hiện sau khi sử dụng toán hạng
Trang 20Biểu thức
Biểu thức số học
Toán tử số học gồm các nhóm:
• Một ngôi : + (dương), - (âm)
• Nhân/Chia : *, /, %
• Cộng/Trừ : +, -
• Bit : ~ (not), & (and), | (or), ^ (xor)
Biểu thức số học là biểu thức gồm các biểu thức cơ bản
kết hợp với nhau chỉ bằng toán tử số học
Toán hạng đầu vào kiểu số , kết quả đầu ra kiểu số
Thường dùng để tính toán dữ liệu số
Trang 21Biểu thức
Biểu thức so sánh
Toán tử so sánh trả về trị true (khác 0) hay false (bằng 0)
Biểu thức so sánh có dạng
<biểu thức số học> <toán tử so sánh> <biểu thức số học>
Trang 22Biểu thức
Biểu thức luận lý
Toán tử luận lý thực hiện phép toán luận lý dựa trên trị luận lý đúng
Biểu thức luận lý có dạng
Toán hạng đầu vào kiểu đúng/sai, kết quả đầu ra kiểu đúng/sai
Dùng để ghép các điều kiện trong lệnh
Trang 23Biểu thức
Nguyên tắc hoạt động của toán tử luận lý
Các toán tử luận lý hoạt động theo bảng sự thật sau:
Trang 24Biểu thức
Ví dụ
Trang 25Lệnh gán
Cú pháp và mục đích
Cú pháp lệnh gán dùng toán tử gán '=' :
<biến> = <biểu thức>;
Sau khi thực hiện, giá trị <biểu thức> sẽ được tính và cất
vào <biến> , nội dung cũ của <biến> sẽ bị mất
Ta có thể thực hiện phép gán liên tiếp như sau :
a = b = c = 25; // a,b,c đều chứa số 25