Java ::: Java Swing - JTable e classes relacionadas ::: JTable |
Como inserir novas colunas em uma JTable do Java Swing em tempo de execução usando o método addColumn() da classe DefaultTableModelQuantidade de visualizações: 422 vezes |
Em algumas situações nós precisamos adicionar uma ou mais colunas em uma JTable do Java Swing. Entre as formas possíveis, uma é por meio do uso da função addColumn() da classe DefaultTableModel. Este método recebe, no exemplo abaixo, uma String contendo o nome da coluna a ser criada. Veja o código completo para a aplicação Java Swing: import javax.swing.*; import java.awt.*; import java.awt.event.*; import javax.swing.table.*; public class Estudos extends JFrame{ public Estudos(){ super("Exemplo de uma tabela simples"); final DefaultTableModel modelo = new DefaultTableModel(); // constrói a tabela JTable tabela = new JTable(modelo); // Cria duas colunas modelo.addColumn("Nome"); modelo.addColumn("Idade"); JButton btn = new JButton("Adicionar Colunas"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ String titulo = JOptionPane.showInputDialog( null, "Informe o título da nova coluna:"); // Adiciona uma coluna modelo.addColumn(titulo); } } ); tabela.setPreferredScrollableViewportSize( new Dimension(350, 50)); Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(tabela); c.add(scrollPane); c.add(btn); setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
Java ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o ponto de interseção de duas retas em Java - Java para Geometria Analítica e Álgebra LinearQuantidade de visualizações: 1251 vezes |
Duas retas podem encontrar-se em 0, 1 ou 2 pontos. No primeiro caso, elas são chamadas paralelas; no segundo, elas são chamadas concorrentes e o ponto de encontro entre elas é chamado ponto de interseção; no terceiro caso, se duas retas possuem dois pontos em comum, então elas obrigatoriamente apresentam todos os pontos em comum e são chamadas coincidentes. Nesta dica mostrarei como podemos encontrar o ponto de interseção (ou intersecção) de duas retas usando Java. Mas, antes de vermos o código, dê uma olhada na seguinte imagem: ![]() Note que temos os pontos A e B correspondentes ao segmento de reta AB e os pontos C e D correspondentes ao segmento de reta CD. Nossa tarefa é encontrar o ponto exato de intersecção entre esses dois segmentos de reta. Veja o código Java completo que nos auxilia na resolução deste problema: package estudos; // Classe usada para representar um ponto no // plano 2d (Plano Cartesiano) class Ponto{ double x, y; // construtor da classe public Ponto(double x, double y){ this.x = x; this.y = y; } } public class Estudos { public static void main(String[] args) { // vamos construir os quatro pontos Ponto A = new Ponto(5, 7); Ponto B = new Ponto(9, -4); Ponto C = new Ponto(-8, 2); Ponto D = new Ponto(11, 6); // vamos obter a representação do segmento AB double a1 = B.y - A.y; double b1 = A.x - B.x; double c1 = (a1 * A.x) + (b1 * A.y); // vamos obter a representação do segmento CD double a2 = D.y - C.y; double b2 = C.x - D.x; double c2 = (a2 * C.x) + (b2 * C.y); // obtém o determinante double determinante = (a1 * b2) - (a2 * b1); // as duas retas são paralelas? if(determinante == 0){ System.out.println("\nAs duas retas são paralelas.\n"); } else{ // e construímos o ponto de intersecção double x = ((b2 * c1) - (b1 * c2)) / determinante; double y = ((a1 * c2) - (a2 * c1)) / determinante; Ponto inters = new Ponto(x, y); System.out.printf("O ponto de interseção é: x = %.2f; y = %.2f", inters.x, inters.y); } System.out.println(); } } Ao executar este código Java nós teremos o seguinte resultado: O ponto de interseção é: x = 5,76; y = 4,90 De fato, se você olhar a imagem novamente e desenhar este ponto, verá que ele se situa exatamente na intersecção das retas indicadas. |
Delphi ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular o coeficiente angular de uma reta em Delphi dados dois pontos no plano cartesianoQuantidade de visualizações: 1375 vezes |
O Coeficiente Angular de uma reta é a variação, na vertical, ou seja, no eixo y, pela variação horizontal, no eixo x. Sim, isso mesmo. O coeficiente angular de uma reta tem tudo a ver com a derivada, que nada mais é que a taxa de variação de y em relação a x. Vamos começar analisando o seguinte gráfico, no qual temos dois pontos distintos no plano cartesiano: ![]() Veja que o segmento de reta AB passa pelos pontos A (x=3, y=6) e B (x=9, y=10). Dessa forma, a fórmula para obtenção do coeficiente angular m dessa reta é: \[\ \text{m} = \frac{y_2 - y_1}{x_2 - x_1} = \frac{\Delta y}{\Delta x} = tg \theta \] Note que __$\Delta y__$ e __$\Delta x__$ são as variações dos valores no eixo das abscissas e no eixo das ordenadas. No triângulo retângulo que desenhei acima, a variação __$\Delta y__$ se refere ao comprimento do cateto oposto e a variação __$\Delta y__$ se refere ao comprimento do cateto adjascente. Veja agora o trecho de código na linguagem Delphi que solicita as coordenadas x e y dos dois pontos, efetua o cálculo e mostra o coeficiente angular m da reta que passa pelos dois pontos: procedure TForm4.Button2Click(Sender: TObject); var x1, y1, x2, y2, m: Double; begin // x e y do primeiro ponto x1 := 3; y1 := 6; // x e y do segundo ponto x2 := 9; y2 := 10; // agora vamos calcular o coeficiente angular m := (y2 - y1) / (x2 - x1); // e mostramos o resultado Memo1.Lines.Add('O coeficiente angular é: ' + FloatToStr(m)); end; Ao executar este código em linguagem Delphi nós teremos o seguinte resultado: O coeficiente angular é: 0,666666666666667 Veja agora como podemos calcular o coeficiente angular da reta que passa pelos dois pontos usando o Teorema de Pitágoras. Note que agora nós estamos tirando proveito da tangente do ângulo Theta (__$\theta__$), também chamado de ângulo Alfa ou Alpha (__$\alpha__$): procedure TForm4.Button2Click(Sender: TObject); var x1, y1, x2, y2, tangente: Double; cateto_oposto, cateto_adjascente, tetha: Double; begin // incluir a unit Math // x e y do primeiro ponto x1 := 3; y1 := 6; // x e y do segundo ponto x2 := 9; y2 := 10; // vamos obter o comprimento do cateto oposto cateto_oposto := y2 - y1; // e agora o cateto adjascente cateto_adjascente := x2 - x1; // vamos obter o ângulo tetha, ou seja, a inclinação da hipetunesa // (em radianos, não se esqueça) tetha := ArcTan2(cateto_oposto, cateto_adjascente); // e finalmente usamos a tangente desse ângulo para calcular // o coeficiente angular tangente := Tan(tetha); // e mostramos o resultado Memo1.Lines.Add('O coeficiente angular é: ' + FloatToStr(tangente)); end; Ao executar este código você verá que o resultado é o mesmo. No entanto, fique atento às propriedades do coeficiente angular da reta: 1) O coeficiente angular é positivo quando a reta for crescente, ou seja, m > 0; 2) O coeficiente angular é negativo quando a reta for decrescente, ou seja, m < 0; 3) Se a reta estiver na horizontal, ou seja, paralela ao eixo x, seu coeficiente angular é zero (0). 4) Se a reta estiver na vertical, ou seja, paralela ao eixo y, o coeficiente angular não existe. |
C# ::: Dicas & Truques ::: Gráficos |
Como desenhar gráficos em C# usando GDI+ - Computação gráfica em C# - Passos iniciasQuantidade de visualizações: 17252 vezes |
Qualquer um que queira iniciar os estudos e desenhos de gráficos em C# usando Windows Forms deve obrigatoriamente entender um pouco de GDI e GDI+. GDI é o acrônimo de Graphics Device Interface e GDI+ é o seu sucessor em versões mais recentes do Microsoft Windows. Com a indepedência do GDI+ podemos desenhar em um formulário, na tela ou impressora sem qualquer modificação no código. O próprio GDI+ se encarrega dos detalhes da implementação de cada um destes diferentes dispositivos. O GDI+ é uma interface de programação de aplicações (API) que forma o sub-sistema do sistema operacional Microsoft Windows XP. Esta API é a responsável pela exibição de informações na tela e impressoras. O GDI+ é uma DLL Win32 chamada de gdiplus.dll que é distribuída com o Windows XP e versões mais recentes do Windows. Esta DLL está também disponível para uso em versões do Windows anteriores ao XP. A plataforma .NET encapsula as funcionalidades do GDI+ nos seguintes namespaces: System.Drawing, System.Drawing.Drawing2D, System.Drawing.Imaging, System.Drawing.Text e System.Drawing.Printing. Antes de iniciar seus desenhos em C# e Windows Forms, é importante entender o sistema de coordenadas do GDI+. Este sistema usa a medida de pixels ("picture elements"), que é a menor unidade de resolução no display de um monitor. Assim, o canto superior esquerdo de um controle GUI (um formulário, um painel, botão, etc) tem as coordenadas (0, 0), ou seja, x = 0 e y = 0. Lembre-se de que x é o eixo horizontal e y é o eixo vertical. A classe Graphics, do pacote System.Drawing, é quem fornece boa parte dos métodos que usamos para desenhar em C# e Windows Forms. Veja sua posição na hierarquia de classes da plataforma .NET: System.Object System.MarshalByRefObject System.Drawing.Graphics Um objeto desta classe pode ser obtido com uma chamada ao método CreateGraphics() a partir de um objeto que herda de System.Windows.Forms.Control ou gerenciando o evento Paint do controle e acessando a propriedade Graphics da classe System.Windows.Forms.PaintEventArgs. Veja um trecho de código no qual desenhamos uma linha horizontal no formulário a partir do clique de um botão: private void button1_Click(object sender, EventArgs e){ // vamos obter o Graphics do formulário Graphics g = this.CreateGraphics(); // vamos desenhar uma linha horizontal de 300 pixels na // cor preta e espessura de 1 pixel g.DrawLine(new Pen(Color.Black, 1), new Point(20, 80), new Point(320, 80)); // vamos liberar o objeto Graphics g.Dispose(); } |
Python ::: NumPy Python Library (Biblioteca Python NumPy) ::: Arrays e Matrix (Vetores e Matrizes) |
Como multiplicar um vetor ou uma matriz por um escalar no NumPy do Python - Python NumPy para EngenhariaQuantidade de visualizações: 4390 vezes |
Esta dica de Python e NumPy é direcionada, principalmente, aos estudantes de Engenharia Civil, que se deparam, logo no início do curso, com o estudo da Geometria Analítica e gostariam de entender melhor a multiplicação de vetores por um escalar. Lembre-se de que um escalar é um valor único, enquanto vetores e matrizes são estruturas que guardam vários valores ao mesmo tempo. Nosso primeiro exemplo será feito em cima de um vetor com os seguintes valores: [3, -5, 4, 1, 9]. O escalar usado será o valor 2, ou seja, temos que multiplicar cada valor no vetor pelo valor 2 e, dessa forma, obtermos um novo vetor. Veja como a linguagem Python facilita esta operação: # importamos a bibliteca NumPy import numpy as np def main(): # declara e cria o vetor vetor = np.array([3, -5, 4, 1, 9]) # agora vamos multiplicar este vetor pelo escalar 2 escalar = 2 novoVetor = vetor * escalar # vamos exibir o resultado print("Vetor inicial: ", vetor) print("Valor do escalar: ", escalar) print("Novo vetor: ", novoVetor) if __name__== "__main__": main() Este código Python vai gerar o seguinte resultado: Vetor inicial: [3 -5 4 1 9] Valor do escalar: 2 Novo vetor: [6 -10 8 2 18] Veja agora como podemos efetuar a mesma operação em uma matriz de 2 linhas e 3 colunas (recorde que, em Python, uma matriz nada mais é que um vetor de vetores, ou seja, cada elemento do vetor contém outro vetor): # importamos a bibliteca NumPy import numpy as np def main(): # declara e cria a matriz matriz = np.array([(4, 12, 50), (5, 3, 1), (11, 9, 7)]) # agora vamos multiplicar esta matriz pelo escalar 2 escalar = 2 novaMatriz = matriz * escalar # vamos exibir o resultado print("Matriz inicial: ", matriz) print("Valor do escalar: ", escalar) print("Nova matriz: ", novaMatriz) if __name__== "__main__": main() Ao executarmos este código Python nós teremos o seguinte resultado: Matriz inicial: [[4 12 50] [5 3 1] [11 9 7]] Valor do escalar: 2 Nova matriz: [[8 24 100] [10 6 2] [22 18 14]] |
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 APIQuantidade de visualizações: 850 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. |
Ruby ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
Como criar funções em Ruby - Como criar e usar funções na linguagem RubyQuantidade de visualizações: 7864 vezes |
Funções ou métodos em Ruby são definidos usando-se a palavra chave def e finalizando com a palavra end. Veja:# define o método def escrever puts "Estou estudando Ruby" end # efetua uma chamada ao método escrever Para definir uma método que aceita parâmetros, as variáveis devem ser colocadas entre parênteses. Estas variáveis são locais e portanto acessíveis somente no corpo do método. Veja: # define o método def escrever(texto, quant) quant.times do puts texto end end # efetua uma chamada ao método escrever("Estou estudando Ruby", 5) Ao executar este último exemplo nós teremos o seguinte resultado: Estou estudando Ruby Estou estudando Ruby Estou estudando Ruby Estou estudando Ruby Estou estudando Ruby |
Python ::: Dicas & Truques ::: Strings e Caracteres |
Como pesquisar uma substring em uma string usando a função find() da linguagem PythonQuantidade de visualizações: 12403 vezes |
Nesta dica mostrarei como podemos usar o método find() do objeto string da linguagem Python para pesquisar uma substring em uma string. A assinatura dessa função é: find(substring[, start[, end]]) onde substring é a substring a ser pesquisada e start e end são argumentos opcionais que definem os índices de início e fim da pesquisa. Se a substring não for encontrada, o valor -1 é retornado. Se for encontrada, o índice do primeiro caractere é retornado. Veja um exemplo completo do seu uso: def main(): frase = "Gosto de Python e JavaScript" indice = frase.find("Python") if indice != -1: print("A palavra foi encontrada no índice", indice) else: print("A palavra não foi encontrada") if __name__== "__main__": main() Ao executarmos este código Python nós teremos o seguinte resultado: A palavra foi encontrada no índice 9. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Strings e Caracteres |
Exercícios Resolvidos de Java - Como retornar o código ASCII associado a um caractere em Java - Ler um caractere e retornar o código ASCII correspondenteQuantidade de visualizações: 571 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede para o usuário informar um caractere (letra ou número) e mostre o código ASCII correspondente. Sua saída deverá ser parecida com: Informe um caractere: A Você informou o caractere: A O código ASCII correspondente é: 65 Veja a resolução comentada deste exercício em Java: package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar uma letra, símbolo ou pontuação System.out.print("Informe um caractere: "); // vamos ler o caractere informado char caractere = entrada.nextLine().charAt(0); // agora vamos obter o código ASCII correspondente int codigo = (int)caractere; // e mostramos o resultado System.out.println("Você informou o caractere: " + caractere); System.out.println("O código ASCII correspondente é: " + codigo); } } O Código Padrão Americano para o Intercâmbio de Informação (do inglês American Standard Code for Information Interchange - ASCII, pronunciado [áski]) é um sistema de representação de letras, algarismos e sinais de pontuação e de controle, através de um sinal codificado em forma de código binário (cadeias de bits formada por vários 0 e 1), desenvolvido a partir de 1960, que representa um conjunto de 128 sinais: 95 sinais gráficos (letras do alfabeto latino, algarismos arábicos, sinais de pontuação e sinais matemáticos) e 33 sinais de controle, utilizando 7 bits para representar todos os seus símbolos. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas |
Exercícios Resolvidos de Java - Como inserir no final de uma lista ligada em Java - Escreva um programa Java que pede para o usuário informar váriosQuantidade de visualizações: 953 vezes |
Pergunta/Tarefa: Este exercício Java demonstra como inserir um nó no final de uma lista ligada. Escreva um programa Java que cria uma lista ligada, ou seja, uma lista dinamicamente encadeada, e pede para o usuário informar vários valores inteiros, colocando os valores sempre no final da lista. Seu código deverá interromper a leitura dos valores quando o usuário informar o valor -1. Quando isso acontecer, mostre todos os valores contidos na lista ligada, na mesma ordem que foram inseridos (o último valor lido será o último da lista). Sua saída deve ser parecida com: Inserindo valores no final da lista Informe o valor (-1 para sair): 3 Informe o valor (-1 para sair): 9 Informe o valor (-1 para sair): 1 Informe o valor (-1 para sair): 5 Informe o valor (-1 para sair): 2 Informe o valor (-1 para sair): -1 Valores na lista: 3 -> 9 -> 1 -> 5 -> 2 -> null Veja a resolução comentada deste exercício usando Java: package estudos; import java.util.Scanner; // classe interna usada para representar um // nó na lista ligada class No { int valor; // valor do nó No proximo; // aponta para o novo nó // construtor da classe No No(int valor, No proximo) { this.valor = valor; this.proximo = proximo; } } public class Estudos { public static void main(String args[]){ // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos criar uma referência para o início da lista No inicio = null; // agora vamos pedir para o usuário informar // valores inteiros. O valor -1 sai do laço int valor; System.out.println("Inserindo valores no final da lista\n"); do { System.out.print("Informe o valor (-1 para sair): "); valor = Integer.parseInt(entrada.nextLine()); if (valor != -1) { inicio = inserirFinal(inicio, valor); } } while(valor != -1); // vamos exibir os valores na lista ligada System.out.print("\nValores na lista: "); exibirLista(inicio); } // função que permite adicionar um nó no final da // lista ligada public static No inserirFinal(No inicio, int valor) { // vamos apontar para o nó inicial No atual = inicio; // criamos um novo nó No novo = criarNo(valor); // a lista ligada ainda está vazia? if (atual == null){ // inicio recebe o novo nó inicio = novo; } else { // temos um ou mais nós na lista ligada // vamos localizar o último nó while (atual.proximo != null) { atual = atual.proximo; } // encontramos o último nó. Agora vamos inserir // o novo nó depois dele atual.proximo = novo; } // e retornamos o início da lista return inicio; } // função usada para construir e retornar um novo nó public static No criarNo(int valor) { // cria o novo nó No no = new No(valor, null); // retorna o nó criado return no; } // função usada para percorrer a lista ligada e // exibir os valores contidos em seus nós public static void exibirLista(No inicio) { // vamos apontar para o início da lista No temp = inicio; // a lista está vazia? if (temp == null) { System.out.println("A lista está vazia."); } else { // esse laço se repete enquanto tempo for // diferente de null while (temp != null) { // vamos mostrar o valor desse nó System.out.print(temp.valor + " -> "); // avança para o próximo nó temp = temp.proximo; } // mostra o final da lista System.out.println("null"); } } } |
Nossas 20 dicas & truques de programação mais populares |
Java - Programação orientada a objetos em Java - Como criar e usar interfaces em seus programas Java |
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 |