Você está aqui: Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes)

Verifique se as componentes de um vetor de 10 componentes inteiros lidos pelo teclado formam uma progressão aritmética - Lista de Exercícios Resolvidos de Java

Quantidade de visualizações: 1352 vezes
Exercício Resolvido de Java - Verifique se as componentes de um vetor de 10 componentes inteiros lidos pelo teclado formam uma progressão aritmética

Pergunta/Tarefa:

Verifique se as componentes de um vetor de 10 componentes inteiros lidos pelo teclado formam uma progressão aritmética, informando se sim ou se não. Caso forme, imprima o termo inicial e a razão.

Resposta/Solução:

Para a entrada do usuário, nós vamos usar um objeto da classe Scanner. Veja a resolução comentada:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

package arquivodecodigos;

import java.util.Scanner;

public class Estudos{
  public static void main(String[] args){
    // vamos usar a classe Scanner para leitura
    Scanner entrada = new Scanner(System.in);

    // declara e constrói um vetor de 10 inteiros
    int valores[] = new int[10];
    
    // vamos ler os valores dos elementos do vetor
    for(int i = 0; i < valores.length; i++){
      System.out.print("Informe o valor: ");
      valores[i] = Integer.parseInt(entrada.nextLine());
    }
    
    // já temos o vetor. Agora vamos verificar se temos
    // uma progressão geométrica
    boolean progressao = true;
    // vamos obter a razão
    int razao = valores[1] / (valores[0]);
    
    // vamos varrer os elementos do vetor e verificar se todos
    // possuem a mesma razão
    for(int i = 1; i < valores.length; i++){
      if((valores[i] / (valores[i - 1])) != razao){
        progressao = false;
        break;
      }
    }
    
    if(progressao){
      System.out.println("Formam uma progressão geométrica.");
      System.out.println("A razão é: " + razao);
      System.out.println("O primeiro termo é: " + valores[0]);
    }
    else{
      System.out.println("Não formam uma progressão geométrica.");
    }
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Informe o valor: 1
Informe o valor: 2
Informe o valor: 4
Informe o valor: 8
Informe o valor: 16
Informe o valor: 32
Informe o valor: 64
Informe o valor: 128
Informe o valor: 256
Informe o valor: 512
Formam uma progressão geométrica.
A razão é: 2
O primeiro termo é: 1

Link para compartilhar na Internet ou com seus amigos:

HTML5 ::: Aplicativos Completos ::: Programas de desenho, edição e visualização de imagens e fotos

Como criar um programa de desenho simples usando o objeto Canvas do HTML5

Quantidade de visualizações: 5150 vezes
Revisando alguns códigos que desenvolvi para clientes ao longo desses anos, encontrei um exemplo de um programa de desenho bem simples demonstrando as possibilidades gráficas do elemento Canvas do HTML. Este código foi escrito há uns dois anos e resolvi compartilhar com todos, para que vocês possam aprimorá-lo e acrescentar novas idéias, afinal, o HTML5 está mais atual do que nunca.

Veja o resultado no navegador:



Eu o escrevi de forma bem simples, sem usar jQuery ou qualquer outro framework, apenas JavaScript raiz mesmo, de forma que até os estudantes mais iniciantes não terão dificuldade de entender. Veja a listagem completa e com comentários:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<html>
<head>
<title>Desenhando no canvas do HTML5</title>
</head>

<body style="padding: 15px">

<b>Clique e arraste para desenhar</b><br><br>

<canvas id="quadro" style="border: 1px solid #666" 
  width="600" height="350"></canvas>

<br><br><button onClick="limpar()">Limpar</button>

<script type="text/javascript">
  // obtém uma referência ao canvas
  var quadro = document.getElementById('quadro');
  // vamos obter o contexto de desenho
  var areaDesenho = quadro.getContext("2d");
  
  // podemos desenhar?
  var podeDesenhar = false; // ainda não
  
  // vetores para guardar as posições x, y, e se o mouse está sendo
  // movimentado pressionado
  var vetorX = new Array();
  var vetorY = new Array();
  var vetorArrastar = new Array();
  
  // agora vamos adicionar na área de desenho um "ouvidor" de 
  // eventos mousedown, ou seja, vamos detectar quando o usuário
  // pressionar o botão do mouse (sem soltar) 
  quadro.addEventListener('mousedown', function(e){
    // podemos iniciar o desenho
    podeDesenhar = true;
    registrarClique(e.pageX - this.offsetLeft, e.pageY - this.offsetTop, false);
    desenhar(); // faça o desenho, moço
  });
  
  // o "ouvidor" de evento que detecta se o mouse está sendo arrastado
  // pressionado
  quadro.addEventListener('mousemove', function(e){	
    if(podeDesenhar){
      registrarClique(e.pageX - this.offsetLeft, e.pageY - 
        this.offsetTop, true);
      desenhar(); // faça o desenho, moço
    }
  });

  // o "ouvidor" de evento que detecta se o mouse foi liberado
  // e interrompe o desenho
  quadro.addEventListener('mouseup', function(e){	
    podeDesenhar = false;
  });

  // o mouse saiu da área de desenho?
  quadro.addEventListener('mouseleave', function(e){	
    podeDesenhar = false;
  });

  function registrarClique(x, y, arrastar){
    // aqui nós guardamos em vetores as posições x, y do clique ou
    // o movimento do mouse pressionado.
    vetorX.push(x);
    vetorY.push(y);
    vetorArrastar.push(arrastar);
  }
  
  // é aqui que a mágica ocorre
  function desenhar(){
    // primeiro vamos limpar o quadro de desenho
    areaDesenho.clearRect(0, 0, areaDesenho.canvas.width, 
      areaDesenho.canvas.height);
	
    areaDesenho.strokeStyle = "#5c5cd6"; // cor
    areaDesenho.lineJoin = "round"; // formato da junção de linha
    areaDesenho.lineWidth = 5; // largura da linha
			
    // percorremos os vetores, usando como base o vetor de coordenadas x
    for(var i = 0; i < vetorX.length; i++){		
      areaDesenho.beginPath(); // inicia o caminho
    
      // o mouse foi arrastado neste evento?
      if((vetorArrastar[i] == true && i > 0)){
        areaDesenho.moveTo(vetorX[i - 1], vetorY[i - 1]);
      }
      else{
        // é o início do desenho
        areaDesenho.moveTo(vetorX[i] - 1, vetorY[i]);
      }
     
      // desenha a linha do ponto X ao ponto Y  
      areaDesenho.lineTo(vetorX[i], vetorY[i]);
      // fecha o caminho
      areaDesenho.closePath();
      // conclui de fato o desenho
      areaDesenho.stroke();
    }  
  }
  
  // e aqui nós limpamos a área de desenho e esvaziamos os vetores
  function limpar(){
    areaDesenho.clearRect(0, 0, areaDesenho.canvas.width, 
      areaDesenho.canvas.height);
    vetorX = [];
    vetorY = [];
    vetorArrastar = [];
  }
</script>

</body>
</html>

Salve o código como "desenho.html" (cuidado para não salvar como "desenho.html.txt") e abra-o no seu navegador, remoto ou localmente. Você pode começar suas modificações alterando a cor do desenho, a largura da linha, etc. Você pode também deixar figuras pré-configuradas e até permitir que o usuário inclua fotos no Canvas.

Para os estudantes que já sabem Node.js, saiba que é possível enviar os três vetores via sockets em um ambiente real time para que outros usuários na rede vejam o seu desenho em tempo real. Bons estudos.


Firebird ::: Dicas & Truques ::: Strings e Caracteres

Como substituir valores em campos CHAR ou VARCHAR usando a função REPLACE() do Firebird

Quantidade de visualizações: 15407 vezes
A função REPLACE() do Firebird pode ser usada quando queremos substituir valores no conteúdo de um campo do tipo CHAR ou VARCHAR. Veja um exemplo de um comando SQL DML SELECT FROM no qual usamos a função REPLACE() para substituir todos os espaços por sublinhados (underline) em um campo chamado NOME de uma tabela CLIENTES:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

SELECT REPLACE(NOME, ' ', '_') FROM CLIENTES WHERE ID = 1;

Esta query exibirá o seguinte resultado:

REPLACE
OSMAR_J._SILVA
A função REPLACE() pode ser usada em DSQL (Dynamic SQL) e PSQL (Stored procedure and trigger language).


JavaScript ::: DOM (Document Object Model) ::: Navegação e Pesquisa de Nós (Nodes)

Como obter o tipo de um nó no DOM (Document Object Model) usando a propriedade nodeType a partir de seus códigos JavaScript

Quantidade de visualizações: 8147 vezes
Como obter o tipo de um nó no DOM (Document Object Model) usando a propriedade nodeType a partir de seus códigos JavaScript

A propriedade nodeType, definida no World Wide Web Consortium (W3C) Document Object Model (DOM) Level 1, pode ser usada quando precisamos obter o tipo de um determinado nó (node) na hierarquia de elementos HTML no DOM (Document Object Model). Esta propriedade retorna um valor inteiro indicando o tipo de nó sendo testado. Os valores mais comuns são 1 (nó elemento) e 3 (nó texto).

Veja uma página HTML na qual temos um parágrafo e um elemento span. Na primeira vez nós vamos obter uma referência ao parágrafo e testar o tipo do nó. Na segunda vez nós obtemos uma referência ao primeiro nó filho do elemento span, o que resultará em seu conteúdo sendo testado. Veja:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

<html>
<head>
<title>Estudos JavaScript</title>

<script type="text/javascript">
  function obterNodeType(){
    // vamos obter uma referência ao parágrafo com o id "paragrafo"
    var elem = document.getElementById("paragrafo");

    // vamos obter o tipo de nó deste elemento
    var tipo = elem.nodeType;

    // vamos mostrar o resultado
    window.alert("O tipo deste elemento é: " + tipo);
    
    // vamos obter uma referência ao span com o id "frase"
    elem = document.getElementById("frase");

    // vamos obter o tipo de nó do primeiro filho deste elemento
    tipo = elem.firstChild.nodeType;

    // vamos mostrar o resultado
    window.alert("O tipo deste elemento é: " + tipo);
  }  
</script>

</head>
<body>

<p id="paragrafo">Sou um parágrafo</p>

<span id="frase">Veja esta frase</span>

<br><button onclick="obterNodeType()">Obter tipo do nó (nodeType)</button>

</body>
</html>

Note que esta propriedade é somente-leitura, ou seja, não podemos modificar seu valor em tempo de execução.

A propriedade nodeType pode ser obtida a partir dos seguintes elementos: a, abbr, acronym, address, applet, area, b, base, basefont, bdo, bgsound, big, blink, blockquote, body, br, button, caption, center, cite, code, col, colgroup, comment, dd, del, dfn, dir, div, dl, dt, em, embed, fieldset, font, form, frame, frameset, h1, h2, h3, h4, h5, h6, head, hr, html, i, iframe, img, input:button, input:checkbox, input:file, input:hidden, input:image, input:password, input:radio, input:range, input:reset, input:search, input:submit, input:text, ins, isindex, kbd, keygen, label, legend, li, link, listing, map, marquee, menu, meta, nobr, noframes, noscript, object, ol, optgroup, option, p, param, plaintext, pre, q, rt, ruby, s, samp, script, select, small, span, strike, strong, style, sub, sup, table, tbody, td, textarea, tfoot, th, thead, title, tr, tt, u, ul, var, wbr, xml e xmp.

Esta dica foi escrita e testada no Internet Explorer 8 e Firefox 3.6.


Delphi ::: VCL - Visual Component Library ::: TStringGrid

Como usar o evento OnDrawCell para controlar o desenho das células em um TStringGrid do Delphi

Quantidade de visualizações: 15808 vezes
O evento OnDrawCell, definido originalmente na classe TCustomDrawGrid, é disparado quando uma determinada célula do TStringGrid precisa ser desenhada. Este evento possui a seguinte assinatura:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

property OnDrawCell: TDrawCellEvent;

O tipo Grids.TDrawCellEvent apresenta, no Delphi 2009, a seguinte lista de parâmetros:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

TDrawCellEvent = procedure(Sender: TObject; ACol, ARow: Longint; 
  Rect: TRect; State: TGridDrawState) of object;

Vamos ver cada um destes parâmetros separadamente:

Sender - Representa a grid na qual a célula está sendo desenhada;

ACol, ARow - Índices da coluna e linha na qual a célula está sendo desenhada;

Rect - Localização da célula na área de desenho (canvas);

State - Um objeto Grids.TGridDrawState que indica se a célula possui o foco (gdFocused), está selecionada (gdSelected) e se a mesma é uma célula fixa (gdFixed). Células fixas permanecem vísiveis quando as barras de rolagem são acionadas.

Veja um trecho de código no qual usamos o evento OnDrawCell para colorir de amarelo o fundo de uma determinada célula do TStringGrid:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  conteudo: String;
begin
  // vamos obter o conteúdo da célula
  conteudo := StringGrid1.Cells[ACol, ARow];

  // vamos colorir a célula na segunda linha e terceira
  // coluna com o fundo amarelo
  if (ACol = 2) and (ARow = 1) then
    begin
      StringGrid1.Canvas.Brush.Color := clYellow;
      StringGrid1.Canvas.FillRect(Rect);
      StringGrid1.Canvas.TextRect(Rect, Rect.Left, Rect.Top,
        conteudo);
    end;
end;

Para este exemplo deixei o valor da propriedade DefaultDrawing do TStringGrid como true. Isso faz com que o fundo da célula seja pintado antes que o evento DrawCell seja chamado e o efeito 3D das células fixas seja exibido ou o retângulo de foco ao redor da célula que possui o foco no momento seja desenhado após o evento. Experimente executar o exemplo com o valor false para a propriedade DefaultDrawing para ver o resultado.

Veja agora um trecho de código no qual definimos a cor vermelha para o texto das células cujo valor inteiro seja menor que 10:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
  Rect: TRect; State: TGridDrawState);
var
  conteudo: String;
begin
  // vamos obter o conteúdo da célula
  conteudo := StringGrid1.Cells[ACol, ARow];

