Nhập môn lập trình - Chương 2: Kiểu dữ liệu, biến, biểu thức - Huỳnh Nguyễn Thành Luân

Các kiểu dữ liệu cơ bản

Hằng

Biến

Phép toán và biểu thức

Hàm nhập xuất của C

 Các kiểu dữ liệu sơ cấp chuẩn trong C có thể

được chia làm 2 dạng :

 Kiểu số nguyên (integer, long)

 Kiểu số thực (float, double)

 

pdf39 trang | Chuyên mục: Lập Trình | Chia sẻ: tuando | Lượt xem: 409 | Lượt tải: 1download
Tóm tắt nội dung Nhập môn lập trình - Chương 2: Kiểu dữ liệu, biến, biểu thức - Huỳnh Nguyễn Thành Luân, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
Ví dụ: 
 typedef long SoNg32; 
 typedef short int SoNg16; 
 typedef char KITU; 
7 
Hằng (Constant) 
Là đại lượng không đổi trong suốt quá trình thực thi 
chương trình 
Dùng toán tử #define 
- Cú pháp: 
#define 
- Ví dụ: #define MAX 100 
Biến hằng được định nghĩa nhờ từ khoá const với cú 
pháp như sau: 
 const = ; 
 Ví dụ: const int MAX = 100; 
Tên hằng số nên viết bằng chữ in HOA 8 
Các loại hằng số 
Hằng số: Đó là các giá trị xác định, một hằng số có thể là 
nguyên (có kiểu int, long int) hay thực (có kiểu float, 
double). 
Hằng ký tự: Được đặt trong dấu nháy đơn ‘’. Ví dụ: 'A', 'a' 
tương ứng với giá trị nguyên 65, 97 trong bảng mã 
ASCII. 
Hằng chuỗi: Là tập hợp các ký tự được đặt trong cặp dấu 
nháy kép " ". Ví dụ: “Lap trinh C” 
Chú ý: 
 “” : chuỗi rỗng - không có nội dung 
 Khi lưu trữ trong bộ nhớ, một chuỗi được kết thúc 
bằng ký tự NULL (‘\0’: mã Ascii là 0). 
9 
Biến (variable) 
Biến: Là nơi lưu trữ dữ liệu trong bộ nhớ máy tính khi 
thực hiện chương trình, được đặt bởi một tên. 
Giá trị của biến có thể bị thay đổi. 
Mỗi biến chỉ có thể lưu một loại giá trị nhất định, tùy 
thuộc kiểu biến (kiểu dữ liệu). 
Phải khai báo biến trước khi sử dụng 
Cú pháp khai báo biến: 
 tênbiến; 
Ví dụ: 
int a; //Khai báo biến để lưu số nguyên tên a 
float dienTich; //Khai báo biến để lưu diện tích hình 
10 
Địa chỉ của các biến 
 Là địa chỉ (&) của các biến trong bộ nhớ mà chúng ta cần 
nhập giá trị cho nó. 
Mỗi biến sẽ được lưu trữ tại một vị trí xác định trong ô nhớ, 
nếu kích thước của biến có nhiều byte thì máy tính sẽ cấp phát 
một dãy các byte liên tiếp nhau, địa chỉ của biến sẽ lưu byte 
đầu tiên trong dãy các byte này 
 Cách lấy địa chỉ của biến: & 
0
x
b
ffecc0
int anInt; 
11 
Khai báo và khởi tạo giá trị 
ban đầu cho biến 
Khai báo nhiều biến cùng kiểu 
 tênbiến1, tênbiến2, tênbiến3; 
 Ví dụ: 
 int a, x, y; 
Khai báo và khởi tạo giá trị ban đầu cho biến 
 tênbiến = giá trị; 
Ví dụ: 
 int a = 5; 
 float b = 5.4, c = 9; 
 char ch = ‘n’; 
12 
Tầm vực của biến 
 Biến ngoài 
 Được đặt bên ngoài tất cả 
các hàm 
 Ảnh hưởng đến toàn bộ 
