Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição

Exercícios Resolvidos de Java - Como converter de binário para decimal em Java usando o laço for

Quantidade de visualizações: 6178 vezes
Pergunta/Tarefa:

Escreva um programa Java que usa o laço for para converter um número binário (como uma String) em sua representação decimal (como um int). Peça ao usuário para informar um número binário e mostre o mesmo em decimal (como um int). Sua solução deve obrigatoriamente usar o laço for.

Sua saída deverá ser parecida com:

Informe um número binário: 1100
A representação decimal do valor binário 1100 é 12
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

package estudos;

import java.util.Scanner;
 
public class Estudos{
  public static void main(String[] args) {
    // vamos fazer a leitura usando a classe Scanner
    Scanner entrada = new Scanner(System.in);
       
    // vamos ler o número binário (como uma String)
    System.out.print("Informe um número binário: ");
    String bin = entrada.nextLine();
    int decimal = 0; // guarda a representação decimal
     
    // vamos percorrer todos os dígitos do número binário começando do início
    for(int i = 0, exp = bin.length() - 1; i < bin.length(); i++, exp--){
      // converte o caractere atual para inteiro
      int temp = Character.digit(bin.charAt(i), 10);  
      decimal = decimal + (temp * (int)Math.pow(2, exp));
    }
     
    System.out.println("A representação decimal do valor binário " 
      + bin + " é " + decimal);
  }
}



JavaScript ::: Dicas & Truques ::: Set (Conjunto)

Como converter um Set em um Array JavaScript usando a função Array.from()

Quantidade de visualizações: 1180 vezes
Em algumas situações nós gostaríamos de tratar um objeto Set da linguagem JavaScript como se ele fosse um Array, ou seja, um vetor (matriz de apenas uma linha e várias colunas). Para estes casos nós podemos usar o método Array.from(), adicionado à linguagem JavaScript na revisão ECMAScript 2015 (ES6 ou ECMAScript 6).

Este método recebe vários objetos, entre eles Map e Set, e retorna um array. Assim, veja um trecho de código no qual criamos um Set com três elementos, usamos o método Array.from() para obter um Array a partir dele e, em seguida, percorremos e exibimos os elementos do array.

Eis o código completo para o exemplo:

<!doctype html>
<html>
<head>
  <title>O objeto Set do JavaScript</title>
</head>
  
<body>

<script type="text/javascript">
  // vamos criar um novo conjunto contendo
  // 3 linguagens de programação
  var linguagens = new Set(["Java", "PHP", "Delphi"]);
  
  // agora vamos converter este Set em um Array
  var vetor = Array.from(linguagens);
  
  // vamos percorrer os elementos do vetor
  for(var i = 0; i < vetor.length; i++){
    document.writeln(vetor[i] + "<br>");  
  }
</script>
  
</body>
</html>

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

Java
PHP
Delphi


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: 2684 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):

>> 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:

# 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.


VB.NET ::: Dicas & Truques ::: Data e Hora

Como retornar o mês da data atual em VB.NET usando a propriedade Month da classe DateTime

Quantidade de visualizações: 8699 vezes
A propriedade Month da classe DateTime do VB.NET é usada quando queremos retornar o mês de uma determinada data como um número inteiro, ou seja, esta propriedade retorna um valor inteiro na faixa de 1 até 12.

Veja o código VB.NET completo para o exemplo:

Imports System

Module Program
  Sub Main(args As String())
    ' Este exemplo mostra como extrair o mês da data
    ' atual. Lembre-se de que o mês começa em 1 (janeiro)

    Dim agora As DateTime = DateTime.Now

    'obtém o mês.
    Dim mes As Integer = agora.Month
    Console.WriteLine("O mês para esta data é: " & mes)

    Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...")
    ' pausa o programa
    Console.ReadKey()
  End Sub
End Module

Ao executar este código VB.NET nós teremos o seguinte resultado:

O mês para esta data é: 7


Dart ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cosseno de um ângulo em Dart usando o método cos() da biblioteca Math - Calculadora de cosseno em Dart

Quantidade de visualizações: 878 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 Dart. 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:

// vamos importar a biblioteca dart:math
import "dart:math";

void main(){
  print("Cosseno de 0 = " + cos(0).toString());
  print("Cosseno de 1 = " + cos(1).toString());
  print("Cosseno de 2 = " + cos(2).toString());
}

Ao executar este código Dart 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:




Python ::: Desafios e Lista de Exercícios Resolvidos ::: Python Básico

Exercício Resolvido de Python - Ler três números inteiros e indicar se eles estão em ordem crescente ou decrescente

Quantidade de visualizações: 926 vezes
Pergunta/Tarefa:

