Lập trình C Aptech - Bài 2: Biến và kiểu dữ liệu

Mục tiêu:

 

Kết thúc bài học này, bạn có thể:

 

 Hiểu và sử dụng được biến (variables)

 Phân biệt sự khác nhau giữa biến và hằng (constants)

 Nắm vững và sử dụng các kiểu dữ liệu khác nhau trong chương trình C

 Hiểu và sử dụng các toán tử số học.

 

doc15 trang | Chuyên mục: C/C++ | Chia sẻ: dkS00TYs | Lượt xem: 1833 | Lượt tải: 3download
Tóm tắt nội dung Lập trình C Aptech - Bài 2: Biến và kiểu dữ liệu, để xem tài liệu hoàn chỉnh bạn click vào nút "TẢI VỀ" ở trên
ay vì là -32768 tới 32767 mà kiểu int hỗ trợ. Theo mặc định, int là một kiểu dữ liệu có dấu.
Các kiểu long và short
Chúng được sử dụng khi một số nguyên có chiều dài ngắn hơn hoặc dài hơn chiều dài bình thường. Một bổ từ short được áp dụng cho kiểu dữ liệu khi chiều dài yêu cầu ngắn hơn chiều dài số nguyên bình thường và một bổ từ long được dùng khi chiều dài yêu cầu dài hơn chiều dài số nguyên bình thường.
Bổ từ short được sử dụng với kiểu dữ liệu int. Nó sửa đổi kiểu dữ liệu int theo hướng chiếm ít vị trí bộ nhớ hơn. Bởi vậy, trong khi một biến kiểu int chiếm giữ 16 bit (2 byte) thì một biến kiểu short int (hoặc chỉ là short), chiếm giữ 8 bit (1 byte) và cho phép những số có trong phạm vi từ -128 tới 127. 
Bổ từ long được sử dụng tương ứng một miền giá trị rộng hơn. Nó có thể được sử dụng với int cũng như với kiểu dữ liệu double. Khi được sử dụng với kiểu dữ liệu int, biến chấp nhận những giá trị số trong khoảng từ -2,147,483,648 đến 2,147,483,647 và chiếm giữ 32 bit ( 4 byte). Tương tự, kiểu long double của một biến chiếm giữ 128 bit (16 byte).
Một biến long int được khai báo như sau:
long int varNum;
Nó cũng có thể được khai báo đơn giản như long varNum. Một số long integer có thể được khai báo như long int hay chỉ là long. Tương tự, ta có short int hay short.
Bảng dưới đây trình bày phạm vi giá trị cho các kiểu dữ liệu khác nhau và số bit nó chiếm giữ dựa theo tiêu chuẩn ANSI.
Kiểu
Dung lượng xấp xỉ (đơn vị là bit)
Phạm vi
char
8
-128 tới 127
unsigned
8
0 tới 255
signed char
8
-128 tới 127
int
16
-32,768 tới 32,767
unsigned int
16
0 tới 65,535
signed int
16
Giống như kiểu int
short int
16
-128 tới 127
unsigned short int
16
0 tới 65, 535
signed short int
16
Giống như kiểu short int
long int
32
-2,147,483,648 tới 2,147,483,647
signed long int
32
Giống như kiểu long int
unsigned long int
32
0 tới 4,294,967,295
float
32
6 con số thập phân
double
64
10 con số thập phân
long double
128
10 con số thập phân
Table 2.1: Các kiểu dữ liệu và phạm vi
Thí dụ sau trình bày cách khai báo những kiểu dữ liệu trên.
Ví dụ 2:
main()
{
	char abc;	/*abc of type character */
	int xyz;	/*xyz of type integer */
	float length;	/*length of type float */
	double area;	/* area of type double */
	long liteyrs;	/*liteyrs of type long int */
	short arm;	/*arm of type short integer*/
}
Chúng ta xem lại ví dụ cộng hai số và hiển thị tổng ở chương trước. Mã giả như sau :
Ví dụ 3:
BEGIN
INPUT A, B
C = A + B
DISPLAY C
END
Trong ví dụ này, các giá trị cho hai biến A và B được nhập. Các giá trị được cộng và tổng được lưu cho biến C bằng cách dùng câu lệnh C = A + B. Trong câu lệnh này, A và B là những biến và ký hiệu + gọi là toán tử. Chúng ta sẽ nói về toán tử số học của C ở phần sau đây. Tuy nhiên, có những loại toán tử khác trong C sẽ được bàn tới ở phần kế tiếp.
2.5	Các toán tử số học (Arithmetic Operators)
Những toán tử số học được sử dụng để thực hiện những thao tác mang tính số học. Chúng được chia thành hai lớp : Toán tử số học một ngôi (unary) và toán tử số học hai ngôi (binary).
Bảng 2.2 liệt kê những toán tử số học và chức năng của chúng.
Các toán tử một ngôi
Chức năng
Các toán tử hai ngôi
Chức năng
-
Lấy đối số
+
Cộng
++
Tăng một giá trị
-
Trừ
--
Giảm một giá trị
*
Nhân
%
Lấy phần dư
/
Chia
^
Lấy số mũ
Bảng 2.2: Các toán tử số học và chức năng
Các toán tử hai ngôi
Trong C, các toán tử hai ngôi có chức năng giống như trong các ngôn ngữ khác. Những toán tử như +, -, * và / có thể được áp dụng cho hầu hết kiểu dữ liệu có sẵn trong C. Khi toán tử / được áp dụng cho một số nguyên hoặc ký tự, bất kỳ phần dư nào sẽ được cắt bỏ. Ví dụ, 5/2 sẽ bằng 2 trong phép chia số nguyên. Toán tử % sẽ cho ra kết quả là số dư của phép chia số nguyên. Ví dụ: 5%2 sẽ có kết quả là 1. Tuy nhiên, % không thể được sử dụng với những kiểu có dấu chấm động.
Chúng ta hãy xem xét một ví dụ của toán tử số mũ.
9^2
Ở đây 9 là cơ số và 2 là số mũ.
Số bên trái của ‘^’ là cơ số và số bên phải ‘^’ là số mũ.
Kết quả của 9^2 là 9*9 = 81.
Thêm ví dụ khác:
5 ^ 3
Có nghĩa là:
5 * 5 * 5
Do đó: 5 ^ 3 = 5 * 5 * 5 = 125.
Ghi chú: Những ngôn ngữ lập trình như Basic, hỗ trợ toán tử mũ. Tuy nhiên, ANSI C không hỗ trợ ký hiệu ^ cho phép tính lũy thừa. Ta có thể dùng cách khác tính lũy thừa trong C là dùng hàm pow() đã được định nghĩa trong math.h. Cú pháp của nó thể hiện qua ví dụ sau:
...
#include
void main(void)
{	….
	/* the following function will calculate x to the power y. */
	z = pow(x, y); 
	….
}
Ví dụ sau trình bày tất cả toán tử hai ngôi được dùng trong C. Chú ý rằng ta chưa nói về hàm printf() và getchar(). Chúng ta sẽ bàn trong những phần sau.
Ví dụ 4:
	#include
	main()
	{
	int x,y;
	x = 5;
	y = 2;
	printf("The integers are	:	%d & %d\n", x, y);
	printf("The addition gives	:	%d\n", x + y);
	printf("The subtraction gives	:	%d\n", x - y);
	printf("The multiplication gives	:	%d\n", x * y);
	printf("The division gives	:	%d\n", x / y);
	printf("The modulus gives	: %d\n", x % y);
	getchar();
	}
