Luồng điều khiển – Wikipedia tiếng Việt

Trong khoa học máy tính, luồng điều khiển (tiếng Anh: control flow hay flow of control) là thứ tự các câu lệnh, tập lệnh hay lời gọi hàm riêng biệt của một chương trình mệnh lệnh được thực thi hay đánh giá. Việc nhấn mạnh vào kiểm soát dòng một cách rõ ràng sẽ phân biệt một ngôn ngữ lập trình mệnh lệnh (imperative programming) với ngôn ngữ lập trình khai báo (declarative programming).

Trong một ngôn ngữ lập trình bắt buộc, một câu lệnh điều khiển luồng là một câu lệnh thực thi mà kết quả trong một sự lựa chọn được thực hiện theo cách của hai hoặc nhiều đường dẫn tiếp theo. Đối với ngôn ngữ lập trình không nghiêm ngặt các ngôn ngữ chức năng, các hàm và cấu trúc ngôn ngữ tồn tại để đạt được cùng một kết quả, nhưng chúng thường không được gọi là các câu lệnh luồng điều khiển.

Một tập hợp những câu lệnh lần lượt thường được cấu trúc như một Block, ngoài việc nhóm, cũng định nghĩa khoanh vùng phạm vi từ vựng .

Ngắt và tín hiệu là các cơ chế cấp thấp có thể thay đổi dòng điều khiển theo cách tương tự như chương trình con, nhưng thường xảy ra như một phản ứng với một số kích thích hoặc sự kiện bên ngoài (có thể xảy ra không đồng bộ), thay vì thực hiện một dòng điều khiển lưu lượng.

Ngắt và tín hiệu là cơ chế cấp thấp có thể thay đổi luồng điều khiển theo cách tương tự như chương trình con, nhưng thường xảy ra như một phản ứng với một số kích thích hoặc sự kiện bên ngoài (có thể xảy ra không đồng bộ), thay vì thực hiện câu lệnh dòng điều khiển nội dòng .

Các loại báo cáo giải trình dòng điều khiển được tương hỗ bởi những ngôn từ khác nhau, nhưng hoàn toàn có thể được phân loại theo hiệu ứng của chúng :

  • Tiếp tục ở một câu lệnh khác (nhánh vô điều kiện hoặc nhảy)
  • Thực hiện một tập hợp các câu lệnh chỉ khi một số điều kiện được đáp ứng (lựa chọn – tức là, nhánh có điều kiện)
  • Thực hiện một tập hợp các câu lệnh bằng không hoặc nhiều lần, cho đến khi một số điều kiện được đáp ứng (tức là, vòng lặp – giống như nhánh có điều kiện)
  • Thực hiện một tập hợp các câu lệnh ở xa, sau đó luồng điều khiển thường trả về (chương trình con, coroutines và tiếp tục)
  • Dừng chương trình, ngăn chặn bất kỳ sự thực thi nào khác (dừng vô điều kiện)

nhãn là tên hoặc số rõ ràng được gán cho một vị trí cố định và thắt chặt trong source code và hoàn toàn có thể được tham chiếu bởi những câu lệnh dòng điều khiển Open ở nơi khác trong mã nguồn. Nhãn ghi lại một vị trí trong mã nguồn và không có hiệu ứng nào khác .Số dòng là một sửa chữa thay thế cho một nhãn được đặt tên ( và được sử dụng trong một số ít ngôn từ như BASIC ), là số nguyên được đặt ở đầu mỗi dòng văn bản trong mã nguồn. Các ngôn từ sử dụng chúng thường áp đặt ràng buộc rằng những số dòng phải tăng giá trị trong mỗi dòng sau, nhưng hoàn toàn có thể không nhu yếu chúng phải liên tục. Ví dụ, trong BASIC :

10LETX=3
20PRINTX

Trong các ngôn ngữ khác như C và Ada, nhãn là số nhận dạng, thường xuất hiện ở đầu dòng và ngay lập tức theo sau bởi dấu hai chấm. Ví dụ, trong C:

Success:printf(" The operation was successful .\ n") ;

Ngôn ngữ ALGOL 60 cho phép cả số nguyên và số nhận dạng dưới dạng nhãn ( cả hai đều được link theo dấu hai chấm cho câu sau ), nhưng nếu bất kể biến thể ALGOL nào khác được cho phép số nguyên. Các trình biên dịch Fortran chỉ được cho phép những số nguyên làm nhãn. Bắt đầu với Fortran-90, nhãn chữ và số cũng được được cho phép .
Bài chi tiết cụ thể : GOTO

Câu lệnh goto (một sự kết hợp của các từ tiếng Anh go to , và phát âm tương ứng) là hình thức chuyển giao cơ bản nhất kiểm soát vô điều kiện.
Mặc dù từ khóa có thể nằm trong chữ hoa hoặc chữ thường phụ thuộc vào ngôn ngữ, nó thường được viết là:

 goto label

Ảnh hưởng của lệnh goto là làm cho câu lệnh tiếp theo được triển khai để câu lệnh Open tại ( hoặc ngay sau ) nhãn được chỉ định. Câu lệnh Goto đã được nhiều nhà khoa học máy tính coi là có hại, đáng chú ý quan tâm Dijkstra .

Chương trình con[sửa|sửa mã nguồn]

Bài cụ thể : SubroutineThuật ngữ cho những chương trình con khác nhau ; chúng hoàn toàn có thể được gọi là những thủ tục, hàm ( nếu chúng trả về hiệu quả ) hoặc những phương pháp ( nếu chúng thuộc về lớp hoặc loại lớp ) .

Trong những năm 1950, bộ nhớ máy tính rất nhỏ theo tiêu chuẩn hiện hành nên các chương trình con được sử dụng chủ yếu[cần dẫn nguồn]
để giảm kích thước chương trình. Một đoạn mã được viết một lần và sau đó được sử dụng nhiều lần từ nhiều nơi khác nhau trong một chương trình.

Ngày nay, những chương trình con thường được sử dụng để giúp tạo một chương trình có cấu trúc hơn, ví dụ, bằng cách cô lập một số ít thuật toán hoặc ẩn một số ít phương pháp truy vấn tài liệu. Nếu nhiều lập trình viên đang thao tác trên một chương trình, những chương trình con là một loại mô đun hoàn toàn có thể giúp phân loại việc làm .

Trong cấu trúc lập trình, việc sắp xếp thứ tự các lệnh liên tiếp được coi là một trong những cấu trúc điều khiển cơ bản, được sử dụng như một khối xây dựng cho các chương trình cùng với sự lặp lại, đệ quy và lựa chọn.

Luồng điều khiển có cấu trúc tối thiểu[sửa|sửa mã nguồn]

Vào tháng 5 năm 1966, Böhm và Jacopini xuất bản bài báo trong ACM cho thấy rằng bất kỳ chương trình nào có ‘goto’ có thể được chuyển thành dạng goto-free chỉ liên quan đến lựa chọn (IF THEN ELSE) và vòng lặp (WHILE condition DO xxx), có thể với mã trùng lặp và/hoặc bổ sung Các biến Boolean (true / false flags). Các tác giả sau đó cho thấy rằng sự lựa chọn có thể được thay thế bằng các vòng lặp (và nhiều biến Boolean hơn).

  • Hoare, C. A. R. “Partition: Algorithm 63,” “Quicksort: Algorithm 64,” and “Find: Algorithm 65.” Comm. ACM 4, 321-322, 1961.

làm cho phiên bản máy tính bị gián đoạn một thời hạn dài và không hề sử dụng được nữa

Liên kết ngoài[sửa|sửa mã nguồn]

Alternate Text Gọi ngay