C# ::: Dicas & Truques ::: Matemática e Estatística |
Como resolver uma equação do segundo grau em C# - Como calcular Bhaskara em C#Quantidade de visualizações: 1496 vezes |
Como resolver uma equação do 2º grau usando C# Nesta dica mostrarei como encontrar as raízes de uma equação quadrática, ou seja, uma equação do 2º usando a linguagem C#. 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 C# 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 C#. 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: using System; namespace Estudos { class Principal { static void Main(string[] args) { // os coeficientes double a, b, c; // as duas raizes, a imaginaria e o discriminante double raiz1, raiz2, imaginaria, discriminante; // vamos pedir para o usuário informar os valores dos coeficientes Console.Write("Valor do coeficiente a: "); a = Double.Parse(Console.ReadLine()); Console.Write("Valor do coeficiente b: "); b = Double.Parse(Console.ReadLine()); Console.Write("Valor do coeficiente c: "); c = Double.Parse(Console.ReadLine()); // 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); Console.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); Console.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); Console.Write("Existem duas raízes complexas: x1 = " + raiz1 + " + " + imaginaria + " e x2 = " + raiz2 + " - " + imaginaria); } Console.WriteLine("\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# 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 |
JavaFX ::: Pacote javafx.scene.layout (Package javafx.scene.layout) ::: HBox (Classe HBox) |
Como definir o espaço interno do HBox do JavaFX usando o método setPadding()Quantidade de visualizações: 954 vezes |
Em algumas situações nós precisamos definir o espaço interno, ou seja, o padding, do gerenciador de layout HBox. Para isso nós podemos usar o método setPadding() e fornecer a ele um objeto da classe javafx.geometry.Insets. Este método é herdado da classe javafx.scene.layout.Region. Lembre-se de que a função setPadding() define o espaço interno do VBox, ou seja, o espaço que deverá existir entre suas margens e os componentes contidos nele. Veja um trecho de código JavaFX no qual temos um gerenciador de layout HBox e três botões: package estudosjavafx; import javafx.application.Application; import javafx.geometry.Insets; import javafx.scene.Scene; import javafx.scene.control.Button; import javafx.scene.layout.HBox; import javafx.stage.Stage; public class EstudosJavaFX extends Application { public static void main(String[] args){ launch(args); } @Override public void start(Stage primaryStage){ // vamos criar três botões Button btn1 = new Button("Botão 1"); Button btn2 = new Button("Botão 2"); Button btn3 = new Button("Botão 3"); // agora criamos um laytou HBox e colocamos // os três botões nele HBox hBox = new HBox(); hBox.getChildren().add(btn1); hBox.getChildren().add(btn2); hBox.getChildren().add(btn3); // vamos definir o espaço interno do HBox usando // um Inserts (top, direita, baixo, esquerda) hBox.setPadding(new Insets(20, 20, 20, 20)); // criamos a cena e fornecemos o layout a ela // e definimos a largura e altura da cena Scene scene = new Scene(hBox, 400, 300); // adicionamos a cena ao palco principal primaryStage.setScene(scene); // e mostramos o palco primaryStage.show(); } } Execute este código, experimente alterar os valores do objeto Insets fornecido ao método setPadding e veja os resultados obtidos. |
PHP ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o cateto oposto dadas as medidas da hipotenusa e do cateto adjascente em PHPQuantidade de visualizações: 1389 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 PHP. 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 PHP: <?php $c = 36.056; // medida da hipotenusa $b = 30; // medida do cateto adjascente // agora vamos calcular o comprimento da cateto oposto $a = sqrt(pow($c, 2) - pow($b, 2)); // e mostramos o resultado echo "A medida do cateto oposto é: " . $a; ?> Ao executar este código PHP nós teremos o seguinte resultado: A medida do cateto oposto é: 20.000878380711 Como podemos ver, o resultado retornado com o código PHP confere com os valores da imagem apresentada. |
Java ::: Dicas & Truques ::: Internacionalização e Localização (Internationalization, i18n, Localization, l10n) |
Como obter a localização padrão da JVM usando o método getDefault() da classe Locale da linguagem JavaQuantidade de visualizações: 9060 vezes |
Em algumas situações precisamos fazer a internacionalização de nossas aplicações. Isso implica em usar um objeto da classe Locale para aplicar a formatação de datas, horas e valores de acordo com as configurações regionais do usuário. Porém, antes de alterar o Locale padrão da JVM, é importante sabermos mais sobre ele. Para isso temos o método estático getDefault() da classe Locale:public static Locale getDefault() Este método retorna um objeto da classe Locale que nos permitirá obter informações sobre a língua, o país e demais configurações do ambiente. Veja um trecho de código demonstrando seu uso: import java.util.*; public class Estudos{ public static void main(String args[]){ // obtém o Locale padrão da JVM Locale locale = Locale.getDefault(); // vamos exibir o código da linguagem e nome do // país para o Locale obtido System.out.println(locale.getLanguage() + " - " + locale.getDisplayCountry()); } } O resultado da execução deste código será algo como: pt - Brasil |
C ::: Dicas & Truques ::: Arquivos e Diretórios |
Como escrever em um arquivo um caractere de cada vez usando a função fputc() da linguagem CQuantidade de visualizações: 9422 vezes |
Em algumas situações precisamos escrever em um arquivo um caractere de cada vez. Para isso podemos usar a função fputc() do header stdio.h. Esta função recebe o caractere a ser escrito e um ponteiro para o objeto FILE que identifica o arquivo no qual queremos escrever. Se o caractere for escrito com sucesso, o indicador de posição interna do arquivo é adiantado para a inserção do próximo caractere. Veja um exemplo no qual escrevemos o alfabeto maiúsculo em um arquivo chamado alfabeto.txt: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]){ FILE *arquivo; char letra; // vamos abrir o arquivo para escrita arquivo = fopen("alfabeto.txt", "w"); if(arquivo != NULL){ for(letra = 'A'; letra <= 'Z'; letra++){ fputc((int)letra, arquivo); } fclose(arquivo); } puts("Tentei escrever no arquivo. Veja se funcionou."); puts("\n\n"); system("PAUSE"); return 0; } Ao executar este código nós teremos o seguinte resultado: Tentei escrever no arquivo. Veja se funcionou. Em seguida, se olharmos o conteúdo do arquivo "alfabeto.txt" veremos que o conteúdo foi escrito da forma que imaginamos. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Estruturas de Dados - Listas Ligadas |
Exercícios Resolvidos de Java - Como inserir no final de uma lista ligada em Java - Escreva um programa Java que pede para o usuário informar váriosQuantidade de visualizações: 962 vezes |
Pergunta/Tarefa: Este exercício Java demonstra como inserir um nó no final de uma lista ligada. Escreva um programa Java que cria uma lista ligada, ou seja, uma lista dinamicamente encadeada, e pede para o usuário informar vários valores inteiros, colocando os valores sempre no final da lista. Seu código deverá interromper a leitura dos valores quando o usuário informar o valor -1. Quando isso acontecer, mostre todos os valores contidos na lista ligada, na mesma ordem que foram inseridos (o último valor lido será o último da lista). Sua saída deve ser parecida com: Inserindo valores no final da lista Informe o valor (-1 para sair): 3 Informe o valor (-1 para sair): 9 Informe o valor (-1 para sair): 1 Informe o valor (-1 para sair): 5 Informe o valor (-1 para sair): 2 Informe o valor (-1 para sair): -1 Valores na lista: 3 -> 9 -> 1 -> 5 -> 2 -> null Veja a resolução comentada deste exercício usando Java: package estudos; import java.util.Scanner; // classe interna usada para representar um // nó na lista ligada class No { int valor; // valor do nó No proximo; // aponta para o novo nó // construtor da classe No No(int valor, No proximo) { this.valor = valor; this.proximo = proximo; } } public class Estudos { public static void main(String args[]){ // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos criar uma referência para o início da lista No inicio = null; // agora vamos pedir para o usuário informar // valores inteiros. O valor -1 sai do laço int valor; System.out.println("Inserindo valores no final da lista\n"); do { System.out.print("Informe o valor (-1 para sair): "); valor = Integer.parseInt(entrada.nextLine()); if (valor != -1) { inicio = inserirFinal(inicio, valor); } } while(valor != -1); // vamos exibir os valores na lista ligada System.out.print("\nValores na lista: "); exibirLista(inicio); } // função que permite adicionar um nó no final da // lista ligada public static No inserirFinal(No inicio, int valor) { // vamos apontar para o nó inicial No atual = inicio; // criamos um novo nó No novo = criarNo(valor); // a lista ligada ainda está vazia? if (atual == null){ // inicio recebe o novo nó inicio = novo; } else { // temos um ou mais nós na lista ligada // vamos localizar o último nó while (atual.proximo != null) { atual = atual.proximo; } // encontramos o último nó. Agora vamos inserir // o novo nó depois dele atual.proximo = novo; } // e retornamos o início da lista return inicio; } // função usada para construir e retornar um novo nó public static No criarNo(int valor) { // cria o novo nó No no = new No(valor, null); // retorna o nó criado return no; } // função usada para percorrer a lista ligada e // exibir os valores contidos em seus nós public static void exibirLista(No inicio) { // vamos apontar para o início da lista No temp = inicio; // a lista está vazia? if (temp == null) { System.out.println("A lista está vazia."); } else { // esse laço se repete enquanto tempo for // diferente de null while (temp != null) { // vamos mostrar o valor desse nó System.out.print(temp.valor + " -> "); // avança para o próximo nó temp = temp.proximo; } // mostra o final da lista System.out.println("null"); } } } |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como inserir uma substring em uma string em Java usando o método insert() da classe StringBufferQuantidade de visualizações: 18 vezes |
Nesta dica mostrarei como podemos usar o método insert() da classe StringBuffer da linguagem Java para inserir uma substring no início, meio ou final de uma string. Este método recebe o índice no qual queremos inserir a substring e a substring a ser inserida. Veja o código Java completo para o exemplo: package estudos; public class Estudos { public static void main(String args[]) { // vamos declarar um objeto da classe StringBuffer StringBuffer frase = new StringBuffer("Programar em é bom demais"); System.out.println("A frase original é: " + frase); // agora vamos inserir a palavra "Java" no índice 13 frase.insert(13, "Java "); // e agora mostramos o resultado System.out.println("O resultado é: " + frase); } } Ao executar este código Java nós teremos o seguinte resultado: A frase original é: Programar em é bom demais O resultado é: Programar em Java é bom demais |
Python ::: Dicas & Truques ::: Lista (List) |
Como inverter a ordem dos elementos em uma lista Python usando o método reverse()Quantidade de visualizações: 17147 vezes |
Inverter a ordem dos itens de um vetor ou lista é uma das tarefas mais corriqueiras durante o trabalho de programação. Na linguagem Python nós podemos inverter os elementos de uma list usando o método reverse(), já embutido na linguagem. Este método modifica a lista original. Veja um exemplo de seu uso: def main(): # cria uma lista de inteiros valores = [2, 5, 12, 2, 3, 32, 18] # exibe a lista na ordem original print(valores) # inverte a lista valores.reverse() # exibe a lista na ordem invertida print(valores) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: [2, 5, 12, 2, 3, 32, 18] [18, 32, 3, 2, 12, 5, 2] |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Internet, LAN e E-Mail |
Exercícios Resolvidos de Java - Como testar se há um serviço sendo executado em uma porta de um servidor ou máquina localQuantidade de visualizações: 7583 vezes |
Pergunta/Tarefa: Este exercício resolvido é sobre Internet, Rede e E-Mail usando programação Java. Escreva um programa Java console ou GUI que peça ao usuário para informar um número de porta na máquina local. Em seguida, tente se conectar a esta porta e informe se há algum serviço sendo executado na porta informada. A entrada e saída do programa pode ser algo como: Informe o número da porta a ser pesquisada: 3306 Há um serviço na porta informada Informe o número da posta a ser pesquisada: 2040 Não há nenhum serviço na porta informada Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: package estudos; import java.io.IOException; import java.net.Socket; import java.net.UnknownHostException; import java.util.Scanner; public class Main { public static void main(String[] args){ Socket socket; // vamos declarar um objeto da classe Socket String host = "localhost"; // define o nome da máquina host // vamos pedir ao usuário que informe a porta a ser pesquisada Scanner entrada = new Scanner(System.in); System.out.print("Informe o número da posta a ser pesquisada: "); int porta = Integer.parseInt(entrada.nextLine()); // vamos verificar se há algum serviço na porta informada try{ socket = new Socket(host, porta); System.out.println("Há um serviço na porta informada"); } catch (UnknownHostException e) { // não foi possível encontrar a máquina host System.out.println("Não foi possível encontrar a máquina host: " + e); } catch (IOException e) { System.out.println("Não há nenhum serviço na porta informada"); } } } Veja que, neste exercício, podemos ter o surgimento de duas exceções: UnknownHostException (a máquina informada não pôde ser encontrada) e IOException (houve erro de entrada e/ou saída). Por esta razão, é uma boa idéia envolver o código em um bloco try...catch. |
JavaScript ::: JavaScript para Engenharia ::: Geometria Analítica e Álgebra Linear |
Como calcular a norma ou módulo de vetores nos espaços R2 e R3 usando JavaScript - Geometria Analítica e Álgebra Linear usando JavaScriptQuantidade de visualizações: 2516 vezes |
Em Geometria Analítica e Álgebra Linear, a magnitude, norma, comprimento, tamanho ou módulo (também chamado de intensidade na Física) de um vetor é o seu comprimento, que pode ser calculado por meio da distância de seu ponto final a partir da origem, no nosso caso (0,0). Considere o seguinte vetor no plano, ou seja, no espaço bidimensional, ou R2: \[\vec{v} = \left(7, 6\right)\] Aqui este vetor se inicia na origem (0, 0) e vai até as coordenadas (x = 7) e (y = 6). Veja sua plotagem no plano 2D: ![]() Note que na imagem já temos todas as informações que precisamos, ou seja, o tamanho desse vetor é 9 (arredondado) e ele faz um ângulo de 41º (graus) com o eixo x positivo. Em linguagem mais adequada da trigonometria, podemos dizer que a medida do cateto oposto é 6, a medida do cateto adjacente é 7 e a medida da hipotenusa (que já calculei para você) é 9. Note que já mostrei também o ângulo theta (__$\theta__$) entre a hipotenusa e o cateto adjacente, o que nos dá a inclinação da reta representada pelos pontos (0, 0) e (7, 6). Relembrando nossas aulas de trigonometria nos tempos do colegial, temos que o quadrado da hipotenusa é a soma dos quadrados dos catetos, ou seja, o Teorema de Pitágoras: \[a^2 = b^2 + c^2\] Como sabemos que a potenciação é o inverso da radiciação, podemos escrever essa fórmula da seguinte maneira: \[a = \sqrt{b^2 + c^2}\] Passando para os valores x e y que já temos: \[a = \sqrt{7^2 + 6^2}\] Podemos comprovar que o resultado é 9,21 (que arredondei para 9). Não se esqueça da notação de módulo ao apresentar o resultado final: \[\left|\vec{v}\right| = \sqrt{7^2 + 6^2}\] E aqui está o código JavaScript que nos permite informar os valores x e y do vetor e obter o seu comprimento, tamanho ou módulo: <html> <head> <title>Estudos JavaScript</title> </head> <body> <script type="text/javascript"> // vamos declarar os valores x e y var x = 7; var y = 6; // vamos calcular a norma do vetor var norma = Math.sqrt(Math.pow(x, 2) + Math.pow(y, 2)); // mostra o resultado document.writeln("A norma do vetor é: " + norma); </script> </body> </html> Ao executar este código JavaScript nós teremos o seguinte resultado: A norma do vetor é: 9.219544457292887 Novamente note que arredondei o comprimento do vetor para melhor visualização no gráfico. Para calcular a norma de um vetor no espaço, ou seja, no R3, basta acrescentar o componente z no cálculo. |
Nossas 20 dicas & truques de programação mais populares |
C - Como somar os elementos de um vetor em C usando uma função recursiva - Linguagem C para iniciantes Ruby - Exercício Resolvido de Ruby - Como percorrer os elementos de um array em Ruby usando a função each Python - Como usar a função type() da linguagem Python para descobrir o tipo de dados de uma variável |
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 |