Xem mẫu
- Bộ chữ viết trong C
Bộ chữ viết trong C bao gồm các ký tự sau:
l
LẬP TRÌNH CĂN BẢN 26 chữ cái latinh lớn A,B,C...Z
l
26 chữ cái latinh nhỏ a,b,c ...z.
l
10 chữ số thập phân 0,1,2...9.
l
CÁC THÀNH PHẦN CƠ BẢN CỦA Các ký hiệu toán học: +, -, *, /, =, , ( , )
l
NGÔN NGỮ C Các ký hiệu đặc biệt: . , : ; " ' _ @ # $ ! ^ [ ] { } ...
l
Dấu cách hay khoảng trống.
l
Phân biệt chữ HOA và chữ thường
ườ
l
3
1
Nội dung Các từ khóa trong C
Từ khóa là các từ dành riêng của C: hàm,
Bộ chữ viết trong C l
l
lệnh, thư viện,…
l Các từ khóa
Không được dùng từ khóa để đặt tên trong
l
l Cặp dấu chú thích chương trình.
l Các kiểu dữ liệu sơ cấp chuẩn
l Tên và hằng
l Biến và biểu thức
l Cấu trúc của một chương trình C
2 4
- Cặp dấu chú thích (comment) Kiểu số nguyên
#include
Được dùng để lưu các giá trị nguyên hay còn gọi là
l
#include
kiểu đếm được.
int main (){
char ten[50]; /* khai bao bien ten
kieu char 50 ky tu */
printf(“Xin cho biet ten cua ban !”);
scanf(“%s”,ten); /*Doc vao 1 chuoi la ten ban*/
printf(“Xin chao ban %s\n ”,ten);
//Dung chuong trinh, cho go phim
getch();
return 0;
}
Khi biên dịch các phần chú thích bị bỏ qua
l
l Dùng /* và */: chú thích dài nhiều dòng
l Dùng //: chú thích chỉ 1 dòng
5 7
Các kiểu dữ liệu sơ cấp chuẩn Kiểu số thực
Được dùng để lưu các số thực hay các số có dấu
Kiểu số nguyên (integer) l
l
chấm thập phân
1 byte, 2 byte và 4 byte
l
l Có dấu hay không dấu
Kiểu số thực (real)
l
Dấu chấm động
l
l 4 byte, 8 byte và 10 byte
Kiểu void
l
Kiểu rỗng: void
l Có ý nghĩa là kiểu rỗng không chứa giá trị gì
l
Ví dụ: void main(){
l
….}
6 8
- Kiểu enum (2)
Hàm sizeof()
Xác định kích thước 1 kiểu dữ liệu khi
l
chạy chương trình (runtime)
l Cú pháp: sizeof(tên kiểu dữ liệu)
l Kết quả trả về: số byte kích thước
Ví dụ:
l
sizeof(int)
sizeof(long double)
9 11
Kiểu enum (1) Kiểu enum (3)
enum gần gi ống với tiền xử lý #define.
l
l Cho phép định nghĩa 1 danh sách các bí danh
(aliase) để trình bày các số nguyên.
l Ví dụ:
#define MON 1
#define TUE 2
#define WED 3
có thể dùng enum:
enum week{ Mon=1, Tue, Wed, Thu, Fri Sat, Sun} days;
Ưu điểm của enum so với #define là nó có phạm
l
vi, nghĩa là 1 bi ến chỉ có tác dụng trong khối nó
được khai báo.
10 12
- Tên và hằng trong C Tên do người lập trình tự đặt
Ví dụ:
l
l Tên (identifier) Tên đặt hợp lệ: Chieu_dai, Chieu_Rong, Chu_Vi
l
Được dùng để đặt cho chương trình, hằng, Tên không hợp lệ: Do Dai, 12A2
l l
kiểu, biến, chương trình con, ...
Phải tuân thủ quy tắc:
l
l Có 2 loại: Sử dụng bộ chữ cái, chữ số và dấu gạch dưới (_)
l
Tên chuẩn (từ khóa): là tên do C đặt sẵn như Bắt đầu bằng một chữ cái hoặc dấu gạch dưới.
l l
Không có khoảng trống ở giữa tên.
tên kiểu: int, char, float,…; tên hàm: sin, cos... l
Không được trùng với từ khóa.
l
l Tên do ng ười lậ p trình tự đặt.
Độ dài tối đa của tên là 32 ký tự, tuy nhiên cần đặt sao
l
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
l
đó ý ngh ĩa của tên chuẩn không còn giá trị nữa.
13 15
Chú ý khi đặt tên Hằng (Constant)
Là đại lượng không đổi trong suốt quá trình thực
Phân biệt HOA và thường l
l
thi chương trình
=> không thể gán lạI giá trị cho hằng
Hằng có thể là:
l
1 con số, 1 ký tự
l
l 1 chuỗi ký tự
14 16
- Hằng số thực Hằng số nguyên (2)
Hằng số nguyên 2 byte (int) hệ thập lục
Giá trị kiểu: float, double, long double l
l
phân
2 cách thể hiện
l
Là kiểu số nguyên dùng:
l
l Cách 1: 123.34 -223.333 3.00 -56.0 10 ký số 0..9 và
l
6 ký tự A, B, C, D, E ,F
l
Cách 2: viết theo số mũ hay số khoa học
l
Cách biểu diễn:
l
1234.56e-3 = 1.23456 (là số 1234.56*10-3) 0 x
-123.45E4 = -1234500 ( là -123.45*104)
Số thập lục phân :
l
0xdndn-1dn-2…d1d0
17 19
Hằng số nguyên (1) Hằng số nguyên (3)
Hằng số nguyên 2 byte (int) hệ thập phân Ví dụ: Kết quả của chương trình sau là gi?
l l
Sử dụng 10 ký số 0..9
l
Hằng số nguyên 2 byte (int) hệ bát phân
l
Sử dụng 8 ký số 0..7
l
Cách biểu diễn: 0
l
18 20
- Hằng số nguyên (4) Hằng chuỗi ký tự
Ví dụ: “Ngon ngu lap trinh C”
l
Hằng số nguyên 4 byte (long)
l
l Là 1 chuỗi hay 1 xâu ký tự được đặt trong cặp dấu
Được biểu diễn như số int trong hệ thập
l nháy kép (“).
phân nhưng kèm theo ký tự l hoặc L. Chú ý:
l “” : chuỗi rỗng - không có nội dung
Ví dụ:
l l 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).
45345L hay 45345l hay 45345 l Để 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.
dụ:
l Ví
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””
21 23
Hằng ký tự (char) Biến và Biểu thức (variable and expression)
Ví dụ: ‘a’, ‘A’, ‘0’, ‘9’
l
Là 1 ký tự được viết trong
l
cặp dấu nháy đơn (‘).
l Mỗi một ký tự tương ứ ng với
1 giá trị trong bảng mã
Biến dùng để chứa dữ liệu trong quá trình thực hiện
l
ASCII.
chương trình.
l Hằng ký tự cũng được xem
như trị số nguyên. l Giá trị của biến có thể bị thay đổi.
l Chúng ta có thể thực hiện l Cú pháp khai báo biến:
các phép toán số học trên 2
bở i dấu
Danh sách các tên biến cách nhau
ký tự (dùng giá trị ASCII của
phẩy;
chúng)
ASCII = American Standard Code for Information Interchange
22 24
- Vị trí khai báo biến (2)
Khởi tạo giá trị cho biến lúc khai báo
Ví dụ: Biến trong
l l
Được đặt bên trong
l
hàm, chương trình
Cách vi ết giá trị cho biết luôn ki ểu của nó:
l
chính hay một khối
lệnh
Ảnh hưởng đến hàm,
l
chương trình hay
khối lệnh chứa nó
(biến cục bộ).
Chú ý: 8864L có kiểu long, còn 8864 có kiểu int
l
25 27
Vị trí khai báo biến (1) Biểu thức (1)
Ví dụ:
l
Biến ngoài
l (-b + sqrt(Delta))/(2*a)
Được đặt bên Biểu thức là một sự kết hợp giữa
l l
ngoài tất cả các Các toán tử (operator) và
l
Các toán hạng (operand)
l
hàm
Các loại toán tử trong C
l
l Ảnh hưởng đến
Toán tử số học
l
toàn bộ chương Toán tử quan hệ và logic
l
trình (biến toàn Toán tử Bitwise
l
cục) Toán tử ?
l
Toán tử con trỏ & và *
l
Toán tử dấu ph ẩy
l
26 28
- Các toán tử số học (1) Các toán tử số học (3)
Đâu là sự khác nhau?
l
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
29 31
Các toán tử số học (2) Biểu thức Boolean (boolean expression)
Chú ý! Không có kiểu Boolean rõ ràng trong C.
l
Thay vào đó C dùng các giá trị nguyên để tượng
trưng cho giá trị Boolean, với qui ước:
Giá trị 0
false
• Tăng và giảm (++ & --) Bất kỳ giá trị nào ngoại trừ 0
true
++x hay x++ giống x = x + 1
l Chú ý! C dùng “=” cho phép gán, và dùng “==“
--x hay x-- giống x = x – 1
cho phép so sánh. Nó trả về 1 nếu bằng và 0 nếu
• Còn:
• Tuy nhiên:
ngược lại
x = 10;
x = 10;
y = x++; //y = 10, x=11
y = ++x; //y = 11, x=11
30 32
- Các toán tử quan hệ và các toán tử Logic (1) Các toán tử quan hệ và các toán tử Logic (3)
Bảng chân trị cho các toán tử Logic
l
l Các phép so
sánh sau tạo ra
các biểu thức
logic có giá trị
kiểu Boolean
Thứ tự ưu tiên
l
Ví dụ: 10>5&&!(10
- Toán tử ? Toán tử dấu phẩy
Toán tử ? thực hiện như lệnh if-else. Ví dụ:
l
l
x = (y=3,y+1);
l
Cú pháp: E1 ? E2 : E3
l
Trước hết gán 3 cho y rồi gán 4 cho x.
l
Ví dụ:
l X = (10 > 9) ? 100 : 200; Được sử dụng để kết hợp các biểu thức lại với
l
nhau.
=>X=100
Bên trái của dấu (,) luôn được xem là kiểu
l
void.
X = (10 >15 )? 100 : 200;
Biểu thức bên phải trở thành giá trị của tổng
l
=>X=200
các biểu thức được phân cách bởi dấu phẩy.
37 39
Toán tử con trỏ & và * Tổng kết về độ ưu tiên
Ví dụ:
l
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
Toán tử * trả về nội dung của ô nhớ mà một
l
con trỏ đang chỉ vào
Ví dụ:
l
x = *p; // x=5
38 40
- Phép gán được viết gọn lại Cấu trúc của 1 chương trình C (1)
Cấu trúc một chương trình C
l
x= x y;
l Tiền xử lý và biên dịch
có thể được viết gọn lại (short form):
l Prototype
l Các tập tin thư viện thông dụng
41 43
Các tập tin thư viện thông dụng Cấu trúc của 1 chương trình C (2)
stdio.h: Định nghĩa các hàm vào/ra chuẩn (standard
l
Các chỉ
input/output):printf(), scanf(), getc(), putc(), gets(), puts(), fflush(),
thị tiền
fopen(), fclose(), fread(), fwrite(), getchar(), putchar(), getw(),
Chương
xử lý
putw()…
trình
conio.h: Định nghĩa các hàm vào ra trong chế độ DOS: clrscr(),
l chính
getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol(),… Định nghĩa
math.h: Định nghĩa các hàm tính toán: abs(), sqrt(), log(). log10(), kiểu mới
l
sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(),…
Prototype
alloc.h: Định nghĩa các hàm liên quan đến việc quản lý bộ nhớ:
l
calloc(), realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(),
Khai báo
… Cài đặt
biến
io.h: Định nghĩa các hàm vào ra cấp thấp: open(), _open(),
l các
ngoài
hàm
read(), _read(), close(), _close(), creat(), _creat(), creatnew(),
eof(), filelength(), lock(),…
graphics.h: Định nghĩa các hàm liên quan đến đồ họa:
l
initgraph(), line(), circle(), putpixel(), getpixel(), setcolor(), …
42 44
- Chia chương trình ra các module
Tiền xử lý và biên dịch (preprocess and
compile) (1)
1 chương trình phức tạp có thể được chia ra vài
l
module
Các chỉ thị định hướng (directive):
l
#include…, #define…
l
Có thể chứa các lệnh phức tạp như if-else.
l
Bộ tiền xử lý (preprocessor) sẽ thông dịch
l
các directive và xóa bỏ nó trước khi cung cấp
cho trình biên dịch C.
45 47
Chia chương trình ra các module
#define
(2)
Vấn đề: testmodule.c phải
#define khai báo một l
l
biết các prototype của foor
tên macro (macro
và bar.
symbol).
Giải pháp 1 (tệ):
l
Sau đó, mỗi lần tên
l
Chèn tay các prototype vào
l
macro này xuất hiện, các file .c có dùng nó.
nó sẽ được thay thế Bất lợi: Mỗi khi prototype bị
l
bởi giá trị của nó. thay đổi => phải chỉnh lại
prototype trong tất cả các file
.c dùng nó.
Giải pháp 2 (tốt):
l
Lưu các prototype vào 1 file
l
riêng biệt mymodule.h (h:
46 48
header).
- #include
Với #include, bộ tiền xử lý sẽ thêm và thay thế
l
token #include filename bằng nội dung của
filename.
Hết chương
Các header file sẽ được tìm ở đâu?
l
#include : tìm file.h trong thư mục đã được
l
xác định trong INCLUDE DIRECTORIES. Hoặc
trong /usr/include (linux)
49 51
#include “C:\\TC\\file.h”: tìm file.h trong đường dẫn
l
Header file
Các header file có thể
l
chứa:
Prototype cho các hàm
l
(function)
l Định ngh ĩa kiểu (structs,
unions, enums, typedefs)
l (Định nghĩa các class trong
C++)
l #define macro
l #pragma cho compiler
l Các biến toàn cụ c
l Cài đặt trực tiếp các hàm 50
nguon tai.lieu . vn