Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arquivos e Diretórios |
Exercícios Resolvidos de Java - Listando arquivos e diretórios em um diretório informado pelo usuárioQuantidade de visualizações: 2706 vezes |
Pergunta/Tarefa: Escreva um programa Java que usa o método: public String[] list() Sua saída deverá ser parecida com: ![]() Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: package estudos; import java.io.File; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos solicitar que o usuário informe o diretório a ser listado System.out.print("Informe o diretório a ser listado: "); String diretorioString = entrada.nextLine(); // vamos verificar se o usuário informou um diretorio válido no sistema File diretorio = new File(diretorioString); if(!diretorio.isDirectory()){ System.out.println("O caminho informado não é um diretório válido."); } else{ // é um diretório válido...vamos listar os arquivos String lista[] = diretorio.list(); System.out.println("\nRelação de Arquivos e Diretórios:\n"); for(String item : lista){ System.out.println(item); } } System.out.println("\n"); } } |
Java ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Como implementar a ordenação Quicksort em Java - Apostila de Java para iniciantesQuantidade de visualizações: 423 vezes |
A ordenação Quicksort é um dos algorítmos de ordenação mais encontrados em aplicações reais de programação. No Delphi esta ordenação é encontrada no objeto TList. No Java podemos encontrá-lo no método Arrays.sort(). Na linguagem C a ordenação Quicksort é implementada na função qsort() da biblioteca padrão. O algoritmo de ordenação Quicksort é do tipo dividir para conquistar (divide-and-conquer principle). Neste tipo de algoritmo o problema é dividido em sub-problemas e a solução é concatenada quando as chamadas recursivas atingirem o caso base. O vetor (ou array) a ser ordenado é dividido em duas sub-listas por um elemento chamado pivô, resultando em uma lista com elementos menores que o pivô e outra lista com os elementos maiores que o pivô. Esse processo é repetido para cada chamada recursiva. Sim, a ordenação Quicksort faz uso extensivo de recursividade, razão pela qual devemos ter muito cuidado para não estourar a pilha do sistema. Existem muitos estudos sobre o pivô ideal para a ordenação Quicksort. Nessa dica adotarei o último elemento do array ou sub-array como pivô. Em vetores não ordenados essa estratégia, em geral, resulta em uma boa escolha. Vamos ao código Java então? Veja um programa Java completo demonstrando o uso da ordenação Quicksort para um array de 10 elementos inteiros: package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // vamos declarar um array de 10 elementos int valores[] = new int[10]; // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir ao usuário para informar os valores para o vetor for(int i = 0; i < valores.length; i++){ System.out.print("Informe o valor do elemento " + i + ": "); valores[i] = Integer.parseInt(entrada.nextLine()); } // vamos mostrar o array informado System.out.println("\nO array informado foi:\n"); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } // vamos ordenar o vetor usando a ordenação Quicksort quickSort(valores, 0, valores.length - 1); System.out.println("\n\nO array ordenado é:\n"); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } System.out.println("\n\n"); } // função de implementação da ordenação Quicksort public static void quickSort(int vetor[], int inicio, int fim) { // o início é menor que o fim? if (inicio < fim) { // vamos obter o novo índice da partição int indiceParticao = particionar(vetor, inicio, fim); // efetuamos novas chamadas recursivas quickSort(vetor, inicio, indiceParticao - 1); quickSort(vetor, indiceParticao + 1, fim); } } // função que retorna o índice de partição private static int particionar(int vetor[], int inicio, int fim) { // para guardar o pivô int pivot = vetor[fim]; int i = (inicio - 1); for (int j = inicio; j < fim; j++) { if (vetor[j] <= pivot) { i++; // fazemos a troca int temp = vetor[i]; vetor[i] = vetor[j]; vetor[j] = temp; } } // efetua a troca int temp = vetor[i + 1]; vetor[i + 1] = vetor[fim]; vetor[fim] = temp; return i + 1; } } Ao executar este código Java nós teremos o seguinte resultado: Informe o valor do elemento 0: 7 Informe o valor do elemento 1: 2 Informe o valor do elemento 2: 43 Informe o valor do elemento 3: 1 Informe o valor do elemento 4: 9 Informe o valor do elemento 5: 6 Informe o valor do elemento 6: 22 Informe o valor do elemento 7: 3 Informe o valor do elemento 8: 37 Informe o valor do elemento 9: 5 O array informado foi: 7 2 43 1 9 6 22 3 37 5 O array ordenado é: 1 2 3 5 6 7 9 22 37 43 |
GNU Octave ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como converter graus em radianos usando a função deg2rad() do GNU Octave - GNU Octave para Geometria Analítica e Álgebra LinearQuantidade de visualizações: 1838 vezes |
Quer aprender como calcular radianos ou como converter graus em radianos? Veja a fórmula nessa dica. Quando estamos trabalhando com trigonometria no software GNU Octave, é importante ficarmos atentos ao fato de que todos os métodos e funções trigonométricas nessa linguagem recebem seus argumentos em radianos, em vez de graus. Nesta dica veremos como converter graus em radianos (sem a chatice de ficar relembrando regra de três). Veja a fórmula abaixo: \[Radianos = Graus \times \frac{\pi}{180}\] Agora veja como esta fórmula pode ser escrita no GNU Octave. Primeiro vamos usar a fórmula dada e depois veremos a função deg2rad(). Assim, digite a expressão a seguir na janela de comandos do GNU Octave: >> 30 * (pi / 180) [Enter] ans = 0.5236 >> Agora veja como podemos obter o mesmo resultado usando a função deg2rad(): >> deg2rad(30) [Enter] ans = 0.5236 >> Finalmente, veja como usar esta função em um script do GNU Octave: graus = input("Informe o ângulo em graus: "); radianos = deg2rad(graus); fprintf("O ângulo em radianos é %f\n", radianos); Execute este script e teremos o seguinte resultado na janela de comandos: Informe o ângulo em graus: 30 [Enter] O ângulo em radianos é 0.523599 >> |
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: 418 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 |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como concatenar apenas parte de uma string à outra string usando a função strncat() da linguagem CQuantidade de visualizações: 9935 vezes |
Muitas vezes precisamos adicionar à uma string apenas alguns caracteres de outra, ou seja, não queremos concatenar as duas strings completamente; apenas parte da segunda. Para isso podemos usar a função strncat(). Veja o protótipo e explicação desta função:char *strncat(char *str1, const char *str2, size_t n); Aqui a quantidade n de caracteres da string str2 será anexada ao final da string str1. O caractere de fim de string (null character) da str1 é sobrescrito durante a operação e anexado novamente assim que os caracteres desejados da str2 sejam copiados. Veja um exemplo: #include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]) { char texto[] = "Gosto muito de "; char palavra[] = "C++"; /* Na segunda sequencia de caracteres nós temos "C++", mas queremos anexar à primeira sequencia apenas "C". Veja como isso é feito */ strncat(texto, palavra, 1); // exibe o resultado puts(texto); system("pause"); return 0; } Ao executar este códigos nós teremos o seguinte resultado: Gosto muito de C |
Portugol ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Portugol - Faça um algoritmo em Portugol que leia 9 números inteiros, guarde-os em uma matriz 3x3 e mostre os números paresQuantidade de visualizações: 1079 vezes |
Pergunta/Tarefa: Faça um algoritmo em Portugol que leia 9 números inteiros e guarde-os em uma matriz 3x3. Imprima a matriz no formato tabular, usando a melhor formatação que você conseguir. Em seguida, percorra a matriz novamente e imprima somente os números que são pares, todos na mesma linha e separados por espaço. Sua saída deverá ser parecida com: Linha 1 e coluna 1: 8 Linha 1 e coluna 2: 1 Linha 1 e coluna 3: 5 Linha 2 e coluna 1: 3 Linha 2 e coluna 2: 9 Linha 2 e coluna 3: 30 Linha 3 e coluna 1: 7 Linha 3 e coluna 2: 23 Linha 3 e coluna 3: 10 Valores na matriz 8 1 5 3 9 30 7 23 10 Os valores pares são: 8 30 10 Veja a resolução completa para o exercício em Portugol, comentada linha a linha (fiz a resolução no Portugol Webstudio): // Um algoritmo que lê uma matriz 3x3 programa { funcao inicio() { // variáveis usadas na resolução do problema inteiro matriz[3][3] inteiro i, j // vamos pedir para o usuário informar os valores // dos elementos da matriz, uma linha de cada vez para (inteiro i = 0; i < 3; i++) { para (inteiro j = 0; j < 3; j++) { escreva("Linha ", (i + 1), " e coluna ", (j + 1), ": ") leia(matriz[i][j]) } } // vamos mostrar a matriz da forma que ela foi informada escreva("\nValores na matriz:\n\n") para (inteiro i = 0; i < 3; i++) { para (inteiro j = 0; j < 3; j++) { escreva(matriz[i][j], " ") } // passa para a próxima linha da matriz escreva("\n") } // agora vamos percorrer a matriz novamente e mostrar // apenas os valores pares escreva("\nOs valores pares são: ") para (inteiro i = 0; i < 3; i++) { para (inteiro j = 0; j < 3; j++) { // é um número par? se (matriz[i][j] % 2 == 0) { escreva(matriz[i][j], " ") } } } } } |
VB.NET ::: Desafios e Lista de Exercícios Resolvidos ::: VB.NET Básico |
Exercício Resolvido de VB.NET - Como ler um número inteiro e imprimir seu sucessor e seu antecessor em VB.NETQuantidade de visualizações: 725 vezes |
Pergunta/Tarefa: Escreva um programa VB.NET para ler um número inteiro e imprimir seu sucessor e seu antecessor. O usuário poderá informar um valor positivo ou negativo. Sua saída deverá ser parecida com: Informe um número inteiro: 16 O número informado foi: 16 O antecessor é 15 O sucessor é: 17 Veja a resolução comentada deste exercício usando VB.NET: Imports System Module Program Sub Main(args As String()) ' vamos pedir ao usuário que informe um número inteiro Console.Write("Informe um número inteiro: ") Dim numero As Integer = Integer.Parse(Console.ReadLine()) ' vamos calcular o sucessor do número informado Dim sucessor As Integer = numero + 1 ' vamos calcular o antecessor do número informado Dim antecessor As Integer = numero - 1 ' e agora mostramos os resultados Console.WriteLine("O número informado foi: {0}", numero) Console.WriteLine("O antecessor é {0}", antecessor) Console.WriteLine("O sucessor é: {0}", sucessor) Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...") ' pausa o programa Console.ReadKey() End Sub End Module |
PHP ::: Fundamentos da Linguagem ::: Tipos de Dados |
PHP para iniciantes - Como usar o tipo de dados float do PHPQuantidade de visualizações: 12640 vezes |
Números de ponto-flutuante, ou float (também conhecido com double ou real) representam números com casas decimais. Assim como o tipo integer, a faixa de limite deste tipo depende da arquitetura da máquina na qual o PHP está sendo executado. A faixa de números de ponto-flutuante em PHP equivale à faixa do tipo de dados double de seu compilador C. Geralmente esta faixa está entre 1.7E-308 e 1.7E+308 com 15 dígitos de precisão. Se precisarmos de uma precisão ainda maior, podemos usar as extensões BC e GMP. O PHP reconhece números de ponto-flutuante escritos de duas formas diferentes. Eis a que usamos mais comumente: 3.14 0.017 -7.1 E a forma usando notação científica: 0.314E1 // 0.314*101, ou 3.14 17.0E-3 // 17.0*10-3, ou 0.017 Valores de ponto-flutuante são apenas representações aproximadas de números. Por exemplo, em muitos sistemas, 3,5 é na verdade representado como 3,4999999999. Isso quer dizer que devemos ter cuidado ao comparar valores de ponto-flutuante usando ==. O mais correto é comparar usando várias casas decimais: if(int($a * 1000) == int($b * 1000)){ // comparação baseada em três casas decimais } Se quisermos verificar se uma variável é do tipo float, podemos usar as funções is_float() ou is_real(). Veja: <? $valor = 0.6; if(is_float($valor)){ echo 'A variável $valor é do tipo float'; } ?> |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Data e Hora |
Exercícios Resolvidos de Java - Datas e horas - Escreva um programa Java que mostre a hora atual no formato HH:MM:SSQuantidade de visualizações: 3146 vezes |
Exercício Resolvido de Java - Datas e horas - Escreva um programa Java que mostre a hora atual no formato HH:MM:SS Pergunta/Tarefa: Escreva um programa Java console que mostre a hora atual no formato HH:MM:SS, ou seja, algo parecido com 23:43:15. Dica: Você pode usar várias classes Java para obter a hora atual. Não precisa se prender à classe que usei na resolução do exercício. Sua saída deverá ser parecida com: ![]() Resposta/Solução: package arquivodecodigos; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Estudos{ public static void main(String[] args){ DateTimeFormatter dtf = DateTimeFormatter.ofPattern("HH:mm:ss"); LocalDateTime agora = LocalDateTime.now(); System.out.println("A hora atual é: " + dtf.format(agora)); } } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Um programa que calcule e mostre a tabuada de multiplicação de um número digitado pelo usuário (entre 1 e 10)Quantidade de visualizações: 6651 vezes |
Pergunta/Tarefa: Escreva um programa Java que usa o laço for para calcular a tabuada de multiplicação para um número digitado pelo usuário. Este número deve estar entre 1 e 10 (inclusive). Sua saída deve ser parecida com: Informe um valor entre 1 e 10: 8 A tabuada do número 8 é: 8 X 1 = 8 8 X 2 = 16 8 X 3 = 24 8 X 4 = 32 8 X 5 = 40 8 X 6 = 48 8 X 7 = 56 8 X 8 = 64 8 X 9 = 72 8 X 10 = 80 Veja a resolução comentada deste exercício usando Java console: package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos solicitar que o usuário informe um inteiro entre 1 e 10 System.out.print("Informe um valor entre 1 e 10: "); int numero = Integer.parseInt(entrada.nextLine()); // vamos verificar se o valor está na faixa desejada if((numero < 1) || (numero > 10)){ System.out.println("O número deve ser entre 1 e 10"); } else{ // o número é válido....vamos exibir a tabuada System.out.println("\nA tabuada do número " + numero + " é:\n"); for(int i = 1; i <= 10; i++){ System.out.println(numero + " X " + i + " = " + (numero * i)); } } System.out.println("\n"); } } |
Nossas 20 dicas & truques de programação mais populares |
AutoCAD Civil 3D - Como criar pontos COGO no AutoCAD Civil 3D Java - Como carregar uma imagem em um BufferedImage do Java usando o método read() da classe ImageIO |
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 |