Hướng dẫn iteration control structure in c++ - cấu trúc điều khiển lặp trong c ++

Kenneth Leroy Busbee và Dave Braunschweig

Tổng quan

Trong các cấu trúc điều khiển lặp, một câu lệnh hoặc khối được thực thi cho đến khi chương trình đạt đến một trạng thái nhất định hoặc các hoạt động đã được áp dụng cho mọi yếu tố của một bộ sưu tập. Điều này thường được thể hiện bằng các từ khóa như

IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

8,
IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

9,
IF x > y THEN high := x; END IF;
0 hoặc ________ 61. [1]iteration control structures, a statement or block is executed until the program reaches a certain state, or operations have been applied to every element of a collection. This is usually expressed with keywords such as
IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

8,
IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

9,
IF x > y THEN high := x; END IF;
0, or
IF x > y THEN high := x; END IF;
1.[1]

Thảo luận

Thuộc tính cơ bản của cấu trúc điều khiển lặp là có thể lặp lại một số dòng mã. Hiển thị trực quan của phép lặp tạo ra một mẫu vòng tròn khi được lưu trữ, do đó, từ vòng lặp lặp được liên kết với các cấu trúc điều khiển lặp. Lặp lại có thể được thực hiện bằng & nbsp; kiểm tra trước các vòng, kiểm tra sau các vòng lặp và đếm các vòng. Một câu hỏi sử dụng các khái niệm Boolean thường kiểm soát tần suất vòng lặp sẽ thực thi.

Cấu trúc điều khiển lặp lại [lặp lại]

Mã giả: Trong khi

count assigned zero
While count < 5
    Display "I love computers!"
    Increment count
End

Mã giả: làm trong khi

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero

Mã giả: lặp lại cho đến khi

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one

Mã giả: cho

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End

Người giới thiệu

  • CNX.org: Nguyên tắc cơ bản lập trình - Một cách tiếp cận có cấu trúc mô -đun bằng cách sử dụng C ++

Một con tàu lái xe về phía đông và một người khác lái xe về phía tây bằng những cơn gió tự thổi. --Ella Wheeler Wilcox

Chương này chỉ cho bạn cách cấu trúc luồng điều khiển thông qua chương trình PL/SQL. Bạn tìm hiểu làm thế nào các câu lệnh được kết nối bởi các cấu trúc điều khiển đơn giản nhưng mạnh mẽ có một điểm nhập và điểm thoát duy nhất. Nói chung, các cấu trúc này có thể xử lý mọi tình huống. Việc sử dụng đúng cách của họ dẫn tự nhiên đến một chương trình có cấu trúc tốt.

Chủ đề chínhTổng quan Điều khiển

Tổng quan

Theo định lý cấu trúc, bất kỳ chương trình máy tính nào cũng có thể được viết bằng các cấu trúc điều khiển cơ bản được hiển thị trong Hình & NBSP; 3-1. Chúng có thể được kết hợp theo bất kỳ cách nào cần thiết để đối phó với một vấn đề nhất định.

Hình 3-1 Cấu trúc điều khiển

Cấu trúc lựa chọn kiểm tra một điều kiện, sau đó thực thi một chuỗi các câu lệnh thay vì một chuỗi khác, tùy thuộc vào điều kiện là đúng hay sai. Một điều kiện là bất kỳ biến hoặc biểu thức nào trả về giá trị boolean [

IF x > y THEN high := x; END IF;
2 hoặc
IF x > y THEN high := x; END IF;
3]. Cấu trúc lặp thực hiện một chuỗi các câu lệnh liên tục miễn là một điều kiện đúng. Cấu trúc trình tự chỉ đơn giản thực hiện một chuỗi các câu lệnh theo thứ tự chúng xảy ra.

Kiểm soát có điều kiện: Nếu các câu lệnh

Thông thường, cần phải thực hiện các hành động thay thế tùy thuộc vào hoàn cảnh. Câu lệnh

IF x > y THEN high := x; END IF;
4 cho phép bạn thực hiện một chuỗi các câu lệnh một cách có điều kiện. Đó là, liệu trình tự được thực thi hay không phụ thuộc vào giá trị của một điều kiện. Có ba hình thức của
IF x > y THEN high := x; END IF;
4 tuyên bố:
IF x > y THEN high := x; END IF;
6,
IF x > y THEN high := x; END IF;
7 và
IF x > y THEN high := x; END IF;
8.