Escreva um programa Python que pede para o usuário informar três números inteiros e informa se eles estão em ordem crescente ou decrescente. Se os números estiverem em ordem crescente, escreva "Ordem Crescente". Se estiverem em ordem decrescente, escreva "Ordem Decrescente". Do contrário escreva "Sem ordem definida".

Sua saída deverá ser parecida com:

Primeiro número: 4
Segundo número: 8
Terceiro número: 11
Ordem Crescente
Resposta/Solução:

Veja a resolução comentada deste exercício em Python:

# função principal do programa
def main():
  # vamos ler três números do usuário
  a = int(input("Primeiro número: "))
  b = int(input("Segundo número: "))
  c = int(input("Terceiro número: "))
  
  # os números estão em ordem crescente?
  if a < b and b < c:
    print("Ordem Crescente")
  # os números estão em ordem decrescente?
  elif a > b and b > c:
    print("Ordem Decrescente")
  # sem ordem definida
  else:
    print("Sem ordem definida")

if __name__== "__main__":
  main()



JavaScript ::: Dicas & Truques ::: Set (Conjunto)

Como usar objetos Set em seus códigos JavaScript

Quantidade de visualizações: 1216 vezes
Os objetos Set, introduzidos no JavaScript na revisão ECMAScript 2015, também chamada de ES6 e ECMAScript 6, trazem para a linguagem a noção de conjuntos.

Um conjunto é uma coleção de valores únicos, ou seja, cada valor pode aparecer somente uma vez. Dessa forma, objetos Set do JavaScript obedecem esta regra e podem armazenar todos os tipos de dados, desde os tipos primitivos númericos até objetos de classes definidas pelo usuário.

Nesta dica veremos como adicionar elementos a um Set e depois percorrer o seu conteúdo e exibir todos os seus valores. Veja o código a seguir:

<!doctype html>
<html>
<head>
  <title>O método setInterval() do JavaScript</title>
</head>
  
<body>

<script type="text/javascript">
  // vamos criar um novo conjunto
  var linguagens = new Set();
  
  // vamos adicioar 4 linguagens
  linguagens.add("Java");
  linguagens.add("PHP");
  linguagens.add("C++");
  linguagens.add("Python");
  
  // vamos percorrer os elementos do conjunto
  for(var linguagem of linguagens){
    document.writeln(linguagem + "<br>");
  }
</script>
  
</body>
</html>

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

Java
PHP
C++
Python

Em mais dicas dessa seção você aprenderá mais sobre os métodos e propriedades do objeto Set da linguagem JavaScript.


Java ::: Dicas & Truques ::: Expressões Regulares

Como usar expressões regulares em Java - Expressões regulares para iniciantes

Quantidade de visualizações: 48708 vezes
O suporte a expressões regulares ou regex tem sido parte da plataforma Java desde a versão 1.4. Contidas no pacote java.util.regex, as classes regex suportam a comparação de padrões de forma similar à linguagem Perl, mas, usando classes e a sintáxe da linguagem Java. Todo o pacote se limita a três classes: Pattern, Matcher e PatternSyntaxException. A versão 1.5 introduziu a interface MatchResult.

Use as duas classes Pattern e Matcher juntas. Defina e expressão regular com a classe Pattern. Então use a classe Matcher para verificar o padrão em relação à fonte de entrada. Uma exceção é lançada quando o padrão tem um erro de sintáxe na expressão.

Estas classes não possuem construtores. Em vez disso, compilamos uma expressão regular para obter um padrão, e então usamos o Pattern retornado para obter seu Matcher baseado na fonte de entrada:

Pattern pattern = Pattern.compile(<regular expression>); 
Matcher matcher = pattern.matcher(<input source>);


Uma vez que tenhamos um Matcher, tipicamente processamos a fonte de entrada a fim de encontrarmos as similaridades contidas. Usa-se o método find() para localizar similaridades do padrão na fonte de entrada. Cada chamada a find() continua a partir do ponto onde a última chamada parou, ou na posição 0 para a primeira chamada. As similaridades encontradas são retornadas pelo método group():

while(matcher.find()){ 
  System.out.printf"Found: \"%s\" from %d to %d.%n", 
    matcher.group(), matcher.start(), matcher.end()); 
} 

O código a seguir mostra um programa básico de expressões regulares, que pede ao usuário que informe tanto a expressão regular quanto a string que será comparada:

import java.util.regex.*; 
import java.io.*;

public class Regex{ 
  public static void main(String args[]){ 
    Console console = System.console(); 

    // Obtém a expressão regular 
    String regex = console.readLine("%nInforme a expressão: "); 
    Pattern pattern = Pattern.compile(regex); 

    // Obtém a entrada 
    String source = console.readLine("Informe a entrada: "); 
    Matcher matcher = pattern.matcher(source); 

    // Mostra as similaridades 
    while(matcher.find()){ 
      System.out.printf("Encontrado: \"%s\" de %d à %d.%n", 
      matcher.group(), matcher.start(), matcher.end()); 
    } 
  } 
} 