chương trình (biến toàn cục) 
 Biến trong 
 Được đặt bên trong hàm, 
chương trình chính hay một 
khối lệnh 
 Ảnh hưởng đến hàm, 
chương trình hay khối lệnh 
chứa nó (biến cục bộ). 
13 
Tầm vực của biến 
Biến tĩnh 
 Biến tĩnh có kèm từ khóa static vào trước 
 Tồn tại suốt chương trình 
 Tầm vực sử dụng: toàn cục hoặc cục bộ 
 Ví dụ: static int a; 
14 
Tầm vực của biến 
Ví dụ: 
 #include 
#include 
int bienngoai;//khai báo biến ngoài 
void main() 
{ 
int i=1, j=2; //khai báo biến trong 
int bienngoai=3; 
printf("Gia tri i la %d\n",i); 
printf("Gia tri j la %d\n",j); 
printf("Gia tri bienngoai la %d\n",bienngoai); 
getch(); 
} 
15 
Phép toán và biểu thức 
 Ví dụ: 
 (-b + sqrt(Delta))/(2*a) 
 Biểu thức là một sự kết hợp giữa 
 Các toán tử (operator) và 
 Các toán hạng (operand) 
 Các loại toán tử trong C 
 Toán tử số học 
 Toán tử quan hệ và logic 
 Toán tử Bitwise (thao tác trên bit) 
 Toán tử điều kiện 
 Toán tử con trỏ & và * 
 Toán tử dấu phẩy 
16 
Các toán tử số học 
STT 
PHÉP 
TOÁN 
Ý NGHĨA GHI CHÚ 
PHÉP TOÁN SỐ HỌC 
1 + Cộng 
2 - Trừ 
3 * Nhân 
4 / Chia 
Đối với 2 số nguyên thì kết quả 
là chia lấy phần nguyên 
5 % Chia lấy phần dư Chỉ áp dụng cho 2 số nguyên 
TOÁN TỬ TĂNG GIẢM 
6 ++ Tăng 1 Nếu toán tử tăng/giảm đặt 
trước thì tăng/giảm trước rồi 
tính biểu thức hoặc ngược lại. 
7 -- Giảm 1 
17 
Các toán tử số học 
• Tăng và giảm (++ & --) 
 ++x hay x++ giống x = x + 1 
 --x hay x-- giống x = x – 1 
• Tuy nhiên: 
 x = 10; 
 y = ++x; 
Kết quả: y = 11, x=11 
• Còn: 
 x = 10; 
 y = x++; 
Kết quả: y = 10, x=11 
Đâu là sự khác nhau? 
18 
Biểu thức Boolean (boolean 
expression) 
Không có kiểu Boolean (kiểu luận lý) rõ ràng trong C. 
Thay vào đó C dùng các giá trị nguyên để tượng trưng 
cho giá trị Boolean, với qui ước: 
Chú ý: C dùng “=” cho phép gán, và dùng “= =“ cho 
phép so sánh. Nó trả về 1 nếu bằng và 0 nếu không bằng 
false Giá trị 0 
true Bất kỳ giá trị nào ngoại trừ 0 
19 
Các toán tử quan hệ và các toán 
tử Logic 
 Các phép so sánh sau tạo ra các biểu thức logic có giá trị 
kiểu Boolean 
Toán tử Ý nghĩa 
Các toán tử quan hệ 
> Lớn hơn 
>= Lớn hơn hoặc bằng 
< Nhỏ hơn 
<= Nhỏ hơn hoặc bằng 
= = So sánh bằng 
!= So sánh khác nhau 
Các toán tử Logic 
&& AND 
|| OR 
! NOT 20 
Các toán tử quan hệ và các toán 
tử Logic 
Ví dụ: 
• Các biểu thức logic trả về 
 0 nếu false (sai) 
 1 nếu true (đúng) 