If-thì

Hình thức đơn giản nhất của câu lệnh

IF x > y THEN high := x; END IF;
4 liên kết một điều kiện với một chuỗi các câu lệnh được bao quanh bởi các từ khóa
IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

0 và
IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

1
IF x > y THEN high := x; END IF;
4 [không phải
IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

3], như sau:

IF condition THEN
   sequence_of_statements
END IF;

Trình tự các câu lệnh chỉ được thực thi nếu điều kiện là đúng. Nếu điều kiện là sai hoặc null, câu lệnh

IF x > y THEN high := x; END IF;
4 không làm gì cả. Trong cả hai trường hợp, kiểm soát chuyển sang câu lệnh tiếp theo. Một ví dụ sau:

IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

Bạn có thể muốn đặt các câu lệnh

IF x > y THEN high := x; END IF;
4 ngắn trên một dòng, như trong

IF x > y THEN high := x; END IF;

If-Then-Else

Hình thức thứ hai của câu lệnh

IF x > y THEN high := x; END IF;
4 thêm từ khóa
IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

7 theo sau là một chuỗi các câu lệnh thay thế, như sau:

IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

Trình tự các câu lệnh trong mệnh đề

IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

7 chỉ được thực thi nếu điều kiện là sai hoặc null. Do đó, mệnh đề
IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

7 đảm bảo rằng một chuỗi các câu lệnh được thực thi. Trong ví dụ sau, câu lệnh
IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   UPDATE accounts SET balance = balance - debit WHERE ...
END IF;

0 đầu tiên được thực thi khi điều kiện là đúng, nhưng câu lệnh
IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   UPDATE accounts SET balance = balance - debit WHERE ...
END IF;

0 thứ hai được thực thi khi điều kiện là sai hoặc null:

IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   UPDATE accounts SET balance = balance - debit WHERE ...
END IF;

Các mệnh đề

IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

0 và
IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

7 có thể bao gồm các câu lệnh
IF x > y THEN high := x; END IF;
4. Đó là, các câu lệnh
IF x > y THEN high := x; END IF;
4 có thể được lồng, như ví dụ sau đây cho thấy:

IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   IF new_balance >= minimum_balance THEN
      UPDATE accounts SET balance = balance - debit WHERE ...
   ELSE
      RAISE insufficient_funds;
   END IF;
END IF;

IF-THEN-ELEF

Đôi khi bạn muốn chọn một hành động từ một số lựa chọn thay thế loại trừ lẫn nhau. Hình thức thứ ba của câu lệnh

IF x > y THEN high := x; END IF;
4 sử dụng từ khóa
IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   UPDATE accounts SET balance = balance - debit WHERE ...
END IF;

7 [không phải
IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   UPDATE accounts SET balance = balance - debit WHERE ...
END IF;

8] để giới thiệu các điều kiện bổ sung, như sau:

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
0

Nếu điều kiện đầu tiên là sai hoặc null, mệnh đề

IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   UPDATE accounts SET balance = balance - debit WHERE ...
END IF;

7 kiểm tra một điều kiện khác. Một tuyên bố
IF x > y THEN high := x; END IF;
4 có thể có bất kỳ số lượng của
IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   UPDATE accounts SET balance = balance - debit WHERE ...
END IF;

7; Điều khoản
IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

7 cuối cùng là tùy chọn. Điều kiện được đánh giá từng cái một từ trên xuống dưới. Nếu bất kỳ điều kiện nào là đúng, chuỗi các câu lệnh liên quan của nó được thực thi và kiểm soát chuyển sang câu lệnh tiếp theo. Nếu tất cả các điều kiện là sai hoặc null, chuỗi trong mệnh đề
IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

7 được thực thi. Xem xét ví dụ sau:

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
1

Nếu giá trị của

IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   IF new_balance >= minimum_balance THEN
      UPDATE accounts SET balance = balance - debit WHERE ...
   ELSE
      RAISE insufficient_funds;
   END IF;
END IF;
4 lớn hơn 50000, điều kiện thứ nhất và thứ hai là đúng. Tuy nhiên,
IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   IF new_balance >= minimum_balance THEN
      UPDATE accounts SET balance = balance - debit WHERE ...
   ELSE
      RAISE insufficient_funds;
   END IF;
