Java ::: Desafios e Lista de Exercícios Resolvidos ::: Métodos, Procedimentos e Funções |
Exercício Resolvido de Java - Um método Java chamado calcular(int a, int b) que recebe duas variáveis do tipo int e multiplica um valor pelo outro. Em seguidaQuantidade de visualizações: 800 vezes |
Pergunta/Tarefa: Escreva um método Java chamado calcular(int a, int b) que recebe duas variáveis do tipo int e multiplica um valor pelo outro. Em seguida o método deverá dividir o resultado, ou seja, o produto, por 2, e, finalmente, retornar o resto de uma divisão inteira desse resultado pelo número 7. Sua saída deverá ser parecida com: Informe o primeiro valor inteiro: 18 Informe o segundo valor inteiro: 19 O resultado é: 3 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 usar a classe Scanner para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar dois números inteiros System.out.print("Informe o primeiro valor inteiro: "); int a = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o segundo valor inteiro: "); int b = Integer.parseInt(entrada.nextLine()); // vamos obter o resultado de uma chamada à função calcular() int resultado = calcular(a, b); System.out.println("O resultado é: " + resultado); } public static int calcular(int a, int b){ // primeiro multiplicamos as duas variáveis int produto = a * b; // agora dividimos o produto por 2 int temp = produto / 2; // agora obtemos o módulo do resultado por 7 int resultado = temp % 7; // e retornamos o valor calculado return resultado; } } |
QGIS ::: PyQGIS API ::: Shapefiles, Camadas Vetoriais, Dados Vetoriais |
Como carregar um shapefile no QGIS usando o objeto QgsVectorLayer da PyQGIS APIQuantidade de visualizações: 381 vezes |
Nesta dica mostrarei como podemos usar o objeto QgsVectorLayer da PyQGIS API para carregar um arquivo shapefile no QGIS e adicioná-lo como uma nova camada. O primeiro passo é fornecer a localização do arquivo shapefile (.shp), o nome para a nova camada e um data provider, que nesse caso é ogr. Depois de obtido o objeto QgsVector nós efetuamos uma chamada à função isValid() para verificar se a camada é válida. Esse procedimento deve ser sempre usado, pois assegura que os dados são válidos antes de continuar com a execução do código. Para finalizar nós usamos a função addMapLayer() do objeto QgsProject para adicionar a nova camada à coleção de camadas e a exibimos no mapa. Veja o código PyQGIS completo para o exemplo: # vamos criar um novo objeto QgsVectorLayer com o local # do nosso shapefile camada = QgsVectorLayer("C:\\dados\\GO_Municipios_2022.shp", "Municípios Estado de Goiás", "ogr") # vamos testar se a camada é válida if not camada.isValid(): print("Não foi possível carregar a camada %s" % camada.name()) else: # vamos adicionar a camada à relação de camadas QgsProject.instance().addMapLayer(camada) Ao executarmos esse código PyQGIS no QGIS nós temos como resultado um mapa do Estado de Goiás com os seus 246 municípios. |
C# ::: Desafios e Lista de Exercícios Resolvidos ::: Operadores de Manipulação de Bits (Bitwise Operators) |
Exercícios Resolvidos de C# - Como converter de decimal para binário usando os operadores de bits em C#Quantidade de visualizações: 1036 vezes |
Este desafio de programação faz parte da nossa lista de exercícios resolvidos de C#. Pergunta/Tarefa: Escreva um programa C# para pede para o usuário informar um número decimal e faça a conversão para binário usando os operadores de bits. Sua saída deverá ser parecida com: Informe um número decimal: 9 O número binário é: 00000000000000000000000000001001 Veja a resolução completa para o exercício em C#, comentada linha a linha: using System; namespace Estudos { class Principal { // vamos definir o tamanho do vetor para guardar // os dígitos do número binário const int TAM_INT = sizeof(int) * 8; static void Main(string[] args) { // variáveis para ajudar a resolver o problema int dec, indice; // vetor para guardar o número binário int[] binario = new int[TAM_INT]; // vamos pedir para o usuário informar um decimal inteiro Console.Write("Informe um número decimal: "); dec = int.Parse(Console.ReadLine()); // ajustamos índice para o último elemento do vetor indice = TAM_INT - 1; // enquanto índice for maior ou igual a 0 while (indice >= 0) { // vamos guardar o bit menos significativo LSB binario[indice] = dec & 1; // diminuímos o índice indice--; // desloca bits para a direita uma posição dec = dec >> 1; } // agora vamos exibir o número binário Console.Write("O número binário é: "); for (int i = 0; i < TAM_INT; i++) { Console.Write(binario[i]); } Console.WriteLine("\nPressione uma tecla para sair..."); Console.ReadKey(); } } } |
JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como testar se todos os elementos de um array satisfazem uma condição em JavaScript usando a função every()Quantidade de visualizações: 1535 vezes |
Em algumas situações nós gostaríamos de testar todos os elementos de um vetor e verificar se todos eles passam em um determinado teste. Para isso podemos usar a função every(), adicionada à linguagem JavaScript por meio do ECMAScript 5 (JavaScript 5, ECMAScript 2009, ES5). Este método nos permite fornecer uma função de callback que será chamada para cada um dos elementos do vetor. E o retorno do método every() é um valor true se todos os elementos passarem no teste e false em caso contrário. Veja um exemplo no qual testamos se TODOS os elementos de um vetor são maiores que 10: <script type="text/javascript"> function testarTodos(valor, indice, vetor){ if(valor > 10){ return true; } } var valores = new Array(21, 50, 30, 70, 12, 3); // vamos verificar se TODOS os valores são // maiores que 10 var res = valores.every(testarTodos); window.alert("Todos passaram no teste: " + res); </script> Aqui o resultado será false, pois o valor 3 não passou no teste. É importante observar que, assim que a função de callback retorna false pela primeira vez, o método every() já abandona sua execução. Uma função passada para o método every() pode conter os seguintes argumentos (nessa mesma ordem): a) O valor do item; b) O índice do item (opcional); c) O vetor a partir do qual o método every() está sendo chamado (opcional). Como última observação, o método every() não modifica o array original. |
CSS ::: Dicas & Truques ::: Barras de Navegação, Menus e Dropdowns |
Como criar uma barra de navegação horizontal com menu dropdown em HTML e CSS - Menu suspenso usando CSSQuantidade de visualizações: 871 vezes |
Nesta dica mostrarei como podemos usar uma combinação de várias propriedades CSS para criar um menu suspenso, ou seja, uma barra de navegação contendo links normais e também links que, ao passar o mouse, exibe uma lista de sub-menus. O código apresentado neste exemplo é muito útil para estudantes de HTML e CSS, pois apresenta várias propriedades interessantes para melhorar o visual e a usabilidade de suas páginas web. Entre as propriedades CSS usadas na criação deste menu suspenso nós podemos citar overflow, margin, padding, list-style-type, background-color, display, float, text-align, text-decoration, position, min-width e z-index. Note que coloquei o mínimo de código para fazer a barra de menus funcional. Fique à vontade para acrescentar as formatações que você achar interessante. Veja a página HTML e CSS para o exemplo: <!doctype html> <html> <head> <title>Estudos CSS</title> <style> /* estiliza o elemento <ul> */ ul{ background-color: #e0e0e0; margin: 0; padding: 0; overflow: hidden; list-style-type: none; } /* aplica estilo aos elementos <li> */ li{ float: left; } /* aplica estilo aos links e <li> do sub-menu */ li a, .dropdown_linguagens{ display: inline-block; text-align: center; padding: 10px 15px; text-decoration: none; } /* define o display do <li> de linguagens */ li.linguagens{ display: inline-block; } /* aplica estilo ao menu de linguagens */ .menus_linguagens{ display: none; position: absolute; background-color: #eceff1; min-width: 160px; z-index: 1; } /* aplica estilo aos links do sub-menu */ .menus_linguagens a { padding: 10px 15px; text-decoration: none; display: block; text-align: left; } /* exibe o sub-menu ao passar o mouse */ .linguagens:hover .menus_linguagens{ display: block; } /* aplica uma cor diferente aos menus ao passar o mouse */ .menus_linguagens a:hover{ background-color: #cfd8dc; } </style> </head> <body> <h1>Exemplo de Barra de Navegação com Menu Dropdown</h1> <ul> <li><a href="index.php">Inicial</a></li> <li class="linguagens"> <a href="javascript:void(0)" class="dropdown_linguagens"> Linguagens</a> <div class="menus_linguagens"> <a href="java.php">Java</a> <a href="python.php">Python</a> <a href="ruby.php">Ruby</a> <a href="delphi.php">Delphi</a> </div> </li> </ul> </body> </html> |
Python ::: Dicas & Truques ::: Tupla (Tuple) |
Python para iniciantes - Como usar o tipo de dados tuple da linguagem PythonQuantidade de visualizações: 9192 vezes |
Uma tupla (tuple) é similar a uma lista (list), com a exceção de que uma tupla não pode ser modificada, ou seja, é imutável. Veja como criar uma tupla contendo cinco elementos: # Cria uma tupla valores = 4, 76, 2, 98, 4 # Exibe o valor do segundo elemento print valores[1] # Exibe todos os elementos for valor in valores: print valor, Veja agora o que acontece quando tentamos alterar o valor de um dos elementos da tupla: valores[4] = 50 Traceback (most recent call last): File "tuplas.py", line 19, in <module> valores[4] = 50 TypeError: 'tuple' object does not support item assignment Contudo, a variável do tipo tupla pode ser alterada para apontar para uma tupla diferente. Veja: # Cria duas tuplas valores = 4, 76, 2, 98, 4 letras = 'A', 'B', 'C' # Atribue os elementos de letras a valores valores = letras # Exibe o resultado print valores É comum colocar os elementos de uma tupla entre parênteses. Assim, a tupla abaixo é perfeitamente legal: valores = (4, 76, 2, 98, 4) Embora não muito provável, se precisarmos criar uma tupla de apenas um elemento, devemos inserir uma vírgula após ele. Veja: valores = (4,) Tuplas podem conter elementos de diferentes tipos de dados. Veja: # Cria uma tupla contendo tipos diferentes # de dados cliente = (3, "Osmar J. Silva", "Goiânia", "GO", 35) # Exibe o valor do 4º elemento estado = cliente[3] print estado |
C++ ::: Dicas & Truques ::: Ponteiros, Referências e Memória |
Como usar ponteiros em C++ - Apostila de C++ para iniciantesQuantidade de visualizações: 8078 vezes |
Antes de pensarmos em ponteiros, é importante nos lembrarmos de alguns aspectos referentes à variáveis. Dependendo do seu conhecimento de programação, você deve saber que variáveis possuem nomes que as identificam durante a execução do programa. Você deve saber também que uma variável armazena um valor (que pode ser fixo, no caso de uma constante, ou pode mudar durante a execução de seus códigos). O que poucos programadores se lembram é que uma variável possui um endereço, e que o nome da variável não é nada mais que um apelido para a localização deste endereço. Desta forma, um ponteiro não é nada mais que um tipo especial de variável que armazena o endereço de outra. Veja um exemplo: #include <iostream> using namespace std; int main(int argc, char *argv[]){ // variável do tipo int int valor = 10; // ponteiro para uma variável do tipo int int *p = &valor; // exibe o valor da variável "valor", apontada // pelo ponteiro p cout << *p << endl; system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Neste código nós temos a declaração e definição de duas variáveis: int valor = 10; int *p = &valor; A primeira variável é uma variável do tipo int e a segunda é um ponteiro para uma variável do tipo int. Veja que devemos sempre usar "*" antes do nome de um ponteiro em sua declaração. O símbolo "&" serve para indicar que estamos acessando o endereço de uma variável e não o seu conteúdo. O resultado destas duas linhas é que agora temos um ponteiro que nos permite acessar e manipular a variável valor. Observe a linha: cout << *p << endl; Aqui nós estamos acessando o valor da variável apontada por p. Veja o uso do símbolo "*" para acessar o valor da variável. Isso é chamado de desreferenciamento de ponteiros. Pareceu complicado? Veja uma linha de código que altera indiretamente o valor da variável valor para 30: *p = 30; Ponteiros são ferramentas muito importantes na programação em C++. No entanto, é preciso ter muito cuidado ao lidar com eles. A primeira coisa a ter em mente é que um ponteiro não está apontando para nenhum lugar até que atribuimos a ele o endereço de uma outra variável. E é aí que mora o perigo. Um programa entra em colapso absoluto se tentarmos acessar um ponteiro que aponta para um local de memória que já foi liberado novamente ao sistema. No caso menos grave, estaremos tentando acessar locais de memória inválidos ou reservados a outros programas ou tarefas do sistema operacional. Isso me lembra os velhos tempos da tela azul de morte. |
C++ ::: Dicas & Truques ::: Arquivos e Diretórios |
Como renomear um arquivo em C++ usando a função rename()Quantidade de visualizações: 11806 vezes |
Em algumas situações nossos códigos C++ precisam renomear arquivos. Isso pode ser feito com o auxílio da função rename() ou _rename(), disponível no header io.h or stdio.h (trazido da linguagem C). Veja a assinatura desta função:int rename(const char *oldname, const char *newname); a) EINVAL - Invalid argument - Os nomes dos arquivos contém caracteres inválidos; b) ENOENT - No such file or directory - O caminho do arquivo é inválido; c) EACCESS - Acesso negado - Algum outro programa está usando este arquivo e mantém controle sobre o mesmo. Veja um trecho de código C++ no qual renomeamos um arquivo: #include <iostream> using namespace std; int main(int argc, char *argv[]){ // vamos renomear este arquivo char arq_antigo[] = "C:\\Dev-Cpp\\arquivo.txt"; char arq_novo[] = "C:\\Dev-Cpp\\arquivo2.txt"; // vamos testar se o arquivo foi renomeado com sucesso if(rename(arq_antigo, arq_novo) != 0){ cout << "Erro: " << strerror(errno) << endl; } else{ cout << "Arquivo renomeado com sucesso" << endl; } system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } É possível usar a versão Unicode de rename() ou _rename(). O método _wrename, também presente em io.h or stdio.h é útil quando precisamos internacionalizar nossas aplicações. Veja o exemplo: #include <iostream> using namespace std; int main(int argc, char *argv[]){ // vamos renomear este arquivo wchar_t arq_antigo[] = L"C:\\Dev-Cpp\\arquivo.txt"; wchar_t arq_novo[] = L"C:\\Dev-Cpp\\arquivo2.txt"; // vamos testar se o arquivo foi renomeado com sucesso if(_wrename(arq_antigo, arq_novo) != 0){ cout << "Erro: " << strerror(errno) << endl; } else{ cout << "Arquivo renomeado com sucesso" << endl; } system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Como somar o primeiro e o último dígito de um número inteiro informado pelo usuário em JavaQuantidade de visualizações: 889 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede para o usuário informar um número inteiro e mostre a soma do primeiro dígito com o último dígito. Atenção: você deve usar apenas os operadores matemáticos e a função log10(). Sua saída deverá ser parecida com: Informe um número inteiro: 48763 A soma do primeiro e do último dígito é: 7 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 usar a classe Scanner para a leitura dos dados Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar um número inteiro System.out.print("Informe um número inteiro: "); int numero = Integer.parseInt(entrada.nextLine()); // vamos obter a quantidade (-1) de dígitos no número informado int quant = (int)Math.log10(numero); int primeiro_digito = (int)(numero / Math.pow(10, quant)); int ultimo_digito = numero % 10; // soma o primeiro e o último dígito int soma = primeiro_digito + ultimo_digito; // mostra o resultado System.out.println("A soma do primeiro e do último dígito é: " + soma); } } |
Java ::: Coleções (Collections) ::: ArrayList |
Como inverter a ordem dos elementos de uma ArrayList do Java usando a função reverse() da classe CollectionsQuantidade de visualizações: 14254 vezes |
Nesta dica mostrarei como podemos usar o método estático reverse() da classe Collections para reverter (inverter) a ordem dos elementos de uma ArrayList. Note que este método atua diretamente sobre a ArrayList que estamos fornecendo como argumento, e não retorna nada. Veja o exemplo a seguir: package estudos_java; import java.util.ArrayList; import java.util.Collections; public class Estudos{ public static void main(String[] args){ // cria uma ArrayList que conterá strings ArrayList<String> nomes = new ArrayList<>(); // adiciona itens na lista nomes.add("Carlos"); nomes.add("Maria"); nomes.add("Fernanda"); nomes.add("Osmar"); // exibe os elementos da ArrayList for(int i = 0; i < nomes.size(); i++){ System.out.println(nomes.get(i)); } // Vamos inverter a ordem dos elementos Collections.reverse(nomes); // exibe os elementos da ArrayList System.out.println(); for(int i = 0; i < nomes.size(); i++){ System.out.println(nomes.get(i)); } System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: Carlos Maria Fernanda Osmar Osmar Fernanda Maria Carlos |
Nossas 20 dicas & truques de programação mais populares |
Java - Como converter Metros Quadrados em Quilômetros Quadrados em Java - Java para Física e Engenharia |
Você também poderá gostar das dicas e truques de programação abaixo |
Java - Como converter Metros Quadrados em Quilômetros Quadrados em Java - Java para Física e Engenharia |
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 |