Você está aqui: Cards de Engenharia Civil - Estruturas de Aço e Madeira |
||
|
||
|
|
||
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Uma função recursiva que conta quantas vezes um valor inteiro k ocorre em um vetor de inteirosQuantidade de visualizações: 2301 vezes |
|
Pergunta/Tarefa: Escreva um método recursivo que conta quantas vezes um valor inteiro k ocorre em um vetor de 10 inteiros. Seu método deverá ter a seguinte assinatura:
public static int quantRepeticoes(int indice, int valor, int[] vetor){
// sua implementação aqui
}
Informe o 1 valor: 2 Informe o 2 valor: 7 Informe o 3 valor: 4 Informe o 4 valor: 7 Informe o 5 valor: 1 Informe o valor a ser pesquisado no vetor: 7 O valor informado se repete 2 vezes. Veja a resolução comentada deste exercício usando Java console:
package exercicio;
import java.util.Scanner;
public class Exercicio {
public static void main(String[] args) {
// cria um novo objeto da classe Scanner
Scanner entrada = new Scanner(System.in);
// vamos declarar um vetor de 10 inteiros
int valores[] = new int[5];
// vamos pedir ao usuário que informe os valores do vetor
for(int i = 0; i < valores.length; i++){
System.out.print("Informe o " + (i + 1) + " valor: ");
// efetua a leitura do valor informado para a posição atual do vetor
valores[i] = Integer.parseInt(entrada.nextLine());
}
// agora vamos pedir para informar o valor a ser pesquisado
System.out.print("\nInforme o valor a ser pesquisado no vetor: ");
int valor = Integer.parseInt(entrada.nextLine());
// e vamos ver a quantidade de repetições
int repeticoes = quantRepeticoes(0, valor, valores);
System.out.print("O valor informado se repete " + repeticoes + " vezes.");
System.out.println("\n");
}
// método recursivo que recebe um valor
public static int quantRepeticoes(int indice, int valor, int[] vetor){
if(indice == vetor.length - 1){ // caso base...hora de parar a recursividade
if(vetor[indice] == valor){
return 1; // mais um repetição foi encontrada
}
}
else{ // dispara mais uma chamada recursiva
if(vetor[indice] == valor){ // houve mais uma repetição
return 1 + quantRepeticoes(indice + 1, valor, vetor);
}
else{
return 0 + quantRepeticoes(indice + 1, valor, vetor); // não repetiu
}
}
return 0; // só para deixar o compilador satisfeito...esta linha nunca é executada
}
}
|
Java ::: Java Swing - Gerenciadores de Layout ::: GridBagLayout |
Como usar o gerenciador de layout GridBagLayout em suas aplicações Java SwingQuantidade de visualizações: 13088 vezes |
O gerenciador de layout GridBagLayout é um dos mais complexos e mais flexíveis. Embora possa parecer, esta classe não é uma sub-classe de GridLayout, como mostra sua posição na hierarquia de classes Java:java.lang.Object java.awt.GridBagLayout Esta classe implementa as interfaces LayoutManager, LayoutManager2 e Serializable. A vantagem do gerenciador de layout GridBagLayout em relação ao GridLayout, é que, com o GridBagLayout nós podemos fazer com que os componentes nas linhas e colunas possam ter diferentes tamanhos e às vezes ocupar múltiplas linhas e colunas. O trecho de código abaixo mostra a forma mais simples de se criar um GridBagLayout. Veja que os botões são arranjados de forma horizontal na janela. É claro que sem os ajustes necessários, não tiramos muito proveito do uso deste gerenciador (mas isso será visto em outras dicas dessa seção):
import javax.swing.*;
import java.awt.*;
public class Estudos extends JFrame{
public Estudos(){
super("Como usar a classe GridBagLayout");
// define o layout
setLayout(new GridBagLayout());
// adiciona componentes à janela
add(new JButton("Botão 1"));
add(new JButton("Botão 2"));
add(new JButton("Botão 3"));
add(new JButton("Botão 4"));
setSize(350, 150);
setVisible(true);
}
public static void main(String args[]){
Estudos app = new Estudos();
app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
}
}
Ao executar este código Java Swing nós teremos o seguinte resultado: ![]() |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Apostila Java para iniciantes - Como substituir um caractere em uma string usando o método setCharAt() da classe StringBuffer do JavaQuantidade de visualizações: 1 vezes |
|
Nesta dica mostrarei como podemos usar o método setCharAt() da classe StringBuffer da linguagem Java para substituir caracteres individuais em uma palavra, frase ou texto. Veja um código completo, no qual trocamos a letra "j" por "J":
package arquivodecodigos;
public class Estudos{
public static void main(String[] args){
StringBuffer frase = new StringBuffer("Programar em java.");
System.out.println(frase);
frase.setCharAt(13, 'J'); // troca 'j' por 'J'
System.out.println(frase);
System.exit(0);
}
}
Ao executarmos este código nós teremos o seguinte resultado: Programar em java. Programar em Java. |
C# ::: Dicas & Truques ::: Gráficos |
Como desenhar linhas em C# usando o método DrawLine() da classe Graphics - Computação Gráfica usando C#Quantidade de visualizações: 13680 vezes |
|
Uma das tarefas mais simples que realizamos quando estamos desenhando em C# é o desenho de linhas. Para isso usamos o método DrawLine() da classe Graphics. Este método recebe um objeto da classe Pen (representando a cor e espessura da caneta de desenho) e as coordenadas iniciais e finais da linha a ser desenhada. Veja um trecho de código no qual desenhamos uma linha na cor vermelha e com a espessura de dois pixels:
private void button1_Click(object sender, EventArgs e){
// vamos obter o Graphics do formulário
Graphics g = this.CreateGraphics();
// vamos desenhar uma linha na cor vermelha e com espessura
// de dois pixels
g.DrawLine(new Pen(Color.Red, 2), new Point(100, 150),
new Point(400, 450));
// vamos liberar o objeto Graphics
g.Dispose();
}
Execute este código e verá uma linha vermelha na vertical ser desenhada quando você clicar no botão. Aqui nós usamos dois objetos da classe Point. Um para as coordenadas iniciais (x = 100; y = 150) e outro para as coordenadas finais (x = 400; y = 450). É possível fornecer os valores das coordenadas diretamente. Veja: g.DrawLine(new Pen(Color.Red, 2), 100, 150, 400, 450); É possível também desenhar múltiplas linhas de uma só vez. Para isso podemos usar o método DrawLines(). Este método recebe um objeto da classe Pen e um array de objetos da classe Point representando as diversas coordenadas. Desta forma, todas as linhas serão conectadas. Veja um exemplo:
private void button1_Click(object sender, EventArgs e){
// vamos obter o Graphics do formulário
Graphics g = this.CreateGraphics();
// vamos criar várias coordenadas x e y
Point[] coordenadas = {new Point(15, 20), new Point(15, 300),
new Point(400, 300), new Point(400, 20), new Point(15, 20)};
// vamos desenhar todas as linhas conectadas usando a cor azul e a
// espessura de um pixel
g.DrawLines(new Pen(Color.Blue, 1), coordenadas);
// vamos liberar o objeto Graphics
g.Dispose();
}
Execute este código e clique no botão. Você verá um retângulo azul e com a espessura de 1 pixel ser desenhado no formulário. |
Java ::: Coleções (Collections) ::: ArrayList |
Java Collections para iniciantes - Arrays (vetores) ou a ArrayList? Qual devo usar?Quantidade de visualizações: 16620 vezes |
|
Uma das perguntas mais frequentes que os usuários do nosso site nos fazem é aquela sobre o uso de simples arrays (vetores e matrizes) ou objetos da classe ArrayList. Se o número de elementos for fixo ou você precisar de muita eficiência ao lidar com tipos primitivos, então arrays podem ser a melhor escolha. Porém, muitos problemas envolvendo o armazenamento de dados requerem estruturas de dados que possam ser redimensionadas de acordo com a necessidade do algorítmo. Neste caso, uma ArrayList (ou qualquer uma das outras classes Collections) pode ser a escolha certa. Veja um trecho de código para ficar mais fácil o entendimento:
package arquivodecodigos;
public class Estudos{
public static void main(String args[]){
int valores[] = {4, 12, 8, 5, 13};
System.out.println("Primeiro elemento no vetor: "
+ valores[0]);
}
}
Ao executar este código nós teremos o seguinte resultado: Primeiro elemento no vetor: 4 Como podemos ver neste exemplo, um array (nesse caso um vetor) possui um tamanho fixo, ou seja, o compilador não nos permite reduzir ou aumentar a quantidade de elementos em um vetor ou matriz criado a partir da notação de arrays. Assim, apesar de todas as facilidades que os arrays trazem consigo, este pode ser um empecilho para o tipo de aplicação que queremos desenvolver em um determinado momento. A classe ArrayList, por outro lado, possui tamanho variado. Isso quer dizer que seu tamanho é aumentado ou reduzido de acordo com as necessidades do seu código. Uma outra questão que diferencia arrays de ArrayList, é que não podemos armazenar tipos primitivos em um objeto da classe ArrayList. Se precisarmos fazer isso, o tipo primitivo deve ser colocado em uma classe encapsuladora, por exemplo, a classe Integer. Em algumas situações o compilador faz isso nos bastidores, e esta operação é chamada de auto-boxing. |
Desafios, Exercícios e Algoritmos Resolvidos de Java |
Veja mais Dicas e truques de Java |
Dicas e truques de outras linguagens |
|
Android Java - Como usar a classe Toast em suas aplicações Android Java - Como transformar um StringBuffer em uma String usando o método toString() da classe StringBuffer |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
|
1º lugar: Java |






