Seguidores

terça-feira, 29 de janeiro de 2013

LAÇOS DE REPETIÇÃO


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.

Continue Lendo...

segunda-feira, 21 de janeiro de 2013

OPERADORES LÓGICOS E OPERADORES RELACIONAIS

Olá programador (a), vamos preparar vossa massa cinzenta para mais uma aula, agora que sabemos utilizar os operadores aritméticos e conhecemos por cima os operadores relacionais, vamos nos aprofundar nos operadores relacionais e aprender os operadores lógicos.

Vamos tratar primeiramente dos operadores relacionais que já tivemos conhecimento na postagem de tomada de decisão.
Os Operadores Relacionais são símbolos que mostram a relação entre dois elementos. Esses operadores são:


Vamos montar um programa fácil de fazer e compreender, o programa ira pedir dois números e ele vai indicar qual o maior e qual é o menor ou se os números são iguais, para isso ser possível utilizaremos alguns operadores lógicos e tomada de decisão.
O programa fica da seguinte forma:

Program maior_menor; {nome do programa}
Var
n1,n2:integer; {as variáveis que vamos usar para receber os numeros}
Begin
{entrada do primeiro numero}
Writeln('Entre com o primeiro numero');
Readln(n1);
{entrada do segundo numero}
Writeln('Entre com o segundo numero');
Readln(n2);
{Agora usar tomada de decisão para saber qual é maior ou qual é menor}
IF n1 > n2 then  {verifica se é maior}
Begin
Writeln(n1,' é maior que ',n2);
end
                Else
                Begin
                      IF n1 < n2 then {verifica se é menor}
                      Begin
                      Writeln(n1,' é menor que ',n2);
                       End
                            Else {se nao for maior, nem menor so pode ser igual}
                                   begin
                                    writeln(n1,' é igual a ',n2);
                                    end;
                end;
end.


Os operadores relacionais podem ser usados em outros comandos que pedem funções por exemplo os laços de repetição repeat e while (serão ensinados na próxima postagem).
Agora vamos falar dos operadores lógicos.
Operadores lógicos são conectivos  usados na formação de novas preposições a partir de outra já conhecida.


Os operadores lógicos são:
Vamos montar um programa que o funcionário para ganhar um bônus precisa vender acima de 100 reais e não ter falta durante o mês. Para isso precisaremos dos operadores lógicos, relacionais e tomada de decisão.
O programa fica:


Program logico;Var
{declarado as variáveis}
venda:real;
falta:integer;
Begin

{recebe o valor da venda mensal} 
Writeln('Qual o valor da venda mensal');<>

Readln(venda);

{recebe a quantidade de faltas}                                 
Writeln('Quantidade de faltas');
Readln(falta);
                {Se venda menor que 100 ou falta diferente de zero}               
                IF (venda < 100) or (falta <> 0 )then {colocamos parênteses para separar as expressões}
                Begin                    
                {caso positivo imprime}                    
                Writeln('não ganha bônus');
                End
                               Else
                               Begin                    
                               {caso negativo imprime}                  
                               Writeln('Ganha Bonus');
                               End;
End.

Nesse programa utilizamos alem dos operadores relacionais diferente “<>” e menor “<”, utilizamos também o operador lógico “or”.
O operador lógico “or” ele vai ser verdadeiro quando uma ou outra condição for verdadeira.

Como cada um tem um jeito de pensar, esse programa pode ter o mesmo resultado com outra lógica, vamos ver como fica o programa.




Program logico;Var
{declarado as variáveis}
venda:real;
falta:integer;
Begin

{recebe o valor da venda mensal} </

Writeln('Qual o valor da venda mensal');
Readln(venda);
{recebe a quantidade de faltas}                                 
Writeln('Quantidade de faltas');
Readln(falta);
                {Se venda maior/igual que 100 e falta igual a zero}                  
                IF (venda >=100) and (falta = 0 )then {colocamos parênteses para separar as expressões}
                Begin                    
                {caso positivo imprime}                    
                Writeln('ganha bônus');
                End
                               Else
                               Begin                    
                               {caso negativo imprime}                  
                               Writeln('não ganha Bônus');
                               End;
End.

Agora utilizamos os operadores relacionais maior ou igual “>=” e igual “=” e o operador lógico “and”, mudamos os operadores mas ainda tivemos o mesmo resultado esperado.


