Là một website được viết trên công nghệ web Flutter vì vậy hỗ trợ rất tốt cho người học, kể cả những người học khó tính nhất.
Hiện tại website đang tiếp tục được cập nhập nội dung cho phong phú và đầy đủ hơn. Mong các bạn nghé thăm và ủng hộ website mới của chúng tôi.
1- Bắt đầu với C/C++ cần những gì
Các tài liệu hướng dẫn C/C++ trên website o7planning chúng tôi sử dụng Eclipse IDE. Bạn cần cài đặt và cấu hình Eclipse và môi trường C/C++ trước khi bắt đầu. Bạn có thể xem chỉ dẫn tại:
2- Phân biệt C và C++
Bạn cần có cái nhìn tổng quát để phân biệt C và C++.
C là ngôn ngữ ra đời trước, và là ngôn ngữ hướng thủ tục, nó dễ dàng được triển khai và chạy trên các hệ điều hành. C++ ra đời sau mở rộng từ C nó mang vào khái niệm lập trình hướng đối tượng, C là nền tảng của C++, và C++ không ra đời để thay thế C, các thư viện của nó được mở rộng lên rất nhiều.
Lập trình hướng thủ tục ở đây có nghĩa là: Các file nguồn [Chứa code của bạn] sẽ chứa các hàm. Trong khi đó hướng đối tượng file nguồn chứa một class [lớp] và trong class có chứa các phương thức. Để gọi một phương thức trong một class bạn cần tạo ra một đối tượng của class và sau đó gọi hàm thông qua đối tượng này, trong khi đó với hướng thủ tục bạn có thể gọi trực tiếp.
Trong tài liệu hướng dẫn này tôi sẽ hương dẫn bạn làm việc trên C. Còn C++ sẽ được đề cập tới trong một tài liệu khác.
3- Tạo Project bắt đầu với C
Nếu bạn làm việc với: Windows 64bit + Eclipse 64bit + Java64bit, bạn cần phải mở Eclipse với quyền Administrator, có một rắc rối là Eclipse không in các message ra màn hình Console trong trường hợp chạy ở chế độ thông thường.
- File/New/Other..
Trong tài liệu này tôi sẽ hướng dẫn bạn lập trình C [C++ sẽ hướng dẫn trong tài liệu khác]. Tuy nhiên project mà chúng ta tạo ra tại đây là C++, nhưng chúng ta chỉ sử dụng những thư viện của C.
Nhập vào tên Project:
- CBasicTutorial
Project đã được tạo ra, thực tế mã [code] của ví dụ HelloWorld này có mã C++. Tuy nhiên chưa cần phải quan tâm tới nó.
Biên dịch project [Compile project].
Project đã được biên dịch thành công.
Tiếp theo bạn cần phải cấu hình để có thể chạy được project trực tiếp trên Eclipse, việc này rất quan trọng.
Chạy thử ví dụ HelloWorld
Hoặc:
Kết quả chạy ví dụ:
OK! Mọi thứ hoạt động tốt.
4- Đặc điểm của C và chú ý trong thực hành
Khi một chương trình C được chạy nó sẽ tìm hàm main[] để thực thi, chẳng hạn thực thi hàm main[] của ví dụ HelloWorld nói trên.
Một chương trình C có thể có nhiều file nguồn, mỗi file nguồn có thể nhiều hàm. Tuy nhiên chỉ cho phép duy nhất một hàm main[] trên toàn bộ Project của bạn.
Trên kia bạn vừa tạo ra một file CBasicTutorial.cpp nó có một hàm main[], giờ bạn tạo ra một file khác để thực hành chẳng hạn PrimitiveExample.cpp và có hàm main[] bạn cần đổi tên hàm main[] của CBasicTutorial.cpp thành một tên khác để nó không xung đột và bạn có project thể biên dịch được, sau đó có thể thực hành những gì viết
trong PrimitiveExample.cpp.
Theo tôi trong quá trình thực hành bạn nên chọn cách đổi tên như sau:
- CBasicTutorial.cpp
- main[] ==> mainCBasicTutorial[]
5- Cấu trúc của một chương trình C
Tôi sẽ tạo ra một file cpp mới để minh họa và giải thích về cấu trúc của một chương trình C.
Trên Eclipse chọn:
- File/New/Other...
Nhập vào:
- Source file: MyFirstExample.cpp
- Template: Default C source temple
File nguồn đã được tạo ra, nó chẳng có gì cả.
Chúng ta sẽ viết code cho file nguồn này:
Chú ý: Hãy đổi tên hàm main của file nguồn CBasicTutorial.cpp thành mainCBasicTutorial vì một project của C chỉ cho phép một hàm main trên toàn bộ Project.
MyFirstExample.cpp
// Khai báo sử dụng thư viện vào ra chuẩn stdio.h
// [Standard IO / Standard Input Output]
#include
int main[] {
// printf là một hàm của thư viện stdio.h
// Đây là một hàm để in ra màn hình Console một dòng chữ.
// \n là ký tự xuống dòng
printf["Hello!, This is your first C example.\n"];
// In ra dòng thông báo ứng dụng sẽ kết thúc.
printf["Exit!"];
// Hàm này trả về 0.
return 0;
}
Chạy ví dụ:
Kết quả chạy ví dụ:
Có một vài chú ý: Có một số hàm trong thư viện conio.h của C đã không được hỗ trợ trong C++. Chẳng hạn như getch[] - Vốn là một hàm tạm dừng chương trình chờ cho tới khi người dùng gõ một ký tự bất kỳ mới tiếp tục chạy tiếp. Vì vậy trong hướng dẫn này tôi cố gắng không sử dụng các hàm như vậy trong các ví dụ.
#include int main[] { // Làm gì đó tại đây .... // Dừng chương trình tại đây, // chờ cho tới khi người dùng gõ một ký tự bất kỳ mới tiếp tục chạy. // [Hàm này không được hỗ trợ đầy đủ] getch[]; // Làm gì đó tiếp tại đây. }
6- Kiểu dữ liệu trong C
6.1- Kiểu số nguyên
char | 1 byte | -128 to 127 or 0 to 255 | %c |
unsigned char | 1 byte | 0 to 255 | %c |
signed char | 1 byte | -128 to 127 | %s |
int | 2 or 4 bytes | -32,768 to 32,767 or -2,147,483,648 to 2,147,483,647 | %d |
unsigned int | 2 or 4 bytes | 0 to 65,535 or 0 to 4,294,967,295 | %u |
short | 2 bytes | -32,768 to 32,767 | |
unsigned short | 2 bytes | 0 to 65,535 | |
long | 4 bytes | -2,147,483,648 to 2,147,483,647 | %ld |
unsigned long | 4 bytes | 0 to 4,294,967,295 |
6.2- Kiểu số chấm động [Floating point type]
float | 4 byte | 1.2E-38 to 3.4E+38 | 6 vị trí sau thật phân |
double | 8 byte | 2.3E-308 to 1.7E+308 | 15 vị trí sau thật phân |
long double | 10 byte | 3.4E-4932 to 1.1E+4932 | 19 vị trí sau thật phân |
6.3- Ví dụ
PrimitiveExample.cpp
// Khai báo sử dụng thư viện vào ra chuẩn stdio.h
// [Standard IO / Standard Input Output]
#include
// Khai báo sử dụng thư viện float.h
#include
int main[] {
// Hàm sizeof[type]
// trả về số byte cần thiết để lưu trữ kiểu dữ liệu này.
printf["Storage size for float : %d \n", sizeof[float]];
// FLT_MIN là hằng số, giá trị nhỏ nhất của kiểu float.
// Hằng số này được định nghĩa trong thư viện float.h
printf["Minimum float positive value: %E\n", FLT_MIN];
// FLT_MAX là hằng số, giá trị lớn nhất của kiểu dữ liệu float.
// Hằng số này được định nghĩa trong thư viện float.h
printf["Maximum float positive value: %E\n", FLT_MAX];
// FLT_DIG là hằng số, số vị trí tối đa của phần thập phân.
// Hằng số này được định nghĩa trong thư viện float.h
printf["Precision value: %d\n", FLT_DIG];
return 0;
}
Kết quả chạy ví dụ:
7- Câu lệnh rẽ nhánh trong C [if - else if - else]
if là một câu lệnh kiểm tra một điều kiện gì đó trong C. Chẳng hạn: Nếu a > b thì làm gì đó ....
Các toán tử so sánh thông dụng:
Toán tử | Ý nghĩa | Ví dụ |
> | Lớn hơn | 5 > 4 là đúng [true] |
< | Nhỏ hơn | 4 < 5 là đúng [true] |
>= | Lớn hơn hoặc bằng | 4 >= 4 là đúng [true] |
= 80 && age Need ';'
return 0;
}
Kết quả chạy ví dụ: 9.4- Lệnh break trong vòng lặpbreak là một lệnh nó có thể nằm trong một khối lệnh của một vòng lặp. Đây là lệnh kết thúc vòng lặp vô điều kiện. BreakExample.cpp
Kết quả chạy ví dụ: 9.5- Lệnh continue trong vòng lặpcontinue là một lệnh, nó có thể nằm trong một vòng lặp, khi bắt gặp lệnh continue chương trình sẽ bỏ qua các dòng lệnh trong cùng vòng lặp và ở phía dưới của continue và bắt đầu một vòng lặp mới. ContinueExample.cpp
Kết quả chạy ví dụ: 10- Mảng trong C10.1- Mảng một chiềuĐây là hình minh họa về mảng một chiều có 5 phần tử, các phần tử được đánh chỉ số từ 0 tới 4. Cú pháp khai báo mảng một chiều:
ArrayExample1.cpp
Kết quả chạy ví dụ: 10.2- Mảng hai chiềuĐây là hình minh họa một mảng 2 chiều Cú pháp khai báo một mảng 2 chiều:
ArrayExample2.cpp
Kết quả chạy ví dụ: 11- Con trỏ [Pointer]Một con trỏ [Pointer] là một biến có giá trị là địa chỉ của một biến khác, ví dụ, địa chỉ trực tiếp của vị trí bộ nhớ. Giống như bất kỳ biến hoặc hằng số, bạn phải khai báo một con trỏ trước khi bạn có thể sử dụng nó để lưu trữ bất kỳ địa chỉ biến nào. Cú pháp khai báo biến con trỏ là: Ví dụ:
PointerExample.cpp
11.1- NULL PointerNULL là một hằng số được định nghĩa trước trong một vài thư viện của C. Khi bạn khai báo một con trỏ mà không gán giá trị cụ thể cho con trỏ, nó sẽ trỏ vào một vùng bộ nhớ ngẫu nhiên. Trong một số tình huống bạn có thể khai báo con trỏ và gán trực tiếp giá trị NULL cho nó. Hãy xem một ví dụ: NULLPointerExample.cpp
Kết quả chạy ví dụ: 12- Hàm [Function]
Chủ Đề |