주기. 매개변수가 있는 루프(for)


같은 단어를 화면에 표시해야 하는 상황을 상상해 보세요. "HELLO"라는 단어를 10번 말합시다. 어떻게 해야 할까요?
writeln('HELLO');
명령을 10번 받아 쓸 수 있습니다.
그런데 10번이 아니라 20, 30, 40번, 200번이 필요하다면? 이 경우 복사하는 데 시간이 오래 걸립니다. 그리고 사용자가 화면에 정보를 표시할 횟수를 선택할 수 있어야 한다면? 

이 작업에 대처하기 위해 LOOP
라는 특수 구조를 사용할 수 있습니다.
루프는 특정 명령 시퀀스가 ​​여러 번 반복되는 알고리즘 구성입니다.


파스칼 프로그래밍 언어에는 변수가 있는 루프(for)와 조건이 있는 루프(while)의 두 종류의 루프가 있습니다.

첫 번째 유형의 사이클부터 시작하겠습니다.

변수 또는 알려진 단계 수(FOR)가 있는 루프

일부 동작의 반복 횟수를 알고 있거나 알려진 데이터를 사용하여 반복 횟수를 계산할 수 있는 경우가 종종 있습니다. 일부 프로그래밍 언어에는 러시아어로 REPEAT(횟수)처럼 들리는 명령이 있습니다. 즉, 정확한 반복 횟수를 지정할 수 있습니다. 

기계 수준에서 이 주기가 어떻게 작동하는지 보는 것은 흥미롭습니다.
1. 특정 메모리 셀이 메모리에 할당되고 반복 횟수가 기록됩니다.
2. 프로그램이 루프 본문을 한 번 실행하면 이 셀(카운터)의 내용이 1씩 감소합니다.
3. 이 셀이 0이면 루프 실행이 종료됩니다.

프로그래밍 언어인 Pascal에는 그러한 구성이 없지만 for 구성이 있습니다.  

for 루프 문의 일반적인 형식은 다음과 같습니다. <예비> *시작 값*에서 *종료 값*까지 수행 시작하다 /*하나의 명령문 또는 명령문 블록 - 루프 본문*/; 종료; 이 구조는 우리가
1. 카운터가 될 메모리 셀을 명시적으로 할당하고 초기값 설정
2. 이 셀의 값이 어떻게 변경되는지 지정합니다.
3. 루프 본문이 실행될 조건이 작성되었습니다.

실제 부분에서는 Hello라는 단어를 10번 표시하려고 합니다. 다음 작업에서는 이 구성을 보다 자세히 분석합니다.

for 루프는 반복되는 작업을 단계별로 실행하는 수단입니다. 작동 방식을 자세히 살펴보겠습니다.

일반적으로 for 루프의 일부는 다음 단계를 수행합니다. 
<사업부>1. 초기값을 설정합니다. 
2. 루프 변수가 변경되는 단계 설정
<사업부>3. 종료 값을 설정합니다.
<사업부>3. 루프 작업을 수행합니다. 
<사업부>4. 테스트에 사용된 값을 업데이트합니다. 
그런 다음 조건이 충족될 때까지 2-4단계를 반복합니다. 조건이 거짓이 되는 즉시 루프가 종료되고 for 루프 문 다음의 문이 실행됩니다.
<사업부>
루프 문의 일반 형식으로 돌아가서 모든 부분을 더 자세히 분석해 보겠습니다. <예비> <코드> *초기값을 변수로 설정* ~ *종료값*까지/시작 /*하나의 명령문 또는 명령문 블록 - 루프 본문*/; 종료;

변수를 초기값으로 설정

주기 변수(카운터)의 초기 값 설정을 담당하며 대괄호나 다른 것으로 강조 표시되지 않습니다.
예를 들어 : <예비> 나는 := 0; //주기 변수 i에는 0과 같은 초기 값이 할당됩니다. 이와 같은 기록으로 //변수 i는 루프 전에 선언되어야 합니다. to/downto <예비> 루프에서 사용되는 변수가 변경되는 단계입니다. 쓰기를 하면 반복할 때마다 변수 값이 1씩 증가하고 아래로 내려가면 1씩 감소합니다. <예비> 종료 값 은 루프 본문이 계속 실행되는 마지막 값입니다. 예를 들어 마지막 값을 100으로 설정하면 100에서 루프가 계속 실행되고 101에서 실행되지 않습니다. for 루프의 제목 쓰기를 연습해 봅시다.

Pascal에서 for 루프의 헤드는 여러 부분으로 구성됩니다.
1) 단어 for
2) 어떤 변수와 어떤 값을 할당하는지. 이 프로그램에서 이것은 b := 1입니다. b에 값 1을 할당합니다.
3) 단어 to 또는 downto 루프가 실행되는 단계를 나타냅니다. 쓰기를 하면 변수는 반복할 때마다 1씩 증가하고 아래로 내리면 1씩 감소합니다.
4) 변수의 최종 값
5) 단어 할 일
6) 단어  begin (루프 본문에 한 줄만 있으면 생략할 수 있습니다. 그렇지 않으면 작성해야 합니다. 시작을 쓰지 않으면 첫 번째 줄만 루프의 전체 본문에서 실행됨). 루프 본문 뒤에 begin이라는 단어를 썼다면 end;라는 단어를 쓴다는 것을 잊지 말자!

지금까지 작성한 for 루프가 있는 모든 프로그램을 범용이라고 할 수는 없습니다. 루프 본문의 반복 횟수를 직접 설정하기 때문입니다. 
그러나 반복 횟수가 다른 값에 따라 달라지면 어떻게 될까요? 예를 들어, 사용자 자신이 주기의 반복 횟수를 설정하기를 원합니다.
이 경우 어떻게 해야 할까요?
모든 것이 매우 간단합니다. 숫자 시작 및 종료 값 대신 사용자가 계산하거나 설정할 수 있는 모든 변수를 사용할 수 있습니다.

예를 들어, 1에서 n까지의 숫자 제곱을 표시해야 하며 여기서 변수 n의 값은 사용자가 키보드에서 입력합니다.
프로그램은 다음과 같습니다.
  <예비> var i, n :정수; // i – 루프 변수, n - 제곱을 계산하는 최대 수 시작하다 읽기(엔); // 키보드에서 n 입력 for i := 1 to n do // 루프: 1에서 n까지 모든 i에 대해 - 변수 i는 1에서 n까지 순차적으로 값을 가져옵니다. writeln('Kvadrat chisla', i, '까마귀', i * i); // 숫자의 제곱을 특정 형식으로 출력하고 새 줄로 이동 끝. 루프에 들어갈 때 i := 1 문이 실행된 다음 각 단계마다 변수 i가 1(to)씩 증가합니다. 조건 i ≤ n이 참인 동안 루프가 실행됩니다. 루프 본문에서 유일한 출력 문은 지정된 형식에 따라 숫자 자체와 해당 사각형을 화면에 인쇄합니다.
제곱 또는 기타 낮은 지수의 경우 곱셈을 사용하는 것이 좋습니다.

프로그램을 실행하고 변수 n의 다른 값으로 작업 결과를 확인하십시오.