Giới thiệu về cú pháp cơ bản C++ for Linux Khi chúng ta xem xét một chương trình C ++, nó có thể được định nghĩa là một tậphợp các đối tượng giao tiếp thông qua việc gọi các phương thức
Trang 1HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIÊN
NGUYỄN VĂN HIỀN – N19DCAT022
NGUYỄN VĂN THÀNH - N18DCAT083
TRẦN BÁ TIẾN ANH - N18DCCN008
NGÔ TRUNG HIẾU - N21DCDK008
NGUYỄN QUANG THỊNH - N21DCDK034
Trang 2Bảng phân chia nhiệm vụ:
PHẠM MẠNH CƯỜNG 1 Introduction to basic syntax
2 Anotomy of a C++ program
3 Statements and expressions
14 FunctionsNGUYỄN VĂN HIỀN 4 Identifiers
5 Defining variablesNGUYỄN VĂN THÀNH 6 Pointers
7 RefereneceTRẦN BÁ TIẾN ANH 8 Primitive arrays
9 Primitive strings
11 Iterating with forNGUYỄN QUANG
THỊNH
12 Range-base for loop
13 Structures
1 Giới thiệu về cú pháp cơ bản C++ for Linux
Khi chúng ta xem xét một chương trình C ++, nó có thể được định nghĩa là một tậphợp các đối tượng giao tiếp thông qua việc gọi các phương thức của nhau Bây giờchúng ta hãy xem xét ngắn gọn ý nghĩa của một lớp, đối tượng, các phương thức
và các biến tức thì
Đối tượng - Đối tượng có trạng thái và hành vi Ví dụ: Một con chó có các
trạng thái - màu sắc, tên, giống cũng như các hành vi - vẫy tay, sủa, ăn Một đốitượng là một thể hiện của một lớp
Lớp - Một lớp có thể được định nghĩa như một khuôn mẫu / bản thiết kế
mô tả các hành vi / trạng thái mà đối tượng kiểu của nó hỗ trợ
Các phương pháp - Một phương pháp về cơ bản là một hành vi Một lớp
có thể chứa nhiều phương thức Nó nằm trong các phương thức nơi logic đượcviết, dữ liệu được thao tác và tất cả các hành động được thực thi
Biến cá thể - Mỗi đối tượng có một tập hợp các biến cá thể duy nhất của
nó Trạng thái của một đối tượng được tạo bởi các giá trị được gán cho các biến cáthể này
Trang 3 Dòng int main () là hàm chính bắt đầu thực thi chương trình.
Dòng tiếp theo cout << "Xinchao"; khiến thông báo "Xinchao" được hiểnthị trên màn hình
Dòng tiếp theo trả về 0; chấm dứt hàm main () và khiến nó trả về giá trị 0cho quá trình gọi
Biên dịch và thực thi chương trình C ++
Hãy xem cách lưu tệp, biên dịch và chạy chương trình Vui lòng làm theo các bướcdưới đây -
Mở trình soạn thảo văn bản và thêm mã
Lưu tệp dưới dạng: hello.cpp
Mở dấu nhắc lệnh và chuyển đến thư mục lưu tệp
Nhập 'g ++ hello.cpp'
gõ 'a.out' để chạy chương trình
'Hello World' được in trên cửa sổ
$ g++ hello.cpp
$ /a.out
Hello World
Dấu chấm phẩy và khối trong C ++
Trong C ++, dấu chấm phẩy là một dấu chấm câu lệnh Nghĩa là, mỗi câu lệnhriêng lẻ phải được kết thúc bằng dấu chấm phẩy Nó chỉ ra sự kết thúc của mộtthực thể logic
VD:
x = y;
y = y + 5;
Trang 4C ++ không cho phép các ký tự dấu câu như @, $ và% trong các mã định danh C ++ là một ngôn ngữ lập trình phân biệt chữ hoa chữ thường Nhưvậy, Manpower và nhân lực là hai định danh khác nhau trong C ++.
Example:
Lmao burh _lmaolmao burh_123
Từ khóa C ++
Trang 62.Sơ lược về một chương trình C ++
Một chương trình C ++ về cơ bản là một tập hợp các câu lệnh và biểu thức, thườngđược tổ chức thành các hàm và lớp Cách tốt nhất để học một ngôn ngữ lập trình làviết chương trình Chương trình đầu tiên bạn thường thấy là chương trình
" Xinchao " Chương trình đơn giản này in Xinchao ra màn hình
Dòng đầu tiên của chương trình này, bạn sẽ nhận thấy hai dấu gạch chéo này, tiếptheo là một số văn bản Đây là cách viết bình luận bằng C ++
Các dòng bắt đầu bằng dấu thăng ( ) là các lệnh được đọc và thông dịch bởi cái#được gọi là bộ tiền xử lý Chúng là những dòng đặc biệt được diễn giải trước khiquá trình biên dịch chương trình bắt đầu Trong trường hợp này, chỉ thị #include
<iostream>, hướng dẫn bộ tiền xử lý bao gồm một phần của mã C ++ tiêu chuẩn,được gọi là iostream tiêu đề , cho phép thực hiện các hoạt động đầu vào và đầu ratiêu chuẩn
Hàm được đặt tên mainlà một hàm đặc biệt trong tất cả các chương trình C ++; nó
là hàm được gọi khi chương trình được chạy Đây là điểm nhập chính cho bất kỳchương trình C ++ nào Việc thực thi tất cả các chương trình C ++ bắt đầubằng mainhàm, bất kể hàm thực sự nằm ở đâu trong mã
Dấu ngoặc nhọn ({) ở dòng 5 cho biết phần đầu của định nghĩa hàm của hàm main
và dấu ngoặc nhọn (}) ở dòng 7, cho biết phần cuối của nó Mọi thứ giữa các dấungoặc nhọn này là phần thân của hàm xác định điều gì sẽ xảy ra khi hàm mainđược gọi Tất cả các hàm đều sử dụng dấu ngoặc nhọn để chỉ ra sự bắt đầu và kếtthúc của các định nghĩa của chúng
Trang 7std::cout xác định thiết bị xuất ký tự tiêu chuẩn (thông thường, đây là màn hìnhmáy tính).
Toán tử chèn ( <<), chỉ ra rằng những gì sau đây sẽ được chèn
Một biểu thức có chứa ít nhất một toán hạng và 0 hoặc nhiều toán tử Toán hạng
có thể là: giá trị hằng, hằng, biến, kết quả của một hàm hay biểu thức con Các toán tử có độ ưu tiên khác nhau, nhưng có thể bị thay đổi bằng cách dùngngoặc ( … )
Các toán tử có cùng độ ưu tiên được thực hiện tử trái sang phải: sin(x) + cos(x) hàm sin(x) được gọi trước cos(x)
Cơ bản: a+b a-b a*b a/b
Nhân/chia ưu tiên cao hơn cộng/trừ
Phép toán giữa 2 số nguyên kết quả là số nguyên
Phép toán có ít nhất 1 số thực kết quả là số thực
Modulo (chia lấy số dư): a%b
Tăng, giảm 1 đơn vị: a++ a ++a a
Toán hạng phải là một biến kiểu số nguyên
a++ và a thực hiện phép tính với giá trị của a rồi mới tăng/giảm giá trị của a,trong khi ++a và a thì ngược lại
Trang 8Dịch trái, phải: a<>b
*Chỉ áp dụng với kiểu số nguyên
Toán tử gán
Cơ bản: a = b
Các toán tử đặc biệt khác
Cộng, trừ đơn hạng: +a, -a
sizeof: trả về kích thước của kiểu/biến/hằng
Toán tử ngoặc (): (a+b)*c
Toán tử phảy “,”: không làm gì, chỉ bỏ qua giá trị thứ nhất
x++, y = x*2;
for (i=2, j=3, x=1; ituoi
Ép kiểu: (int)a Gọi hàm (): sin(x), pow(x, 3)
Yêu cầu:
Giả sử có 2 số nguyên cho trước, bạn hãy tính tổng, hiệu, tích và thương của hai số rồi in kết quả ra màn hình
Trang 9Viết chương trình C++ để nhập hai số nguyên x, y, sau đó tính: p=x*y, s=x+y,q=s2+p(s-x)*(p+y) và in kết quả ra màn hình.
Trang 10 Trong C ++, tất cả các biến phải được khai báo trước khi sử dụng.
1 Quy tắc khai bao biến:
Tên của biến chứa các chữ cái, chữ số và dấu gạch dưới
Tên của biến có phân biệt chữ hoa chữ thường
Tên của biên không chứa bất ký khoảng trắng và bất kỳ ký tự đắc biệt nào
Trang 11 Tất cả biên phải được bắt đầu bằng 1 chữ cái trong bảng chữ cái hoặc 1 dấu gạch dưới (_)
Không thể sử dụng từ khóa C++ (float, double, class ) làm tên biến
2 Cách khai báo biến
Khai báo biến điển hình có dạng
Tên biến có thể bao gồm các bảng chữ cái ( chữ hoa và chữ thường) số và ký tự gạch dưới Tuy nhiên tên biến không được bắt đầu bằng 1 số VD:
Trang 12Khai báo biến là để cập đến phần mà biến được khai báo hoặc giới thiệu lần đầu tiên trước khi sử dụng
Định nghĩa biến là 1 phần trong đó biến được gán cho 1 vị trí bộ nhớ và 1 giá trị
hoặc khối nào
Trang 133 Local Variable:Các biến này được khai báo tương tự như các biên instance nhưng điểm khác biệt là các biến này được khai báo bằng cách sử dụng từ khóa static bên trong 1 lớp bên ngoài hoặc bất kỳ khối hoặc phương thức
Trang 14Ví dụ
So sánh tham chiếu và con trỏ
Giữa con trỏ và tham chiếu có điểm tương đồng, tuy nhiên cũng có một số điểm khác biệt cơ bản về mặt ý nghĩa như sau:
Một con trỏ có thể nhận giá trị null trong khi một tham chiếu thì không thể
Trang 15 Một con trỏ có thể khởi tạo bất cứ lúc nào, trong khi một tham chiếu phải được khởi tạo ngay khi nó được khai báo Nói cách khác, câu lệnh sau trình biên dịch sẽ báo lỗi: int &k; // error
Một con trỏ có thể trỏ đến nhiều đối tượng, trong khi một tham chiếu chỉ được tham chiếu tới một đối tượng duy nhất
Con trỏ có thể lưu trữ vùng nhớ cấp phát động, tham chiếu thì không thể
6.Con trỏ
pointer là một loại biến chuyên lưu trữ địa chỉ bộ nhớ (memory address).Một biến lưu trữ giá trị như:
int length = 5;
char domain[] = "STDIO.VN";
sẽ được lưu trữ tại 1 vị trí cụ thể trên bộ nhớ Biến con trỏ có khả năng lưu trữ vị trí này
Trong hình minh hoạ trên, biến con trỏ (có địa chỉ là FF) sẽ quản lý vùng nhớ của chuỗi STDIO.VN (bắt đầu từ địa chỉ D0)
Cách sử dụng
Chương trình sau minh họa việc khai báo con trỏ đối với một số kiểu dữ liệu thường dùng:
Trang 16Sử dụng * giữa kiểu dữ liệu và tên biến có nghĩa là biến đang khai báo là một biến con trỏ Trong ngữ cảnh này * không phải là phép nhân.
trong trường hợp khai báo nhiều hơn một biến trên cùng một dòng, chỉ những biến nào có kí tự * phía trước tên biến (không kể khoảng trắng) mới là biến con trỏ
Trang 17Con trỏ chỉ lưu giữ địa chỉ nên khi gán giá trị cho một con trỏ, giá trị đó phải là địa chỉ Để lấy địa chỉ của một biến, sử dụng address-of operator &.
sử dụng với con trỏ là dereference operator * Dereference operator dùng để lấy nộidung của địa chỉ mà biến đó trỏ vào
8.Primitive arrays
Trang 18-Mảng: Là 1 loạt các phần tử cùng kiểu được đặt ở các vị trí bộ nhớ liền nhau có thể tham chiếu riêng lẻ bằng cách thêm một chỉ mục vào một mã định danh duy nhất.
-Khởi tạo mảng:
Cú pháp khởi tạo mảng:
Kiểu dữ liệu Tên mảng [số lượng phần tử mảng] = {Giá trị của các phần tử mảng}
-Truy cập các giá trị của một mảng:
Cú pháp : Tên mảng[vị trí phần tử muốn truy cập]
Trang 199.Primitive String
String là một kiểu dữ liệu được sử dụng để lưu trữ văn bản
Một biết có kiểu dữ liệu string là tập hợp các ký tự được bao quanh bởi giấu ngoặc kép
Cú pháp khai báo biết String: string Tenbien = “chuỗi các kí tự”;
Trang 20Tương tự như C#, ngôn ngữ lập trình C++ cũng có các lệnh điều kiện Để tìm hiểu rõ hơn về các lệnh điều kiện trong C++, bạn đọc cùng tham khảo tiếp bài viết dưới đây của Taimienphi.vn.
Trong bài học C++ tiếp theo dưới đây Taimienphi.vn sẽ giới thiệu tiếp cho bạn vềlệnh điều kiện trong C++ Ngoài ra bạn đọc có thể tham khảo thêm một số bài viếtkhác đã có trên Taimienphi.vn để tìm hiểu thêm về vòng lặp trong C++ là gì nhé
10.LỆNH ĐIỀU KIỆN TRONG C++
Lệnh Điều Kiện Trong C++
Lệnh điều kiện trong C++ được sử dụng để quyết định thứ tự việc thực hiện các câulệnh dựa trên các điều kiện cụ thể hoặc lặp lại một nhóm các câu lệnh cho đến khithỏa mãn các điều kiện cụ thể C++ hỗ trợ các lệnh điều kiện dưới đây:
Cú pháp trên được sử dụng cho câu lệnh đơn Ngoài ra nếu muốn bạn cũng có thể
sử dụng cho tập hợp các lệnh, miễn là các lệnh này được đặt trong dấu ngoặc nhọn{ } Tập hợp các lệnh cũng được gọi là lệnh ghép
Trang 21Cho ví dụ về lệnh điều kiện If trong C++:
Lệnh điều kiện If else trong C++
Lệnh If Else cũng là một lệnh điều kiện If, được sử dụng để thực thi khối câulệnh khi điều kiện được đánh giá là True, ngược lại nếu điều kiện được đánh giá làFalse khối câu lệnh sẽ không được thực thi Trong trường hợp bất kỳ, một khối sẽđược thực thi và khối kia bị bỏ qua
Trong lệnh If Else:
-Cả 2 khối lệnh không bao giờ được thực thi
-Cả 2 khối lệnh không bao giờ được bỏ qua
Trang 22Nếu có 2 hoặc nhiều lệnh trở lên phải được đặt trong dấu ngoặc nhọn { }.Lệnh Switch Trong C++
Lệnh Switch cũng là lệnh điều kiện trong C++, được sử dụng để thay thế lệnh IfElse lồng nhau Lệnh này được sử dụng khi có nhiều lệnh có sẵn và chỉ thực thimột lệnh cụ thể
Lệnh Switch so sánh kết quả một biểu thức với nhiều trường hợp (case) Biểu thức
có thể là giá trị bất kỳ trả về kết quả giá trị nguyên hoặc ký tự Biểu thức đượcđánh giá ở đầu lệnh switch và kết quả được so sánh với các trường hợp khác nhau.Mỗi trường hợp là một lựa chọn Nếu kết quả khớp với trường hợp bất kỳ, khối
Trang 23câu lệnh tương ứng sẽ được thực thi Trong một lệnh Switch không giới hạn sốlượng trường hợp.
Default Label xuất hiện ở cuối tất cả các Case Label Nó chỉ được thực thi sau khikết quả của biểu thức không được khớp với Case Label bất kỳ Vị trí của DefaultLabel là không cố định, có thể đặt trước lệnh case đầu tiên hoặc cuối cùng.Lệnh break trong mỗi case label được sử dụng để thoát khỏi phần thân lệnh switch,
và được sử dụng ở cuối mỗi case label Khi kết quả của biểu thức khớp với caselabel, lệnh tương ứng sẽ được thực thi
Lệnh break xuất hiện sau các lệnh này và control thoát khỏi phần thân lệnh switch.Nếu lệnh break không được sử dụng, tất cả các khối case xuất hiện sau case cũng
sẽ được thực thi
Toán Tử Điều Kiện Trong C++
Toán tử điều kiện trong C++ được sử dụng để thay thế cho cấu trúc if else đơn giản
Nó còn được gọi là toán tử 3 ngôi vì sử dụng 3 toán hạng
- Cú pháp toán tử điều kiện trong C++ có dạng:
(điều kiện) ? lệnh case true: lệnh case false;
Trong đó:
- Điều kiện: được chỉ định là biểu thức quan hệ hoặc logic Điều kiện được đánhgiá là True hoặc False
- True Case: được thực thi nếu biểu thức được đánh giá là True.
- False case: được thực thi nếu biểu thức được đánh giá là False
Cho ví dụ về toán tử điều kiện trong C++, giả sử chúng ta có biến A Lệnh có dạng:
X = (A>50) ? 1 : 0;
1 được gán cho X nếu điều kiện A>50 là True, hoặc sẽ được gán 0 cho X nếu điềukiện là False Câu lệnh trên có thể được viết bằng cách sử dụng lệnh if else nhưsau:
Trang 24If (A>50) X=1;
Một vùng chứa có thể cung cấp các loại trình vòng lặp khác nhau Ví dụ: một vùng chứa mảng có thể cung cấp một trình vòng lặp chuyển tiếp đi qua mảng theo thứ
tự chuyển tiếp và một trình vòng lặp ngược đi qua mảng theo thứ tự ngược lại.Khi loại trình vòng lặp thích hợp được tạo, lập trình viên sau đó có thể sử dụng giao diện do trình vòng lặp để duyệt và truy cập các phần tử mà không phải lo lắng
về loại trình duyệt đang được thực hiện hoặc cách dữ liệu được lưu trữ trong vùng chứa Và bởi vì các trình vòng lặp C ++ thường sử dụng cùng một giao diện cho truyền tải (toán tử ++ để di chuyển đến phần tử tiếp theo) và truy cập (toán tử * để truy cập phần tử hiện tại), chúng ta có thể lặp qua nhiều loại vùng chứa khác nhau bằng một phương pháp nhất quán
>
2 Con trỏ như một trình lặp
Loại trình lặp đơn giản nhất là con trỏ (sử dụng con trỏ số học) hoạt động cho dữ liệu được lưu trữ tuần tự trong bộ nhớ Hãy cùng xem lại quá trình duyệt mảng đơn giản bằng cách sử dụng con trỏ và con trỏ số học:
#include<array>
#include<iostream>
Trang 25{
std array data{ , , , , , , };:: 0 1 2 3 4 5 6
auto begin{ &data[0] };
// note that this points to one spot beyond the last element
auto end{ begin std+ ::size(data) };
// for-loop with pointer
for auto ( ptr{ begin }; ptr end; != ++ptr) // ++ to move to next element
Ở trên, chúng ta đã khai báo hai biến: begin (trỏ đến đầu vùng chứa của chúng ta)
và end (đánh dấu điểm kết thúc) Đối với mảng, điểm đánh dấu kết thúc thường là
vị trí trong bộ nhớ mà phần tử cuối cùng sẽ ở nếu vùng chứa chứa thêm một phần tử
Sau đó, con trỏ lặp lại giữa đầu và cuối, và phần tử hiện tại có thể được truy cập bằng cách chuyển hướng thông qua con trỏ
Lưu ý
Bạn có thể bị cám dỗ để tính toán điểm đánh dấu kết thúc bằng cách sử dụng toán
tử address-of và cú pháp mảng như sau:
Trang 26int* end{ array[std& ::size(array)] };
Nhưng điều này gây ra hành vi không xác định, vì mảng [std :: size (array)] truy cập vào một phần tử nằm ở cuối mảng
Thay vào đó, hãy sử dụng:
int* end{ array.data() std+ ::size(array) }; // data() returns a pointer to the first element
3 Trình lặp thư viện chuẩn
Lặp lại(iterators) là một hoạt động phổ biến mà tất cả các vùng chứa thư viện chuẩncung cấp hỗ trợ trực tiếp cho việc lặp lại Thay vì tính toán điểm đầu và điểm cuối của riêng mình, chúng ta có thể chỉ cần yêu cầu vùng chứa cho điểm bắt đầu và điểm kết thúc thông qua các hàm được đặt tên thuận tiện là begin () và end ():
auto begin{ array.begin() };
auto end{ array.end() };
for auto ( p{ begin }; p end; != ++p) // ++ to move to next element
{
std cout :: << * << p ' '; // Indirection to get value of current element
}
std cout :: <<'\n';