![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
C# ::: Dicas & Truques ::: Arquivos e Diretórios |
Como renomear um diretório em C# usando o método MoveTo() da classe DirectoryInfoQuantidade de visualizações: 9763 vezes |
Nesta dica mostrarei como podemos usar a função MoveTo() da classe DirectoryInfo para renomear um diretório na linguagem C#. Note que, na verdade, o que o método MoveTo() faz é mover todo o conteúdo de um diretório (incluindo seu conteúdo) para um novo diretório, o que dá o mesmo resultado que simplesmente renomear o diretório antigo. Veja um exemplo completo de seu uso: using System; using System.IO; namespace Estudos { class Program { static void Main(string[] args) { // vamos criar uma instância da classe DirectoryInfo DirectoryInfo dir = new DirectoryInfo(@"C:\estudos_csharp\teste"); try { // vamos chamar o método MoveTo() para renomear o diretório dir.MoveTo(@"C:\estudos_csharp\teste_2"); Console.WriteLine("Diretório renomeado com sucesso."); } catch (Exception e) { Console.WriteLine("Não foi possível renomear o diretório: {0}", e.ToString()); } finally { } Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: Diretório renomeado com sucesso. |
PHP ::: Dicas & Truques ::: Data e Hora |
PHP para iniciantes - Como obter o número de dias em um mês e ano usando a função cal_days_in_month() do PHPQuantidade de visualizações: 77 vezes |
Em algumas situações nós precisamos saber quantos dias um determinado mês possui, talvez para exibir um calendário. Para isso nós podemos usar a função cal_days_in_month() da linguagem PHP. Esta função pede um tipo de calendário (geralmente CAL_GREGORIAN), um número indicando o mês (1 para janeiro, 2 para fevereiro, etc) e o ano). Veja o código completo para obter a quantidade de dias para o mês de fevereiro de 2021: <?php $ano = 2021; $mes = 2; // fevereiro $quant_dias = cal_days_in_month(CAL_GREGORIAN, $mes, $ano); echo "Há $quant_dias dias no mês e ano informados"; ?> Ao executarmos este código nós teremos o seguinte resultado: Há 28 dias no mês e ano informados |
Java ::: Coleções (Collections) ::: Set (Conjunto) |
Java Collections - Como usar a interface Set em seus códigos JavaQuantidade de visualizações: 5178 vezes |
A interface Set estende a interface Collection mas não adiciona novos métodos ou constantes. Em vez disso, esta interface define que uma instância de Set não contenha elementos duplicados. Esta responsabilidade é transferida para as classes que implementam a interface. A classe abstrata AbstractSet é uma classe de conveniência que herda da classe também abstrata AbstractCollection e implementa a interface Set. A classe AbstractSet fornece implementações concretas para os métodos equals() e hashCode(). Estes métodos permitem a funcionalidade da não permissão de elementos duplicados nos conjuntos. As classes concretas mais conhecidas da interface Set são: HashSet - Esta classe é implementada em cima de uma tabela hash, ou seja, um array (matriz) na qual os elementos são armazenados em posições calculadas de acordo com o seu conteúdo. Uma característica interessante de HashSet é que os elementos raramente são retornados na mesma ordem na qual foram inseridos. LinkedHashSet - Esta classe estende a classe HashSet com uma implementação de lista ligada (linked list) que permite a ordenação dos elementos no conjunto. TreeSet - Esta classe é uma classe concreta que implementa a interface SortedSet. A interface SortedSet é uma sub-interface de Set que garante que os elementos no conjunto estejam ordenados. Além disso, esta interface fornece os métodos first() e last() para acessar o primeiro e o último elemento do conjunto. Há ainda os métodos headSet(toElement) e tailSet(fromElement) para retornar uma faixa do conjunto cujos elementos sejam "menores" que toElement e "maiores" que fromElement. Seja qual for a implementação de Set que você queira usar, é sempre uma boa idéia codificar em cima da interface. Isso facilita a troca de HashSet por TreeSet ou vice-versa sem grandes modificações no seu código. Veja um exemplo no qual usamos a classe concreta HashSet para representar um conjunto de cinco strings únicas: package estudos; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class Estudos{ public static void main(String[] args) { // vamos criar uma instância da classe HashSet Set<String> conjunto = new HashSet<>(); // vamos inserir cinco elementos no Set conjunto.add("Açucar"); conjunto.add("Macarrão"); conjunto.add("Feijão"); conjunto.add("Carne"); conjunto.add("Maionese"); // vamos exibir os elementos inseridos Iterator iterator = conjunto.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } } } Ao executar este trecho de código teremos um resultado parecido com: Macarrão Feijão Carne Açucar Maionese Note que raramente os elementos serão exibidos na ordem na qual eles foram inseridos. Experimente agora trocar a linha: Set<String> conjunto = new HashSet<>(); por Set<String> conjunto = new LinkedHashSet<>(); Execute o código novamente e verá que agora os elementos são exibidos na mesma ordem que foram inseridos. |
MySQL ::: Dicas & Truques ::: Data e Hora |
Como retornar apenas a parte DATE de campos DATE, DATETIME ou TIMESTAMP no MySQL usando a função DATE()Quantidade de visualizações: 12586 vezes |
A função DATE() nos permite obter a parte DATE de uma expressão DATE, DATETIME ou TIMESTAMP. Veja seu uso:SELECT DATE(NOW()) Suponhamos que você tenha um campo DATETIME com o valor 2008-03-30 02:30:15. A query: SELECT DATE(data_hora_compra) FROM tabela_estudos retornará 2008-03-30. |
Ruby ::: Fundamentos da Linguagem ::: Passos Iniciais |
Qual é a diferença entre print e puts em Ruby?Quantidade de visualizações: 12446 vezes |
Tanto a função print quanto a função puts do Ruby nos permite escrever na tela, ou seja, exibir ao usuário o resultado do processamento das operações requisitas. Então, qual a diferença entre elas? A instrução puts é uma abreviação de "put string" e automaticamente move o cursor para a próxima linha. A instrução print é usada quando queremos escrever e manter o cursor na mesma linha. Veja um exemplo completo a seguir: # Este exemplo mostra a diferença entre as funções # print e puts da linguagem Ruby # vamos construir uma frase aqui frase = "Gosto muito de Ruby" # vamos exibir a frase usando duas chamadas print e # depois duas chamadas puts print frase print frase puts frase puts frase Ao executar este código Ruby nós teremos o seguinte resultado: Gosto muito de RubyGosto muito de RubyGosto muito de Ruby Gosto muito de Ruby Note que as duas primeiras chamadas a print escreveram na mesma linha. Porém, a primeira chamada a puts escreveu na mesma linha anterior, mas já colocou uma quebra de linha após a escrita. As duas funções, contudo, permitem o uso do caractere de quebra de linha. Veja: # Este exemplo mostra a diferença entre as funções # print e puts da linguagem Ruby # vamos construir uma frase aqui frase = "Gosto muito de Ruby" # vamos exibir a frase usando duas chamadas print e # depois duas chamadas puts print frase + "\n" print frase + "\n" puts frase + "\n\n" puts frase Ao executar este novo código nós teremos o seguinte resultado: Gosto muito de Ruby Gosto muito de Ruby Gosto muito de Ruby Gosto muito de Ruby |
C ::: Dicas & Truques ::: Strings e Caracteres |
Como criar sua própria função substring() para obter uma substring a partir de uma string em CQuantidade de visualizações: 17055 vezes |
Em algumas situações precisamos obter uma substring a partir de uma string. A linguagem C já fornece algumas funções que tornam isso possível. No entanto, nenhuma destas funções permite especificar o índice inicial da substring. Sendo assim, o trecho de código abaixo mostra como escrever uma função substring() que permite informar a string de origem, o índice inicial e a quantidade de caracteres que serão obtidos. O retorno da função será um ponteiro para a substring obtida:#include <stdio.h> #include <stdlib.h> #include <string.h> char *substring(char *origem, int inicio, int quant){ char *res = origem; int i = 0; // posição inicial menor que 0 ou // posição inicial muito exagerada? if((inicio < 0) || (inicio > strlen(origem))) inicio = 0; // quantidade de caracteres muito exagerada? if(quant > inicio + strlen(origem)) quant = strlen(origem) - inicio; // obtem os caracteres desejados for(i = 0; i <= quant - 1; i++){ res[i] = origem[inicio + i]; } // marca o fim da string res[i] = '\0'; return res; } int main(int argc, char *argv[]) { char texto[] = "Gosto muito de C e C++"; // não podemos bagunçar a string original char sub_temp[128]; strcpy(sub_temp, texto); // 10 caracteres começando // no índice 6 char *res = substring(sub_temp, 6, 10); // exibe o resultado puts(res); // exibe a string original puts(texto); system("pause"); return 0; } Ao executar este código nós teremos o seguinte resultado: muito de C Gosto muito de C e C++ |
Delphi ::: Data Controls (Controles de Dados) ::: TDBGrid |
Como criar colunas persistentes o controle TDBGrid do DelphiQuantidade de visualizações: 11700 vezes |
Quando conectamos um TDBGrid a uma fonte de dados TDataSource, automaticamente ocorre a criação de colunas no grid, cada uma correspondendo a um dos campos da tabela para a qual o TDataSet (e suas classes derivadas) está apontando. Estas colunas criadas automaticamente são chamadas de DINÂMICAS, ou contrário das colunas PERSISTENTES. Porém, na maioria das vezes, nós queremos personalizar a aparência das colunas em tempo de design (o que também pode ser feito em tempo de execução). Queremos alinhar ou alterar os títulos, mudar a fonte e cores, etc. Fazemos isso clicando com o botão direito no controle DBGrid e acessando a opção Columns Editor (ou dando duplo clique na propriedade Columns). Isso fará com que a propriedade State do objeto TDBGridColumns do DBGrid seja mudada para csCustomized, o que indica que o Delphi montará as colunas baseado em nossas configurações e não mais automaticamente de acordo com os nomes dos campos da tabela. Siga os seguintes passos para criar colunas persistentes para o controle DBGrid: a) Selecione o DBGrid no formulário; b) Acesse o editor Columns dando duplo-clique na propriedade Columns no Object Inspector; Isso bastará para que o list box de Columns exiba as colunas persistentes já existentes. Quando o editor Columns é mostrado pela primeira vez, esta lista estará vazia porque o grid está em seu estado padrão, contendo apenas colunas dinâmicas. Podemos criar colunas persistentes para todos os campos do dataset de uma só vez, ou podemos criar as colunas persistentes para cada campo individualmente. Siga os passos abaixo para criar colunas persistentes para todos os campos: a) Chame o editor Columns e escolha a opção Add All Fields. Note que se o grid não estiver associado a nenhum data source, a opção Add All Fields estará desabilitada. Associe o grid com o data source que estiver conectado a um dataset ativo antes de escolher a apção Add All Fields. b) Se o grid já possuir colunas persistentes, uma caixa de diálogo perguntará se você quer excluir as colunas existentes ou apenas acrescentar as novas colunas. Se você escolher Yes, todas as colunas persistentes serão removidas e todos os campos do dataset atual serão inseridos como colunas, obedecendo sua ordem no dataset. Neste caso os títulos das colunas serão os nomes dos campos na tabela. Se você escolher No, as colunas persistentes serão mantidas e as novas colunas serão adicionadas. C) Clique o botão Close para aplicar as colunas persistentes no DBGrid e fechar a caixa de diálogo. Siga os passos abaixo para criar colunas persistentes individualmente: a) Escolha o botão Add no editor Columns. A nova columa será selecionada na list box. Esta nova coluna receberá um número sequencial e um nome padrão (por exemplo, 0 - TColumn). Para associar um campo da tabela com esta nova coluna, ajuste sua propriedade FieldName no Object Inspector. b) Para definir o título para a nova coluna, expanda a propriedade Title no Object Inspector e ajuste sua propriedade Caption. c) Feche o editor Columns para aplicar as colunas persistentes no grid e fechar a caixa de diálogo. Se o um DBGrid possui apenas colunas dinâmicas, nós podemos excluí-las em tempo de execução simplesmente mudando o valor da propriedade Columns.State para csCustomized. Veja: procedure TForm3.Button3Click(Sender: TObject); begin // vamos alterar o valor da propriedade State para csCustomized DBGrid1.Columns.State := csCustomized; end; Este trecho de código faz com que as colunas dinâmicas sejam excluídas e colunas persistentes sejam criadas para cada um dos campos do dataset ao qual o grid está ligado. Após isso, novas colunas podem ser adicionadas em tempo de execução usando código parecido com: procedure TForm3.Button3Click(Sender: TObject); begin // vamos alterar o valor da propriedade State para csCustomized DBGrid1.Columns.State := csCustomized; // vamos adicionar uma nova coluna DBGrid1.Columns.Add; end; Esta dica foi escrita e testada no Delphi 2009. |
LISP ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como converter graus em radianos em LISP - Trigonometria em LISPQuantidade de visualizações: 1032 vezes |
Quando estamos trabalhando com trigonometria na linguagem Common Lisp (e AutoLISP, para programadores AutoCAD), é importante ficarmos atentos ao fato de que todos os métodos e funções trigonométricas em Lisp recebem seus argumentos em radianos, em vez de graus. Nesta dica veremos como converter graus em radianos (sem a chatice de ficar relembrando regra de três). Veja a fórmula abaixo: \[Radianos = Graus \times \frac{\pi}{180}\] Agora veja como esta fórmula pode ser escrita em código LISP: ; programa LISP que converte graus em radianos (let((graus)(radianos)) ; valor em graus (setq graus 30) ; obtém o valor em radianos (setq radianos (* graus (/ pi 180))) ; mostra o resultado (format t "~F graus em radianos é ~F" graus radianos) ) Ao executarmos este código Common Lisp nós teremos o seguinte resultado: 30 graus convertidos para radianos é 0.5235987755982988 |
Java ::: Java para Engenharia ::: Física - Mecânica |
Como calcular a velocidade de um corpo dado sua massa e sua energia cinética usando a linguagem JavaQuantidade de visualizações: 1225 vezes |
A Energia cinética é uma das formas da energia mecânica e definida como a energia de movimento, pois está relacionada com o estado de movimento de um corpo. Variando de acordo com o movimento e a massa do corpo, esse tipo de energia tem sua existência condicionada à velocidade, uma vez que nos corpos em repouso ela não existe, pois a velocidade é nula. Essa vertente de energia depende da relação entre corpo e o ponto referencial do observador. Se houver velocidade, haverá energia cinética. Portanto, não trata-se de uma energia invariável, mas sim de um tipo de energia mecânica que é determinada em função da massa do corpo em movimento, medida em quilogramas (kg), e da velocidade desenvolvida por ele, medida em metros por segundo (m/s). A fórmula para obtenção da velocidade de um corpo, quando temos a sua energia cinética e a sua massa é: \[\text{v} = \sqrt{\frac{E_c}{\frac{1}{2}\text{m}}}\] Onde: m ? massa do corpo (em kg). Ec ? energia cinética (em joule, J). v ? velocidade do corpo (em m/s). Vamos ver um exemplo agora? Observe o seguinte enunciado: 1) Determine qual é a velocidade em que se move um corpo de 20kg cuja energia cinética é igual a 400J. Note que o exercício já nos dá os valores em suas unidades de medidas no SI (Sistema Internacional de Medidas). Tudo que temos a fazer é converter a fórmula para código Java. Veja: package arquivodecodigos; public class Estudos{ public static void main(String args[]){ // energia cinética double energia_cinetica = 400; // em joule // massa do corpo double massa = 20; // em kg // e então calculamos a velocidade do corpo double velocidade = Math.sqrt(energia_cinetica / (0.5 * massa)); // mostramos o resultado System.out.println("A velocidade do corpo é: " + velocidade + "m/s"); } } Ao executar este código Java nós teremos o seguinte resultado: A velocidade do corpo é: 6.324555320336759m/s Não se esqueça de que a velocidade retornada estará em metros por segundo. |
Java ::: Classes e Componentes ::: JTable |
Java Swing - Como excluir linhas de uma JTable em tempo de execução usando o método removeRow() da classe DefaultTableModelQuantidade de visualizações: 16010 vezes |
Nesta dica mostrarei como é possível excluir uma determinada linha de uma JTable usando o método removeRow() da classe DefaultTableModel. Veja que mostro também como inserir novas linhas na JTable usando o método insertRow(). Veja o resultado obtido na imagem abaixo: ![]() E agora o código Java Swing completo: package arquivodecodigos; 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("Inserir Linhas"); btn.addActionListener( new ActionListener(){ public void actionPerformed(ActionEvent e){ String nome = JOptionPane.showInputDialog(null, "Informe o nome:"); String idade = JOptionPane.showInputDialog(null, "Informe a idade:"); int pos = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe a posição da nova linha:")); // testa se a posição é válida if(pos > (modelo.getRowCount() - 1)) pos = 0; // Insere uma linha na posição especificada modelo.insertRow(pos, new Object[]{nome, idade}); } } ); JButton btn2 = new JButton("Excluir Linhas"); btn2.addActionListener( new ActionListener(){ @Override public void actionPerformed(ActionEvent e){ int pos = Integer.parseInt(JOptionPane.showInputDialog(null, "Informe a posição da linha a ser excluída:")); // testa se a posição é válida if(pos < modelo.getRowCount()) // Exclui a linha na posição especificada modelo.removeRow(pos); } } ); tabela.setPreferredScrollableViewportSize(new Dimension(350, 50)); Container c = getContentPane(); c.setLayout(new FlowLayout()); JScrollPane scrollPane = new JScrollPane(tabela); c.add(scrollPane); c.add(btn); c.add(btn2); setSize(400, 300); setVisible(true); } public static void main(String args[]){ Estudos app = new Estudos(); app.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); } } |
Nossas 20 dicas & truques de programação mais populares |
GNU Octave - Como calcular o coeficiente angular de uma reta em GNU Octave dados dois pontos no plano cartesiano JavaScript - Como inverter a ordem dos elementos de um array em JavaScript - Vetores e matrizes em JavaScript |
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 |