Delphi ::: VCL - Visual Component Library ::: TComboBox |
Como retornar o índice do item selecionado em um ComboBox do Delphi usando a propriedade ItemIndexQuantidade de visualizações: 19286 vezes |
Em algumas situações precisamos saber o índice do item selecionado em um ComboBox. Isso pode ser feito por meio da propriedade ItemIndex da classe TComboBox. Esta propriedade retorna um valor inteiro representando um índice começando em 0, ou seja, o índice do primeiro item é 0. Se nenhum item estiver selecionado, o valor -1 será retornado. Veja o código: procedure TForm1.Button1Click(Sender: TObject); var indice: Integer; begin // vamos obter o índice do item selecionado no ComboBox indice := ComboBox1.ItemIndex; // mostra o resultado ShowMessage('O índice do item selecionado é: ' + IntToStr(indice)); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Python ::: Tkinter GUI Toolkit ::: Círculos, Ovais e Elípses |
Como desenhar círculos no Tkinter usando a função create_oval() do componente CanvasQuantidade de visualizações: 1209 vezes |
Em várias situações nós precisamos desenhar círculos não preenchidos e preenchidos em Tkinter. Para isso nós podemos usar a função create_oval() do componente Canvas. Em sua forma mais simples, a função create_oval() requer as coordenadas x e y a partir das quais o círculo ou elípse será desenhada e a largura e a altura do retângulo dentro do qual o círculo estará contido. Para desenhar uma oval ou elípse, basta manipular a largura ou altura desse retângulo. Veja um trecho de código no qual usamos a função create_oval() para desenhar um círculo com 5 pixels de largura da linha de desenho: # vamos importar o módulo Tkinter from tkinter import * from tkinter.ttk import * # método principal def main(): # cria a janela principal da aplicação janela_principal = Tk() # define as dimensões da janela janela_principal.geometry("400x350") # define o título da janela janela_principal.title("Uso do controle Canvas") # vamos criar o objeto Canvas canvas = Canvas(janela_principal, bg="white", width=400, height=350) # colocamos o Canvas na janela principal canvas.grid(row=0, column=0) # agora vamos desenhar um círculo no Canvas começando nas # coordenadas x=20 e y=30 centro de um retângulo de largura # 150 pixels por uma altura de 150 pixels e largura da linha # de 5 pixels canvas.create_oval(20, 30, 150, 150, width="5") # entramos no loop de eventos janela_principal.mainloop() if __name__== "__main__": main() Note que a largura da linha de desenho foi informada por meio do parâmetro width. Se quisermos definir também a cor da linha do desenho, basta usarmos o parâmetro outline e fornecer a cor desejada. |
Python ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como testar se um ponto está dentro de um círculo em Python - Desenvolvimento de Games com PythonQuantidade de visualizações: 1252 vezes |
Quando estamos trabalhando com computação gráfica, geometria e trigonometria ou desenvolvimento de jogos em Python, é comum precisarmos verificar se um determinado ponto (uma coordenada x, y) está contido dentro de um círculo. Para melhor entendimento, veja a imagem a seguir: ![]() Veja que temos um círculo com raio igual a 115 e com centro nas coordenadas (x = 205; y = 166). Temos também dois pontos. O ponto vermelho está nas coordenadas (x = 140; y = 90) e o ponto azul está nas coordenadas (x = 330; y = 500. Como podemos ver na imagem, o ponto vermelho está dentro do círculo, enquanto o ponto azul está fora. E nosso intenção nesta dica é escrever o código Python que permite fazer essa verificação. Tenha em mente que está técnica é muito útil para o teste de colisões no desenvolvimento de games. Veja o código completo para o exemplo: # vamos importar o módulo Math import math # vamos declarar a classe Circulo class Circulo: # construtor da classe def __init__(self, xc, yc, raio): self.xc = xc self.yc = yc self.raio = raio # agora vamos declarar a classe Ponto class Ponto: def __init__(self, x, y): self.x = x # coordenada x self.y = y # coordenada y # método principal def main(): # vamos criar um objeto Circulo c = Circulo(205, 166, 115) # vamos criar um objeto Ponto p = Ponto(140, 90) # vamos verificar se o ponto está dentro do # círculo dx = p.x - c.xc; dy = p.y - c.yc; if((math.pow(dx, 2) + math.pow(dy, 2)) < math.pow(c.raio, 2)): print("O ponto está dentro do círculo") else: print("O ponto NÃO está dentro do círculo") if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: O ponto está dentro do círculo. Experimente com círculos de raios e coordenadas centrais diferentes e também com pontos em várias coordenadas e veja como os resultados são interessantes. |
Ruby ::: Dicas & Truques ::: Arquivos e Diretórios |
Como testar se um diretório existe em Ruby usando a função File.exist()Quantidade de visualizações: 6654 vezes |
Em algumas situações nós precisamos testar a existência de um diretório na linguagem Ruby. Para isso nós podemos usar a função File.exist?(), que nos retorna um valor True se o diretório existir e False em caso contrário. Veja o código Ruby completo para o exemplo: # nome e caminho do diretório a ser testado diretorio = "C:\\estudos_ruby\\escola" if File.exist? diretorio puts "O diretório existe" else puts "O diretório não existe" end Ao executar este código Ruby nós teremos o seguinte resultado: O diretório existe |
PHP ::: Dicas & Truques ::: Programação Orientada a Objetos |
Programação Orientada a Objetos em PHP - Como criar e usar variáveis estáticas em PHPQuantidade de visualizações: 10123 vezes |
Como já vimos em outras dicas desta seção, uma classe possui propriedades (variáveis) e métodos. Dessa forma, cada instância (cópia ou objeto) desta classe possui suas próprias cópias das variáveis declaradas na classe. Veja a seguinte declaração de uma classe Produto: <? // classe Produto com duas variáveis privadas e seus // correspondentes métodos mutatórios e acessórios class Produto{ private $nome; private $preco; public function setNome($nome){ $this->nome = $nome; } public function getNome(){ return $this->nome; } public function setPreco($preco){ $this->preco = $preco; } public function getPreco(){ return $this->preco; } } ?> Aqui cada instância da classe Produto terá suas próprias variáveis $nome e $preco. Há, porém, situações nas quais gostaríamos que uma determinada variável pertencesse à classe e não à cada instância individual. Um bom exemplo disso seria uma variável que registra a quantidade de instâncias que temos de uma classe ou a técnica de se atribuir um identificador único a cada instância da classe. Variáveis estáticas em PHP podem ser criadas por meio do uso da palavra-chave static. É comum tais variáveis serem declaradas com o modificador public, o que as torna acessíveis fora da classe na qual estas estão declaradas. Veja um exemplo: <? // classe Produto com duas variáveis privadas e seus // correspondentes métodos mutatórios e acessórios class Produto{ private $nome; private $preco; // uma variável estática que permite contar as instâncias // desta classe public static $contador = 0; // construtor da classe Produto function __construct(){ // vamos incrementar o contador aqui self::$contador++; } } // vamos criar duas instâncias da classe Produto $p1 = new Produto(); $p2 = new Produto(); // vamos obter o valor do contador de instâncias echo "Até este momento já criamos " . Produto::$contador . " instâncias da classe Produto"; ?> Este código possui alguns pontos interessantes e merece uma análise bem detalhada. Perceba que, dentro da classe, uma variável estática é acessada usando-se self e não $this, como fazemos com as variáveis de instâncias. Outra observação interessante é em relação ao acesso da variável estática fora da classe. Aqui nós usamos o nome da classe seguida por um par de dois pontos "::" e não por meio de referências às suas instâncias individuais. Finalmente observe o construtor da classe. A cada instância construída nós acessamos a variável estática e incrementamos seu valor em 1. É importante observar que variáveis estáticas não podem ser acessadas por meio de referências às instâncias da classe usando o operador "->". Assim, o trecho de código abaixo: // vamos tentar alterar o valor da variável estática por meio // de uma referência a uma das instâncias da classe Produto $p1->contador = 5; não provoca erros mas, também não traz o resultado esperado. |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como percorrer os caracteres de uma string C usando um laço forQuantidade de visualizações: 17541 vezes |
Como em C uma string é um vetor de caracteres, tais caracteres podem ser acessados por meio de seu índice no vetor (um valor inteiro começando em 0). Este trecho de código mostra como você pode usar o laço for para acessar cada caractere individualmente e exibí-lo na tela do programa:#include <stdio.h> #include <stdlib.h> #include <string.h> int main(int argc, char *argv[]){ char palavra[] = "Arquivo"; // vamos percorrer os caracteres usando um laço for int i; for(i = 0; i < strlen(palavra); i++){ printf("Caractere na posicao %d = %c\n", i, palavra[i]); } puts("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: Caractere na posicao 0 = A Caractere na posicao 1 = r Caractere na posicao 2 = q Caractere na posicao 3 = u Caractere na posicao 4 = i Caractere na posicao 5 = v Caractere na posicao 6 = o |
Java ::: Dicas & Truques ::: Imagens e Processamento de Imagens |
Como carregar uma imagem em um JFrame do Java Swing - Manipulação de imagens em JavaQuantidade de visualizações: 19412 vezes |
Nesta dica mostrarei como é possível combinar as classes Toolkit e MediaTracker para carregar uma imagem JPG e exibi-la na superfície da uma janela JFrame do Java Swing. Este exemplo é muito útil, pois abre o horizonte para uma infinidade de aplicações interessantes, deste visualizadores de imagens e fotos até jogos em Java. Veja o código completo para o exemplo: import java.awt.*; import javax.swing.*; public class Estudos extends JFrame{ private Image imagem; public Estudos() { super("Carregando imagens em uma JFrame"); // imagem a ser exibida String minhaImagem = "foto1.jpg"; Toolkit toolkit = Toolkit.getDefaultToolkit(); imagem = toolkit.getImage(minhaImagem); MediaTracker mediaTracker = new MediaTracker(this); mediaTracker.addImage(imagem, 0); try{ mediaTracker.waitForID(0); } catch(InterruptedException ie){ System.err.println(ie); System.exit(1); } setSize(imagem.getWidth(null), imagem.getHeight(null)); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } public void paint(Graphics graphics){ graphics.drawImage(imagem, 0, 0, null); } } Ao executar esta aplicação Java Swing nós teremos o seguinte resultado: ![]() |
C ::: C para Engenharia ::: Física - Mecânica |
Como calcular o tempo de queda livre de um corpo dada a altura da queda e a aceleração da gravidade usando a linguagem CQuantidade de visualizações: 2976 vezes |
Galileu Galilei fez experimentos para comprovar que o tempo de queda dos objetos não depende de sua massa. Esse importante estudioso abandonava objetos de massas diferentes do alto da torre de Pisa e verificava que o tempo para atingirem o solo sempre era o mesmo para todos os casos. No Movimento Uniformemente Variado (MUV), o tempo de queda livre de um corpo, quando temos a altura na qual o objeto é abandonado, pode ser calculado por meio da fórmula: \[ \text{t} = \sqrt{\frac{\text{2} \cdot \text{H}}{\text{g}}} \] Onde: t ? tempo da queda (em segundos). H ? altura em metros na qual o corpo é abandonado. g ? aceleração da gravidade (m/s2). Vamos ver um exemplo? Veja o seguinte enunciado: 1) Um tijolo é largado de uma construção há 10 metros de altura. Calcule o tempo de sua queda, ou seja, o tempo imediatamente antes de o corpo (o tijolo) tocar o chão. Veja que temos a altura de 10 metros e já sabemos que a aceleração da gravidade terrestre é 9.80665. Assim, tudo que temos que fazer é jogar esses valores na fórmula. Veja o código C completo para este cálculo: #include <stdio.h> #include <stdlib.h> #include <math.h> int main(int argc, char *argv[]){ // gravidade terrestre em m/s2 float gravidade = 9.80665; // altura da queda float altura = 10; // em metros // vamos calcular o tempo da queda (em segundos) float tempo_queda = sqrt((2 * altura) / gravidade); // mostramos o resultado printf("O tempo da queda livre é: %f segundos", tempo_queda); printf("\n\n"); system("PAUSE"); return 0; } Ao executar este código C nós teremos o seguinte resultado: O tempo da queda livre é: 1.428087 segundos. |
Java ::: Pacote java.lang ::: StringBuffer |
Java do básico ao avançado - Como usar o método append() para adicionar mais conteúdo ao final de um StringBufferQuantidade de visualizações: 9401 vezes |
O método append() da classe StringBuffer se torna útil quando precisamos adicionar mais conteúdo ao final de um objeto desta classe. Este método possui, no Java 7, as seguintes sobrecargas: public StringBuffer append(Object obj) public StringBuffer append(String str) public StringBuffer append(StringBuffer sb) public StringBuffer append(CharSequence s) public StringBuffer append(CharSequence s, int start, int end) public StringBuffer append(char[] str) public StringBuffer append(char[] str, int offset, int len) public StringBuffer append(boolean b) public StringBuffer append(char c) public StringBuffer append(int i) public StringBuffer append(long lng) public StringBuffer append(float f) public StringBuffer append(double d) Note que em todas as sobrecargas do método, o retorno é um objeto da classe StringBuffer. Mas, não é um novo objeto StringBuffer. É uma referência ao objeto StringBuffer já existente. Veja um exemplo no qual usamos este método para adicionar mais duas palavras ao conteúdo do StringBuffer: package estudos; public class Estudos{ public static void main(String[] args) { // um StringBuffer contendo uma frase StringBuffer frase = new StringBuffer("Gosto muito de programar"); // vamos adicionar mais duas palavras ao final do StringBuffer frase.append(" em"); frase.append(" Java"); // agora mostramos o resultado System.out.println(frase); System.exit(0); } } Ao executarmos este código nós teremos o seguinte resultado: Gosto muito de programar em Java |
React ::: Elementos de Formulários HTML ::: input type text Element/Object |
Como obter o conteúdo de uma caixa de texto em React usando a função useRef() para acessar os elementos HTMLQuantidade de visualizações: 740 vezes |
Nesta dica mostrarei como podemos usar useRef() para criar uma referência para um elemento HTML <input type="text">. Em seguida nós vamos usar a propriedade current.value para retornar o conteúdo da caixa de texto e atualizar o estado nomeAtualizado, criado a partir da função useState(). Este código, embora simples, é o ponto de partida para aplicações React bem interessantes, pois não fazemos uso do evento onChange das caixas de texto para atualizar o estado da aplicação. Isso, como é fácil de se perceber, economiza os recursos gastos em processamento desnecessário. Veja o código para App.js: // vamos importar o useState e useRef import {useState, useRef} from 'react'; // função App() que será exportada export default function App() { // vamos criar uma referência para a caixa // de texto. Veja que esta referência será // usada na declaração do elemento input type text const txtNome = useRef(null); // vamos usar um estado para guardarmos o conteúdo // da caixa de texto const [nomeAtualizado, setNomeAtualizado] = useState(''); // aqui nós gerenciamos o evento onClick do botão const tratarEventoClick = () => { // vamos obter o conteúdo da caixa de texto // usando "txtNome.current.value" setNomeAtualizado(txtNome.current.value); }; // e retornamos para renderização return ( <div> <input type="text" id="nome" name="nome" ref={txtNome}/> <h2>Nome Atualizado: {nomeAtualizado}</h2> <button onClick={tratarEventoClick}> Atualizar Estado</button> </div> ); } E aqui está o código para o index.js: // vamos fazer os imports necessários import React from 'react'; import ReactDOM from 'react-dom/client'; import './index.css'; import App from './App'; // definimos a raiz da aplicação React const root = ReactDOM.createRoot( document.getElementById('root')); // e renderizamos a aplicação no navegador root.render( <React.StrictMode> <App /> </React.StrictMode> ); Execute a aplicação React, digite um nome na caixa de texto e clique o botão Atualizar Estado. Somente neste momento é que o conteúdo da caixa de texto será transferido para o estado nomeAtualizado e refletido no elemento <h2>. |
Nossas 20 dicas & truques de programação mais populares |
Ruby - Exercício Resolvido de Ruby - Como percorrer os elementos de um array em Ruby usando a função each Java - Estruturas de Dados em Java - Como obter o nó com menor valor em uma árvore binária de busca em Java |
Você também poderá gostar das dicas e truques de programação abaixo |
CSS - CSS3 - O que são CSS media queries e como usá-las em suas páginas web para criar designs responsivos JavaScript - JavaScript Avançado - Como remover todas as ocorrências de uma substring em uma string usando uma função recursiva JavaScript - Como converter uma string em um valor de ponto-flutuante em JavaScript usando a função parseFloat() |
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 |