Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de Java - Como rotacionar os elementos de um vetor de inteiros n vezes para a direita - Solução usando força-brutaQuantidade de visualizações: 636 vezes |
Pergunta/Tarefa: Dado o vetor: // vamos criar um vetor de inteiros int valores[] = {1, 6, 9, 3, 7, 8, 5, 2}; Sua saída deverá ser parecida com: Array na ordem original: 1 6 9 3 7 8 5 2 Rotação do vetor depois do passo 1: 2 1 6 9 3 7 8 5 Rotação do vetor depois do passo 2: 5 2 1 6 9 3 7 8 Rotação do vetor depois do passo 3: 8 5 2 1 6 9 3 7 Array depois de rotacionar 3 vezes: 8 5 2 1 6 9 3 7 Veja a resolução comentada deste exercício em Java: package estudos; public class Estudos { public static void main(String[] args) { // vamos criar um vetor de inteiros int valores[] = {1, 6, 9, 3, 7, 8, 5, 2}; // mostramos o array na ordem original System.out.println("Array na ordem original:"); exibirVetor(valores); // vamos rotacionar o array 3 casas para a direita valores = rotacionarArray(valores, 3); // e mostramos o resultado System.out.println("Array depois de rotacionar 3 vezes:"); exibirVetor(valores); } // método usado para exibir o array public static void exibirVetor(int []vetor){ // percorremos cada elemento do vetor for (int i = 0; i < vetor.length; i++) { System.out.print(vetor[i] + " "); } System.out.println("\n"); } // método que recebe um vetor de inteiros e o rotaciona um // determinado número de vezes public static int[] rotacionarArray(int[] vetor, int n) { // um laço externo que repete a mesma quantidade de n for (int i = 0; i < n; i++) { // começamos no último elemento e regredimos até // o segundo elemento do vetor for (int j = vetor.length - 1; j > 0; j--) { // avançamos um elemento de cada vez para // a direita int temp = vetor[j]; vetor[j] = vetor[j - 1]; vetor[j - 1] = temp; } // mostramos o progresso System.out.println("Rotação do vetor depois do passo " + (i + 1) + ":"); exibirVetor(vetor); } return vetor; } } A solução que apresentamos aqui usa a força-bruta, isto é, uma solução não otimizada e pouco recomendada para arrays com um número exagerado de elementos. Por ser força-bruta, o laço interno percorre todos os elementos do vetor, trocando-os de lugares. Em outras dicas do site nós colocamos versões melhoradas deste código. |
Java ::: Coleções (Collections) ::: ArrayList |
Java ArrayList para iniciantes - Como excluir todos os elementos de uma ArrayList usando seu método clear()Quantidade de visualizações: 12355 vezes |
Nesta dica eu mostro como podemos usar o método clear() da classe ArrayList, da linguagem Java, para limpar seu conteúdo, ou seja, excluir todos os seus itens de uma só vez. Veja o código completo: import java.util.ArrayList; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conterá inteiros ArrayList<Integer> valores = new ArrayList<Integer>(); // adiciona itens na lista valores.add(34); valores.add(12); valores.add(8); valores.add(23); // obtém a quantidade de itens na lista int quant = valores.size(); System.out.println("A lista contém " + quant + " itens"); // limpa a lista valores.clear(); // obtém a nova quantidade quant = valores.size(); System.out.println("Agora a lista contém " + quant + " itens"); System.exit(0); } } Ao executarmos este código nós teremos o seguinte resultado: A lista contém 4 itens Agora a lista contém 0 itens |
Java ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular a equação reduzida da reta em Java dados dois pontos pertencentes à retaQuantidade de visualizações: 1373 vezes |
Nesta dica de Java veremos como calcular a equação reduzida da reta quando temos dois pontos pertencentes à esta reta. Não, nessa dica não vamos calcular a equação geral da reta, apenas a equação reduzida. Em outras dicas do site você encontra como como isso pode ser feito. Para relembrar: a equação reduzida da reta é y = mx + n, em que x e y são, respectivamente, a variável independente e a variável dependente; m é o coeficiente angular, e n é o coeficiente linear. Além disso, m e n são números reais. Com a equação reduzida da reta, é possível calcular quais são os pontos que pertencem a essa reta e quais não pertencem. Vamos começar então analisando a seguinte figura, na qual temos dois pontos que pertencem à uma reta: ![]() Note que a reta da figura passa pelos pontos A(5, 5) e B(9, 2). Então, uma vez que já temos os dois pontos, já podemos calcular a equação reduzida da reta. Veja o código Java completo para esta tarefa: package estudos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ // vamos usar a classe Scanner para ler os dados Scanner entrada = new Scanner(System.in); // vamos ler as coordenadas do primeiro ponto System.out.print("Coordenada x do primeiro ponto: "); double x1 = Double.parseDouble(entrada.nextLine()); System.out.print("Coordenada y do primeiro ponto: "); double y1 = Double.parseDouble(entrada.nextLine()); // vamos ler as coordenadas do segundo ponto System.out.print("Coordenada x do segundo ponto: "); double x2 = Double.parseDouble(entrada.nextLine()); System.out.print("Coordenada y do segundo ponto: "); double y2 = Double.parseDouble(entrada.nextLine()); String sinal = "+"; // vamos calcular o coeficiente angular da reta double m = (y2 - y1) / (x2 - x1); // vamos calcular o coeficiente linear double n = y1 - (m * x1); // coeficiente linear menor que zero? O sinal será negativo if (n < 0){ sinal = "-"; n = n * -1; } // mostra a equação reduzida da reta System.out.println("Equação reduzida: y = " + m + "x" + " " + sinal + " " + n); System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: Coordenada x do primeiro ponto: 5 Coordenada y do primeiro ponto: 5 Coordenada x do segundo ponto: 9 Coordenada y do segundo ponto: 2 Equação reduzida: y = -0,75x + 8,75 Para testarmos se nossa equação reduzida da reta está realmente correta, considere o valor 3 para o eixo x da imagem acima. Ao efetuarmos o cálculo: >> y = (-0.75 * 3) + 8.75 y = 6.5000 temos o valor 6.5 para o eixo y, o que faz com que o novo ponto caia exatamente em cima da reta considerada na imagem. |
Delphi ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o seno de um número ou ângulo em Delphi usando a função Sin()Quantidade de visualizações: 12946 vezes |
Em geral, quando falamos de seno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função seno disponível nas linguagens de programação para calcular o seno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria. No entanto, é sempre importante entender o que é a função seno. Veja a seguinte imagem: ![]() Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles. Assim, o seno é a razão entre o cateto oposto (oposto ao ângulo theta) e a hipotenusa, ou seja, o cateto oposto dividido pela hipotenusa. Veja a fórmula: \[\text{Seno} = \frac{\text{Cateto oposto}}{\text{Hipotenusa}} \] Então, se dividirmos 20 por 36.056 (na figura eu arredondei) nós teremos 0.5547, que é a razão entre o cateto oposto e a hipotenusa (em radianos). Agora, experimente calcular o arco-cosseno de 0.5547. O resultado será 0.9828 (em radianos). Convertendo 0.9828 radianos para graus, nós obtemos 56.31º, que é exatamente o ângulo em graus entre o cateto oposto e a hipotenusa na figura acima. Pronto! Agora que já sabemos o que é seno na trigonometria, vamos entender mais sobre a função Sin() da linguagem Delphi. Esta função, incorporada por padrão à linguagem, recebe um valor numérico (Extended) e retorna um valor Extended, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja: procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add('Seno de 0 = ' + FloatToStr(Sin(0))); Memo1.Lines.Add('Seno de 1 = ' + FloatToStr(Sin(1))); Memo1.Lines.Add('Seno de 2 = ' + FloatToStr(Sin(2))); end; Ao executar este código Delphi nós teremos o seguinte resultado: Seno de 0 = 0 Seno de 1 = 0,841470984807897 Seno de 2 = 0,909297426825682 Note que calculamos os senos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função seno mostrada abaixo: ![]() |
Python ::: Dicas & Truques ::: Data e Hora |
Como adicionar dias à uma data em Python usando a função timedelta() da classe datetimeQuantidade de visualizações: 9056 vezes |
Nesta dica mostrarei como é possível usar o método timedelta() da classe datetime do Python para adicionar um determinado número de dias a uma data. O truque aqui é fornecer apenas o dia para o método timedelta(), obter o resultado e somá-lo com a data que já temos. Veja o código completo para o exemplo: import datetime # função principal do programa def main(): # dias a serem adicionados quant_dias = 2 # Obtém a data de hoje hoje = datetime.date.today() print("Hoje é:", hoje) # Adiciona dias à data dias = datetime.timedelta(days=quant_dias) hoje = hoje + dias # Exibe o resultado print("Daqui à", quant_dias, "dias será", hoje) if __name__== "__main__": main() Ao executarmos este código Python nós teremos o seguinte resultado: Hoje é: 2021-03-11 Daqui à 2 dias será 2021-03-13 |
Ruby ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o cosseno de um ângulo em Ruby usando o método cos() da biblioteca Math - Calculadora de cosseno em RubyQuantidade de visualizações: 911 vezes |
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria. No entanto, é sempre importante entender o que é a função cosseno. Veja a seguinte imagem: ![]() Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles. Assim, o cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula: \[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \] Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos). Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima. Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da linguagem Ruby. Esta método, que faz parte da biblioteca Math, recebe um valor numérico e retorna um valor, também numérico) entre -1 até 1 (ambos inclusos). Veja: puts "Cosseno de 0 = " + Math.cos(0).to_s puts "Cosseno de 1 = " + Math.cos(1).to_s puts "Cosseno de 2 = " + Math.cos(2).to_s Ao executar este código Ruby nós teremos o seguinte resultado: Cosseno de 0 = 1.0 Cosseno de 1 = 0.5403023058681398 Cosseno de 2 = -0.4161468365471424 Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo: ![]() |
Delphi ::: Dicas & Truques ::: Strings e Caracteres |
Como obter uma substring no final de uma string usando a função AnsiRightStr() do DelphiQuantidade de visualizações: 13319 vezes |
Em algumas situações precisamos obter uma substring no final de uma string. Em Delphi isso pode ser feito por meio da função AnsiRightStr(). Esta função requer a string a partir da qual a substring será obtida e a quantidade de caracteres que comporâo a substring. O retorno será uma nova string contendo a substring obtida. Veja o exemplo:procedure TForm1.Button1Click(Sender: TObject); var frase, substring: string; begin frase := 'Programar em Delphi é muito bom'; // vamos obter a substring "bom" substring := AnsiRightStr(frase, 3); // vamos exibir o resultado ShowMessage('Resultado: ' + substring); end; Não se esqueça de adicionar a unit StrUtils no uses do seu formulário. Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Python ::: Estruturas de Dados ::: Lista Ligada Simples |
Como excluir um nó no final de uma lista encadeada simples em PythonQuantidade de visualizações: 1301 vezes |
Nesta dica mostrarei como podemos escrever um método remover_final() que remove e retorna o nó no final de uma lista encadeada simples em Python, ou seja, excluí o último nó da lista. É importante observar que o método exclui o último nó e o retorna completo, inclui o valor que está incluído nele. Se a lista estiver vazia o método retorna o valor None para indicar lista vazia. Vamos começar então com o código para a classe No da lista singularmente ligada (que salvei em um arquivo no_lista_singularmente_ligada.py): # classe No para uma lista singularmente encadeada ou # ligada - Singly Linked List class No: # construtor da classe No def __init__(self, info, proximo): self.info = info self.proximo = proximo # método que permite definir o conteúdo do nó def set_info(self, info): self.info = info # método que permite obter a informação de um nó def get_info(self): return self.info # método que permite definir o campo próximo deste nó def set_proximo(self, proximo): self.proximo = proximo # método que permite obter o campo próximo deste nó def get_proximo(self): return self.proximo # retorna True se este nó apontar para outro nó def possui_proximo(self): return self.proximo != None Veja que o código para a classe Nó não possui muitas firulas. Temos apenas um campo info, que guardará o valor do nó, e um campo próximo, que aponta para o próximo nó da lista, ou null, se este for o único nó ou o último nó da lista ligada. Veja agora o código para a classe ListaLigadaSimples (lista_ligada_simples.py), com os métodos inserir_inicio(), remover_final() e exibir(): # importa a classe No from no_lista_singularmente_ligada import No # classe ListaLigadaSimples class ListaLigadaSimples: # construtor da classe def __init__(self): self.inicio = None # nó inicial da lista # método que deleta um nó no final de uma lista ligada # este método retorna o nó excluído def remover_final(self): # a lista está vazia? if self.inicio == None: return None else: # vamos excluir e retornar o primeiro nó da lista removido = self.inicio # a lista possui apenas um nó? if self.inicio.get_proximo() == None: # a lista agora ficará vazia self.inicio = None else: # começamos apontando para o início da lista no_atual = self.inicio no_anterior = self.inicio # enquanto o próximo do nó atual for diferente de nulo while no_atual.get_proximo() != None: # avançamos o nó anterior no_anterior = no_atual # saltamos para o próximo nó no_atual = no_atual.get_proximo() # na estamos na posição de exclusão removido = no_atual no_anterior.set_proximo(None) # retorna o nó removido return removido # método que permite inserir um novo nó no início da lista def inserir_inicio(self, info): # cria um novo nó contendo a informação e que # não aponta para nenhum outro nó novo_no = No(info, None) # a lista ainda está vazia? if self.inicio == None: # o novo nó será o início da lista self.inicio = novo_no else: # o novo nó aponta para o início da lista novo_no.set_proximo(self.inicio) # o novo nó passa a ser o início da lista self.inicio = novo_no # método que permite exibir todos os nós da lista # ligada simples (lista singularmente encadeada) def exibir(self): # aponta para o início da lista no_atual = self.inicio # enquanto o nó não for nulo while no_atual != None: # exibe o conteúdo do nó atual print(no_atual.get_info()) # pula para o próximo nó no_atual = no_atual.get_proximo() E agora o código main() que insere alguns valores no início da nossa lista singularmente encadeada e testa o método remover_final(): # importa a classe ListaLigadaSimples from lista_singularmente_ligada import ListaLigadaSimples # método principal def main(): # cria uma nova lista encadeada simples lista = ListaLigadaSimples() print("Insere o valor 12 no início da lista") lista.inserir_inicio(12) print("Conteúdo da lista: ") lista.exibir() print("Insere o valor 30 no início da lista") lista.inserir_inicio(30) print("Conteúdo da lista: ") lista.exibir() print("Insere o valor 27 no início da lista") lista.inserir_inicio(27) print("Conteúdo da lista: ") lista.exibir() print("Remove um nó no final da lista") removido = lista.remover_final() if removido == None: print("Não foi possível remover. Lista vazia") else: print("Nó removido:", removido.get_info()) print("Conteúdo da lista: ") lista.exibir() if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: c:\estudos_python>python estudos.py Insere o valor 12 no início da lista Conteúdo da lista: 12 Insere o valor 30 no início da lista Conteúdo da lista: 30 12 Insere o valor 27 no início da lista Conteúdo da lista: 27 30 12 Remove um nó no final da lista Nó removido: 12 Conteúdo da lista: 27 30 |
Python ::: Dicas & Truques ::: Strings e Caracteres |
Como substituir partes de uma palavra, frase ou texto em Python usando a função replace() do objeto StringQuantidade de visualizações: 1850 vezes |
Em várias ocasiões nós precisamos efetuar a substituição de substrings em uma string. Para isso nós podemos usar o método replace() da linguagem Python. Esta função possui a seguinte assinatura:string.replace(oldvalue, newvalue, count) onde oldvalue é trecho da string a ser substituído, newvalue é o valor que substituirá o valor antigo e count é a quantidade de substituições. Na ausência do terceiro argumento, TODAS as ocorrências da substring pesquisada serão substituídas. Veja um exemplo no qual substituímos todas as ocorrências de "Java" por "Python" em uma frase: def main(): # frase original original = "Gosto de Java porque Java é fácil" print("Frase original:", original) # vamos substituir "Java" por "Python" nova_frase = original.replace("Java", "Python") print("Após a substituição:", nova_frase) if __name__== "__main__": main() Ao executarmos este código Python nós teremos o seguinte resultado: Frase original: Gosto de Java porque Java é fácil Após a substituição: Gosto de Python porque Python é fácil |
VBA ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar o código ASCII associado a um caractere em VBA usando a função Asc()Quantidade de visualizações: 432 vezes |
Em algumas situações nós precisamos retornar o código ASCII associado a um determinado caractere. Em VBA nós podemos realizar essa tarefa usando a função Asc(), que recebe uma string representando uma letra, dígito ou símbolo e retorna o código numérico correspondente. Veja um trecho de código VBA no qual informamos a letra "A" e obtemos, como retorno, o código ASCII 65: ' Macro VBA Excel usada para converter um caractere ' em seu código ASCII Sub RetornarCodigoASCII() ' Variáveis usadas na resolução do problema Dim letra As String Dim codigo As Integer ' vamos pedir para o usuário informar um caractere letra = InputBox("Informe um caractere: ", "Código ASCII", 0) Debug.Print "Você informou o caractere: " & letra ' agora vamos obter o código ASCII correspondente codigo = Asc(letra) ' e mostramos o resultado Debug.Print "O código ASCII correspondente é: " & codigo End Sub Ao executarmos este código VBA nós teremos o seguinte resultado: O código ASCII correspondente é: 65 |
Nossas 20 dicas & truques de programação mais populares |
Java - Como definir a cor para o contexto de desenho usando o método setColor() da classe Graphics do Java JavaScript - Como usar objetos Set em seus códigos JavaScript |
Você também poderá gostar das dicas e truques de programação abaixo |
Android Java - Como detectar um clique em um botão do Android usando setOnClickListener() e exibir uma mensagem AlertDialog QGIS - Como retornar o título do projeto do QGIS usando PyQGIS e a função title() da classe QgsProject Python - Como calcular o cateto oposto dadas as medidas da hipotenusa e do cateto adjascente em Python |
Nossas 20 dicas & truques de programação mais recentes |
Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site |
Python - Como criar o jogo Pedra, Papel, Tesoura em Python - Jogo completo em Python com código comentado |
Últimos Exercícios Resolvidos |
E-Books em PDF |
||||
|
||||
|
||||
Linguagens Mais Populares |
||||
1º lugar: Java |