![]() |
|||||
|
Delphi ::: Dicas & Truques ::: Matemática e Estatística |
Apostila Delphi - Como obter o menor entre dois valores usando a função Min() do DelphiQuantidade de visualizações: 12885 vezes |
A função Min(), presente na unit Math é útil quando precisamos retornar o menor entre dois valores fornecidos. Veja um exemplo:procedure TForm2.Button1Click(Sender: TObject); var a, b, menor: Integer; begin // uses Math a := 34; b := 17; menor := Min(a, b); // exibe o resultado ShowMessage('O menor valor é: ' + IntToStr(menor)); end; Note que a função Min() é uma função sobrecarregada, ou seja, os valores fornecidos e o retorno da função podem ser do tipo Integer, Int64, Single, Double ou Extended. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
C# ::: Namespace System.Drawing ::: Image |
Gráficos C# Windows Forms - Como usar a classe Image em suas aplicações C#Quantidade de visualizações: 6516 vezes |
A classe Image, do namespace System.Drawing (no assemply System.Drawing.dll) é uma classe abstrata de base que fornece funcionalidades para as classes derivadas Bitmap e Metafile (que são classes concretas e sealed, ou seja, não podem ter suas funcionalidades herdadas por outras classes). Por ser uma classe abstrata, não podemos criar novas instâncias de Image (usando new()). Em vez disso nós a usamos apenas para chamar seus métodos estáticos ou como referência para as classes derivadas. Veja um trecho de código no qual carregamos um bitmap e o exibimos em um PictureBox: private void button2_Click_1(object sender, EventArgs e){ try{ // vamos carregar o bitmap a partir de um diretório Image imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true); // vamos exibir a imagem no PictureBox pictureBox1.Image = imagem; } catch(ArgumentException ae){ MessageBox.Show("Houve um erro ao carregar a imagem: " + ae.Message.ToString()); } } Veja que declaramos uma Image e a usamos como referência a um Bitmap. É claro que podemos perfeitamente trocar a linha: Image imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true); por: Bitmap imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true); O código compila normalmente, mas aí perdemos todo o poder que o polimorfismo nos entrega. Sempre que possível, devemos programar em cima das interfaces, superclasses e classes abstratas. Além dos métodos estáticos, a classe Image fornece várias propriedades. Veja uma modificação do exemplo anterior no qual obtemos a largura e a altura da imagem que foi carregada: private void button2_Click_1(object sender, EventArgs e){ try{ // vamos carregar o bitmap a partir de um diretório Image imagem = new Bitmap(@"C:\estudos_csharp_wf\logo.bmp", true); // vamos exibir a imagem no PictureBox pictureBox1.Image = imagem; // vamos exibir a largura e altura da imagem MessageBox.Show("A imagem carregada possui a largura de " + imagem.Width + " pixels e altura de " + imagem.Height + " pixels."); } catch(ArgumentException ae){ MessageBox.Show("Houve um erro ao carregar a imagem: " + ae.Message.ToString()); } } Depois de carregada a imagem você verá uma mensagem parecida com: A imagem carregada possui a largura de 80 pixels e altura de 50 pixels. |
JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como somar os elementos de um array em JavaScript usando a função reduce()Quantidade de visualizações: 574 vezes |
Nesta dica mostrarei como podemos usar a função reduce() do JavaScript para somar todos os elementos de um vetor de inteiros. Lembre-se de que a função reduce() foi introduzida no ECMAScript5 (ES5), também chamado de JavaScript 2009. Veja a página HTML completa para o exemplo: <!doctype html> <html> <head> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> // vamos criar um vetor de inteiros var valores = new Array(7, 2, 1, 3, 5); document.write("Valores do array: " + valores + "<br>"); // agora vamos usar a função para somar // os elementos do vetor var res = valores.reduce((soma, valor) => soma + valor, 0); document.write("A soma dos elementos é: " + res); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: Valores do array: 7,2,1,3,5 A soma dos elementos é: 18 Neste exemplo eu coloquei a função que será executada para cada elemento do array diretamente dentro do corpo da função reduce(). Podemos também colocar esta função do lado de fora. Veja: <script type="text/javascript"> // função que será chamada pela função reduce() function somar_elementos(soma, valor) { return soma + valor; } // vamos criar um vetor de inteiros var valores = new Array(7, 2, 1, 3, 5); document.write("Valores do array: " + valores + "<br>"); // agora vamos usar a função para somar // os elementos do vetor var res = valores.reduce(somar_elementos, 0); document.write("A soma dos elementos é: " + res); </script> |
Python ::: Dicas & Truques ::: Lista (List) |
Como adicionar uma lista Python ao final de outra usando o método extend()Quantidade de visualizações: 7747 vezes |
A função extend() do objeto List da linguagem Python nos permite adicionar todos os elementos de uma determinada lista ao final de outra lista. É claro que qualquer objeto que fornece uma forma de iteração pode ser passado ao método, incluindo uma List, um Set, uma Tuple, etc. Veja um trecho de código no qual criamos duas listas de inteiros e adicionamos todos os elementos da segunda lista ao final da primeira: """ Este exemplo mostra como adicionar os elementos de uma lista ao final de outra """ def main(): # cria uma lista de inteiros valores1 = [2, 5, 12, 2, 3] print(valores1) # cria uma lista de pontos-flutuantes valores2 = [4.3, 6.43, 8.1] print(valores2) # insere a segunda lista no final da primeira valores1.extend(valores2) # exibe o resultado final print(valores1) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: [2, 5, 12, 2, 3] [4.3, 6.43, 8.1] [2, 5, 12, 2, 3, 4.3, 6.43, 8.1] |
Java ::: Dicas & Truques ::: Threads |
Como usar uma thread Java para animar o título de uma janela JFrame do Java SwingQuantidade de visualizações: 11750 vezes |
Nesta dica mostro como podemos usar uma thread para substituir um timer em uma aplicação Swing. Ao executar este código você verá que o texto da barra de títulos da aplicação pisca continuamente enquanto o aplicativo estiver sendo executado. Veja a listagem para o exemplo: import java.awt.*; import javax.swing.*; public class Estudos extends JFrame{ public Estudos() { super("Uso de threads em aplicações Swing"); // vamos criar a thread que fará o título da janela // piscar continuamente // vamos criar duas threads MinhaThread t1 = new MinhaThread(this); t1.start(); setSize(350, 250); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } // classe que usaremos como thread class MinhaThread extends Thread{ private JFrame janela; private String titulo; public MinhaThread(JFrame janela){ this.janela = janela; this.titulo = janela.getTitle(); } public void run(){ try{ while(true){ if(janela.getTitle().equals("")) janela.setTitle(titulo); else janela.setTitle(""); Thread.sleep(300); } } catch(InterruptedException ex){ // precisa fazer nada aqui } } } Um detalhe interessante é que, ao ser colocada para dormir, a thread usada no exemplo permite que as demais threads da aplicação continuem suas execuções normalmente. Isso permite que a janela seja movida, redimensionada, minimizada, etc. Lembre-se sempre de usar o método Thread.yield() caso a thread criada estiver executando alguma ação demorada. Isso evitará que a janela do programa pareça congelada. |
MySQL ::: Dicas & Truques ::: Data e Hora |
Como obter a data atual no MySQL usando as funções CURDATE(), CURRENT_DATE e CURRENT_DATE()Quantidade de visualizações: 38102 vezes |
As funções CURDATE(), CURRENT_DATE e CURRENT_DATE() são usadas quando queremos obter a data atual do servidor MySQL. O valor retornado pode estar no formato 'YYYY-MM-DD' ou YYYYMMDD, dependendo se a função for chamada em um contexto string ou numérico. Veja:SELECT CURDATE() O valor retornado será algo como 2008-03-30. Veja agora como usar CURDATE() em um contexto numérico: SELECT CURDATE() + 0 O retorno será algo como 20080330. |
C# ::: Dicas & Truques ::: Mouse e Teclado |
Como desenhar em um formulário C# usando o mouse - Código-fonte completoQuantidade de visualizações: 10360 vezes |
Quando estamos estudando os eventos do mouse, a primeira idéia que vem à cabeça é como usar tais eventos para escrever um programa de desenho. O código abaixo mostra como isso pode ser feito. Aqui nós usamos três eventos do mouse: MouseDown (ocorre quando o botão do mouse está pressionado), MouseUp (ocorre quando o botão do mouse é liberado) e MouseMove (ocorre quando movimentamos o mouse na superfície de um componente). Dessa forma, quando o botão do mouse é pressionado nós ativamos uma variável indicando que o movimento do mouse pode vir acompanhado de um desenho. Quando o botão do mouse é liberado nós definimos o valor desta variável como false. Isso faz com que o desenho só seja realizado se movermos o mouse com o botão pressionado. Veja o código: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace EstudosWindowForms { public partial class Form1 : Form { // indica se podemos ou não desenhar no formulário bool pintar = false; public Form1() { InitializeComponent(); } private void Form1_MouseDown(object sender, MouseEventArgs e) { // podemos iniciar o desenho pintar = true; } private void Form1_MouseUp(object sender, MouseEventArgs e) { // vamos parar de desenhar pintar = false; } private void Form1_MouseMove(object sender, MouseEventArgs e) { // vamos desenhar? if (pintar) { // o botão do mouse está pressionado // vamos desenhar um círculo na posição atual do mouse Graphics g = CreateGraphics(); g.FillEllipse(new SolidBrush(Color.Maroon), e.X, e.Y, 5, 5); g.Dispose(); } } } } |
C# ::: Dicas & Truques ::: Mouse e Teclado |
C# Windows Forms - Como verificar o estado da tecla Num Lock em suas aplicações C# Windows FormsQuantidade de visualizações: 8312 vezes |
Em algumas situações nós precisamos verificar o estado da tecla Num Lock (que ativa ou desativa o teclado numérico), ou seja, precisamos saber se ela está ou não ativada. Em C# isso pode ser feito de duas formas: 1) A forma mais simples, oferecida no .NET Framework a partir da versão 2.0; 2) Usando código não gerenciado (unmanaged code) e acessar a API do Windows (Win32 API). Vamos começar com a forma mais fácil, disponível no .NET Framework a partir da versão 2.0: private void button1_Click(object sender, EventArgs e){ // vamos verificar se a tecla Num Lock está ativada if(Control.IsKeyLocked(Keys.NumLock)){ MessageBox.Show("A tecla Num Lock está ativada"); } else{ MessageBox.Show("A tecla Num Lock NÃO está ativada"); } } Aqui nós usamos o método IsKeyLocked() da classe Control e fornecemos como argumento a constante NumLock, da enumeração Keys. A segunda forma consiste em usar código não gerenciado (unmanaged code) e acessar a API do Windows (Win32 API). Para isso devemos seguir os seguintes passos: a) Adicionar using System.Runtime.InteropServices; na seção de importações. b) Adicionar o código abaixo no corpo da classe, como um método: // Função com código não gerenciado que obtém o estado de uma // determinada tecla [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true, CallingConvention = CallingConvention.Winapi)] public static extern short GetKeyState(int keyCode); c) Adicione o código abaixo no evento Click de um botão: private void button1_Click(object sender, EventArgs e){ // vamos obter o estado da tecla Num Lock como um boolean bool NumLock = (((ushort)GetKeyState(0x90)) & 0xffff) != 0; // vamos verificar se a tecla Num Lock está ativada if(NumLock){ MessageBox.Show("A tecla Num Lock está ativada"); } else{ MessageBox.Show("A tecla Num Lock NÃO está ativada"); } } |
PHP ::: Dicas & Truques ::: Arquivos e Diretórios |
Como renomear um diretório em PHP usando a função rename()Quantidade de visualizações: 11763 vezes |
Diretórios podem ser renomeados usando a função rename() da linguagem PHP. Esta função recebe o nome atual do diretório e o novo nome e retorna um valor boolean (true ou false) informando o sucesso ou não da operação. Antes de usar esta função verifique se você possui as permissões adequadas para renomear o diretório. Veja um trecho de código no qual renomeamos um diretório no diretório public_html: <?php // renomeia o diretório "recentes" para "atuais" $diretorio_antigo = "/site/public_html/recentes"; $diretorio_novo = "/site/public_html/atuais"; if(rename($diretorio_antigo, $diretorio_novo)){ echo "Diretório renomeado com sucesso."; } else{ echo "Não foi possível renomear o diretório."; } ?> Ao executar este código nós teremos o seguinte resultado: Diretório renomeado com sucesso. Seja cuidadoso. Se você não tiver as permissões adequadas para renomear um diretório, a seguinte mensagem de erro será exibida: Warning: rename(imagens,imagens_novas) [function.rename]: Permission denied in /site/public_html/testes.php on line 9 Não foi possível renomear o diretório. |
Delphi ::: Dicas & Truques ::: Strings e Caracteres |
Apostila Delphi para iniciantes - Como acessar os caracteres de uma string individualmenteQuantidade de visualizações: 17916 vezes |
Em algumas situações pode ser necessário acessar os caracteres de uma palavra, frase ou texto individualmente. Em Delphi isso pode ser feito usando-se a indexação de matrizes. Tenha em mente, porém, que o índice em Delphi começa em 1 e não 0, como na maioria das linguagens. Veja um trecho de código no qual acessamos o primeiro caractere de uma string: procedure TForm1.Button1Click(Sender: TObject); var nome: string; letra: Char; begin nome := 'Osmar J. Silva'; // vamos obter a primeira letra letra := nome[1]; // vamos exibir o resultado ShowMessage('A primeira letra é: ' + letra); end; Veja outro exemplo, no qual usamos um laço for para visitar cada um dos caracteres e exibí-lo: procedure TForm1.Button1Click(Sender: TObject); var nome: string; letra: Char; i: integer; begin nome := 'Osmar'; for i := 1 to Length(nome) do begin letra := nome[i]; ShowMessage('O ' + IntToStr(i) + 'º caractere é: ' + letra); end; end; Assim como acessamos os caracteres individuais de uma string para leitura, podemos fazê-lo também para alterações. Veja um trecho de código no qual trocamos o terceiro caractere de uma string: procedure TForm1.Button1Click(Sender: TObject); var nome: string; begin nome := 'Osmar'; // vamos alterar o terceiro caractere nome[3] := 'K'; ShowMessage(nome); end; Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Nossas 20 dicas & truques de programação mais populares |
Firebird - Como usar o tipo de dados BLOB do Firebird para a gravação de imagens, vídeos e arquivos de música |
Você também poderá gostar das dicas e truques de programação abaixo |
Java - Java Swing Avançado - Como exibir imagens nas células de uma JTable em suas aplicações Java Swing |
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 |