CHƯƠNG 1: TỔNG QUAN VỀ NGÔN NGỮ C 1. Giới thiệu ngôn ngữ C 1.1 Lịch sử phát triển 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) 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 ngày nay.
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 cho 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ừ đó.2 Sự cần thiết Ngôn ngữ lập trình C đã làm thay đổi thế giới máy tính. Sự tác động của nó nhiều khi không được đánh giá đúng mức.
Nó thay đổi cách tiếp cận và nhìn nhận về lập trình một cách cơ bản. Sự ra đời của C là kết quả trực tiếp của sự cần thiết phải thay đổi về cấu trúc, hiệu quả, ngôn ngữ bậc cao thay thế cho mã máy khi viết các chương trình hệ thống. Như chúng ta biết, khi thiết kế một ngôn ngữ lập trình, sự cân nhắc luôn được xem xét giữa: - Tính dễ dàng sử dụng và sức mạnh - Sự an toàn - Sự chặt chẽ và khả năng mở rộng Trước khi có C, lập trình viên thường xuyên phải chọn giữa các ngôn ngữ đã thu gọn một tập các đặc điểm. Ví dụ, mặc dù FORTRAN có thể được dùng để viết các chương trình hiệu quả cho các ứng dụng khoa học, nhưng nó không tốt lắm cho viết mã hệ thống.
Trong khi BASIC dễ dàng cho người học thì nó lại không đủ mạnh và thiếu các cấu trúc cho các chương trình lớn. Ngôn ngữ Assembly có thể được dùng để viết các chương trình hiệu quả cao nhất nhưng không dễ dàng để sử dụng cũng như gỡ rối rất khó khăn. 7 Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái Một số vấn đề khác là các ngôn ngữ lập trình như BASIC, COBOL, không được thiết kế dựa trên các yếu tố cấu trúc. Chúng dựa trên lệnh GOTO để điều khiển chương trình.
Vì vậy mà các chương trình được viết bởi ngôn ngữ này hướng tới việc sinh ra mã spagheti – một khối lộn xộn các lệnh nhảy và rẽ nhánh làm cho chương trình không thể hiểu được. Trong khi ngôn ngữ như Pascal là ngôn ngữ cấu trúc, nó không được thiết kế để đạt hiệu quả cao, và thiếu các đặc điểm cần thiết để ứng dụng cho những chương trình lớn. Vì thế, trước khi có ngôn ngữ C, không có ngôn ngữ nào có thể dung hòa được sự xung đột đã tồn tại trước đó. Ngôn ngữ C là một ngôn ngữ lập trình hệ thống rất mạnh mẽ 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 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.1 Khởi động Turbo C là môi trường hỗ trợ lập trình C do hãng Borland cung cấp. Môi trường này cung cấp các chức năng như: soạn thảo chương trình, dịch, thực thi chương trình…Phiên bản sử dụng ở đây là Turbo C 3. - Sau khi cài đặt song ta có thư mục TC hoặc TC30 trong thư mục này có các thư mục con sau. TC Chứa các tệp tin chính của chýõng trình trong đó có BIN tệp TC.EXE INCLUDE Chứa các tệp tin khai báo thý viện ( *.h) LIB Chứa các tệp tin mã lệnh của các thý viện (*.LIB) - Để khởi động chương trình này chúng ta chạy tệp tin TC.EXE trong thư mục Bin của TurboC.
Màn hình giao diện của TurboC có dạng sau: 8 Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái Hình 1.1: Màn hình giao diện TurboC 3.0 Dòng trên cùng gọi là thanh menu (menu bar). Mỗi mục trên thanh menu có thể có nhiều mục con nằm trong một menu kéo xuống. Dòng dưới cùng ghi chức năng của một số phím đặc biệt. Muốn vào thanh menu ngang ta gõ phím F10.
Sau đó dùng các phím mũi tên qua trái hoặc qua phải để di chuyển vùng sáng tới mục cần chọn rồi gõ phím Enter. Trong menu kéo xuống ta lại dùng các phím mũi tên lên xuống để di chuyển vùng sáng tới mục cần chọn rồi gõ Enter. Ta cũng có thể chọn một mục trên thanh menu bằng cách giữ phím Alt và gõ vào một ký tự đại diện của mục đó.2 Thoát khỏi Để thoát khỏi Turbo C và trở về DOS hay Windows có 2 cách: - Cách 1: Vào menu File/Exit - Cách 2 : Dùng phím tắt : Alt + X 2.3 Tạo mới, ghi một chương trình C Muốn soạn thảo một chương trình mới ta chọn mục New trong menu File (File ->New). Trên màn hình sẽ xuất hiện một vùng trống để cho ta soạn thảo nội dung của chương trình.
Trong quá trình soạn thảo chương trình ta có thể sử dụng các phím sau: Các phím chèn ký tự/ dòng Insert Thay đổi viết xen hay viết chồng Ctrl - N Xen một dòng trống vào truớc vị trí con trỏ 9 Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái Các phím xoá ký tự/ dòng Phím Ý nghĩa Phím tắt Delete Xoá ký tự tại vị trí con trỏ Ctrl -G BackSpace Di chuyển sang trái đồng thời xoá ký tự đứng Ctrl -H truớc con trỏ Xoá một dòng chứa con trỏ Ctrl -Y Xoá từ vị trí con trỏ đến cuối dòng Ctrl –Q- Y Xoá ký tự bên phải con trỏ Ctrl -T - Ghi chương trình đang soạn thảo vào đĩa Sử dụng File/Save hoặc gõ phím F2. Có hai trường hợp xảy ra: Nếu chương trình chưa được ghi lần nào thì một hội thoại sẽ xuất hiện cho phép bạn xác định tên tập tin (FileName). Tên tập tin phải tuân thủ quy cách đặt tên của DOS và không cần có phần mở rộng (sẽ tự động có phần mở rộng là. Sau đó gõ phím Enter.
Nếu chương trình đã được ghi một lần rồi thì nó sẽ ghi những thay đổi bổ sung lên tập tin chương trình cũ. Chú ý: Để đề phòng mất điện trong khi soạn thảo chương trinh thỉnh thoảng bạn nên gõ phím F2. Sử dụng trợ giúp Trên menu Help bao gồm các lệnh gọi trợ giúp khi người lập trình cần giúp đỡ một số vấn đề nào đó như: Cú pháp câu lệnh, cách sử dụng các hàm có sẵn… - Lệnh Contents: Hiển thị toàn bộ nội dung của phần help. - Lệnh Index: Hiển thị bảng tìm kiếm theo chỉ mục.
Một số thao tác trên thanh menu bar Các lệnh trên menu File - Lệnh New : Dùng để tạo mới một chương trình. Tên ngầm định của chương trình là NONAMEXX. - Lệnh Open : Dùng để mở một chương trình đã có sẵn trên đĩa để sửa chữa, bổ sung hoặc để thực hiện chương trình đó. Khi tập tin được mở thì văn bản chương trình được 10 Hình 1.
Các lệnh trên menu file Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái trình bày trong vùng soạn thảo; hộp thoại Open như sau: Hình 1.4b: Hộp thoại Open Trong trường hợp ta nhập vào tên tập tin chưa tồn tại thì chương trình được tạo mới và sau này khi ta lưu trữ, chương trình được lưu với tên đó. - Lệnh Save: Dùng để lưu chương trình đang soạn thảo vào đĩa. - Lệnh Save as… : Dùng để lưu chương trình đang soạn thảo với tên khác, hộp thoại lưu tập tin đang soạn với tên khác như sau: Hình 1.4c: Hộp thoại Save - Lệnh Save All : Dùng để lưu mọi thay đổi trên tất cả các chương trình đang mở - Lệnh Change Dir…: Dùng để đổi thư mục hiện hành 11 Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái Hình 1.4d: Hộp thoại thay đổi thư mục - Lệnh Print: Dùng để in chương trình đang soạn thảo ra máy in. - Lệnh Printer Setup…: Dùng để thiết đặt một số thông số cho máy in.
- Lệnh Dos Shell: Dùng để thoát tạm thời về Dos, để trở lại Turbo C ta gõ EXIT. - Lệnh Exit: Dùng để thoát khỏi C. Các lệnh trên menu Edit - Lệnh Undo: Dùng để hủy bỏ thao tác soạn thảo cuối cùng trên cửa sổ soạn thảo. - Lệnh Redo: Dùng đẻ phục hồi lại tha tác đã bị Undo cuối cùng.
- Lệnh Cut : Dùng để xóa một phần văn bản đã được đánh dấu khối, phần dữ liệu bị xóa sẽ được lưu vào một vùng nhớ đặc biệt gọi là Clipboard. - Lệnh Copy: Dùng để chép phần chương trình Hình 1.4e: Các lệnh trên đã được đánh dấu khối vào Clipboard. menu Edit - Lệnh Paste: Dùng để dán phần chương trình đang được lưu trong Clipboard vào cửa sổ đang soạn thảo, bắt đầu tại vị trí của con trỏ. - Lệnh Clear: Dùng để xóa phần dữ liệu đã được đánh dấu khối, dữ liệu bị xóa không được lưu vào Clipboard.
- Lệnh Show clipboard: Dùng để hiển thị phần chương trình đang được lưu trong Clipboard trong một cửa sổ mới. 12 Giáo trình: Lập trình cơ bản Trường Cao đẳng nghề Yên Bái Các lệnh trên menu Search - Lệnh Find…: Dùng để tìm kiếm một cụm từ trong văn bản chương trình. Nếu tìm thấy thì con trỏ sẽ di chuyển đến doạn văn bản trùng với cụm từ cần tìm; hộp thoại Find như sau: Hình 1.4f: Các lệnh trên menu Search Hình 1.