![]() |
|||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
|
C++ ::: Dicas & Truques ::: MIDI Musical Instrument Digital Interface, Mapeamento e sequenciamento MIDI, Entrada e saída MIDI |
Programação MIDI usando C++ - Como usar um vetor de chars para construir uma mensagem MIDI e passá-lo para a função midiOutShortMsg() da API do WindowsQuantidade de visualizações: 2413 vezes |
Nas dicas dessa seção nós vimos como é possível enviar uma mensagem MIDI para o dispositivo de saída por meio da função midiOutShortMsg() da API do Windows. Essa função recebe um handle para o dispositivo de saída MIDI e um valor DWORD contendo a mensagem MIDI. Se você revisitar essas dicas, verá que na maioria delas nós informamos a mensagem MIDI diretamente no parâmetro da função (como um valor hexadecimal). Nesta dica mostrarei como é possível construir as mensagens MIDI usando seus valores individuais e, o que é melhor, usando valores decimais. Para isso nós vamos construir um vetor de char e informar os valores que compõem a mensagem. É importante observar que a função midiOutShortMsg() exige que a mensagem MIDI seja informada na ordem de bytes "little endian" ou seja, o status MIDI é informado no byte de ordem mais baixa. Isso é conseguido com um cast do vetor para um unsigned long. Veja o trecho de código: // vamos criar um vetor contendo os valores que compõem a mensagem MIDI unsigned char vetor[4]; vetor[0] = 144; // Note-on no Canal 1 vetor[1] = 40; // Nota Mi na 4ª oitava vetor[2] = 100; // Velocidade/volume da nota vetor[3] = 0; // Não é usado // e aqui é que acontece a mágica. Quando fazemos o cast do // vetor para o tipo long sem sinal, os valores são colocados em // little endian, justamente a ordem de bytes esperada pela // função midiOutShortMsg() unsigned long mensagem = *(unsigned long*)vetor; // envia a mensagem MIDI midiOutShortMsg(saida, mensagem); Note que não coloquei o código todo. Para completá-lo, veja outras dicas dessa seção. |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar construtores em suas classes Java - Programação orientada a objetos em Java - Métodos construtores - RevisadoQuantidade de visualizações: 20007 vezes |
Muitas vezes precisamos inicializar propriedades de um objeto de uma classe Java no momento em que este é criado. Para isso podemos usar um método construtor. Um método construtor, que em Java é definido por um método com o mesmo nome da classe, é chamado no exato momento em que efetuamos uma chamada a new. Veja um exemplo no qual exibimos uma mensagem alertando que um objeto de uma classe acaba de ser criado: class Pessoa{ public Pessoa(){ System.out.println("Fui criado."); } } public class Estudos{ public static void main(String args[]){ // cria um objeto da classe Pessoa Pessoa p = new Pessoa(); } } Execute este código e veja o resultado. Note que um construtor deve, exceto em raríssimas ocasiões, ser marcado com o modificador public. Além disso, um construtor não possui retorno e só se torna realmente útil quando o usamos para inicializar as propriedades do objeto recém-criado. Veja: class Pessoa{ public String nome; public Pessoa(String nome){ this.nome = nome; } } public class Estudos{ public static void main(String args[]){ // cria um objeto da classe Pessoa Pessoa p = new Pessoa("Osmar J. Silva"); System.out.println(p.nome); } } Aqui nós fornecemos o valor para a propriedade nome na mesma instrução que cria a instância da classe. Quando não definimos um método construtor, o compilador Java o faz nos bastidores. Mas isso só ocorre quando não definimos o nosso próprio método construtor, seja ele com ou sem parâmetros. |
AutoCAD .NET API C# ::: Dicas & Truques ::: Polyline - Polilinha |
Como selecionar uma polilinha no AutoCAD e mostrar as coordenadas de suas vértices usando a AutoCAD .NET C# APIQuantidade de visualizações: 496 vezes |
Em várias situações nós precisamos efetuar cálculos usando os vértices de uma polilinha. Nesta dica eu mostro como podemos pedir para o usuário selecionar uma polilinha na área de desenho do AutoCAD e mostrar as coordenadas x e y de cada um dos vértices. No código abaixo eu trato duas formas de polilinhas no AutoCAD: a polilinha 2D Polyline e a polilinha 3D, representada pelo objeto Polyline3d. Note que as formas de se extrair os vértices desses dois objetos são completamente diferentes. Se a polilinha for 2D, seus vértices são extraído usando-se a função GetPoint2dAt(), que retorna um objeto Point2d. Se a polilinha for 3D, ela será representada por um objeto da classe Polyline3d, e seus vértices são retornados como objetos PolylineVertex3d a partir de uma chamada à função GetObject() da classe Transaction. Veja o código AutoCAD .NET C# API completo para o exemplo: using System; using Autodesk.AutoCAD.Runtime; using Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; using Autodesk.AutoCAD.EditorInput; [assembly: CommandClass(typeof(PluginEstudos.Class1))] namespace PluginEstudos { public class Class1 { [CommandMethod("estudos")] public void Estudos() { // vamos obter o documento atual Document doc = Application.DocumentManager.MdiActiveDocument; // vamos obter a base de dados Database db = doc.Database; // vamos pedir para o usuário selecionar uma polilinha PromptEntityResult resultado = doc.Editor.GetEntity( "Selecione uma polilinha: "); // a seleção foi feita com sucesso if (resultado.Status != PromptStatus.OK) { Application.ShowAlertDialog("Nenhum elemento selecionado."); return; } // iniciamos uma transação using (Transaction trans = db.TransactionManager.StartTransaction()) { // obtemos a polilinha selecionada DBObject objeto = trans.GetObject(resultado.ObjectId, OpenMode.ForRead); // vamos testar se a polilinha é do tipo leve ou otimizada Polyline polilinha2d = objeto as Polyline; if (polilinha2d != null) { // vamos percorrer todos os vértices, um de cada vez int numero_vertices = polilinha2d.NumberOfVertices; for (int i = 0; i < numero_vertices; i++) { // vamos obter um objeto Point2d ou Point3d Point2d ponto = polilinha2d.GetPoint2dAt(i); // e escrevemos na janela de comandos doc.Editor.WriteMessage("\nX = " + ponto.X.ToString("0.00") + "; Y = " + ponto.Y.ToString("0.00")); } } // é uma polilinha do tipo pesada, ou heavy else { Polyline3d polilinha3d = objeto as Polyline3d; if (polilinha3d != null) { // percorremos cada um dos vértices foreach (ObjectId id_vertice in polilinha3d) { PolylineVertex3d vertice3d = (PolylineVertex3d)trans.GetObject( id_vertice, OpenMode.ForRead); // e escrevemos na janela de comandos doc.Editor.WriteMessage("\nX = " + vertice3d.Position.X.ToString("0.00") + "; Y = " + vertice3d.Position.Y.ToString("0.00")); } } } // fechamos a transação trans.Commit(); } } } } Ao executar este código AutoCAD .NET C# API nós teremos o seguinte resultado: Command: Selecione uma polilinha: X = 168.91; Y = 159.91 X = 415.17; Y = 126.24 X = 317.08; Y = 24.18 X = 80.53; Y = 104.29 |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Apostila Java para iniciantes - Como concatenar strings em Java usando o operador "+"Quantidade de visualizações: 52 vezes |
Strings, ou seja, palavras, frases e textos, são concatenadas em Java usando-se o operador de adição "+". Lembre-se: concatenar significa juntar, agrupar, mesclar, etc. Veja um exemplo completo no trecho de código a seguir: public class Estudos{ public static void main(String[] args){ String s1 = "Bom dia, "; String s2 = "meu caro amigo!"; String s3 = s1 + s2; System.out.println(s3); System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: Bom dia, meu caro amigo! |
jQuery ::: Dicas & Truques ::: Atributos ou Propriedades HTML |
Como alternar a classe de um elemento HTML usando a função toggleClass() do jQueryQuantidade de visualizações: 9030 vezes |
O método toggleClass() do jQuery é um dos mais interessantes no framework. Este método permite aplicar um nome de classe a um elemento HTML se ele ainda não estiver definido e removê-lo se este já estiver definido para o elemento. Veja um trecho de código que altera a cor de fundo de um parágrafo a cada vez que ele é clicado. Comece analisando o trecho de estilos CSS: <style type="text/css"> body, td {font: 70% Verdana} .destaque {background-color: yellow} .destaque2 {background-color: red} </style> Veja agora o elemento P que usaremos para ilustrar o efeito: <p id="parag" class="destaque">Sou um parágrafo</p> E finalmente o código JavaScript (na parte <head></head> da página): <script type="text/javascript"> <!-- $(document).ready(function(){ $("#parag").click(function(){ $(this).toggleClass("destaque2"); }); }); //--> </script> E aqui a página HTML completa para o exemplo: <!doctype html> <html> <head> <title>Estudos jQuery</title> <style type="text/css"> body, td {font: 70% Verdana} .destaque {background-color: yellow} .destaque2 {background-color: red} </style> <script src="https://code.jquery.com/jquery-3.6.0.js" integrity="sha256-H+K7U5CnXl1h5ywQfKtSj8PCmoN9aaq30gDh27Xc0jk=" crossorigin="anonymous"></script> </head> <body> <p id="parag" class="destaque">Sou um parágrafo</p> <script type="text/javascript"> $(document).ready(function(){ $("#parag").click(function(){ $(this).toggleClass("destaque2"); }); }); </script> </body> </html> O método toggleClass() retorna um objeto jQuery para fins de encadeamento de chamadas de métodos. |
Java ::: Dicas & Truques ::: Data e Hora |
Como converter um objeto Calendar em um objeto Date em JavaQuantidade de visualizações: 11268 vezes |
Muitas vezes precisamos converter um objeto Calendar em um objeto Date em Java. Isso pode ser feito usando-se o método getTime() da classe Calendar. Este método retorna um objeto da classe Date representando o estado atual do objeto Calendar em milisegundos desde o Epoch. Veja um exemplo dessa conversão e o uso da classe SimpleDateFormat para formatar o resultado: package estudos; import java.util.*; import java.text.*; public class Estudos{ public static void main(String args[]){ Calendar cal = Calendar.getInstance(); Date data = cal.getTime(); // formata e exibe a data e hora Format formato = new SimpleDateFormat( "dd/MM/yyyy - HH:mm:ss"); System.out.println(formato.format(data)); } } Ao executar este código Java nós teremos o seguinte resultado: 09/09/2022 - 14:39:53 |
R ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o cateto oposto dadas as medidas da hipotenusa e do cateto adjascente em RQuantidade de visualizações: 12954 vezes |
Todos estamos acostumados com o Teorema de Pitágoras, que diz que "o quadrado da hipotenusa é igual à soma dos quadrados dos catetos". Baseado nessa informação, fica fácil retornar a medida do cateto oposto quando temos as medidas da hipotenusa e do cateto adjascente. Isso, claro, via programação em linguagem R. Comece observando a imagem a seguir: ![]() Veja que, nessa imagem, eu já coloquei os comprimentos da hipotenusa, do cateto oposto e do cateto adjascente. Para facilitar a conferência dos cálculos, eu coloquei também os ângulos theta (que alguns livros chamam de alfa) e beta já devidamente calculados. A medida da hipotenusa é, sem arredondamentos, 36.056 metros. Então, sabendo que o quadrado da hipotenusa é igual à soma dos quadrados dos catetos (Teorema de Pitógoras): \[c^2 = a^2 + b^2\] Tudo que temos que fazer é mudar a fórmula para: \[a^2 = c^2 - b^2\] Veja que agora o quadrado do cateto oposto é igual ao quadrado da hipotenusa menos o quadrado do cateto adjascente. Não se esqueça de que a hipotenusa é o maior lado do triângulo retângulo. Veja agora como esse cálculo é feito em linguagem R (script R): c <- 36.056 # medida da hipotenusa b <- 30 # medida do cateto adjascente # agora vamos calcular o comprimento da cateto oposto a <- sqrt(c ^ 2 - b ^ 2) # e mostramos o resultado paste("A medida do cateto oposto é:", a) Ao executar este código R nós teremos o seguinte resultado: [1] "A medida do cateto oposto é: 20.0008783807112" Como podemos ver, o resultado retornado com o código R confere com os valores da imagem apresentada. |
VisuAlg ::: Dicas & Truques ::: Matemática e Estatística |
Como resolver uma equação do segundo grau em VisuAlg - Como calcular Bhaskara em VisuAlgQuantidade de visualizações: 1839 vezes |
Como resolver uma equação do 2º grau usando VisuAlg Nesta dica mostrarei como encontrar as raízes de uma equação quadrática, ou seja, uma equação do 2º usando um algoritmo escrito na ferramenta VisuAlg, uma das preferidas para o aprendizado de algoritmos e lógica de programação. Definimos como equação do 2º grau ou equações quadráticas qualquer equação do tipo ax² + bx + c = 0 em que a, b e c são números reais e a ≠ 0. Ela recebe esse nome porque, no primeiro membro da igualdade, há um polinômio de grau dois com uma única incógnita. Note que, dos coeficientes a, b e c, somente o a é diferente de zero, pois, caso ele fosse igual a zero, o termo ax² seria igual a zero, logo a equação se tornaria uma equação do primeiro grau: bx + c = 0. Independentemente da ordem da equação, o coeficiente a sempre acompanha o termo x², o coeficiente b sempre acompanha o termo x, e o coeficiente c é sempre o termo independente. Como resolver uma equação do 2º grau Conhecemos como soluções ou raízes da equação ax² + bx + c = 0 os valores de x que fazem com que essa equação seja verdadeira. Uma equação do 2º grau pode ter no máximo dois números reais que sejam raízes dela. Para resolver equações do 2º grau completas, existem dois métodos mais comuns: a) Fórmula de Bhaskara; b) Soma e produto. O primeiro método é bastante mecânico, o que faz com que muitos o prefiram. Já para utilizar o segundo, é necessário o conhecimento de múltiplos e divisores. Além disso, quando as soluções da equação são números quebrados, soma e produto não é uma alternativa boa. Como resolver uma equação do 2º grau usando Bhaskara Como nosso algoritmo VisuAlg vai resolver a equação quadrática usando a Fórmula de Bhaskara, o primeiro passo é encontrar o determinante. Veja: \[\Delta =b^2-4ac\] Nem sempre a equação possui solução real. O valor do determinante é que nos indica isso, existindo três possibilidades: a) Se determinante > 0, então a equação possui duas soluções reais. b) Se determinante = 0, então a equação possui uma única solução real. c) Se determinante < 0, então a equação não possui solução real. Encontrado o determinante, só precisamos substituir os valores, incluindo o determinante, na Fórmula de Bhaskara: \[x = \dfrac{- b\pm\sqrt{b^2- 4ac}}{2a}\] Vamos agora ao código VisuAlg. Nossa aplicação vai pedir para o usuário informar os valores dos três coeficientes a, b e c e, em seguida, vai apresentar as raizes da equação: Algoritmo "Como resolver uma equação do 2º grau usando VisuAlg" Var // variáveis usadas na resolução do problema // os coeficientes a, b, c: real // as duas raizes, a imaginaria e o discriminante raiz1, raiz2, imaginaria, discriminante: real Inicio // vamos pedir para o usuário informar os valores dos coeficientes escreva("Valor do coeficiente a: ") leia(a) escreva("Valor do coeficiente b: ") leia(b) escreva("Valor do coeficiente c: ") leia(c) // vamos calcular o discriminante discriminante <- (b * b) - (4 * a * c) // a equação possui duas soluções reais? se discriminante > 0 então raiz1 <- (-b + raizq(discriminante)) / (2 * a) raiz2 <- (-b - raizq(discriminante)) / (2 * a) escreva("Duas raizes: x1 = ", raiz1, " e x2 = ", raiz2) senão // a equação possui uma única solução real? se discriminante = 0 então raiz1 <- -b / (2 * a) raiz2 <- -b / (2 * a) escreva("Duas raizes iguais: x1 = ", raiz1, " e x2 = ", raiz2) // a equação não possui solução real? senão raiz1 <- -b / (2 * a) raiz2 <- -b / (2 * a) imaginaria <- raizq(-discriminante) / (2 * a) escreva("Existem duas raízes complexas: ") escreva("x1 = ", raiz1, " + " ,imaginaria, " e x2 = ", raiz2, " - ", imaginaria) fimse fimse Fimalgoritmo Ao executar este código VisuAlg nós teremos o seguinte resultado: Valor do coeficiente a: 1 Valor do coeficiente b: 2 Valor do coeficiente c: -3 Existem duas raizes: x1 = 1.0 e x2 = -3.0 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Verifique se as componentes de um vetor de 10 componentes inteiros lidos pelo teclado formam uma progressão aritméticaQuantidade de visualizações: 1725 vezes |
Pergunta/Tarefa: Verifique se as componentes de um vetor de 10 componentes inteiros lidos pelo teclado formam uma progressão aritmética, informando se sim ou se não. Caso forme, imprima o termo inicial e a razão. Resposta/Solução: Para a entrada do usuário, nós vamos usar um objeto da classe Scanner. Veja a resolução comentada: package arquivodecodigos; import java.util.Scanner; public class Estudos{ public static void main(String[] args){ // vamos usar a classe Scanner para leitura Scanner entrada = new Scanner(System.in); // declara e constrói um vetor de 10 inteiros int valores[] = new int[10]; // vamos ler os valores dos elementos do vetor for(int i = 0; i < valores.length; i++){ System.out.print("Informe o valor: "); valores[i] = Integer.parseInt(entrada.nextLine()); } // já temos o vetor. Agora vamos verificar se temos // uma progressão geométrica boolean progressao = true; // vamos obter a razão int razao = valores[1] / (valores[0]); // vamos varrer os elementos do vetor e verificar se todos // possuem a mesma razão for(int i = 1; i < valores.length; i++){ if((valores[i] / (valores[i - 1])) != razao){ progressao = false; break; } } if(progressao){ System.out.println("Formam uma progressão geométrica."); System.out.println("A razão é: " + razao); System.out.println("O primeiro termo é: " + valores[0]); } else{ System.out.println("Não formam uma progressão geométrica."); } } } Ao executar este código Java nós teremos o seguinte resultado: Informe o valor: 1 Informe o valor: 2 Informe o valor: 4 Informe o valor: 8 Informe o valor: 16 Informe o valor: 32 Informe o valor: 64 Informe o valor: 128 Informe o valor: 256 Informe o valor: 512 Formam uma progressão geométrica. A razão é: 2 O primeiro termo é: 1 |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como excluir uma substring de uma string usando o método delete() da classe StringBuffer do Java - RevisadoQuantidade de visualizações: 328 vezes |
Em algumas situações nós gostaríamos de excluir parte de uma palavra ou texto, ou seja, remover uma substring de uma string. Para isso nós podemos usar o método delete() da classe StringBuffer da linguagem Java. Lembrando que a classe StringBuffer, do pacote java.lang, é usada em vez da classe String quando precisamos fazer muitas concatenações e adições ou remoções no conteúdo da string. Veja um exemplo de código no qual removemos parte do conteúdo de um StringBuffer: package arquivodecodigos; public class Estudos{ public static void main(String[] args){ StringBuffer frase = new StringBuffer("Gosto muito de Java"); // mostra o conteúdo original System.out.println("Frase original: " + frase); String remover = "muito "; // vamos obter o índice inicial do conteúdo a ser removido int pos = frase.indexOf(remover); // e agora vamos remover frase.delete(pos, pos + remover.length()); // com a remoção System.out.println("Depois da remoção: " + frase); System.exit(0); } } Após a execução deste código nós teremos o seguinte resultado: Frase original: Gosto muito de Java Depois da remoção: Gosto de Java |
Nossas 20 dicas & truques de programação mais populares |
Java - Programação Orientada a Objetos em Java - Como usar o modificador static em suas aplicações Java JavaScript - Como adicionar elementos no início de um array JavaScript usando a função unshift() do objeto Array LISP - Como converter Coordenadas Polares para Coordenadas Cartesianas em LISP - LISP para Engenharia |
Você também poderá gostar das dicas e truques de programação abaixo |
C - Como verificar a existência de uma substring em uma string usando a função strstr() da linguagem C JavaScript - Como exibir apenas dois dígitos após o ponto decimal em JavaScript usando a função toFixed() do objeto Number C - Como escrever uma função strtoupper() em C para transformar uma palavra inteira em letras maiúsculas |
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 |