Ngô Vũ Trường Giang Deviot – Cùng nhau học lập trình IOT THỰC CHIẾN LẬP TRÌNH C CÙNG DEVIOT.VN FACEBOOK: HTTPS://WWW.COM/GROUPS/DEVIOT.VN WEBSITE: HTTPS://DEVIOT.VN 1 Ngô Vũ Trường Giang Deviot – Cùng nhau học lập trình IOT Lời nói đầu Deviot là trung tâm đào tạo về lập trình nhúng và IoT. Với đội ngũ là các anh chị cựu sinh viên trường Đại học Bách Khoa Hà Nội, có nhiều năm kinh nghiệm trong lĩnh vực và giữ nhiều vị trí quan trọng tại các công ty, tập đoàn hàng đầu cả nước. Với sự kỷ luật, kiên trì và tận tâm của mình, đội ngũ đã dành hết tâm huyết để cho ra mắt những sản phẩm chất lượng nhất đến với cộng đồng các bạn sinh viên kỹ thuật. Hi vọng cuốn sách sẽ trở thành hành trang không thể thiếu với các bạn sinh viên.
Hà Nội, ngày …… tháng…… năm…… Xin chào tất cả các bạn độc giả, mình là Ngô Vũ Trường Giang. Bản thân mình là một cựu sinh viên trường Đại học Bách Khoa Hà Nội, khóa K58 chuyên nghành Kỹ thuật đo và Tin học công nghiệp, sau nhiều năm đi làm, nhận thấy có những vùng kiến thức được sử dụng rất nhiều trong công việc mà hầu hết các bạn sinh viên còn trong trường chưa biết hoặc chưa được tiếp cận dẫn đến có thể đi sai hướng. Mình quyết định cùng đội ngũ Deviot – Cùng nhau học lập trình nhúng và IoT ra mắt một sản phẩm có tên “Thực chiến lập trình C cùng Deviot”, sản phẩm này chắt lọc những vùng kiến thức về lập trình ngôn ngữ C mà bọn mình hay gặp và sử dụng cho các dự án công ty nhất. Hi vọng sản phẩm sẽ đem đến một cái nhìn rõ ràng hơn cho các bạn sinh viên kỹ thuật.
Thông tin liên hệ: Fanpage: https://www.vn Group Facebook: https://www.com/groups/deviot.vn Địa chỉ: Số 101C, ngõ Xã Đàn 2, Hà Nội. FACEBOOK: HTTPS://WWW.COM/GROUPS/DEVIOT.VN WEBSITE: HTTPS://DEVIOT.VN 2 Ngô Vũ Trường Giang Deviot – Cùng nhau học lập trình IOT Xin gửi lời cảm ơn tới những người bạn và các thầy cô giáo giảng viên đã dành thời gian duyệt qua nội dung bản thảo và đưa ra các góp ý để cuốn sách thêm phần cải thiện về nội dung. Tiến sĩ: Bùi Đình Bá Hiện đang là giảng viên bộ môn Cơ điện tử - Đại học Bách Khoa Hà Nội. “Cuốn sách có nội dung chi tiết, được trình bày dễ hiểu và đào sâu vào các kĩ thuật hay sử dụng trong lập trình C.
Phù hợp với các bạn muốn tìm hiểu từ đầu cũng như chuyên sâu.” Bạn: Nguyễn Minh Huy Founder đội ngũ BKStar. Từng dẫn dắt cả đội tham gia các cuộc thi về Robotcon toàn quốc. Từ khi còn học tập trong trường Huy đã tham gia nhiều dự án kỹ thuật lớn và giành luôn tấm bằng xuất sắc của Đại học Bách Khoa Hà Nội. “Nội dung cuốn sách hay và được trình bày rất khoa học.
Đi từ nội dung cơ bản đến nâng cao nhưng lại rất dễ hiểu chứ không hề hàn lâm. Mình sẽ khuyên các bạn sinh viên sử dụng cuốn sách này.” Địa điểm mua sách Offline 1. Linh kiện điện tử Tuhu Địa chỉ: Số 2, ngõ 106 Lê Thanh Nghị, phường Bách Khoa, Hai Bà Trưng, Hà Nội. Website: https://mualinhkien.
Quán photo sau thư viên Tạ Quang Bửu FACEBOOK: HTTPS://WWW.COM/GROUPS/DEVIOT.VN WEBSITE: HTTPS://DEVIOT.VN 3 Ngô Vũ Trường Giang Deviot – Cùng nhau học lập trình IOT Mục Lục Bài 1: Giới thiệu về ngôn ngữ lập trình C. Ngôn ngữ C là gì ?. Bạn có cần học lập trình C không ?. IDE là gì, Text Editor là gì, Compiler là gì ?.
Quá trình biên dịch một chương trình C/C++. Một số trang web học C bằng tiếng việt hiệu quả. Cách học C hiệu quả. Công cụ lập trình.
Thực hành chương trình đầu tiên “Hello World”. 11 Bài 2: Toán tử trong C và các thuật toán sắp xếp. Toán tử trong C .1 Toán tử số học .2 Toán tử tăng giảm .4 Toán tử quan hệ .5 Toán tử logic .6 Toán tử thao tác trên bit.7 Toán tử 3 ngôi. Ba thuật toán sắp xếp được sử dụng nhiều trong C .1 Thuật toán chèn(insertion sort).2 Thuật toán sắp xếp lựa chọn (selection sort) .3 Thuật toán sắp xếp nổi bọt (Bubble Sort).
25 Buổi 3: Kiểu dữ liệu và biến. Kiểu dữ liệu .1 Kiểu số nguyên .2 Kiểu số thực. Định dạng trong C. Biến số là gì ?.1 Thế nào là một biến số ? .2 Cách khai báo một biến số ?.
Biến toàn cục. Biến cục bộ. 34 FACEBOOK: HTTPS://WWW.COM/GROUPS/DEVIOT.VN WEBSITE: HTTPS://DEVIOT.VN 4 Ngô Vũ Trường Giang Deviot – Cùng nhau học lập trình IOT 6.1 Biến static trong khai báo biến cục bộ.2 Biến static trong khai báo biến toàn cục và khai báo hàm. Từ khóa const .1 Khi khai báo một biến .2 Khi khai báo một con trỏ.
Từ khóa extern. Từ khóa volatile. 38 Buổi 4: Vòng lặp. Điều kiện If, else if, else .1 Câu lệnh If .2 Câu lệnh If else .3 Câu lệnh if … elseif … else.
Lệnh switch case. Vòng lặp for. Từ khóa continue. Vòng lặp while.
Từ khóa break. Truyền tham chiếu và truyền tham trị là gì ? .1 Truyền tham chiếu .2 Truyền tham trị. 54 Buổi 6: Mảng, chuỗi và con trỏ.2 Truy cập các phần tử của mảng.3 Thao tác trên mảng .1 Khởi tạo mảng 2 chiều .2 Thao tác với mảng 2 chiều.2 Các thao tác với chuỗi.1 Con trỏ là gì?.2 Cách khai báo con trỏ .3 Gán giá trị cho con trỏ. 63 FACEBOOK: HTTPS://WWW.COM/GROUPS/DEVIOT.VN WEBSITE: HTTPS://DEVIOT.VN 5 Ngô Vũ Trường Giang Deviot – Cùng nhau học lập trình IOT 4.4 Toán tử tăng giảm của con trỏ .5 Truyền con trỏ vào hàm.6 Trả về con trỏ trong hàm.7 Mối quan hệ giữa con trỏ và mảng.
Con trỏ cấp 2 (Pointer to pointer). 69 Buổi 7: Giới thiệu thư viện <string. Hàm memset – memcpy – memcmp. Toán tử sizeof.
So sánh sizeof và strlen. 81 Buổi 8: Struct , Enum, Union .1 Struct là gì? Và chúng ta dùng struct như thế nào nhỉ? .2 Truy xuất các thuộc tính của struct.3 Kích thước của struct .4 Vấn đề phân mảnh bộ nhớ trong vi điều khiển .5 Chống phân mảnh bộ nhớ .6 Một số ví dụ về struct. 94 Bài 9: State machine và ứng dụng trong lập trình nhúng. State machine là gì ?.
Cách State machine hoạt động. 98 Buổi 10: Bộ tiền xử lý và cách tạo thư viện trong C. Giai đoạn tiền xử lý và Macro.1 Giai đoạn tiền xử lý. Chị thị tiền xử lý.
102 FACEBOOK: HTTPS://WWW.COM/GROUPS/DEVIOT.VN WEBSITE: HTTPS://DEVIOT.VN 6 Ngô Vũ Trường Giang Deviot – Cùng nhau học lập trình IOT 2.3 Các chỉ thị tiền xử lý điều kiện (#ifdef, #ifndef, #if, #endif, #else and #elif). Cách để tạo File thư viện trong lập trình C. 107 Buổi 11: Kỹ thuật ép kiểu, xử lý lỗi thường gặp khi code. Kiểu dữ liệu và phạm vi.1 Kiểu số nguyên .2 Kiểu số thực.
Kỹ thuật ép kiểu. Các loại lỗi trong lập trình C .2 Lỗi thực thi. Các kỹ thuật xử lý lỗi.1 Chỉ thị tiền xử lý #error.2 Tạo các hàm log theo chức năng .3 Viết hàm kiểm tra thông số đầu vào .4 Một số macro hữu ích trong việc debug. 118 Buổi 12: Con trỏ hàm.
Vậy con trỏ hàm là gì ?. Khai báo con trỏ hàm và cách sử dụng .1 Khai báo tường minh .2 Khai báo không tường minh. Truyền hàm vào hàm. 121 Buổi 13: Bộ đệm vòng.
Tại sao phải sử dụng bộ đệm vòng. Chúng ta thường sử dụng bộ đệm vòng ở đâu ? .1 Thư viện RingBuf .2 Các sử dụng RingBuf. 126 Buổi 14: Bài tập thực chiến. 130 THAM KHẢO NGUỒN TÀI LIỆU.
136 FACEBOOK: HTTPS://WWW.COM/GROUPS/DEVIOT.VN WEBSITE: HTTPS://DEVIOT.VN 7 Ngô Vũ Trường Giang Deviot – Cùng nhau học lập trình IOT Bài 1: Giới thiệu về ngôn ngữ lập trình C 1. Ngôn ngữ C là gì ? C là một ngôn ngữ lập trình cấp trung được phát triển bởi Dennis M. Ritchie để phát triển hệ điều hành UNIX tại Bell Labs. C được thực thi lần đầu tiên trên máy tính DEC PDP-11 vào năm 1972.
Năm 1978, Brian Kernighan và Dennis Ritchie đưa ra mô tả C đầu tiên công khai về C, nay được gọi là tiêu chuẩn K & R. Ngôn ngữ C được phát triển để tạo ra các ứng dụng hệ thống trực tiếp tương tác với các thiết bị phần cứng như trình điều khiển, kernals vv. Ngôn ngữ lập trình Java, Hệ điều hành UNIX, trình biên dịch C và tất cả các chương trình ứng dụng UNIX đều đã được viết bằng C. Lập trình C được coi là cơ sở cho các ngôn ngữ lập trình khác, đó là lý do tại sao nó được biết đến như là ngôn ngữ mẹ.
Hầu hết các trình biên dịch, JVMs, Kernals vv được viết bằng ngôn ngữ C và hầu hết các ngôn ngữ theo cú pháp C, như C ++, Java vv. Nó cung cấp các khái niệm cốt lõi như mảng, chức năng, xử lý tập tin vv được sử dụng trong nhiều ngôn ngữ như C ++, java, C # v. Bạn có cần học lập trình C không ? Câu trả lời là rất rất cần thiết. Vì sao vậy ? Như giới thiệu ở trên, C được coi là ngôn ngữ mẹ của tất cả ngôn ngữ hiện đại.
Vì vậy việc học và biết cách lập trình C gần như là bắt buộc, nó giống như việc các bạn hành trang cho mình một kiến thức nền thật chắc chắn thì mới có thể học lên các ngôn ngữ lập trình bậc cao hơn dễ dàng được. Vậy lập trình ngôn ngữ C trong nghành IT và lập trình ngôn ngữ C trong ngành nhúng và IoT có gì khác nhau ? Các bạn biết rằng hầu hết các lập trình viên nghành IT đều viết các chương trình để chạy trên các thiết bị có cấu hình rất mạng ví dụ như máy tính, laptop, cloud… Trong khi đặc thù của nghành nhúng là lập trình cho những con chip, máy tính nhúng có bộ nhớ RAM, ROM và tài nguyên vô cùng hạn chế. Vì vậy chúng ta không thể tùy tiện khai báo sử dụng tài nguyên RAM một cách hoang phí được. Thay vào đó các bạn sẽ phải tính toán và tiết FACEBOOK: HTTPS://WWW.COM/GROUPS/DEVIOT.VN WEBSITE: HTTPS://DEVIOT.VN 8 Ngô Vũ Trường Giang Deviot – Cùng nhau học lập trình IOT kiệm từng phần tài nguyên nhỏ.
Bất cứ một thao tác sử dụng quá nhiều tài nguyên cũng có thể gây ra các lỗi Hard Fault, Stack overflow… 3. IDE là gì, Text Editor là gì, Compiler là gì ? IDE (Integrated Development Environment) là môi trường tích hợp dùng để viết code để phát triển ứng dụng.