O operador “and” será verdadeiro quando as duas condições forem verdadeiras.
Temos também um operador lógico que chamado “not”, ele expressa a negação de uma condição, porem essa condição tem que ser booleana (verdadeira ou falsa), como essa expressão é usa em partes bem especifica, não vamos montar uma programa para explicar ela, porem ao decorre das postagens esse operador poderá aparece em nossos programas.


Exemplo de uso de “not”:
Antes do comando keypressed (tecla apertada), que fica not keypressed (tecla na apertada), antes do comando true (verdade), que fica not true (não verdadeiro ou falso), antes do false (falso), que fica not false (não falso ou verdadeiro) e antes do eof ([end of file] fim do arquivo), que fica not eof (arquivo não finalizado). Podem aparecer outras expressões com not, mas essas são as mais utilizadas.
Bem pessoal por hoje ficamos por aqui, porem não se acanhem está com duvida, quer elogiar ou dar uma sugestão? Entre em contato ^^.


Ate a próxima pessoal, fiquem na paz!

Continue Lendo...

terça-feira, 15 de janeiro de 2013

TOMADA DE DECISÃO #1 - Função IF

Heey! Voltando aqui para explicar para vocês mais uma função. Vamos entrar agora no assunto de tomada de decisão no Pascal. O assunto é abrangente e vou explicar o máximo possível. Então relaxa jovem, da uma pausa na leitura.., vá no armário da cozinha pegue dois pedaços do pão.., vá na geladeira.. corte uma fatia de presunto com queijo.. Prepare aew o seu Misto Quente é vamos aprender.

Hoje galera, iremos aprender a função IF. A função é bem parecida com a função “Se” que é existente no programa do Excel da Microsoft. A ideia dela é a mesma: Estabelecer uma condição onde se ela for verdadeira irá fazer um seguinte procedimento ou se a condição for falsa e irá prevalecer outro procedimento. Todo esse processo é conhecido como Tomada de Decisão.

A tomada de decisão consiste num método de rumo ou escolha que o programa irá tomar. Teoricamente funciona como uma declaração que é feita em forma de pergunta e dependendo da resposta a tomada de decisão é feita e o programa toma o rumo dessa decisão. Ficou difícil? Leva para o seu dia a dia.

Por inúmeras vezes você toma inúmeras decisões. Todas elas dependem muito da resposta que você obtém. Na linguagem de programação funciona da mesma forma. Toda a linguagem tem uma função em forma de decisão. No Pascal é a IF.

Como de já de costume vou mostrar como seria a função IF em fluxograma:



  
Havia dito a função IF de Pascal é muito parecida com a SE     do Excel.     Possuem a mesma ideia, mas tem estruturas diferentes. A estrutura da função se no Excel é dada da seguinte forma:

=SE(Teste_Logico;[Valor_se_Verdadeiro];[Valor_se_Falso])

Sendo que:

Teste_logico é onde você declara que condição quer que se leve em consideração;

Valor_se_Verdadeiro é onde você declara o que o programa (no caso do Excel é a célula) irá proceder se o resultado da condição for verdadeiro.

Valor_se_Falso é onde você declara o que a célula irá proceder se o resultado da condição for não for verdadeira.

Aqueles que já trabalham, vivenciam ou conhecem esta função no Excel não sentirá tanta dificuldade como que funciona a função IF.

É fundamental na tomada de decisão que conhecemos antes alguns fatores, sendo ele um dos cruciais os Operadores relacionais. Que são fatores que relacionam, no caso do IF, uma condição a uma variável ou constante. Lembramos que os operadores relacionais serão frisados mais a frente, em uma postagem futura. Sigam o exemplo da tabela dos operadores relacionais:

Maior que
Menor que
=
Igual a
>=
Maior ou igual
<=
Menor ou igual
<> 
Diferente


Bom agora que sabemos basicamente como a função funciona, vejamos agora o modelo da função IF de Pascal:

IF (condição) then

(A partir dessa linha de programação você da seqüência ao programa caso a
condição seja verdadeira, ou seja, o que o programa ira fazer se a condição
for atendida.)

Else (else é o que separa a condição verdadeira da falsa)

(A partir dessa linha de programação você da seqüência ao programa caso a
condição seja falsa, ou seja, o que o programa ira fazer se a condição
não for atendida.)