END IF;
5 được gán giá trị thích hợp là 1500 vì điều kiện thứ hai không bao giờ được kiểm tra. Khi điều kiện đầu tiên là đúng, câu lệnh liên quan của nó được thực thi và kiểm soát chuyển sang câu lệnh
IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   IF new_balance >= minimum_balance THEN
      UPDATE accounts SET balance = balance - debit WHERE ...
   ELSE
      RAISE insufficient_funds;
   END IF;
END IF;
6.

Hướng dẫn

Tránh vụng về

IF x > y THEN high := x; END IF;
4 như những câu trong ví dụ sau:

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
2

Mã này coi thường hai sự thật hữu ích. Đầu tiên, giá trị của biểu thức boolean có thể được gán trực tiếp cho biến boolean. Vì vậy, bạn có thể thay thế câu lệnh

IF x > y THEN high := x; END IF;
4 đầu tiên bằng một bài tập đơn giản, như sau:

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
3

Thứ hai, một biến boolean là chính nó đúng hoặc sai. Vì vậy, bạn có thể đơn giản hóa điều kiện trong câu lệnh

IF x > y THEN high := x; END IF;
4 thứ hai, như sau:

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
4

Khi có thể, hãy sử dụng mệnh đề

IF trans_type = 'CR' THEN
   UPDATE accounts SET balance = balance + credit WHERE ...
ELSE
   UPDATE accounts SET balance = balance - debit WHERE ...
END IF;

7 thay vì các câu lệnh
IF x > y THEN high := x; END IF;
4 lồng nhau. Bằng cách đó, mã của bạn sẽ dễ đọc và hiểu hơn. So sánh các câu
IF x > y THEN high := x; END IF;
4 sau:

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
5

Các tuyên bố này là tương đương về mặt logic, nhưng câu lệnh đầu tiên che khuất dòng logic, trong khi câu lệnh thứ hai cho thấy nó.

Điều khiển lặp: Các câu lệnh LOOP và EXIT

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03 Các câu lệnh cho phép bạn thực hiện một chuỗi các câu lệnh nhiều lần. Có ba hình thức của
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03 tuyên bố:
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03,
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
06 và
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
07.

VÒNG

Hình thức đơn giản nhất của câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03 là vòng lặp cơ bản [hoặc vô hạn], bao gồm một chuỗi các câu lệnh giữa các từ khóa
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03 và
IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

1
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03, như sau:

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
6

Với mỗi lần lặp của vòng lặp, chuỗi các câu lệnh được thực thi, sau đó điều khiển tiếp tục ở đầu vòng lặp. Nếu xử lý thêm là không mong muốn hoặc không thể, bạn có thể sử dụng câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12 để hoàn thành vòng lặp. Bạn có thể đặt một hoặc nhiều câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12 ở bất cứ đâu bên trong một vòng lặp, nhưng không nơi nào bên ngoài một vòng lặp. Có hai hình thức của các câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12:
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12 và
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
16.

LỐI RA

Tuyên bố

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12 buộc một vòng lặp hoàn toàn vô điều kiện. Khi gặp một tuyên bố
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12, vòng lặp hoàn thành ngay lập tức và kiểm soát chuyển sang câu lệnh tiếp theo. Một ví dụ sau:

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
7

Ví dụ tiếp theo cho thấy rằng bạn không thể sử dụng câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12 để hoàn thành khối PL/SQL:

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
8

Hãy nhớ rằng, câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12 phải được đặt bên trong một vòng lặp. Để hoàn thành khối PL/SQL trước khi đạt được kết thúc bình thường, bạn có thể sử dụng câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
21. Để biết thêm thông tin, hãy xem "Sử dụng câu lệnh trả về".

Thoát khỏi khi

Tuyên bố

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
16 cho phép một vòng lặp hoàn thành có điều kiện. Khi câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12 gặp phải, điều kiện trong mệnh đề
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
24 được đánh giá. Nếu điều kiện là đúng, vòng lặp hoàn thành và điều khiển chuyển sang câu lệnh tiếp theo sau vòng lặp. Một ví dụ sau:

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
9

Cho đến khi điều kiện là đúng, vòng lặp không thể hoàn thành. Vì vậy, một câu lệnh bên trong vòng lặp phải thay đổi giá trị của điều kiện. Trong ví dụ cuối cùng, nếu câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
25 trả về một hàng, điều kiện là sai. Khi câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
25 không trả lại một hàng, điều kiện là đúng, vòng lặp hoàn thành và điều khiển chuyển đến câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
27.