Mas, o que realmente é uma expressão regular? A classe Pattern fornece detalhes mais profundos, mas, basicamente uma expressão regular é uma sequência de caracteres que tenta encontrar semelhanças em outra sequencia de caracteres. Por exemplo, podemos procurar o padrão literal de "eles" duplos "ll" na string "Hello, World". O programa anterior encontraria o padrão "ll" começando na posição 2 e terminando na posição 4. A posição final é a posição do próximo caractere depois do fim do padrão de semelhança.

Strings de padrão como "ll" não são muito interessantes, relatando somente onde elas estão literalmente na fonte de entrada. Padrões de expressões regulares podem incluir meta-caracteres especiais. Meta-caracteres fornecem habilidades poderosas de comparação. É possível usar os 15 caracteres "([{\^-$|]})?*+." como meta-caracteres em expressões regulares.

Alguns meta-caracteres indicam o agrupamento de caracteres. Por exemplo, os caracteres de colchetes [ e ] permitem especificar um grupo de caracteres nos quais uma similaridade ocorre se qualquer um dos caracteres entre colchetes for encontrado no texto. Por exemplo, o padrão "co[cl]a" retornará similaridade com "coca" e "cola". Ele não se igualará a "cocla", uma vez que [] é usado para igualar apenas um caractere. Veremos mais sobre quantificadores mais adiante, quando quisermos encontrar alguma coisa múltiplas vezes.

Além de tentar encontrar caracteres individuais, podemos usar os colchetes [ e ] para igualar uma faixa de caracteres, tais como as letras de j-z, definidas como [j-z]. Isso pode também ser combinado com um literal string, como em "foo[j-z]" que encontraria "fool", mas não encontraria "food", uma vez que l está na faixa de j à z e d não está. Podemos também usar o caractere ^ para representar negação, com um literal string ou uma faixa. O padrão "foo[^j-z]" encontrará palavras que começam como foo mas que não terminem com uma letra de j à z. Assim a string food agora seria encontrada. Faixas múltiplas podem ser combinadas como em [a-zA-Z] para informar as letras de a à z maiúsculas ou minúsculas.

Enquanto literais strings são ótimos como primeira lição sobre expressões regulares, as coisas mais típicas que a maioria das pessoas usam em expressões regulares são as classes de caracteres pré-definidos. É aqui que os meta-caracteres . e \ são importantes. O ponto . é usado para representar qualquer caractere. Assim, a expressão regular ".oney" encontraria money e honey, e qualquer outro conjunto de 5 caracteres que terminem em oney. O caractere \ por sua vez, é usado com outros caracteres para representar um conjunto completo de letras. Por exemplo, enquanto podemos usar [0-9] para representar um conjunto de dígitos, podemos também usar \d. Podemos ainda usar [^0-9] para representar um conjunto de caracteres que não sejam dígitos. Ou podemos usar o caractere \D. Todas estas strings de classes de caracteres são definidas na documentação da plataforma Java para a classe Pattern, uma vez que elas não são fáceis de serem lembradas. Eis aqui um sub-conjunto de algumas classes de caracteres pré-definidos especiais:

* \s -- whitespace (espaço em branco)
* \S -- non-whitespace (não seja espaço em branco)
* \w -- word character [a-zA-Z0-9] (caractere de palavra)
* \W -- non-word character (não caractere de palavra)
* \p{Punct} -- punctuation (pontuação)
* \p{Lower} -- lowercase [a-z] (minúsculas)
* \p{Upper} -- uppercase [A-Z] (maiúsculas)


Se você quiser usar uma destas strings no programa Regex mostrado acima, você as define como mostrado. \s se iguala ao espaço em branco. Se, contudo, você quiser definir a expressão regular via código, você precisa se lembrar que o caractere \ tem tratamento especial. Devemos escapar a string no código fonte:

String regexString = "\\s"; 

Aqui, os caracteres \\ representam uma única barra invertida na string. Há outras strings especiais para representar literais strings:

* \t -- tab (tabulação)
* \n -- newline (nova linha)
* \r -- carriage return (retorno de carro)
* \xhh -- hex character 0xhh (caractere hexadecimal)
* \uhhhh -- hex character 0xhhhh (caractere hexadecimal)


Os quantificadores tornam as expressões regulares mais interessantes, pelo menos quando combinados com outras expresssões tais como classes de caracteres. Por exemplo, se quisermos encontrar uma string de três caracteres de a-z, poderíamos usar o padrão "[a-z][a-z][a-z]". Mas não precisamos fazer isso. Em vez de repetir a string, adicionamos um quantificador após o padrão. Para este exemplo específico, "[a-z][a-z][a-z]" pode ser representado como "[a-z]{3}". Para uma quantidade específica, o número vai dentro das chaves {}. Podemos também usar ?, * ou + para representar zero ou uma vez, zero ou mais vezes, ou uma ou mais vezes, respectivamente.

