Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 44 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
44
Dung lượng
734,85 KB
Nội dung
BỘ LAO ĐỘNG - THƯƠNG BINH VÀ XÃ HỘI TỔNG CỤC DẠY NGHỀ GIÁO TRÌNH Mơn học: LẬP TRÌNH C NGHỀ: QUẢN TRỊ MẠNG TRÌNH ĐỘ: CAO ĐẲNG NGHỀ ( Ban hành kèm theo Quyết định số: 120/QĐ-TCDN ngày 25 tháng 02 năm 2013 Tổng cục trưởng Tổng cục dạy nghề) Hà Nội, năm 2013 TUYÊN BỐ BẢN QUYỀN: Tài liệu thuộc loại sách giáo trình nên nguồn thơng tin phép dùng ngun trích dùng cho mục đích đào tạo tham khảo Mọi mục đích khác mang tính lệch lạc sử dụng với mục đích kinh doanh thiếu lành mạnh bị nghiêm cấm MÃ TÀI LIỆU: MH18 LỜI GIỚI THIỆU Ngày nay, khoa học máy tính thâm nhập vào lĩnh vực Tự động hóa ngành chủ chốt điều hướng phát triển giới Bất ngành nghề cần phải hiểu biết nhiều Cơng nghệ Thơng tin lập trình nói chung Cụ thể, C ngơn ngữ lập trình cấp cao mà lập trình viên cần phải biết Vì thế, giáo trình này, nghiên cứu chi tiết cấu trúc ngôn ngữ C Môn học tảng để tiếp thu hầu hết mơn học khác chương trình đào tạo Mặt khác, nắm vững ngôn ngữ C sở để phát triển ứng dụng Học xong môn này, sinh viên phải nắm vấn đề sau: - Khái niệm ngơn ngữ lập trình - Khái niệm kiểu liệu - Kiểu liệu có cấu trúc (cấu trúc liệu) - Khái niệm giải thuật - Ngôn ngữ biểu diễn giải thuật - Ngôn ngữ sơ đồ (lưu đồ), sử dụng lưu đồ để biểu diễn giải thuật - Tổng quan Ngôn ngữ lập trình C - Các kiểu liệu C - Các lệnh có cấu trúc - Cách thiết kế sử dụng hàm C - Một số cấu trúc liệu C Hà Nội, ngày 25 tháng 02 năm 2013 Tham gia biên soạn Chủ biên Trần Thị Hà Khuê Thành viên Võ Thị Ngọc Tú Thành viên Dương Hiển Tú MỤC LỤC LỜI GIỚI THIỆU MỤC LỤC Vị trí, tính chất, ý nghĩa vai trị mơn học: Mục tiêu môn học: Nội dung môn học: CHƯƠNG 1: GIỚI THIỆU VỀ NGÔN NGỮ C 1.1 TỔNG QUAN VỀ NGÔN NGỮ LẬP TRÌNH C 1.2 KHỞI ĐỘNG VÀ THỐT KHỎI CHƯƠNG TRÌNH C 11 1.2.1 KHỞI ĐỘNG CHƯƠNG TRÌNH C 11 1.2.2 THOÁT KHỎI CHƯƠNG TRÌNH C 12 1.2.3 CÁC VÍ DỤ ĐƠN GIẢN 12 CHƯƠNG 2: CÁC THÀNH PHẦN CƠ BẢN TRONG NGÔN NGỮ C 14 2.1 Từ khóa 14 2.1.1 Bộ chữ viết C 14 2.1.2 Từ khóa 15 2.2 Tên 15 2.3 Kiểu liệu 16 2.3.1 Kiểu số nguyên 16 2.3.2 Kiểu số thực 17 2.4 Các phép toán 17 2.4.1 Các phép toán số học 17 2.4.2 Các phép toán quan hệ logic 18 2.4.3 Phép toán tăng giảm 20 2.4.4 Thứ tự ưu tiên phép toán 21 2.5 Ghi 22 2.5.1 Ghi 22 2.5.2 Cấu trúc chương trình C 23 2.6 Khai báo biến 24 2.6.1 Biến 24 2.6.2 Vị trí khai báo biến C 25 2.6.3 Biểu thức 25 2.7 Nhập/xuất liệu 26 2.7.1 Lệnh gán 26 2.7.2 Lệnh nhập 27 2.7.3 Lệnh xuất 28 2.8 Bài tập thực hành 29 CHƯƠNG 3: CẤU TRÚC RẼ NHÁNH CÓ ĐIỀU KIỆN 30 3.1 Lệnh khối lệnh 30 3.1.1 Lệnh 30 3.1.2 Khối lệnh 30 3.2 Lệnh if 31 3.2.1 Dạng (if thiếu) 31 3.2.2 Bài tập thực hành 32 3.2.3 Dạng (if đủ) 32 3.2.4 Bài tập thực hành 33 3.2.5 Cấu trúc else if 33 3.2.6 Bài tập thực hành 35 3.2.7 Cấu trúc if lồng 35 3.2.8 Bài tập thực hành 37 3.3 Lệnh switch() 37 3.3.1 Cấu trúc switch…case (switch thiếu) 37 3.3.2 Bài tập thực hành 39 3.3.3 Cấu trúc switch…case…default (switch đủ) 40 3.3.4 Bài tập thực hành 42 3.3.5 Cấu trúc switch lồng 42 3.3.6 Bài tập thực hành 44 CHƯƠNG 4: CẤU TRÚC VÒNG LẶP 45 4.1 Lệnh for 45 4.2 Lệnh break 48 4.3 Lệnh continue 49 4.4 Lệnh while 50 4.5 Lệnh while 51 4.6 Vòng lặp lồng 53 4.7 So sánh khác vòng lặp 54 4.8 Bài tập thực hành 54 CHƯƠNG 5: HÀM 55 5.1 Các ví dụ hàm 55 5.1.1 Khái niệm hàm 55 5.1.2 Các ví dụ hàm 57 5.2 THAM SỐ DẠNG THAM BIẾN VÀ THAM TRỊ 61 5.2.1 Tham số dạng tham trị 61 5.2.2 Bài tập thực hành tham trị 63 5.2.3 Tham số dạng tham biến 63 5.2.4 Bài tập thực hành 64 5.3 SỬ DỤNG BIẾN TOÀN CỤC 65 5.3.1 Sử dụng biến toàn cục 65 5.3.2 Bài tập thực hành 67 5.4 Dùng dẫn hướng #define 70 CHƯƠNG 6: MẢNG VÀ CHUỖI 72 6.1 GIỚI THIỆU KIỂU DỮ LIỆU “KIỂU MẢNG” TRONG C 72 6.2 MẢNG MỘT CHIỀU 73 6.2.1 Khai báo 73 6.2.2 Truy xuất phần tử mảng 74 6.2.3 Bài tập thực hành 77 6.3 MẢNG NHIỀU CHIỀU 78 6.3.1 Khai báo 79 6.3.2 Truy xuất phần tử mảng hai chiều 80 6.3.3 Bài tập thực hành 82 6.4 CHUỖI 83 6.4.1 KHÁI NIỆM 84 6.4.2 KHAI BÁO 84 6.4.3 CÁC THAO TÁC TRÊN CHUỖI KÝ TỰ 85 6.4.4 Bài tập thực hành 90 TÀI LIỆU THAM KHẢO 93 MƠN HỌC LẬP TRÌNH C Mã mơn học: MH18 Vị trí, tính chất, ý nghĩa vai trị mơn học: - Vị trí: Mơn học bố trí sau sinh viên học xong môn học chung, môn học sở chuyên ngành đào tạo chun mơn nghề - Tính chất: Lập trình C môn học lý thuyết sở nghề - Ý nghĩa vai trị: Mơn học tảng để tiếp thu hầu hết môn học khác chương trình đào tạo Mặt khác, nắm vững ngơn ngữ C sở để phát triển ứng dụng Mục tiêu mơn học: - Trình bày cơng dụng ngơn ngữ lập trình C; - Trình bày cú pháp, cơng dụng câu lệnh ngơn ngữ C; - Phân tích chương trình: xác định nhiệm vụ chương trình (phải làm gì?) - Viết chương trình thực chương trình đơn giản máy tính ngơn ngữ C - Bố trí làm việc khoa học đảm bảo an tồn cho người phương tiện học tập Nội dung môn học: Số TT I II Tên chương, mục Giới thiệu ngôn ngữ C Các thành phần ngôn ngữ C Từ khóa Tên Kiểu liệu Ghi Khai báo biến Nhập/xuất liệu III Cấu trúc rẽ nhánh có điều kiện Lệnh khối lệnh Lệnh if Lệnh switch IV Cấu trúc vòng lặp Lệnh for Lệnh Break Lệnh continue Thời gian Tổng Lý Thực Kiểm số thuyết hành tra* (LT Bài tập hoặcTH) 1 12 12 6 Số TT Tên chương, mục Lệnh while Lệnh do…while Vòng lặp lồng So sánh khác vòng lặp V Hàm Các ví dụ hàm Tham số dạng tham biến tham trị Sử dụng biến toàn cục Dùng dẫn hướng #define VI Mảng chuỗi Mảng Chuỗi Cộng Thời gian Tổng Lý Thực Kiểm số thuyết hành tra* (LT Bài tập hoặcTH) 13 15 7 60 30 27 CHƯƠNG 1: GIỚI THIỆU VỀ NGÔN NGỮ C Mã chương: MH18-01 Ý nghĩa: C ngơn ngữ có hiệu ưa chuộng để viết phần mềm hệ thống, dùng cho việc viết ứng dụng Ngoài ra, C thường dùng làm phương tiện giảng dạy khoa học máy tính ngôn ngữ không thiết kế dành cho người nhập mơn Mục tiêu: - Trình bày lịch sử phát triển ngôn ngữ C; - Mô tả ứng dụng thực tế ngôn ngữ C - Một số thao tác trình soạn thảo C - Tiếp cận số lệnh đơn giản thơng qua ví dụ - Thực thao tác an tồn với máy tính Nội dung: 1.1 TỔNG QUAN VỀ NGƠN NGỮ LẬP TRÌNH C Mục tiêu: - Trình bày lịch sử phát triển ngơn ngữ C; - Mô tả ứng dụng thực tế ngôn ngữ C - Mô tả đặc điểm ngôn ngữ C C ngôn ngữ lập trình cấp cao, sử dụng phổ biến để lập trình hệ thống với Assembler phát triển ứng dụng Vào năm cuối thập kỷ 60 đầu thập kỷ 70 kỷ XX, Dennish Ritchie (làm việc phịng thí nghiệm Bell) phát triển ngơn ngữ lập trình C dựa ngơn ngữ BCPL (do Martin Richards đưa vào năm 1967) ngôn ngữ B (do Ken Thompson phát triển từ ngôn ngữ BCPL vào năm 1970 viết hệ điều hành UNIX máy PDP-7) cài đặt lần hệ điều hành UNIX máy DEC PDP-11 Năm 1978, Dennish Ritchie B.W Kernighan cho xuất “Ngơn ngữ lập trình C” phổ biến rộng rãi đến Lúc ban đầu, C thiết kế nhằm lập trình mơi trường hệ điều hành Unix nhằm mục đích hỗ trợ cho cơng việc lập trình phức tạp Nhưng sau, với nhu cầu phát triển ngày tăng cơng việc lập trình, C vượt qua khn khổ phịng thí nghiệm Bell nhanh chóng hội nhập vào giới lập trình để cơng ty lập trình sử dụng cách rộng rãi Sau đó, cơng ty sản xuất phần mềm đưa phiên hỗ trợ cho việc lập trình ngơn ngữ C chuẩn ANSI C khai sinh từ Ngơn ngữ lập trình C ngơn ngữ lập trình hệ thống mạnh “mềm dẻo”, có thư viện gồm nhiều hàm (function) tạo sẵn Người lập trình tận dụng hàm để giải tốn mà khơng cần phải tạo Hơn nữa, ngôn ngữ C hỗ trợ nhiều phép toán nên phù hợp cho việc giải tốn kỹ thuật có nhiều cơng thức phức tạp Ngồi ra, C cho phép người lập trình tự định nghĩa thêm kiểu liệu trừu tượng khác Tuy nhiên, điều mà người vừa học lập trình C thường gặp “rắc rối” “hơi khó hiểu” “mềm dẻo” C Dù vậy, C phổ biến rộng rãi trở thành cơng cụ lập trình mạnh, sử dụng ngơn ngữ lập trình chủ yếu việc xây dựng phần mềm Ngôn ngữ C có đặc điểm sau: o Tính đọng (compact): C có 32 từ khóa chuẩn 40 toán tử chuẩn, hầu hết biểu diễn chuỗi ký tự ngắn gọn o Tính cấu trúc (structured): C có tập hợp thị lập trình cấu trúc lựa chọn, lặp… Từ chương trình viết C tổ chức rõ ràng, dễ hiểu o Tính tương thích (compatible): C có tiền xử lý thư viện chuẩn vô phong phú nên chuyển từ máy tính sang máy tính khác chương trình viết C hồn tồn tương thích CHƯƠNG 3: CẤU TRÚC RẼ NHÁNH CÓ ĐIỀU KIỆN Mã chương: MH18-03 Ý nghĩa: Như ngôn ngữ mệnh lệnh, C phụ thuộc vào mệnh đề (câu lệnh) để làm hầu hết việc Hầu hết mệnh đề lại mệnh đề biểu thức mà cách đơn giản chúng tạo nên việc đánh giá biểu thức q trình này, biến nhận giá trị giá trị trả Các mệnh đề dòng điều khiển có hiệu lực cho việc thực thi có điều kiện hay có lặp lại, mà chúng cấu tạo với từ khóa if, else, switch, do, while for Các nhảy dịng thực qua câu lệnh goto Nhiều phép toán khác cung cấp sẵn để thực thi phép tính sản số học, lơ gíc, so sánh, kiểu bit, số mảng, phép gán giá trị Các biểu thức gọi hàm, bao gồm số lượng lớn hàm thư viện, để tiến hành thao tác chung Mục tiêu: - Trình bày ý nghĩa lệnh khối lệnh ; - Trình bày cú pháp, công dụng lệnh if, lệnh switch ; - Giải số toán sử dụng lệnh if, lệnh switch ; - Sử dụng cấu trúc lồng - Thực thao tác an tồn với máy tính 3.1 Lệnh khối lệnh Mục tiêu: Trình bày ý nghĩa lệnh khối lệnh 3.1.1 Lệnh Là tác vụ, biểu thức, hàm, cấu trúc điều khiển… Ví dụ 1: x = x + 2; printf("Day la mot lenh\n"); 3.1.2 Khối lệnh Là dãy câu lệnh bọc cặp dấu { } Ví dụ 2: { //dau khoi a = 5; b = 6; printf("Tong %d + %d = %d", a, b, a+b); } //cuoi khoi 3.2 Lệnh if Mục tiêu: - Trình bày cú pháp, cơng dụng lệnh if - Giải số toán sử dụng lệnh if - Sử dụng cấu trúc if lồng - Thực thao tác an toàn với máy tính Câu lệnh if cho phép lựa chọn hai nhánh tùy thuộc vào giá trị biểu thức luận lý (true) hay sai (false) khác không hay không 3.2.1 Dạng (if thiếu) Quyết định thực hay không khối lệnh Cú pháp lệnh if (biểu thức luận lý) khối lệnh; Lưu ý: Từ khóa if phải viết chữ thường, kết biểu thức luận lý phải (≠ 0) sai (= 0) Lưu đồ Vào Biểu thức luận lý Đúng Khối lệnh Ra Sai Giải thích: Nếu biểu thức luận lý thực khối lệnh thoát thoát khỏi if, ngược lại khơng làm khỏi if Lưu ý: Nếu khối lệnh bao gồm từ lệnh trở lên phải đặt dấu { } 3.2.2 Bài tập thực hành 1.Viết chương trình nhập vào số nguyên dương, in thông báo số chẵn hay lẻ Hướng dẫn: Nhập vào số nguyên dương x Kiểm tra x chia hết cho x số chẵn (hoặc chia cho dư 0), x không chia hết cho (hoặc chia cho dư 1) số lẻ 2.Viết chương trình nhập vào số nguyên Tìm in số lớn Hướng dẫn: Ta có số nguyên a, b, c, d Tìm số nguyên lớn x, y cặp (a, b) (c, d) Sau so sánh số nguyên x, y để tìm số nguyên lớn 3.2.3 Dạng (if đủ) Quyết định thực khối lệnh cho trước Cú pháp lệnh if (biểu thức luận lý) khối lệnh else khối lệnh 2; Lưu đồ Vào Đúng Biểu thức luận lý Sai Khối lệnh Khối lệnh Ra Giải thích: Nếu biểu thức luận lý hực khối lệnh thoát khỏi if ngược lại thực khối lệnh thoát khỏi if 3.2.4 Bài tập thực hành 1.Viết chương trình nhập vào số nguyên dương, in thông báo số chẵn hay lẻ Hướng dẫn: Nhập vào số nguyên dương x Kiểm tra x chia chẵn cho hai x số chẵn (hoặc chia cho dư 0) ngược lại số lẻ 2.Viết chương trình nhập vào số nguyên Tìm in số lớn Hướng dẫn: Ta có số ngun a, b, c, d Tìm số nguyên lớn x, y cặp (a, b) (c, d) Sau so sánh số nguyên x, y để tìm số nguyên lớn 3.2.5 Cấu trúc else if Quyết định thực n khối lệnh cho trước Cú pháp lệnh: if (biểu thức luận lý 1) khối lệnh 1; else if (biểu thức luận lý 2) khối lệnh 2; … else if (biểu thức luận lý n-1) khối lệnh n-1; else khối lệnh n; Lưu đồ: Giải thích: Nếu biểu thức luận lý thực khối lệnh thoát khỏi cấu trúc if Ngược lại Nếu biểu thức luận lý thực khối lệnh thoát khỏi cấu trúc if … Ngược lại Nếu biểu thức luận lý n-1 thực khối lệnh n-1 khỏi cấu trúc if Ngược lại thực khối lệnh n 3.2.6 Bài tập thực hành Viết chương trình giải phương trình bậc 2: ax2 + bx + c = 0, với a, b, c nhập vào từ bàn phím Hướng dẫn: Nhập vào biến a, b, c Tính Delta = b*b - 4*a*c Nếu Delta < Phương trình vơ nghiệm Ngược lại Nếu Delta = x1 = x2 = - b/(2*a) Ngược lại x1 = (- b - sqrt(Delta))/(2*a) x2 = (- b + sqrt(Delta))/(2*a) Hết Nếu Hết Nếu Viết chương trình nhập vào phút giây (hh:mm:ss) Cộng thêm số giây nhập vào in kết dạng hh:mm:ss Hướng dẫn: Nhập vào phút giây vào biến gio, phut, giay nhập giây công thêm vào biến them: Nếu giay + them < 60 giay = giay + them Ngược lại giay = (giay + them) - 60 phut = phut + Nếu phut >= 60 phut = phut - 60 gio = gio + Hết Hết 3.2.7 Cấu trúc if lồng Quyết định thực n khối lệnh cho trước Cú pháp lệnh Cú pháp dạng trên, nhiều khối lệnh bên phải chứa dạng gọi cấu trúc if lồng Thường cấu trúc if lồng nhiều cấp độ phức tạp cao, chương trình chạy chậm lúc lập trình dễ bị nhầm lẫn Chú ý: Các lệnh if…else lồng else luôn kết hợp với if chưa có else gần Vì gặp lệnh if khơng có else, Bạn phải đặt chúng khối lệnh rõ ràng để tránh bị hiểu sai câu lệnh Ví dụ: Viết chương trình nhập vào số nguyên a b Nếu a > b hoán đổi giá trị a b , ngược lại khơng hốn đổi.In giá trị a b /*Chuong trinh nhap vao so nguyen a va b Neu a>b thi hoan doi gia tri a va b,nguoc lai khong hoan doi In man hinh a va b */ #include #include void main(void) { int ia,ib,itam;//Khai bao cac bien //Nhap vao ia printf("a="); scanf("%d",&ia); //Nhap vao ib printf("b="); scanf("%d",&ib); if(ia>ib) { //Hoan vi a va b tam=ia; ia=ib; b=itam; } printf("a=%d ; b=%d\n",ia,ib); getch(); } 3.2.8 Bài tập thực hành Viết chương trình giải phương trình bậc 1: ax + b = 0, với a, b nhập vào từ bàn phím Hướng dẫn: Nhập vào biến a, b Nếu a=0 (xét hệ số b) Nếu b=0 kết luận phương trình vơ số nghiệm Ngược lại kết luận phương trình vơ nghiệm Ngược lại (hệ số a#0), kết luận phương trình có nghiệm x=-b/a 3.3 Lệnh switch() Mục tiêu: - Trình bày cú pháp, công dụng lệnh switch ; - Giải số toán sử dụng lệnh switch ; - Sử dụng cấu trúc switch lồng - Thực thao tác an tồn với máy tính Lệnh switch giống cấu trúc else if, mềm dẻo linh động nhiều so với sử dụng if Tuy nhiên, có mặt hạn chế kết biểu thức phải giá trị nguyên (có giá trị cụ thể) Một tốn sử dụng lệnh switch sử dụng if, ngược lại tùy thuộc vào giải thuật toán 3.3.1 Cấu trúc switch…case (switch thiếu) Chọn thực n lệnh cho trước Cú pháp lệnh switch (biểu thức) { case giá trị : lệnh 1; break; case giá trị : lệnh 2; break; … case giá trị n : lệnh n; [break;] } Lưu ý: từ khóa switch, case, break phải viết chữ thường; biểu thức phải có kết giá trị nguyên (char, int, long,…); Lệnh 1, 2…n gồm nhiều lệnh, khơng cần đặt cặp dấu { } Lưu đồ Khi giá trị biểu thức giá trị i lệnh i thực Nếu sau lệnh i khơng có lệnh break tiếp tục thực lệnh i + 1…Ngược lại thoát khỏi cấu trúc switch Ví dụ: Viết chương trình nhập vào tháng cho biết tháng thuộc quý /* Chương trình nhập vào tháng in quý tháng */ #include #include void main(void) { int iThang; //Nhập vào tháng printf("Thang : "); scanf("%d",&iThang); //Kiểm tra tháng thuộc quý để nhập vào if(iThang>0 && iThang