« Home « Kết quả tìm kiếm

[Tài liệu lập trình C] Chương 2 Những Kỹ Thuật Nâng Cao


Tóm tắt Xem thử

- Hung Editor: M0N1M [email protected] -3- [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Và đoạn code sẽ thay đổi như sau: C code: #include #include.
- Hung Editor: M0N1M [email protected] -5- [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Ok, không sao, tôi sẽ giải thích lại cho bạn, việc chúng ta thống nhất chung về khái niệm thật sự cần thiết.
- Hung Editor: M0N1M [email protected] -7- [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Chúng ta hãy xem ví dụ đoạn đầu của file jeu.c tôi viết: C code: #include #include #include "game.h" void play (SDL_Surface* screen.
- Hung Editor: M0N1M [email protected] - 12 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Phân tích quá trình Compilation (separate compilation) Bạn đã biết một project được cấu thành bởi nhiều files source, chúng ta sẽ tìm hiểu sâu hơn về cách hoạt động của quá trình biên dịch (compilation).
- Hung Editor: M0N1M [email protected] - 15 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Phạm vi sử dụng (scope) của functions và biến số Trước khi kết thúc bài hướng dẫn, chúng ta sẽ tìm hiểu khái niệm về phạm vi sử dụng của functions và biến số.
- Hung Editor: M0N1M [email protected] - 16 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Các global variables (Biến toàn cục): cần tránh sử dụng Global variable có thể được sử dụng trong tất cả các files Chúng ta có thể khai báo những biến số dùng chung cho tất cả các functions chứa trong tất cả các file của project.
- Hung Editor: M0N1M [email protected] - 17 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Global variable sử dụng riêng cho một file Biến số global mà chúng ta vừa thấy sử dụng được cho tất cả các file trong project.
- Chúng ta có thể tạo ra những biến số dùng riêng cho file chứa nó.
- Hung Editor: M0N1M [email protected] - 20 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Bài 2: Pointer Con trỏ Đã đến lúc chúng ta tìm hiểu về con trỏ.
- Chúng ta không thể sử dụng hai return cùng lúc.
- Hung Editor: M0N1M [email protected] - 25 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Khuyến mãi thêm! Bạn đã biết cách hiển thị giá trị của một biến số, nhưng bạn có biết chúng ta cũng có thể hiển thị địa chỉ của biến số đó? ...Đương nhiên là bạn chưa biết rồi Để hiển thị địa chỉ của một biến số, chúng ta cần sử dụng kí hiệu %p (p ở đây viết tắt của từ pointer) trong printf.
- Bạn cần biết rằng chúng ta cũng có thể viết: int* pointer.
- Thay vì vậy, chúng ta sẽ sử dụng kí tự.
- Hung Editor: M0N1M [email protected] - 29 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Chúng ta bắt đầu tiến vào thế giới huyền diệu của những con trỏ.
- Hung Editor: M0N1M [email protected] - 31 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Để có thể hiểu được 4 điểm chính trên.
- Hung Editor: M0N1M [email protected] - 32 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Tất cả những điều trên là cơ bản.
- Hung Editor: M0N1M [email protected] - 34 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Một cách khác để sử dụng con trỏ trong function Trong những code source mà chúng ta vừa thấy, không có con trỏ trong function main.
- Hung Editor: M0N1M [email protected] - 35 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Trong chương trình "Lớn hơn hay nhỏ hơn", chúng ta đã sử dụng con trỏ bất chấp việc biết nó là gì, trong việc sử dụng function scanf.
- Hung Editor: M0N1M [email protected] - 36 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Giải quyết vấn đề nan giải ở đầu bài? Đã đến lúc chúng ta xem lại tâm điểm của bài học.
- Hung Editor: M0N1M [email protected] - 41 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Tương tự với các ô khác.
- Chúng ta sẽ được học về sau.
- Hung Editor: M0N1M [email protected] - 43 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 tăng dần từ 0, 1, 2 rồi 3.
- Chúng ta sẽ cần một biến số kichThuocArray.
- Hung Editor: M0N1M [email protected] - 46 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Function này không khác nhiều so với function chúng ta được học ở bài trước.
- Hung Editor: M0N1M [email protected] - 49 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Chúng ta thấy ngay rằng chữ A viết hoa đã được thay bằng số 65.
- Chúng ta có thể sử dụng type char chể chứa MộT chữ cái.
- Chúng ta dùng những dấu ngoặc đơn.
- Hung Editor: M0N1M [email protected] - 53 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Bạn sẽ thấy rằng ký tự ‘\0’ sẽ là một lợi thế cho chúng ta.
- Hung Editor: M0N1M [email protected] - 55 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 C code: int main (int argc, char *argv.
- Hung Editor: M0N1M [email protected] - 57 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Tôi sẽ viết function strlen của riêng mình.
- Hung Editor: M0N1M [email protected] - 60 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Function thêm vào string1 nội dung của string2.
- string: chúng ta sẽ tìm kiếm ký tự trong biến này.
- Hung Editor: M0N1M [email protected] - 63 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Thực tế, subString cũng là một pointer như string.
- Hung Editor: M0N1M [email protected] - 64 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Prototype của function này là: char* strpbrk (const char* string, const char* charactersSearch).
- Hung Editor: M0N1M [email protected] - 67 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Tổng kết.
- Trong trường hợp này, chúng ta sẽ sử dụng mảng ký tự.
- Hung Editor: M0N1M [email protected] - 68 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Bài 5: Preprocessor Tiền xử lý Sau những bài học về con trỏ (pointer), mảng (array) và chuỗi kí tự (string), chúng ta sẽ tạm nghỉ ngơi một chút.
- Hung Editor: M0N1M [email protected] - 69 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Chỉ thị #include Giống như tôi từng giải thích trong chương đầu tiên, chúng ta tìm thấy trong mã nguồn những dòng hơi đặc biệt gọi là chỉ thị tiền xử lý (preprocessor directives).
- Hung Editor: M0N1M [email protected] - 72 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Chỉ thị #define Chúng ta sẽ tìm hiểu một preprocessor directives mới: #define.
- Hung Editor: M0N1M [email protected] - 73 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Sau khi qua preprocessor: Code C: int main (int argc, char *argv.
- Hung Editor: M0N1M [email protected] - 77 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Test macro trong code source: C Code: #define CUCKOO.
- Hung Editor: M0N1M [email protected] - 78 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Cần lưu ý là trong main, khi gọi một macro chúng ta không đặt dấu chấm phẩy.
- Hung Editor: M0N1M [email protected] - 84 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Bài 6: Tạo ra những biến kiểu riêng của bạn Ngôn ngữ C cho phép chúng ta làm một số điều thật sự đặc biệt: tạo ra những biến kiểu riêng của bạn, ta có thể gọi là “những biến tự tạo”.
- Hôm nay chúng ta sẽ học về struct (cấu trúc) và kiểu liệt kê (enum).
- Hung Editor: M0N1M [email protected] - 86 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Chúng ta thường dùng một biến tên “x” để biểu diễn giá trị của hoành độ, tương tự như vậy ta sẽ dùng biến “y” để biểu diễn giá trị của tung độ.
- Hung Editor: M0N1M [email protected] - 87 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Cấu trúc Taikhoan chứa 5 biến thành phần, trong đó.
- Hung Editor: M0N1M [email protected] - 88 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Typedef: Trở lại với những file.h có chứa những định nghĩa cấu trúc Toadodiem của chúng ta.
- Hung Editor: M0N1M [email protected] - 89 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Chỉnh sửa các thành phần của cấu trúc: Bây giờ thì biến diembatky đã được khởi tạo, và nếu chúng ta muốn thay đổi những thành phần trong nó thì sao.
- Hung Editor: M0N1M [email protected] - 90 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Vậy tóm lại, để truy cập vào các biến thành phần của cấu trúc chúng ta sẽ viết theo cách sau: C code: tenbientutao.tenBienThanhPhanTrongCauTruc Biến tự tạo diembatky tách biệt với biến thành phần x và y trong cấu trúc Toadodiem.
- Con trỏ: chúng ta thường đặt giá trị là NULL.
- Vì vậy, bây giờ chúng ta sẽ phải học cách sử dụng con trỏ (pointer) trong cấu trúc (struct).
- Hung Editor: M0N1M [email protected] - 94 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Ok, nhưng mà có một vấn đề.
- Nhưng chúng ta cần sử dụng dấu * để truy cập vào và thay đổi giá trị của biến.
- Khi chúng ta viết diembatky.
- như chúng ta đã học ở đầu bài.
- Chúng ta sẽ gán số 0 cho giá trị này.
- Hung Editor: M0N1M [email protected] - 98 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Tổng kết.
- Chúng ta sẽ học về chúng sau.
- Hung Editor: M0N1M [email protected] - 101 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 FILE có cái quái gì trong đó nhưng tôi nghĩ dù có chứa gì đi nữa cũng không ảnh hưởng nhiều đến công việc của chúng ta.
- Nhưng bằng cách sử dụng các hàm chúng ta có thể làm việc được với FILE.
- Hung Editor: M0N1M [email protected] - 102 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Nào bây giờ chúng ta sẽ gọi hàm fopen và lấy giá trị nó đã trả về trong con trỏ taptin.
- Hung Editor: M0N1M [email protected] - 103 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Cá nhân tôi thường sử dụng chế độ “r” (chỉ đọc), “w” (chỉ viết), “r+” (đọc và viết).
- Để đóng một tập tin chúng ta sẽ làm như sau: C code: fclose(taptin).
- Đây là 3 hàm mà chúng ta sẽ học.
- Hung Editor: M0N1M [email protected] - 109 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Hàm fputc: Hàm này sẽ thêm vào tập tin mỗi lần 1 ký tự.
- Hung Editor: M0N1M [email protected] - 111 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Nào bây giờ chúng ta sẽ thử thêm một chuỗi vào tập tin: C code: int main (int argc, char *argv.
- Chúng ta có thể sử dụng cách này để ghi dữ liệu vào một tập tin.
- Sau đây chúng ta sẽ hỏi tuổi printf.
- Hung Editor: M0N1M [email protected] - 113 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Đọc một tập tin: Chúng ta sẽ sử dụng lại hầu hết các hàm dùng để ghi dữ liệu ở trên, chỉ có một chút thay đổi trong tên của chúng: 1.
- Hung Editor: M0N1M [email protected] - 114 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Chúng ta sẽ viết một đoạn code để lần lượt đọc tất cả các ký tự trong tập tin, đồng thời in ra màn hình những ký tự đọc được.
- Hung Editor: M0N1M [email protected] - 121 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Hàm sẽ trả về giá trị 0 nếu đổi tên thành công.
- Hung Editor: M0N1M [email protected] - 122 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Bài 8: Cấp phát động Tất cả những biến mà chúng ta từng sử dụng cho đến bây giờ đều được tự động tạo ra bởi trình biên dịch ngôn ngữ C.
- Hung Editor: M0N1M [email protected] - 123 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Trong chương này chúng ta sẽ: 1.
- Hung Editor: M0N1M [email protected] - 124 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 VD: C code: printf ("char : %d byte\n", sizeof(char.
- Hung Editor: M0N1M [email protected] - 125 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Câu trả lời là có! sizeof.
- Hung Editor: M0N1M [email protected] - 127 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Nếu chúng ta làm điều tương tự với một biến kiểu char, biến sẽ chỉ chiếm một byte trong bộ nhớ như hình sau: Hãy thử tưởng tượng chúng ta có một mảng các biến kiểu int.
- Lần này chúng ta sẽ sử dụng 8 x 100 = 800 byte trong bộ nhớ.
- Chúng ta cần khai báo thư viện .
- Hung Editor: M0N1M [email protected] - 129 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Hàm malloc: Yêu cầu cấp phát bộ nhớ.
- Chúng ta cũng có thể xem nó là một con trỏ linh động.
- Nào chúng ta thực hành thôi.
- Hung Editor: M0N1M [email protected] - 130 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Kiểm tra con trỏ.
- Hung Editor: M0N1M [email protected] - 131 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Chúng ta cần hàm free để giúp giải phóng các vùng địa chỉ của bộ nhớ.
- Hung Editor: M0N1M [email protected] - 133 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Trở lại với đoạn code của chúng ta.
- Hung Editor: M0N1M [email protected] - 135 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 C code: int main (int argc, char *argv.
- Hung Editor: M0N1M [email protected] - 140 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Nhập chữ cái vào màn hình console.
- Chúng ta sẽ phải khai báo thư viện #include ctype.h ở đầu để có thể sử dụng hàm này (đừng quên nhé).
- Hung Editor: M0N1M [email protected] - 142 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Sao lại xuất hiện dấu chấm phẩy ở vị trí kết thúc dòng chứa vòng lặp while và chúng ta cũng không thấy cặp ngoặc nhọn của vòng lặp như ta đã học ở các bài trước.
- Hung Editor: M0N1M [email protected] - 143 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Nếu chúng ta làm như trên, dĩ nhiên là tất cả các từ bí mật của người chơi sẽ giống như nhau, và chả có gì vui cả đúng không.
- Hung Editor: M0N1M [email protected] - 147 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Ví dụ, nếu đến một lúc người chơi tìm được đến *A*E*OO* thì lúc này mảng của chúng ta sẽ có các giá trị thành phần là 01010110 (giá trị 1 cho mỗi ký tự tìm đúng).
- của chúng ta.
- Hung Editor: M0N1M [email protected] - 149 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 C code: if (win(sokytuBimat)) printf ("\n\n Chuc mung, ban da chien thang ! Tu bi mat la : %s", tuBimat).
- Hung Editor: M0N1M [email protected] - 157 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21.
- Hung Editor: M0N1M [email protected] - 158 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Chúng ta sẽ làm vài thứ trong main.c: Bây giờ tập tin danhmuc.c đã sẵn sàng, chúng ta cùng trở lại với main.c để thêm vào một số thứ cho phù hợp.
- Hung Editor: M0N1M [email protected] - 159 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Trên đây chủ yếu là những thay đổi ban đầu, bây giờ chúng ta sẽ đi sâu hơn một chút: C code: if (!chonTu(tuBimat)) exit(0).
- Hung Editor: M0N1M [email protected] - 160 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 Sau đây là tập tin main.c hoàn thiện: C code.
- Hung Editor: M0N1M [email protected] - 161 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 dodaiTu = strlen(tuBimat).
- Hung Editor: M0N1M [email protected] - 162 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21 else printf ("\n\n Xin chia buon, ban da thua !\n\n Tu bi mat la : %s", tuBimat).
- Hung Editor: M0N1M [email protected] - 163 - [email protected] Tài liệu hướng dẫn lập trình C www.siteduzero.com Apprenez à programmer en C Tác giả: M@teo21.
- Hung Editor: M0N1M [email protected] - 164 - [email protected]