Olá mundo, agora vamos falar de um ponto muito importante, os comando de repetição, vão nos auxiliar em deixar o código menor.
Em alguns momentos precisamos repetir alguns processos no programa, ao invés de ficar escrevendo linha por linha um comando que vai ser repetido 10,15 vezes.
Utilizaremos os laços de repetição que no pascal são:
For= Para, Repeat=Repita, While=enquanto.
Laço For (para)
O laço for (para) podemos dizer que usamos na maioria das vezes, por se tratar de um que tem uma variável de controle, determinando assim o numero de vezes que será executado.
Exemplo:
Program lacofor ;
var
x,numero:integer;
//esse programa tem a função de receber um numero inteiro e somar esse numero +1 cinco vezes.
Begin
writeln('digite um numero inteiro');
read(numero);
for x:=1 to 5 do
begin
numero:=numero+1;
end;
write('o numero digitado +5 é ', numero);
End.
No programa acima temos a execução do laço for que para ser criado precisamos ter bem claro três coisas.
A sintaxe do laço For(para) x:=1 to(ate) 5 do(faça).
A criação da variável de controle no caso é o X.
E sempre indicar onde começa(begin) e onde termina(end;) as instruções que serão repetidas.
Quando falamos em variável de controle podemos fazer como no exemplo anterior que definimos quando estamos escrevendo o código ou colocamos na mão do usuário que vai inserir quantas vezes ele quer que o laço seja repetido.
Exemplo:
Program lacofor1 ;
const
y=1;//definimos o valor que vai ser somado com a variavel de controle X.
var
fimdolaco,soma,x:integer;
Begin
writeln('digite o numero que o laço deve parar (exemplo:1,2,3...500)') ;
read(fimdolaco);
// acima definimos onde vai ser o fim do laço.
For x:=comecodolaco to fimdolaco do //a variável x recebe o valor inserido como" começo do laco " e vai ate o valor definido para a variável " fim do laço "
begin
soma:=x+y;
writeln(y,'+',x,'=' ,soma );
delay(1000); //a função de delay significa que a execução sofrera um atrasa , o delay é calculado em milesegundo ou seja para se ter um atrasa de 1 segundo colocamos o delay de 1000 milesegundos equivalente a 1 segundo.
end;
end;
writeln('o valor final da soma é:',soma);
End.
Como pudemos ver nesse programa definimos quantas vezes o laço vai ser utilizado ,inserindo o numero de vezes via teclado.
Program lacofor2 ;
const
y=1;//definimos o valor que vai ser somado com a variavel de controle X.
x=1;//valor que vai controlar o laço.
var
comecolaco,subtracao:integer;
Begin
writeln('subtração lembrando que o valor sempre será subtraído por’,y ,’digite um numero (500,600...10)') ;
read(comecolaco);
// aqui definimos o inicio do laço porem com um grande diferencial o programa vai iniciar a com o contador e sempre subtraindo o valor digitado ate chegar ao valor de 'X'
For comecolaco:=comecolaco downto x do //quando usamos o downto(dessa até) significa que queremos fazer o caminho inverso do to(até) como se tirássemos 1 sempre da variável de controle nesse caso o começo do laço
begin
subtracao:=comecolaco-y;
writeln(comecolaco,'-',x,'=' ,subtracao );
delay(1000); //a função de delay significa que a execução sofrera um atrasa , o delay é calculado em milesegundo ou seja para se ter um atrasa de 1 segundo colocamos o delay de 1000 milesegundos equivalente a 1 segundo.
end;
writeln('');
writeln('o valor final da subtraçao é:',subtracao);
End.
Nesse programa pudemos ver que na execução e ele se comportou de forma diferente ,foi de forma decrescente ate o final do laço graças ao downto( dessa até). (depois faça o seguinte teste , ao invés começar com a variavel de controle com o numero 1 coloque a variavel recebendo 0 e veja o resultado)Laço While(enquanto)Um laço que só ira executar as instruções abaixo enquanto a condição for falsa.O que significa que esse laço testa uma condição antes de executar as instruções.Exemplo:
Program lacowhile ;
var
numero,cont:integer;
//esse programa tem a função de receber um numero inteiro e somar esse numero +1 enquanto o numero for diferente de vinte.
Begin
writeln('digite um numero inteiro');
read(numero);
while(numero <> 20) do
begin
cont:=cont+1;
numero:=numero+1;
end;
write('o laço foi utilizado ',cont,' vezes');
End.
Como pudemos ver nesse exemplo executando em pascal ele só vai repetir os comandos se a condição for verdadeira, a partir do momento que for falsa ele não executa nenhuma ação no laço e parte para instrução seguinte.
Laço repeat(repita)
Também um laço que é dependente de uma condição porém ele só testa no final a condição, ou seja, ele é executado uma vez sempre.
Exemplo:
Program Pzim ;
var
desligado:boolean;
x,cont:integer;
//esse programa só vai parar de somar x quando uma tecla for pressionada.
Begin
Repeat
cont:=cont+1;
if(not keypressed)then
begin
x:=x+1;
writeln('valor de x= ',x,' para sair pressione uma tecla');
desligado:=false;
end ;
if ( keypressed) then
begin
desligado:=true ;
end;
until(desligado=true);
writeln('contador: ',cont);
End.
Na execução do programa acima ele vai repetir as informações até que seja pressionada alguma tecla, se não for pressionada nenhuma tecla o laço permanecera “ligado”.
A função auxiliar keypress uma função nativa do pascal, determina se uma tecla foi pressionada ou não ,ela é do tipo boolean .seguindo o mesmo padrão de “ligado” ou “desligado”
Testem a utilização desses laços exercitem bastante, pois são estruturas que ajudam muito no desenvolvimento em geral.
Nenhum comentário:
Postar um comentário
Os comentários feitos no Compiler são moderados. Antes de escrever, observe as regras e seja criterioso ao expressar sua opinião. Não serão publicados comentários nas seguintes situações:
1. Sem o remetente identificado com nome (Não serão aceitos anônimos).
2. Que não tenham relação clara com o conteúdo noticiado (Principalmente o First).
3. Que tenham teor calunioso, difamatório, injurioso, racista, de incitação à violência ou a qualquer ilegalidade.
4. Que tenham conteúdo que possa ser interpretado como de caráter preconceituoso ou discriminatório a pessoa ou grupo de pessoas.
5. Que contenham linguagem grosseira, obscena e/ou pornográfica.
6. Que transpareçam cunho comercial ou ainda que sejam pertencentes a correntes de qualquer espécie.
7. Que tenham característica de prática de spam.
O Compiler.Pas não se responsabiliza pelos comentários dos internautas e se reserva o direito de, a qualquer tempo, e a seu exclusivo critério, retirar qualquer comentário que possa ser considerado contrário às regras definidas acima