  // vamos definir a cor vermelha para o texto das células
  // contendo valores menores que 10
  if (conteudo <> '') and (StrToInt(conteudo) < 10) then
    begin
      StringGrid1.Canvas.Font.Color := clRed;
      StringGrid1.Canvas.FillRect(Rect);
      StringGrid1.Canvas.TextRect(Rect, Rect.Left, Rect.Top,
        conteudo);
    end;
end;

Tenha cuidado para que o valor da célula possa ser convertido para inteiro por meio do uso da função StrToInt(). Caso a conversão não for possível, uma exceção do tipo EConvertError será lançada.


GNU Octave ::: GNU Octave para Engenharia ::: Geometria Analítica e Álgebra Linear

GNU Octave para Álgebra Linear - Como calcular o determinante de uma matriz usando a função det() do GNU Octave

Quantidade de visualizações: 1810 vezes
Na Matemática e na Álgebra Linear, o determinante é uma função matricial que associa a cada matriz quadrada um escalar, ou seja, o determinante é uma função que transforma uma matriz quadrada em um número real.

O determinante, ou melhor, a função determinante, permite saber se a matriz tem ou não inversa (matriz inversa), pois, as matriz que não tem inversa, são precisamente aquelas cujo determinante é igual a 0. Se o determinante for diferente de zero, então a matriz é uma matriz invertível.

O determinante de uma matriz A é denotado por det(A), det A ou |A|.

O software GNU Octave nos fornece uma forma rápida para obtermos o determinante de uma matriz: a função det(). Veja o exemplo a seguir (digitando diretamente na Janela de Comandos):

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

>> A = [1, 2, 3; 2, 5, 2; 1, 3, 1] [ENTER]
A =