Kết quả là: 
	The integers are	:	5 & 2
	The addition gives	:	7
	The subtraction gives	:	3
	The multiplication gives	:	10
	The division gives	:	2
	The modulus gives	:	1
Các toán tử một ngôi (unary)
Các toán tử một ngôi là toán tử trừ một ngôi ‘-’, toán tử tăng ‘++’ và toán tử giảm ‘--’
Toán tử trừ một ngôi 
Ký hiệu giống như phép trừ hai ngôi. Lấy đối số để chỉ ra hay thay đổi dấu đại số của một giá trị. Ví dụ:
	a = -75;
	b = -a;
Kết quả của việc gán trên là a được gán giá trị -75 và b được gán cho giá trị 75 (-(- 75)). Dấu trừ được sử dụng như thế gọi là toán tử một ngôi vì nó chỉ có một toán hạng. 
Nói một cách chính xác, không có toán tử một ngôi + trong C. Vì vậy, một lệnh gán như.
	invld_pls = +50; 
khi mà invld_pls là một biến số nguyên là không hợp lệ trong chuẩn của C. Tuy nhiên, nhiều trình biên dịch không phản đối cách dùng như vậy. 
	Các toán tử Tăng và Giảm
C bao chứa hai toán tử hữu ích mà ta không tìm thấy được trong những ngôn ngữ máy tính khác. Chúng là ++ và --. Toán tử ++ thêm vào toán hạng của nó một đơn vị, trong khi toán tử -- giảm đi toán hạng của nó một đơn vị.
Cụ thể:
	x = x + 1;
có thể được viết là:
	x++;
và:
	x = x - 1;
có thể được viết là:
	x--;
Cả hai toán tử này có thể đứng trước hoặc sau toán hạng, chẳng hạn:
	x = x + 1;
có thể được viết lại là 
	x++ hay ++x;
