Bài giảng Lập trình căn bản - Phần 1, Chương 2: Các thành phần cơ bản của ngôn ngữ C

Nội dung chương này

Bộ chữ viết trong C

Các từ khóa

Cặp dấu ghi chú thích

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

Tên và hằng

Biến và biểu thức

Cấu trúc của một chương trình C

 

ppt 46 trang phuongnguyen 3620
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Lập trình căn bản - Phần 1, Chương 2: Các thành phần cơ bản của ngôn ngữ C", để tải tài liệu gốc về máy hãy click vào nút Download ở trên

Tóm tắt nội dung tài liệu: Bài giảng Lập trình căn bản - Phần 1, Chương 2: Các thành phần cơ bản của ngôn ngữ C

Bài giảng Lập trình căn bản - Phần 1, Chương 2: Các thành phần cơ bản của ngôn ngữ C
1 
LẬP TRÌNH CĂN BẢN 
Phần 2 - Chương 2 
CÁC THÀNH PHẦN CƠ BẢN CỦA NGÔN NGỮ C 
N.C. Danh 
2 
Nội dung chương này 
Bộ chữ viết trong C 
Các từ khóa 
Cặp dấu ghi chú thích 
Các kiểu dữ liệu sơ cấp chuẩn 
Tên và hằng 
Biến và biểu thức 
Cấu trúc của một chương trình C 
3 
Bộ chữ viết trong C 
Bộ chữ viết trong ngôn ngữ C bao gồm các ký tự sau: 
26 chữ cái latinh lớn A,B,C...Z 
26 chữ cái latinh nhỏ 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. 
Phân biệt chữ in hoa và in thường 
4 
Các từ khóa trong C 
Từ khóa là các từ dành riêng của C. 
Ta không được dùng từ khóa để đặt cho các tên của riêng mình. 
5 
Cặp dấu chú thích (comment) 
Khi biên dịch các phần chú thích bị bỏ qua 
Dùng /* và */: chú thích dài nhiều dòng 
Dùng //: chú thích chỉ 1 dòng 
#include 
#include 
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; 
} 
6 
Các kiểu dữ liệu sơ cấp chuẩn trong C 
Kiểu số nguyên (integer) 
Kiểu số thực (real) 
7 
Kiểu số nguyên 
Được dùng để lưu các giá trị nguyên hay còn gọi là kiểu đếm được. 
Kiểu số nguyên 1 byte (8 bits) 
Kiểu số nguyên 2 bytes (16 bits) 
Kiểu số nguyên 4 byte (32 bits) 
8 
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(){ 
	 .} 
9 
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) 
10 
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. 
11 
Chú ý khi đặt tên 
12 
Tên do người lập trình tự đặt 
Ví dụ: 
Tên đặt hợp lệ: Chieu_dai, Chieu_Rong, Chu_Vi 
Tên không hợp lệ: Do Dai, 12A2 
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. 
13 
Hằng (Constant) 
Là đại lượng không đổi trong suốt quá trình thực thi chương trình 
	=> không thể gán lạI giá trị cho hằng 
Hằng có thể là: 
1 con số 
1 ký tự 
1 chuỗi ký tự 
14 
Hằng số thực 
Giá trị kiểu: 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*10 4 ) 
15 
Hằng số nguyên (1) 
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 
Số bát phân : 0d n d n-1 d n-2 d 1 d 0 ( d i có giá trị từ 0..7) 
	=> giá trị: 
Ví dụ: 
	020=2*8 1 + 0*8 0 = (16) 10 
16 
Hằng số nguyên (2) 
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 
Số thập lục phân : 0xd n d n-1 d n-2 d 1 d 0 
	=> Giá trị thập phân= 
Ví dụ: 
	0x345=3*16 2 + 4*16 1 + 5*16 0 = (837) 10 
	0x2A9= 2*16 2 + 10*16 1 + 9*16 0 = (681) 10 
17 
Hằng số nguyên (3) 
Ví dụ: Kết quả của chương trình sau là gi? 
18 
Hằng số nguyên (4) 
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 
19 
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 . 
Hằ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 
20 
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”” 
21 
Biến và Biểu thức (variable and expression) 
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. 
Cú pháp khai báo biến: 
	 Danh sách các tên biến cách nhau bởi dấu phẩy ; 
