![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como aplicar cores alternadas às colunas de um TDBGrid do Delphi (efeito zebrinha)Quantidade de visualizações: 9708 vezes |
Em algumas situações gostaríamos de aplicar o efeito zebrinha, ou seja, aplicar cores alternadas às colunas de um controle TDBGrid. Esta técnica é muito útil quando temos grids com várias colunas e queremos facilitar a visualização dos dados por parte dos usuários. A forma mais comum de se aplicar cores alternadas às colunas do DBGrid é por meio do evento OnDrawColumnCell. Veja o trecho de código abaixo: procedure TForm3.DBGrid1DrawColumnCell(Sender: TObject; const Rect: TRect; DataCol: Integer; Column: TColumn; State: TGridDrawState); var grid: TDBGrid; begin // obtém um referência ao DBGrid grid := sender as TDBGrid; // o número da coluna é par? if Odd(DataCol) then grid.Canvas.Brush.Color := clWhite else grid.Canvas.Brush.Color := clYellow; // vamos terminar de colorir a célula grid.DefaultDrawColumnCell(Rect, DataCol, Column, State); end; Execute este código e verá que a primeira coluna é pintada de branco, a segunda de amarelo, a terceira de branco e assim por diante. Note que neste código eu não tratei a seleção de células, na qual a cor do texto se iguala ao branco do fundo da célula. Veja mais dicas nesta seção para saber como realizar esta tarefa você mesmo. Fique atento ao fato de que este código aplica as cores alternadas às colunas mesmo se estas forem colunas persistentes com cores já definidas por meio do Object Inspector. Esta dica foi escrita e testada no Delphi 2009. |
Python ::: Dicas & Truques ::: Data e Hora |
Como formatar a data e hora atual em Python usando a função strftime() da classe datetimeQuantidade de visualizações: 10303 vezes |
Nesta dica eu vou mostrar como é possível usar o método strftime() da classe datetime para formatar e mostrar a data e hora atual no Python. Veja o código completo para o exemplo: from datetime import datetime import locale def main(): # Configurações do usuário locale.setlocale(locale.LC_ALL, '') # Obtém um datetime da data e hora atual hoje = datetime.today() # Exibe a data atual formatada data = hoje.strftime("Hoje é %A, %d de %B de %Y") print(data) if __name__== "__main__": main() Ao executar este código nós teremos o seguinte resultado: Hoje é segunda-feira, 08 de março de 2019 |
C ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o cateto oposto dadas as medidas da hipotenusa e do cateto adjascente em CQuantidade de visualizações: 3252 vezes |
Todos estamos acostumados com o Teorema de Pitágoras, que diz que "o quadrado da hipotenusa é igual à soma dos quadrados dos catetos". Baseado nessa informação, fica fácil retornar a medida do cateto oposto quando temos as medidas da hipotenusa e do cateto adjascente. Isso, claro, via programação em linguagem C. Comece observando a imagem a seguir: ![]() Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. A medida da hipotenusa é, sem arredondamentos, 36.056 metros. Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras): \[c^2 = a^2 + b^2\] Tudo que temos que fazer é mudar a fórmula para: \[a^2 = c^2 - b^2\] Veja que agora o quadrado do cateto oposto é igual ao quadrado da hipotenusa menos o quadrado do cateto adjascente. Não se esqueça de que a hipotenusa é o maior lado do triângulo retângulo. Veja agora como esse cálculo é feito em linguagem C: #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]){ float c = 36.056; // medida da hipotenusa float b = 30; // medida do cateto adjascente // agora vamos calcular o comprimento da cateto oposto float a = sqrt(pow(c, 2) - pow(b, 2)); // e mostramos o resultado printf("A medida do cateto oposto é: %f", a); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: A medida do cateto oposto é: 20.000877 Como podemos ver, o resultado retornado com o código C confere com os valores da imagem apresentada. |
Java ::: Pacote java.awt ::: Graphics |
Como retornar a cor atual do contexto de desenho usando o método getColor() da classe Graphics do Java - Computação gráfica em JavaQuantidade de visualizações: 8023 vezes |
Antes de efetuar qualquer desenho na superfície de um componente, é importante saber qual cor está definida no momento, assim podemos alterá-la se necessário. Para isso podemos usar o método getColor() da classe Graphics. Este método retorna um objeto da classe Color. Veja um exemplo no qual obtemos a cor usada atualmente para desenhar na superfície de um JLabel: import java.awt.*; import java.awt.event.*; import javax.swing.*; public class Estudos extends JFrame{ JLabel label; public Estudos() { super("Desenhando"); Container c = getContentPane(); c.setLayout(new BorderLayout()); // Cria um JLabel label = new JLabel(); c.add(label, BorderLayout.CENTER); // Cria um botão JButton btn = new JButton("Obter a cor do contexto"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ Graphics graphics = label.getGraphics(); // obtém a cor usada para desenhar no // contexto de desenho Color cor = graphics.getColor(); JOptionPane.showMessageDialog(null, "A cor usada atualmente é " + cor.toString()); } } ); // Adiciona o botão à janela c.add(btn, BorderLayout.SOUTH); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } Ao executar este código Java nós teremos o seguinte resultado: A cor usada atualmente é java.awt.Color[r=0,g=0,b=0] |
Java ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como passar vetores e matrizes (arrays) para seus métodos JavaQuantidade de visualizações: 16370 vezes |
Nesta dica mostrarei como você pode passar um array (vetor ou matriz) para seus métodos Java. Observe que um array é um objeto Java, e objetos são sempre passados por referência. Assim, as alterações feitas no vetor ou matriz dentro do método afetarão o array original. Veja o código completo para o exemplo: package arquivodecodigos; public class Estudos{ public static void main(String[] args){ int[] valores = {43, 6, 17, 23, 8}; // Exibe os valores antes de passar o // array para o método multiplicar for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + ", "); } System.out.println(); // fornece o array para o método multiplicar multiplicar(valores, 2); // Exibe os valores depois de passar o // array para o método multiplicar for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + ", "); } System.exit(0); } public static void multiplicar(int a[], int num){ for(int i = 0; i < a.length; i++){ a[i] = a[i] * num; } } } Ao executar este código nós teremos o seguinte resultado: 43, 6, 17, 23, 8, 86, 12, 34, 46, 16, |
Java ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Como usar a pesquisa ou busca linear ou sequencial nos elementos de um vetor em JavaQuantidade de visualizações: 4875 vezes |
A busca linear ou sequencial, muitas vezes chamada de pesquisa linear ou sequencial, é geralmente implementada por meio de um algorítmo que varre os elementos de um coleção sequencial, começando do primeiro elemento e indo até o último. Esta busca não é tão usada quando a pesquisa binária ou hashing, por ser considerada muito lenta quando aplicado a um conjunto de dados muito grande. A busca linear ou sequencial em um vetor Java pode ser descrito pelos seguintes passos: 1) Efetua a varredura dos elementos do vetor. 2) Compara o valor do elemento atual do vetor com o valor sendo pesquisado. 3) Se o valor for encontrado, efetue o procedimento desejado com o elemento do vetor. 4) Se a varredura alcançar o último elemento do vetor e o valor pesquisado não for encontrado, exiba uma mensagem de erro ou algum outro procedimento para alertar o usuário do programa. Veja um exemplo no qual declaramos e preenchemos um vetor de int com 5 elementos e em seguida usamos um método pesquisaLinear para verificar se um determinado valor existe no vetor: package arquivodecodigos; public class Estudos{ public static void main(String a[]){ // vamos criar um vetor de 5 elementos int int[] valores = {32, 7, 21, 4, 90}; // vamos pesquisar o valor 21 int valor = 21; // vamos verifiar se o valor está no vetor int indice = pesquisaLinear(valores, valor); if(indice > -1){ System.out.println("O valor foi encontrado no índice: " + indice); } else{ System.out.println("O valor não foi encontrado."); } } // método que permite efetuar a busca linear em um vetor public static int pesquisaLinear(int[] vetor, int valor){ // percorre os elementos do vetor for(int i = 0; i < vetor.length; i++){ // o valor foi encontrado? if(vetor[i] == valor){ return i; } } // não foi encontrado? vamos retornar -1 return -1; } } Ao executarmos este código nós teremos o seguinte resultado: O valor foi encontrado no índice: 2 Veja o mesmo código sem usar um método adicional, ou seja, a busca linear é feito dentro do método main() da classe Java: package arquivodecodigos; public class Estudos{ public static void main(String a[]){ // vamos criar um vetor de 5 elementos int int[] valores = {32, 7, 21, 4, 90}; // vamos pesquisar o valor 21 int valor = 21; // vamos verifiar se o valor está no vetor int indice = -1; // não foi encontrado // percorre os elementos do vetor for(int i = 0; i < valores.length; i++){ // o valor foi encontrado? if(valores[i] == valor){ indice = i; break; } } if(indice > -1){ System.out.println("O valor foi encontrado no índice: " + indice); } else{ System.out.println("O valor não foi encontrado."); } } } |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de C - Declarar um vetor de 10 elementos e usar o laço for para solicitar ao usuário que informe os valores dos elementos do vetorQuantidade de visualizações: 14386 vezes |
Exercício Resolvido de C - Declarar um vetor de 10 elementos e usar o laço for para solicitar ao usuário que informe os valores dos elementos do vetor Pergunta/Tarefa: Escreva um programa C que declara um vetor (array) de 10 elementos do tipo int. Em seguida use um laço for para solicitar ao usuário que informe 10 valores inteiros e armazene tais valores nos elementos do vetor: Dica: Use a função scanf() para obter a entrada do usuário. Resposta/Solução: Veja abaixo a resolução completa para esta tarefa: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // vamos declarar um vetor de 10 inteiros int valores[10]; int i; // agora vamos solicitar ao usuário que informe os 10 valores para // os elementos do vetor. O mais recomendável neste caso é usar um // laço for que repetirá 10 vezes e, a cada repetição, solicitaremos // um valor for(i = 0; i < 10; i++){ printf("Informe o valor %d: ", (i + 1)); scanf("%d", &valores[i]); } // para finalizar vamos exibir os valores informados pelo usuário e // presentes nos elementos do vetor printf("\nOs valores informados foram:\n"); for(i = 0; i < 10; i++){ printf("O valor %d foi: %d\n", (i + 1), valores[i]); } system("PAUSE"); return 0; } |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como comparar os primeiros n caracteres de duas strings usando a função strncmp() da linguagem CQuantidade de visualizações: 10559 vezes |
Muitas vezes precisar verificar se os primeiros n caracteres de duas strings são iguais. Para isso podemos usar a função strncmp() do header string.h. Esta função aceita dois ponteiros para as strings a serem comparadas e um inteiro especificando a quantidade dos primeiros caracteres que serão comparados. O retorno da função será o valor 0 se os n caracteres comparados forem iguais. Veja o código:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]){ char palavra1[] = "Java"; char palavra2[] = "JavaScript"; if(strncmp(palavra1, palavra2, 4) == 0) printf("Os primeiros n caracteres sao iguais"); else printf("Os primeiros n caracteres NAO sao iguais"); puts("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Os primeiros n caracteres sao iguais. |
Python ::: Python para Engenharia ::: Física - Mecânica - Estática |
Como calcular o centroide ou centro de gravidade de um triângulo em PythonQuantidade de visualizações: 2055 vezes |
O centro de gravidade, ou centroide (centro geométrico), é o ponto no qual a massa de um triângulo se equilibra. Para ajudar a visualizar isso, imagine uma figura triangular suspensa sobre a ponta de um lápis. A figura vai se equilibrar se a ponta do lápis for posicionada em seu centro de gravidade. Encontrar o centroide pode ser necessário em vários projetos e aplicações de engenharia, e pode ser encontrado usando geometria simples. Veja a seguinte figura: ![]() Nesta figura nós temos os três vértices do triângulo devidamente registrados, assim como o ponto representando seu centroide. Assim, a fórmula do centroide do triângulo é: \[x_c = \frac{x_1 + x_2 + x_3}{3}\] \[y_c = \frac{y_1 + y_2 + y_3}{3}\] Agora vamos ver como calcular o centro de gravidade do triângulo em Python. Para isso nós vamos pedir para o usuário informar as coordenadas dos três vértices do triângulo e, em seguida, vamos mostrar as coordenadas do ponto que representa o centroide. Veja: # função principal do programa def main(): # vamos ler as coordenadas do primeiro vértice va_x = float(input("Informe o x do primeiro vértice: ")) va_y = float(input("Informe o y do primeiro vértice: ")) # vamos ler as coordenadas do segundo vértice vb_x = float(input("Informe o x do segundo vértice: ")) vb_y = float(input("Informe o y do segundo vértice: ")) # vamos ler as coordenadas do terceiro vértice vc_x = float(input("Informe o x do terceiro vértice: ")) vc_y = float(input("Informe o y do terceiro vértice: ")) # vamos calcular as coordenadas do centroide c_x = (va_x + vb_x + vc_x) / 3 c_y = (va_y + vb_y + vc_y) / 3 # vamos mostrar o resultado print("As coordenadas do centroide são: x={0}; y={1}".format( round(c_x, 2), round(c_y, 2))) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Informe o x do primeiro vértice: 3 Informe o y do primeiro vértice: 10 Informe o x do segundo vértice: 12 Informe o y do segundo vértice: 15 Informe o x do terceiro vértice: 14 Informe o y do terceiro vértice: 7 As coordenadas do centroide são: x=9.67; y=10.67 |
Java ::: Dicas & Truques ::: Fuso Horários |
Como retornar uma lista de todos os IDs de fusos horários suportados pela linguagem Java usando o método getAvailableIDs() da classe TimeZoneQuantidade de visualizações: 9057 vezes |
A linguagem Java, por meio da classe TimeZone, nos permite trabalhar com uma enorme variedade de fusos horários. No entanto, antes de assumir que um determinado fuso horário é suportado, é interessante verificar se tal fuso horário está na lista de IDs suportados. Isso pode ser feito com uma chamada ao método estático getAvailableIDs(). Este método retorna o ID de todos os fusos horários suportados. Veja um exemplo de como usá-lo:import java.util.*; public class Estudos{ public static void main(String args[]){ // obtém todos os IDs de fusos horários // disponíveis na classe TimeZone String fusos[] = TimeZone.getAvailableIDs(); for(int i = 0; i < fusos.length; i++){ System.out.println(fusos[i]); } } } Ao executar este código você terá um resultado semelhante à (optamos por listar apenas os 100 primeiros resultados): Etc/GMT+12 Etc/GMT+11 MIT Pacific/Apia Pacific/Midway Pacific/Niue Pacific/Pago_Pago Pacific/Samoa US/Samoa America/Adak America/Atka Etc/GMT+10 HST Pacific/Fakaofo Pacific/Honolulu Pacific/Johnston Pacific/Rarotonga Pacific/Tahiti SystemV/HST10 US/Aleutian US/Hawaii Pacific/Marquesas AST America/Anchorage America/Juneau America/Nome America/Yakutat Etc/GMT+9 Pacific/Gambier SystemV/YST9 SystemV/YST9YDT US/Alaska America/Dawson America/Ensenada America/Los_Angeles America/Tijuana America/Vancouver America/Whitehorse Canada/Pacific Canada/Yukon Etc/GMT+8 Mexico/BajaNorte PST PST8PDT Pacific/Pitcairn SystemV/PST8 SystemV/PST8PDT US/Pacific US/Pacific-New America/Boise America/Cambridge_Bay America/Chihuahua America/Dawson_Creek America/Denver America/Edmonton America/Hermosillo America/Inuvik America/Mazatlan America/Phoenix America/Shiprock America/Yellowknife Canada/Mountain Etc/GMT+7 MST MST7MDT Mexico/BajaSur Navajo PNT SystemV/MST7 SystemV/MST7MDT US/Arizona US/Mountain America/Belize America/Cancun America/Chicago America/Costa_Rica America/El_Salvador America/Guatemala America/Indiana/Knox America/Indiana/Petersburg America/Indiana/Vincennes America/Knox_IN America/Managua America/Menominee America/Merida America/Mexico_City America/Monterrey America/North_Dakota/Center America/North_Dakota/New_Salem America/Rainy_River America/Rankin_Inlet America/Regina America/Swift_Current America/Tegucigalpa America/Winnipeg CST CST6CDT Canada/Central Canada/East-Saskatchewan Canada/Saskatchewan Chile/EasterIsland Um bom uso deste método é quando estamos desenvolvendo uma aplicação que mostra o horário ao redor do mundo. Podemos ter uma lista de fusos horários e, mediante a seleção do usuário, fornecer o valor selecionado para o método setTimeZone() da classe Calendar, por exemplo. |
Nossas 20 dicas & truques de programação mais populares |
Delphi - Como obter o número do registro atual em um TClientDataSet do Delphi usando a propriedade RecNo |
Você também poderá gostar das dicas e truques de programação abaixo |
Android Java - Como detectar um clique em um botão do Android usando o evento onClick no XML de layout Java - Estruturas de Dados em Java - Como obter o nó com menor valor em uma árvore binária de busca em Java Python - Como testar se um ponto está dentro de um círculo em Python - Desenvolvimento de Games com Python |
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 |