chu kỳ. Vòng lặp với tham số (for)


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 lệnh 10 lần writeln('HELLO');

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 cần người dùng có thể chọn số lần hiển thị thông tin trên màn hình? 

Để đối phó với nhiệm vụ này, chúng ta có thể sử dụng một cấu trúc đặc biệt có tên là LOOP

Vòng lặp là một 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.


Trong ngôn ngữ lập trình Pascal có hai loại vòng lặp: vòng lặp có biến (for) và vòng lặp có điều kiện (while)

Hãy bắt đầu làm quen với các chu kỳ từ loại đầu tiên.

VÒNG LẠI VỚI MỘT BIẾN HOẶC VỚI MỘT SỐ BƯỚC ĐÃ BIẾT (CHO)

Đ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 (số lần) - nghĩa là chúng ta có thể chỉ định chính xác số lần lặp lại. 

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 ô đó,
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.

Trong ngôn ngữ lập trình Pascal, không có cấu trúc như vậy, 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: đối với *giá trị đầu* thành *giá trị cuối* làm bắt đầu /*một câu lệnh hoặc khối câu lệnh - thân vòng lặp*/; kết thúc; Việc xây dựng này yêu cầu chúng ta
1. cấp phát rõ ràng một ô nhớ, ô nhớ này sẽ là một bộ đếm và đặt giá trị ban đầu
2. Chỉ định giá trị trong ô này sẽ thay đổi như thế nào.
3. một điều kiện đã được viết theo đó thân vòng lặp sẽ được thực thi

Trong phần thực hành, chúng tôi sẽ thử hiển thị từ Hello 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 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ó.

Thông thường, các phần của vòng lặp for thực hiện các bước sau: 
1. Đặt giá trị ban đầu. 
2. Đặt bước mà biến vòng lặp sẽ thay đổi
3. Đặt giá trị cuối cùng.
3. Thực hiện các thao tác vòng lặp. 
4. Cập nhật (các) giá trị được sử dụng trong thử nghiệm. 
và sau đó các bước 2-4 được lặp lại cho đến khi điều kiện được đáp ứng. 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 lặp và phân tích chi tiết hơn tất cả các phần cho *đặt giá trị ban đầu thành biến* thành/xuống *giá trị cuối* bắt đầu /*một câu lệnh hoặc khối câu lệnh - thân vòng lặp*/; kết thúc;

Đặt biến thành giá trị ban đầu

chịu trách nhiệm thiết lập giá trị ban đầu của biến chu kỳ (bộ đếm), KHÔNG được đánh dấu bằng dấu ngoặc hoặc thứ gì khác
Ví dụ : tôi := 0; // biến chu trình i được gán giá trị ban đầu bằng 0. Với thành tích như vậy, //biến i phải được khai báo trước vòng lặp đến/xuống Đây là bước mà biến được sử dụng trong vòng lặp sẽ thay đổi. Nếu viết to thì mỗi lần lặp giá trị của biến sẽ tăng 1, nếu downto - giảm 1 Giá trị cuối là giá trị cuối cùng mà phần thân của vòng lặp sẽ vẫn được thực thi. Ví dụ: nếu chúng ta đặt giá trị cuối cùng là 100, thì ở 100 vòng lặp của chúng ta sẽ vẫn được thực thi và ở 101 thì không. Hãy thực hành viết tiêu đề của vòng lặp for

Phần đầu của vòng lặp for trong Pascal bao gồm một số phần:
1) từ cho
2) chúng ta đang gán biến nào và giá trị nào. Trong chương trình này, đây là b := 1, tức là. chúng tôi gán giá trị 1 cho b.
3) từ to hoặc downto, cho biết bước thực hiện vòng lặp. Nếu viết to thì cứ mỗi lần lặp biến sẽ tăng lên 1, nếu viết xuống thì giảm đi 1.
4) giá trị cuối cùng của biến
5) từ làm
6) chữ  bắt đầu  (có thể bỏ qua nếu trong thân vòng lặp chỉ có 1 dòng, nếu không thì phải viết. Nếu không viết bắt đầu thì chỉ dòng đầu tiên thôi được thực thi từ toàn bộ phần thân của vòng lặp). Đừng quên sau thân vòng lặp, nếu chúng ta đã viết từ bắt đầu, hãy viết từ kết thúc; !

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. Vì chúng ta 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 người dùng nhập từ bàn phím.
Chương trình sẽ như thế này:
  var i, n : số nguyên; // tôi – biến vòng lặp, n - số lượng tối đa mà chúng tôi tính bình phương bắt đầu đọc (n); // nhập n từ bàn phím for i := 1 to n do // vòng lặp: for all i from 1 to n - biến i sẽ tuần tự lấy giá trị từ 1 đến n writeln('Kvadrat chisla ', i, ' quạ ', i * i); // 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 kết thúc. Khi vào vòng lặp, câu lệnh i := 1 được thực thi, sau đó biến i được tăng lên một (đến) theo mỗi bước. Vòng lặp được thực hiện 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ả công việc của nó với các giá trị khác nhau của biến n.