(C++) Vòng lặp. Vòng lặp với tham số (for)


Vòng lặp trong lập trình
Hãy tưởng tượng một tình huống mà chúng ta cần hiển thị cùng một từ trên màn hình, hãy nói từ "HELLO", 10 lần. Chúng ta nên làm gì?
Bạn có thể lấy và viết 10 lần cout << "Xin chào";

Nhưng nếu bạn không cần 10 lần mà là 20, 30, 40 lần thì sao ?, và nếu 200 lần thì sao? Trong trường hợp này, việc sao chép sẽ mất rất nhiều thời gian. Và nếu người dùng cần chọn số lần hiển thị thông tin trên màn hình? 

Để giải quyết nhiệm vụ này, chúng tôi sẽ sử dụng một cấu trúc đặc biệt có tên là vòng lặp.
 
Vòng lặplà cấu trúc thuật toán trong đó một chuỗi lệnh nhất định được lặp lại nhiều lần.< /div>
Trong ngôn ngữ lập trình C++, có hai loại vòng lặp: vòng lặp biến (for) và vòng lặp điều kiện (while and do...while)

Hãy bắt đầu làm quen với các chu kỳ từ loại đầu tiên.
 
Vòng lặp có biến (đối với)

Điều thường xảy ra là chúng ta biết số lần lặp lại của một số hành động hoặc chúng ta có thể tính toán số lần lặp lại bằng cách sử dụng dữ liệu mà chúng ta biết. Một số ngôn ngữ lập trình có lệnh mà trong tiếng Nga nghe giống như repeat(number of times), cho biết chính xác số lần lặp lại trong ngoặc. 

Thật thú vị khi xem chu trình này hoạt động như thế nào ở cấp độ máy:
1. một ô nhớ nhất định được cấp phát trong bộ nhớ và số lần lặp lại được ghi vào ô nhớ đó;
2. khi chương trình thực hiện thân vòng lặp một lần, nội dung của ô này (bộ đếm) sẽ giảm đi một;
3. Quá trình thực hiện vòng lặp kết thúc khi ô này bằng 0.

Không có cấu trúc như vậy trong ngôn ngữ lập trình C++, nhưng có cấu trúc for.  

Dạng tổng quát của câu lệnh lặp for như sau: cho (/*biểu thức1*/; /*biểu thức2*/; /*biểu thức3*/ ) { /*một câu lệnh hoặc khối câu lệnh - thân vòng lặp*/; } Thiết kế này yêu cầu chúng tôi:
1. cấp phát rõ ràng một ô nhớ sẽ là một bộ đếm và thiết lập giá trị ban đầu của nó;
2. một điều kiện được viết theo đó thân vòng lặp sẽ được thực thi;
3. Chỉ định giá trị trong ô này sẽ thay đổi như thế nào.

Trong phần thực hành, chúng tôi sẽ cố gắng hiển thị từ "Xin chào" 10 lần. Trong các nhiệm vụ tiếp theo, chúng tôi sẽ phân tích cấu trúc này chi tiết hơn.

Vòng lặp
for
Vòng lặp for là một phương tiện để thực hiện các hành động lặp đi lặp lại. Hãy xem xét kỹ hơn cách thức hoạt động của nó.

Việc chạy vòng lặp for bao gồm các bước sau: 
1. thiết lập giá trị ban đầu của biến vòng lặp (bộ đếm);
2. kiểm tra điều kiện để tiếp tục vòng lặp;
3. thực hiện một bước (thân vòng lặp); 
4. thay đổi giá trị của biến vòng lặp.
Hơn nữa, các bước 2-4 được lặp lại cho đến khi điều kiện   ở bước thứ 2 trở thành sai. Ngay khi điều kiện trở thành sai, vòng lặp kết thúc và câu lệnh theo sau câu lệnh vòng lặp for.
được thực thi.

Chúng ta hãy quay lại dạng chung của câu lệnh vòng lặp và phân tích chi tiết hơn tất cả các phần.
cho (/*biểu thức1*/; /*biểu thức2*/; /*biểu thức3*/ ) {       /*một câu lệnh hoặc khối câu lệnh - thân vòng lặp*/; }

