Khác với PASCAL, là ngôn ngữ cấp cao được xây dựng với mục đích để học tập và giảng dạy lập trình, ngôn ngữ C và ngôn ngữ phát triển của nó là C được xây dựng xuất phát từ những yêu cầu nội tại của tin học, vì thế C phản ánh những thành tựu mới nhất của phần mềm công nghệ tin học đó là tính có đọng và rất gọn khi lập trình, có thể thâm nhập vào mọi nguồn dữ liệu và hệ thống. C có nhiều mô hình tổ chức bộ nhớ và nói chung người lập trình có thể biết sự tiến triển của chương trình trong bộ nhớ. C có nhiều toán tử rất mạnh. Chương trình viết bằng ngôn ngữ C có thể mòdun hóa và ghép nối dễ dàng. C có tất cả những ưu điểm của ngôn ngữ cấp cao nhưng cũng có những đặc trưng của hợp ngữ... Show Vì những ưu điểm kể trên, ngày nay các chương trình lớn đều được viết bằng C hoặc đang được viết lại bằng C. Hệ điều hành WINDOWS. UNIX... đều được viết bằng C. Ngôn ngữ C trở nên bắt buộc đổi với các nhà lập trình chuyên nghiệp. Ở Việt Nam, ngôn ngữ C và C đang được giảng dạy trong các khoa Công nghệ tin học, Điện tử và thông tin, Đo lường, Điều khiển... của các trường đại học và chuyên nghiệp. Nhiều sách hướng dẫn lập trình ngôn ngữ C do các tác giả trong nước biên soạn và biên dịch đã được xuất bản. Tuy nhiên vẫn còn thiếu bộ sách có tính chất thực hành về C, nhất là còn thiểu những tư liệu, cẩm nang giúp đỡ cho các nhà lập trình bằng ngôn ngữ C đồi với các bài toán khoa học kỹ thuật và kinh tế thường gặp. Cuốn sách “ 101 thuật toán và chương trình bài toán khoa học kỹ thuật và kinh tế bằng ngôn ngữ C" nhằm bổ sung cho chỗ trống này. Thông qua các chương trình mẫu các tác giả mong muốn cung cấp cho bạn đọc những thuật toán và chương trình của nhiều loại bài toán khoa học kỹ thuật và kinh tế thường gặp. Toàn bộ cuốn sách gồm 101 chương trình chia làm 11 chương. Chương 1 là 20 chương trình minh họa giúp bạn đọc mới bắt đầu làm quen với ngôn ngữ C. Các chương trình này có thuật toán đơn giản và được giới thiệu để minh họa cho những vấn đề cơ bản của việc lập trình ngôn ngữ C. Chương 2 gồm 16 chương trình dành cho các bài toán đại số với các số thực và số phức. Chương 3 gồm 8 chương trình đồ họa các hàm theo tham số, theo tọa độ rực, các mặt trong không gian 3 chiều. Chương 4 gồm 12 chương trình dành cho các bài toán vectơ, ma trận, hệ phương trình đại số tuyến tính. Chương 5 gồm 8 chương trình về đa thức và nội suy đa thức. Chương 6 gồm 4 chương trình tính tích phân xác định và tích phân kép. Chương 7 gồm 3 chương trình giải các phương trình phi tuyến. Chương 8 gồm 3 chương trình tìm cực trị các hàm một biển và hai biến. Chương 9 gồm 4 chương trình giải phương trình vi phân và hệ phương trình vi phân cấp n. Chương 10 gồm 4 chương trình về các vấn đề xác suất và thống kê. Chương 11 gồm 15 chương trình xử lý văn bản, quản lý và một số bài toán ứng dụng khác. Tất cả các chương trình đều được chạy có kết quả bằng TC91. Các chương trình của cuốn sách này đều được in trực tiếp từ máy tính. Về bố cục cuốn sách này có nhiều nét giống cuốn sách " 101 thuật toàn và chương trình bài toán khoa học kỳ thuật và kinh tế ngôn ngữ PASCAL " của cùng tác giả, xuất bản năm 1993 và đã được tái bản nhiều lần. Chúng tôi cũng được sự động viên và góp ý nhận xét của nhiều bạn đọc. Nhiều vẫn dễ đã được đưa vào cuốn sách này. Tuy nhiên do trình độ có hạn và nhất là do có ít nguồn tư liệu nên chắc chắn cuốn sách này không tránh khỏi sai sót. Chúng tôi mong được sự chỉ dẫn, góp ý của bạn đọc. Mọi chỉ dẫn, góp ý xin gửi về Khoa Thiết bị điện Trường đại học Bách Khoa Hà Nội. Chúng tôi xin chân thành cảm ơn. Nếu bạn đọc có yêu cầu về đĩa mềm chứa chương trình cuốn sách này xin liên hệ với khoa Thiết bị điện Trường đại học Bách Khoa Hà Nội - ĐT. 692511 chúng tôi xin cung cấp miễn phí. Ngôn ngữ C là một ngôn ngữ lập trình máy tính được phát triển bởi Dennis Ritchie vào những năm 1970 tại Bell Labs. C là một ngôn ngữ lập trình mạnh mẽ, có hiệu suất cao, và được sử dụng rộng rãi trong phát triển phần mềm hệ thống, phần mềm nhúng, ứng dụng máy tính cá nhân, và nhiều lĩnh vực công nghiệp khác. Photo by Uday Awal / Unsplash C được chú trọng vào việc quản lý bộ nhớ và cung cấp nhiều tính năng gần gũi với cấu trúc máy tính, giúp lập trình viên có kiểm soát chi tiết hơn về cách dữ liệu và mã máy được xử lý. Nó cũng có một cú pháp đơn giản và mạnh mẽ, giúp trong việc phát triển phần mềm hiệu quả và dễ bảo trì. Ngôn ngữ C đã tạo nền tảng cho nhiều ngôn ngữ lập trình khác, bao gồm C++, C#, và nhiều ngôn ngữ khác. Ngoài ra, nó cũng là ngôn ngữ phổ biến cho việc viết hệ điều hành và phần mềm nhúng do khả năng kiểm soát phần cứng của nó. 2. Ứng dụng của ngôn ngữ CNgôn ngữ C có nhiều ứng dụng khác nhau trong nhiều lĩnh vực khác nhau do tính linh hoạt, hiệu suất cao và khả năng tương tác gần gũi với cấu trúc máy tính. Dưới đây là một số ứng dụng phổ biến của ngôn ngữ lập trình C:
3. Tại sao cần phải học C?
4. Ngôn ngữ C hoạt động như thế nào?Quá trình biên dịch trong C chuyển đổi mã mà con người có thể đọc thành định dạng mà máy có thể đọc được. Đối với C, việc này xảy ra trước khi chương trình bắt đầu thực thi để kiểm tra cú pháp và ngữ nghĩa của mã. Quá trình biên dịch trong C bao gồm 4 bước: tiền xử lý (pre-processing), biên dịch (compiling), tập hợp (assembling) và liên kết (linking), sau đó chúng ta chạy file thực thi thu được để xuất ra màn hình kết quả. 4.1 Biên dịch là gì?Giả sử có 2 người đang nói chuyện với nhau, anh A đến từ Úc nói tiếng Anh còn anh B đến từ Việt Nam. Để 2 anh này có thể hiểu nhau nói gì thì một trong hai người phải biết ngôn ngữ của người kia, ví dụ anh A sử dụng Google Dịch để dịch tiếng Anh sang tiếng Việt, quá trình dịch này có thể hiểu là quá trình biên dịch. Đối với máy tính cũng vậy, bản thân máy tính chỉ hiểu các kí tự 01010101000, hay còn gọi là mã máy (Machine Code). Chính vì thế cần có trình biên dịch đứng ở giữa giúp chuyển đổi những dòng code ta viết ra ở dạng con người hiểu (ABC) sang dạng nhị phân (000 0000) để máy tính hiểu, các bạn có thể tìm hiểu thêm về ASCII để hiểu rõ hơn. 4.2 Quá trình biên dịch trong CQuá trình biên dịch trong C diễn ra qua 4 bước: tiền xử lý (pre-processing), biên dịch (compiling), tập hợp (assembling) và liên kết (linking). Giờ chúng ta sẽ cùng nhau phân tích từng bước thông qua những ví dụ cụ thể nhé. 4.2.1 Pre-processing (tiền xử lý)Tiền xử lý trong C là bước đầu tiên của quá trình biên dịch để thực hiện các thay đổi hoặc xử lý trước khi mã nguồn được biên dịch thành mã máy. Tiền xử lý trong C đầu tiên sẽ loại bỏ các dòng comment, sau đó sử dụng các hằng số ( define), macro (define), và các chỉ thị (include) để thực hiện các nhiệm vụ như định nghĩa hằng số, tạo các phiên bản mã, và nhập các tệp mã nguồn khác vào tệp mã nguồn hiện tại.Comments Removal (Loại bỏ comment) Các dòng comment trong chương trình C sẽ được loại bỏ trong bước tiền xử lý, do nó chỉ có chức năng là giải thích đoạn code chứ không được sử dụng khi biên dịch.
Những đoạn comment sẽ bị loại bỏ. Nguồn: Scaler Topics Macros Expansion (Định nghĩa hằng số) Việc định nghĩa sẵn các hằng số ở đầu chương trình giúp tạo ra một danh mục dễ đọc về các giá trị hằng số được sử dụng trong chương trình. Điều này làm cho mã nguồn dễ hiểu hơn, giúp lập trình viên và đồng nghiệp khác dễ dàng theo dõi và hiểu mã nguồn của bạn.
Ở ví dụ này,
1 được sử dụng để định nghĩa hằng số PI và MAX_SIZE. Khi tiền xử lý thực hiện, mọi sự xuất hiện của PI và MAX_SIZE trong mã nguồn sẽ được thay thế bằng giá trị tương ứng. File inclusion (Nhập mã nguồn từ thư viện) Để sử dụng được các hàm như
2 hay
3, ta cần sử dụng mã nguồn từ các thư viện bên ngoài. Thư viện điển hình mà chúng ta hay sử dụng trong C là thư viện
4. Để sử dụng thư viện này trong mã nguồn của chúng ta, ta viết như sau:
4.2.2 Compiling (Biên dịch)Giai đoạn Compilation (Biên dịch) trong quá trình biên dịch mã nguồn C là bước quan trọng để chuyển mã nguồn C của bạn thành mã máy hoặc mã nguồn trung gian. Trong giai đoạn này, trình biên dịch (compiler) sẽ phân tích mã nguồn C và tạo ra mã máy hoặc mã nguồn trung gian. Dưới đây là một ví dụ cụ thể: Giả sử bạn có một tệp mã nguồn C đơn giản như sau (ví dụ "hello.c"):
Bây giờ, để biên dịch tệp này, bạn sử dụng trình biên dịch C, chẳng hạn như GCC trên hệ thống Unix/Linux. Sử dụng lệnh sau:
Trong lệnh trên:
define PI 3.14159265define MAX_SIZE 100 5 là trình biên dịch C.
6 chỉ định tên của tệp thực thi đầu ra sẽ là "hello".
define PI 3.14159265define MAX_SIZE 100
7 là tệp mã nguồn C bạn muốn biên dịch.
Khi bạn chạy lệnh trên, trình biên dịch sẽ thực hiện giai đoạn Compilation. Trong giai đoạn này, nó thực hiện các nhiệm vụ sau:
define PI 3.14159265define MAX_SIZE 100
gcc -o hello hello.c
gcc -o hello hello.o
define PI 3.14159265define MAX_SIZE 100
9 với GCC để tạo tệp mã hợp ngữ:
gcc -S -o hello hello.c
hello: .globl _start
_start:
gcc -c -o file1.o file1.c
gcc -c -o file2.o file2.c
define PI 3.14159265define MAX_SIZE 100
0
Trong ví dụ này:
5 là trình liên kết (linker).
include <stdio.h> 1 chỉ định tên của tệp thực thi đầu ra sẽ là "myprogram".
2 và
3 là các tệp đối tượng cần được liên kết lại với nhau.Khi bạn chạy lệnh trên, trình liên kết sẽ thực hiện các công việc sau:
include <stdio.h>
2 và include <stdio.h> 3 có thể được giải quyết bằng cách sử dụng mã máy từ các thư viện hoặc tệp đối tượng khác. Nếu có tham chiếu không được giải quyết, trình liên kết sẽ tạo lỗi liên kết.
2 và
3 để tạo một tệp thực thi hoàn chỉnh. Điều này bao gồm gắn các đoạn mã máy từ các tệp đối tượng vào một chương trình duy nhất.
include <stdio.h>
Kết quả cuối cùng là một tệp thực thi "myprogram" mà bạn có thể chạy để thực hiện chương trình. Tệp thực thi này bao gồm mã máy đã được kết hợp từ các tệp đối tượng và thư viện, và nó thực hiện toàn bộ ứng dụng C của bạn. Xem biểu đồ bên dưới để thấy trình tự diễn ra của quy trình biên dịch này 6. Tài liệu học ngôn ngữ CCó rất nhiều tài liệu giúp bạn học ngôn ngữ C, tuy nhiên lựa chọn đúng tài liệu phù hợp với bản thân cũng như thật sự chất lượng thì không phải chuyện dễ. Dưới đây là một số tài liệu được 200Lab chọn lọc để giúp bạn nắm thật chắc ngôn ngữ C:
7. Cách học ngôn ngữ C hiệu quảNgôn ngữ C tính đến thời điểm hiện tại mặc dù đã cũ nhưng vẫn được sử dụng để giảng dạy ở rất nhiều trường Đại học, đặc biệt là ở Việt Nam. Chính vì thế nếu bạn đang là sinh viên, bạn cần nắm thật chắc ngôn ngữ này, vì nó sẽ giúp bạn rất nhiều ở chặng đường phía trước. Dưới đây là các bước thực hiện để học ngôn ngữ C một cách hiệu quả được đúc rút từ kinh nghiệm cá nhân: Bước 1: Tìm hiểu qua các khái niệm cơ bản Bước đầu tiên là các bạn cần đọc qua các khái niệm cơ bản trong C, hiểu được chúng dùng để làm gì sau đó nhớ cú pháp của chúng, ở bước này quan trọng nhất là cần nắm được cách sử dụng chúng. Bước 2: Tiến hành làm bài tập Hãy bắt đầu với những bài tập theo từng chủ đề trước, từ dễ đến khó. Các bạn có thể tìm trên Google 500 bài code thiếu nhi hoặc làm các bài tập mà thầy cô giao trên trường. Ở bước này điều quan trọng nhất là cố gắng tìm ra lời giải đúng của mỗi bài, từ cách làm đấy đem đi làm những bài tương tự nhưng ở mức độ khó hơn một chút. Bước 3: Luyện tập, luyện tập, và luyện tập Đến bước này thì việc còn lại của bạn chỉ là lặp đi lặp lại 3 bước trên, hãy cố gắng làm thật nhiều bài tập, xử lý thật nhiều vấn đề khác nhau. Từ đấy sẽ giúp bạn nắm rõ các khái niệm và nâng cao được tư duy. 8. Kết luậnC là ngôn ngữ cơ bản nhất và là nền tảng cho rất nhiều ngôn ngữ khác về sau. Chính vì thế hiểu về C là rất quan trọng và là cần thiết đối với tất cả lập trình viên ngày nay. |