O padrão [a-z]? encontra um caractere de a-z zero ou uma vez. O padrão [a-z]* encontra um caractere de a-z zero ou mais vezes. O padrão [a-z]+ encontra um caractere de a-z uma ou mais vezes.

Use quantificador com cuidado, prestando muita atenção aos quantificadores que permitem zero similaridades.

Quando usamos as chaves {} como quantificadores, devemos definir uma faixa. {3} significa exatamente 3 vezes, mas poderíamos dizer {3,}, que define no mínimo três vezes. O quantificador {3,5} encontra um padrão de 3 a 5 vezes.

Há mais sobre expressões regulares que o que mostramos aqui. A arte de usá-las envolve descobrir a expressão regular correta para a situação atual. Tente diferente expressões com o programa Regex e veja se ele encontra o que você está esperando. Certifique-se de tentar diferentes quantificadores para entender realmente suas diferenças. Observe que quantificadores geralmente tentam incluir o maior número de caracteres para uma similaridade possível.


C ::: Desafios e Lista de Exercícios Resolvidos ::: C Básico

Exercício Resolvido de C - Ler um número inteiro na faixa 0-999 e mostrar a soma de seus dígitos - C Básico

Quantidade de visualizações: 3038 vezes
Pergunta/Tarefa:

Escreva um programa C que leia um inteiro na faixa 0-999 e mostre a soma de seus dígitos. Por exemplo, se o valor for 523, a soma de seus dígitos será 5 + 2 + 3 = 10. Lembre-se que você deverá usar apenas os operadores matemáticos e o operador de módulo (%). Seu programa deverá exibir a seguinte saída:

Informe um valor inteiro (0-999): 523
A soma dos dígitos é: 10
Resposta/Solução:

Veja a resolução comentada deste exercício usando C console:

#include <stdio.h>
#include <stdlib.h>
 
int main(int argc, char *argv[])
{
  // vamos solicitar ao usuário que informe um valor inteiro
  // na faixa 0 a 999 (incluindo)
  printf("Informe um valor inteiro (0-999): ");
 
  // vamos ler o valor informado
  int valor;
  scanf("%d", &valor);
 
  // vamos verificar se o valor está na faixa permitida
  if(valor < 0 || valor > 999){
    puts("Valor fora da faixa permitida");
  }
  else{
    // vamos obter o terceiro dígito
    int terceiro = valor % 10;
    // obtém os digitos restantes
    valor = valor / 10;
 
    // vamos obter o segundo dígito
    int segundo = valor % 10;
    // obtém os digitos restantes
    valor = valor / 10;
 
    // vamos obter o primeiro dígito
    int primeiro = valor % 10;
    // obtém os digitos restantes
    valor = valor / 10;
 
    // vamos obter a soma dos dígitos
    int soma = terceiro + segundo + primeiro;
 
    // vamos mostrar o resultado
    printf("A soma dos dígitos é: %d", soma);
  }   
  
  printf("\n\n");
  system("PAUSE");
  return 0;
}



C# ::: Windows Forms ::: TextBox

Como contar as palavras em um TextBox de múltiplas linhas do C# Windows Forms

Quantidade de visualizações: 13998 vezes
Em algumas situações nós precisamos retornar a quantidade de palavras digitadas em um campo TextBox de múltiplas linhas do C# Windows Forms. O trecho de código abaixo mostra como isso pode ser feito.

Note como usei os métodos da classe String para alcançar o objetivo. Veja o código C# completo disparado a partir do clique de um botão Button:

/*
 Este exemplo mostra como obter a quantidade de
 palavras em um TextBox. 

 Veja que usamos a técnica de contar as palavras
 contidas em um array após retirar as quebras de
 linhas e espaços duplicados na string. 
*/
    
private void button1_Click(object sender, EventArgs e){
  // Obtém o texto da caixa de texto
  string texto = textBox1.Text.Trim();

  // Remove as quebras de linhas substituindo-as por
  // espaços
  texto = texto.Replace(Environment.NewLine, " ");

  // remove os espaços em excesso
  while(texto.IndexOf("  ") >= 0){
    texto = texto.Replace("  ", " ");
  }

  // Obtém um array de palavras
  string[] palavras = texto.Split(" ");

  // Obtém a quantidade de palavras
  int quant = palavras.Length;

  // Exibe o resultado
  MessageBox.Show("O TextBox contém " + quant + 
    " palavras.");
}


Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

Você também poderá gostar das dicas e truques de programação abaixo

Nossas 20 dicas & truques de programação mais recentes

Últimos Projetos e Códigos Fonte Liberados Para Apoiadores do Site

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

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



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