Biểu thức 1 chịu trách nhiệm thiết lập giá trị ban đầu của biến vòng lặp (bộ đếm), kết thúc bằng dấu chấm phẩy

Ví dụ,

1)i=0;    // Gán giá trị ban đầu bằng 0 cho biến lặp i.
                 // Với ký hiệu này, biến i phải được khai báo trước vòng lặp.

2) int i=0; //  Biến i có thể được khai báo trực tiếp trong tiêu đề vòng lặp, nhưng
                     // trong trường hợp này, sau khi vòng lặp được xóa khỏi bộ nhớ

3) ;    // Không có khởi tạo và khai báo biến chu trình nào cả,
          //  trong trường hợp này, nó có thể được xác định trước vòng lặp.


Biểu thức 2 là điều kiện tiếp tục của vòng lặp cho được kiểm tra là đúng.

i<=10  // Vòng lặp sẽ chạy miễn là biến i nhỏ hơn hoặc bằng 10. Điều kiện có thể là bất kỳ.
 

Biểu thức 3 thay đổi giá trị của biến bộ đếm. Nếu không có giá trị này, vòng lặp sẽ được coi là vô hạn.

i++  // Biến sẽ tăng thêm 1 với mỗi bước.
 

Nếu có một câu lệnh trong thân vòng lặp

Nếu chỉ có một câu lệnh trong thân vòng lặp thì có thể bỏ qua dấu ngoặc đơn.

Chu kỳ cho -tính năng

Có thể có nhiều câu lệnh được phân tách bằng dấu phẩy trong mỗi phần tiêu đề.
 
Ví dụ
cho ( i = 0, x = 1.; i < 10; i += 2, x *= 0,1 ) { ... } Trong trường hợp này, chúng tôi sử dụng hai biến sẽ thay đổi sau khi thực hiện phần thân vòng lặp - đó là các biến i x. Biến i thay đổi theo các bước 2: i += 2 là cách viết tắt của i = i + 2. Biến x tăng 0,1 lần với mỗi bước x = x * 0,1, viết tắt là x *= 0,1.

Lặp lại N lần

Tất cả các chương trình có vòng lặp for mà chúng tôi đã viết cho đến nay không thể được gọi là phổ quát. Bởi vì chúng tôi tự đặt số lần lặp lại của thân vòng lặp. Nhưng nếu số lần lặp lại phụ thuộc vào một số giá trị khác thì sao? Ví dụ: bản thân người dùng muốn đặt số lần lặp lại chu kỳ.
Phải làm gì trong trường hợp này? Mọi thứ đều rất đơn giản. Thay vì các giá trị bắt đầu và kết thúc bằng số, chúng ta có thể sử dụng bất kỳ biến nào mà người dùng có thể tính toán hoặc đặt.

Ví dụ: chúng ta cần hiển thị bình phương của các số từ 1 đến N, trong đó giá trị của biến N được nhập từ bàn phím bởi người dùng.
Chương trình sẽ như thế này:
  #include <iostream> sử dụng không gian tên std; chủ yếu() { int i,N; // tôi – biến vòng lặp, N - số tối đa mà chúng tôi tính bình phương cin>> N; for ( i = 1; i <= N; i++) // vòng lặp: for all i từ 1 đến N. Biến i sẽ tuần tự lấy các giá trị từ 1 đến N { cout << "Số vuông "<<i<<" là" <<i*i<<"\n"; // Xuất bình phương của một số ở định dạng cụ thể và di chuyển xuống một dòng mới } } Khi vào vòng lặp, câu lệnh i = 1 được thực thi, sau đó biến i được tăng thêm một theo mỗi bước (i ++ ). Vòng lặp được thực thi khi điều kiện i <= N đúng. Trong phần thân của vòng lặp, câu lệnh xuất duy nhất sẽ in chính số đó và bình phương của nó ra màn hình theo định dạng đã chỉ định.
Để tính bình phương hoặc các số mũ thấp khác, tốt hơn là sử dụng phép nhân.

Chạy chương trình và xem kết quả hoạt động của nó với các giá trị khác nhau của biến N.