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 Apenas R$ 32,90
VisuAlg ::: Dicas & Truques ::: Matemática e Estatística

Como calcular porcentagem em VisuAlg - Como efetuar cálculos de porcentagem em VisuAlg

Quantidade de visualizações: 2594 vezes
Cálculos de porcentagens estão presentes em boa parte das aplicações que desenvolvemos. Porém, há momentos em que a mente trava e não conseguimos lembrar com clareza como estes cálculos são feitos, principalmente em VisuAlg.

Esta anotação tem o objetivo de ser uma fonte de pesquisa para os momentos em que suas habilidades matemáticas insistirem em continuar ocultas.

Ex: 1 - Suponhamos que um produto que custe R$ 178,00 sofra um acréscimo de 15%. Qual o valor final do produto? Veja o código em VisuAlg:

algoritmo "Algoritmo que calcula porcentagem"

var
  // variáveis usadas na resolução do problema
  valor, percentual, valor_final: real

inicio
  valor <- 178.00 // valor original
  percentual <- 15.0 / 100.0 // 15%
  valor_final <- valor + (percentual * valor)

  // mostra o resultado
  escreva("O valor final do produto é: ", valor_final)

  // O resultado será 204,70

fimalgoritmo

Ex: 2 - Um produto, cujo valor original era de R$ 250,00, teve um desconto de 8%. Qual foi seu valor final? Veja o código em VisuAlg:

algoritmo "Algoritmo que calcula porcentagem"

var
  // variáveis usadas na resolução do problema
  valor, percentual, valor_final: real

inicio
  valor <- 250.00; // valor original
  percentual <- 8.0 / 100.0 // 8%
  valor_final <- valor - (percentual * valor)

  // mostra o resultado
  escreva("O valor final do produto é: ", valor_final)

  // O resultado será 230,00

fimalgoritmo

Ex: 3 - Em um concurso de perguntas e respostas, um jovem acertou 72 das 90 perguntas apresentadas. Qual foi a porcentagem de acertos? E a porcentagem de erros? Veja o código em VisuAlg:

algoritmo "Algoritmo que calcula porcentagem"

var
  // variáveis usadas na resolução do problema
  perguntas, acertos: real

inicio
  perguntas <- 90.0
  acertos <- 72.0

  // mostra a porcentagem de acertos
  escreva("Porcentagem de acertos: ")
  escreval(((acertos / perguntas) * 100), "%")

  // mostra a porcentagem de erros
  escreva("Porcentagem de erros: ")
  escreval((((perguntas - acertos) / perguntas) * 100), "%")

  // Os resultados serão 80% e 20%

fimalgoritmo

Ex: 4 - Um aparelho de CD foi adquirido por R$ 300,00 e revendido por R$ 340,00. Qual foi a porcentagem de lucro na transação? Veja o código em VisuAlg:

algoritmo "Algoritmo que calcula porcentagem"

var
  // variáveis usadas na resolução do problema
  valor_anterior, novo_valor, porcentagem_lucro: real

inicio
  valor_anterior <- 300.0 // valor anterior
  novo_valor <- 340.0 // valor novo

  // calcula a porcentagem de lucro
  // efetua o cálculo
  porcentagem_lucro <- ((novo_valor * 100) / valor_anterior) - 100

  escreva("A porcentagem de lucro foi de: ", porcentagem_lucro, "%")

  // O resultado será 13,33

fimalgoritmo

Ex: 5 - Uma loja repassa 5% do lucro a seus vendedores. Se um produto custa R$ 70,00, qual o valor em reais repassado a um determinado vendedor? Veja o código em VisuAlg:

algoritmo "Algoritmo que calcula porcentagem"

var
  // variáveis usadas na resolução do problema
  valor, percentual, comissao: real

inicio
  valor <- 70.0 // valor do produto
  percentual <- 5.0 / 100.0 // 5%

  // calcula a comissão
  comissao <- percentual * valor

  // mostra o resultado
  escreva("O valor repassado ao vendedor é: ", comissao)

  // O resultado será 3,5

fimalgoritmo



Java ::: Tratamento de Erros ::: Erros de Tempo de Execução

Como corrigir um erro ClassCastException em Java - Como tratar a exceção ClassCastException do Java