   1   2   3
   2   5   2
   1   3   1

>> det(A) [ENTER]
ans = 2
>>

Veja que declaramos uma matriz 3x3 com o nome A e em seguida usamos a função det() para obter o seu determinante.

Vamos ver agora como podemos fazer esse mesmo cálculo em um script do GNU Octave:

----------------------------------------------------------------------
Se precisar de ajuda com o código abaixo, pode me chamar
no WhatsApp +55 (62) 98553-6711 (Osmar)
----------------------------------------------------------------------

# declara uma matriz quadrada de ordem 3
A = [1, 2, 3; 2, 5, 2; 1, 3, 1]

# calculamos o determinante
determinante = det(A)

# mostramos os resultado
fprintf("O determinante da matriz A é %f\n", determinante);

Não se esqueça de pesquisar sobre as propriedades do determinante. São cerca de 10 propriedades que nos ajudam a calcular o determinante da matriz simplesmente olhando para a sua composição.


Veja mais Dicas e truques de GNU Octave

Dicas e truques de outras linguagens

Códigos Fonte

Programa de Gestão Financeira Controle de Contas a Pagar e a Receber com Cadastro de Clientes e FornecedoresSoftware de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento
Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidadesControle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades
Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: Delphi
6º lugar: C
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2024 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 69 usuários muito felizes estudando em nosso site.