Trong bài viết này: Chuẩn bị sẵn sàng, Sử dụng các biến, Dùng các câu lệnh điều kiện, Tìm hiểu Vòng lặp, Sử dụng các hàm, Tiếp tục tìm hiều sâu hơn Ngôn ngữ lập trình C là một trong những ngôn ngữ lập trình lâu đời. Ngôn ngữ này được phát triển vào những năm 70, nhưng hiện tại nó vẫn rất mạnh nhờ vào đặc điểm ngôn ngữ bậc thấp của mình. Học C cũng là cách tuyệt vời để tự tìm hiểu về các ngôn ngữ phức tạp hơn; ngoài ra, kiến thức học được sẽ hữu ích trong hầu hết các ngôn ngữ lập trình và có thể giúp bạn phát triển ứng dụng. Để tìm hiểu làm thế nào để bắt đầu lập trình trong C, hãy xem Bước 1 dưới đây. Phương pháp 1: Chuẩn bị sẵn sàng 1. Tải và cài đặt trình biên dịch. Mã C cần phải được biên dịch bởi một chương trình giải mã để giải các mã thành tín hiệu mà máy có thể hiểu được. Trình biên dịch thường là miễn phí, và có nhiều trình biên dịch khác nhau dùng cho các hệ điều hành khác nhau. Đối với Windows, thử dùng trình Microsoft Visual Studio Express hoặc MinGW. Đối với Mac, XCode là một trong những trình biên dịch C tốt nhất. Đối với Linux, một trong những lựa chọn phổ biến nhất là gcc. 2. Tìm hiểu cơ bản. C là một trong những ngôn ngữ lập trình cũ và có thể rất mạnh. Ngôn ngữ này được thiết kế cho các hệ điều hành Unix, nhưng sau đó đã được chuyển và mở rộng cho hầu hết các hệ điều hành. Và phiên bản hiện đại của C là C ++. C chủ yếu bao gồm các hàm, và trong các hàm này, bạn có thể sử dụng các biến, câu lệnh điều kiện, các vòng lặp để lưu và thao tác dữ liệu. 3. Kiểm tra một số mã cơ bản. Xem qua chương trình (rất) cơ bản dưới đây để hiểu rõ hơn về cách các mảng khác nhau của ngôn ngữ làm việc cùng nhau và đồng thời hiểu được về cách hoạt động của các chương trình. #include <stdio.h> int main() { printf ("Xin chào, Thế giới!\n"); getchar(); return 0; }[1] Lệnh #include được thực hiện trước khi chương trình bắt đầu và tải các thư viện chứa các hàm mà bạn cần. Trong ví dụ này, stdio.h cho phép chúng ta sử dụng hàm printf() và hàm getchar(). Lệnh {int main() truyền tải cho trình biên dịch rằng chương trình đang chạy hàm gọi là "main" và nó sẽ trả về một số nguyên khi nó kết thúc. Tất cả các chương trình C đều chạy một chức năng "main". {} chỉ ra rằng mọi thứ bên trong chúng là một phần của hàm. Trong trường hợp này, chúng biểu thị rằng mọi thứ bên trong là một phần của hàm "main". Hàm printf () hiển thị nội dung trong dấu ngoặc đơn trên màn hình của người dùng. Các dấu ngoặc kép đảm bảo rằng chuỗi bên trong được in theo nghĩa đen. Chuỗi \n yêu cầu trình biên dịch di chuyển con trỏ đến dòng tiếp theo. ; biểu thị sự kết thúc của một dòng. Hầu hết các dòng mã C đều phải kết thúc bằng dấu chấm phẩy. Lệnh getchar() yêu cầu trình biên dịch phải chờ dữ liệu nhập bằng bàn phím trước khi tiếp tục di chuyển. Điều này rất hữu ích bởi vì nhiều trình biên dịch sẽ chạy chương trình và đóng cửa sổ ngay lập tức. Như vậy, lệnh này sẽ giữ cho chương trình không bị đóng cho đến khi một phím được nhấn. Lệnh return 0 (trả về) biểu thị kết thúc hàm. Lưu ý cách hàm "main" là hàm int. Điều này có nghĩa là nó sẽ cần một số nguyên được trả lại khi chương trình kết thúc. Số "0" chỉ ra rằng chương trình đã thực hiện đúng; nếu ra trả về bất kỳ số nào khác thì tức là chương trình đã gặp lỗi. 4. Thử biên soạn chương trình. Nhập mã vào trình biên dịch mã và lưu dưới dạng tệp "*.c". Biên dịch mã này trong trình biên dịch của bạn, thường bằng cách nhấp vào nút Build hoặc nút Run. 5. Luôn ghi chú (Comment) về mã của bạn. Ghi chú là một phần của mã và sẽ không được biên dịch, nhưng phần ghi chú này giúp bạn giải thích những gì đang xảy ra. Điểm này rất hữu ích khi bạn muốn nhắc nhở rằng mã của bạn dùng để làm gì, và nó còn giúp các nhà phát triển khác đang xem mã của bạn hiểu rõ hơn. Để ghi chú trong trong C, đặt /* ở đầu phần ghi chú và kết thúc phần này bằng */. Bạn có thể ghi chú về tất cả chứ không phải chỉ phần mã cơ bản nhất của bạn. Bạn có thể dùng phần ghi chú để nhanh chóng loại bỏ các phần mã mà không cần xóa. Đơn giản chỉ cần kèm theo mã bạn muốn xóa với các thẻ ghi chú và sau đó biên dịch. Nếu bạn muốn thêm mã trở lại, hãy xóa các thẻ này.
Phương pháp 2: Sử dụng các biến 1. Hiểu được chức năng của các biến. Các biến cho phép bạn lưu trữ dữ liệu, ngay cả tính toán trong chương trình hoặc dữ liệu từ đầu vào của người dùng. Các biến phải được xác định trước khi bạn có thể dùng, và có nhiều loại biến khác nhau để lựa chọn. Một số biến phổ biến hơn bao gồm int, char, và float. Mỗi biến sẽ lưu trữ một loại dữ liệu khác nhau. 2. Tìm hiểu cách các biến được khai báo. Các biến phải được thiết lập, hoặc "khai báo", trước khi được sử dụng bởi chương trình. Bạn khai báo một biến bằng cách nhập kiểu dữ liệu và theo sau đó là tên của biến. Ví dụ, dưới đây là tất cả khai báo biến hợp lệ: float x; tên nhân vật; int a, b, c, d; Lưu ý rằng bạn có thể khai báo nhiều biến trên cùng một dòng, miễn là các biến này cùng loại. Bạn chỉ cần tách tên các biến với nhau bằng dấu phẩy. Giống như nhiều dòng khác trong C, mỗi dòng khai báo biến cần phải kết thúc bằng dấu chấm phẩy. 3. Tìm vị trí khai báo biến. Các biến phải được khai báo ở đầu mỗi khối mã (Các phần của mã nằm trong dấu ngoặc {}). Nếu bạn cố gắng khai báo biến ở cuối khối, chương trình sẽ không hoạt động chính xác. 4. Sử dụng các biến để lưu trữ dữ liệu người dùng. Bây giờ bạn đã nắm được một số kiến thức cơ bản về cách hoạt động của các biến, bạn có thể viết một chương trình đơn giản để lưu trữ dữ liệu đầu vào của người dùng. Bạn sẽ dùng một hàm khác trong chương trình, được gọi là scanf. Hàm này tìm kiếm đầu vào được cung cấp với giá trị cụ thể. #include <stdio.h> int main() { int x; printf("Nhập một số:"); scanf( "%d", &x ); printf("Bạn đã nhập% d", x); getchar(); return 0; } Chuỗi "%d" yêu cầu scanf tìm các số nguyên trong đầu vào của người dùng. Lệnh & trước biến x cho scanf biết nơi tìm các biến để thay nó, và lưu trữ các số nguyên trong biến. Lệnh cuối cùng printf đọc lại số nguyên đầu vào cho người dùng. 5. Thao tác các biến. Bạn có thể sử dụng các biểu thức toán học để thao tác dữ liệu mà bạn đã lưu trữ trong các biến của mình. Điểm khác biệt quan trọng nhất cần nhớ đối với các biểu thức toán học là một dấu = có nghĩa là đặt giá trị của biến, trong khi 2 dấu == tức là so sánh các giá trị ở hai bên để xem liệu chúng có bằng nhau không. x = 3 * 4; /* đặt "x" là 3 * 4, hoặc 12 */ x = x + 3; /* cộng 3 vào giá trị gốc của "x", và đặt giá trị mới là biến */ x == 15; /* kiểm tra liệu rằng "x" có bằng 15 hay không */ x <10; / * kiểm tra liệu rằng giá trị của "x" có nhỏ hơn 10 hay không * /
Phương pháp 3: Dùng các câu lệnh điều kiện 1. Tìm hiểu cơ bản về câu lệnh điều kiện. Câu lệnh điều kiện là yếu tố điều khiển hầu hết các chương trình. Đây là các câu lệnh được xác định là TRUE hoặc FALSE, sau đó được thực hiện dựa trên kết quả. Câu lệnh cơ bản nhất là câu lệnh if. TRUE và FALSE trong C sẽ hoạt động khác với những gì bạn có thể đã từng dùng. Câu lệnh TRUE luôn kết thúc bằng một số khác không. Khi bạn thực hiện so sánh, nếu kết quả là TRUE thì sẽ được trả về "1". Nếu kết quả là FALSE, thì trả về là "0". Nắm được điểm này sẽ giúp bạn hiểu được các câu lệnh IF được xử lý như thế nào. 2. Tìm hiểu các toán tử điều kiện cơ bản. Câu lệnh điều kiện xoay quanh việc sử dụng các toán tử toán học để so sánh các giá trị. Dưới đây là danh sách các toán tử điều kiện được sử dụng phổ biến nhất. > /* lớn hơn */ < /* nhỏ hơn */ >= /* lớn hơn hoặc bằng */ <= /* nhỏ hơn hoặc bằng */ == /* bằng */ != /* không bằng */ 10 > 5 TRUE 6 < 15 TRUE 8 >= 8 TRUE 4 <= 8 TRUE 3 == 3 TRUE 4 != 5 TRUE 3. Viết câu lệnh IF cơ bản. Bạn có thể sử dụng câu lệnh IF để xác định xem chương trình nên làm gì tiếp theo sau khi câu lệnh được đánh giá. Bạn có thể kết hợp câu lệnh if với các câu lệnh điều kiện sau để tạo ra nhiều lựa chọn tốt hơn, nhưng bây giờ hãy viết một câu lệnh đơn giản để làm quen với chúng. #include <stdio.h> int main() { if ( 3 < 5 ) printf( "3 nhỏ hơn 5"); getchar(); } 4. Dùng câc câu lệnh ELSE/ELSE IF để mở rộng các điều kiện của bạn. Bạn có thể xây dựng dựa trên câu lệnh IF bằng cách sử dụng câu lệnh ELSE và câu lệnh ELSE IF để xử lý các kết quả khác nhau. Câu lệnh ELSE chạy nếu câu lệnh IF là FALSE. Các câu lệnh ELSE IF cho phép bạn đưa nhiều câu lệnh IF vào một khối mã để xử lý các trường hợp khác nhau. Xem chương trình ví dụ dưới đây để hiểu rõ hơn cách chúng tương tác như thế nào. #include <stdio.h> int main() { int tuổi; printf( "Hãy nhập tuổi hiện tại của bạn: " ); scanf( "%d", &tuổi ); if ( tuổi <= 12 ) { printf( "Bạn là một đứa trẻ!\n" ); } else if ( tuổi < 20 ) { printf( "Là thanh thiếu niên thật tuyệt vời!\n" ); } else if ( tuổi < 40 ) { printf( "Bạn vẫn còn trẻ!\n" ); } else { printf( "Gừng càng già càng cay.\n" ); } return 0; } [2] Chương trình lấy dữ liệu từ người dùng và đưa nó qua các câu lệnh IF. Nếu số liệu đáp ứng câu lệnh đầu tiên, thì câu lệnh printf đầu tiên được trả lại. Nếu nó không đáp ứng được câu lệnh đầu tiên, nó sẽ được đưa tiếp qua các câu lệnh ELSE IF cho đến khi nó tìm được câu lệnh phù hợp. Nếu nó không khớp với bất kỳ câu lệnh nào, nó sẽ đi qua câu lệnh ELSE ở cuối.
Phương pháp 4: Tìm hiểu Vòng lặp 1. Hiểu cách hoạt động của vòng lặp. Các vòng lặp là một trong những khía cạnh quan trọng nhất của lập trình vì chúng cho phép bạn lặp lại các khối mã cho tới khi các điều kiện cụ thể được đáp ứng. Điều này có thể làm cho các hoạt động lặp lại rất dễ thực hiện và giúp bạn không phải viết lại những câu lệnh điều kiện mới mỗi khi bạn muốn thực hiện điều gì đó. Có ba loại vòng lặp chính: FOR, WHILE, và DO ... WHILE. 2. Dùng vòng lặp FOR. Đây là loại vòng lặp phổ biến và hữu ích nhất. Vòng lặp sẽ tiếp tục chạy các chức năng cho đến khi các điều kiện thiết lập trong vòng lặp FOR được đáp ứng. Vòng lặp FOR yêu cầu ba điều kiện: khởi tạo biến, biểu thức điều kiện để được đáp ứng, và cách cập nhật các biến. Nếu bạn không cần tất cả các điều kiện này, bạn vẫn cần chừa ra một chỗ trống với dấu chấm phẩy, nếu không vòng lặp sẽ chạy mãi mãi.[3] #include <stdio.h> int main() { int y; for ( y = 0; y < 15; y++;){ printf( "%d\n", y ); } getchar(); } Trong chương trình trên, y được đặt là 0, và vòng lặp tiếp tục chạy miễn là giá trị y nhỏ hơn 15. Mỗi lần giá trị y được in ra, thì giá trị y sẽ được cộng thêm 1 và vòng lặp sẽ được lặp lại. Đến khi y = 15, vòng lặp sẽ bị phá bỏ. 3. Dùng vòng lặp WHILE. Vòng lặp WHILE đơn giản hơn vòng lặp FOR. Loại vòng lặp này chỉ có một biểu thức điều kiện, và vòng lặp vẫn hoạt động miễn là biểu thức điều kiện đó đúng. Bạn không cần phải khởi tạo hoặc cập nhật biến, mặc dù bạn có thể làm điều đó trong phần chính của vòng lặp. #include <stdio.h> int main() { int y; while ( y <= 15 ){ printf( "%d\n", y ); y++; } getchar(); } Lệnh y ++ sẽ cộng thêm 1 vào biến y mỗi khi vòng lặp được thực thi. Khi biến y đạt đến 16 (nhớ rằng, vòng lặp này sẽ tiếp tục chạy miễn rằng giá trị y nhỏ hơn hoặc bằng 15), vòng lặp bị ngưng. 4. Dùng vòng lặp DO...WHILE Vòng lặp này rất hữu ích cho các vòng lặp mà bạn muốn đảm bảo chạy ít nhất một lần. Trong vòng lặp FOR và WHILE, biểu thức điều kiện được kiểm tra ở đầu vòng lặp, tức là là nó không thể truyền và thất bại ngay lập tức. Do vòng lặp DO...WHILE kiểm tra điều kiện vào cuối vòng lặp nên sẽ đảm bảo rằng vòng lặp thực hiện ít nhất một lần. #include <stdio.h> int main() { int y; y = 5; do { printf("Vòng lặp đang chạy!\n"); } while ( y != 5 ); getchar(); } Vòng lặp này sẽ hiển thị thông báo mặc dù điều kiện là FALSE. Biến y được đặt là 5 và vòng lặp WHILE được thiết lập để chạy khi y không bằng 5, do đó, vòng kết thúc. Thông báo được in kể từ khi điều kiện không được kiểm tra cho đến khi kết thúc. Vòng lặp WHILE trong thiết lập DO...WHILE phải được kết thúc bằng dấu chấm phẩy. Đây là lần duy nhất một vòng lặp kết thúc bằng dấu chấm phẩy.
Phương pháp 5: Sử dụng các hàm 1. Tìm hiểu cơ bản về các hàm. Hàm là khối mã độc lập có thể được gọi bởi các phần khác của chương trình. Các hàm này giúp cho chương trình dễ dàng lặp lại mã, và giúp làm cho chương trình đơn giản để đọc và dễ thay đổi. Các hàm có thể bao gồm tất cả các kỹ thuật đã có trước đó được học trong bài viết này, và thậm chí cả các hàm khác. Dòng main() ở đầu tất cả các ví dụ trên là một hàm, ví dụ như là getchar() Các hàm rất thiết yếu để giúp mã hiệu quả và dễ đọc. Tận dụng tốt các hàm để sắp xếp chương trình của bạn. 2. Bắt đầu bằng phác thảo. Các hàm được tạo ra tốt nhất khi bạn phác thảo những gì bạn muốn nó hoàn thành trước khi bạn bắt đầu thực sự mã hóa. Cú pháp cơ bản cho các hàm là "return_type name (argument1, argument2, etc.)"; Ví dụ: để tạo một hàm cộng hai số: int cộng ( int x, int y ); Cách này sẽ tạo ra một hàm cộng hai số nguyên (x và y) lại với nhau và sau đó trả về tổng cũng là một số nguyên. 3. Thêm hàm vào chương trình. Bạn có thể sử dụng phác thảo để tạo ra một chương trình lấy hai số nguyên mà người dùng nhập vào và sau đó cộng chúng lại với nhau. Chương trình sẽ xác định cách hàm "cộng" hoạt động như thế nào và sử dụng hàm này để thao tác các số liệu đầu vào. #include <stdio.h> int cộng ( int x, int y ); int main() { int x; int y; printf( "Nhập hai số bạn muốn cộng lại với nhau: " ); scanf( "%d", &x ); scanf( "%d", &y ); printf( "Tổng các số của bạn là %d\n" , cộng( x, y ) ); getchar(); } int cộng ( int x , int y ) { return x + y; } Lưu ý rằng phác thảo vẫn nằm ở đầu chương trình. Điều này truyền tải tới trình biên dịch điều mà bạn mong đợi khi hàm được gọi và kết quả trả về là gì. Điều này chỉ là cần thiết nếu bạn muốn xác định hàm cuối chương trình. Bạn có thể đặt hàm add() (cộng) trước hàm main() và kết quả sẽ giống nhau khi không có phác thảo. Chức năng thực tế của hàm được định nghĩa ở cuối chương trình. Hàm main() thu thập các số nguyên từ người dùng và sau đó gửi chúng đến hàm add() để xử lý. Hàm add() thực hiện chức năng cộng sau đó trả về kết quả cho main() Vào lúc này add() đã được xác định, có thể được gọi bất cứ nơi nào trong chương trình.
Phương pháp 6: Tiếp tục tìm hiều sâu hơn 1. Tìm một vài cuốn sách về lập trình C. Bài viết này đề cập đến các vấn đề cơ bản, nhưng chỉ là bề nổi của lập trình C và tất cả các kiến thức liên quan. Một cuốn sách tham khảo tốt sẽ giúp bạn giải quyết được nhiều vấn đề và giúp bạn khỏi bị đau đầu với các vấn đề hóc búa sau này. 2. Tham gia vào một số cộng đồng. Có rất nhiều cộng đồng, cả trực tuyến và trong thế giới thực, dành cho lập trình và tất cả các ngôn ngữ lập trình. Tìm một số lập trình viên C có cùng đam mê để trao đổi các mã và ý tưởng với nhau, và chắc chắn bạn sẽ sớm thấy mình học được rất nhiều. Tham dự một số cuộc thi hack-a-thons nếu có thể. Đây là những sự kiện mà các nhóm và cá nhân đưa ra các chương trình và giải pháp, và thường thúc đẩy sự sáng tạo trong thời hạn nhất định. Bạn có thể gặp rất nhiều lập trình viên giỏi theo cách này, và các cuộc thi hack-a-thon thường được tổ chức trên toàn cầu. 3. Tham gia một số lớp học. Bạn không cần phải quay trở lại trường học để lấy bằng Khoa học Máy tính, nhưng bạn có thể tham gia một vài lớp học có thể tìm hiều sâu hơn. Không gì có thể tốt hơn việc được giúp đỡ thực tế từ những người thông thạo ngôn ngữ lập trình. Thông thường, bạn có thể tìm các lớp học tại trung tâm cộng đồng ở địa phương và các trường trung học cơ sở, và một số trường đại học có cho phép bạn dự thính các chương trình khoa học máy tính mà không cần ghi danh. 4. Xem xét học C ++. Khi đã hiểu rõ về ngôn ngữ lập trình C, bạn có thể bắt đầu tìm hiểu C + +. Đây là phiên bản hiện đại hơn của C, và cho phép linh hoạt hơn rất nhiều. C ++ được thiết kế với việc xử lý đối tượng, và có thể cho phép bạn tạo các chương trình mạnh hơn cho hầu hết các hệ điều hành. Lời khuyên Luôn thêm phần ghi chú vào chương trình của bạn. Phần này không chỉ giúp người khác có thể xem mã nguồn của nó, mà còn giúp bạn nhớ những gì bạn đang viết và lý do bạn viết chúng. Ngay lúc viết mã, bạn có thể biết rõ bạn viết mã này để làm gì, nhưng sau hai hoặc ba tháng, có thể bạn sẽ không nhớ nhiều về mục đích và lý do biết mã. Luôn nhớ kết thúc một câu lệnh như printf(), scanf(), getch(), vv với dấu chấm phẩy (;) nhưng không bao giờ chèn nó sau câu lệnh kiểm soát như 'if', vòng lặp 'while' hoặc 'for'. Khi gặp phải lỗi cú pháp khi biên dịch, nếu bạn đang rối, hãy tra lỗi mà bạn đang gặp trên Google (hoặc công cụ tìm kiếm khác). Có khả năng ai đó cũng đã từng gặp vấn đề giống bạn và có đăng cách giải quyết. Mã nguồn của bạn cần có đuôi *.c để trình biên dịch hiểu rằng đó là một tệp nguồn C. Có công mài sắt có ngày nên kim. Thực hành viết chương trình càng nhiều, bạn sẽ càng trở nên giỏi hơn. Vì vậy, bắt đầu bằng các chương trình đơn giản và ngắn cho đến khi bạn thành thạo và tự tin hơn thì có thể chuyển sang dạng chương trình phức tạp hơn. Cố gắng học cách xây dựng logic. Nó giúp giải quyết các vấn đề khác nhau trong khi viết mã.