Giáo trình ngôn ngữ lập trình C - Trương Ngọc Sơn, Lê Minh, Trương Ngọc Hà, Lê Minh Thành

211 19 0
Giáo trình ngôn ngữ lập trình C - Trương Ngọc Sơn, Lê Minh, Trương Ngọc Hà, Lê Minh Thành

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH NĂM XÂY DỰNG VÀ PHÁT TRIỂN 60 TRƯƠNG NGỌC SƠN - LÊ MINH TRƯƠNG NGỌC HÀ - LÊ MINH THÀNH GIÁO TRÌNH NGƠN NGỮ LẬP TRÌNH C (Ngành Kỹ thuật máy tính) NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT THÀNH PHỐ HỒ CHÍ MINH ******************* TS TRƯƠNG NGỌC SƠN ThS LÊ MINH ThS TRƯƠNG NGỌC HÀ ThS LÊ MINH THÀNH GIÁO TRÌNH NGƠN NGỮ LẬP TRÌNH C (Ngành Kỹ thuật Máy tính) NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH – NĂM 2020 GIÁO TRÌNH NGƠN NGỮ LẬP TRÌNH C (Ngành kỹ thuật máy tính) TRƯƠNG NGỌC SƠN, LÊ MINH, TRƯƠNG NGỌC HÀ, LÊ MINH THÀNH Chịu trách nhiệm xuất nội dung TS ĐỖ VĂN BIÊN Biên tập LÊ THỊ THU THẢO Sửa in PHAN KHƠI Trình bày bìa TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH Website: http://hcmute.edu.vn Đối tác liên kết – Tổ chức thảo chịu trách nhiệm tác quyền TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HỒ CHÍ MINH Website: http://hcmute.edu.vn NHÀ XUẤT BẢN ĐẠI HỌC QUỐC GIA THÀNH PHỐ HỒ CHÍ MINH Phịng 501, Nhà Điều hành ĐHQG-HCM, phường Linh Trung, quận Thủ Đức, TP Hồ Chí Minh ĐT: 028 6272 6361 - 028 6272 6390 E-mail: vnuhp@vnuhcm.edu.vn Website: www.vnuhcmpress.edu.vn VĂN PHÒNG NHÀ XUẤT BẢN PHÒNG QUẢN LÝ DỰ ÁN VÀ PHÁT HÀNH Tòa nhà K-Trường Đại học Khoa học Xã hội & Nhân văn, số 10-12 Đinh Tiên Hồng, phường Bến Nghé, quận 1, TP Hồ Chí Minh ĐT: 028 66817058 - 028 62726390 - 028 62726351 Website: www.vnuhcmpress.edu.vn Nhà xuất ĐHQG-HCM tác giả/đối tác liên kết giữ quyền© Copyright © by VNU-HCM Press and author/ co-partnership All rights reserved ISBN: 978-604-73-7623-0 In số lượng 300 cuốn, khổ 16 x 24 cm, XNĐKXB số: 1296-2020/CXBIPH/8-33/ĐHQGTPHCM QĐXB số 38/QĐ-NXBĐHQGTPHCM cấp ngày 21/4/2020 In tại: Công ty TNHH In Bao bì Hưng Phú Địa chỉ: 162A/1- KP1A – P.An Phú – TX Thuận An – Bình Dương Nộp lưu chiểu: Q II/2020 GIÁO TRÌNH NGƠN NGỮ LẬP TRÌNH C (Ngành kỹ thuật máy tính) TRƯƠNG NGỌC SƠN, LÊ MINH, TRƯƠNG NGỌC HÀ, LÊ MINH THÀNH Bản tiếng Việt ©, TRƯỜNG ĐẠI HỌC SƯ PHẠM KỸ THUẬT TP HCM, NXB ĐHQG-HCM TÁC GIẢ Bản quyền tác phẩm bảo hộ Luật Xuất Luật Sở hữu trí tuệ Việt Nam Nghiêm cấm hình thức xuất bản, chụp, phát tán nội dung chưa có đồng ý Trường đại học Sư phạm Kỹ thuật TP HCM Tác giả ĐỂ CÓ SÁCH HAY, CẦN CHUNG TAY BẢO VỆ TÁC QUYỀN! LỜI NĨI ĐẦU Trong ngành cơng nghiệp đại, hệ thống tự động trở nên phổ biến, hiệu quả, dần thay hệ thống điều khiển tay Trong hệ thống tự động, thiết bị lập trình đóng vai trị chủ đạo Đặc biệt kỷ ngun cơng nghiệp cách mạng cơng nghiệp 4.0, tự động hố, vạn vật kết nối (IoT), thông minh nhân tạo (AI) thiết bị lập trình, hệ thống lập trình chiếm ưu sức mạnh cơng nghệ Ở góc nhìn kỹ thuật, ngơn ngữ lập trình công cụ cần thiết để tiếp cận công nghệ, đặc biệt cách mạng công nghiệp 4.0 Ngôn ngữ lập trình khơng cung cấp kiến thức lập trình, cịn giúp rèn luyện khả tư duy, thơng qua việc giải tốn, giải thuật lập trình điều khiển Hiện có nhiều ngơn ngữ lập trình khác nhau, ngơn ngữ mạnh, phạm vi áp dụng riêng Tuy nhiên, Ngơn ngữ lập trình C lựa chọn để dạy khối kỹ thuật C ngôn ngữ chuẩn tảng Nhiều ứng dụng, có ứng dụng hệ thống, xây dựng từ ngôn ngữ C Mặt khác, ngôn ngữ C xem ngôn ngữ nguồn gốc tảng ngôn ngữ lập trình cấp cao (high-level programming language) Theo quan sát kinh nghiệm thực tế, ngôn ngữ phát triển sau dựa kiến trúc, có cấu trúc câu lệnh, vận hành câu lệnh giống ngơn ngữ C Do đó, việc học tốt, hiểu vận dụng tốt ngôn ngữ C giúp lập trình viên dễ dàng tiếp cận ngơn ngữ lập trình đại khác Tài liệu Giáo trình Ngơn ngữ lập trình C cung cấp cho sinh viên khối kỹ thuật kiến thức sở ngơn ngữ lập trình, ngơn ngữ lập trình C, hiểu đối tượng ngơn ngữ lập trình, hiểu cách vận hành câu lệnh, cấu trúc điều kiện, cấu trúc lập, hàm, mảng, trỏ Từ người học vận dụng vào lĩnh vực khác lập trình giao diện, lập trình game, lập trình vi điều khiển, vi xử lý, lập trình cho thiết bị lập trình được… Kỹ thuật lập trình địi hỏi nhiều kỹ tư duy, kinh nghiệm kiến thức Trong đó, kỹ tư cách mà người lập trình đưa giải thuật để giải toán hiệu Kinh nghiệm giúp người lập trình chuyển đổi từ ý tưởng sang chương trình cách tối ưu Chính thế, học lập trình địi hỏi nhiều yếu tố số môn học khác Cụ thể, thực hành địi hỏi kèm theo song song với q trình học lý thuyết Quá trình thực hành giúp người học hình dung được, nắm cách vận hành cấu trúc lệnh Do đó, nhóm biên soạn cố gắng trình bày cụ thể lý thuyết, giải thích chương trình đưa số ví dụ mẫu nhằm giúp người học tiếp cận kỹ thuật lập trình cách dễ Để đạt hiệu cao trình học tập, người học cần thực hành lại ý tưởng lập trình, mẫu trình bày tài liệu Giáo trình gồm phần sau: Chương 1: Giới thiệu Chương 2: Lệnh rẽ nhánh có điều kiện Chương 3: Lệnh vịng lặp Chương 4: Mảng chuỗi Chương 5: Con trỏ Chương 6: Hàm Chương 7: Kiểu liệu tự tạo Chương 8: Tiền xử lý Cuối cùng, cố gắng biên soạn chỉnh sửa hẳn tránh khỏi thiếu sót, mong nhận đóng góp quý báu từ sinh viên quý đồng nghiệp để tài liệu hoàn thiện lần tái Mọi ý kiến phản hồi xin gửi về: Bộ mơn Kỹ thuật Máy tính – Viễn thông, Khoa Điện-Điện tử, Trường Đại học Sư phạm Kỹ thuật TP HCM Email: sontn@hcmute.edu.vn, leminh@hcmute.edu.vn, hatn@ hcmute.edu.vn, thanhlm@hcmute.edu.vn Nhóm tác giả MỤC LỤC LỜI NĨI ĐẦU Chương GIỚI THIỆU 1.1 CHƯƠNG TRÌNH VÀ NGƠN NGỮ LẬP TRÌNH 1.2 GIẢI THUẬT VÀ LƯU ĐỒ 13 1.3 NGƠN NGỮ LẬP TRÌNH C 19 1.4 MỘT CHƯƠNG TRÌNH C ĐƠN GIẢN 20 1.5 MỘT CHƯƠNG TRÌNH C KHÁC: CỘNG HAI SỐ NGUYÊN 24 1.6 CÁC BƯỚC BIÊN DỊCH CHƯƠNG TRÌNH C 27 1.7 TỪ KHĨA VÀ TÊN GỌI 28 1.8 BIẾN 30 1.9 HẰNG SỐ 34 1.10 CÁC PHÉP TOÁN TRONG C 35 1.11 XUẤT NHẬP DỮ LIỆU 42 1.11.1 Hàm nhập liệu 42 1.11.2 Hàm xuất liệu 43 1.12 BÀI TẬP 44 Chương LỆNH RẼ NHÁNH CÓ ĐIỀU KIỆN 47 2.1 LỆNH ĐƠN VÀ LỆNH PHỨC 47 2.1.1 Lệnh đơn 47 2.1.2 Lệnh phức/ Khối lệnh 47 2.2 CÁC DẠNG CẤU TRÚC CHƯƠNG TRÌNH 48 2.2.1 Cấu trúc 48 2.2.2 Cấu trúc rẽ nhánh 50 2.3 LỆNH RẼ NHÁNH IF 51 2.3.1 Lệnh if thiếu 51 2.3.2 Lệnh if đủ 55 2.3.3 Lệnh if … else if … else 57 2.3.4 Cấu trúc if lồng 60 2.4 TỐN TỬ ĐIỀU KIỆN BA NGƠI 61 2.5 LỆNH RẼ NHÁNH SWITCH CASE 62 2.5.1 Cú pháp 62 2.5.2 Hoạt động 62 2.5.3 Giải thích 63 2.5.4 Ví dụ minh họa 64 2.6 BÀI TẬP 66 Chương LỆNH VÒNG LẶP 71 3.1 LỆNH for 71 3.1.1 Cú pháp 71 3.1.2 Hoạt động 71 3.1.3 Ví dụ minh họa 73 3.2 LỆNH WHILE 77 3.2.1 Cú pháp 77 3.2.2 Hoạt động 77 3.2.3 Ví dụ minh họa 78 3.3 LỆNH DO WHILE 81 3.3.1 Cú pháp 81 3.3.2 Hoạt động 81 3.3.3 Ví dụ minh họa 82 3.4 CÂU LỆNH BREAK 84 3.5 CÂU LỆNH CONTINUE 85 3.6 CÂU LỆNH GOTO VÀ NHÃN 86 3.7 BÀI TẬP 88 Chương MẢNG VÀ CHUỖI 93 4.1 MẢNG 93 4.1.1 Mảng chiều 93 4.1.2 Mảng chiều 103 4.2 CHUỖI VÀ MẢNG CHUỖI 106 4.2.1 Chuỗi 106 4.2.2 Mảng chuỗi 109 4.2.3 Một số hàm liên quan đến ký tự chuỗi ký tự .110 4.3 BÀI TẬP .115 Chương CON TRỎ 121 5.1 GIỚI THIỆU 121 5.2 KHAI BÁO VÀ SỬ DỤNG CON TRỎ 122 5.3 CON TRỎ VÀ MẢNG 124 5.4 CẤP PHÁT BỘ NHỚ ĐỘNG 127 5.4.1 Hàm malloc 129 5.4.2 Hàm free() 130 5.4.3 Hàm calloc realloc 131 5.5 BÀI TẬP 134 Chương HÀM 136 6.1 GIỚI THIỆU 136 6.2 ĐỊNH NGHĨA HÀM 137 6.3 PHÂN LOẠI HÀM THEO THAM SỐ VÀ GIÁ TRỊ TRẢ VỀ 140 6.4 KHAI BÁO HÀM 147 6.5 TRUYỀN THAM SỐ CHO HÀM 148 6.5.1 Truyền giá trị cho tham số hàm 148 6.5.2 Truyền địa cho tham số hàm 149 6.5.3.Truyền mảng cho hàm 151 6.6 ĐỆ QUY 154 6.7 MỘT SỐ HÀM THƯ VIỆN CHUẨN 156 6.8 BÀI TẬP 156 Chương KIỂU DỮ LIỆU TỰ TẠO 159 7.1 KIỂU CẤU TRÚC 159 7.1.1 Giới thiệu kiểu cấu trúc 159 7.1.2 Định nghĩa kiểu cấu trúc 159 7.1.3 Khai báo biến kiểu cấu trúc 161 Tắt in thơng báo “Tat ca thiet bi da Tat” c Tìm in danh sách thiết bị sản xuất từ năm 2018 trở trước d Cho phép người dùng tìm kiếm thơng tin thiết bị cách nhập vào mã thiết bị để tìm kiếm Nếu tìm thấy in thơng tin thiết bị tìm thầy, khơng tìm thấy in thơng báo “Khong tim thay” Viết chương trình ở bài tập xử lý cho n thiết bị, yêu cầu cấp phát động bộ nhớ cho mảng cấu trúc Tạo cấu trúc để quản lý danh bạ điện thoại với các nội dung:  Họ tên  Số điện thoại  Địa chỉ Viết chương trình quản lý danh bạ điện thoại với các chức sau: a In menu lựa chọn với tủy chọn: Nhập số 1: Thêm tên vào danh bạ Nhập số 2: Tìm theo số điện thoại nhập vào Nhập số 3: Thoát chương trình b Chương trình xử lý theo lựa chọn người dùng sau nhập số tương ứng với menu chức năng, xử lý chức Thêm tên, danh bạ lưu được tối đa 40 số 194 CHƯƠNG TIỀN XỬ LÝ Mục tiêu: Sau kết thúc chương này, người đọc có thể: - Khai báo thư viện thị bao hàm tệp - Khai báo đối tượng thay thị định nghĩa - Sử dụng thị điều khiển trình biên dịch để biên dịch khơng biên dịch đoạn chương trình 8.1 GIỚI THIỆU Tiền xử lý (preprocessor) xử lý đơn giản có chức xử lý tập tin mã nguồn trước trình biên dịch đọc biên dịch chúng Các tiền xử lý ngôn ngữ C bắt đầu với số từ khóa đặc biệt, bắt đầu tiền xử lý ký tự # Bộ tiền xử lý thay lệnh tiền xử lý đoạn chương trình, đoạn lệnh tương ứng đặt tập tin mã nguồn Chương giới thiệu đến người đọc số tiền xử lý thông dụng cách sử dụng chúng để tạo chương trình tối ưu Các tiền xử lý không theo nguyên tắc giống lệnh chương trình C Quá trình tiền xử lý thực trước trình biên dịch diễn ra, biểu diễn hình 8.1 Tệp mã nguồn Tiền xử lý Tệp mã nguồn tiền xử lý Trình biên dịch Hình 8.1 Sơ đồ khối trình tệp mã nguồn tiền xử lý trước đưa đến trình biên dịch 195 8.2 CHỈ THỊ BAO HÀM TỆP (INCLUDE) Chỉ thị bao hàm tệp (include) xuất hầu hết chương trình C Chỉ thị bao hàm tệp sử dụng để khai báo thư viện, đồng thời sử dụng để khai báo tệp tiêu đề (header file) Trong ví dụ chương trước đó, thường bắt gặp thị bao hàm tệp sau: #include #include #include “myfile.h” Khai báo cho phép tiền xử lý đính kèm mã nguồn hàm thư viện stdio.h thư viện math.h hàm gọi Khi sử dụng cặp ký hiệu < >, tiền xử lý tự hiểu tệp thư viện lưu thư mục mà trình biên dịch cài đặt hệ thống Mặt khác, sử dụng cặp ký hiệu “ “, tiền xử lý tìm tệp có tên tương ứng thư mục với tệp mã nguồn, nơi khai báo bao hàm tệp Ngoài việc khai báo thư viện chuẩn, thị bao hàm tệp sử dụng rộng rãi khai báo tập tiêu đề Trong ví dụ tài liệu, chương trình đơn giản đặt tệp mã nguồn Thực tế chương trình hệ thống phức tạp hơn, số lượng hàm nhiều chia nhiều tệp mã nguồn khác Chương trình gọi hàm mà hàm định nghĩa tệp mã nguồn khác Lúc này, hàm cần khai báo tệp tiêu đề Ví dụ: Viết chương trình thực yêu cầu sau: nhập mảng n phần tử, in phần tử mảng, tìm giá trị lớn nhất, nhỏ phần tử mảng Tính giá trị trung bình phần tử lớn phần tử nhỏ mảng Hoán đổi phần tử lớn phần tử cuối mảng In mảng theo thứ tự tăng dần Mỗi chức viết dạng hàm 196 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 /*chapter08.c*/ #include #include void Sapxepmang(int a[],int n); void Inmang(int a[],int n); void Nhapmang(int a[],int n); int Timmax (int *a,int n); int Timmin (int *a,int n); void Hoanvi(int *x, int *y); float Tinhtrungbinh(int a, int b); void main (void) { int *arr; int n ; int max, min; float tb; do{ printf(“ Nhap n “); scanf(“%d”,&n); }while(n

Ngày đăng: 29/04/2022, 06:06

Tài liệu cùng người dùng

Tài liệu liên quan