Bài giảng Ngôn ngữ lập trình C - Một số khái niệm cơ bản
Mục đích
Làm quen với các kiểu dữ liệu cơ sở
Biết cách khai báo biến, hằng
Làm quen với các toán tử
toán tử gán
toán tửđiều kiện
Biết cách sử dụng hàm vào/ra
NGÔN NGỮ LẬP TRÌNH C Một số khái niệm cơ bản Ninh Thị Thanh Tâm Khoa CNTT – HV Quản lý Giáo dục Mục đích Làm quen với các kiểu dữ liệu cơ sở Biết cách khai báo biến, hằng Làm quen với các toán tử toán tử gán toán tử điều kiện Biết cách sử dụng hàm vào/ra Nội dung Một số khái niệm cơ bản Bộ kí tự Tên Từ khóa Hằng Biến Các kiểu dữ liệu cơ sở Biểu thức Các phép toán Hàm vào/ra printf() scanf() Bộ kí tự 26 chữ cái hoa, 26 chữ cái thường 10 chữ số thập phân Kí hiệu toán học: + - * / = Dấu cách: . ; , : space Dấu ngoặc ( ) [ ] { } Kí hiệu đặc biệt: _ ? % # & ^ \ !... Tên Là một dãy các kí tự (chữ cái, chữ số, dấu gạch dưới) Bắt đầu bằng chữ cái hoặc dấu gạch dưới Phân biệt chữ hoa và chữ thường Độ dài mặc định 32 Ví dụ: ab, _hoa, a_1… Từ khóa Là tên được định nghĩa trước với ý nghĩa xác định, không thể thay đổi Không được dùng vào việc khác Không được đặt tên mới trùng với từ khóa Ví dụ: char, const, do while, struct… Các kiểu dữ liệu cơ sở (tiếp) Số float có độ chính xác là 6 chữ số sau dấu chấm thập phân Số double có độ chính xác là 15 chữ số sau dấu chấm thập phân Một số tiền tố đi kèm kiểu dữ liệu cơ sở short long signed (ngầm định với char, int) unsigned Các kiểu dữ liệu cơ sở 8 byte±1.7E-308 ÷ ±1.7E+308Số thực dấu phẩy động, độ chính xác đơn double 4 byte±3.4E-38 ÷ ±3.4E+38Số thực dấu phẩy động, độ chính xác đơn float 2 byte-32768 ÷ 32767Số nguyênint 1 byte-128 ÷ 127Kí tựchar Kích thướcPhạm viÝ nghĩaTên Hằng Là những giá trị có đại lượng không đổi khi thực hiện chương trình (CT) Định nghĩa hằng tượng trưng Toán tử #define Cú pháp: #define CT, CT dịch thay thế mọi xuất hiện của bằng Định nghĩa biến hằng Từ khóa: const Cú pháp: const =; CT dịch cấp phát vùng nhớ tương ứng với kiểu của hằng và gán giá trị Hằng (tiếp) Ví dụ #define MAX 80 #define newline ‘\n’ cont int MAX = 100; const char newline = ‘\n’; Biến Cú pháp khai báo biến: ; Khai báo biến sau kí hiệu bắt đầu khối lệnh hay thân hàm Khởi đầu giá trị cho biến: Vừa khai báo, vừa gán giá trị Biến (tiếp) Ví dụ: int x, y, z; float a, b, c; char ch1, ch2; int i = 1, j = 5, k; char c1 =‘A’, c2 = ‘\n’; Biểu thức Định nghĩa: là kết quả của việc ghép nối các toán tử và các toán hạng Sử dụng: Vế phải của lệnh gán Làm tham số thực của các hàm Làm chỉ số Trong các câu lệnh if, for, while, do while Biểu thức trong C: Biểu thức gán Biểu thức điều kiện Phép toán số học Chia lấy số dư% Chia (thực, nguyên)/ Nhân (thực, nguyên)* Trừ (thực, nguyên)- Cộng 2 số (thực, nguyên)+ Đổi dấu (thực, nguyên)- Ý nghĩaToán tử Phép toán quan hệ So sánh không bằng nhau!= So sánh bằng nhau== So sánh nhỏ hơn hoặc bằng<= So sánh nhỏ hơn< So sánh lớn hơn hoặc bằng>= So sánh lớn hơn> Ý nghĩaToán tử Phép toán lô-gic !12 có giá trị 0 !0 có giá trị 1 Phủ định! n =100 Với n=5, BT = 0 Hoặc|| 36 có giá trị 1 Và&& Ví dụÝ nghĩaLiên từ Phép toán thao tác trên bit Cho phép xử lý đến từng bit của một số nguyên Không dùng cho float hoặc double Bù 1~ Dịch phải>> Dịch trái<< HOẶC có loại trừ^ HOẶC nhị phân| VÀ nhị phân& Ý nghĩaPhép toán Phép toán thao tác trên bit (tiếp) a >> n = a/2n0 ^ 0 = 00 | 0 = 00 & 0 = 0 a << n = a*2n0 ^ 1 = 10 | 1 = 10 & 1 = 0 ~ 0 = 11 ^ 0 = 11 | 0 = 11 & 0 = 0 ~ 1 = 01 ^ 1 = 01 | 1 = 11 & 1 = 1 C phân biệt Phép dịch chuyển số học trên giá trị nguyên, bảo toàn bit dấu Phép dịch chuyển lô-gic, thực hiện trên giá trị unsigned. Ví dụ 0x5e49=~0xa1b6 0xa1=8>>0xa1b6 0xb600=8<<0xa1b6 0x5e49=0xffff^0xa1b6 0xa1ff=0xff|0xa1b6 0xb6=0xff&0xa1b6 Biểu thức gán = Nếu thêm dấu ; ta thu được câu lệnh gán Tự dịch bit tráii <<= ki = i <<k Tự dịch bit phảii >>= ki = i >> k Tự bùi ^= ki = i ^ k Tự hoặci |= ki = i | k Tự vài &= ki = i & k Tự chia dưi %= ki = i % k Tự chiai /= ki = i / k Tự nhâni *= ki = i * k Tự trừi -= ki = i – k Tự cộngi += ki = i + k Ý nghĩaDạng thu gọnDạng thông thường Biểu thức điều kiện BT1? BT2 : BT3 BT1, BT2, BT3: biểu thức BT1 != 0, biểu thức điều kiện nhận giá trị cho bởi BT2 BT1 = 0, biểu thức điều kiện nhận giá trị cho bởi BT3 Biểu thức điều kiện (tiếp) Ví dụ Câu lệnh xác định giá trị lớn nhất giữa hai số a và b max2= (a>b)? a : b; Câu lệnh xác định giá trị lớn nhất giữa ba số a, b và c max3= (a>b)? (a>c?a:c) : (b>c?b:c); Phép toán tăng giảm một đơn vị n----nGiảm một đơn vị n++++nTăng một đơn vị Dạng hậu tốDạng tiền tốToán tử Khi phép toán nằm trong một biểu thức khác Tiền tố: thay đổi giá trị của biến trước khi sử dụng Hậu tố: giá trị cũ của biến được sử dụng, thay đổi giá trị Ví dụ i = j; j = j - 1; j = j - 1; i = j; i = j; j = j + 1; j = j + 1; i = j; Tương đương i = j--; i = --j; i = j++; i = ++j; Phép toán Lấy địa chỉ biến Toán tử: & Cú pháp: & Không sử dụng toán tử cho hằng, biểu thức Phép toán chuyển đổi kiểu Cú pháp: () tên của kiểu dữ liệu được định nghĩa trước Chú ý: có thể chuyển kiểu tự động Sơ đồ chuyển đổi kiểu charint long float double long double Thứ tự ưu tiên, trật tự kết hợp của các phép toán ←= += -=14 ←?:13 →||12 →&&11 →|10 →^9 →&8 →== !=7 → >=6 →>5 →+ -4 →* /3 ←! ~ ++ --- * &2 →( ) [ ]1 Trật tự kết hợpCác toán tửMức Hàm vào ra Quá trình nhập xuất dữ liệu Xuất Giá trị cần đưa ra→Kênh ra→Khuôn dạng→Thiết bị ra (màn hình) Nhập Thiết bị vào(bàn phím)→Kênh vào→Khuôn dạng→Biến nhập Hàm printf() Cú pháp: printf([,,…]); là xâu điều khiển chứa các định dạng Danh sách [,,…] chứa các giá trị (hằng, biến, biểu thức) Số bằng số định dạng trong Hàm printf() – định dạng Hệ 16 với các chữ A B C D E F int%X Số nguyên hệ 16, không dấu int%x Số nguyên, không dấuint%u Số nguyên hệ 8, không dấu int%o Đối là hệ 10 có dấu (nếu giá trị âm) int%i Đối là 1 số nguyênint%d Ghi chúÁp dụng kiểu DLĐịnh dạng Hàm printf() – định dạng (tiếp) Dấu tĩnh, động phụ thuộc vào loại nào ngắn hơn float, double%g, %G Dạng thập phân, dấu phẩy tĩnh float, double%f, %lf Dạng thập phân, dấu chấm động float, double%e, %E Ghi chúÁp dụng kiểu DLĐịnh dạng Hàm printf() – định dạng (tiếp) Đối số là một xâu kí tựchar*%s Đối số là một kí tựchar%c Ghi chúÁp dụng kiểu DLĐịnh dạng Ví dụ 1 /*printf.c*/ #include void main() { printf("%d\n",-10); printf("%i\n",-10); printf("%u\n",-10); printf("%x\n",-10); printf("%o\n",-10); printf("%X\n",-10); printf("%f\n",-10); printf("%c\n",'A'); printf("%d\n",'A'); printf("%f\n",3.14); printf("%e\n",3.14); printf("%E\n",3.14); printf("%s\n","Khoa Cong nghe Thong tin"); getch(); } Kết quả Ví dụ 2 /*printf2.c*/ #include void main() { printf("So nguyen %4d \nSo thuc %8.2f\n",10, 123.4); printf("Ki tu %c co ma ASCII %4d",'A','A'); getch(); } Kết quả Hàm scanf() Cú pháp: scanf(,{, …}); xâu định dạng đối số lưu trữ kết quả Hàm scanf() – định dạng Địa chỉ của biến kí tự Nhập vào 1 kí tự%c Địa chỉ của một biến nguyên Nhập vào một số nguyên hệ 16 %x Địa chỉ của một biến nguyên Nhập vào một số nguyên hệ 8 %o Địa chỉ của một biến nguyên Nhập vào một số nguyên %d Đối sốÝ nghĩaĐịnh dạng Hàm scanf() – định dạng (tiếp) Địa chỉ của một biến long Nhập vào một số nguyên long %ld Địa chỉ của một biến double Nhập vào một số thực double %lf Địa chỉ của một biến thực Nhập vào một số thực float %f Một xâu kí tựNhập vào 1 xâu kí tự %s Đối sốÝ nghĩaĐịnh dạng Ví dụ 3 /*scanf1.c*/ #include void main() { int i; long l; float f; double d; char c; printf("Nhap gia tri cho cac bien"); scanf("%d%ld%f%lf%c",&i,&l,&f,&d,&c); printf("So int %d\n",i); printf("So long %d\n",l); printf("So float %f\n",f); printf("So double %f\n",d); printf("Ki tu %c\n",c); getch(); } Kết quả Quy tắc sử dụng scanf() Đối với số Các kí tự số, dấu chấm là kí hiệu hợp lệ Dấu trắng, dấu tab, dấu xuống dòng là kí hiệu phân cách Hàm cho rằng mọi kí tự trong stdin đều hợp lệ (không bỏ qua kí tự xuống dòng) Khi đọc xâu, sử dụng dấu phân cách như trong đọc số Sử dụng scanf() riêng biệt cho mỗi lần nhập kí tự Trước scanf() sử dụng chỉ thị fflush(stdin); Ví dụ 4 /*scanf2.c*/ #include void main() { int i; long l; float f; double d; char c; printf("Nhap gia tri cho cac bien"); scanf("%d%ld%f%lf",&i,&l,&f,&d); fflush(stdin); scanf("%c",&c); printf("So int %d\n",i); printf("So long %d\n",l); printf("So float %f\n",f); printf("So double %f\n",d); printf("Ki tu %c\n",c); getch(); } Kết quả Hàm clrscr() và getch() Chức năng clrscr(); – xóa màn hình getch(); – dừng màn hình để xem kết quả Tóm tắt Câu lệnh khai báo có thể Bên ngoài hoặc bên trong các khối lệnh Trước các câu lệnh điều khiển CT Các biến khi khai báo Cách nhau bởi dấu phẩy Có thể khởi tạo giá trị khi khai báo Định nghĩa hằng bằng: Toán tử #define Từ khóa const
File đính kèm:
- Bài giảng Ngôn ngữ lập trình C - Một số khái niệm cơ bản.pdf