Seguidores

domingo, 24 de março de 2013

INTRODUÇÃO VETOR E MATRIZ (ARRAYS)

Hey hey programadores, vamos entrar em um assunto que assombra muitas pessoas, por isso vamos até a cozinha pegar aquele pacote de bolacha água e sal que já esta quase vencendo, aquela sua caneca personalizada super maneira e encha de café, coloque as pantufas, se arrume na poltrona, coloque aquele som maneiro e vamos aprender...
Para entender Arrays é necessário prestar muita atenção, pois qualquer interpretação errônea pode causar muita dor de cabeça, vamos deixar as explicações o mais simples possível para melhor entendimento.
Mas agora você deve estar ai molhando a bolacha no café perguntando, mas que diabos são Arrays? Pois eu te digo que eles são:
Arrays são arranjos, para facilitar vamos chamar os arranjos de tabelas. Essas tabelas podem ser de 2 tipos, tabela unidimensional (vetor) e tabela bidimensional (matriz). Agora vamos começar a entender melhor, pois vou explicar cada tipo de arranjo separado.

Vetor (Tabela unidimensional)

O vetor é uma tabela que pode se expandir em única dimensão, no caso da programação em pascal ele se expande em colunas, jamais em linhas, vamos ver um exemplo de vetor:



Como podemos ver o vetor é uma tabela de varias colunas e uma linha (n x 1).
O encontro de uma linha com uma coluna, chamamos de célula e cada uma delas pode guardar um dado como no exemplo abaixo:

A célula pineal deve estar a todo vapor perguntando, mas como faço para pegar um dentro de um vetor se os dados estão dentro de células. Pois bem vou explicar.
Para identificar cada célula de um vetor utilizamos índices, ou seja, numeramos cada célula, assim conseguimos busca o dado correspondente. Exemplo:

Agora ficou bem mais fácil pegar um dado dentro do vetor, vamos supor que precisaríamos pegar a letra “G”, então iria ao índice de numero “7” e acharíamos a letra que procuramos. Se quisermos pegar a letra “C” iríamos ao índice de numero “3” e assim por diante, os dados que ficam dentro do vetor não interfere no índice.
Em um programa podemos utilizar vários vetores.
Vamos esticar os ossos, reabastecer a caneca personalizada, ir bathroom e vamos aos exemplos de matriz.

Matriz (Tabela Bidimensional)

A matriz é uma tabela que pode se expandir em duas dimensões, ou seja, ela vai se expandir tanto em colunas como em linhas, abaixo um exemplo de matriz:

Podemos perceber que a matriz é uma tabela com varias colunas e varias linhas (n x n).
Assim como no vetor temos o encontro de linhas com colunas (células) onde são guardados os dados:

Agora você deve ter visto a tabela matriz e espirrado café no teclado e perguntado, mas uma matriz é um conjunto de vetores,  como vou identificar que em tal coluna é aquele dado que eu quero usar.
Fácil, iremos utilizar novamente os índices, porem a célula é “numerada” conforme sua localização que será “coluna x linha”. Exemplo:


Agora tudo ficou mais claro, não é mesmo? Se formos pegar a letra “Q” por exemplo, nós vamos indicar a coluna depois a linha, neste caso coluna 7 linha 2. Então na célula 7x2 esta a letra “Q”.
Em um programa podemos utilizar varias matrizes e ate mesmo utilizar vetores neste mesmo programa.

Bem amigos programadores, ficamos por aqui com nossa introdução de Arrays, logo mais iremos entrar em algo mais prático, como utilizar os Arrays no pascal, como montara a sintaxe e onde o podemos utilizar.
Um grande abraço e até a próxima
Continue Lendo...

sábado, 16 de março de 2013

TOMADA DE DECISÃO #2 - Função CASE

Fala jovens garotos.., e garotas é claro. ‘:) Vamos dar continuidade a postagem que comecei a duas postagens atrás que foi sobre tomada de decisão. Bom, não será bem uma continuação, pois na oportunidade falamos sobre a função IF, agora, falaremos de uma função que tem a mesma semelhança de tomada de decisão. Imagine uma função que por meio da entrada de numero inteiro o programa ira fazer um comando e tomar um rumo. A função CASE funciona exatamente assim. Ai você vai pensar: “Brother.., a função IF não faz a mesma coisa” e eu lhe respondo jovens.. “Não.., não faz.”

