[C++] Bài 1: Mở đầu về C++
C++ là một ngôn ngữ lập trình bậc cao được phát triển trên nền tảng của ngôn ngữ C, nó khắc phục được một số nhược điểm của C và đặc biệt quan trọng là C++ đã phát triển trở thành một ngôn ngữ lập trình hướng đối tượng. Chính vì lẽ đó, C++ trở thành một ngôn ngữ mạnh, mềm dẻo, đa năng và ngày càng trở nên phổ biến trong giới công nghệ thông tin.
Mặc dù C++ được phát triển cao hơn so với C nhưng thực sự bạn không cần phải học ngôn ngữ C rồi mới chuyển sang C++. Có thể bạn là người mới bắt đầu học công nghệ thông tin nhưng cũng có thể học được C++ mà không cần thiết phải tìm hiểu từ Pascal hay C. Hy vọng chúng ta sẽ có một môi trường học tập tích cực và chúc các bạn sớm chinh phục được những tri thức công nghệ.
Trước tiên, để học được ngôn ngữ lập trình này, chúng ta cần phải có một môi trường làm việc hay một công cụ lập trình. Có thể nhiều người đã quen thuộc với công cụ lập trình Turbo C++ hay Borland C++, tuy nhiên chúng ta có một công cụ lập trình khác tiện lợi hơn đó là Dev C++. Bạn tải Dev C++ tại đây (8.89 Mb) về máy rồi tiến hành cài đặt bình thường.
OnlineXanh xin hướng dẫn bạn viết một chương trình đơn giản bằng ngôn ngữ C++, nội dung chương trình là đưa ra một lời chào: "Xin chao". Cách tiến hành như sau: Bạn mở Dev C++ bằng cách mở Start | All Programs | Bloodshed Dev-C++ | Dev-C++. Trên cửa sổ làm việc, bạn mở File | New | Source File hoặc bấm tổ hợp phím Ctrl + N. Tiếp đến, bạn gõ đoạn code như sau:
Bạn lưu mã nguồn của mình lại để trong trường hợp nào đó có thể sử dụng lại. Để lưu mã nguồn, bạn nhấn tổ hợp phím Ctrl + S và chọn vị trí trên máy tính để cất trữ file mã nguồn có đuôi mở rộng .CPP.
Hãy cho Dev C++ biên dịch (Compile) mã nguồn của bạn thành một tập tin chương trình có đuôi mở rộng .EXE bằng cách nhấn tổ hợp phím Ctrl + F9 (hoặc vào menu Execute rồi bấm Compile) rồi chọn ví trí trên máy tính để Dev C++ tạo tập tin chương trình cho bạn. Bây giờ, bạn vào thư mục vừa lưu, tìm đến tập tin có đuôi mở rộng .EXE và chạy tập tin này bạn sẽ thấy kết quả của mình.
Để cho dễ hiểu cách thức tạo ra một chương trình bằng ngôn ngữ C++, bạn có thể làm như sau:
Bước 1. Bạn mở chương trình soạn thảo Notepad ra (bằng cách vào Start | All Programs | Accessories | Notepad) , bạn gõ hoặc copy đoạn mã trên vào và lưu dưới một tập tin có đuôi mở rộng là .CPP, chẳng hạn là "xinchao.cpp".
Bước 2. Bạn mở Dev C++ rồi bấm Ctrl + O (hoặc vào File | Open Project or File) và tìm đến cho mở tập tin "xinchao.cpp". Lúc này trong cửa sổ làm việc của Dev C++ đã xuất hiện đoạn code trên, bạn cho biên dịch đoạn code này bằng cách bấm Ctrl + F9 (hoặc vào Execute | Compile), Dev C++ sẽ biên dịch thành tập tin có tên là: "xinchao.exe" nằm cùng trong thư mục với tập tin "xinchao.cpp". Để chạy chương trình, bạn có thể vào thư mục chứa tập tin "xinchao.cpp" rồi mở tập tin này hoặc có thể chạy ngay trên Dev C++ bằng cách bấm Ctrl + F10 (hoặc vào Execute | Run).
Như vậy, ta có tập tin nguồn "xinchao.cpp" được viết theo cú pháp của ngôn ngữ lập trình C++. Công cụ lập trình (như Dev C++ hay Turbo C++) có tác dụng biên dịch từ ngôn ngữ C++ (trong tập tin .CPP) về ngôn ngữ máy (trong tập tin .EXE). Và sau khi biên dịch , thì tập tin .EXE có thể chạy độc lập mà không cần phải thông qua bất kỳ một chương trình nào khác.
Bây giờ chúng ta sẽ đi tìm hiểu cấu trúc mã nguồn của một chương trình viết bằng ngôn ngữ C++. Mã nguồn của bất kỳ chương trình C++ nào cũng có khung chính là:
main()
{
}
main() là hàm chính của chương trình và nó bắt buộc phải có trong bất cứ chương trình nào. Khi biên dịch, các thành phần trong hàm này sẽ được biên dịch trước tiên. Trong ví dụ trên, dòng được dịch đầu tiên là
cout<<"Xin chao";
Khi gặp dòng lệnh này, Dev C++ phát hiện từ khóa cout được tìm thấy trong thư viện iostream.h lại được viết theo đúng cú pháp cout<<" ... "; thì Dev C++ biết rằng phải biên dịch cho máy tính hiểu nhiệm vụ của nó là phải in ra màn hình dòng chữ nằm trong dấu " " (trong trường hợp này là dòng chữ "Xin chao"). Như vậy, muốn sử dụng hàm nào, ta phải khai báo thư viện mà hàm đó được định nghĩa trong đó, trong trường hợp này, cout được định nghĩa trong thư viện iostream.h (iostream.h chính là một tập tin do các nhà sáng lập ra C++ tạo ra và nó được nằm trong thư mục cài đặt của Dev C++: C:\Dev-Cpp\include).
Dòng lệnh tiếp theo:
getch();
getch() là một hàm trong thư viện conio.h có tác dụng dừng lại màn hình để chờ người dùng bấm vào một phím bất kỳ. Nếu người dùng bấm vào phím bất kỳ thì chương trình không còn dòng lệnh nào nữa và chương trình sẽ kết thúc. Nếu bạn không có dòng lệnh này thì sau khi in ra màn hình dòng chữ "Xin chao", chương trình sẽ kết thúc ngay lập tức, sự việc này xảy ra rất nhanh và bạn không có cơ hội để quan sát dòng chữ này.
Tóm lại, muốn sử dụng hàm nào, bạn phải khai báo thư viện chứa hàm trước đó bên ngoài hàm main(). Hàm cout<< có tác dụng in ra màn hình một thông báo nào đó, hàm này nằm trong thư viện iostream.h. Hàm getch() có tác dụng dừng lại màn hình để người xem quan sát, hàm này nằm trong thư viện conio.h.
Một số qui tắc cần nhớ:
Mặc dù C++ được phát triển cao hơn so với C nhưng thực sự bạn không cần phải học ngôn ngữ C rồi mới chuyển sang C++. Có thể bạn là người mới bắt đầu học công nghệ thông tin nhưng cũng có thể học được C++ mà không cần thiết phải tìm hiểu từ Pascal hay C. Hy vọng chúng ta sẽ có một môi trường học tập tích cực và chúc các bạn sớm chinh phục được những tri thức công nghệ.
Trước tiên, để học được ngôn ngữ lập trình này, chúng ta cần phải có một môi trường làm việc hay một công cụ lập trình. Có thể nhiều người đã quen thuộc với công cụ lập trình Turbo C++ hay Borland C++, tuy nhiên chúng ta có một công cụ lập trình khác tiện lợi hơn đó là Dev C++. Bạn tải Dev C++ tại đây (8.89 Mb) về máy rồi tiến hành cài đặt bình thường.
OnlineXanh xin hướng dẫn bạn viết một chương trình đơn giản bằng ngôn ngữ C++, nội dung chương trình là đưa ra một lời chào: "Xin chao". Cách tiến hành như sau: Bạn mở Dev C++ bằng cách mở Start | All Programs | Bloodshed Dev-C++ | Dev-C++. Trên cửa sổ làm việc, bạn mở File | New | Source File hoặc bấm tổ hợp phím Ctrl + N. Tiếp đến, bạn gõ đoạn code như sau:
#include<iostream.h> #include<conio.h> main() { cout<<"Xin chao"; getch(); } |
Hãy cho Dev C++ biên dịch (Compile) mã nguồn của bạn thành một tập tin chương trình có đuôi mở rộng .EXE bằng cách nhấn tổ hợp phím Ctrl + F9 (hoặc vào menu Execute rồi bấm Compile) rồi chọn ví trí trên máy tính để Dev C++ tạo tập tin chương trình cho bạn. Bây giờ, bạn vào thư mục vừa lưu, tìm đến tập tin có đuôi mở rộng .EXE và chạy tập tin này bạn sẽ thấy kết quả của mình.
Để cho dễ hiểu cách thức tạo ra một chương trình bằng ngôn ngữ C++, bạn có thể làm như sau:
Bước 1. Bạn mở chương trình soạn thảo Notepad ra (bằng cách vào Start | All Programs | Accessories | Notepad) , bạn gõ hoặc copy đoạn mã trên vào và lưu dưới một tập tin có đuôi mở rộng là .CPP, chẳng hạn là "xinchao.cpp".
Bước 2. Bạn mở Dev C++ rồi bấm Ctrl + O (hoặc vào File | Open Project or File) và tìm đến cho mở tập tin "xinchao.cpp". Lúc này trong cửa sổ làm việc của Dev C++ đã xuất hiện đoạn code trên, bạn cho biên dịch đoạn code này bằng cách bấm Ctrl + F9 (hoặc vào Execute | Compile), Dev C++ sẽ biên dịch thành tập tin có tên là: "xinchao.exe" nằm cùng trong thư mục với tập tin "xinchao.cpp". Để chạy chương trình, bạn có thể vào thư mục chứa tập tin "xinchao.cpp" rồi mở tập tin này hoặc có thể chạy ngay trên Dev C++ bằng cách bấm Ctrl + F10 (hoặc vào Execute | Run).
Như vậy, ta có tập tin nguồn "xinchao.cpp" được viết theo cú pháp của ngôn ngữ lập trình C++. Công cụ lập trình (như Dev C++ hay Turbo C++) có tác dụng biên dịch từ ngôn ngữ C++ (trong tập tin .CPP) về ngôn ngữ máy (trong tập tin .EXE). Và sau khi biên dịch , thì tập tin .EXE có thể chạy độc lập mà không cần phải thông qua bất kỳ một chương trình nào khác.
Bây giờ chúng ta sẽ đi tìm hiểu cấu trúc mã nguồn của một chương trình viết bằng ngôn ngữ C++. Mã nguồn của bất kỳ chương trình C++ nào cũng có khung chính là:
main()
{
}
main() là hàm chính của chương trình và nó bắt buộc phải có trong bất cứ chương trình nào. Khi biên dịch, các thành phần trong hàm này sẽ được biên dịch trước tiên. Trong ví dụ trên, dòng được dịch đầu tiên là
cout<<"Xin chao";
Khi gặp dòng lệnh này, Dev C++ phát hiện từ khóa cout được tìm thấy trong thư viện iostream.h lại được viết theo đúng cú pháp cout<<" ... "; thì Dev C++ biết rằng phải biên dịch cho máy tính hiểu nhiệm vụ của nó là phải in ra màn hình dòng chữ nằm trong dấu " " (trong trường hợp này là dòng chữ "Xin chao"). Như vậy, muốn sử dụng hàm nào, ta phải khai báo thư viện mà hàm đó được định nghĩa trong đó, trong trường hợp này, cout được định nghĩa trong thư viện iostream.h (iostream.h chính là một tập tin do các nhà sáng lập ra C++ tạo ra và nó được nằm trong thư mục cài đặt của Dev C++: C:\Dev-Cpp\include).
Dòng lệnh tiếp theo:
getch();
getch() là một hàm trong thư viện conio.h có tác dụng dừng lại màn hình để chờ người dùng bấm vào một phím bất kỳ. Nếu người dùng bấm vào phím bất kỳ thì chương trình không còn dòng lệnh nào nữa và chương trình sẽ kết thúc. Nếu bạn không có dòng lệnh này thì sau khi in ra màn hình dòng chữ "Xin chao", chương trình sẽ kết thúc ngay lập tức, sự việc này xảy ra rất nhanh và bạn không có cơ hội để quan sát dòng chữ này.
Tóm lại, muốn sử dụng hàm nào, bạn phải khai báo thư viện chứa hàm trước đó bên ngoài hàm main(). Hàm cout<< có tác dụng in ra màn hình một thông báo nào đó, hàm này nằm trong thư viện iostream.h. Hàm getch() có tác dụng dừng lại màn hình để người xem quan sát, hàm này nằm trong thư viện conio.h.
Một số qui tắc cần nhớ:
- C++ là một ngôn ngữ có phân biệt chữ thường và chữ hoa trong cách viết. Vì vậy trong ngôn ngữ này, cout và Cout là hai chữ hoàn toàn khác nhau.
- Phải viết chính xác các từ khóa (như main, cout, getch ...), càng học về sau bạn sẽ được biết thêm nhiều từ khóa.
- Mỗi câu lệnh không nhất thiết phải viết trên một dòng mà có thể được viết trên nhiều dòng, nhưng kết thúc mỗi câu lệnh bắt buộc phải có dấu ";".
[C++] Bài 2: Biến và vào, ra dữ liệu
Trong bài trước chúng ta đã tìm hiểu việc viết một chương trình đơn giản đưa ra một thông báo trên màn hình. Trong bài này chúng ta sẽ đi sâu vào tìm hiểu làm sao để viết một chương trình phức tạp hơn. Trước tiên, OnlineXanh xin đưa ra một bài toán viết một chương trình gồm các yêu cầu sau đây:
cout<<"Hay nhap vao mot so nguyen: ";
Nhưng sau khi người dùng nhập vào một số nguyên nào đó, thì số này sẽ được lưu ở đâu để khi cần ta sẽ sử dụng nó? Để giải quyết vấn đề này ta sẽ sử dụng đến một khái niệm gọi là biến.
1. Biến
Biến là một khái niệm cho phép máy tính tạo ra một vùng nhớ và địa chỉ trong máy tính. Muốn sử dụng một biến nào đó ta phải khai báo kiểu biến và tên biến của nó. Chẳng hạn bạn muốn khai báo một biến có tên là "a" và có kiểu biến là số nguyên thì bạn thực hiện khai báo như sau:
int a;
Trong đó int là từ khóa ứng với kiểu biến nguyên, và a là tên của biến. Khi xuất hiện dòng khái báo này, máy tính sẽ tự động cấp phát một vùng nhớ (vùng nhớ này lớn hay nhỏ phụ thuộc vào kiểu biến) và địa chỉ của vùng nhớ đó. Ta có các kiểu biến sau đây:
2. Vào dữ liệu từ bàn phím
Như vậy trong ví dụ trên, ta sẽ lưu giá trị mà người dùng nhập vào một biến nào đó (giả sử biến "a"). Nhưng làm thế nào để cho máy tính hiểu rằng mình muốn lưu giá trị từ bàn phím vào một biến nào đó, vì trong trường hợp khai báo nhiều biến, máy tính sẽ không hiểu là bạn muốn lưu giá trị vào biến nào. Muốn vậy, bạn sử dụng hàm cin với cú pháp cin>>tenbien. Hàm này nằm trong thư viện iostream.h, dấu ">>" chỉ hướng vào biến nghĩa là lưu giá trị vào biến. Như vậy trong ví dụ trên, đoạn code đầu tiên của chương trình như sau:
Trong ví dụ này, khi khai báo int a; biến a có giá trị mặc định là 0, sau khi xuất hiện dòng lệnh cin>>a; biến a có giá trị bằng giá trị mà người dùng nhập vào.
3. Xuất dữ liệu ra màn hình
Trong mục trên, bạn đã tìm hiểu cách đưa dữ liệu từ bàn phím vào một biến. Trong mục này bạn sẽ tìm hiểu cách đưa dữ liệu từ một biến ra màn hình.
Trong bài 1, chúng ta đã tìm hiểu việc hàm cout để đưa một thông báo ra màn hình. Ta sẽ dùng hàm này để đưa giá trị của một biến ra màn hình. Nếu bạn muốn đưa giá trị của biến a ra màn hình thì viết như sau:
cout<<a;
Dấu "<<" hướng từ biến ra chỉ chiểu xuất dữ liệu từ biến ra màn hình. Chú ý trong cách viết, nếu đưa ra ký tự ra màn hình thì ký tự đó phải được bao bọc bởi dấu " ", ngược lại nếu đưa giá trị của biến ra thì không có dấu " ".
Bạn có thể nối các thông báo lại bằng dấu"<<", ví dụ:
cout<<"Binh phuong cua so vua nhap la: "<<a*a;
hoặc
cout<<"Binh phuong cua "<<a<<" la "<<a*a;
Vậy, code đầy đủ của chương trình trên như sau:
Bài tập:
Hãy viết một chương trình thực hiện các yêu cầu sau:
- Đưa ra một thông báo yêu cầu nhập vào một số nguyên
- Sau khi người dùng đã nhập số nguyên và bấm Enter thì chương trình đưa ra thông báo cho biết bình phương của số của số nguyên này
cout<<"Hay nhap vao mot so nguyen: ";
Nhưng sau khi người dùng nhập vào một số nguyên nào đó, thì số này sẽ được lưu ở đâu để khi cần ta sẽ sử dụng nó? Để giải quyết vấn đề này ta sẽ sử dụng đến một khái niệm gọi là biến.
1. Biến
Biến là một khái niệm cho phép máy tính tạo ra một vùng nhớ và địa chỉ trong máy tính. Muốn sử dụng một biến nào đó ta phải khai báo kiểu biến và tên biến của nó. Chẳng hạn bạn muốn khai báo một biến có tên là "a" và có kiểu biến là số nguyên thì bạn thực hiện khai báo như sau:
int a;
Trong đó int là từ khóa ứng với kiểu biến nguyên, và a là tên của biến. Khi xuất hiện dòng khái báo này, máy tính sẽ tự động cấp phát một vùng nhớ (vùng nhớ này lớn hay nhỏ phụ thuộc vào kiểu biến) và địa chỉ của vùng nhớ đó. Ta có các kiểu biến sau đây:
Kiểu dữ liệu | Mô tả | Kích thước | Miền giá trị |
char | Kiểu ký tự | 1 byte | -128 đến 127 |
unsigned char | Kiểu ký tự | 1 byte | 0 đến 255 |
int | Kiểu nguyên | 2 bytes | – 32,768 đến 32,767 |
unsigned int | Kiểu nguyên dương | 2 bytes | 0 đến 65,535 |
long | Kiểu nguyên mở rộng | 4 bytes | – 2,147,483,648 đến 2,147,483,647 |
unsigned long | Kiểu nguyên dương mở rộng | 4 bytes | 0 đến 4,294,967,295 |
float | Kiểu số thực | 4 bytes | 3.4 * 10-38 đến 3.4 * 1038 |
double | Kiểu số thực mở rộng | 8 bytes | 1.7 * 10-308 đến 1.7 * 10308 |
long double | Kiểu long double | 10 bytes | 3.4 * 10-4932 đến 1.1 * 104932 |
Như vậy trong ví dụ trên, ta sẽ lưu giá trị mà người dùng nhập vào một biến nào đó (giả sử biến "a"). Nhưng làm thế nào để cho máy tính hiểu rằng mình muốn lưu giá trị từ bàn phím vào một biến nào đó, vì trong trường hợp khai báo nhiều biến, máy tính sẽ không hiểu là bạn muốn lưu giá trị vào biến nào. Muốn vậy, bạn sử dụng hàm cin với cú pháp cin>>tenbien. Hàm này nằm trong thư viện iostream.h, dấu ">>" chỉ hướng vào biến nghĩa là lưu giá trị vào biến. Như vậy trong ví dụ trên, đoạn code đầu tiên của chương trình như sau:
#include<iostream.h> #include<conio.h>main() { int a; cout<<"Hay nhap vao mot so nguyen"; cin>>a; getch(); } |
3. Xuất dữ liệu ra màn hình
Trong mục trên, bạn đã tìm hiểu cách đưa dữ liệu từ bàn phím vào một biến. Trong mục này bạn sẽ tìm hiểu cách đưa dữ liệu từ một biến ra màn hình.
Trong bài 1, chúng ta đã tìm hiểu việc hàm cout để đưa một thông báo ra màn hình. Ta sẽ dùng hàm này để đưa giá trị của một biến ra màn hình. Nếu bạn muốn đưa giá trị của biến a ra màn hình thì viết như sau:
cout<<a;
Dấu "<<" hướng từ biến ra chỉ chiểu xuất dữ liệu từ biến ra màn hình. Chú ý trong cách viết, nếu đưa ra ký tự ra màn hình thì ký tự đó phải được bao bọc bởi dấu " ", ngược lại nếu đưa giá trị của biến ra thì không có dấu " ".
Bạn có thể nối các thông báo lại bằng dấu"<<", ví dụ:
cout<<"Binh phuong cua so vua nhap la: "<<a*a;
hoặc
cout<<"Binh phuong cua "<<a<<" la "<<a*a;
Vậy, code đầy đủ của chương trình trên như sau:
#include<iostream.h> #include<conio.h>main() { int a; cout<<"Hay nhap vao mot so nguyen"; cin>>a; cout<<"Binh phuong cua "<<a<<" la "<<a*a; getch(); } |
Bài tập:
Hãy viết một chương trình thực hiện các yêu cầu sau:
- Đưa ra thông báo yêu cầu người dùng nhập vào một số thực X
- Đưa ra thông báo yêu cầu người dùng nhập vào một số thực Y
- Hãy in ra màn hình giá trị của biểu thức sau: X3 + Y2
Không có nhận xét nào:
Đăng nhận xét