![]() |
|||||
|
Java ::: Dicas & Truques ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Como usar o operador de bits & (E/AND sobre bits) em Java - Java Avançado - Manipulação de bits em JavaQuantidade de visualizações: 6755 vezes |
Esta dica de Java é muito útil para quem está se preparando para entrevistas de código ou desafios de programação. A manipulação de bits é fator importante para testar as habilidades de candidatos a vagas de programador, pois ela demonstra um conhecimento muito aprofundado de lógica de programação e também de rotinas de baixo nível. O operador de bits & (E/AND sobre bits) da linguagem Java é usado quando queremos comparar os bits individuais de dois valores integrais (inteiros) e produzir um terceiro resultado. Os bits no resultado serão configurados como 1 se os bits correspondentes nos dois outros valores foram 1. Em caso contrário os bits são configurados como 0. Vamos analisar os seguintes valores binários: a) 0101 (5 decimal) b) 0100 (4 decimal) Quando aplicamos o operador & nestes dois valores teremos o seguinte resultado: 0101 0100 ---- 0100 Veja que o resultado é 0100, uma vez que apenas o segundo bit de cada valor está configurado como 1. Vamos ver isso em Java agora. Observe o seguinte trecho de código: public class Main { public static void main(String[] args) { int a = 5; int b = 4; int c = a & b; // exibe o resultado (em inteiro e em bytes) System.out.println("a = " + obterBits(a) + " (" + a + ")"); System.out.println("b = " + obterBits(b) + " (" + b + ")"); System.out.println("a & b = " + obterBits(c) + " (" + c + ")"); } // método auxiliar que converte um inteiro em sua representação em bits public static String obterBits(int valor){ int mascara = 1 << 31; StringBuffer buffer = new StringBuffer(35); for(int i = 1; i <= 32; i++){ if((valor & mascara) == 0){ buffer.append('0'); } else{ buffer.append('1'); } valor <<= 1; if(i % 8 == 0){ buffer.append(' '); } } return buffer.toString(); } } Ao executar este código teremos o seguinte resultado: a = 00000000 00000000 00000000 00000101 (5) b = 00000000 00000000 00000000 00000100 (4) a & b = 00000000 00000000 00000000 00000100 (4) |
C++ ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como usar vetores e matrizes (arrays) na linguagem C++Quantidade de visualizações: 38042 vezes |
Vetores e matrizes, também chamados de arrays em programação, são grupos consecutivos de locais na memória que possuem o mesmo tipo de dados, ou seja, um vetor ou matriz em C++ pode conter apenas elementos do mesmo tipo. Um vetor é uma matriz de um coluna e várias linhas, enquanto uma matriz é a matriz propriamente dita, ou seja, que possui várias linhas e várias colunas. Veja um trecho de código no qual temos um vetor contendo 5 elementos do tipo int: #include <iostream> using namespace std; int main(int argc, char *argv[]) { // declara e inicializa a matriz int valores[5] = {65, 3, 8, 41, 12}; // exibe os elementos da matriz for(int i = 0; i < 5; i++){ cout << "Posição: " << i << " - Valor: " << valores[i] << endl; } system("PAUSE"); // pausa o programa return 0; } Ao executarmos este código nós teremos o seguinte resultado: Posição: 0 - Valor: 65 Posição: 1 - Valor: 3 Posição: 2 - Valor: 8 Posição: 3 - Valor: 41 Posição: 4 - Valor: 12 Pressione qualquer tecla para continuar. . . Aqui nós usamos a técnica de declarar e inicializar o vetor em uma mesma linha. Em seguida usamos um laço para percorrer todos os elementos. Veja que os elementos do vetor são acessados usando um índice que começa em 0 e vai até a quantidade de elementos menos 1. Veja agora um trecho de código que declara um vetor e inicializa seus elementos usando um laço for: #include <iostream> using namespace std; int main(int argc, char *argv[]) { // declara a matriz int valores[5]; // inicializa os elementos usando um laço for(int i = 0; i < 5; i++){ valores[i] = 2 * i; } // exibe os elementos da matriz for(int i = 0; i < 5; i++){ cout << "Posição: " << i << " - Valor: " << valores[i] << endl; } system("PAUSE"); // pausa o programa return 0; } Ao executarmos este código nós teremos o seguinte resultado: Posição: 0 - Valor: 0 Posição: 1 - Valor: 2 Posição: 2 - Valor: 4 Posição: 3 - Valor: 6 Posição: 4 - Valor: 8 Pressione qualquer tecla para continuar. . . É importante notar que, se não inicializados, os valores dos elementos de um vetor poderão guardar valores aleatórios. Jamais confie que eles terão o valor 0 por padrão. |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercício Resolvido de C - Usando um laço for para percorrer os elementos de um vetor e exibir a soma de seus valoresQuantidade de visualizações: 14559 vezes |
Exercícios Resolvidos de C - Usando um laço for para percorrer os elementos de um vetor e exibir a soma de seus valores Pergunta/Tarefa: Considere o seguinte vetor de inteiros: // um vetor de inteiros contendo sete elementos int valores[] = {4, 5, 1, 8, 2, 2, 10}; A soma dos valores do vetor é: 32 Veja abaixo a resolução completa para esta tarefa: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // um vetor de inteiros contendo sete elementos int valores[] = {4, 5, 1, 8, 2, 2, 10}; // o primeiro passo é criar uma variável que vai receber a soma // dos valores dos elementos int soma = 0; int i; // agora vamos usar uma laço for para percorrer todos os elementos // do vetor, obter o valor do elemento atual e adicionar ao valor atual // da variável soma for(i = 0; i < 7; i++){ soma = soma + valores[i]; // poderia também ser escrito assim: // soma += valores[i]; } // vamos exibir a soma dos valores do vetor printf("A soma dos valores do vetor é: %d\n", soma); system("PAUSE"); return 0; } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Controle |
Exercícios Resolvidos de Java - Escreva um programa Java para ler as notas n1 e n2 de um aluno e calcule a sua média aritméticaQuantidade de visualizações: 474 vezes |
Pergunta/Tarefa: Escreva um programa Java para ler as notas n1 e n2 de um aluno e calcule a sua média aritmética. Se a média for igual ou superior a 7,0 mostre uma mensagem indicando que o aluno foi aprovado. Se a média for igual ou maior que 3,5 e inferior a 7,0 seu programa deverá indicar que o aluno ficou de exame. Uma média menor que 3,5 indica reprovação direta. No caso do exame, leia uma nota entre 0 e 10. Agora a média do aluno deverá ser a média entre a média anterior e a nota do exame. Se a nova média for igual ou superior a 5,0 o aluno estará aprovado. Caso contrário o aluno será reprovado. Use validação para evitar que o usuário informe notas inválidas, ou seja, notas menores que 0 ou maiores que 10. Caso notas inválidas sejam fornecidas seu programa deverá solicitar a nota novamente até que o usuário forneça notas válidas. Sua saída deverá ser parecida com: Informe a nota N1: 9.4 Informe a nota N2: 11 Nota inválida. Informe a nota N2: 8.3 A média do aluno é: 8.85 O aluno foi aprovado Informe a nota N1: 4.2 Informe a nota N2: 1.8 A média do aluno é: 3.0 O aluno reprovou direto. Informe a nota N1: 5.7 Informe a nota N2: 6 A média do aluno é: 5.85 Informe a nota do exame: 7 A média do aluno com o exame é: 6.425 O aluno foi aprovado após o exame. 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) { // variáveis usadas na resolução do problema double n1, n2, media, exame; // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos ler a primeira nota System.out.print("Informe a nota N1: "); n1 = Double.parseDouble(entrada.nextLine()); // a nota é válida? while ((n1 < 0) || (n1 > 10)) { System.out.print("Nota inválida. Informe a nota N1: "); n1 = Double.parseDouble(entrada.nextLine()); } // vamos ler a segunda nota System.out.print("Informe a nota N2: "); n2 = Double.parseDouble(entrada.nextLine()); // a nota é válida? while ((n2 < 0) || (n2 > 10)) { System.out.print("Nota inválida. Informe a nota N2: "); n2 = Double.parseDouble(entrada.nextLine()); } // vamos calcular a média do aluno media = (n1 + n2) / 2.0; System.out.println("A média do aluno é: " + media); // o aluno foi aprovado? if (media >= 7.0) { System.out.println("O aluno foi aprovado"); } // o aluno ficou de exame? else if ((media >= 3.5) && (media < 7.0)){ // vamos ler a nota do exame System.out.print("Informe a nota do exame: "); exame = Double.parseDouble(entrada.nextLine()); // a nota é válida? while ((exame < 0) || (exame > 10)) { System.out.print("Nota inválida. Informe a nota do exame: "); exame = Double.parseDouble(entrada.nextLine()); } // calcula a nota média media = (media + exame) / 2.0; System.out.println("A média do aluno com o exame é: " + media); // o aluno foi aprovado após o exame? if (media >= 5.0) { System.out.println("O aluno foi aprovado após o exame."); } else { System.out.println("O aluno foi reprovado após o exame."); } } // reprovou direto else { System.out.println("O aluno reprovou direto."); } } } |
C ::: Dicas & Truques ::: Matemática e Estatística |
Como usar a função modf() da linguagem C para separar um valor de ponto flutuante em suas partes inteira e fracionáriaQuantidade de visualizações: 10153 vezes |
Em algumas situações precisamos obter as partes inteira e fracionária de um valor de ponto flutuante. Para isso podemos usar a função modf(). Veja sua assinatura:double modf(double x, double * intpart); O parâmetro x é o valor de ponto flutuante cujas partes queremos separar e intpart é uma variável do tipo double que receberá a parte inteira do valor. O retorno da função é o valor fracionário. Vamos ver um exemplo? Veja como podemos quebrar o valor 34,27 em suas partes inteira e fracionária: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { double valor = 34.27; // vamos separar o valor em suas partes inteira e fracionária double inteira = 0.0, fracionaria = 0.0; fracionaria = modf(valor, &inteira); // vamos exibir o resultado printf("Parte inteira: %f\n", inteira); printf("Parte fracionaria: %f\n", fracionaria); printf("\n\n"); system("pause"); return 0; } Ao executarmos este código teremos o seguinte resultado: Parte inteira: 34.000000 Parte fracionária: 0.270000 |
Ruby ::: Dicas & Truques ::: Strings e Caracteres |
Como pesquisar uma substring em uma string em Ruby usando o método index() da classe StringQuantidade de visualizações: 7455 vezes |
Este exemplo mostra como usar o método index() da classe String da linguagem Ruby para testar a existência de uma substring em uma string. Se a substring pesquisada não for encontrada na string, o valor nil é retornado. Veja: # declara e inicializa uma variável string frase = "Gosto muito de Ruby" substring = "Ruby" # vamos verificar se a substring está contida # na string if frase.index(substring) != nil puts("A substring está contida na string") else puts("A substring NÃO está contida na string") end Ao executar este código Ruby nós teremos o seguinte resultado: A substring está contida na string |
C ::: Dicas & Truques ::: Recursão (Recursividade) |
Como escrever uma função recursiva para calcular a potência de um número usando a linguagem CQuantidade de visualizações: 48164 vezes |
Chamamos de potenciação a operação de se elevar um número (uma base) a um determinado expoente e obter sua potência. Veja a figura a seguir:![]() Veja que aqui o valor 5 foi elevado ao cubo, ou seja, ao expoente 3 e obtemos como resultado sua potência: 125. O código abaixo mostra como você pode escrever uma função recursiva em C que permite calcular a potência de um número inteiro: #include <stdio.h> #include <stdlib.h> // função recursiva que calcula a potência de // um inteiro int potencia(int base, int expoente) { if(expoente == 0){ return 1; } else{ return base * potencia(base, expoente - 1); } } int main(int argc, char *argv[]) { int base = 3; int expoente = 4; printf("%d elevado a %d = %d", base, expoente, potencia(base, expoente)); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: 3 elevado a 4 = 81 |
Delphi ::: Dicas & Truques ::: Data e Hora |
Como adicionar ou subtrair dias de uma data em Delphi usando a função IncDay()Quantidade de visualizações: 25279 vezes |
Em algumas situações precisamos adicionar ou subtrair dias de uma determinada data. Em Delphi isso pode ser feito com o auxílio da função IncDay() da unit DateUtils. Este função aceita um TDateTime e a quantidade de dias que queremos acrescentar ao TDateTime fornecido como argumento. O retorno será um novo TDateTime com a quantidade de dias acrescida. Veja um trecho de código no qual adicionamos 4 dias à data atual: procedure TForm1.Button1Click(Sender: TObject); var hoje: TDateTime; begin // não esqueça de adicionar DateUtils ao seus uses // vamos obter a data de hoje hoje := Now; // vamos exibir a data de hoje ShowMessage('Hoje é: ' + DateToStr(hoje)); // vamos adicionar 4 dias à data de hoje hoje := IncDay(hoje, 4); // vamos exibir o resultado ShowMessage('Daqui a 4 dias será: ' + DateToStr(hoje)); end; É possível também usar a função IncDay() para substrair dias de uma data. Para isso só precisamos fornecer uma quantidade negativa de dias. Veja: procedure TForm1.Button1Click(Sender: TObject); var hoje: TDateTime; begin // não esqueça de adicionar DateUtils ao seus uses // vamos obter a data de hoje hoje := Now; // vamos exibir a data de hoje ShowMessage('Hoje é: ' + DateToStr(hoje)); // vamos subtrair 5 dias da data de hoje hoje := IncDay(hoje, -5); // vamos exibir o resultado ShowMessage('Há 5 dias era: ' + DateToStr(hoje)); end; O valor padrão para o segundo argumento de IncDay() é 1. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
JavaScript ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar o caractere associado a um código ASCII ou Unicode em JavaScript usando a função fromCharCode() do objeto StringQuantidade de visualizações: 265 vezes |
Nesta dica mostrarei como podemos retornar o caractere a partir de seu código ASCII ou Unicode em JavaScript. Para isso nós vamos usar a função fromCharCode() do objeto String. Veja a página HTML completa para o exemplo: <!doctype html> <html> <head> <title>Strings em JavaScript</title> </head> <body> <script type="text/javascript"> var codigo = 102; document.write("O caractere para o código " + codigo + " é: " + String.fromCharCode(codigo)); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: O caractere para o código 102 é: f |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Um laço for que conta de 0 até 10Quantidade de visualizações: 13644 vezes |
Pergunta/Tarefa: Escreva uma aplicação console Java que usa o laço for para contar de 0 até 10. Faça dois exemplos. No primeiro você deverá escrever os valores na horizontal e no segundo você deverá escrever os valores na vertical: Resposta/Solução: Este exercício é um dos primeiros sobre o uso de laços nos cursos de Java e você pode fazer usando o Bloco de Notas, Netbeans, Eclipse ou sua IDE favorita. Veja o código que usa o laço for para contar de 0 até 10 e exibir os valores na horizontal: public static void main(String[] args){ // laço for que conta de 0 até 10 e exibe os valores na horizontal for(int i = 0; i <= 10; i++){ System.out.print(i + " "); } } Quando você executar este código, os valores deverão ser impressos da seguinte forma: 0 1 2 3 4 5 6 7 8 9 10 Agora, veja como uma pequena modificação faz com que os valores sejam impressos na vertical: public static void main(String[] args){ // laço for que conta de 0 até 10 e exibe os valores na vertical for(int i = 0; i <= 10; i++){ System.out.println(i + " "); } } Agora os valores serão exibidos da seguinte forma: 0 1 2 3 4 5 6 7 8 9 10 |
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 |
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 |