Tuyên bố

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
16 thay thế một câu lệnh
IF x > y THEN high := x; END IF;
4 đơn giản. Ví dụ: so sánh các câu sau:

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one
0

Những câu này tương đương về mặt logic, nhưng câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
16 dễ đọc và hiểu hơn.

Nhãn vòng lặp

Giống như các khối PL/SQL, các vòng có thể được dán nhãn. Nhãn, một mã định danh không được khai báo được đặt bởi giá đỡ góc kép, phải xuất hiện ở đầu câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03, như sau:

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one
1

Tùy chọn, tên nhãn cũng có thể xuất hiện ở cuối câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03, như ví dụ sau đây cho thấy:

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one
2

Khi bạn làm tổ các vòng lặp được dán nhãn, bạn có thể sử dụng tên nhãn kết thúc để cải thiện khả năng đọc.

Với một trong hai hình thức của câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12, bạn có thể hoàn thành không chỉ vòng lặp hiện tại mà còn bất kỳ vòng lặp bao quanh. Chỉ cần dán nhãn vòng lặp kèm theo mà bạn muốn hoàn thành. Sau đó, sử dụng nhãn trong câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12, như sau:

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one
3

Mỗi vòng lặp kèm theo và bao gồm các vòng lặp được dán nhãn được thoát.

TRONG KHI LẶP LẠI

Tuyên bố

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
06 liên kết một điều kiện với một chuỗi các câu lệnh được bao quanh bởi các từ khóa
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03 và
IF condition THEN
   sequence_of_statements1
ELSE
   sequence_of_statements2
END IF;

1
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03, như sau:

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one
4

Trước mỗi lần lặp của vòng lặp, điều kiện được đánh giá. Nếu điều kiện là đúng, chuỗi các câu lệnh được thực thi, thì điều khiển tiếp tục ở đầu vòng lặp. Nếu điều kiện là sai hoặc null, vòng lặp được bỏ qua và điều khiển chuyển sang câu lệnh tiếp theo. Một ví dụ sau:

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one
5

Số lần lặp phụ thuộc vào điều kiện và không xác định cho đến khi vòng lặp hoàn thành. Điều kiện được kiểm tra ở đầu vòng lặp, vì vậy trình tự có thể thực thi 0 lần. Trong ví dụ cuối cùng, nếu giá trị ban đầu của

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
39 lớn hơn 25000, điều kiện là sai và vòng lặp bị bỏ qua.

Một số ngôn ngữ có cấu trúc

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
41 hoặc
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
42
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
41, kiểm tra điều kiện ở dưới cùng của vòng lặp thay vì ở trên cùng. Do đó, chuỗi các câu lệnh được thực hiện ít nhất một lần. PL/SQL không có cấu trúc như vậy, nhưng bạn có thể dễ dàng xây dựng một cấu trúc, như sau:

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one
6

Để đảm bảo rằng vòng lặp

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
44 thực thi ít nhất một lần, hãy sử dụng biến Boolean được khởi tạo trong điều kiện, như sau:

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one
7

Một câu lệnh bên trong vòng lặp phải gán một giá trị mới cho biến boolean. Nếu không, bạn có một vòng lặp vô hạn. Ví dụ: các câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03 sau đây tương đương về mặt logic:

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one
8

Cho vòng lặp

Trong khi số lần lặp qua vòng lặp

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
44 không được biết cho đến khi vòng lặp hoàn thành, số lần lặp qua vòng lặp
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
47 được biết đến trước khi vòng lặp được nhập.
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
47 Vòng lặp lặp qua một phạm vi số nguyên cụ thể. . Một dấu chấm kép [
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
52] đóng vai trò là toán tử phạm vi. Cú pháp sau:

count assigned five
Repeat
    Display "Blast off is soon!"
    Decrement count
Until count < one
9

Phạm vi được đánh giá khi vòng lặp

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
47 được nhập lần đầu tiên và không bao giờ được đánh giá lại.

Như ví dụ tiếp theo cho thấy, chuỗi các câu lệnh được thực hiện một lần cho mỗi số nguyên trong phạm vi. Sau mỗi lần lặp, bộ đếm vòng được tăng lên.

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End
0

