Các thành phần cơ bản
Bộ chữ viết trong C
- 26 chữ cái latinh hoa A,B,C...Z
- 26 chữ cái latinh thường a,b,c ...z.
- 10 chữ số thập phân 0,1,2...9.
- Các ký hiệu toán học: +, -, *, /, =, <, >, (, )
- Các ký hiệu đặc biệt: :. , ; " ' _ @ # $ ! ^ [ ] { } ...
- Dấu cách hay khoảng trống, xuống hàng (\n) và tab (\t)
Các từ khoá trong C
Cú pháp
Cấu trúc chương trình C
Một chương trình C khi soạn thảo được chia thành các thành
phần chính sau: Các chỉ thị tiền xử lý, Định nghĩa mới, Prototype, Khai báo
biến ngoài, Chương trình chính, Cài đặt các hàm.
Các kiểu dữ liệu cơ sở
Được dùng để lưu các giá trị nguyên
hay còn gọi là kiểu đếm được.
Kiểu số thực
Được dùng để lưu các số thực hay các số có dấu
chấm thập phân
Kiểu void
Mang ý nghĩa là kiểu rỗng không chứa giá trị gì cả
Ví dụ: void
main(){
….}
Kích thước của các kiểu dùng sizeof
Kích thước 1 kiểu có thể được xác định lúc chạy chương trình
(runtime), dùng sizeof:
Ví dụ:
sizeof(double) =>8(byte)
sizeof(long
double)=>10(byte)
Tên và hằng trong C
Tên (identifier): Được dùng để đặt cho chương
trình, hằng, kiểu, biến, chương trình con, ... Có 2 loại:
§
Tên chuẩn: là tên do C đặt sẵn như tên kiểu:
int, char, float,…; tên hàm: sin, cos...
§
Tên do người lập trình tự đặt.
Tên đặt hợp lệ: Chieu_dai, Chieu_Rong, Chu_Vi
Tên không hợp lệ: Do Dai, 1D101
Phải tuân thủ quy tắc:
Ø Sử
dụng bộ chữ cái, chữ số và dấu gạch dưới (_)
Ø Bắt
đầu bằng một chữ cái hoặc dấu gạch dưới.
Ø Không
có khoảng trống ở giữa tên.
Ø Không
được trùng với từ khóa.
Ø Độ
dài tối đa của tên là 32 ký tự, tuy nhiên cần đặt sao cho rõ ràng, dễ nhận biết
và dễ nhớ.
Ø Không
cấm việc đặt tên trùng với tên chuẩn nhưng khi đó ý nghĩa của tên chuẩn không
còn giá trị nữa.
Hằng (Constant): Là đại lượng không đổi
trong suốt quá trình thực thi chương trình
Hằng có thể là: 1 con số, 1 ký tự, 1 chuỗi ký tự.
Hằng số thực: float,
double, long double, 2 cách thể hiện
Cách 1: viết thông thường
§
Ví dụ: 123.34 -223.333 3.00
-56.0
Cách 2: viết theo số mũ hay số khoa học
§
Một số thực được tách làm 2 phần (phân cách bởi
e/E)
Phần giá trị: như cách 1
Phần mũ: là một số nguyên
§
Ví dụ:
1234.56e-3
= 1.23456 (là số 1234.56*10-3)
-123.45E4
= -1234500 ( là -123.45*104)
Hằng số nguyên: Hằng số nguyên 2 byte (int) hệ thập phân.
Sử dụng 10 ký số 0..9. Ví dụ:
123 (một trăm hai mươi ba)
-242 (trừ hai trăm bốn mươi hai)
Hằng số nguyên 2 byte (int)
hệ bát phân Sử dụng 8 ký số 0..7. Cách biểu diễn: 0<các ký số từ 0 đến
7>.Số bát phân : 0dndn-1dn-2…d1d0 ( di có giá trị từ 0..7) => giá
trị. Ví dụ: 020=2*81
+ 0*80 =(16)10
Hằng số nguyên 2 byte (int) hệ thập lục phân. Là kiểu số nguyên dùng:
§
10 ký số 0..9 và
§
6 ký tự A, B, C, D, E ,F
Cách biểu diễn:
0x<các
ký số từ 0 đến 9 và 6 ký tự từ A đến F>
Số thập lục phân : 0xdndn-1dn-2…d1d0 =>
Giá trị thập phân. Ví dụ:
0x345=3*162
+ 4*161 + 5*160 = (837)10
0x2A9= 2*162
+ 10*161 + 9*160= (681)10
Hằng số nguyên 4 byte (long). Được biểu diễn
như số int trong hệ thập phân nhưng kèm theo ký tự l hoặc L.
Ví dụ:
45345L hay
45345l hay 45345
Hằng ký tự (char)
Ø Ví
dụ: ‘a’, ‘A’, ‘0’, ‘9’
Ø Là
1 ký tự được viết trong cặp dấu nháy đơn (‘).
Ø Mỗi
một ký tự tương ứng với 1 giá trị trong bảng mã ASCII. ằng ký tự cũng được xem
như trị số nguyên.
Ø Chúng
ta có thể thực hiện các phép toán số học trên 2 ký tự (dùng giá trị ASCII của chúng)
Ø ASCII
= American Standard Code for Information Interchange
Hằng chuỗi ký tự :
Ví dụ: “Ngon ngu lap trinh C” Là 1 chuỗi hay
1 xâu ký tự được đặt trong cặp dấu nháy kép (“).
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).
§
Để 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. Ví dụ:
Viết “I\’m a student” cho “I’m a
student”
Viết “Day la ky tu \“dac biet\”” cho “Day la ky tu “dac biet””
Câu lệnh – Biểu thức
Định nghĩa Biến: Biến
dùng để chứa dữ liệu trong quá trình thực hiện chương trình. Giá trị của
biến có thể bị thay đổi. Về bản chất, biến là một vùng nhớ được đặt tên.
Cú pháp khai báo biến:
<Kiểu dữ liệu> Danh sách các tên biến
cách nhau bởi dấu phẩy;
Ví dụ:
Khởi tạo giá trị cho biến lúc khai báo
Cách viết giá trị cho biết luôn kiểu.
Chú ý: 8864L có kiểu long, còn 8864 có kiểu int
Vị trí khai báo 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. Nó ảnh hưởng đến hàm, chương
trình hay khối lệnh chứa nó (biến cục bộ).
Biểu thức: 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)
Ví dụ: (-b + sqrt(Delta))/(2*a)
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, Toán tử?,
Toán tử con trỏ & và *, Toán tử dấu phẩy
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; //y = 11, x=11
Và
x = 10;
y = x++; //y = 10, x=11
Sự khác nhau giữa toán tử tăng/giảm đặt trước toán hạng và
sau toán hạng
·
x++ trả về giá trị hiện hành của x và sau đó
tăng x
·
++x tăng x trước và sau đó trả về giá trị mới của
x
Biểu thức Boolean (boolean expression)
Chú ý! Không có kiểu Boolean 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:
false Giá trị 0 true Bất kỳ giá trị nào ngoại trừ 0 |
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 ngược lại
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
Các biểu thức
logic trả về
0 nếu false(sai)
1 nếu true(đúng)
Các toán tử Bitwise
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.
Trong lập trình máy tính kỹ
thuật số. Phép toán bitwise hoạt động trên một hoặc nhiều số nhị phân
(binary numerals), hoặc các chuỗi giống số nhị phân. Đây là một phép toán đơn
giản và nhanh, được hỗ trợ trực tiếp bởi bộ xử lý (processor). Thông thường các
phép tính bitwise nhanh hơn rất nhiều so với phép nhân, phép chia, đôi
khi nhanh hơn đáng kể so với phép cộng. Các phép tính bitwise sử dụng ít
năng lượng hơn bởi nó ít sử dụng tài nguyên.
Toán tử ?
Toán tử ? thực
hiện như lệnh if-else. Cú pháp: E1 ? E2 : E3.
Ví dụ : X = (10 > 9) ? 100 : 200; =>X=100
X = (10 >15 )? 100 : 200; =>X=200
Toán tử con trỏ
& và *
Toán tử * trả về nội
dung của ô nhớ mà một con trỏ đang chỉ vào.
Ví dụ 1:
int *p; //con
tro so nguyen int count=5, x; p = &count;// =>Đặt
vào biến m địa chỉ bộ nhớ của biến count |
Ví dụ 2: x = *p; // x=5
Toán tử dấu phẩy
Được sử dụng để kết
hợp các biểu thức 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.
Ví dụ 1 :
x = (y=3,y+1);
Trước hết gán 3 cho y
rồi gán 4 cho x.
Ví dụ 2, kết quả in ra màn hình là 2.
#include <stdio.h> #include <stdlib.h> void main(int argc, char
*argv[]) { int a; a=(1, 2),3; printf("%d", a); return 0; } |