terça-feira, 3 de maio de 2011

Pascal - Comandos de Repetição - Enquanto, Para

Olá galera, neste post aprenderemos um pouco sobre "Enquanto" (while) e "Para" (for), então mão na massa.

Enquanto (while)

While (condição) do
begin
comando1;
comando2;
end;

tradução:

Enquanto (condição) faça
início
comando1;
comando2;
fim-enquanto;

o While só procede suas linhas de comando se a condição proposta pelo programado for true (verdadeira)

digamos que eu precise fazer um programa para uma empresa que leia 10 idades aleatóriamente (sem precisar guardá-las) dos filhos dos funcionários e no relatório dizer quantos são crianças, adolescentes e adultos.

uma pessoa (não um programa) pensaria assim:
enquanto eu ainda não obtiver os 10 números (idades) então vou continuar perguntando aos pais e continuar classificando a idade do filho dele, e quando eu finalmente acabar, vou ver quantas crianças, adolescentes e adultos tem na pesquisa.

O programa "pensará" da mesma forma, e como seria, Tio Joker? Fácil, apensa acompanhe e entenda os comentários
primeiramente as variáveis:
eu vou precisar uma para guardar o valor da idade então criaremos uma variável chamada idade
após saber a idade e ela será do tipo integer (inteiro) pois apenas irei querer saber os anos (nada de número quebrado, ou seja, com vírgula), vou precisar classificá-la, então vou criar 3 variáveis, uma para cada classificação, e chamarei-as de criancas , adolescentes e adultos, e por ultimo porem não menos importante precisaremos de um contador, que indicará se ja contei as 10 idades, chamaremos a variável de cont .

nossas variáveis então serão
Program idade;
var
idade,criancas,adolescentes,adultos,cont:integer; //declarei minhas variáveis como tipo inteiro.

após declarar nossas variáveis, o que faremos?
agora entrará a parte do "enquanto"
a frase a ser traduzida para o programa é: "enquanto eu ainda não obtiver os 10 números..."
no programa ficará:

cont := 1 //declaro um valor ao cont para que ele possa entrar no "enquanto"
while cont <= 10 do //enquato cont <= 10 então...
begin
comandos
end;

pronto, agora o programa só sairá do while se o número que esta no cont for maior que 10
então se não colocarmos que cont receberá +1 (cont := cont + 1;) sempre que ler uma idade, o programa nunca acabará, logo deveremos acrescentar essa linha de comando antes do end;

cont := 1
while cont <= 10 do
begin
comandos
cont := cont + 1;
end;

agora deveremos colocar os comandos para lerem as idades

cont := 1
while cont <= 10 do
begin
writeln('Qual a idade?');
read(idade);
cont := cont + 1;
end;

agora que lemos a idade, deveremos classificar a pessoa em criança, adolescente ou adulto

cont := 1;
while cont <= 10 do
begin
writeln('Qual a idade?');
read(idade);
if (idade < 13) then
begin
criancas := criancas + 1;
end
else if (idade < 18) then
begin
adolescentes := adolescentes + 1;
end
else adultos := adultos + 1;
cont := cont + 1;
end;

óooo, mas espere manolo, ta faltando alguma coisa não é?

sim, esta faltando caro leigo. como uma variável vai receber ela + 1 se ela não tem valor?

então deveremos acrescentar mais três linhas antes do while ficando assim:

cont := 1;
criancas := 0;
adolescentes := 0;
adultos := 0;
while cont <= 10 do
begin
writeln('Qual a idade?');
read(idade);
if (idade < 13) then
begin
criancas := criancas + 1;
end
else if (idade < 18) then
begin
adolescentes := adolescentes + 1;
end
else adultos := adultos + 1;
cont := cont + 1;
end;

pera ae manolo-man, como ela recebe 0??? RIARIAIRAIRAIRIARAI você é burro!!!1!!

caro iniciante, como você está começando a contar quantos tem, você tem que começar do 0, não acha?

e Pq o cont tem que começar do 1 então? ein ein ein??? responde essa !!!1!!

o cont não precisa começar do 1, ele pode começar do 53679, mas ai o while deverá ser <= 53689
o programa precisa ler 10 idades, não importa de quanto a quanto eu conto, mas tem que ser 10!

agora como vou precisar dizer quantas crianças, adolescentes e adultos tem, vou ter que começar do 0

ae titio joker, se você escreve criança certo, pq no programa tu escreveu crianca? tu é idiota?

nenhuma linguagem de programação (que eu conheça) aceita acentos e caracteres especiais ☺

terminando a parte do while, vou precisar imprimir quantas crianças, adolescentes e adultos tem, certo?

então depois do while, a unica linha que vou precisar adicionar é:
write('existem ',criancas,' crianças,',adolescentes,' adolescentes e ',adultos,' adultos');

estudem essa parte da programação, ela será muito (MUITO MESMO) útil!

código fonte no final do tutorial.

Para (for)

For x := 1 to 10 do // Para que var de 1 até 10 faça
begin
comandos
comandos
end;

O For tem o mesmo propósito do While , porem ele só serve para números(integer e real) o while pode servir para String e Boolean)

então titio jo-joker, o que me faz usar For ao invés de While?????

primeiramente, você reduzirá algumas linhas (2 nesse caso) na programação, fazendo seu código-fonte ficar mais bonito e apresentável.

quais as linhas que mudam manolo????

aqui está meu caro:

cont := 1; // essa linha pode sair, ja que o programa ja atribui um número a variável
criancas := 0;
adolescentes := 0;
adultos := 0;
for cont := 1 to 10 do // essa linha muda
begin
writeln('Qual a idade?');
read(idade);
if (idade < 13) then
begin
criancas := criancas + 1;
end
else if (idade < 18) then
begin
adolescentes := adolescentes + 1;
end
else adultos := adultos + 1;
cont := cont + 1; // essa linha também será descartada
end;

resumindo, o For ja atribui um número a variável (For cont := 1 to 10 do) e não precisará fazer a adição ao número, ja que a variável irá de x até y (For cont := 1 to 10 do cont de 1 a 10)

em questão de aparência e simplicidade o For ganha, mas em questão de utilidade, o While é melhor, na minha opinião.




e aqui acaba nosso tutorial sobre os repetitivos While e For


Nenhum comentário:

Postar um comentário

Obrigado pelo seu comentário!
Ele está sujeito à aprovação antes de ser aceito, portanto, manere.