Và cũng tương tự cho toán tử --.
Sự khác nhau giữa việc xử lý trước hay sau trong toán tử một ngôi thật sự có ích khi nó được dùng trong một biểu thức. Khi toán tử đứng trước toán hạng, C thực hiện việc tăng hoặc giảm giá trị trước khi sử dụng giá trị của toán hạng. Ðây là tiền xử lý (pre-fixing). Nếu toán tử đi sau toán hạng, thì giá trị của toán hạng được sử dụng trước khi tăng hoặc giảm giá trị của nó. Ðây là hậu xử lý (post-fixing). Xem xét ví dụ sau :
 a = 10;
	b = 5;
	c = a * b++;
Trong biểu thức trên, giá trị hiện thời của b được sử dụng cho tính toán và sau đó giá trị của b sẽ tăng sau. Tức là, c được gán 50 và sau đó giá trị của b được tăng lên thành 6.
Tuy nhiên, nếu biểu thức trên là:
	c = a * ++b;
thì giá trị của c sẽ là 60, và b sẽ là 6 bởi vì b được tăng 1 trước khi thực hiện phép nhân với a, sau đó giá trị được gán vào c.
Trong trường hợp mà tác động của việc tăng hay giảm là riêng lẻ thì toán tử có thể đứng trước hoặc sau toán hạng đều được. 
Hầu hết trình biên dịch C sinh mã rất nhanh và hiệu quả đối với việc tăng và giảm giá trị. Mã này sẽ tốt hơn so với khi ta dùng toán tử gán. Vì vậy, các toán tử tăng và giảm nên được dùng bất cứ khi nào có thể. 
Tóm tắt bài học
Thông thường, khi chương trình ứng dụng cần xử lý dữ liệu, nó cần có nơi nào đó để lưu trữ tạm thời dữ liệu này. Nơi mà dữ liệu được lưu trữ gọi là bộ nhớ.
Các ngôn ngữ lập trình hiện đại ngày nay cho phép chúng ta sử dụng các tên tượng trưng gọi là biến (variable), dùng để chỉ đến một vùng trong bộ nhớ nơi mà các giá trị cụ thể được lưu trữ.
Không có giới hạn về số vị trí bộ nhớ mà một chương trình có thể dùng.
Một hằng (constant) là một giá trị không bao giờ bị thay đổi.
Tên của các biến (variable), các hàm (function), các nhãn (label) và các đối tượng khác nhau do người dùng định nghĩa gọi là định danh.
Tất cả ngôn ngữ dành một số từ nhất định cho mục đích riêng. Những từ này được gọi là là “từ khóa” (keywords).
Các kiểu dữ liệu chính của C là character, integer, float, double và void. 
Một bổ từ được sử dụng để thay đổi kiểu dữ liệu cơ bản sao cho phù hợp với nhiều tình huống đa dạng. Các bổ từ được sử dụng trong C là signed, unsigned, long và short.
C hỗ trợ hai loại toán tử số học: một ngôi và hai ngôi.
Toán tử tăng ‘++’ và toán tử giảm ‘--’ là những toán tử một ngôi. Nó chỉ hoạt động trên biến kiểu số.
Toán tử hai ngôi số học là +, -, *, /, %, nó chỉ tác động lên những hằng số, biến hay biểu thức.
Toán tử phần dư ‘%’ chỉ áp dụng trên các số nguyên và cho kết quả là phần dư của phép chia số nguyên.
Kiểm tra tiến độ học tập
C có phân biệt chữ thường và hoa. 	(True / False)
Số 10 là một _______________.
Ký tự đầu của định danh có thể là một số. 	(True / False)
Dùng kiểu _________ sẽ tiết kiệm bộ nhớ do nó chiếm chỉ nửa không gian nhớ so với _________.
Kiểu dữ liệu _______ được dùng để chỉ cho trình biên dịch C biết rằng không có giá trị nào được trả về.
_______ và _______ là hai nhóm toán tử số học.
A. Bitwise & và |
B. Một ngôi và hai ngôi
C. Luận lý AND
D. Không câu trả lời nào cả
Các toán tử một ngôi số học là __ và __.
A. ++ và --
B. % và ^
C. ^ và $
D. Không câu trả lời nào cả
Bài tập tự làm
 Chọn tương ứng cho cột A và B:
Cột A
Cột B
8
10.34
ABC
abc
23
12112134.86868686886
_A1
$abc
‘A’
Tên định danh sai
Hằng số nguyên
Hằng ký tự
Double
Số chấm động
Tên định danh đúng
Hướng dẫn : Nhiều mục trên cột A có thể tương ứng tới một mục đơn tại cột B.
Tính giá trị của các biến sau mỗi câu lệnh dưới đây:
int a = 4^4
int a = 23.34
a = 10
b = a + a++
a = -5
b = -a

File đính kèm:

  • docLập trình C Aptech - Bài 2 Biến và kiểu dữ liệu.doc
Tài liệu liên quan