![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
PHP ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como obter o valor de PI em PHPQuantidade de visualizações: 9397 vezes |
Quando estamos escrevendo códigos que envolvem computação gráfica em PHP, ou até mesmo cálculos de trigonometria, é comum precisarmos do valor de PI (algo em torno de 3,14159...). O PI é o valor da razão entre a circunferência de qualquer círculo e seu diâmetro. A linguagem PHP nos fornece a função pi(), que retorna um valor decimal de alta precisão. Veja no código abaixo como usá-la: <html> <head> <title>Estudos PHP</title> </head> <body> <?php $PI = pi(); echo "O valor de PI é: " . $PI; ?> </body> </html> $PI = pi(); echo "O valor de PI é: " . $PI; ?> Ao executar este código nós teremos o seguinte resultado: O valor de PI é: 3.1415926535898 |
Java ::: Fundamentos da Linguagem ::: Tipos de Dados |
Java para iniciantes - Como usar o tipo de dados byte da linguagem JavaQuantidade de visualizações: 12680 vezes |
O tipo de dados byte pode ser usado quando queremos armazenar valores inteiros na faixa ?128 à 127. Veja um exemplo:public class Estudos{ static byte valor = 102; public static void main(String args[]){ System.out.println("O valor da variável é: " + valor); System.exit(0); } } Porém, é preciso estar atento a um detalhe muito importante (testado na versão 6 do SDK). Veja o trecho de código seguinte: public class Estudos{ public static void main(String args[]){ byte a = 5; byte b = 6; byte soma = a + b; System.out.println("O resultado é: " + soma); System.exit(0); } } À primeira vista este código está correto, visto que a soma das variáveis a e b não ultrapassam a faixa do tipo byte. Porém, ao tentarmos compilar, temos a seguinte mensagem de erro: Estudos.java:5: possible loss of precision found : int required: byte byte soma = a + b; ^ 1 error Isso acontece porque o tipo de dados resultante da aplicação do operador de adição (e demais operadores binários) a dois números, é no mínimo int. Podemos, é claro, fazer uma coerção de dados (cast). Veja: byte a = 5; byte b = 6; byte soma = (byte)(a + b); O tipo de dados byte pode ser convertido (sem a necessidade de cast) para os seguintes tipos: byte -> short -> int -> long -> float -> double Um tipo byte não pode ser convertido implicitamente para o tipo char. Isso acontece porque o tipo char não possui sinal. |
C# ::: Windows Forms ::: TextBox |
C# Windows Forms Avançado - Como rolar as linhas de um TextBox para o topo (parte superior) usando a API do WindowsQuantidade de visualizações: 7145 vezes |
Em algumas situações gostaríamos de rolar para cima o conteúdo de um TextBox de múltiplas. Para isso podemos usar a API do Windows, mais especificamente a mensagem WM_VSCROLL com o valor SB_TOP para seu parâmetro wParam. O valor do parâmetro lParam é zero. Veja um trecho de código que rola para cima o conteúdo de um TextBox. Antes de executar este exemplo, tenha a certeza de ter um TextBox de múltiplas, com barras de rolagem e conteúdo que force o aparecimento das barras de rolagem. Comece adicionando a linha: using System.Runtime.InteropServices; na seção de usings do seu formulário ou classe. Em seguida adicione o trecho de código abaixo no corpo da classe, como um método: [DllImport("user32.dll", EntryPoint = "SendMessage", CharSet = CharSet.Auto, SetLastError = true)] private static extern IntPtr SendMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam); Finalmente coloque o código abaixo no evento Click de um botão: private void button2_Click(object sender, EventArgs e){ // antes de executar este exemplo certifique-se de que // a propriedade Multiline do TextBox esteja definida // como true e a propriedade ScrollBars contenha o valor // Vertical ou Both textBox1.Multiline = true; textBox1.ScrollBars = ScrollBars.Vertical; // constante para a mensagem WM_VSCROLL const uint WM_VSCROLL = 0x115; // constante para o parâmetro wParam const int SB_TOP = 6; // handle para a caixa de texto IntPtr handle = textBox1.Handle; IntPtr wParam = (IntPtr)SB_TOP; IntPtr lParam = IntPtr.Zero; // vamos fazer com que o TextBox role para o topo (parte superior) SendMessage(textBox1.Handle, WM_VSCROLL, wParam, lParam); } |
Ruby ::: Dicas & Truques ::: Strings e Caracteres |
Como pesquisar uma substring em uma string em Ruby usando o método index() da classe StringQuantidade de visualizações: 7467 vezes |
Este exemplo mostra como usar o método index() da classe String da linguagem Ruby para testar a existência de uma substring em uma string. Se a substring pesquisada não for encontrada na string, o valor nil é retornado. Veja: # declara e inicializa uma variável string frase = "Gosto muito de Ruby" substring = "Ruby" # vamos verificar se a substring está contida # na string if frase.index(substring) != nil puts("A substring está contida na string") else puts("A substring NÃO está contida na string") end Ao executar este código Ruby nós teremos o seguinte resultado: A substring está contida na string |
Revit C# ::: Dicas & Truques ::: Tratamento de Erros |
Como corrigir o erro OperationCanceledException em macros e add-ins do Revit C# APIQuantidade de visualizações: 396 vezes |
Nesta dica mostrarei como podemos tratar a exceção OperationCanceledException em macros e plug-ins feitos para o Revit usando a Revit C# API. Esta exceção está no namespace Autodesk.Revit.Exceptions e deve ser declarada por seu nome completo, para não ser confundida com System.OperationCanceledException. O erro OperationCanceledException ocorre quando uma operação é cancelada de forma inesperada. Por exemplo, no código abaixo nós pedimos para o usuário selecionar um grupo e, em seguida, informar um ponto na área de desenho do Revit para que o grupo seja copiado e colocado no ponto indicado. Se o usuário clicar com o botão direito ou pressionar Esc, a operação é cancelada automaticamente. O tratamento da exceção OperationCanceledException nos permite reagir a isso, indicando ao usuário o melhor caminho a ser seguido. O código apresentado aqui já foi visto em dicas e truques sobre a criação e manipulação de grupos de elementos no Revit usando a Revit C# API. No entanto, no código apresentado eu não fiz o tratamento de exceções. Veja o código Revit C# API completo para o exemplo: using System; using Autodesk.Revit.UI; using Autodesk.Revit.DB; using Autodesk.Revit.DB.Structure; using Autodesk.Revit.UI.Selection; using System.Collections.Generic; using System.Linq; namespace Estudos { [Autodesk.Revit.Attributes.Transaction(Autodesk.Revit.Attributes. TransactionMode.Manual)] [Autodesk.Revit.DB.Macros.AddInId("ED8EC6C4-9489-48F7-B04E-B45B5D1BEB12")] public partial class ThisApplication { private void Module_Startup(object sender, EventArgs e) { // vamos obter uma referência ao Document ativo Document doc = this.ActiveUIDocument.Document; // Vamos definir um objeto Reference para guardar // o elemento selecionado pelo usuário Reference ref_selecionado = null; // pedimos para o usuário selecionar um grupo Selection selecao = this.ActiveUIDocument.Selection; try { ref_selecionado = selecao.PickObject(ObjectType.Element, "Selecione um grupo"); Element elem = doc.GetElement(ref_selecionado); Group group = elem as Group; // vamos pedir para o usuário selecionar um ponto na área de // desenho do Revit XYZ ponto = selecao.PickPoint( "Selecione um ponto para posicionar o grupo"); // criamos uma nova transação e posicionamos a cópia do // grupo nas coordenadas indicadas pelo usuário Transaction transacao = new Transaction(doc); transacao.Start("Copiar Grupo no Revit"); doc.Create.PlaceGroup(ponto, group.GroupType); transacao.Commit(); // mostramos o resultado TaskDialog.Show("Aviso", "O grupo foi copiado com sucesso."); } // Se o usuário clicar com o botão direito ou pressionar Esc catch (Autodesk.Revit.Exceptions.OperationCanceledException ex) { TaskDialog.Show("Aviso", "Erro: Operação cancelada pelo usuário"); } catch (Exception ex) { TaskDialog.Show("Aviso", "Erro: " + ex.Message); } } private void Module_Shutdown(object sender, EventArgs e) { // para fazer alguma limpeza de memória ou algo assim } #region Revit Macros generated code private void InternalStartup() { this.Startup += new System.EventHandler(Module_Startup); this.Shutdown += new System.EventHandler(Module_Shutdown); } #endregion } } Se o usuário cancelar a operação, ou seja, não selecionar nenhum grupo (talvez pressionando a tecla Esc), o código reagirá e mostrará a mensagem: Erro: The user aborted the pick operation. Se, em vez de selecionar um grupo, o usuário selecionar um outro elemento, então a mensagem de erro será: Erro: Referência de objeto não definida para uma instância de um objeto. |
Python ::: Dicas & Truques ::: Strings e Caracteres |
Como verificar se uma string contém apenas caracteres de espaços em Python usando a função isspace()Quantidade de visualizações: 11917 vezes |
Este exemplo mostra como como usar a função isspace() para verificar se uma string contém apenas caracteres de espaço. Se qualquer caractere, diferente do espaço, for encontrado, a função retorna False.def main(): # uma frase contendo apenas espaços frase = " " # vamos verificar se a string contém apenas espaços if frase.isspace(): print("A string contém apenas espaços") else: print("A string não contém apenas espaços") if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: A string contém apenas espaços. |
Java ::: Classes e Componentes ::: JTable |
Java Swing - Como detectar qual linha ou coluna está selecionada em uma tabela JTableQuantidade de visualizações: 245 vezes |
Nesta dica mostrarei como podemos usar o método valueChanged() da interface ListSelectionListener para detectar qual linha ou coluna está selecionada em um objeto JTable. Essa técnica interessante, pois permite facilmente a construção de tabelas mestre-detalhe, na qual selecionamos um cliente em uma JTable e outra JTable é atualizada mostrando somente os pedidos para o cliente selecionado. Eis o resultado na imagem abaixo: ![]() Veja o código completo para o exemplo: package arquivodecodigos; import javax.swing.*; import java.awt.*; import javax.swing.event.*; public class Estudos extends JFrame{ private boolean ALLOW_COLUMN_SELECTION = false; private boolean ALLOW_ROW_SELECTION = true; public Estudos(){ super("Exemplo de uma tabela simples"); // colunas da tabela String[] colunas = {"Cidade", "Estado", "Habitantes"}; // conteúdo da tabela Object[][] conteudo = { {"Goiânia", "GO", "43.023.432"}, {"São Paulo", "SP", "5.343.234"}, {"Rio de Janeiro", "RJ", "6.434.212"}, {"Jussara", "GO", "87.454"}, {"Barra do Garças", "MT", "64.344"} }; // constrói a tabela final JTable tabela = new JTable(conteudo, colunas); tabela.setPreferredScrollableViewportSize(new Dimension(350, 50)); // permite selecionar apenas uma linha de cada vez tabela.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // detecta seleções de linha if(ALLOW_ROW_SELECTION){ // verdadeiro por padrão ListSelectionModel rowSM = tabela.getSelectionModel(); rowSM.addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e){ if(e.getValueIsAdjusting()) return; ListSelectionModel lsm = (ListSelectionModel)e.getSource(); if(lsm.isSelectionEmpty()){ System.out.println("Nenhuma linha selecionada."); } else{ int selectedRow = lsm.getMinSelectionIndex(); System.out.println("Linha " + selectedRow + " foi selecionada."); } } }); } else{ tabela.setRowSelectionAllowed(false); } if(ALLOW_COLUMN_SELECTION){ // falso por padrão if(ALLOW_ROW_SELECTION){ tabela.setCellSelectionEnabled(true); } tabela.setColumnSelectionAllowed(true); ListSelectionModel colSM = tabela.getColumnModel().getSelectionModel(); colSM.addListSelectionListener(new ListSelectionListener(){ public void valueChanged(ListSelectionEvent e){ if(e.getValueIsAdjusting()) return; ListSelectionModel lsm = (ListSelectionModel)e.getSource(); if(lsm.isSelectionEmpty()) { System.out.println("Nenhuma coluna selecionada."); } else{ int selectedCol = lsm.getMinSelectionIndex(); System.out.println("Coluna " + selectedCol + " está selecionada."); } } }); } Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(tabela); c.add(scrollPane); setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
Java ::: Dicas & Truques ::: Timers |
Java Swing Exemplo completo: Como usar um timer para atualizar a hora atual em uma JLabelQuantidade de visualizações: 17257 vezes |
Este exemplo mostra como criar uma janela JFrame contendo dois botões JButton, um label JLabel e um timer (java.awt.Timer). Quando o timer dispara, o texto da label é atualizado para refletir a hora atual. Veja o resultado na imagem abaixo: ![]() E aqui está o código Java Swing completo para o exemplo: package arquivodecodigos; import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.util.Calendar; import java.text.DecimalFormat; public class Estudos extends JFrame{ JLabel hora; Timer timer; DecimalFormat formato; public Estudos() { super("Usando timers em Java"); Container c = getContentPane(); c.setLayout(new FlowLayout(FlowLayout.LEFT)); formato = new DecimalFormat("00"); // Cria o timer timer = new Timer(1000, new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ atualizarHoras(); } }); // Cria um botão com o texto "Iniciar" JButton iniciar = new JButton("Iniciar"); iniciar.addActionListener( new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ timer.start(); // inicia o timer } } ); // Cria um botão com o texto "Parar" JButton parar = new JButton("Parar"); parar.addActionListener( new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ timer.stop(); // pára o timer } } ); // JLabel que exibirá a hora atual hora = new JLabel("00:00:00"); // Adiciona os botões à janela c.add(iniciar); c.add(parar); // adiciona o label à janela c.add(hora); setSize(350, 250); setVisible(true); } private void atualizarHoras(){ // Cria uma instância de Calendar Calendar agora = Calendar.getInstance(); // horas, minutos e segundos int horas = agora.get(Calendar.HOUR); int minutos = agora.get(Calendar.MINUTE); int segundos = agora.get(Calendar.SECOND); hora.setText(formato.format(horas) + ":" + formato.format(minutos) + ":" + formato.format(segundos)); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
Delphi ::: Dicas & Truques ::: Arquivos e Diretórios |
Como retornar o diretório atual em Delphi usando a função GetDir()Quantidade de visualizações: 12899 vezes |
Em algumas situações precisamos obter o diretório atual, ou seja, aquele a partir do qual nosso programa está sendo executado. Em Delphi isso pode ser feito com o auxílio da procedure GetDir(). Esta procedure requer um valor inteiro na faixa de 0 a 3 e uma string passada por referência. Em geral usamos o valor 0 no primeiro argumento para representar o drive padrão. Veja o exemplo:procedure TForm1.Button1Click(Sender: TObject); var diretorio_atual: string; begin // vamos obter o diretório atual e atribuí-lo // na variável diretorio_atual GetDir(0, diretorio_atual); // vamos exibir o resultado ShowMessage('O drive e diretório atual são: ' + diretorio_atual); end; Ao executar este código nós teremos o seguinte resultado: O drive e diretório atual são: C:\Users\Osmar\Documents\RAD Studio\Projects Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
C# ::: Windows Forms ::: Formulários e Janelas |
Como definir a cor de fundo de um formulário C# Windows Forms usando a propriedade BackColorQuantidade de visualizações: 9405 vezes |
A cor de fundo de um formulário Windows Forms pode ser definida em tempo de design ou execução usando-se a propriedade BackColor. Em tempo de design só precisamos clicar no formulário, acionar a janela de propriedades e escolher a cor de fundo desejada. Em tempo de execução, a cor de fundo pode ser definida com um código parecido com: private void button1_Click(object sender, EventArgs e){ // vamos definir a cor de fundo para o formulário this.BackColor = Color.LightSalmon; } É possível obter o valor da propriedade BackColor do formulário da seguinte forma: private void button1_Click(object sender, EventArgs e){ // vamos obter o valor da propriedade BackColor Color corFundo = this.BackColor; // vamos mostrar o resultado MessageBox.Show("A cor de fundo é: " + corFundo.Name); } |
Nossas 20 dicas & truques de programação mais populares |
Você também poderá gostar das dicas e truques de programação abaixo |
C# - Como adicionar ou subtrair dias de uma data em C# usando o método AddDays() da estrutura DateTime PHP - Como inserir um determinado número de zeros antes de um número em PHP usando a função sprintf() AutoCAD Civil 3D .NET C# - Como retornar a quantidade de estacas de um alinhamento do Civil 3D usando a função GetStationSet() da classe Alignment da AutoCAD Civil 3D .NET API |
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 |