Perceba que esse modelo não possui ainda nenhuma condição estabelecida pelo motivo de não termos pergunta para ele ainda. Para explicar isso melhor vamos ver na pratica como isso funciona, montando um programa simples.
Vamos montar um programa no qual:


  •          Aparecerá a mensagem “Digite a nota do aluno:”
  •          Eu irei entrar com a nota de um aluno
  •          E se essa nota for maior ou igual que 5 aparecerá a palavra “Aprovado” se não apareça “Reprovado”.
Vamos lá?

Program Nota ;

var
x:real;// Declaração de variável onde irei entrar com a nota
 Begin // INICIO
   writeln('Digite a nota do aluno: '); //aqui esta a frase para identificar que ira entrar com a nota
   readln(x);// aqui está a função de leitura da nota que você irá digitar

  // AQUI COMEÇAREMOS A TOMADA DE DECISÃO COM IF

  if {se} (x>=5) {variavel X for MAIOR OU IGUAL a 5} then {faça}
   writeln ('Aprovado') // aqui é o que o programa irá fazer se a condição for atendida
  else {senão faça isso}
   writeln ('Reprovado'); // aqui é o que o programa irá fazer se a condição NÃO for atendida 
 End. //FIM

Bom, vamos analisar agora. Percebemos que antes de qualquer coisa temos que declarar a variável para que possamos digitar a nota. Sabemos que uma nota escolar normalmente é quebrada (5,6; 8,9; 2,4), ou seja, no programa temos a necessidade de declarar esta variável como real. Bom feito isso vamos analisar o próximo passo:

writeln('Digite a nota do aluno: ');

 readln(x);

Esta parte do programa é o que ira identificar a Tomada de Decisão que ser feita em seguida. Sem seguida é onde “a pergunta é feita”

  if (x>=5) then

Isso significa que se o numero que nós digitamos for igual ou maior que o numero 5 então o programa ira fazer o seguinte:

writeln ('Aprovado')

else
writeln ('Reprovado');

Se a nota for maior ou igual a 5 ele mostrara a palavra aprovado. Em seguida notamos a palavra “ELSE” que é o que separa a condição verdadeira e falsa. É importante falar que NUNCA poderemos colocar “;” no final da linha anterior antes da palavra Else, pois o seu programa irá dar erro e não funcionará. Notem que não foi colocado no final de Writeln(‘Aprovado’).

É importante ressaltar que sempre é aconselhável colocar “BEGIN” e “END;” antes de cada decisão. Isso é aconselhável por que se tiver mais de uma ação a fazer conforme a decisão isso fará com que o programa também não funcione. Ou seja, se tivermos mais de uma linha de programação dentro do que o programa irá fazer dependendo da decisão.

Por exemplo, se no programa também fosse pedido que se o aluno for aprovado aparecerá também a palavra abaixo “Parabéns” e se ele for reprovado aparecesse a frase abaixo “Sinto Muito”, seriam dois procedimento e necessitaríamos de mais de uma linha de programação. Portanto a decisão ficaria assim:

IF (x>=5) then // condição
  begin // inicio do que o programa ira fazer se a condição for verdadeira
   writeln ('Aprovado');
    writeln (‘Parabéns’);
  end // fim do que o programa ira fazer se a condição for verdadeira. NOTE QUE ESTA SEM “;”
ELSE
begin // inicio do que o programa ira fazer se a condição for verdadeira
  writeln ('Reprovado');
  writeln (‘Sinto Muito’);
end; // inicio do que o programa ira fazer se a condição for verdadeira NOTE QUE ESTE SIM TEM “;”

É legal se sempre fizerem isto, pois, inúmeras vezes (ou na função IF ou não) irão usar mais de uma linha de programação depois de uma função de decisão. Isso mantém até mesmo o seu programa mais organizado.

Por hoje é isso, fechamos aqui a função IF, ela é bastante complexa e pode ser usada de inúmeras formas. Façam o download dopascalzim e testem a vontade. Gostou jovem ? Seja um dos nossos membros. Curta nossa fanpage do Facebook isso ajuda e valoriza nossas postagens. Faça o download do programa utilizado hoje. Duvidas estaremos à disposição. Ok, Valew, falow’s e até mais.!

Continue Lendo...