Ví dụ sau đây cho thấy rằng nếu giới hạn dưới bằng giới hạn cao hơn, chuỗi các câu lệnh được thực thi một lần:

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End
1

Theo mặc định, việc lặp lại tiến lên từ giới hạn dưới đến giới hạn cao hơn. Tuy nhiên, như ví dụ dưới đây cho thấy, nếu bạn sử dụng từ khóa

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
54, việc lặp lại sẽ giảm xuống từ giới hạn cao hơn đến giới hạn dưới. Sau mỗi lần lặp, bộ đếm vòng được giảm. Tuy nhiên, bạn viết các giới hạn phạm vi theo thứ tự tăng dần [không giảm dần].

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End
2

Bên trong vòng lặp

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
47, bộ đếm vòng lặp có thể được tham chiếu giống như một hằng số nhưng không thể được gán các giá trị, như ví dụ sau đây cho thấy:

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End
3

Các sơ đồ lặp

Các giới hạn của một phạm vi vòng có thể là chữ, biến hoặc biểu thức nhưng phải đánh giá theo số. Mặt khác, PL/SQL tăng ngoại lệ được xác định trước

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
56. Giới hạn thấp hơn không cần phải là 1, như các ví dụ dưới đây cho thấy. Tuy nhiên, mức tăng bộ đếm vòng [hoặc giảm] phải là 1.

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End
4

Trong nội bộ, PL/SQL gán các giá trị của các giới hạn cho các biến

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
57 tạm thời và nếu cần, làm tròn các giá trị vào số nguyên gần nhất. Phạm vi cường độ của A
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
57 là -2 ** 31 .. 2 ** 31. Vì vậy, nếu một ràng buộc đánh giá với một số bên ngoài phạm vi đó, bạn sẽ gặp lỗi tràn số khi PL/SQL thử gán, như ví dụ sau đây cho thấy:

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End
5

Một số ngôn ngữ cung cấp một mệnh đề

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
59, cho phép bạn chỉ định một mức tăng khác [5 thay vì 1 chẳng hạn]. PL/SQL không có cấu trúc như vậy, nhưng bạn có thể dễ dàng xây dựng một cấu trúc. Bên trong vòng
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
47, chỉ cần nhân mỗi tham chiếu với bộ đếm vòng lặp với mức tăng mới. Trong ví dụ sau, bạn gán ngày hôm nay cho các phần tử 5, 10 và 15 của bảng chỉ mục:

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End
6

Phạm vi động

PL/SQL cho phép bạn xác định phạm vi vòng lặp động tại thời gian chạy, như ví dụ sau đây cho thấy:

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End
7

Giá trị của

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
61 không rõ tại thời điểm biên dịch; Câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
62 trả về giá trị tại thời gian chạy.

Điều gì xảy ra nếu giới hạn dưới của phạm vi vòng đánh giá là một số nguyên lớn hơn giới hạn trên? Như ví dụ tiếp theo cho thấy, chuỗi các câu lệnh trong vòng lặp không được thực thi và kiểm soát chuyển sang câu lệnh tiếp theo:

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End
8

Quy tắc phạm vi

Bộ đếm vòng chỉ được xác định trong vòng lặp. Bạn không thể tham khảo nó bên ngoài vòng lặp. Sau khi vòng lặp được thoát, bộ đếm vòng không được xác định, như ví dụ sau đây cho thấy:

For x starts at 0, x < 5, increment x
    Display "Are we having fun?"
End
9

Bạn không cần phải khai báo rõ ràng bộ đếm vòng lặp vì nó được tuyên bố ngầm là một biến cục bộ của loại

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
63. Ví dụ tiếp theo cho thấy tuyên bố địa phương che giấu bất kỳ tuyên bố toàn cầu nào:

IF condition THEN
   sequence_of_statements
END IF;

0

Để tham khảo biến toàn cầu trong ví dụ này, bạn phải sử dụng ký hiệu nhãn và dấu chấm, như sau:

IF condition THEN
   sequence_of_statements
END IF;

1

Các quy tắc phạm vi tương tự áp dụng cho các vòng lặp

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
47 lồng nhau. Xem xét ví dụ dưới đây. Cả hai bộ đếm vòng có cùng tên. Vì vậy, để tham khảo bộ đếm vòng ngoài từ vòng lặp bên trong, bạn phải sử dụng một nhãn và ký hiệu dấu chấm, như sau:

IF condition THEN
   sequence_of_statements