22 
Khởi tạo giá trị cho biến lúc khai báo 
Ví dụ: 
Cách viết giá trị cho biết luôn kiểu của nó: 
Chú ý : 8864L có kiểu long , còn 8864 có kiểu int 
23 
Vị trí khai báo biến (1) 
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) 
24 
Vị trí khai báo biến (2) 
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ộ). 
25 
Biểu thức (1) 
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 
Toán tử ? 
Toán tử con trỏ & và * 
Toán tử dấu phẩy 
26 
Các toán tử số học (1) 
27 
Các toán tử số học (2) 
 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 
 Còn: 
	x = 10; 
	y = x++; //y = 10, x=11 
28 
Các toán tử số học (3) 
Đâu là sự khác nhau? 
	 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 
Biểu thức Boolean (boolean expression) 
Chú ý! Không có kiểu Boolean rõ ràng trong C (điều này đã được giới thiệu ở C99). 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 ngược lại 
false 	Giá trị 0 
true 	Bất kỳ giá trị nào ngoại trừ 0 
30 
Các toán tử quan hệ và các toán tử Logic (1) 
Các phép so sánh sau tạo ra các biểu thức logic có giá trị kiểu Boolean 
31 
Các toán tử quan hệ và các toán tử Logic (2) 
Ví dụ: 
Các biểu thức logic trả về 
	0 nếu false(sai) 
	1 nếu true(đúng) 
32 
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 
Thứ tự ưu tiên 
Ví dụ: 10>5&&!(10 đúng (1) 
33 
Các toán tử Bitwise(cho lop nghi hoc roi) 
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 . 
34 
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 
35 
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 m đị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 
36 
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. 
37 
Tổng kết về độ ưu tiên 
Tổng kết về độ ưu tiên 
38 
Phép gán được viết gọn lại 
	 x= x y; 
có thể được viết gọn lại (short form): 
39 
Các tập tin thư viện thông dụng 
stdio.h : Định nghĩa các hàm vào/ra chuẩn (standard input/output):printf(), scanf(), getc(), putc(), gets(), puts(), fflush(), fopen(), fclose(), fread(), fwrite(), getchar(), putchar(), getw(), putw() 
conio.h : Định nghĩa các hàm vào ra trong chế độ DOS: clrscr(), getch(), getche(), getpass(), cgets(), cputs(), putch(), clreol(), 
math.h : Định nghĩa các hàm tính toán: abs(), sqrt(), log(). log10(), sin(), cos(), tan(), acos(), asin(), atan(), pow(), exp(), 
alloc.h : Định nghĩa các hàm liên quan đến việc quản lý bộ nhớ: calloc(), realloc(), malloc(), free(), farmalloc(), farcalloc(), farfree(),  
io.h : Định nghĩa các hàm vào ra cấp thấp: open(), _open(), 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: initgraph(), line(), circle(), putpixel(), getpixel(), setcolor(),  
40 
Cấu trúc của 1 chương trình C (1) 
Cấu trúc một chương trình C 
Tiền xử lý và biên dịch 
Prototype 
Các tập tin thư viện thông dụng 
41 
Cấu trúc của 1 chương trình C (2) 
Chương trình chính 
Cài đặt các hàm 
Các chỉ thị tiền xử lý 
Định nghĩa kiểu mới 
Prototype 
Khai báo biến ngoài 
42 
Tiền xử lý và biên dịch (preprocess and compile) 
Các chỉ thị định hướng (directive): 
#include, #define 
Có thể chứa các lệnh phức tạp như if-else. 
Bộ tiền xử lý (preprocessor) sẽ thông dịch các directive và xóa bỏ nó trước khi cung cấp cho trình biên dịch C. 
43 
Chia chương trình ra các module (1) 
1 chương trình phức tạp có thể được chia ra vài module 
44 
Chia chương trình ra các module (2) 
Vấn đề: testmodule.c phải biết các prototype của foor và bar . 
Giải pháp 1 (tệ): 
Chèn tay các prototype vào các file .c có dùng nó. 
Bất lợi: Mỗi khi prototype bị 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ưu các prototype vào 1 file riêng biệt mymodule.h (h: header). 
Dùng #include mymodule.h ở đầu các chương trình có dùng nó. 
45 
#include 
Với #include, bộ tiền xử lý sẽ thêm và thay thế token #include filename bằng nội dung của filename . 
Các header file sẽ được tìm ở đâu? 
#include : tìm file.h trong thư mục đã được xác định trong INCLUDE DIRECTORIES . Hoặc trong /usr/include (linux) 
#include “C:\\TC\\file.h ”: tìm file.h trong đường dẫn 
46 
Hết chương 

File đính kèm:

  • pptbai_giang_lap_trinh_can_ban_phan_1_chuong_2_cac_thanh_phan_c.ppt