JavaScript ::: Dicas & Truques ::: Arrays e Matrix (Vetores e Matrizes) |
Como testar se todos os elementos de um array satisfazem uma condição em JavaScript usando a função every()Quantidade de visualizações: 1549 vezes |
Em algumas situações nós gostaríamos de testar todos os elementos de um vetor e verificar se todos eles passam em um determinado teste. Para isso podemos usar a função every(), adicionada à linguagem JavaScript por meio do ECMAScript 5 (JavaScript 5, ECMAScript 2009, ES5). Este método nos permite fornecer uma função de callback que será chamada para cada um dos elementos do vetor. E o retorno do método every() é um valor true se todos os elementos passarem no teste e false em caso contrário. Veja um exemplo no qual testamos se TODOS os elementos de um vetor são maiores que 10: <script type="text/javascript"> function testarTodos(valor, indice, vetor){ if(valor > 10){ return true; } } var valores = new Array(21, 50, 30, 70, 12, 3); // vamos verificar se TODOS os valores são // maiores que 10 var res = valores.every(testarTodos); window.alert("Todos passaram no teste: " + res); </script> Aqui o resultado será false, pois o valor 3 não passou no teste. É importante observar que, assim que a função de callback retorna false pela primeira vez, o método every() já abandona sua execução. Uma função passada para o método every() pode conter os seguintes argumentos (nessa mesma ordem): a) O valor do item; b) O índice do item (opcional); c) O vetor a partir do qual o método every() está sendo chamado (opcional). Como última observação, o método every() não modifica o array original. |
C++ ::: Dicas & Truques ::: Matemática e Estatística |
Como testar se um número é primo em C++Quantidade de visualizações: 3178 vezes |
O Número Primo é o número maior que 1 e que só pode ser dividido por 1 e por ele mesmo, ou seja, números primos não podem ser divididos por outros números, a não ser por ele mesmo e pelo número 1. Dessa forma, 2, 3, 5, 7, 11, 13, 17, etc, são todos números primos. É importante observar que 0 e 1 não são números primos, e que o número 2 é o único número primo par. Veja agora um código C++ completo que pede para o usuário informar um número inteiro positivo e mostra uma mensagem indicando se o número informado é primo ou não: #include <iostream> #include <cstdlib> using namespace std; int main(int argc, char *argv[]){ int numero; bool primo = true; // vamos solicitar um número inteiro positivo cout << "Informe um número inteiro positivo: "; cin >> numero; // o número é negativo? if(numero < 0){ cout << "Número inválido.\n\n"; } // é 0 ou 1? else if((numero == 0) || (numero == 1)){ cout << "Número válido, mas não é primo.\n\n"; } // passou até aqui. Vamos testar se o número é primo else{ for (int i = 2; i <= (numero / 2); i++){ // se passar no teste, não é primo if (numero % i == 0) { primo = false; break; } } if(primo){ cout << "O número informado é primo\n\n"; } else{ cout << "O número informado não é primo\n\n"; } } system("PAUSE"); // pausa o programa return EXIT_SUCCESS; } Ao executar este código C++ nós teremos o seguinte resultado: Informe um número inteiro positivo: 9 O número informado não é primo |
Java ::: Coleções (Collections) ::: Vector |
Como usar o método add() para adicionar um elemento no início de um objeto da classe Vector da linguagem JavaQuantidade de visualizações: 10839 vezes |
Nesta dica mostrarei como é possível adicionar novos elementos no início de um Vector usando o método add() dessa classe. A assinatura que usaremos é:public void add(int index, E element) Veja que o método recebe o índice indicando a posição na qual o novo elemento será inserido e o elemento propriamente dito. Veja o código completo para o exemplo: package arquivodecodigos; import java.util.*; public class Estudos{ public static void main(String args[]){ // Cria um Vector Vector<Integer> valores = new Vector<Integer>(); // adiciona itens ao Vector valores.addElement(54); valores.addElement(87); valores.addElement(6); // Lista os itens do Vector System.out.println("Elementos no Vector: "); for(Enumeration e = valores.elements(); e.hasMoreElements();){ int valor = (Integer)e.nextElement(); System.out.print(valor + " "); } // Adiciona um elemento no início valores.add(0, 10); System.out.println(); // Lista os itens do Vector System.out.println("\nElementos no Vector: "); for(Enumeration e = valores.elements(); e.hasMoreElements();){ int valor = (Integer)e.nextElement(); System.out.print(valor + " "); } } } Ao executarmos este código nós teremos o seguinte resultado: Elementos no Vector: 54 87 6 Elementos no Vector: 10 54 87 6 É importante observar que as classes java.util.Vector e java.util.Hashtable foram marcadas como obsoletas a partir do JDK1.2 e provavelmente não serão usadas em novos desenvolvimentos. |
Revit C# ::: Dicas & Truques ::: Colunas e Pilares |
Como listar os tipos de colunas e pilares disponíveis no Revit usando a Revit C# APIQuantidade de visualizações: 323 vezes |
Nesta dica mostrarei como podemos obter e retorna uma lista com as colunas e pilares disponíveis na sua instalação do Revit. Esse passo é muito importante quando precisamos informar o id do símbolo de família, ou seja, o tipo de coluna ou pilar que queremos criar, em um determinado momento, via programação Revit C# API. O primeiro passo é acessar o documento atual do Revit usando uma chamada à this.ActiveUIDocument.Document. Em seguida nós obtemos um objeto FilteredElementCollector para filtrar e retornar os símbolos de família que se enquadrem na categoria OST_StructuralColumns. Para finalizar, nós convertemos os elementos Element em FamilySymbol. Veja o código 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 Autodesk.Revit.DB.Architecture; 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 obter um FilteredElementCollector contendo apenas // elementos que sejam ElementType e pertençam à categoria // OST_StructuralColumns try { FilteredElementCollector elementos = new FilteredElementCollector(doc) .WhereElementIsElementType().OfCategory(BuiltInCategory.OST_StructuralColumns); String lista = ""; // vamos percorrer os elementos retornados foreach(Element elemento in elementos) { // vamos converter o Element em FamilySymbol FamilySymbol coluna = elemento as FamilySymbol; // agora montamos a lista de colunas (ou pilares) lista = lista + "Id: " + elemento.Id.IntegerValue + "; Nome: " + elemento.Name + "; Tipo: " + elemento.Category.Name + "; Família: " + coluna.Family.Name + "\n"; } // mostramos o resultado TaskDialog.Show("Aviso", lista); } 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 } } Ao executar este código Revit C# nós teremos o seguinte resultado: Id: 12190; Nome: UC305x305x97; Tipo: Pilares estruturais; Família: UC-Universal Columns-Column Id: 355634; Nome: 80 x 50; Tipo: Pilares estruturais; Família: Pila de Concreto - Retangular Id: 355636; Nome: 50 x 50; Tipo: Pilares estruturais; Família: Pila de Concreto - Retangular |
GoLang ::: Dicas & Truques ::: Geometria, Trigonometria e Figuras Geométricas |
Como calcular a equação reduzida da reta em GoLang dados dois pontos pertencentes à retaQuantidade de visualizações: 1044 vezes |
Nesta dica de Go veremos como calcular a equação reduzida da reta quando temos dois pontos pertencentes à esta reta. Não, nessa dica não vamos calcular a equação geral da reta, apenas a equação reduzida. Em outras dicas do site você encontra como como isso pode ser feito. Para relembrar: a equação reduzida da reta é y = mx + n, em que x e y são, respectivamente, a variável independente e a variável dependente; m é o coeficiente angular, e n é o coeficiente linear. Além disso, m e n são números reais. Com a equação reduzida da reta, é possível calcular quais são os pontos que pertencem a essa reta e quais não pertencem. Vamos começar então analisando a seguinte figura, na qual temos dois pontos que pertencem à uma reta: ![]() Note que a reta da figura passa pelos pontos A(5, 5) e B(9, 2). Então, uma vez que já temos os dois pontos, já podemos calcular a equação reduzida da reta. Veja o código GoLang completo para esta tarefa: // pacote principal package main // vamos importar o módulo de formatação de // entrada e saída import "fmt" // esta é a função principal do programa func main() { // variáveis que vamos usar na resolução do problema var x1, y1, x2, y2, m, n float32 var sinal string // vamos ler as coordenadas do primeiro ponto fmt.Print("Coordenada x do primeiro ponto: ") fmt.Scanln(&x1) fmt.Print("Coordenada y do primeiro ponto: ") fmt.Scanln(&y1) // vamos ler as coordenadas do segundo ponto fmt.Print("Coordenada x do segundo ponto: ") fmt.Scanln(&x2) fmt.Print("Coordenada y do segundo ponto: ") fmt.Scanln(&y2) sinal = "+" // vamos calcular o coeficiente angular da reta m = (y2 - y1) / (x2 - x1) // vamos calcular o coeficiente linear n = y1 - (m * x1) // coeficiente linear menor que zero? O sinal será negativo if n < 0 { sinal = "-" n = n * -1 } // mostra a equação reduzida da reta fmt.Printf("Equação reduzida: y = %.2fx %s %.2f", m, sinal, n); } Ao executar este código GoLang nós teremos o seguinte resultado: Coordenada x do primeiro ponto: 5 Coordenada y do primeiro ponto: 5 Coordenada x do segundo ponto: 9 Coordenada y do segundo ponto: 2 Equação reduzida: y = -0,75x + 8,75 Para testarmos se nossa equação reduzida da reta está realmente correta, considere o valor 3 para o eixo x da imagem acima. Ao efetuarmos o cálculo: >> y = (-0.75 * 3) + 8.75 y = 6.5000 temos o valor 6.5 para o eixo y, o que faz com que o novo ponto caia exatamente em cima da reta considerada na imagem. |
VBA ::: Dicas & Truques ::: Rotinas de Conversão |
Como converter números em strings em VBA usando a função CStr()Quantidade de visualizações: 471 vezes |
A função CStr() do VBA pode ser usada quando queremos converter valores numéricos do tipo Integer ou Double em uma string. Em geral isso é necessário quando queremos aplicar funções de strings a valores numéricos, por exemplo, testar se um determinado dígito faz parte de um número. Veja um trecho de código no qual usamos a função CStr() para converter valores Integer e Double em string e mostrar o resultado: ' Procedimento para converter Integer e Double em string Sub ConverterNumeroString() ' vamos declarar duas variáveis numéricas Dim codigo As Integer Dim preco As Double codigo = 58 preco = 32.15 Dim resultado As String resultado = "O código do produto é: " + CStr(codigo) + _ " e o preço é: " + CStr(preco) ' mostramos o resultado MsgBox resultado End Sub Ao executar este código VBA nós teremos o seguinte resultado: O código do produto é: 58 e o preço é: 32,15 |
C# ::: LINQ ::: LINQ to Objects |
Como retornar o maior elemento em um array de int em C# usando a função Max() do LINQQuantidade de visualizações: 1101 vezes |
Nesta dica mostrarei, em um exemplo bem simples, como podemos usar o método Max() do LINQ (Language-Integrated Query) do C# para retornar o maior elemento de um vetor de inteiros. Note que temos um vetor de int com os valores {5, 2, 8, 3, 0, 1} e o valor 8 deverá ser retornado como sendo o maior. Veja o código completo para o exemplo: using System; using System.Linq; namespace Estudos { class Principal { static void Main(string[] args) { // vamos construir um vetor de inteiros int[] valores = {5, 2, 8, 3, 0, 1}; // vamos obter o maior elemento do vetor int maior = valores.Max(); // vamos mostrar o resultado Console.WriteLine("O maior valor é: {0}", maior); Console.WriteLine("\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: O maior valor é: 8 Fique atento ao fato de que o método Max() pode atirar uma exceção do tipo InvalidOperation se o array ou coleção estiver vazia ou não incluir nenhum elemento que se encaixe nas condições testadas. Veja o resultado ao chamarmos este método em um vetor vazio: System.InvalidOperationException HResult=0x80131509 Message=Sequence contains no elements Source=System.Linq StackTrace: at System.Linq.ThrowHelper.ThrowNoElementsException() at System.Linq.Enumerable.Max(IEnumerable`1 source) at Estudos.Principal.Main(String[] args) in C:\estudos_c#\Estudos\Principal.cs:line 11 |
Java ::: Dicas & Truques ::: Threads |
Como usar uma thread Java para animar o título de uma janela JFrame do Java SwingQuantidade de visualizações: 11728 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. |
JavaScript ::: Dicas & Truques ::: Data e Hora |
Como formatar datas em JavaScript de acordo com as configurações do computador do usuário usando a função toLocaleDateString()Quantidade de visualizações: 7498 vezes |
Nesta dica mostrarei como podemos usar a função toLocaleDateString() do objeto Date do JavaScript para formatar e exibir a data atual (ou uma data construída) usando as configurações regionais do computador do usuário. Veja a página HTML completa para o exemplo: <!doctype html> <html> <head> <title>Datas em JavaScript</title> </head> <body> <script type="text/javascript"> // vamos obter a data atual var data = new Date(); // formatamos a data var data_formatada = data.toLocaleDateString(); // e mostramos o resultado document.write("Hoje é: " + data_formatada); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: Hoje é: 04/02/2022 |
Python ::: wxPython ::: Eventos e Tratadores de Eventos |
Como tratar o evento wx.EVT_PAINT em suas aplicações wxPython - Interfaces gráficas no PythonQuantidade de visualizações: 164 vezes |
Nesta dica mostrarei como podemos tratar o evento wx.PaintEvent em suas aplicações wxPython. Este evento é disparado todas as vezes que uma janela é redesenhada, ou seja, quando fazemos o redimensionamento da janela ou a maximizamos. Veja o código completo para uma aplicação wxPython na qual interceptamos o evento wx.PaintEvent para exibir a hora atual na janela, usando a função dc.DrawText(). Note o uso da função strftime() para formatar o conteúdo de um objeto datetime. # vamos importar o framework wxPython import wx # mais alguns imports necessários from datetime import datetime import locale # classe que representará a janela principal da # aplicação wxPython class JanelaPrincipal(wx.Frame): # o método construtor def __init__(self, *args, **kw): # chama o construtor da classe wx.Frame super(JanelaPrincipal, self).__init__(*args, **kw) # Configurações do usuário locale.setlocale(locale.LC_ALL, '') # chama a função que inicializa a GUI self.InicializarGUI() # método usado para gerenciar o evento OnPaint def OnPaint(self, e): # Obtém um datetime da data e hora atual hoje = datetime.today() # vamos obter o contexto de desenho dc = wx.PaintDC(self) texto = "Evento OnPaint gerado às: {0}".format( hoje.strftime("%X")) dc.DrawText(texto, 20, 20) # função que inicializa a GUI do programa def InicializarGUI(self): self.Bind(wx.EVT_PAINT, self.OnPaint) # definimos o tamanho da janela self.SetSize((450, 350)) # define a cor de fundo da janela (Windows 10) self.SetBackgroundColour(wx.WHITE) # definimos o título da janela self.SetTitle('O evento OnPaint') # e centralizamos a janela self.Centre() # função principal do programa Python def main(): # vamos criar a aplicação wxPython app = wx.App() janela_principal = JanelaPrincipal(None) janela_principal.Show() app.MainLoop() if __name__ == "__main__": main() |
Nossas 20 dicas & truques de programação mais populares |
Delphi - Como calcular o cateto adjascente dadas as medidas da hipotenusa e do cateto oposto em Delphi |
Você também poderá gostar das dicas e truques de programação abaixo |
CSS - Como definir uma imagem de fundo para a página HTML em CSS usando a propriedade background-image Java - Como usar null em Java |
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 |