ỦY BAN NHÂN DÂN THÀNH PHỐ HÀ NỘI TRƯỜNG CAO ĐẲNG NGHỀ VIỆT NAM - HÀN QUỐC THÀNH PHỐ HÀ NỘI TRỊNH THỊ HẠNH (Chủ biên) NGUYỄN ANH DŨNG – TRẦN VĂN NAM GIÁO TRÌNH LẬP TRÌNH C Nghề: Điện tử công nghiệp Trình độ: Cao đẳng (Lưu hành nội bộ) Hà Nội - Năm 2018 LỜI NÓI ĐẦU Ngôn ngữ lập trình C là ngôn ngữ lập trình cấp cao, được sử dụng rất phổ biến để lập trình hệ thống cùng với Assembler và phát triển các ứng dụng. Ngôn ngữ lập trình C là một ngôn ngữ lập trình hệ thống rất mạnh và rất “mềm dẻo”, có một thư viện gồm rất nhiều các hàm (function) đã được tạo sẵn. Người lập trình có thể tận dụng các hàm này để giải quyết các bài toán mà không cần phải tạo mới. Hơn thế nữa, ngôn ngữ C hỗ trợ rất nhiều phép toán nên phù hợp cho việc giải quyết các bài toán kỹ thuật có nhiều công thức phức tạp.
Ngoài ra, C cũng cho phép người lập trình tự định nghĩa thêm các kiểu dữ liệu trừu tượng khác. Tuy nhiên, điều mà người mới vừa học lập trình C thường gặp “rắc rối” là “hơi khó hiểu” do sự “mềm dẻo” của C. Dù vậy, C được phổ biến khá rộng rãi và đã trở thành một công cụ lập trình khá mạnh, được sử dụng như là một ngôn ngữ lập trình chủ yếu trong việc xây dựng những phần mềm hiện nay. Nhóm biên soạn đã tham khảo các tài liệu: “Lập trình C” dùng cho sinh viên các Trường Cao đẳng.
Tài liệu “Nhập ngôn ngữ lập trình C” và nhiều tài liệu khác. Mặc dù nhóm biên soạn đã có nhiều cố gắng nhưng không tránh được những thiếu sót. Rất mong đồng nghiệp và độc giả góp ý kiến để giáo trình hoàn thiện hơn. Xin chân thành cảm ơn! Hà Nội, ngày … tháng … năm 2018 Chủ biên: Trịnh Thị Hạnh 1 MỤC LỤC LỜI NÓI ĐẦU.
2 CHƯƠNG TRÌNH MÔ ĐUN. 4 Bài 1 Giới thiệu về ngôn ngữ c .1 Ngôn ngữ lập trình .2 Giới thiệu về ngôn ngữ lập trình c .3 Môi trường lập trình turbo c. 22 Bài 2 Đối tượng trong chương trình. 31 Bài 3 Cấu trúc lệnh tuần tự .1 Lệnh gán và biểu thức .2 Thâm nhập vào thư viện chuẩn .3 Các hàm vào ra chuẩn .4 Đưa kết quả lên màn hình - hàm printf .5 Vào số liệu từ bàn phím - hàm scanf .6 Đưa kết quả ra máy in.
39 Bài 4 Cấu trúc điều khiển .1 Cấu trúc có điều kiện .2 Lệnh nhảy không điều kiện - câu lệnh goto .3 Cấu trúc rẽ nhánh - câu lệnh switch. 49 Bài 5 Cấu trúc lệnh lặp .1 Cấu trúc lặp với for và while .2 Chu trình do-while .3 Câu lệnh break .4 Câu lệnh continue. 71 2 Bài 6 Các kiểu dữ liệu có cấu trúc .2 Hàm không cho các giá trị .4 Bộ tiền xử lý C. 155 TÀI LIỆU THAM KHẢO.
179 3 CHƯƠNG TRÌNH MÔ ĐUN Tên mô đun: Lập trình C Mã mô đun: MĐ26 Thời gian mô đun: 90 giờ; (Lý thuyết: 25 giờ; TH: 60 giờ; KT: 5 giờ) I. VỊ TRÍ TÍNH CHẤT CỦA MÔN HỌC - Vị trí: Là môn học được bố trí sau khi sinh viên học xong các môn chung, các môn học cơ sở chuyên ngành đào tạo chuyên môn nghề - Tính chất: Là môn học bắt buộc trong chương trình đào tạo nghề tin học II. MỤC TIÊU MÔ ĐUN Về kiến thức - Nắm được cú pháp của ngôn ngữ lập trình C - Sử dụng được môi trường lập trình C để soạn thảo, biên dịch và hiệu chỉnh chương trình Về kỹ năng - Viết và thực hiện chương trình trên máy tính Về năng lực tự chủ - Rèn luyện cho học sinh thái độ nghiêm túc, cẩn thận, chính xác trong học tập và thực hiện công việc III. NỘI DUNG MÔ ĐUN 1.Nội dung tổng quát phân bố thời gian: Thời gian STT Tên các bài trong mô đun Tổng Lý Thực Kiểm số thuyết hành tra 1.
Bài 1: Giới thiệu về ngôn ngữ c 9 4 5 0 2. Bài 2: Đối tượng trong chương trình 7 2 5 0 3. Bài 3: Cấu trúc lệnh tuần tự 7 2 5 0 4. Bài 4: Cấu trúc điều khiển 8 2 5 1 5.
Bài 5: Cấu trúc lệnh lặp 8 2 6 0 6. Bài 6: Các kiểu dữ liệu có cấu trúc 33 9 21 3 7. Bài 7: Hàm 18 4 13 1 Cộng 90 25 60 5 4 Bài 1 Giới thiệu về ngôn ngữ c Mục tiêu: - Cung cấp các khái niệm cơ bản về C - Sự ra đời và phát triển của ngôn ngữ C - Nắm được các chức năng cơ bản và môi trường lập trình của Turbo C Nội dung: 1.1 Ngôn ngữ lập trình 1.1 Khái niệm ngôn ngữ lập trình Ngôn ngữ lập trình là một ngôn ngữ dùng để viết chương trình cho máy tính. Ta có thể chia ngôn ngữ lập trình thành các loại sau: ngôn ngữ máy, hợp ngữ và ngôn ngữ cấp cao.
Ngôn ngữ máy (machine language): Là các chỉ thị dưới dạng nhị phân, can thiệp trực tiếp vào trong các mạch điện tử. Chương trình được viết bằng ngôn ngữ máy thì có thể được thực hiện ngay không cần qua bước trung gian nào. Tuy nhiên chương trình viết bằng ngôn ngữ máy dễ sai sót, cồng kềnh và khó đọc, khó hiểu vì toàn những con số 0 và 1. Hợp ngữ (assembly language): Bao gồm tên các câu lệnh và quy tắc viết các câu lệnh đó.
Tên các câu lệnh bao gồm hai phần: phần mã lệnh (viết tựa tiếng Anh) chỉ phép toán cần thực hiện và địa chỉ chứa toán hạng của phép toán đó. Ví dụ: INPUT a ; Nhập giá trị cho a từ bàn phím LOAD a ; Đọc giá trị a vào thanh ghi tổng A PRINT a; Hiển thị giá trị của a ra màn hình. INPUT b ADD b; Cộng giá trị của thanh ghi tổng A với giá trị b Trong các lệnh trên thì INPUT, LOAD, PRINT, ADD là các mã lệnh còn a, b là địa chỉ. Để máy thực hiện được một chương trình viết bằng hợp ngữ thì chương trình đó phải được dịch sang ngôn ngữ máy.
Công cụ thực hiện việc dịch đó được gọi là Assembler. Ngôn ngữ cấp cao (High level language): Ra đời và phát triển nhằm phản ánh cách thức người lập trình nghĩ và làm. Rất gần với ngôn ngữ con người (Anh ngữ) nhưng chính xác như ngôn ngữ toán học. Cùng với sự phát triển của các thế 5 hệ máy tính, ngôn ngữ lập trình cấp cao cũng được phát triển rất đa dạng và phong phú, việc lập trình cho máy tính vì thế mà cũng có nhiều khuynh hướng khác nhau: lập trình cấu trúc, lập trình hướng đối tượng, lập trình logic, lập trình hàm.
Một chương trình viết bằng ngôn ngữ cấp cao được gọi là chương trình nguồn (source programs). Để máy tính "hiểu" và thực hiện được các lệnh trong chương trình nguồn thì phải có một chương trình dịch để dịch chuơng trình nguồn (viết bằng ngôn ngữ cấp cao) thành dạng chương trình có khả năng thực thi.2 Chương trình dịch Như trên đã trình bày, muốn chuyển từ chương trình nguồn sang chương trình đích phải có chương trình dịch. Thông thường mỗi một ngôn ngữ cấp cao đều có một chương trình dịch riêng nhưng chung quy lại thì có hai cách dịch: thông dịch và biên dịch. Thông dịch (interpreter): Là cách dịch từng lệnh một, dịch tới đâu thực hiện tới đó.
Chẳng hạn ngôn ngữ LISP sử dụng trình thông dịch. Biên dịch (compiler): Dịch toàn bộ chương trình nguồn thành chương trình đích rồi sau đó mới thực hiện. Các ngôn ngữ sử dụng trình biên dịch như Pascal, C. Giữa thông dịch và biên dịch có khác nhau ở chỗ: Do thông dịch là vừa dịch vừa thực thi chương trình còn biên dịch là dịch xong toàn bộ chương trình rồi mới thực thi nên chương trình viết bằng ngôn ngữ biên dịch thực hiện nhanh hơn chương trình viết bằng ngôn ngữ thông dịch.
Một số ngôn ngữ sử dụng kết hợp giữa thông dịch và biên dịch chẳng hạn như Java. Chương trình nguồn của Java được biên dịch tạo thành một chương trình đối tượng (một dạng mã trung gian) và khi thực hiện thì từng lệnh trong chương trình đối tượng được thông dịch thành mã máy.2 Giới thiệu về ngôn ngữ lập trình c 1.1 Giới thiệu C là ngôn ngữ lập trình cấp cao, được sử dụng rất phổ biến để lập trình hệ thống cùng với Assembler và phát triển các ứng dụng. Vào những năm cuối thập kỷ 60 đầu thập kỷ 70 của thế kỷ XX, Dennish Ritchie (làm việc tại phòng thí nghiệm Bell) đã phát triển ngôn ngữ lập trình C dựa trên ngôn ngữ BCPL (do Martin Richards đưa ra vào năm 1967) và ngôn ngữ B (do Ken Thompson phát triển từ ngôn ngữ BCPL vào năm 1970 khi viết hệ điều hành UNIX đầu tiên trên máy PDP-7) và được cài đặt lần đầu tiên trên hệ điều hành UNIX của máy DEC PDP-11. Năm 1978, Dennish Ritchie và B.W Kernighan đã cho xuất bản quyển “Ngôn ngữ lập trình C” và được phổ biến rộng rãi đến nay.
6 Lúc ban đầu, C được thiết kế nhằm lập trình trong môi trường của hệ điều hành Unix nhằm mục đích hỗ trợ cho các công việc lập trình phức tạp. Nhưng về sau, với những nhu cầu phát triển ngày một tăng của công việc lập trình, C đã vượt qua khuôn khổ của phòng thí nghiệm Bell và nhanh chóng hội nhập vào thế giới lập trình để rồi các công ty lập trình sử dụng một cách rộng rãi. Sau đó, các công ty sản xuất phần mềm lần lượt đưa ra các phiên bản hỗ trợ cho việc lập trình bằng ngôn ngữ C và chuẩn ANSI C cũng được khai sinh từ đó. Ngôn ngữ lập trình C là một ngôn ngữ lập trình hệ thống rất mạnh và rất “mềm dẻo”, có một thư viện gồm rất nhiều các hàm (function) đã được tạo sẵn.
Người lập trình có thể tận dụng các hàm này để giải quyết các bài toán mà không cần phải tạo mới. Hơn thế nữa, ngôn ngữ C hỗ trợ rất nhiều phép toán nên phù hợp cho việc giải quyết các bài toán kỹ thuật có nhiều công thức phức tạp. Ngoài ra, C cũng cho phép người lập trình tự định nghĩa thêm các kiểu dữ liệu trừu tượng khác. Tuy nhiên, điều mà người mới vừa học lập trình C thường gặp “rắc rối” là “hơi khó hiểu” do sự “mềm dẻo” của C.
Dù vậy, C được phổ biến khá rộng rãi và đã trở thành một công cụ lập trình khá mạnh, được sử dụng như là một ngôn ngữ lập trình chủ yếu trong việc xây dựng những phần mềm hiện nay.