Quantidade de visualizações: 17036 vezes
A exceção ClassCastException é um erro de tempo de execução que ocorre quando tentamos fazer um cast (coerção - conversão explícita) de uma classe para outra classe diferente desta ou que não seja uma superclasse desta. Em outras palavras, casts válidos para classes e interfaces devem seguir as regras abaixo:

1) Se NovoTipo é uma classe, a classe da expressão sendo convertida deve ser do tipo NovoTipo ou herdar de NovoTipo.
2) Se NovoTipo é uma interface, a classe da expressão sendo convertida deve implementar NovoTipo.

Considere o código a seguir:

public class Estudos{
  public static void main(String args[]){
    Object x = new Integer(0);
    System.out.println((String)x);
  }
}

Este código compila normalmente. Porém, ao ser executado, a seguinte mensagem de erro é exibida:

Exception in thread "main" 
java.lang.ClassCastException: java.lang.Integer 
cannot be cast to java.lang.String
  at Estudos.main(Estudos.java:4)


Esta mensagem nos informa que a classe Integer não pode sofrer um cast para String, uma vez que Integer não é e nem herda de String. Veja agora a nova versão:

public class Estudos{
  public static void main(String args[]){
    Object x = new Integer(0);
    System.out.println((Integer)x);
  }
}

Veja que agora nós estamos fazendo o cast de uma referência Object para Integer. Embora Object não seja e nem herde de Integer, o sistema de tempo de execução sabe que x guarda atualmente uma referência a um Integer:

Object x = new Integer(0);



JavaScript ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas

Como calcular a equação reduzida da reta em JavaScript dados dois pontos pertencentes à reta

Quantidade de visualizações: 803 vezes
Nesta dica de JavaScript 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 JavaScript completo para esta tarefa:

<!doctype html>
<html>
<head>
  <title>Equação da Reta em JavaScript</title>
</head>
<body>

<script type="text/javascript">
  // vamos ler as coordenadas do primeiro ponto
  var x1 = parseFloat(
    window.prompt("Coordenada x do primeiro ponto: "));
  var y1 = parseFloat(
    window.prompt("Coordenada y do primeiro ponto: "));	
  
  // vamos ler as coordenadas do segundo ponto
  var x2 = parseFloat(
    window.prompt("Coordenada x do primeiro ponto: "));
  var y2 = parseFloat(
    window.prompt("Coordenada y do primeiro ponto: "));
    
  var sinal = "+";
  // vamos calcular o coeficiente angular da reta
  var m = (y2 - y1) / (x2 - x1);
  // vamos calcular o coeficiente linear
  var 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
  document.write("Equação reduzida: y = " + m + "x" 
    + " " + sinal + " " + n);	
</script>
  
</body>
</html>

Ao executar este código JavaScript 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.


Python ::: Itertools ::: Iteradores de Combinação e Permutação

Como gerar permutações de uma string em Python usando o objeto permutations do módulo Itertools

Quantidade de visualizações: 926 vezes
Nesta dica mostrarei como podemos usar o objeto permutations do módulo Itertools para gerar as permutações simples de uma string.

Na permutação simples, quando os elementos não se repetem, a quantidade de conjuntos gerados a partir do conjunto analisado equivale a n!, onde n é a quantidade de elementos no conjunto a partir do qual a permutação ocorrerá.

Dessa forma, para a palavra LOTE, a quantidade de permutações possíveis (sem repetição) é 4! = 24.

Veja o código Python completo que gera as permutações simples para a palavra LOTE:

# vamos importar o objeto permutations do Itertools
from itertools import permutations

def main():
  # palavra contendo os caracteres que queremos
  # gerar a permutação. Veja que não vamos usar
  # caracteres repetidos
  palavra = "LOTE"

  # agora obtemos uma lista com as permutações possíveis
  permutacoes = [''.join(p) for p in permutations(palavra)]

  # e mostramos o resultado
  print("As permutações para a palavra {0} são:\n".format(palavra))
  print(permutacoes)

if __name__== "__main__":
  main()

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

As permutações para a palavra LOTE são:

['LOTE', 'LOET', 'LTOE', 'LTEO', 'LEOT', 'LETO', 'OLTE', 'OLET', 'OTLE', 'OTEL', 'OELT', 'OETL', 'TLOE', 'TLEO', 'TOLE', 'TOEL', 'TELO', 'TEOL', 'ELOT', 'ELTO', 'EOLT', 'EOTL', 'ETLO', 'ETOL']


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é 10

Quantidade de visualizações: 13641 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



QGIS ::: PyQGIS API ::: Shapefiles, Camadas Vetoriais, Dados Vetoriais

Como exibir todos os atributos das feições de uma camada vetorial no QGIS usando getFeatures() e attributes() da PyQGIS API

Quantidade de visualizações: 894 vezes
Nesta dica mostrarei como podemos acessar todos os atributos das feições (features) de uma camada vetorial no QGIS usando getFeatures() e attributes() do objeto QgsVectorLayer da PyQGIS API.

Depois de carregar o shapefile contendo todos os municípios do Estado de Goiás, usei a getFeatures() para retornar um iterador QgsFeatureIterator que nos permite acessar as features individuais da camada.

Então, de posse das feições individuais, nós usamos a função attributes() para retornar o QgsFeature correspondente e exibir seu conteúdo.

Veja o código PyQGIS completo para o exemplo:

# vamos criar um novo objeto QgsVectorLayer com o local do nosso shapefile
camada = QgsVectorLayer("C:\\GO\\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)
  
  # vamos obter as feições
  feicoes = camada.getFeatures()
  
  # agora percorremos as feições e obtemos os seus
  # atributos, todos de uma só vez ou individual,
  # como mostro em outras dicas
  for f in feicoes:
    # vamos obter os atributos desta feição
    atributos = f.attributes()
    # e mostramos o resultado
    print(atributos)

Ao rodar esse código PyQGIS no QGIS nós teremos o seguinte resultado:

['5200050', 'Abadia de Goiás', 'GO', 143.357]
['5200100', 'Abadiânia', 'GO', 1044.555]
['5200134', 'Acreúna', 'GO', 1566.742]
['5200159', 'Adelândia', 'GO', 115.385]
['5200175', 'Água Fria de Goiás', 'GO', 2023.636]
['5200209', 'Água Limpa', 'GO', 458.836]
['5200258', 'Águas Lindas de Goiás', 'GO', 191.817]
['5200308', 'Alexânia', 'GO', 846.876]
['5200506', 'Aloândia', 'GO', 102.094]
['5200555', 'Alto Horizonte', 'GO', 500.342]
['5200605', 'Alto Paraíso de Goiás', 'GO', 2594.998]
['5200803', 'Alvorada do Norte', 'GO', 1268.347]
['5200829', 'Amaralina', 'GO', 1343.742]
['5200852', 'Americano do Brasil', 'GO', 133.834]
['5200902', 'Amorinópolis', 'GO', 406.93]
['5201108', 'Anápolis', 'GO', 935.672]
['5201207', 'Anhanguera', 'GO', 55.569]
['5201306', 'Anicuns', 'GO', 976.038]
['5201405', 'Aparecida de Goiânia', 'GO', 279.954]
['5201454', 'Aparecida do Rio Doce', 'GO', 603.254]
['5201504', 'Aporé', 'GO', 2899.237]
['5201603', 'Araçu', 'GO', 149.776]
['5201702', 'Aragarças', 'GO', 661.677]
['5201801', 'Aragoiânia', 'GO', 218.125]
['5202155', 'Araguapaz', 'GO', 2188.1]
['5202353', 'Arenópolis', 'GO', 1075.535]
['5202502', 'Aruanã', 'GO', 3054.773]
['5202601', 'Aurilândia', 'GO', 565.514]
['5202809', 'Avelinópolis', 'GO', 170.228]
['5203104', 'Baliza', 'GO', 1780.173]
['5203203', 'Barro Alto', 'GO', 1080.268]
['5203302', 'Bela Vista de Goiás', 'GO', 1274.034]
['5203401', 'Bom Jardim de Goiás', 'GO', 1901.137]
['5203500', 'Bom Jesus de Goiás', 'GO', 1405.605]
['5203559', 'Bonfinópolis', 'GO', 121.915]
['5203575', 'Bonópolis', 'GO', 1635.319]
['5203609', 'Brazabrantes', 'GO', 125.326]
['5203807', 'Britânia', 'GO', 1458.459]
['5203906', 'Buriti Alegre', 'GO', 901.932]
['5203939', 'Buriti de Goiás', 'GO', 202.576]
['5203962', 'Buritinópolis', 'GO', 246.075]
['5204003', 'Cabeceiras', 'GO', 1126.434]
['5204102', 'Cachoeira Alta', 'GO', 1657.226]
['5204201', 'Cachoeira de Goiás', 'GO', 424.49]
['5204250', 'Cachoeira Dourada', 'GO', 528.281]
['5204300', 'Caçu', 'GO', 2254.34]
['5204409', 'Caiapônia', 'GO', 8627.961]
['5204508', 'Caldas Novas', 'GO', 1608.523]
['5204557', 'Caldazinha', 'GO', 251.72]
['5204607', 'Campestre de Goiás', 'GO', 272.734]
['5204656', 'Campinaçu', 'GO', 1978.386]
['5204706', 'Campinorte', 'GO', 1064.541]
['5204805', 'Campo Alegre de Goiás', 'GO', 2450.111]
['5204854', 'Campo Limpo de Goiás', 'GO', 156.113]
['5204904', 'Campos Belos', 'GO', 735.126]
['5204953', 'Campos Verdes', 'GO', 443.125]
['5205000', 'Carmo do Rio Verde', 'GO', 419.821]
['5205059', 'Castelândia', 'GO', 299.228]
['5205109', 'Catalão', 'GO', 3826.37]
['5205208', 'Caturaí', 'GO', 205.065]
['5205307', 'Cavalcante', 'GO', 6948.78]
['5205406', 'Ceres', 'GO', 213.07]
['5205455', 'Cezarina', 'GO', 417.08]
['5205471', 'Chapadão do Céu', 'GO', 2184.076]
['5205497', 'Cidade Ocidental', 'GO', 389.984]
['5205513', 'Cocalzinho de Goiás', 'GO', 1785.339]
['5205521', 'Colinas do Sul', 'GO', 1707.519]
['5205703', 'Córrego do Ouro', 'GO', 458.077]
['5205802', 'Corumbá de Goiás', 'GO', 1064.833]
['5205901', 'Corumbaíba', 'GO', 1864.277]
['5206206', 'Cristalina', 'GO', 6153.921]
['5206305', 'Cristianópolis', 'GO', 221.624]
['5206404', 'Crixás', 'GO', 4673.039]
['5206503', 'Cromínia', 'GO', 364.918]
['5206602', 'Cumari', 'GO', 568.365]
['5206701', 'Damianópolis', 'GO', 417.625]
['5206800', 'Damolândia', 'GO', 86.057]
['5206909', 'Davinópolis', 'GO', 482.857]
['5207105', 'Diorama', 'GO', 685.382]
['5207253', 'Doverlândia', 'GO', 3227.558]
['5207352', 'Edealina', 'GO', 598.218]
['5207402', 'Edéia', 'GO', 1469.099]
['5207501', 'Estrela do Norte', 'GO', 301.139]
['5207535', 'Faina', 'GO', 1949.685]
['5207600', 'Fazenda Nova', 'GO', 1279.107]
['5207808', 'Firminópolis', 'GO', 422.34]
['5207907', 'Flores de Goiás', 'GO', 3695.106]
['5208004', 'Formosa', 'GO', 5804.292]
['5208103', 'Formoso', 'GO', 843.42]
['5208152', 'Gameleira de Goiás', 'GO', 588.328]
['5208301', 'Divinópolis de Goiás', 'GO', 828.874]
['5208400', 'Goianápolis', 'GO', 166.642]
['5208509', 'Goiandira', 'GO', 569.917]
['5208608', 'Goianésia', 'GO', 1547.319]
['5208707', 'Goiânia', 'GO', 729.296]
['5208806', 'Goianira', 'GO', 213.772]
['5208905', 'Goiás', 'GO', 3108.423]
['5209101', 'Goiatuba', 'GO', 2479.591]
['5209150', 'Gouvelândia', 'GO', 827.373]
['5209200', 'Guapó', 'GO', 514.178]
['5209291', 'Guaraíta', 'GO', 205.533]
['5209408', 'Guarani de Goiás', 'GO', 1221.054]
['5209457', 'Guarinos', 'GO', 593.188]
['5209606', 'Heitoraí', 'GO', 228.615]
['5209705', 'Hidrolândia', 'GO', 952.122]
['5209804', 'Hidrolina', 'GO', 583.756]
['5209903', 'Iaciara', 'GO', 1547.183]
['5209937', 'Inaciolândia', 'GO', 689.201]
['5209952', 'Indiara', 'GO', 955.419]
['5210000', 'Inhumas', 'GO', 614.887]
['5210109', 'Ipameri', 'GO', 4382.863]
['5210158', 'Ipiranga de Goiás', 'GO', 244.209]
['5210208', 'Iporá', 'GO', 1027.249]
['5210307', 'Israelândia', 'GO', 579.19]
['5210406', 'Itaberaí', 'GO', 1461.916]
['5210562', 'Itaguari', 'GO', 142.652]
['5210604', 'Itaguaru', 'GO', 241.029]
['5210802', 'Itajá', 'GO', 2082.736]
['5210901', 'Itapaci', 'GO', 952.998]
['5211008', 'Itapirapuã', 'GO', 2047.874]
['5211206', 'Itapuranga', 'GO', 1281.404]
['5211305', 'Itarumã', 'GO', 3437.367]
['5211404', 'Itauçu', 'GO', 383.066]
['5211503', 'Itumbiara', 'GO', 2447.014]
['5211602', 'Ivolândia', 'GO', 1260.841]
['5211701', 'Jandaia', 'GO', 863.087]
['5211800', 'Jaraguá', 'GO', 1848.947]
['5211909', 'Jataí', 'GO', 7178.792]
['5212006', 'Jaupaci', 'GO', 528.783]
['5212055', 'Jesúpolis', 'GO', 115.211]
['5212105', 'Joviânia', 'GO', 446.258]
['5212204', 'Jussara', 'GO', 4092.34]
['5212253', 'Lagoa Santa', 'GO', 463.289]
['5212303', 'Leopoldo de Bulhões', 'GO', 476.137]
['5212501', 'Luziânia', 'GO', 3962.107]
['5212600', 'Mairipotaba', 'GO', 468.029]
['5212709', 'Mambaí', 'GO', 858.27]
['5212808', 'Mara Rosa', 'GO', 1695.463]
['5212907', 'Marzagão', 'GO', 225.518]
['5212956', 'Matrinchã', 'GO', 1150.503]
['5213004', 'Maurilândia', 'GO', 389.959]
['5213053', 'Mimoso de Goiás', 'GO', 1380.701]
['5213087', 'Minaçu', 'GO', 2854.137]
['5213103', 'Mineiros', 'GO', 9042.844]
['5213400', 'Moiporá', 'GO', 452.314]
['5213509', 'Monte Alegre de Goiás', 'GO', 3119.86]
['5213707', 'Montes Claros de Goiás', 'GO', 2900.397]
['5213756', 'Montividiu', 'GO', 1869.581]
['5213772', 'Montividiu do Norte', 'GO', 1337.232]
['5213806', 'Morrinhos', 'GO', 2846.299]
['5213855', 'Morro Agudo de Goiás', 'GO', 282.333]
['5213905', 'Mossâmedes', 'GO', 684.882]
['5214002', 'Mozarlândia', 'GO', 1738.516]
['5214051', 'Mundo Novo', 'GO', 2141.534]
['5214101', 'Mutunópolis', 'GO', 955.069]
['5214408', 'Nazário', 'GO', 281.147]
['5214507', 'Nerópolis', 'GO', 204.713]
['5214606', 'Niquelândia', 'GO', 9846.293]
['5214705', 'Nova América', 'GO', 209.432]
['5214804', 'Nova Aurora', 'GO', 307.335]
['5214838', 'Nova Crixás', 'GO', 7308.681]
['5214861', 'Nova Glória', 'GO', 411.753]
['5214879', 'Nova Iguaçu de Goiás', 'GO', 625.625]
['5214903', 'Nova Roma', 'GO', 2136.725]
['5215009', 'Nova Veneza', 'GO', 122.354]
['5215207', 'Novo Brasil', 'GO', 649.349]
['5215231', 'Novo Gama', 'GO', 192.285]
['5215256', 'Novo Planalto', 'GO', 1254.491]
['5215306', 'Orizona', 'GO', 1971.265]
['5215405', 'Ouro Verde de Goiás', 'GO', 208.804]
['5215504', 'Ouvidor', 'GO', 411.318]
['5215603', 'Padre Bernardo', 'GO', 3142.615]
['5215652', 'Palestina de Goiás', 'GO', 1318.047]
['5215702', 'Palmeiras de Goiás', 'GO', 1537.196]
['5215801', 'Palmelo', 'GO', 59.809]
['5215900', 'Palminópolis', 'GO', 393.326]
['5216007', 'Panamá', 'GO', 432.204]
['5216304', 'Paranaiguara', 'GO', 1153.415]
['5216403', 'Paraúna', 'GO', 3786.578]
['5216452', 'Perolândia', 'GO', 1033.657]
['5216809', 'Petrolina de Goiás', 'GO', 530.49]
['5216908', 'Pilar de Goiás', 'GO', 906.048]
['5217104', 'Piracanjuba', 'GO', 2374.232]
['5217203', 'Piranhas', 'GO', 2045.088]
['5217302', 'Pirenópolis', 'GO', 2200.369]
['5217401', 'Pires do Rio', 'GO', 1077.641]
['5217609', 'Planaltina', 'GO', 2558.924]
['5217708', 'Pontalina', 'GO', 1434.289]
['5218003', 'Porangatu', 'GO', 4825.287]
['5218052', 'Porteirão', 'GO', 606.262]
['5218102', 'Portelândia', 'GO', 553.411]
['5218300', 'Posse', 'GO', 2076.99]
['5218391', 'Professor Jamil', 'GO', 356.292]
['5218508', 'Quirinópolis', 'GO', 3786.026]
['5218607', 'Rialma', 'GO', 268.291]
['5218706', 'Rianápolis', 'GO', 157.379]
['5218789', 'Rio Quente', 'GO', 244.655]
['5218805', 'Rio Verde', 'GO', 8374.255]
['5218904', 'Rubiataba', 'GO', 750.659]
['5219001', 'Sanclerlândia', 'GO', 509.402]
['5219100', 'Santa Bárbara de Goiás', 'GO', 140.957]
['5219209', 'Santa Cruz de Goiás', 'GO', 1109.007]
['5219258', 'Santa Fé de Goiás', 'GO', 1164.186]
['5219308', 'Santa Helena de Goiás', 'GO', 1142.337]
['5219357', 'Santa Isabel', 'GO', 812.756]
['5219407', 'Santa Rita do Araguaia', 'GO', 1357.197]
['5219456', 'Santa Rita do Novo Destino', 'GO', 970.448]
['5219506', 'Santa Rosa de Goiás', 'GO', 166.44]
['5219605', 'Santa Tereza de Goiás', 'GO', 789.544]
['5219704', 'Santa Terezinha de Goiás', 'GO', 1206.6]
['5219712', 'Santo Antônio da Barra', 'GO', 450.336]
['5219738', 'Santo Antônio de Goiás', 'GO', 135.022]
['5219753', 'Santo Antônio do Descoberto', 'GO', 943.948]
['5219803', 'São Domingos', 'GO', 3335.999]
['5219902', 'São Francisco de Goiás', 'GO', 416.535]
['5220009', "São João d'Aliança", 'GO', 3334.455]
['5220058', 'São João da Paraúna', 'GO', 286.979]
['5220108', 'São Luís de Montes Belos', 'GO', 829.62]
['5220157', 'São Luiz do Norte', 'GO', 583.832]
['5220207', 'São Miguel do Araguaia', 'GO', 6150.179]
['5220264', 'São Miguel do Passa Quatro', 'GO', 537.347]
['5220280', 'São Patrício', 'GO', 172.763]
['5220405', 'São Simão', 'GO', 415.015]
['5220454', 'Senador Canedo', 'GO', 247.005]
['5220504', 'Serranópolis', 'GO', 5521.774]
['5220603', 'Silvânia', 'GO', 2349.924]
['5220686', 'Simolândia', 'GO', 346.811]
['5220702', "Sítio d'Abadia", 'GO', 1611.851]
['5221007', 'Taquaral de Goiás', 'GO', 205.665]
['5221080', 'Teresina de Goiás', 'GO', 784.793]
['5221197', 'Terezópolis de Goiás', 'GO', 107.407]
['5221304', 'Três Ranchos', 'GO', 284.034]
['5221403', 'Trindade', 'GO', 712.69]
['5221452', 'Trombas', 'GO', 802.905]
['5221502', 'Turvânia', 'GO', 482.317]
['5221551', 'Turvelândia', 'GO', 935.659]
['5221577', 'Uirapuru', 'GO', 1154.305]
['5221601', 'Uruaçu', 'GO', 2142.484]
['5221700', 'Uruana', 'GO', 522.904]
['5221809', 'Urutaí', 'GO', 623.821]
['5221858', 'Valparaíso de Goiás', 'GO', 61.488]
['5221908', 'Varjão', 'GO', 517.402]
['5222005', 'Vianópolis', 'GO', 954.115]
['5222054', 'Vicentinópolis', 'GO', 733.794]
['5222203', 'Vila Boa', 'GO', 1052.593]
['5222302', 'Vila Propício', 'GO', 2181.593]

Note que mostrei todos os atributos das 246 feições (features) do meu shapefile. E cada feição representa um dos municípios do Estado de Goiás. Veja que os atributos são o código do município, seu nome, a sigla do estado e sua área (em metros quadrados). Deixei a listagem completa para facilitar alguém que queira fazer trabalhos relacionados a isso.


Python ::: Pillow Python Imaging Library ::: Image

Como abrir uma imagem no Pillow do Python usando a função open() do objeto Image

Quantidade de visualizações: 1646 vezes
A função open() do objeto Image da biblioteca Pilow do Python é muito útil quando queremos abrir uma imagem para fins de edição ou exibição. Em sua forma mais simples este método exige apenas o caminho e nome da imagem e retorna um objeto PIL Image.

Veja um trecho de código no qual usamos a função open() para abrir a imagem e, em seguida, usamos a função show() para exibir a imagem no visualizador de imagens padrão definido em nossa máquina:

# vamos importar a biblioteca Pilow
from PIL import Image

# método principal
def main():
  # vamos abrir uma imagem
  imagem = Image.open("Mulher.png")

  # vamos exibir a imagem no visualizador padrão
  imagem.show("Foto a partir do Pilow")

if __name__== "__main__":
  main()

Note que o método show() do objeto Image é usado, na maioria das vezes, com o propósito de depuração de nossos códigos, já que ele cria um arquivo temporário e o envia ao visualizador padrão. Dessa forma nós podemos editar a imagem na memória e enviar para o visualizador todas as vezes que quisermos ver algum resultado.


C++ ::: Win32 API (Windows API) ::: Edit Control

Como definir a cor de fundo para um Edit Control em tempo de execução usando C++ e a API do Windows

Quantidade de visualizações: 10286 vezes
O processo de definir a cor de fundo para um Edit Control em tempo de execução usando apenas C++ e a API do Windows é um pouco complicado. A técnica apresentada aqui pode não ser a mais eficiente, mas funciona mesmo (testado como VC++ 2005 e Windows XP). Note que estarei usando as funções CreateSolidBrush(), GetDlgCtrlID(), SetBkMode() e SetBkColor() da WinAPI.

1 - Comece adicionando as linhas na parte de variáveis globais de sua aplicação:

HBRUSH hbrushEditBox = CreateSolidBrush(RGB(255, 255, 255));
HDC hdcEdit;
int id_edit_control;
HWND edit_window;


2 - Modifique ou adicione um case para a mensagem WM_CTLCOLOREDIT da seguinte forma:

case WM_CTLCOLOREDIT:
  hdcEdit = (HDC)wParam;
  edit_window = HWND(lParam);   
  id_edit_control = GetDlgCtrlID(edit_window);
		
  if(id_edit_control == IDC_EDIT1){
    SetBkMode(hdcEdit, TRANSPARENT);
    SetBkColor(hdcEdit,(LONG)hbrushEditBox);
    return (LONG)hbrushEditBox;
  }
	  
  return (LRESULT)CreateSolidBrush(RGB(255, 255, 255));

3 - A cor de fundo do Edit Control com ID IDC_EDIT1 será modificada para vermelho quando clicarmos no botão com o ID IDC_BUTTON1. Veja o case para este botão (dentro do case WM_COMMAND):

case IDC_BUTTON1: // ID do botão
 
  // Define uma nova cor de fundo para o Edit Control
  // com o ID IDC_EDIT1
  
  // Vermelho como cor de fundo
  hbrushEditBox = CreateSolidBrush(RGB(255, 0, 0));

  // Atualiza o Edit Control
  InvalidateRect(GetDlgItem(hwnd, IDC_EDIT1), 0, TRUE);
  
  break;



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

Exercício Resolvido de Java - Calculando e exibindo os números primos entre 2 e 100

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

Um inteiro é um número primo se ele for divisível somente por 1 e por ele mesmo. Assim, 2, 3, 5 e 7 são primos, enquanto 4, 6, 8 e 9 não são. Note que o número 1 não é primo.

Escreva um programa (algorítmo) Java que usa um laço for, while ou do...while para calcular e exibir os números primos entre 2 (incluindo) e 100 (incluindo).

Sua saída deverá ser parecida com:

Numeros primos entre 2 e 100: 
2 3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97
Resposta/Solução:

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

package estudos;

public class Estudos {
  public static void main(String[] args) {
    // limite dos números primos (incluindo)
    int limite = 100;
               
    // Lembre-se! O número 1 não é primo
    System.out.println("Numeros primos entre 2 e " + limite + ": ");
  
    // laço que percorre os valores de 2 até o limite desejado
    for(int i = 2; i <= limite; i++){
       boolean primo = true;
                       
       // se o valor de i for 7, a variável j do laço contará
       // de 2 até 7 / 2 (divisão inteira), ou seja, 3. Se o 
       // módulo de 7 por qualquer um dos valores neste intervalo 
       // for igual a 0, então o número não é primo
       for(int j = 2; j <= (i / 2); j++){
         if(i % j == 0){
           primo = false; // não é primo
           break;
         }
       }
    
       if(primo){
         System.out.print(i + " ");
       }
    }
    
    System.out.println();
  }
}



C# ::: Dicas & Truques ::: Gráficos

Como desenhar retângulos em C# usando a função DrawRectangle() da classe Graphics do C# - Computação Gráfica em C#

Quantidade de visualizações: 11321 vezes
Retângulos podem ser desenhados em C# e Windows Forms usando o método DrawRectangle() da classe Graphics. Este método pede a caneta de desenho (um objeto da classe Pen), as coordenadas do canto superior esquerdo e a largura e altura do retângulo. Veja a assinatura do método DrawRectangle() mais comumente usada:

Graphics.DrawRectangle(Pen, Single, Single, Single, Single)


Veja um trecho de código no qual desenhamos um retângulo com 250 pixels de largura por 150 pixels de altura:

private void button1_Click(object sender, EventArgs e){
  // vamos obter o Graphics do formulário
  Graphics g = this.CreateGraphics();

  // vamos desenhar um retângulo de 250 pixels de largura por 150
  // pixels de altura
  g.DrawRectangle(new Pen(Color.Red, 1), 50, 50, 250, 150);

  // vamos liberar o objeto Graphics
  g.Dispose();
}

As coordenadas do canto superior esquerdo e a largura e altura do retângulo podem ser especificadas como um objeto da estrutura Rectangle. Veja:

private void button1_Click(object sender, EventArgs e){
  // vamos obter o Graphics do formulário
  Graphics g = this.CreateGraphics();

  // vamos desenhar um retângulo de 250 pixels de largura por 150
  // pixels de altura
  g.DrawRectangle(new Pen(Color.Red, 1), 
    new Rectangle(100, 100, 250, 150));

  // vamos liberar o objeto Graphics
  g.Dispose();
}


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á 62 usuários muito felizes estudando em nosso site.