Bài giảng Ngôn ngữ lập trình C - Chương 1: Một số khái niệm cơ bản - Ninh Thị Thanh Tâm

pdf 46 trang phuongnguyen 5030
Bạn đang xem 20 trang mẫu của tài liệu "Bài giảng Ngôn ngữ lập trình C - Chương 1: Một số khái niệm cơ bản - Ninh Thị Thanh Tâm", để tải tài liệu gốc về máy bạn click vào nút DOWNLOAD ở trên

Tài liệu đính kèm:

  • pdfbai_giang_ngon_ngu_lap_trinh_c_chuong_1_mot_so_khai_niem_co.pdf

Nội dung text: Bài giảng Ngôn ngữ lập trình C - Chương 1: Một số khái niệm cơ bản - Ninh Thị Thanh Tâm

  1. 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
  2. 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
  3. 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()
  4. 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: _ ? % # & ^ \ !
  5. 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
  6. 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
  7. 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
  8. Các kiểu dữ liệu cơ sở Tên Ý nghĩa Phạm vi Kích thước char Kí tự -128 ÷ 127 1 byte int Số nguyên -32768 ÷ 32767 2 byte float Số thực dấu ±3.4E-38 ÷ ±3.4E+38 4 byte phẩy động, độ chính xác đơn double Số thực dấu ±1.7E-308 ÷ ±1.7E+308 8 byte phẩy động, độ chính xác đơn
  9. 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ị
  10. Hằng (tiếp)  Ví dụ #define MAX 80 #define newline ‘\n’ cont int MAX = 100; const char newline = ‘\n’;
  11. 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ị
  12. 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’;
  13. 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
  14. Phép toán số học Toán tử Ý nghĩa - Đổi dấu (thực, nguyên) + Cộng 2 số (thực, nguyên) - Trừ (thực, nguyên) * Nhân (thực, nguyên) / Chia (thực, nguyên) % Chia lấy số dư
  15. Phép toán quan hệ Toán tử Ý nghĩa > So sánh lớn hơn >= So sánh lớn hơn hoặc bằng < So sánh nhỏ hơn <= So sánh nhỏ hơn hoặc bằng == So sánh bằng nhau != So sánh không bằng nhau
  16. Phép toán lô-gic Liên từ Ý nghĩa Ví dụ && Và 3 6 có giá trị 1 || Hoặc n =100 Với n=5, BT = 0 ! Phủ định !12 có giá trị 0 !0 có giá trị 1
  17. Phép toán thao tác trên bit  Cho phép xử lý đến Phép toán Ý nghĩa từng bit của một số & VÀ nhị phân nguyên | HOẶC nhị phân  Không dùng cho float hoặc double ^ HOẶC có loại trừ > Dịch phải ~ Bù 1
  18. Phép toán thao tác trên bit (tiếp) 1 & 1 = 1 1 | 1 = 1 1 ^ 1 = 0 ~ 1 = 0 1 & 0 = 0 1 | 0 = 1 1 ^ 0 = 1 ~ 0 = 1 0 & 1 = 0 0 | 1 = 1 0 ^ 1 = 1 a > n = a/2n  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.
  19. Ví dụ 0xa1b6 & 0xff = 0xb6 0xa1b6 | 0xff = 0xa1ff 0xa1b6 ^ 0xffff = 0x5e49 0xa1b6 > 8 = 0xa1 ~0xa1b6 = 0x5e49
  20. Biểu thức gán  =  Nếu thêm dấu ; ta thu được câu lệnh gán Dạng thông thường Dạng thu gọn Ý nghĩa i = i + k i += k Tự cộng i = i – k i -= k Tự trừ i = i * k i *= k Tự nhân i = i / k i /= k Tự chia i = i % k i %= k Tự chia dư i = i & k i &= k Tự và i = i | k i |= k Tự hoặc i = i ^ k i ^= k Tự bù i = i >> k i >>= k Tự dịch bit phải i = i <<k i <<= k Tự dịch bit trái
  21. 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
  22. 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);
  23. Phép toán tăng giảm một đơn vị Toán tử Dạng tiền tố Dạng hậu tố Tăng một đơn vị ++n n++ Giảm một đơn vị n n  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ị
  24. Ví dụ Phép toán Tương đương i = j++; i = j; j = j + 1; i = ++j; j = j + 1; i = j; i = j ; i = j; j = j - 1; i = j; j = j - 1; i = j;
  25. 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
  26. 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 char int long float double long double
  27. Thứ tự ưu tiên, trật tự kết hợp của các phép toán Mức Các toán tử Trật tự kết hợp 1 ( ) [ ] → 2 ! ~ ++ * & ← 3 * / → 4 + - → 5 > → 6 >= → 7 == != → 8 & → 9 ^ → 10 | → 11 && → 12 || → 13 ?: ← 14 = += -= ←
  28. 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
  29. 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
  30. Hàm printf() – định dạng Định dạng Áp dụng kiểu DL Ghi chú %d int Đối là 1 số nguyên %i int Đối là hệ 10 có dấu (nếu giá trị âm) %o int Số nguyên hệ 8, không dấu %u int Số nguyên, không dấu %x int Số nguyên hệ 16, không dấu %X int Hệ 16 với các chữ A B C D E F
  31. Hàm printf() – định dạng (tiếp) Định dạng Áp dụng kiểu DL Ghi chú %e, %E float, double Dạng thập phân, dấu chấm động %f, %lf float, double Dạng thập phân, dấu phẩy tĩnh %g, %G float, double Dấu tĩnh, động phụ thuộc vào loại nào ngắn hơn
  32. Hàm printf() – định dạng (tiếp) Định dạng Áp dụng kiểu DL Ghi chú %c char Đối số là một kí tự %s char* Đối số là một xâu kí tự
  33. 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(); }
  34. Kết quả
  35. 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(); }
  36. Kết quả
  37. Hàm scanf()  Cú pháp: scanf( ,{ , });  xâu định dạng  đối số lưu trữ kết quả
  38. Hàm scanf() – định dạng Định dạng Ý nghĩa Đối số %d Nhập vào một số Địa chỉ của một nguyên biến nguyên %o Nhập vào một số Địa chỉ của một nguyên hệ 8 biến nguyên %x Nhập vào một số Địa chỉ của một nguyên hệ 16 biến nguyên %c Nhập vào 1 kí tự Địa chỉ của biến kí tự
  39. Hàm scanf() – định dạng (tiếp) Định dạng Ý nghĩa Đối số %s Nhập vào 1 xâu kí Một xâu kí tự tự %f Nhập vào một số Địa chỉ của một thực float biến thực %ld Nhập vào một số Địa chỉ của một nguyên long biến long %lf Nhập vào một số Địa chỉ của một thực double biến double
  40. 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(); }
  41. Kết quả
  42. 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);
  43. 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(); }
  44. Kết quả
  45. 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ả
  46. 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