ciclos. Loop com parâmetro (for)


Imagine uma situação em que precisamos exibir a mesma palavra na tela, digamos a palavra "HELLO", 10 vezes. O que devemos fazer?
Você pode pegar e escrever o comando 10 vezes writeln('HELLO');

Mas e se você precisar não 10 vezes, mas 20, 30, 40 vezes? E se 200 vezes? Nesse caso, a cópia levará muito tempo. E se for necessário que o usuário possa escolher quantas vezes deseja exibir as informações na tela? 

Para lidar com essa tarefa, podemos usar uma construção especial chamada LOOP

Um loop é uma construção algorítmica na qual uma determinada sequência de comandos é repetida várias vezes.


Na linguagem de programação Pascal, existem dois tipos de loops: um loop com uma variável (for) e um loop com uma condição (while)

Vamos começar nosso conhecimento dos ciclos do primeiro tipo.

LOOP COM VARIÁVEL OU COM NÚMERO CONHECIDO DE PASSOS (FOR)

Muitas vezes, sabemos o número de repetições de algumas ações ou podemos calcular o número de repetições usando os dados que conhecemos. Algumas linguagens de programação possuem um comando que em russo soa como REPEAT (número de vezes) - ou seja, podemos especificar o número exato de repetições. 

É interessante ver como esse ciclo funciona no nível da máquina:
1. uma determinada célula de memória é alocada na memória e o número de repetições é gravado nela,
2. quando o programa executa o corpo do loop uma vez, o conteúdo desta célula (contador) é decrementado em um.
3. a execução do loop termina quando esta célula é zero.

Na linguagem de programação Pascal, não existe essa construção, mas existe uma construção para.  

A forma geral da instrução de loop for é a seguinte: para *start value* to *end value* faça começar /*uma instrução ou bloco de instruções - corpo do loop*/; fim; Esta construção exige que
1. alocou explicitamente uma célula de memória, que será um contador, e defina seu valor inicial
2. Especifique como o valor nesta célula será alterado.
3. foi escrita uma condição sob a qual o corpo do loop será executado

Na parte prática, tentaremos exibir a palavra Hello 10 vezes. Nas tarefas a seguir, analisaremos essa construção com mais detalhes.

Um loop for é um meio de percorrer ações repetidas. Vamos dar uma olhada em como isso funciona.

Normalmente, as partes de um loop for executam as seguintes etapas: 
1. Defina o valor inicial. 
2. Definir o passo com o qual a variável do loop mudará
3. Configurando o valor final.
3. Execute ações de loop. 
4. Atualize o(s) valor(es) usado(s) no teste. 
e então as etapas 2-4 são repetidas até que a condição seja satisfeita. Assim que a condição se tornar falsa, o loop termina e a instrução após a instrução do loop for é executada.

Vamos retornar à forma geral da instrução de loop e analisar com mais detalhes todas as partes for *set initial value to variable* to/downto *end value* comece /*uma instrução ou bloco de instruções - corpo do loop*/; fim;

Definindo uma variável para um valor inicial

é responsável por definir o valor inicial da variável do ciclo (contador), NÃO é destacado com colchetes ou qualquer outra coisa
Por exemplo : i := 0; //a variável do ciclo i recebe o valor inicial igual a zero. Com tal registro, //variável i deve ser declarada antes do loop para/para baixo Esta é a etapa na qual a variável usada no loop será alterada. Se escrevermos para, a cada iteração o valor da variável aumentará em 1, se para baixo - diminua em 1 Valor final é o último valor no qual o corpo do loop ainda será executado. Por exemplo, se definirmos o último valor como 100, em 100 nosso loop ainda será executado e em 101 não. Vamos praticar escrevendo o título do loop for

A cabeça de um loop for em Pascal consiste em várias partes:
1) a palavra para
2) qual variável e qual valor estamos atribuindo. Neste programa, é b := 1, ou seja, atribuímos o valor 1 a b.
3) a palavra to ou downto, que indica a etapa com a qual o loop é executado. Se escrevermos para, a variável aumentará em 1 a cada iteração, se for para baixo, diminuirá em 1.
4) valor final da variável
5) palavra do
6) a palavra  begin  (pode ser omitida se houver apenas uma linha no corpo do loop, caso contrário, deve ser escrita. Se você não escrever begin, apenas a primeira linha será ser executado a partir de todo o corpo do loop). Não vamos esquecer depois do corpo do loop, se escrevermos a palavra begin, escreva a palavra end; !

Todos os programas com um loop for que escrevemos até agora não podem ser chamados de universais. Porque nós mesmos definimos o número de repetições do corpo do loop. 
Mas e se o número de repetições depender de algum outro valor? Por exemplo, o próprio usuário deseja definir o número de repetições do ciclo.
O que fazer neste caso?
Tudo é muito simples. Em vez de valores iniciais e finais numéricos, podemos usar quaisquer variáveis ​​que possam ser calculadas ou definidas pelo usuário.

Por exemplo, precisamos exibir os quadrados dos números de 1 a n, onde o valor da variável n é digitado no teclado pelo usuário.
O programa ficará assim:
  var i, n :inteiro; // em colisão; variável de loop, n - o número máximo para o qual calculamos o quadrado começar ler(n); // insere n do teclado for i := 1 to n do // loop: for all i from 1 to n - variável i assumirá sequencialmente valores de 1 a n writeln('Kvadrat chisla ', i, ' raven ', i * i); // Emitindo o quadrado de um número em um formato específico e movendo para uma nova linha fim. Ao entrar no loop, a instrução i := 1 é executada e, em seguida, a variável i é incrementada em um (to) a cada etapa. O loop é executado enquanto a condição i <= n for verdadeira. No corpo do loop, a única instrução de saída imprime o próprio número e seu quadrado na tela de acordo com o formato especificado.
Para elevar ao quadrado ou outros expoentes baixos, é melhor usar a multiplicação.

Execute o programa e veja o resultado de seu trabalho com diferentes valores da variável n.