Em termos a função IF toma uma decisão e escolhe o seu rumo conforme a sua resposta, o programa continua de duas formas, ou segue o caminho de forma verdadeira ou segue de forma falsa.  Claro que existem formas de encadear uma função IF com a outra. Fazendo assim um numero de funções if’s para chegar a um determinado ponto do programa, no qual, o seu resultado é obtido.

A função case não funciona exatamente assim. Ela nos traz a facilidade de montar e até mesmo organizar a sua linguagem de programação. (Claro jovem, tudo isto dependendo da ocasião). A função CASE não realiza nenhum teste lógico por parâmetros igual IF e sim realiza testes por comandos. Si ela achar uma entrada de um comando igual ao que esta declarado dentro da função ela vai fazer com que apenas essa parte do programa seja executada, logo em seguida vai continuar com a o programa que esta fora da função CASE. O legal é que com ela podemos fazer o programa tomar um rumo simples ou mesmo um rumo mais complexo,isso irá depender da sua necessidade e de como vai usá-la. Dizem que uma imagem vale mais do que mil palavras..


Esse é um exemplo de fluxograma para a função CASE. Existem outros exemplos de fluxo, mas como nosso foco aqui é mão na massa na programação, vamos explicar melhor abaixo como a função funciona na sintaxe. Tentarei ser o mais breve possível, porém ela precisa de mais atenção que a função IF, então acomodasse na sua poltrona com o notebook, na sua cadeira com em frente ao seu pc ou no travesseiro que você jogou no chão gelado porque sua mãe ta lavando o tapete da sala para ler no seu tablet e venha programar. (y)’
Analisem a situação:

  • Vamos montar um programinha que faça diversos cálculos a partir de dois números que você entrar. Digamos que é algo como uma calculadora. Você terá que apresentar um cardápio contendo operações de soma, subtração, multiplicação e divisão.
Com a função IF que é a que conhecemos até agora, ele ficaria assim:

Program calculadora ;
var
 a,b,res:real; // declaração da variável dos dois números
 op:integer; // declaração da variável da operação
 Begin // inicio do programa
   writeln ('Digite o primeiro numero');
   readln(a);
   writeln('Digite o segundo numero');
   readln(b);
   clrscr; //comando para apagar as informações acima
   writeln('Digite o numero correspondente a operações abaixo. O que você quer fazer?');
   writeln(' ');
   writeln('1-Você quer somar'); // aqui esta o cardápio
   writeln('2-Você quer subtrair');
   writeln('3-Você quer multiplicar');
   writeln('4-Você quer dividir'); // terminando aqui o cardápio
   readln(op); // entrada da variável da operação
   res:=0; //resultado entra como valor zerado antes do processamento
  
   {Daqui para baixo começa o processamento para a operação para que o usuário escolher.
   É justamente ai jovem que começa toda a MER@#$#! na maioria das vezes. Olha a confusão a seguir}

    if (op=1) then // decisão para operação de soma
     begin // inicio da decisão de soma
      res:=a+b;
     end //fim da decisão de soma
    else // se não for soma
     begin //inicio da decisão se não for soma
       if (op=2) then // inicio da decisão de subtração
        begin //inicio da decisão de subtração
         res:=a-b;
        end //fim da decisão de subtração
       else // se não for subtração
        begin //inicio da decisão se não for subtração
         if (op=3) then // inicio da decisão de multiplicação
          begin //inicio da decisão de multiplicação
           res:=a*b;
          end //fim da decisão de multiplicação
         else //se não for multiplicação pela logica de if só pode ser divisão então ...
          begin //inicio da decisão de divisão
           res:=a/b;
          end; //fim da decisão de divisão
                   
        end; // fim da decisão de subtração
        
     end; // fim da decisão de soma
    
  {Fim do processamento da operação escolhida}
 
  writeln('O resultado da operação é ',res:5:2);  // mostrando o resultado final.
 End.

Olha só jovem.. Que.. Quee... trampoo de fazer tudo isso. O programa funciona perfeitamente claro.. Mas olha o quanto confuso ele fica. É begin .. depois end; ai vem else .. depois outro begin já abrindo outro IF dentro depois abrindo Begin de novo.. e assim vai indo.. conforme o código acima.

Percebe.. Por mais bom que você seja e por mais que isso funcione , uma hora você vai acabar se enrolado.. fechando um end antes da hora, enfim.

Olha só como que fica mais simples se usarmos a função CASE:


Program calculadora ;
var
 a,b,res:real;// declaração da variável dos dois números
 op:integer;// declaração da variável da operação
 Begin
   writeln ('Digite o primeiro numero');
   readln(a);
   writeln('Digite o segundo numero');
   readln(b);
   clrscr; //comando para apagar as informações acima
   writeln('Digite o numero correspondente a operações abaixo. O que voc quer fazer?');
   writeln(' ');
   writeln('1-VocÊ quer somar');
   writeln('2-Você quer subtrair');
   writeln('3-VocÊ quer multiplicar');
   writeln('4-Você quer dividir');
   readln(op);// entrada da variável da operação
res:=0; //resultado entra como valor zerado antes do processamento

 {Notem a facilidade abaixo jovem}
  
 Case op of // CASO op (operação) for // INICIO do CASE
  
   1:begin {inicio caso o usuário digitar 1}
      res:=a+b;
     end;  {fim caso o usuário digitar 1}
    
   2:begin {inicio caso o usuário digitar 2}
      res:=a-b;
     end;  {fim caso o usuário digitar 2}
    
   3:begin {inicio caso o usuário digitar 3}
      res:=a*b;
                end;  {fim caso o usuário digitar 3}
               
   4:begin {inicio caso o usuário digitar 4}
      res:=a/b;
                end;  {fim caso o usuário digitar 4}

 end; // FIM do CASE {é extremamente importante de fechar o CASE nesse caso não precisamos colocar begin}

   writeln('O resultado da operação escolhida é ',res:5:2); // mostrar o resultado
End.

Putz.. Sensacional hein. Funciona da mesma forma que o IF, mas notem como fica mais simples montar o programa.., entender a lógica..
Não existe um limite para o numero de coisas que deseja fazer com a função.. nesse meu exemplo usei apenas 4, mas poderia ser usada 5, 10, 20 .. depende da sua necessidade... e da sua paciência é claro. Kkkk
É importante ressaltar que a função só funciona com a entrada de um numero inteiro para a condição. Pois só assim o programa vai identificar a qual rumo ele deve tomar. Caso nenhuma das operações for escolhida o programa não ira executar nenhum dos cases e vai continuar com o programa normalmente. Nesse exemplo de Case que coloquei se colocar um numero diferente de 1, 2, 3 e 4 o programa irá mostrar um resultado zerado no final.. pois, declarei que res (resultado) recebe zero antes de processar o programa. Agora se no na função IF voc fizer isso nesse exemplo que coloquei advinha o que ele irá fazer..
Siiiiiiim jovem. Ele vai dividir. Justamente por conta dessa simples parte:
      

         if (op=3) then // inicio da decisão de multiplicação
          begin //inicio da decisão de multiplicação
           res:=a*b;
          end //fim da decisão de multiplicação
         else //se não for multiplicação pela lógica de if só pode ser divisão então ...
          begin //inicio da decisão de divisão
           res:=a/b;
          end; //fim da decisão de divisão

Entendeu a sacada. Se qualquer outro numero diferente de 1, 2 ou 3 entrar nesse exemplo de IF ele irá fazer a operação de divisão. Claro q da para corrigir isso. Com laços de repetição que fazem o programa voltar caso o usuário não digite nenhuma das opções desejadas, mas isso é assunto para outra postagem mais breve ;) .
Bom galera, espero que tenham gostado da leitura. Tentei explicar ao máximo como que funciona a função CASE é quais as suas diferenças entre IF. Gostou seja um de nossos membros e curtam a nossa fanpage do Facebook. Lá você pode ver quando postamos algo de novo aqui no blog e temos alguns desafios legais para resolver. Tudo isso jovem ajuda na divulgação e na valorização do nosso trabalho. Certo.. Da uma brincada com os programas acima, façam o download do CASE e o download  de IF. Ok, Valew, até mais!
Continue Lendo...