Đăng ký Đăng nhập

Tài liệu Ngon ngu cc

.PDF
120
58
61

Mô tả:

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƢỜNG ĐẠI HỌC LẠC HỒNG GIÁO TRÌNH NGÔN NGỮ C/C++ CHƢƠNG 1: CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ C ........................................8 1.1 MỘT SỐ CHƢƠNG TRÌNH ĐẦU TIÊN BẰNG C .................................................8 1.2 CÁC TỪ KHÓA ......................................................................................................10 1.3 TÊN VÀ CÁCH ĐẶT TÊN .....................................................................................10 1.4 CÁCH GHI LỜI GIẢI THÍCH ................................................................................11 1.5 CÂU LỆNH VÀ DẤU CHẤM CÂU ......................................................................11 1.6 CẤU TRÚC CHUNG CỦA CHƢƠNG TRÌNH .....................................................11 1.7 MỘT SỐ QUI TẮC VIẾT CHƢƠNG TRÌNH ........................................................12 CHƢƠNG 2: CÁC KIỂU DỮ LIỆU CƠ SỞ ...................................................................13 2.1 KHÁI NIỆM VỀ KIỂU DỮ LIỆU ..........................................................................13 2.2 KIỂU SỐ NGUYÊN ................................................................................................14 2.3 KIỂU SỐ THỰC ......................................................................................................15 2.4 KIỂU KÍ TỰ ............................................................................................................15 2.5 KIỂU XÂU KÍ TỰ...................................................................................................16 2.6 KIỂU BOOLEAN ....................................................................................................16 2.7 BIẾN VÀ HẰNG .....................................................................................................16 2.7.1 Biến ............................................................................................................................ 16 2.7.2 Khai báo biến ............................................................................................................ 16 2.7.3 Hằng ........................................................................................................................... 17 Bài tập tại lớp .................................................................................................................18 CHƢƠNG 3: 3.1 CÁC PHÉP TOÁN & HÀM CƠ BẢN ......................................................19 CÁC PHÉP TOÁN ..................................................................................................19 3.1.1 Các phép toán số học ............................................................................................... 19 Bài tập tại lớp: (Sinh viên làm bài và sửa tại lớp)..........................................................22 3.1.2 Các toán tử quan hệ và logic ................................................................................... 24 3.1.3 Phép toán ? ................................................................................................................ 27 3.1.1 Phép toán phẩy ......................................................................................................... 27 3.1.2 Phép toán Xử lý Bit: ................................................................................................ 27 3.1.3 Thứ tự ƣu tiên của các toán tử: ............................................................................... 28 2 Bài tập tại lớp .................................................................................................................29 3.2 MỘT SỐ HÀM CƠ BẢN: .......................................................................................31 3.2.1 Hàm đại số: ............................................................................................................... 31 3.2.2 Hàm lƣợng giác: ....................................................................................................... 31 3.2.3 Hàm xử lý ký tự ................................................................................ 32 Câu hỏi trắc nghiệm .......................................................................................................32 CHƢƠNG 4: 4.1 LỆNH NHẬP XUẤT DỮ LIỆU CƠ BẢN ................................................34 XUẤT DỮ LIỆU RA MÀN HÌNH: ........................................................................34 4.1.1 Lệnh printf................................................................................................................. 34 4.1.2 Lệnh puts : ................................................................................................................. 35 4.2 XUẤT KẾT QUẢ RA MÁY IN: .............................................................................35 4.3 NHẬP GIÁ TRỊ CHO BIẾN: ..................................................................................35 4.3.1 Toán tử gán và biểu thức gán.................................................................................. 35 4.3.2 Hàm scanf()............................................................................................................... 36 4.3.3 Hàm getchar() ........................................................................................................... 37 4.3.4 Hàm getch() .............................................................................................................. 37 4.3.5 Hàm gets() ................................................................................................................. 37 4.4 TRÌNH BÀY MÀN HÌNH: .....................................................................................37 4.4.1 Lệnh gotoxy(int x, int y): ........................................................................................ 37 4.4.2 Lệnh clrscr() .............................................................................................................. 37 4.4.3 Lệnh textcolor(màu chữ) ......................................................................................... 37 4.4.4 Textbackground(màu nền) ...................................................................................... 38 4.4.5 Window(int x1,int y1,int x2,int y2) ....................................................................... 38 4.5 TẠO SỐ NGẪU NHIÊN .........................................................................................38 Câu hỏi trắc nghiệm .......................................................................................................38 Bài tập tại lớp .................................................................................................................39 Bài tập về nhà .................................................................................................................40 CHƢƠNG 5: 5.1 CÁC CẤU TRÚC ĐIỀU KIỆN..................................................................45 CẤU TRÚC CHỌN .................................................................................................45 5.1.1 Cấu trúc chọn với if: ................................................................................................ 45 5.1.2 Cấu trúc chọn với if/else: ........................................................................................ 47 5.2 CẤU TRÚC CHỌN VỚI SWITCH .........................................................................49 3 Bài tập tại lớp(Sinh viên làm bài và sửa tại lớp) ............................................................51 Câu hỏi trắc nghiệm .......................................................................................................52 CHƢƠNG 6: 6.1 CẤU TRÚC LẶP .......................................................................................56 VÒNG LẶP XÁC ĐỊNH FOR ................................................................................56 Bài tập tại lớp .................................................................................................................58 6.2 VÒNG LẶP KHÔNG XÁC ĐỊNH .........................................................................59 6.2.1 Vòng lặp không xác định While ............................................................................. 59 6.2.2 Vòng lặp không xác định với điều kiện sau: do .. while ..................................... 61 Bài tập tại lớp .................................................................................................................62 6.3 CÁC CÂU LỆNH RẼ NHÁNH VÔ ĐIỀU KIỆN ...................................................63 6.3.1 Lệnh break................................................................................................................. 63 6.3.2 Lệnh continue ........................................................................................................... 63 6.3.3 Lệnh goto .................................................................................................................. 64 Câu hỏi trắc nghiệm .......................................................................................................65 Bài tập tại lớp .................................................................................................................65 Bài tập về nhà: ................................................................................................................66 CHƢƠNG 7: CHƢƠNG TRÌNH CON – HÀM ...............................................................70 7.1 TẠI SAO PHẢI DÙNG CHƢƠNG TRÌNH CON? ................................................70 7.2 PHÂN LOẠI HÀM ..................................................................................................71 7.3 KHAI BÁO MẪU HÀM .........................................................................................72 7.4 ĐỊNH NGHĨA HÀM ...............................................................................................72 7.5 GỌI HÀM ................................................................................................................73 7.6 THAM SỐ HÌNH THỨC – THAM SỐ THỰC SỰ ................................................73 7.7 BIẾN TOÀN CỤC – BIẾN CỤC BỘ ......................................................................73 7.7.1 Biến toàn cục ............................................................................................................ 73 7.7.2 Biến cục bộ (biến địa phƣơng) ............................................................................... 73 7.8 KHAI BÁO HÀM VÀ CÁC VÍ DỤ:.......................................................................73 Bài tập tại lớp .................................................................................................................75 7.9 TRUYỀN THAM SỐ CHO HÀM ...........................................................................75 7.9.1 Truyền tham trị ......................................................................................................... 76 7.9.2 Truyền tham chiếu ................................................................................................... 76 7.10 ĐỆ QUI: ................................................................................................................76 4 Câu hỏi trắc nghiệm .......................................................................................................78 Bài tập về nhà .................................................................................................................79 CHƢƠNG 8: CHƢƠNG 8: KIỂU MẢNG (ARRAY) .....................................................81 8.1 KHÁI NIỆM: ...........................................................................................................81 8.2 MẢNG MỘT CHIỀU: .............................................................................................82 8.2.1 Khai Báo Biến Mảng 1 Chiều: ............................................................................... 82 8.2.2 Khai Báo Kiểu Mảng: .............................................................................................. 83 8.2.3 Một Số Thao Tác Trên Mảng 1 Chiều: ................................................................. 83 8.2.4 Truyền tham số Mảng một chiều: .......................................................................... 85 8.3 MẢNG HAI CHIỀU: ...............................................................................................86 8.3.1 KHÁI NIỆM: ............................................................................................................ 86 8.3.2 KHAI BÁO VÀ SỬ DỤNG MẢNG HAI CHIỀU: ............................................. 87 8.3.3 THAO TÁC TRÊN MẢNG 2 CHIỀU: ................................................................. 87 8.3.4 TRUYỀN THAM SỐ TRÊN MẢNG 2 CHIỀU:................................................. 89 8.4 MẢNG NHIỀU CHIỀU:..........................................................................................89 8.4.1 Khái niệm: ................................................................................................................. 89 8.4.2 Khai báo mảng: ........................................................................................................ 89 8.4.3 Truy xuất phần tử mảng: ......................................................................................... 89 8.4.4 Thao tác trên mảng n chiều: .................................................................................... 89 Câu hỏi trắc nghiệm .......................................................................................................89 Bài tập tại lớp .................................................................................................................90 Bài tập về nhà .................................................................................................................91 CHƢƠNG 9: CHUỖI KÝ TỰ ..........................................................................................94 9.1 KHÁI NIỆM: ...........................................................................................................94 9.2 KHAI BÁO BIẾN CHUỖI: .....................................................................................94 9.3 KHAI BÁO KIỂU CHUỖI: .....................................................................................95 9.4 CÁC THAO TÁC TRÊN KIỂU CHUỖI: ...............................................................95 9.4.1 Nhập chuỗi ký tự: ..................................................................................................... 95 9.4.2 Xuất chuỗi: ................................................................................................................ 96 9.4.3 Truy xuất đến từng ký tự trong chuỗi: biếnchuỗi[chỉsố] ................................... 96 9.5 MẢNG CÁC CHUỖI: .............................................................................................97 9.6 CON TRỎ VÀ CHUỖI KÝ TỰ: .............................................................................98 5 9.6.1 Khai báo con trỏ ....................................................................................................... 98 9.6.2 Gán địa chỉ vùng nhớ của biến chuỗi cho biến con trỏ ....................................... 98 9.6.3 Gán hằng chuỗi cho biến con trỏ............................................................................ 98 9.7 CẤP PHÁT ĐỘNG 1 VÙNG NHỚ CHỨA DỮ LIỆU VÀ GHI ĐịA CHỈ VÀO BIẾN CON TRỎ: .....................................................................................................98 9.8 HÀM TỰ TẠO VÀ KIỂU CHUỖI: ........................................................................99 9.9 Các hàm xử lý chuỗi strong STRING.H: .................................................................99 9.9.1 Xác định chiều dài thật sự của chuỗi: .................................................................... 99 9.9.2 Đổi chữ thƣờng thành chữ hoa và ngƣợc lại: ..................................................... 100 9.9.3 Nối 2 chuỗi: ............................................................................................................ 100 9.9.4 Nối n ký tự của chuỗi nguồn vào sau chuỗi đích: .............................................. 101 9.9.5 Sao chép chuỗi: ...................................................................................................... 102 9.9.6 Sao chép n ký tự từ chuỗi nguồn sang chuỗi đích: ............................................ 103 9.9.7 So sánh 2 chuỗi theo thứ tự từ điển: .................................................................... 103 9.9.8 Tìm kiếm: ................................................................................................................ 105 9.9.9 Các hàm chuyển đổi kiểu stdlib.h ........................................................................ 105 Câu hỏi trắc nghiệm .................................................................................................... 106 Bài tập tại lớp .............................................................................................................. 107 Bài tập về nhà .............................................................................................................. 107 CHƢƠNG 10: KIỂU CẤU TRÚC (STRUCTURE) ....................................................... 109 10.1 KHÁI NIỆM: ..................................................................................................... 109 10.2 ĐỊNH NGHIÃ KIỂU CẤU TRÚC MỚI: .......................................................... 109 10.3 KHAI BÁO BIẾN KIỂU CẤU TRÚC:............................................................. 110 10.4 CÁC THAO TÁC TRÊN BIẾN MẪU TIN: ..................................................... 110 10.4.1 Gán 2 biến cấu trúc có cùng kiểu cấu trúc. ......................................................... 110 10.4.2 Truy xuất giá trị từng mục dữ liệu trong 1 biến kiểu cấu trúc: ........................ 111 10.4.3 Địa chỉ của biến cấu trúc và mục dữ liệu: ........................................................... 111 10.5 CON TRỎ CỦA KIỂU CẤU TRÚC: ............................................................... 111 10.5.1 Khai báo con trỏ kiểu cấu trúc: ............................................................................ 111 10.5.2 Gán địa chỉ vùng nhớ của 1 biến cấu trúc cho biến con trỏ:............................. 111 10.5.3 Truy xuất giá trị 1 thành phần của biến cấu trúc bằng biến con trỏ: ............... 111 10.6 HÀM VÀ KIỂU CẤU TRÚC: .......................................................................... 112 6 10.6.1 Đối số của hàm có thể là: ...................................................................................... 112 10.6.2 Hàm có thể trả về: .................................................................................................. 112 10.7 MẢNG CẤU TRÚC: ......................................................................................... 113 Câu hỏi trắc nghiệm .................................................................................................... 117 Bài tập tại lớp .............................................................................................................. 117 Bài tập về nhà .............................................................................................................. 117 TÀI LIỆU THAM KHẢO .................................................................................................. 120 7 CHƢƠNG 1: CÁC PHẦN TỬ CƠ BẢN CỦA NGÔN NGỮ C Yêu cầu: Sau khi học xong bài này, sinh viên phải hiểu và vận dụng các kiến thức, kĩ năng cơ bản sau:  Hiểu biết về các ƣu điểm của ngôn ngữ C và một số đặc điểm chính của nó.  Nắm vững các thành phần chính trong một chƣơng trình C  Nắm vững qui tắc viết chƣơng trình. Số tiết lên lớp: 2 Bảng phân chia thời lƣợng: STT NỘI DUNG SỐ TIẾT 1 Giới thiệu chƣơng trình C 1/2 2 Cấu trúc chƣơng trình C 1 3 Một số qui tắc viết chƣơng trình 1/2 Trọng tâm bài giảng:  Nắm vững cấu trúc của một chƣơng trình C 1.1 MỘT SỐ CHƢƠNG TRÌNH ĐẦU TIÊN BẰNG C Ví dụ 1: In ra màn hình 2 dòng chữ: DAY LA CHUONG TRINH C CHAO CAC BAN /* Chƣơng trình in 2 dòng chữ*/ #include “stdio.h” void main() /* hàm chính */ { #include “conio.h” printf(“DAY LA CHUONG TRINH C”); printf(“\nCHAO CAC BAN”); getch(); } Giải thích:  /* ... */ : dòng ghi chú sẽ không đƣợc biên dịch. Mỗi chương trình nên bắt đầu bằng một ghi chú nói rõ mục đích của nó  Chỉ thị #include : dùng nạp header file chứa các hàm thƣ viện sử dụng trong chƣơng trình: - File stdio.h: chứa các hàm nhập xuất trên dòng nhập xuất gián tiếp (printf ) 8 - File conio.h: chứa các hàm nhập xuất trực tiếp từ bàn phím, màn hình (getch). Khi sử dụng một hàm chuẩn cần biết nó nằm trong tập tin header nào và phải dùng lệnh #include để nạp tập tin đó vào chương trình. #include <[path]filename> : mặc định sẽ tìm trong thƣ mục chỉ định trong OptionsDirectoriesINCLUDE Directories #include “[path]filename” : mặc định tìm ở thƣ mục hiện hành, nếu không tìm thấy sẽ tìm trong thƣ mục INCLUDE. Thông báo lỗi nếu không tìm thấy: Unable to open include file ‘[path]filename’  Dòng main() : là bắt buộc đối với tất cả các chƣơng trình C. Dấu () sau từ khóa main cho biết main là 1 khối chƣơng trình gọi là hàm (function). Khối thân hàm đƣợc xác định bằng cặp ký hiệu: { /* bắt đấu phần thân */ } /* kết thúc phần thân */  Một câu lệnh đƣợc viết trên 1 hay nhiều dòng nhƣng phải kết thức bởi dấu ; Ví dụ 2: Chƣơng trình tính chu vi và diện tích hình tròn theo giá trị bán kính r nhập vào từ bàn phím. #include “stdio.h” else #include { #define Pi cv = 2 * PI * r; 3.14 main() dt = PI * r * r; { float r, cv, dt; /*Khai báo 3 biến kiểu thực*/ printf(“\nKet Qua:”); printf(“\n\t Chu vi = %10.2f \n\t Dien tich = %10.2f”, cv, dt ); printf(“\nNhap ban kinh r = “); scanf(“%f”, &r); } if (r <= 0) getch(); printf(“\a\aBan kinh <= 0 khong tinh“); } Chú ý : Một chƣơng trình C có thể chứa 1 hay nhiều hàm, trong đó, bắt buộc phải có 1 hàm main và phải nằm trên tất cả những hàm khác (nếu có). hàm này đƣợc tự động thực hiện đầu tiên khi chạy chƣơng trình. 9 Ví dụ 3: Viết chƣơng trình tính bán kính hình tròn #include “stdio.h” #include #define Pi 3.14 float r ; /*biến ngoài*/ void NhapBanKinh( ); void main() { float cv, dt; /*Khai báo 2 biến cục bộ*/ printf(“\nChƣơng trình tính diện tích và chu vi hình tròn\n”); NhapBanKinh; if (r <= 0) printf(“\a\aBan kinh <= 0 khong tinh“); else { cv = 2 * PI * r; dt = PI * r * r; printf(“\nKet Qua:”); printf(“\n\t Chu vi = %10.2f \n\t Dien tich = %10.2f”, cv, dt ); } getch(); } void NhapBanKinh( ) { printf(“\nNhap ban kinh hinh tron r = “); scanf(“%f”, &r); } Chú thích: có thể sử dụng hằng M_PI đã định nghiã trong math.h 1.2 CÁC TỪ KHÓA ([3] trang 10) -Từ khóa (keyword) là các từ dùng riêng của C và mỗi từ khóa có tác dụng và ý nghĩa riêng. -Từ khóa không thể định nghĩa lại. -Không đƣợc đặt tên hằng, tên biến, tên hàm, tên chƣơng trình trùng với từ khóa. -Một vài từ khóa thông dụng: conts, define, include, void, … 1.3 TÊN VÀ CÁCH ĐẶT TÊN ([3] trang 12) -Tên chƣơng trình, tên biến, tên hàm, tên hằng số,…đều phải đƣợc khai báo trƣớc khi sử dụng. -Tên không đƣợc bắt đầu bằng số, không đƣợc chứa khoảng trắng và các kí tự đặc biệt nhƣ dấu chấm, dấu *,… Ví dụ cách đặt tên sai: 3PI: bắt đầu bằng số PI$: chứa kí hiệu $ Bien 1 : chứa khảong trắng Char: trùng từ khóa “pi”: dùng dấu “ -Lƣu y: C là ngôn ngữ phân biệt chữ hoa, chữ thƣờng, do đó biến Ketqua khác với ketqua cũng nhƣ KETQUA. -Nên đặt tên sao cho gợi nhớ. 1.4 CÁCH GHI LỜI GIẢI THÍCH([3] trang 12-13) -Lời giải thích dùng để thuyết minh, giúp chƣơng trình sáng sủa, dễ hiểu. -Lời giải thích không tạo ra mã chƣơng trình. -Nếu lời giải thích nằm trên một dòng, sử dụng hai dấu gạch chéo: Ví dụ: // day la phan giai thich -Nếu lời giải thích nằm trên nhiều dòng, sử dụng cặp kí hiệu /* và */ Chú ý: Nếu viết các chú thích trong chƣơng trình mà không sử dụng các dấu // hoặc /* hay */, trình dịch sẽ coi chúng nhƣ là các lệnh C++ và sẽ hiển thị các lỗi. 1.5 CÂU LỆNH VÀ DẤU CHẤM CÂU -Mỗi câu lệnh trong chƣơng trình đƣợc kết thúc bằng dấu chấm phẩy -Dấu chấm phẩy đƣợc dùng để ngăn cách các câu lệnh. -Một số trƣờng hợp không dùng dấu chấm phẩy: +Sau void main() +Sau #include<…> 1.6 CẤU TRÖC CHUNG CỦA CHƢƠNG TRÌNH  Các #include: dùng nạp header file chứa các hàm thƣ viện sử dụng trong chƣơng trình:  Các #define: dùng tạo các macro thay thế.  Khai báo các đối tƣợng dữ liệu ngoài (biến, mảng, cấu trúc, hợp...)  Khai báo trƣớc đặc trƣng các hàm tự tạo (nếu có).  Hàm main  Phần định nghiã các hàm tự tạo Chú ý: Hàm main có thể đặt sau hoặc xen vào giữa các hàm khác, nhưng được tự động gọi thực hiện đầu tiên trong chương trình. #include<…> //khai báo thƣ viện #define //định nghĩa kiểu dữ liệu typedef kiểu dữ liệu tên hàm (các tham số) //khai báo nguyên mẫu hàm khai báo các biến toàn cục void main() //hàm chính, bắt buộc có { //bắt đầu hàm chính //Các lệnh của hàm chính //dừng chƣơng trình xem kết quả getch(); } //Khai báo các hàm, có thể có hoặc không kiểu dữ liệu tên hàm (các tham số) { //Các lệnh của hàm return (); //trả lại giá trị cho hàm } 1.7 MỘT SỐ QUI TẮC VIẾT CHƢƠNG TRÌNH -Chƣơng trình viết phải rõ ràng, thẩm mỹ -Phải có các lời giải thích hợp lí mô tả về chƣơng trình, cách sử dụng hoặc các biến quan trọng. -Cách bố trí câu lệnh hợp lí. +Mỗi câu lệnh chiếm 1 dòng +Các lệnh cùng nhóm phải thẳng hàng +Các câu lệnh viết theo phân cấp -Chƣơng trình nên đặt tên dễ hiểu, mang tính gợi nhớ -Các biến đặt ngắn gọn, gọi nhớ chức năng. CHƢƠNG 2: CÁC KIỂU DỮ LIỆU CƠ SỞ Yêu cầu: Sau khi học xong bài này, sinh viên phải hiểu và vận dụng các kiến thức, kĩ năng cơ bản sau:  Các kiểu dữ liệu.  Cách đặt tên và khai báo biến.  Cách đặt tên và khai báo hàm.  Phạm vi sử dụng biến.  Cách sử dụng một số hàm cơ bản. Số tiết lên lớp: 2 Bảng phân chia thời lƣợng: STT NỘI DUNG SỐ TIẾT 1 KiỂu dữ liệu sơ cấp 1 2 Biến-Hằng 1/2 3 Bài tập thảo luận 1/2 Trọng tâm bài giảng:  Nắm vững các kiểu dữ liệu cơ bản của C  Cách khai báo biến và hằng. 2.1 KHÁI NIỆM VỀ KIỂU DỮ LIỆU ([3] trang 20-22) -Dữ liệu (DATA) là tất cả những gì đƣợc máy tính xử lí. -Kiểu dữ liệu (DATA TYPE) đƣợc định nghĩa với 2 điểm chính: +Một tập hợp các giá trị mà một biến thuộc kiểu đó có thể nhận đƣợc +Trên đó xác định một số phép toán. -Dữ liệu đƣợc chứa trong bộ nhớ máy tính với một số lƣợng ô nhớ nhất định tính theo đơn vị byte. Các kiểu số nguyên Các kiểu số thực Kiểu kí tự Kiểu logic Boolean Kiểu cơ sở Kiểu vô hƣớng Kiểu vô hƣớng do ngƣời dùng định nghĩa DATA TYPE Kiểu liệt kê Kiểu mảng (array) Kiểu cấu trúc (struct) Kiểu tập tin (file) Kiểu có cấu trúc Kiểu con trỏ Hình 2.1: Tổng quan phân loại các kiểu dữ liệu 2.2 KIỂU SỐ NGUYÊN Các số nguyên đƣợc viết ra bằng các dãy chữ số 0,1,2,…,9 với chữ đầu có thể là dấu +, dấu – hoặc không có dấu. Kiểu int là thông dụng nhất. Tuy nhiên trong C còn có nhiều kiểu số nguyên khác với các dải giá trị khác nhau. Kiểu char thực chất là kí tự song C cho phép cùng kiểu kí tự này nhƣ là một số nguyên. Khi tính toán trong biểu thức số học thì kiểu chat đƣợc sử dụng nhƣ là số nguyên, khi tính toán trong biểu thức kí tự thì đây là kiểu kí tự. Bảng 2.1 : Các kiểu dữ liệu khai báo cho biến số nguyên Kiểu biến Từ khóa số byte dải giá trị character char 1 -127 đến 128 integer int 2 -32768 đến 32767 long integer long 4 -2 tỉ đến 2 tỉ unsigned character unsigned char 1 0 đến 255 unsigned integer unsigned int 2 0 đến 65535 unsigned long integer unsigned long 4 0 đến 4 tỉ Chú ý : Khi thực hiện phép tính số học đối với số nguyên, cần hết sức thận trọng xem các phép toán có cho kết quả vƣợt ra khỏi phạm vi biểu diễn của máy không, ta gọi là hiện tƣợng tràn số. Ví dụ : 32000+800-2000=29200 Máy tính sẽ xử lí sai vì lúc làm phép cộng 32000 với 800 đã cho ra kết quả trung gian là 32800, vƣợt quá giới hạn 32767 của máy. Ví dụ 4: Khai báo biến số nguyên và tính tổng 2 số //ví dụ về khai báo biến số nguyên và tính tổng của chúng //khai báo hàm thƣ viện #include #include void main() { //khai báo 3 biến thuộc kiểu integer int a,b,c; a=5; b=10; c=a+b; printf(“Tong la %d=”,c); getch() ; } 2.3 KIỂU SỐ THỰC Trong máy tính, số thực đƣợc biểu diễn dƣới 2 dạng: dạng bình thƣờng và dạng có số mũ -Dạng thập phân bình thƣờng: 3.14 3.0 -24.123456 -0.0002 -Dạng có số mũ hay còn gọi là dạng viết khoa học: gồm 2 phần: phần định trị và phần mũ viếtt sau chữ E để biểu diễn số mũ của cơ số 10. Ví dụ: 678.12345= 6.7812345*102 sẽ đƣợc biểu diễn là 6.7812345E+02 -0.001234= -1.234*10-3 sẽ đƣợc biểu diễn là -1.234E-03 Bảng 2.2 : Các kiểu dữ liệu khai báo cho biến số thực Kiểu biến Từ khóa số byte dải giá trị số thực với độ chính xác đơn float 4 1.2E-38 đến 3.4E38 độ chính xác 7 chữ số số thực với độ chính xác kép double 8 2.2E-308 đến 1.8E308 độ chính xác 15 chữ số số thực với độ chính xác kép – độ long dài lớn double 2.4 10 3.4E-4932 đến 3.4E4932 độ chính xác 19 chữ số KIỂU KÍ TỰ Kí tự là tất cả các chữ viết mà ta thƣờng dùng nhƣ các chữ cái a,b,c, …chữ số 0,1,…,9, các dấu ;,.!@*… Kiểu kí tự đƣợc định nghĩa trong C bằng từ khóa char Một hằng kí tự đƣợc biểu diễn bằng chữ viết đó nằm giữa hai dấu nháy đơn „a‟, „A‟, „0‟,‟*‟,… Mỗi hằng kí tự đƣợc lƣu trữ đúng 1 byte ô nhớ. Bộ mã kí tự đƣợc dùng phổ biến là bộ mã ASCII (American Standard Code for Information Interchange) KIỂU XÂU KÍ TỰ 2.5 Xâu kí tự là dãy nhiều kí tự đƣợc đặt trong 2 dấu nháy kép Ví dụ: “Lap trinh” Xâu kí tự không viết đƣợc trong biểu thức số học. KIỂU BOOLEAN 2.6 Kiểu Boolean là kiểu chỉ có 2 giá trị: Đúng (True) hoặc sai (False) Ví dụ: 3<1 là một mệnh đề có giá trị sai -Trong C, một số nguyên có giá trị bằng 0 là false, còn các số nguyên khác (thông thƣờng là số 1) là giá trị true. Kết quả tính ra thì true luôn là giá trị 1. BIẾN VÀ HẰNG 2.7 Dữ liệu đƣợc chứa trong máy tính có thể là biến hoặc hằng. 2.7.1 Biến Biến là đại lƣợng có thể thay đổi đƣợc giá trị. Biến đƣợc lƣu trữ trong bộ nhớ và đƣợc đặt tên để dễ sử dụng. Biến là 1 vùng nhớ Ram dùng lƣu trữ dữ liệu tạm thời trong quá trình thực hiện chƣơng trình. Việc truy xuất đến giá trị đƣợc lƣu trữ trong vùng nhớ đƣợc thực hiện thông qua tên biến. 2.7.2 Khai báo biến Muốn sử dụng biến, bắt buộc phải khai báo trƣớc. Kiểudữliệu tênbiến1[= giátrị] , tênbiến2[=giátrị]; Tên (identifier): là 1 chuỗi tối đa 32 ký tự gồm chữ cái, số, dấu gạch dƣới. Trong đó ký tự đầu tiên không phải là số. C phân biệt chữ hoa và chữ thƣờng. Có thể chỉ định chiều dài tối đa của tên bằng chức năng: OptionsCompilerSourceIdentifier length. Biến phải gắn liền với 1 kiểu dữ liệu cụ thể. Ví dụ 5: Khai báo một số biến thuộc các kiểu đã học int a; //khai báo 1 biến a thuộc kiểu integer float dtb; //khai báo 1 biến dtb thuộc kiểu số thực char lop; //khai báo 1 biến lop thuộc kiểu kí tự unsigned int tuoi; //khai báo 1 biến tuổi thuộc kiểu số nguyên không dấu. 2.7.2.1. Vị trí khai báo Vị trí khai báo biến sẽ qui định phạm vi hoạt động của biến.  Khai báo bên trong khối lệnh: (Biến cục bộ) - Phải đƣợc khai báo sau dấu {, đầu khối và trƣớc tất cả các câu lệnh khác trong khối. - Phạm vi hoạt động: Các biến này chỉ đƣợc sử dụng bên trong khối lệnh đó. - Thời gian tồn tại: Khi thực hiện xong khối lệnh, thì vùng nhớ cấp phát cho các biến này sẽ xóa (ngoại trừ trƣờng hợp có sử dụng từ khóa static). - Giá trị ban đầu: Nếu không gán giá trị khởi đầu thì giá trị của các biến cục bộ chƣa đƣợc xác định. Trƣờng hợp có sử dụng từ khóa Static: thì các biến này có giá trị khởi đầu mặc định là 0 và chỉ đƣợc gán giá trị khởi đầu khi thực hiện lần đầu tiên, các lần sau sẽ sử dụng giá trị hiện đang lƣu trử. - Tên các biến trong cùng 1 khối lệnh không đƣợc trùng nhau nhƣng có thể trùng tên với biến nằm ngoài khối lệnh. Ví dụ 6: Lệnh và khối lệnh { int a =5, b =2; { int a=4; b = a+b; printf(“\n In trong khối a = %d, b = %d, a, b); } printf(“\n In ngoài khối a = %d, b = %d, a, b); } Kết quả: In trong khối a = 4, b = 6 In ngoài khối a = 5, b = 6  Khai báo bên ngoài các hàm:(gọi là Biến ngoài) - Phạm vi sử dụng của biến ngoài là từ vị trí khai báo của nó cho đến cuối chƣơng trình. Nó có thể sử dụng cho các chƣơng trình khác nhờ khai báo extern viết trên các file này. - Giá trị ban đầu: Khi chƣa đƣợc khởi đầu thì giá trị của biến ngoài = 0. - Thời gian tồn tại: cho đến khi kết thúc chƣơng trình. 2.7.2.2. Lấy địa chỉ của biến Mỗi biến đƣợc cấp phát trong bộ nhớ gồm một hay nhiều byte liên tiếp tùy thuộc vào kiểu dữ liệu. Địa chỉ của byte đầu tiên là địa chỉ của biến. Phép toán: &tênbiến trả về địa chỉ của biến. 2.7.3 Hằng Hằng là những giá trị cố định thuộc phạm vi của một kiểu dữ liệu, không bị thay đổi khi thực hiện chƣơng trình. Khai báo hằng Muốn sử dụng hằng ta cũng phải khai báo trƣớc với từ khóa const. Const Kiểu dữ liệu tên hằng=giá trị hằng Ví dụ 7: Khai báo hằng Const int tigia=16000; const float pi=3.14; Bài tập tại lớp Câu 1. Chọn tƣơng ứng cho cột A và B: Cột A Cột B 8 Tên định danh sai 10.34 Hằng số nguyên ABC Hằng ký tự abc Double 23 Số chấm động 12112134.86868686886 Tên định danh đúng _A1 $abc „A‟ Hƣớng dẫn: Nhiều mục trên cột A có thể tƣơng ứng tới một mục đơn tại cột B. Câu 2. Tính giá trị của các biến sau mỗi câu lệnh dƣới đây: int a = 4^4 int a = 23.34 a = 10 b = a + a++ a = -5 b = -a CHƢƠNG 3: CÁC PHÉP TOÁN & HÀM CƠ BẢN Yêu cầu: Sau khi học xong bài này, sinh viên phải hiểu và vận dụng các kiến thức, kĩ năng cơ bản sau:  Hiểu đƣợc Toán tử gán  Hiểu đƣợc biểu thức số học  Nắm đƣợc toán tử quan hệ (Relational Operators) và toán tử luận lý (Logical Operators)  Hiểu toán tử luận lý nhị phân (Bitwise Logical Operators) và biểu thức (Expressions)  Hiểu khái niệm ép kiểu  Hiểu độ ƣu tiên của các toán tử. Số tiết lên lớp: 2 Bảng phân chia thời lƣợng: STT NỘI DUNG SỐ TIẾT 1 Các phép toán cơ bản ½ 2 Chuyển đổi kiểu dữ liệu ½ 3 Các hàm cơ bản và cách sử dụng ½ 4 Bài tập thảo luận ½ Trọng tâm bài giảng:  Nắm vững các phép toán cơ bản, chuyển kiểu dữ liệu  Cách sử dụng một số hàm thông dụng 3.1 CÁC PHÉP TOÁN 3.1.1 Các phép toán số học:(Arithmetic Operators)[2] C có 7 toán tử số học gồm a) 5 toán tử 2 ngôi: Bảng 3.1: Bảng mô tả các phép toán 2 ngôi Phép toán Ký hiệu Ví dụ Phép toán Ký hiệu Ví dụ Cộng + a+b Nhân * a*b Trừ - a-b Chia / a/b Lấy phần dƣ % n%m  Phép chia trên 2 số nguyên cho kết quả là 1 số nguyên, cắt bỏ phần thập phân không làm tròn số. Ví dụ: 19 / 5 = 3 cắt bỏ 0.8  Phép chia lấy phần dƣ chỉ đƣợc dùng trên 2 toán hạng kiểu số nguyên (nếu không sẽ sinh lỗi cú pháp) Ví dụ: 19 % 5 = 4  Thứ tự thực hiện các toán tử trong một biểu thức tƣơng tự nhƣ trong Pascal Ví dụ 8: Error! đƣợc viết (b*b - 4*a*c)/(2*d) hay (b*b - 4*a*c)/2/d b) Hai toán tử 1 ngôi: Dùng tăng giảm các biến nguyên hay thực 1 đơn vị Toán tử tăng (++) : ++biến; hay biến++; Ví dụ 9: ++n; hay n++ <==> n = n+1; Toán tử giảm (--): --biến; hay biến--; Ví dụ 10: --n; hay n--; <==> n = n -1; Chú ý: Trƣờng hợp sử dụng toán tử này trong một biểu thức thì việc đặt trƣớc hay sau sẽ ảnh hƣởng đến kết quả bài toán: Đặt trƣớc: nếu muốn thay đổi giá trị cho n trƣớc khi sử dụng n Đặt sau: nếu muốn thay đổi giá trị cho n sau khi sử dụng n xong. Ví dụ 11: Tiền tăng Ví dụ 12: Hậu tăng tố B=3; A=++B; // A bằng 4, B bằng 4 tố B=3; A=B++; // A bằng 3, B bằng 4 Ví dụ 13: Với n = 4. Lệnh x = ++n sẽ gán 5 cho x. Lệnh x = n++ sẽ gán 4 cho x Ví dụ 14: Với x = 10 và y =11 thì: printf(“%d %d %d“, x--*--y, x-- - --y, x++ + ++y); Cho kết quả: 120 0 22 Nhƣng nếu tách thành 3 lệnh printf: printf(“%d “, x--*--y); printf(“%d”, x-- - --y); printf(“%d “, x++ + ++y); Cho kết quả: 120 -2 20  Độ ƣu tiên:Toán tử 1 ngôi có độ ƣu tiên cao hơn toán tử 2 ngôi. Ví dụ 15: Chƣơng trình myProgram 1. Gọi trình soạn thảo để nhập những câu lệnh cho chƣơng trình C. 2. Tạo ra một tập tin mới. 3. Nhập vào đoạn mã sau: #include void main() {
- Xem thêm -

Tài liệu liên quan