END IF;

2

Sử dụng câu lệnh thoát

Câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12 cho phép vòng lặp
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
47 hoàn thành sớm. Ví dụ: vòng lặp sau thường thực hiện mười lần, nhưng ngay khi câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
25 không trả lại một hàng, vòng lặp hoàn thành cho dù nó có thực thi bao nhiêu lần:

IF condition THEN
   sequence_of_statements
END IF;

3

Giả sử bạn phải thoát khỏi một vòng lặp

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
47 sớm. Bạn có thể hoàn thành không chỉ vòng lặp hiện tại, mà bất kỳ vòng lặp bao quanh. Chỉ cần dán nhãn vòng lặp kèm theo mà bạn muốn hoàn thành. Sau đó, sử dụng nhãn trong câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
12 để chỉ định vòng lặp
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
47 nào để thoát, như sau:

IF condition THEN
   sequence_of_statements
END IF;

4

Kiểm soát tuần tự: Các câu lệnh Goto và Null

Không giống như các câu lệnh

IF x > y THEN high := x; END IF;
4 và
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03, các câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 và
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
74 không quan trọng đối với lập trình PL/SQL. Cấu trúc của PL/SQL sao cho câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 hiếm khi cần thiết. Đôi khi, nó có thể đơn giản hóa logic đủ để đảm bảo việc sử dụng nó. Tuyên bố
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
74 có thể cải thiện khả năng đọc bằng cách đưa ra ý nghĩa và hành động của các tuyên bố có điều kiện rõ ràng.

Việc lạm dụng các câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 có thể dẫn đến mã phức tạp, không cấu trúc [đôi khi được gọi là mã spaghetti] khó hiểu và duy trì. Vì vậy, sử dụng các câu
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 một cách tiết kiệm. Ví dụ, để phân nhánh từ một cấu trúc được lồng sâu sang một thói quen xử lý lỗi, hãy nêu một ngoại lệ thay vì sử dụng câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73.

Tuyên bố Goto

Tuyên bố

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 nhánh cho một nhãn vô điều kiện. Nhãn phải là duy nhất trong phạm vi của nó và phải đi trước một câu lệnh thực thi hoặc khối PL/SQL. Khi được thực thi, câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 chuyển kiểm soát sang câu lệnh hoặc khối được dán nhãn. Trong ví dụ sau, bạn đi đến một câu lệnh thực thi xa hơn trong một chuỗi các câu lệnh:

IF condition THEN
   sequence_of_statements
END IF;

5

Trong ví dụ tiếp theo, bạn đi đến một khối PL/SQL xa hơn theo một chuỗi các câu lệnh:

IF condition THEN
   sequence_of_statements
END IF;

6

Nhãn

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
82 trong ví dụ sau là bất hợp pháp vì nó không đi trước tuyên bố thực thi:

IF condition THEN
   sequence_of_statements
END IF;

7

Để gỡ lỗi ví dụ cuối cùng, chỉ cần thêm câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
74, như sau:

IF condition THEN
   sequence_of_statements
END IF;

8

Như ví dụ sau đây cho thấy, câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 có thể phân nhánh thành một khối kèm theo từ khối hiện tại:

IF condition THEN
   sequence_of_statements
END IF;

9

Câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 nhánh đến khối kèm theo đầu tiên trong đó nhãn được tham chiếu xuất hiện.

Những hạn chế

Một số điểm đến có thể của một tuyên bố

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 là bất hợp pháp. Cụ thể, một câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 không thể phân nhánh thành một câu lệnh
IF x > y THEN high := x; END IF;
4, tuyên bố
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
03 hoặc khối phụ. Ví dụ: tuyên bố
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 sau đây là bất hợp pháp:

IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

0

Ngoài ra, một câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 không thể phân nhánh từ mệnh đề câu lệnh
IF x > y THEN high := x; END IF;
4 này sang điều khoản khác, như ví dụ sau đây cho thấy:

IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

1

Ví dụ tiếp theo cho thấy một câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 không thể phân nhánh từ một khối kèm theo thành một khối phụ:

IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

2

Ngoài ra, một tuyên bố

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 không thể phân nhánh ra khỏi một chương trình con, như ví dụ sau đây cho thấy:

IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

3

Cuối cùng, một câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 không thể phân nhánh từ một trình xử lý ngoại lệ vào khối hiện tại. Ví dụ: tuyên bố
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 sau đây là bất hợp pháp:

IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

4

Tuy nhiên, một câu lệnh

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
73 có thể phân nhánh từ một trình xử lý ngoại lệ thành một khối kèm theo.

Tuyên bố NULL

Tuyên bố

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
74 chỉ định rõ ràng không hành động; Nó không làm gì khác ngoài việc vượt qua kiểm soát cho tuyên bố tiếp theo. Nó có thể, tuy nhiên, cải thiện khả năng đọc. Trong một cấu trúc cho phép các hành động thay thế, câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
74 đóng vai trò là người giữ chỗ. Nó nói với độc giả rằng sự thay thế liên quan đã không bị bỏ qua, nhưng thực sự không có hành động nào là cần thiết. Trong ví dụ sau, câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
74 cho thấy không có hành động nào được thực hiện cho các trường hợp ngoại lệ không tên:

IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

5

Mỗi mệnh đề trong một câu lệnh

IF x > y THEN high := x; END IF;
4 phải chứa ít nhất một câu lệnh thực thi. Tuyên bố
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
74 có thể thực thi, vì vậy bạn có thể sử dụng nó trong các mệnh đề tương ứng với các trường hợp không có hành động nào được thực hiện. Trong ví dụ sau, tuyên bố
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
74 nhấn mạnh rằng chỉ những nhân viên được xếp hạng hàng đầu nhận được tiền thưởng:

IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

6

Ngoài ra, tuyên bố

count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
74 là một cách tiện dụng để tạo sơ khai khi thiết kế các ứng dụng từ trên xuống. Một sơ đồ con là một chương trình con giả cho phép bạn trì hoãn định nghĩa về quy trình hoặc chức năng cho đến khi bạn kiểm tra và gỡ lỗi chương trình chính. Trong ví dụ sau, câu lệnh
count assigned five
Do
    Display "Blast off is soon!"
    Decrement count
While count > zero
74 đáp ứng yêu cầu rằng ít nhất một câu lệnh phải xuất hiện trong phần thực thi của chương trình con:

IF sales > quota THEN
   compute_bonus[empid];
   UPDATE payroll SET pay = pay + bonus WHERE empno = emp_id;
END IF;

7

Cấu trúc điều khiển lặp trong C là gì?

Trong các cấu trúc điều khiển lặp, một câu lệnh hoặc khối được thực thi cho đến khi chương trình đạt đến một trạng thái nhất định hoặc các hoạt động đã được áp dụng cho mọi yếu tố của một bộ sưu tập. Điều này thường được thể hiện bằng các từ khóa như trong khi, lặp lại, cho hoặc làm ..a statement or block is executed until the program reaches a certain state, or operations have been applied to every element of a collection. This is usually expressed with keywords such as while , repeat , for , or do..

Cấu trúc điều khiển lặp lại là gì?

Cấu trúc lặp thực hiện một chuỗi các câu lệnh liên tục miễn là một điều kiện đúng.Cấu trúc trình tự chỉ đơn giản thực hiện một chuỗi các câu lệnh theo thứ tự chúng xảy ra.executes a sequence of statements repeatedly as long as a condition holds true. The sequence structure simply executes a sequence of statements in the order in which they occur.

Tuyên bố kiểm soát lặp lại trong C là gì?

Một câu lệnh lặp, hoặc vòng lặp, liên tục thực hiện một câu lệnh, được gọi là thân vòng lặp, cho đến khi biểu thức kiểm soát là sai [0].Biểu thức điều khiển phải có loại vô hướng.Câu lệnh trong khi đánh giá biểu thức điều khiển trước khi thực hiện thân vòng lặp [xem Phần 7.6.repeatedly executes a statement, known as the loop body, until the controlling expression is false [0]. The control expression must have a scalar type. The while statement evaluates the control expression before executing the loop body [see Section 7.6.

3 loại cấu trúc điều khiển trong C là gì?

Có ba loại logic cơ bản, hoặc dòng điều khiển, được gọi là: logic trình tự hoặc dòng chảy tuần tự.Lựa chọn logic, hoặc dòng chảy có điều kiện.Logic lặp, hoặc dòng chảy lặp đi lặp lại.Sequence logic, or sequential flow. Selection logic, or conditional flow. Iteration logic, or repetitive flow.

Bài Viết Liên Quan

Chủ Đề