Cách đếm số lần một vòng lặp chạy C++

\( \newcommand{\vecs}[1]{\overset { \scriptstyle \rightharpoonup} {\mathbf{#1}} } \) \( \newcommand{\vecd}[1]{\overset{-\. -\. \rightharpoonup}{\vphantom{a}\smash {#1}}} \)\(\newcommand{\id}{\mathrm{id}}\) \( \newcommand{\Span}{\mathrm{span} . #1 \. }\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\) \(\newcommand{\ . #1 \. }\) \( \newcommand{\inner}[2]{\langle #1, #2 \rangle}\) \( \newcommand{\Span}{\mathrm{span}}\)\(\newcommand{\ . 8,0]{x212B}}\)

A vòng lặp đếm hoặc vòng lặp điều khiển bằng bộ đếm . Trong số các ví dụ trước, hai ví dụ đầu tiên là các vòng lặp đếm.

Vì bạn biết trước chính xác số lần vòng lặp lặp lại, vòng lặp đếm có thể được thực hiện tùy thuộc vào giá trị của bộ đếm. Ví dụ: nếu bạn muốn in từ “Xin chào” 100 lần, bạn có thể sử dụng cấu trúc while sau.

int k = 0;
while (k < 100) {
    System.out.println("Hello");
    k++;
}

Trong trường hợp này, bộ đếm là biến k , đếm từ 0 đến 99—tức là, nó đếm 100 lần. Lưu ý rằng chúng tôi bắt đầu đếm từ 0 thay vì 1. Đếm từ 0 được gọi là lập chỉ mục bằng 0 và đó là một quy ước lập trình phổ biến để đếm các vòng lặp. Mặc dù nó không thực sự tạo ra bất kỳ sự khác biệt thực tế nào trong trường hợp này, nhưng sau này chúng ta sẽ sử dụng các vòng lặp để xử lý các cấu trúc, chẳng hạn như chuỗi và mảng, sử dụng chỉ mục bằng không. Việc xử lý các cấu trúc này sẽ dễ dàng hơn nếu bộ đếm vòng lặp của chúng ta cũng bắt đầu từ 0.

Biến k trong ví dụ này được gọi là a hoặc bộ đếm vòng lặp. Although it is certainly possible to name the counter variable anything we like, it is customary to use single letters like i, jk as loop counters. The fundamental feature of a counting loop is that we must know beforehand exactly how many iterations the loop will take.

Mặc dù chúng ta có thể sử dụng cấu trúc while để mã hóa vòng lặp đếm, nhưng forforforfor statement is ideally suited for this purpose. For example, the following for sau đây cũng sẽ in từ “Xin chào” 100 lần.

 for (int k = 0; k < 100; k++)
     System.out.println("Hello");

Trên thực tế, câu lệnh for này tương đương với câu lệnh while structure.

Câu lệnh for có cú pháp như sau.

Câu lệnh for bắt đầu bằng từ khóa for , tiếp theo là danh sách ba biểu thức trong ngoặc đơn được phân tách bằng dấu chấm phẩy. một trình khởi tạo , một điều kiện nhập vòng lặp và một updater. Following the parenthesized list is the for loop body , là một câu lệnh đơn hoặc một chuỗi các câu lệnh chứa trong dấu ngoặc nhọn,

 evaluate initializer
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 .
 .
 .
 evaluate loop entry condition ==> False
4…
 evaluate initializer
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 .
 .
 .
 evaluate loop entry condition ==> False
5.

Cấu trúc For

Hình minh họa cách hoạt động của câu lệnh for . Có thể hữu ích khi so sánh lưu đồ này với lưu đồ cho cấu trúc while (Hình. ), đã được giới thiệu trong Chương 3. Bạn thấy rằng nó có cấu trúc giống hệt nhau. Đầu tiên, trình khởi tạo được đánh giá. Do đó, trình khởi tạo đặt biến số nguyên k thành 0. Sau đó, điều kiện nhập vòng lặp, phải là biểu thức boolean, được đánh giá. Nếu nó đúng, phần thân của vòng lặp được thực thi; . Trình cập nhật được đánh giá sau khi thân vòng lặp được thực thi. Sau khi hoàn thành trình cập nhật, điều kiện nhập vòng lặp được đánh giá lại và thân vòng lặp có được thực hiện lại hay không, tùy thuộc vào giá trị thực của điều kiện nhập vòng lặp. Quá trình này được lặp lại cho đến khi điều kiện nhập vòng lặp trở thành sai. for statement. The updater is evaluated after the loop body is executed. After completion of the updater, the loop entry condition is reevaluated and the loop body is either executed again or not, depending on the truth value of the loop entry condition. This process is repeated until the loop entry condition becomes false.

Theo dõi thứ tự đánh giá các thành phần vòng lặp for sẽ cho ra trình tự này.

 evaluate initializer
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 .
 .
 .
 evaluate loop entry condition ==> False

Như dấu vết này cho thấy, điều kiện nhập vòng lặp kiểm soát mục nhập vào phần thân của vòng lặp và do đó, sẽ là điều cuối cùng được thực hiện trước khi vòng lặp kết thúc

Chúng ta đã tuân theo quy ước chuẩn về khai báo biến đếm trong tiêu đề của câu lệnh for . Điều này giới hạn phạm vi của biến đối với chính câu lệnh for . Sẽ là một lỗi cú pháp nếu sử dụng k ngoài phạm vi của for loop, as in this example:

for (int k = 0; k < 100; k++)
  System.out.println("Hello");
        // Syntax error, k undeclared
System.out.println("k = " + k);

Đối với một số vấn đề, có thể cần phải sử dụng biến vòng lặp nằm ngoài phạm vi của câu lệnh for , trong trường hợp đó, biến nên . Ví dụ muốn in giá trị của biến lặp for statement. For example, if we want to print the value of the loop variable, k thì sau khi vòng lặp chạy xong ta phải khai báo trước vòng lặp.

int k = 0;         // Declare the loop variable here
for (k = 0; k < 100; k++)
    System.out.println("Hello");
System.out.println("k = " + k); // To use it here

Trong ví dụ này, vòng lặp sẽ thoát khi k trở thành 100, vì vậy “k = 100” sẽ được in.

giới hạn vòng lặp

Một vòng lặp đếm bắt đầu ở một số giá trị ban đầu và đếm 0 hoặc nhiều lần lặp lại. giới hạn vòng lặp là giá trị kiểm soát số lần vòng lặp được lặp lại. Một vòng lặp sẽ lặp lại cho đến khi đạt đến giới hạn vòng lặp của nó. Trong một vòng lặp đếm, điều kiện nhập vòng lặp phải là một biểu thức boolean để kiểm tra xem đã đạt đến giới hạn của vòng lặp hay chưa. Tương tự như vậy, trong một vòng lặp đếm, trình cập nhật phải sửa đổi bộ đếm vòng lặp để nó tiến dần đến giới hạn của nó. Các vòng lặp đếm thường tăng hoặc giảm bộ đếm của chúng đi 1, tùy thuộc vào việc vòng lặp đang đếm tiến hay lùi. Phương pháp sau đây chứa một vòng lặp đếm ngược, sẽ in ra 10 9 8 7 6 5 4 3 2 1 BLASTOFF . Trong trường hợp này, tiến tới giới hạn vòng lặp được thực hiện bằng cách giảm bộ đếm vòng lặp.

public void countdown() {
    for (int k = 10; k > 0; k--)
        System.out.print(k + " ");
    System.out.println("BLASTOFF");
} // countdown()

Lưu ý trong trường hợp này là chúng tôi đang sử dụng lập chỉ mục đơn vị thay vì lập chỉ mục bằng 0, vì quá trình đếm ngược lặp lại hoặc iterate, from 10 down to 1, not from 10 down to 0.

Vòng lặp vô hạn

Nếu chưa bao giờ đạt đến giới hạn vòng lặp, điều kiện nhập vòng lặp sẽ không bao giờ trở thành sai và vòng lặp sẽ lặp lại mãi mãi. Điều này được gọi là vòng lặp vô hạn . Bạn có hiểu tại sao mỗi câu lệnh sau đây sẽ dẫn đến một vòng lặp vô hạn không?

________số 8

Trong ví dụ đầu tiên, k bắt đầu từ 0 và giảm dần trên mỗi lần lặp, nhận các giá trị \(-1, -2, -3\), and so on, so k will never reach its loop bound.

Trong ví dụ thứ hai, k bắt đầu từ 1 và được tăng thêm 2 trên mỗi lần lặp, nhận các giá trị 3, 5, . Vì tất cả các giá trị này đều là số lẻ nên k sẽ không bao giờ bằng 100. Một vòng lặp an toàn hơn nhiều bị ràng buộc trong trường hợp này sẽ là k \( = 100.

Trong ví dụ thứ ba, k bắt đầu từ 98 và giảm một nửa sau mỗi lần lặp lại, nhận các giá trị 49, 24, 12, . Do đó, nó cũng sẽ bị mắc kẹt trong một vòng lặp vô hạn.

Việc gặp phải một vòng lặp vô hạn ngoài ý muốn khi phát triển một chương trình có thể rất khó chịu. Nếu chương trình bị mắc kẹt trong một vòng lặp tạo ra đầu ra, thì rõ ràng là nó đang lặp lại, nhưng nếu không có đầu ra nào được tạo ra, máy tính sẽ xuất hiện trạng thái "đơ", không còn phản hồi các lệnh trên bàn phím hoặc chuột của bạn. Một số môi trường lập trình cho phép bạn thoát khỏi chương trình lặp bằng cách nhập một lệnh bàn phím đặc biệt, chẳng hạn như CONTROL-C hoặc CTRL-ALT-DELETE or CONTROL-APPLE-ESCAPE, but if that doesn’t work you will have to reboot the computer, possibly causing a loss of data. The best way to avoid infinite loops is to determine that the loop’s updater expression will cause the loop to eventually reach its bound.

Vòng lặp thụt lề

Lưu ý cách thụt đầu dòng được sử dụng để phân biệt phần thân vòng lặp với cả tiêu đề và câu lệnh theo sau vòng lặp

for (int k = 10; k > 0; k--)     // Loop heading
    System.out.print (k + " ");  //  Indent the body
System.out.println( "BLASTOFF" ) // After the loop

Thụt lề thân vòng lặp là một quy ước phong cách nhằm làm cho mã dễ đọc hơn. Tuy nhiên, bản thân thụt đầu dòng không ảnh hưởng đến cách Java diễn giải mã. Mỗi đoạn mã sau sẽ vẫn tạo ra cùng một bộ đếm ngược

 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
0

Trong mỗi trường hợp, câu lệnh,

 evaluate initializer
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 .
 .
 .
 evaluate loop entry condition ==> False
6, không phải là một phần của thân vòng lặp for và chỉ được thực hiện một lần khi vòng lặp kết thúc.

Lưu ý rằng cho đến thời điểm này, thân vòng lặp chỉ bao gồm một câu lệnh, chẳng hạn như câu lệnh println() . Nhưng thân vòng lặp có thể bao gồm bất kỳ câu lệnh Java nào, bao gồm if hoặc if-else statement or a compound statement, which contains a sequence of statements enclosed within braces. Consider the following examples. The first example prints the sequence 0, 5, 10, 15, \(\dots\) 95. Thân vòng lặp của nó bao gồm một câu lệnh if .

 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
2

Ví dụ tiếp theo in các chữ thường trong bảng chữ cái. Trong trường hợp này, bộ đếm vòng lặp thuộc loại char và nó đếm các chữ cái trong bảng chữ cái. Thân vòng lặp bao gồm một câu lệnh print() .

 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
0

Ví dụ tiếp theo in chuỗi 5, 10, 15, \(\dots\) 50, nhưng nó sử dụng một số câu lệnh trong .

 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
1

Trong ví dụ này, phạm vi của biến cục bộ m , được khai báo trong thân vòng lặp, được giới hạn trong thân vòng lặp và không được .

Mặc dù không bắt buộc phải có dấu ngoặc nhọn khi phần thân của vòng lặp for chỉ bao gồm một câu lệnh, nhưng một số kiểu mã hóa khuyến nghị luôn phải có dấu ngoặc nhọn. . Ví dụ: việc viết mã vòng lặp for thành

 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
2

Một ưu điểm khác của kiểu viết mã này là bạn có thể dễ dàng đặt các câu lệnh bổ sung vào phần thân vòng lặp bằng cách đặt chúng trong dấu ngoặc nhọn.

Xác định lỗi cú pháp trong vòng lặp for sau

 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
3____14

Xác định những câu lệnh dẫn đến vòng lặp vô hạn

 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
5
 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
6
 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
7

Giả sử bạn đang giúp em gái của mình học đếm bốn. Viết vòng lặp for in ra dãy số sau. 1, 5, 9, 13, 17, 21, 25.

Giá trị nào j sẽ có khi vòng lặp sau

 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
8

Vòng lồng nhau

A vòng lặp lồng nhau là cấu trúc trong đó một vòng lặp được chứa bên trong phần thân của một vòng lặp khác, chẳng hạn như khi a for loop body contains a for loop. For example, suppose you are working for Giant Auto Industries, and your boss wants you to print a table for buyers to figure the cost of buying multiple quantities of a certain part. The cost of individual parts ranges from $1 to $9. The cost of N mặt hàng chỉ đơn giản là đơn giá nhân với số lượng. Vì vậy, bạn sẽ muốn in một cái gì đó giống như bảng số sau, trong đó giá mỗi đơn vị được liệt kê ở hàng trên cùng và giá của 2, 3 và 4 đơn vị được liệt kê ở các hàng tiếp theo.

 for (int k = 0; k < 100; k++)
     System.out.println("Hello");
9

Để tạo bảng cửu chương này, chúng ta có thể sử dụng các vòng lặp for lồng nhau sau đây.

 evaluate initializer
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 .
 .
 .
 evaluate loop entry condition ==> False
0

Lưu ý cách thụt lề được sử dụng ở đây để phân biệt các cấp độ lồng nhau và làm cho mã dễ đọc hơn. Trong ví dụ này, vòng lặp bên ngoài kiểm soát số lượng hàng trong bảng, do đó, lựa chọn của chúng tôi là hàng< . Câu lệnh as its loop counter. The println() được thực thi sau khi vòng lặp bên trong lặp lại xong . Vòng lặp bên trong in chín giá trị trong mỗi hàng bằng cách in biểu thức colrow . Rõ ràng, giá trị của biểu thức này phụ thuộc vào cả hai biến vòng lặp.

Hãy phân tích ví dụ này một chút. Câu lệnh for ở dòng 2 được thực thi bao nhiêu lần? . Do đó, nó được thực hiện bốn lần, bằng với số lần mà dòng 4 được thực hiện. Câu lệnh ở dòng 3 được thực hiện bao nhiêu lần? .

Đôi khi rất hữu ích khi sử dụng biến vòng lặp của vòng lặp bên ngoài làm giới hạn cho vòng lặp bên trong. Ví dụ: xem xét mẫu sau

 evaluate initializer
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 .
 .
 .
 evaluate loop entry condition ==> False
1

Lưu ý rằng số ký hiệu # trong mỗi hàng thay đổi tỷ lệ nghịch với số hàng. Ở hàng 1, chúng ta có năm biểu tượng;

Để tạo ra loại mẫu hai chiều này, chúng ta cần hai bộ đếm. một để đếm số hàng và một để đếm số ký hiệu # trong mỗi hàng. Bởi vì chúng ta phải in các ký hiệu của từng hàng trước khi chuyển sang hàng tiếp theo, vòng lặp bên ngoài sẽ đếm số hàng và vòng lặp bên trong sẽ đếm các ký hiệu trong mỗi hàng. Nhưng lưu ý rằng giới hạn của vòng lặp bên trong sẽ phụ thuộc vào số hàng. Vì vậy, ở hàng 1, chúng tôi muốn có năm biểu tượng; . Nếu chúng ta để hàng là số hàng, thì trong mỗi hàng chúng ta muốn in 6 \(-\) . Bảng sau đây cho thấy mối quan hệ chúng tôi muốn. row symbols. The following table shows the relationship we want:

   [2pt] HàngGiới hạn (6 hàng)Số ký hiệu[-6pt]  [2pt] 16-1526-2436-3346-4256-51[-8pt]  

Nếu chúng ta để j làm bộ đếm cho vòng lặp bên trong, thì j will be bound by the expression 6 \(-\) row. This leads to the following nested loop structure:

 evaluate initializer
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 .
 .
 .
 evaluate loop entry condition ==> False
2

Lưu ý rằng giới hạn của vòng lặp bên trong thay đổi tùy theo giá trị của hàng , bộ đếm vòng lặp cho vòng lặp bên ngoài.

Là kỹ sư được thuê để thiết kế các cú nhảy trượt tuyết, hãy viết một vòng lặp for lồng nhau để in mẫu sau.

 evaluate initializer
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 evaluate loop entry condition ==> True
 execute for loop body;
 evaluate updater
 .
 .
 .
 evaluate loop entry condition ==> False
3


Trang này có tiêu đề 6. 2. Vòng lặp đếm được chia sẻ theo CC BY 4. 0 và do Ralph Morelli & Ralph Wade là tác giả, phối lại và/hoặc quản lý thông qua nội dung nguồn đã được chỉnh sửa theo phong cách và tiêu chuẩn của nền tảng LibreTexts;

Làm thế nào để đếm vòng lặp trong C?

C cho Ví dụ về Vòng lặp . Điều kiện kiểm tra ở đây là đếm <= 10. Do đó, số lượng có thể nhiều nhất là 10 để vòng lặp tiếp tục. Trong phần thân của vòng lặp, giá trị của số đếm được in ra. count is the counter variable, and it's initialized to 0 . The test condition here is count <= 10 . Therefore, count can be at most 10 for looping to continue. In the body of the loop, the value of count is printed out.

Vòng lặp chạy bao nhiêu lần?

Sử dụng vòng lặp . Trong lập trình máy tính, vòng lặp là một chuỗi các hướng dẫn được lặp lại cho đến khi đạt được một điều kiện nhất định. 10 times as shown below. In computer programming, a loop is a sequence of instructions that is repeated until a certain condition is reached.

Làm cách nào để đếm số lần một vòng lặp được thực thi trong C#?

int Totalcount=0; . Văn bản = "Vòng lặp for đã được thực hiện " + Tổng số.