![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
JavaScript ::: Dicas & Truques ::: Matemática e Estatística |
Como resolver uma equação do segundo grau em JavaScript - Como calcular Bhaskara em JavaScriptQuantidade de visualizações: 994 vezes |
Como resolver uma equação do 2º grau usando JavaScript Nesta dica mostrarei como encontrar as raízes de uma equação quadrática, ou seja, uma equação do 2º usando a linguagem JavaScript. 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 código JavaScript 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 JavaScript. 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: <!doctype html> <html> <head> <title>Aprenda Matemática Usando JavaScript</title> </head> <body> <script type="text/javascript"> // os coeficientes var a, b, c; // as duas raizes, a imaginaria e o discriminante var raiz1, raiz2, imaginaria, discriminante; // vamos pedir para o usuário informar os valores dos coeficientes a = parseFloat(window.prompt("Valor do coeficiente a: ")); b = parseFloat(window.prompt("Valor do coeficiente b: ")); c = parseFloat(window.prompt("Valor do coeficiente c: ")); // vamos calcular o discriminante discriminante = (b * b) - (4 * a * c); // a equação possui duas soluções reais? if(discriminante > 0){ raiz1 = (-b + Math.sqrt(discriminante)) / (2 * a); raiz2 = (-b - Math.sqrt(discriminante)) / (2 * a); document.write("Existem duas raizes: x1 = " + raiz1 + " e x2 = " + raiz2); } // a equação possui uma única solução real? else if(discriminante == 0){ raiz1 = raiz2 = -b / (2 * a); document.write("Existem duas raizes iguais: x1 = " + raiz1 + " e x2 = " + raiz2); } // a equação não possui solução real? else if(discriminante < 0){ raiz1 = raiz2 = -b / (2 * a); imaginaria = Math.sqrt(-discriminante) / (2 * a); document.write("Existem duas raízes complexas: x1 = " + raiz1 + " + " + imaginaria + " e x2 = " + raiz2 + " - " + imaginaria); } </script> </body> </html> Ao executar este código JavaScript 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 e x2 = -3 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Uma locadora de charretes cobra R$ 10,00 de taxa para cada 3 horas de uso destasQuantidade de visualizações: 6093 vezes |
Exercício Resolvido de Java - Uma locadora de charretes cobra R$ 10,00 de taxa para cada 3 horas de uso destas Pergunta/Tarefa: Uma locadora de charretes cobra R$ 10,00 de taxa para cada 3 horas de uso destas e R$ 5,00 para cada 1 hora abaixo destas 3 horas. Faça um programa (algorítmo) Java que leia a quantidade de horas que a charrete foi usada, calcule e escreva o valor a ser pago pelo cliente. Sua saída deverá ser parecida com: Quantidade de horas que a charrete foi usada: 7 Valor total a ser pago: R$ 25,00 Veja a resolução comentada deste exercício usando Java console: package exercicio; import java.text.NumberFormat; import java.util.Scanner; public class Exercicio { public static void main(String[] args) { // vamos fazer a leitura usando a classe Scanner Scanner entrada = new Scanner(System.in); // vamos ler a quantidade de horas que a charrete foi usada System.out.print("Quantidade de horas que a charrete foi usada: "); int horas = Integer.parseInt(entrada.nextLine()); // vamos calcular o valor por 3 horas exatas int valor = horas / 3; // valor a ser pago para cada hora abaixo de 3 int restante = horas % 3; // finalmente calculamos o valor total a ser pago double valor_total = (valor * 10.0) + (restante * 5); // e exibimos o resultado NumberFormat formato = NumberFormat.getCurrencyInstance(); System.out.println("Valor total a ser pago: " + formato.format(valor_total)); } } |
Java ::: Dicas & Truques ::: Matemática e Estatística |
Regressão linear - Como calcular o coeficiente de correlação linear de Pearson em Java - Java para Machine LearningQuantidade de visualizações: 279 vezes |
![]() No estudo de Machine Learning, uma das primeiras ferramentas que aprendemos é Regressão Linear. E, para o bom entendimento da regressão linear, temos que aprender sobre o coeficiente de correlação linear, mais especificamente o coeficiente de correlação linear de Pearson. A fórmula do coeficiente de correlação linear de Pearson é: \[r_\text{xy} = \frac{n \sum x_i y_i - \sum x_i \sum y_i}{\sqrt{n \sum {x_i}^2 - \left(\sum {x_i}\right)^2} \cdot \sqrt{n \sum {y_i}^2 - \left(\sum {y_i}\right)^2}} \] Onde: x e y são os conjuntos de valores cuja correlação queremos testar. É claro que encontraremos algumas variações desta fórmula na internet e também em livros de estatística, mas o resultado é sempre o mesmo. A correlação de Pearson é uma técnica estatística para medir se duas variáveis estão linearmente relacionadas. Essa técnica também pode ser chamada de r de Pearson, correlação produto-momento de Pearson ou, mais coloquialmente, de correlação de Pearson. O r de Pearson é uma métrica que expressa a relação linear entre variáveis por meio de um número que vai de -1 a +1. Isto é, quanto mais próximo dos extremos (-1 ou +1), maior é a força da correlação. Por outro lado, valores próximos de zero indicam que a correlação é fraca. O sinal da correlação, por sua vez, indica a direção da relação entre variáveis. Se a correlação é positiva, então o aumento em uma variável implica o aumento na outra variável. Por outro lado, se a correlação é negativa, então o aumento em uma variável implica o decréscimo na outra variável. Veja agora o código Java completo no qual calculamps o coeficiente de correlação linear de Pearson a partir de valores x e y, dispostos em dois vetores, ou seja, dois arrays unidimensionais: package estudos; public class Estudos { public static void main(String[] args) { // vamos criar os vetores com os valores x e y double x[] = {13, 32, 47, 54, 69, 73}; double y[] = {208, 184, 145, 14, 65, 32}; // as variáveis para os somatórios double soma_x = 0, soma_y = 0, soma_x_quadrado = 0; double soma_y_quadrado = 0, soma_x_vezes_y = 0; // vamos percorrer os vetores e efetuar as somas for (int i = 0; i < x.length; i++) { // primeiro o somatório de x soma_x = soma_x + x[i]; // agora o somatório de y soma_y = soma_y + y[i]; // então o somatório de x^2 soma_x_quadrado = soma_x_quadrado + Math.pow(x[i], 2); // e o somatório de y^2 soma_y_quadrado = soma_y_quadrado + Math.pow(y[i], 2); // e finalmente o somatório de x*y soma_x_vezes_y = soma_x_vezes_y + x[i] * y[i]; } // vamos obter a quantidade de valores na observação int n = x.length; // e finalmente calculamos o coeficiente de correlação // linear double r_xy = ((n * soma_x_vezes_y) - (soma_x * soma_y)) / (Math.sqrt((n * soma_x_quadrado) - Math.pow(soma_x, 2)) * Math.sqrt((n * soma_y_quadrado) - Math.pow(soma_y, 2))); // e mostramos o resultado System.out.println("O coeficiente de correlação é: " + r_xy); } } Ao executar este código Java nós teremos o seguinte resultado: O coeficiente de correlação é: -0.8713675107044452 |
C# ::: Windows Forms ::: DataGridView |
Como retornar a quantidade de linhas em um DataGridView do C# Windows FormsQuantidade de visualizações: 14927 vezes |
A quantidade de linhas em um DataGridView do C# Windows Forms pode ser obtida por meio da propriedade RowCount. Veja: private void button2_Click(object sender, EventArgs e){ // vamos adicionar três colunas no DataGridView dataGridView1.Columns.Add("cidade", "Cidade"); dataGridView1.Columns.Add("estado", "Estado"); dataGridView1.Columns.Add("populacao", "População"); // vamos adicionar três linhas dataGridView1.Rows.Add("Goiânia", "GO", "3.453,39"); dataGridView1.Rows.Add("Cuiabá", "MT", "1.876,12"); dataGridView1.Rows.Add("Curitiba", "PR", "5.346,98"); // não vamos permitir que o usuário adicione novas // linhas (o que daria uma linha a mais na nossa // contagem dataGridView1.AllowUserToAddRows = false; // vamos obter a quantidade de linhas no DataGridView int quant_linhas = dataGridView1.RowCount; // exibe o resultado MessageBox.Show("O DataGridView contém " + quant_linhas + " linhas"); } É possível também usar a propriedade RowCount para definir a quantidade de linhas em um DataGridView: dataGridView1.RowCount = 6; Há algumas considerações importantes sobre a propriedade RowCount: 1) Se seu valor for definido como 0, todas as linhas do DataGridView serão removidas; 2) Se o novo valor for menor que o valor atual, as linhas excedentes serão removidas no final da coleção Rows; 3) Se o novo valor for maior que o valor atual, as novas linhas serão adicionadas no final da coleção Rows; 4) Se tentarmos alterar o valor desta propriedade após a definição da propriedade DataSource, uma exceção InvalidOperationException será lançada. |
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: 7543 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 |
C ::: Dicas & Truques ::: Rotinas de Conversão |
Como converter uma string em um valor inteiro usando a função atoi() da linguagem CQuantidade de visualizações: 46831 vezes |
Em algumas situações, pode ser necessário converter uma string em um valor numérico inteiro. Para isso podemos usar a função atoi(). Esta função recebe uma matriz de caracteres e tenta transformá-la em um valor inteiro. Se a conversão não for possível, o valor 0 é retornado. Os sinais "+" e "-" são válidos na string a ser convertida. Veja um exemplo: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // valor inteiro em forma de string char valor_str[] = "10"; // A linha abaixo causa um comportamento estranho //int res = 40 + valor_str; // temos que converter a string em um valor inteiro válido int res = 40 + atoi(valor_str); printf("O resultado e: %d", res); puts("\n"); system("pause"); return 0; } |
PHP ::: Dicas & Truques ::: Strings e Caracteres |
Como converter uma string para letras maiúsculas em PHP usando as funções strtoupper() e mb_strtoupper()Quantidade de visualizações: 187 vezes |
As funções strtoupper() e mb_strtoupper() do PHP nos ajuda quando precisamos transformar uma string inteira para letras maiúsculas. Veja o seguinte exemplo:<?php // uma frase contendo letras minúsculas $frase = "PHP? Eu gosto de PHP"; echo "A frase é: " . $frase . "\n"; // agora vamos transformá-la em letras // maiúsculas $frase = strtoupper($frase); echo "A frase em letras maiúsculas é: " . $frase; ?> Ao executar este código PHP nós teremos o seguinte resultado: A frase é: PHP? Eu gosto de PHP A frase em letras maiúsculas é: PHP? EU GOSTO DE PHP A função mb_strtoupper(), por sua vez, é usada quando a palavra, frase ou texto contém acentuações. Nas versões mais recentes do PHP, a função strtoupper() sozinha não consegue converter caracteres minúsculas com acentos para caracteres maiúsculas acentuados. Por isso, a função mb_strtoupper() é usada. Veja: <?php // uma frase contendo letras minúsculas $frase = "Java? Não gosto muito de Java não"; echo "A frase é: " . $frase . "\n"; // agora vamos transformá-la em letras // maiúsculas $frase1 = strtoupper($frase); echo "Usando strtoupper(): " . $frase1; $frase2 = mb_strtoupper($frase, 'UTF-8'); echo "\nUsando mb_strtoupper(): " . $frase2; ?> Ao executar este código PHP nós teremos o seguinte resultado: A frase é: Java? Não gosto muito de Java não Usando strtoupper(): JAVA? NãO GOSTO MUITO DE JAVA NãO Usando mb_strtoupper(): JAVA? NÃO GOSTO MUITO DE JAVA NÃO Veja que usei o valor "UTF-8" como segundo argumento para a função mb_strtoupper(). Se necessário você pode fornecer o valor "ISO-8859-1" também. |
Java ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Java Insertion Sort - Como ordenar um vetor de inteiros usando a ordenação Insertion Sort (Ordenação por Inserção)Quantidade de visualizações: 4789 vezes |
A ordenação Insertion Sort, Insertion-Sort, ou Ordenação por Inserção, possui uma complexidade de tempo de execução igual à ordenação Bubble Sort (Ordenação da Bolha), ou seja, O(n2). Embora mais rápido que o Bubble Sort, e ser um algorítmo de ordenação quadrática, a ordenação Insertion Sort é bastante eficiente para problemas com pequenas entradas, sendo o mais eficiente entre os algoritmos desta ordem de classificação, porém, nunca recomendada para um grande conjunto de dados. A forma mais comum para o entendimento da ordenação Insertion Sort é compará-la com a forma pela qual algumas pessoas organizam um baralho num jogo de cartas. Imagine que você está jogando cartas. Você está com as cartas na mão e elas estão ordenadas. Você recebe uma nova carta e deve colocá-la na posição correta da sua mão de cartas, de forma que as cartas obedeçam à ordenação. A cada nova carta adicionada à sua mão de cartas, a nova carta pode ser menor que algumas das cartas que você já tem na mão ou maior, e assim, você começa a comparar a nova carta com todas as cartas na sua mão até encontrar sua posição correta. Você insere a nova carta na posição correta, e, novamente, a sua mão é composta de cartas totalmente ordenadas. Então, você recebe outra carta e repete o mesmo procedimento. Então outra carta, e outra, e assim por diante, até não receber mais cartas. Esta é a ideia por trás da ordenação por inserção. Percorra as posições do vetor (array), começando com o índice 1 (um). Cada nova posição é como a nova carta que você recebeu, e você precisa inseri-la no lugar correto no sub-vetor ordenado à esquerda daquela posição. Vamos ver a implementação na linguagem Java agora? Observe o seguinte código, no qual temos um vetor de inteiros com os elementos {4, 6, 2, 8, 1, 9, 3, 0, 11}: package arquivodecodigos; public class Estudos{ // método que permite ordenar o vetor de inteiros // usando a ordenação Insertion Sort public static void insertionSort(int[] vetor){ // percorre todos os elementos do vetor começando // pelo segundo elemento for(int i = 1; i < vetor.length; i++){ int atual = vetor[i]; // o valor atual a ser inserido // começa a comparar com a célula à esquerda de i int j = i - 1; // enquanto vetor[j] estiver fora de ordem em relação // a atual while((j >= 0) && (vetor[j] > atual)){ // movemos vetor[j] para a direita e decrementamos j vetor[j + 1] = vetor[j]; j--; } // colocamos atual em seu devido lugar vetor[j + 1] = atual; } } public static void main(String args[]){ // vamos criar um vetor com 9 elementos int valores[] = {4, 6, 2, 8, 1, 9, 3, 0, 11}; // exibimos o vetor na ordem original System.out.println("Ordem original:\n"); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } // vamos ordenar o vetor agora insertionSort(valores); // exibimos o vetor ordenado System.out.println("\n\nOrdenado:\n"); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } } } Ao executar este código Java nós teremos o seguinte resultado: Sem ordenação: 4 6 2 8 1 9 3 0 11 Ordenada usando Insertion Sort: 0 1 2 3 4 6 8 9 11 |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Python - Escreva um programa Python para mover todos os zeros para o final do vetor, sem alterar a ordem dos elementos já presentes no arrayQuantidade de visualizações: 1932 vezes |
Pergunta/Tarefa: Dado o seguinte vetor de inteiros: # vamos declarar e construir um vetor de 8 inteiros valores = [0, 3, 0, 5, 7, 4, 0, 9] Sua saída deverá ser parecida com: Vetor na ordem original: 0 3 0 5 7 4 0 9 Vetor com os zeros deslocados para o final: 3 5 7 4 9 0 0 0 Veja a resolução comentada deste exercício usando Python: # método principal def main(): # vamos declarar e construir um vetor de 8 inteiros valores = [0, 3, 0, 5, 7, 4, 0, 9] # vamos mostrar o vetor na ordem original print("Vetor na ordem original:\n") for i in range(len(valores)): print("%d " % valores[i], end="") # vamos inicializar j como 0 para que ele aponte para # o primeiro elemento do vetor j = 0 # agora o laço for percorre todos os elementos do vetor, # incrementanto a variável i e deixando o j em 0 for i in range(len(valores)): # encontramos um valor que não é 0 if(valores[i] != 0): # fazemos a troca entre os elementos nos índices # i e j temp = valores[i] valores[i] = valores[j] valores[j] = temp # e avançamos o j para o elemento seguinte j = j + 1 # agora mostramos o resultado print("\n\nVetor com os zeros deslocados para o final:\n") for i in range(len(valores)): print("%d " % valores[i], end="") if __name__== "__main__": main() Não se esqueça: A resolução do exercício deve ser feita sem a criação de um vetor, array ou lista adicional, e os elementos diferentes de zero devem permanecer na mesma ordem que eles estavam antes. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Java - Um método recursivo que calcula o MDC (máximo divisor comum) entre dois números inteirosQuantidade de visualizações: 8990 vezes |
Exercício Resolvido de Java - Um método recursivo que calcula o MDC (máximo divisor comum) entre dois números inteiros Pergunta/Tarefa: O máximo divisor comum ou MDC (mdc) entre dois ou mais números inteiros é o maior número inteiro que é fator de tais números. Por exemplo, os divisores comuns de 12 e 18 são 1, 2, 3 e 6, logo mdc(12, 18) = 6. A definição abrange qualquer número de termos, por exemplo mdc(10, 15, 25, 30) = 5. O cálculo do MDC entre x e y pode ser feito recursivamente da seguinte forma: Se y for igual a 0, então mdc(x, y) = x. Caso contrário, mdc(x, y) = mdc(y, x % y), no qual % é o operador de módulo (restante da divisão inteira). Escreva um método recursivo que receba dois inteiros e calcule o mdc. Seu método deverá possuir a seguinte assinatura: public static int mdc(int x, int y){ // sua implementação aqui } Informe o primeiro inteiro: 12 Informe o segundo inteiro: 18 O MDC dos valores 12 e 18 é 6 Veja a resolução comentada deste exercício usando Java console: package exercicio; import java.util.Scanner; public class Exercicio { public static void main(String[] args) { // cria um novo objeto da classe Scanner Scanner entrada = new Scanner(System.in); // vamos solicitar dois valores inteiros System.out.print("Informe o primeiro inteiro: "); // lê o primeiro inteiro int a = Integer.parseInt(entrada.nextLine()); // solicita o segundo inteiro System.out.print("Informe o segundo inteiro: "); // lê o segundo inteiro int b = Integer.parseInt(entrada.nextLine()); // mostra o resultado System.out.print("O MDC dos valores " + a + " e " + b + " é " + mdc(a, b)); System.out.println("\n"); } // método recursivo que calcula o mdc de dois inteiros public static int mdc(int x, int y){ // a recursividade é interrompida quando y for igual a 0 if(y == 0){ return x; } else{ return mdc(y, x % y); // efetua uma nova chamada recursiva } } } |
Nossas 20 dicas & truques de programação mais populares |
Delphi - Como selecionar um item de uma ListBox do Delphi em tempo de execução usando a propriedade ItemIndex |
Você também poderá gostar das dicas e truques de programação abaixo |
VisuAlg - Exercícios Resolvidos de VisuAlg - Como calcular e exibir os 50 primeiros números primos em VisuAlg |
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 |