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
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:
- bai_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
- 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ở 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
- 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 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ư
- 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
- 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
- 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
- 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.
- Ví dụ 0xa1b6 & 0xff = 0xb6 0xa1b6 | 0xff = 0xa1ff 0xa1b6 ^ 0xffff = 0x5e49 0xa1b6 > 8 = 0xa1 ~0xa1b6 = 0x5e49
- 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
- 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ị 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ị
- 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;
- 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 char int 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 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 = += -= ←
- 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 Đị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
- 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
- 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ự
- 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 Đị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ự
- 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
- 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