21 
Các toán tử quan hệ và các toán 
tử Logic 
 Bảng chân trị cho các toán tử Logic 
 Thứ tự ưu tiên 
 Ví dụ: (10>5)&&(10 sai (0) 
22 
Các toán tử Bitwise (thao tác trên 
bit) 
Toán tử Bitwise giúp 
kiểm tra, gán hay thay 
đổi các bit thật sự trong 
1 byte của word. 
Chỉ dùng cho kiểu char 
và int. 
23 
Toán tử điều kiện 
Toán tử ? thực hiện như lệnh if-else. 
Cú pháp: 
(ĐK)?: 
Ví dụ: X = (10 > 9) ? 100 : 200; 
 =>X=100 
 X = (10 >15 )? 100 : 200; 
 =>X=200 
24 
Toán tử con trỏ & và * 
Ví dụ: 
 int *p; //con tro so nguyen 
 int count=5, x; 
 p = &count; 
 =>Đặt vào biến p địa chỉ bộ nhớ của biến count 
Toán tử * trả về nội dung của ô nhớ mà một con trỏ 
đang chỉ vào 
 Ví dụ: 
 x = *p; // x=5 
25 
Toán tử dấu phẩy 
Ví dụ: 
 x = (y=3,y+1); 
Trước hết gán 3 cho y rồi gán 4 cho x. 
Được sử dụng để kết hợp các biểu thức lại với nhau. 
Bên trái của dấu (,) luôn được xem là kiểu void. 
Biểu thức bên phải trở thành giá trị của tổng các biểu 
thức được phân cách bởi dấu phẩy. 
26 
Độ ưu tiên phép toán 
Toán tử Độ ưu tiên Trình tự kết hợp 
() [] -> 1 Từ trái qua phải 
! ~ ++ -- sizeof 2 Từ phải qua trái 
* / % 3 Từ trái qua phải 
+ - 4 Từ trái qua phải 
> 5 Từ trái qua phải 
= > 6 Từ trái qua phải 
== != 7 Từ trái qua phải 
& 8 Từ trái qua phải 
| 9 Từ trái qua phải 
^ 10 Từ trái qua phải 
&& 11 Từ trái qua phải 
|| 12 Từ trái qua phải 
? : 13 Từ phải qua trái 
= += -= *= /= %= 14 Từ phải qua trái 
27 
Phép gán được viết gọn lại 
Cú pháp: x= x y; 
có thể được viết gọn lại (short form): 
28 
Các lỗi thường gặp khi viết chương 
trình 
Quên khai báo các biến sử dụng trong chương 
trình. 
Lưu một giá trị vào một biến nhưng không 
cùng kiểu dữ liệu với biến. 
Sử dụng biến trong một biểu thức khi nó chưa 
có giá trị. Lỗi này thì không được phát hiện bởi 
trình biên dịch, khi đó giá trị của biến là một giá 
trị bất kỳ và kết quả của biểu thức là vô nghĩa. 
29 
Phép gán 
 Lệnh gán (assignment statement) dùng để gán giá trị của một 
biểu thức cho một biến. 
 Cú pháp: 
 = ; 
Ý nghĩa: Gán giá trị cho 1 biến 
 Ví dụ: 
int main() { 
int x,y; 
x =10; // Gán hằng số 10 cho biến x 
y = 2*x; //Gán giá trị của biểu thức 2*x (=20) cho biến y 
return 0; 
} 
 Gán giá trị ngay tại lúc khai báo: 
30 
Phép gán 
Kiểu của biểu thức và của biến phải giống nhau 
Error: "Cannot convert ‘char *’ to ‘int’" 
31 
Phép gán 
Tự động chuyển kiểu: Thường thì có sự chuyển đổi 
kiểu tự động nếu có thể. Việc chuyển kiểu được thực 
hiện từ toán hạng có kiểu “hẹp” sang kiểu “rộng” hơn 
Ví dụ: 
int x, y; char ch; 
y = ‘d’; //y co kieu int, còn ‘d’ có kiểu char 
 float a = 3.34; 
 int b; 
 b = a; //làm mất đi sự chính xác (loss of precision) 
 a = b; 
32 
Phép gán 
Ép kiểu (casting type) 
 Cú pháp: (Tên kiểu) 
Chuyển đổi kiểu của thành kiểu mới 
Ví dụ: 
int x; 
double y= 3.125; 
y = (int) y; // lúc này y có giá trị là ? 
x = y; //lúc này x=? 
y = x/2; //lúc này y có giá trị là ? 
y = (double)x/2; // lúc này y có giá trị là ? 
y = x/2.0; // lúc này y có giá trị là ? 
33 
Hàm nhập xuất của C 
 Thư viện 
 Xuất: 
 printf(“hằng chuỗi”); 
 Vd: printf(“Xin chao cac ban”); 
 printf(“chuỗi định dạng”, đối số 1, đối số 2); 
Chuỗi định dạng để qui định kiểu dữ liệu, cách biểu diễn, độ rộng, 
số chữ số thập phân,  
 Vd: int a=5; float b=2.7; 
 printf(“Gia tri cua bien a=%d, b=%f“, a, b); 
 Nhập: 
 scanf(“chuỗi định dạng”, &tên biến); 
 Vd: int x; 
 scanf(“%d”, &x); 
34 
Hàm nhập xuất của C 
#include 
#include 
void main () 
{ 
 clrscr(); //lệnh xóa trắng màn hình 
int age ; 
float size; 
printf ( “nhap tuoi“) ; 
scanf ( “%d”, &age) ; 
printf ( “chieu cao cua ban: “) ; 
scanf ( “%f”, &size) ; 
printf ( “ban %d tuoi va co chieu cao %0.2f \n”,age, size); 
getch(); //dừng màn hình xem kết quả 
} 
%[số ký số][.số sau dấu phẩy]: Nhập số thực có tối đa <số 
ký số> tính cả dấu chấm, lấy ký số sau dấu thập phân 
35 
Chuỗi định dạng 
STT KIỂU GHI CHÚ ĐỊNH DẠNG 
KIỂU LIÊN TỤC (SỐ THỰC) 
1 float %f 
2 double %lf 
3 long double %lf 
KIỂU RỜI RẠC (SỐ NGUYÊN) 
1 char 
Ký tự %c 
Số nguyên %d 
2 unsigned char Số nguyên dương %d 
3 int Số nguyên %d 
4 unsigned int Số nguyên dương %u 
5 long Số nguyên %ld 
6 unsigned long Sô ́ nguyên dương %lu 
7 char * Chuỗi ký tự %s 
36 
Xuất ký tự đặt biệt 
Ký tự Ý nghĩa Ví dụ 
\’ Xuất dấu nháy đơn 
printf(“I\’m a student”); 
Kết quả: I’m a student 
\” Xuất dấu nháy đôi 
printf(“ky tu \“dac biet\””); 
Kết quả: ky tu “dac biet” 
\\ Xuất dấu chéo ngược “\” 
printf(“ \\ ”); 
Kết quả: \ 
\0 Ký tự NULL 
Dùng để gán ký tự kết thúc 
của chuỗi 
 Để biểu diễn ký tự đặc biệt bên trong chuỗi ta phải thêm 
dấu \ phía trước. 
37 
Xuất ký tự đặt biệt 
Ký tự Ý nghĩa Ví dụ 
\t 
Tab vào một đoạn ký 
tự trắng 
printf(“ xyz\tzyx”); 
Kết quả: xyz zyx 
\b Xuất lùi về sau 
printf(“ xyz\bzyx”); 
Kết quả: xyzyx 
\n Xuống dòng 
printf(“ xyz\nzyx”); 
Kết quả: xyz 
 zyx 
\r Về đầu dòng 
printf(“ xyz\rzyx”); 
Kết quả: zyx 
38 
Sử dụng thư viện toán học 
include 
Phép Toán Diễn Giải 
abs(a) Trị tuyệt đối của số nguyên 
fabs(a) Trị tuyệt đối của số thực 
sqrt(a) Căn bậc hai của số 
pow(a,n) 
M_PI Số Pi= 3.1415 
na
39 

File đính kèm:

  • pdfnhap_mon_lap_trinh_chuong_2_kieu_du_lieu_bien_bieu_thuc_huyn.pdf