Postagem em destaque

Código Limpo: Nomes Significativos

Imagem
Às vezes fico com um assunto na cabeça por semanas, até achar uma situação ou um exemplo que esclareça a situação. Explico: estava querendo já a algum tempo escrever sobre boas práticas de programação, e pensei em iniciar por "Nomes Significativos", para seguir a nomenclatura utilizada pelo ótimo livro Código Limpo , de Robert C. Martin.  Entretanto, ficava sempre amarrado em exemplos que pareciam ser bons, mas que ainda eu não tinha visto a utilidade prática.  Antes de continuar preciso explicar que tenho um hábito de anotar num bloco de papel todas as ideias que surgem, pois elas desaparecem com a mesma velocidade que aparecem. Para isso tenho um bloco e caneta na mesa de cabeceira (além de um no banheiro), pois esses são os lugares onde tenho mais ideias... Vai entender... Semana passada, estava com um problema bem complicado e tive uma ideia: "vou criar uma variável para indicar que quando um arquivo tiver um certo tamanho deve gravar algumas informações no log. Pois

Arrays: elementos repetidos e número de ocorrências (em Java)

Resolvi fazer, em Java, o mesmo algoritmo mostrado em Arrays: elementos repetidos e número de ocorrências. Assim é possível comparar os dois códigos e talvez ajude a escolher uma linguagem de programação ou pelo menos mostrar as principais diferenças entre elas.

Entre as duas (C++ e Java) acho que a versão feita em Java ficou mais clara.


package teste;

import java.util.ArrayList;

public class Run {
  public static void main(String[] args) {
    ArrayTeste at = new ArrayTeste();
    at.start();
  }
}

// classe que contem o valor do número e a quantidade de ocorrências
class Number {
  int value;
  int count;

  public  Number(int x, int y){
    value = x;
    count = y;
  }
}

// classe principal
class ArrayTeste{
  void start(){
    // array de entrada
    int a[] = {5, 3, 5, 1, 1, 1, 2, 1};

    int i, j;
    boolean found;

    ArrayList<number> lista = new ArrayList<number>();

    // percorre o array de entrada
    for(i=0; i<a.length; i++){
      // seta como não encontrado
      found = false;

      // procura na lista de números o elemento "i" do array de entrada
      for(j=0; j<lista.size(); j++){
        // encontrou, incrementa e sai fora
        if (a[i] == lista.get(j).value){
          lista.get(j).count++;
          found = true;
          break;
        }
      }
      
      // não encontrou o número, armazena
      if (!found) 
        lista.add(new Number(a[i], 1));      
    }

    System.out.println("[Número, Repetições]");
    for (Number n:lista)
      System.out.println("[" + n.value + ", " + n.count + "]");    
  }
}

Comentários

  1. tenho uma duvida tenho uma combinação de 10 dezenas que é uma matriz 6 colunas e 210 linhas, a qtde de ocorrência de cada dezena é como assim a 1 se repete 126, 2 se repete 126 e assim por diante ate 10, fazendo um fechamento para quadra da 20 cartões, aqui mora o problema como ter a mesma ocorrência dezenas dentro dos 20 cartões pode me da uma luz.
    abraço.
    joelsonc3@gmail.com

    ResponderExcluir

Postar um comentário

Postagens mais visitadas deste blog

Netflix não mostra ícone de streaming

Google Hacking

FTP não funciona no PHP