Java ::: Java para Engenharia ::: Física - Hidrodinâmica

Como representar a Equação da Continuidade em Java - Java para Hidrodinâmica

Quantidade de visualizações: 342 vezes
O que é a Equação da Continuidade?

A Hidrodinâmica é a parte da Física que estuda os fluidos em movimento, enquanto a Equação da Continuidade, que é parte da Hidrodinâmica, determina o fluxo de um fluido através de uma área. Esta equação está muito presente quando o assunto é Dinâmica dos Fluidos ou Mecânica dos Fluidos.

A Equação da Continuidade é uma consequência direta da
Lei da Conservação da Massa. Por meio dessa propriedade, podemos dizer que a quantidade de massa de fluido que atravessa o tubo é a mesma na entrada e na saída.

Para melhor entendimento veja a seguinte figura:



Sabendo que a quantidade de água que entra na mangueira deve ser igual à mesma quantidade que sai, ao colocarmos o dedo na saída da mangueira, nós estamos estreitando a área da vazão, o que, consequentemente, aumenta a velocidade da água.

Qual é a Fórmula da Equação da Continuidade?

Antes de passarmos ao código Java, vamos revisar a Fórmula da Equação da Continuidade. Veja:

\[ A_1 \cdot \text{v}_1 = A_2 \cdot \text{v}_2 \]

Por meio dessa equação nós entramos com três valores e obtemos um quarto valor. Não se esqueça de que as velocidades são dadas em metros por segundo e as áreas são dadas em metros quadrados (de acordo com o SI - Sistema Internacional de Medidas). Tenha a certeza de efetuar as devidas conversões para não obter resultados incorretos.

Vamos escrever código Java agora?

A Equação da Continuidade em código Java

Para exemplificar como podemos representar a Equação da Continuidade em Java, vamos resolver o seguinte problema?

1) Um fluido escoa a 2 m/s em um tubo de área transversal igual a 200 mm2. Qual é a velocidade desse fluido ao sair pelo outro lado do tubo, cuja área é de 100 mm2?

a) 20 m/s

b) 4 m/s

c) 0,25 m/s

d) 1,4 m/s

e) 0,2 m/s

Note que a velocidade já está em metros por segundo, mas as áreas foram dadas em milímetros quadrados. Por essa razão nós deveremos converter milímetros quadrados em metros quadrados.

Veja o código Java completo para a resolução deste exercício de Equação da Continuidade:

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    Scanner entrada = new Scanner(System.in);  
    
    // vamos solicitar os dados de entrada
    System.out.print("Velocidade de entrada (m/s): ");
    double v1 = Double.parseDouble(entrada.nextLine());
    System.out.print("Área de entrada (milímetros quadrados): ");
    double a1 = Double.parseDouble(entrada.nextLine());
    System.out.print("Área de saída (milímetros quadrados): ");
    double a2 = Double.parseDouble(entrada.nextLine());
    
    // vamos converter as áreas em milímetros quadrados
    // para metros quadrados
    a1 = a1 / 1000000;
    a2 = a2 / 1000000;
    
    // agora calculamos a velocidade de saída
    double v2 = (a1 * v1) / a2;
    
    // e mostramos o resultado
    System.out.println("A velocidade de saída é: " + v2 +
      " m/s");
    
    System.out.println("\n");
  }
}

Ao executar este código Java nós teremos o seguinte resultado:

Velocidade de entrada (m/s): 2
Área de entrada (milímetros quadrados): 200
Área de saída (milímetros quadrados): 100
A velocidade de saída é: 4.0 m/s

Portanto, a velocidade do fluido na saída do tubo é de 4 m/s.


QGIS ::: PyQGIS API ::: Aplicações com código fonte completo

Como listar os 5 municípios goianos com maior área em uma camada do QGIS usando PyQGIS - Código Python completo

Quantidade de visualizações: 428 vezes
Este código completo mostra uma aplicação QGIS na qual usei PyQGIS para resolver um desafio muito interessante, e complexo. Acredito que servirá de base para muitos códigos interessantes envolvendo QGIS, Python e PyQGIS.

Comecei fazendo o download do shapefile do Estado de Goiás, contendo seus 246 municípios no site do IBGE. Em seguida carreguei o shapefile no QGIS usando um objeto QgsVectorLayer.

Note que criei uma classe Municipio para guardar cada um dos municípios encontrados no shapefile. E, para agrupar os objetos da classe Municipio eu criei uma lista chamada municipios.

Para acessar cada um dos municipios, ou seja, cada uma das 246 feições da camada, eu usei a função getFeatures() da classe QgsVectorLayer. Então, ao percorrer cada uma dessas feições, eu obtive seus atributos, por meio da função attributes(), e os usei para criar os objetos da classe Municipio.

Uma vez obtida a lista de municípios, o passo seguinte foi classificar a lista por ordem crescente de área (a área dos municípios). Um laço for me permitiu listar apenas os 5 municípios com maiores áreas e, além de registrar o somatório de seus áreas, obter os seus códigos para selecioná-los na camada, usando a função selectByExpression().

O desafio final foi mostrar as labels, ou seja, os rótulos de cada um dos municípios no mapa do QGIS, porém, eu queria mostrar os rótulos apenas dos 5 municípios com as maiores áreas. Para resolver o desafio, lancei mão da função setFilterExpression().

Veja o código completo para o exemplo:

# uma classe para guardar cada um dos municípios
# do Estado de Goiás
class Municipio:
  # método construtor
  def __init__(self, codigo, nome, estado, area):
    self.codigo = codigo
    self.nome = nome
    self.estado = estado
    self.area = area
  
# para guardar os municípios
municipios = []
  
# vamos criar um novo objeto QgsVectorLayer com o local
# do nosso shapefile
camada = QgsVectorLayer("C:\\GOIAS\\GO_Municipios_2022.shp",
  "Municípios do Estado de Goiás", "ogr")
 
# vamos testar se a camada é válida  
if not camada.isValid():
  print("Não foi possível carregar a camada %s" % camada.name())
else:
  # vamos percorrer todas as feições da camada
  # e obter os seus atributos
  feicoes = camada.getFeatures()  
  for f in feicoes:
    # vamos obter os atributos desta feição
    atributos = f.attributes()  
    # e criamos um novo objeto da classe Municipio
    municipio = Municipio(atributos[0], atributos[1],
      atributos[2], atributos[3])
    # adicionamos este município na lista
    municipios.append(municipio)
    
  # agora vamos ordenar a lista por área da maior para
  # a menor  
  municipios = sorted(municipios, 
    key=lambda municipio:municipio.area, reverse=True)
  
  # vamos adicionar a camada à relação de camadas  
  QgsProject.instance().addMapLayer(camada)
  
  # vamos calcular a área ocupada pelos 5 maiores municípios
  # do Estado de Goiás
  area_5_maiores = 0
  for i in range(5):
    area_5_maiores = area_5_maiores + municipios[i].area
  
  # agora vamos selecionar os 5 maiores municípios na
  # camada do QGIS  
  codigos = ""
  
  for i in range(5):
    codigos = codigos + municipios[i].codigo + ", "
  
  codigos = codigos[0:len(codigos) - 2]
  camada.selectByExpression('"CD_MUN" IN (' + codigos + ')')
  
  # e mostramos os resultados
  print("Os 5 maiores municípios do Estado de Goiás são:\n")
  for i in range(5):
    print("{0}) {1} - Área: {2} km2".format(i + 1, municipios[i].nome,
      municipios[i].area))
  print("\nÁrea ocupada pelos 5 maiores municípios: {0} km2".format(
    area_5_maiores))
    
  # finalmente vamos exibir os nomes dos municípios. Essa foi
  # a parte mais desafiadora do código, pois eu queria mostrar
  # somente os rótulos dos cinco maiores municípios
  settings = QgsPalLayerSettings()
  settings.isExpression = True
  settings.placement = QgsPalLayerSettings.Line
  settings.placement = QgsPalLayerSettings.Horizontal
  # mostra o nome do município
  settings.fieldName = "NM_MUN"

  format = QgsTextFormat()
  format.setColor(QColor('Black'))
  
  settings.setFormat(format)
  settings.enabled = True

  # cria e adiciona uma nova regra
  root = QgsRuleBasedLabeling.Rule(QgsPalLayerSettings())
  rule = QgsRuleBasedLabeling.Rule(settings)
  rule.setDescription("5 Maiores Municípios do Estado de Goiás")
  
  # define o campo que será usado no filtro. Note que somente
  # serão listados os rótulos dos municípios com área maior ou
  # igual ao quinto elemento da lista municípios
  campo_area = "AREA_KM2"
  rule.setFilterExpression(f"\"{campo_area}\" >= {municipios[4].area}")
  root.appendChild(rule)

  # define as configurações do rótulo
  camada.setLabelsEnabled(True)
  rules = QgsRuleBasedLabeling(root)
  camada.setLabeling(rules)
  # redesenha a camada no canvas do QGIS
  camada.triggerRepaint() 

Ao executar este código QGIS, Python e PyQGIS nós teremos o seguinte resultado:

Os 5 maiores municípios do Estado de Goiás são:

1) Niquelândia - Área: 9846.293 km2
2) Mineiros - Área: 9042.844 km2
3) Caiapônia - Área: 8627.961 km2
4) Rio Verde - Área: 8374.255 km2
5) Nova Crixás - Área: 7308.681 km2

Área ocupada pelos 5 maiores municípios: 43200.03399999999 km2

Para fins de compatibilidade este código foi escrito e testado no QGIS 3.34.5-Prizren.


Delphi ::: Dicas & Truques ::: Imagens e Processamento de Imagens

Como capturar um screenshot da área de trabalho e salvá-lo como um Bitmap usando Delphi

Quantidade de visualizações: 13678 vezes
Em algumas situações precisamos capturar um screenshot da área de trabalho (Windows Desktop) e salvá-lo como um Bitmap. Esta dica mostra como isso pode ser feito. Note que aqui estamos salvando o bitmap gerado no mesmo diretório do executável. Caso queira salvar o resultado em outra pasta ou diretório, consulte minhas dicas sobre a manipulação de arquivos e diretórios usando Delphi.

Veja o código (coloquei no evento OnClick de um botão:

procedure TForm2.Button1Click(Sender: TObject);
var
  DCDesk: HDC;
  bmp: TBitmap;
begin
  // vamos criar o Bitmap
  bmp := TBitmap.Create;

  // vamos definir o tamanho do bitmap
  bmp.Height := Screen.Height;
  bmp.Width := Screen.Width;

  // aqui nós obtemos um handle para o contexto de dispositivo
  // de exibição do Desktop
  DCDesk := GetWindowDC(GetDesktopWindow);

  // vamos copiar a imagem do desktop para o bitmap criado
  // anteriormente
  BitBlt(bmp.Canvas.Handle, 0, 0, Screen.Width, Screen.Height,
    DCDesk, 0, 0, SRCCOPY);

  // salvamos o bitmap
  bmp.SaveToFile('screenshot.bmp');

  // liberamos o handle do desktop
  ReleaseDC(GetDesktopWindow, DCDesk);

  // e finalmente liberamos o bitmap
  bmp.Free;

  ShowMessage('Screenshot criado com sucesso.');
end;

Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009.


Python ::: Dicas & Truques ::: Lista (List)

Como excluir e retornar o último item de uma lista Python usando o método pop()

Quantidade de visualizações: 9041 vezes
Nesta dica mostrarei como remover e retornar o último item de uma List do Python usando o método pop(). Veja um exemplo no qual temos uma lista com 6 inteiros. Note o resultado da lista após a chamada à função pop().

Eis o código Python completo:

"""
  Este exemplo mostra como remover e retornar
  o último item de uma lista
"""

def main():
  # cria uma lista de inteiros
  valores = [4, 23, 7, 1, 0, 54]
  
  # imprime a lista
  print(valores)

  # remove o último item
  valor = valores.pop()
  print("Item removido:", valor)

  # exibe a lista novamente
  print(valores)
    
if __name__== "__main__":
  main()

Ao executar este código Python nós teremos o seguinte resultado:

[4, 23, 7, 1, 0, 54]
Item removido: 54
[4, 23, 7, 1, 0]

É importante observar que um erro do tipo

Exception has occurred: IndexError
pop from empty list

será exibido se chamarmos o método pop() em uma List vazia.


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico

Exercícios Resolvidos de Java - Escreva um programa Java que pede para o usuário informar o salário de uma pessoa, o valor de um empréstimo e a quantidade de prestações

Quantidade de visualizações: 12315 vezes
Pergunta/Tarefa:

Escreva um programa Java que pede para o usuário informar o salário de uma pessoa, o valor de um empréstimo e a quantidade de prestações.

Se o valor da prestação for maior que 20% do salário seu código deverá mostrar a mensagem "Empréstimo não pode ser concedido". Se o empréstimo puder ser concedido escreva "Empréstimo pode ser concedido".

Sua saída deve ser parecida com:

Informe o salário: 1350
Informe o valor do empréstimo: 6000
Informe a quantidade de parcelas: 12
O valor das parcelas do empréstimo é: 500.0
Empréstimo não pode ser concedido
Resposta/Solução:

Veja a resolução comentada deste exercício usando Java:

package estudos;

import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // variáveis usadas na resolução do problema
    double salario, emprestimo, valor_parcela;
    int quant_prestacoes;

    // para ler a entrada do usuário
    Scanner entrada = new Scanner(System.in);  
    
    // vamos ler os dados
    System.out.print("Informe o salário: ");
    salario = Double.parseDouble(entrada.nextLine());
    System.out.print("Informe o valor do empréstimo: ");
    emprestimo = Double.parseDouble(entrada.nextLine());
    System.out.print("Informe a quantidade de parcelas: ");
    quant_prestacoes = Integer.parseInt(entrada.nextLine());
    
    // vamos calcular e mostrar o valor da parcela do empréstimo
    valor_parcela = emprestimo / quant_prestacoes;
    System.out.println("O valor das parcelas do empréstimo é: " +
      valor_parcela);
    
    // o empréstimo pode ser concedido?
    if (valor_parcela > (salario * (20.0 / 100.0))) {
      System.out.println("Empréstimo não pode ser concedido");
    }
    else{
      System.out.println("Empréstimo pode ser concedido");
    }
    
    System.out.println("\n");
  }
}



C ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas

Como calcular o cosseno de um ângulo em C usando a função cos() do header math.h - Calculadora de cosseno em C

Quantidade de visualizações: 11152 vezes
Em geral, quando falamos de cosseno, estamos falando do triângulo retângulo de Pitágoras (Teorema de Pitágoras). A verdade é que podemos usar a função cosseno disponível nas linguagens de programação para calcular o cosseno de qualquer número, mesmo nossas aplicações não tendo nenhuma relação com trigonometria.

No entanto, é sempre importante entender o que é a função cosseno. Veja a seguinte imagem:



Veja que temos um triângulo retângulo com as medidas já calculadas para a hipotenusa e os dois catetos, assim como os ângulos entre eles.

Assim, o cosseno é a razão entre o cateto adjascente e a hipotenusa, ou seja, o cateto adjascente dividido pela hipotenusa. Veja a fórmula:

\[\text{Cosseno} = \frac{\text{Cateto adjascente}}{\text{Hipotenusa}} \]

Então, se dividirmos 30 por 36.056 (na figura eu arredondei) nós teremos 0.8320, que é a razão entre o cateto adjascente e a hipotenusa (em radianos).

Agora, experimente calcular o arco-cosseno de 0.8320. O resultado será 0.5881 (em radianos). Convertendo 0.5881 radianos para graus, nós obtemos 33.69º, que é exatamente o ângulo em graus entre o cateto adjascente e a hipotenusa na figura acima.

Pronto! Agora que já sabemos o que é cosseno na trigonometria, vamos entender mais sobre a função cos() da linguagem C. Esta função, que faz parte do header math.h, recebe um valor numérico double e retorna um valor double, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja:

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
 
int main(int argc, char *argv[]){
  // vamos calcular o cosseno de três números
  printf("Cosseno de 0 = %f\n", cos(0));
  printf("Cosseno de 1 = %f\n", cos(1));
  printf("Cosseno de 2 = %f\n", cos(2));
 
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

Cosseno de 0 = 1.000000
Cosseno de 1 = 0.540302
Cosseno de 2 = -0.416147

Note que calculamos os cossenos dos valores 0, 1 e 2. Observe como os resultados conferem com a curva da função cosseno mostrada abaixo:




C# ::: Windows Forms ::: DataGridView

Como ligar um DataGridView do C# Windows Forms à tabela de um banco de dados e efetuar inserção, alteração e remoção de registros

Quantidade de visualizações: 32896 vezes
Uma das principais dúvidas que recebo em meu site é em relação aos passos necessários para associar um DataGridView com a tabela de um banco de dados e listar os dados. Em tempo de design este processo é relativamente fácil, visto que temos wizards que nos acompanham e fazem o trabalho mais pesado nos bastidores. No entanto, o cenário é completamente diferente quando temos que realizar tal tarefa via código. Espero que esta dica o deixe mais preparado para enfrentar tais situações.

Para esta dica eu fiz uma conexão Visual C# 2005 + MySQL 5.0 usando ODBC (caso tenha dúvidas sobre isso, veja minha seção sobre C# + MySQL). Criei uma tabela MySQL chamada clientes contendo id, nome, idade, cidade e estado do cliente. Criei uma classe de conexão, inseri um DataGridView no formulário e coloquei as declarações abaixo na classe do formulário Form1.cs (fora dos métodos, para que os dados sejam globais na classe):

// membros de instância de acesso global na classe
// Dica: Se estiver usando SQL Server, troque "Odbc" por
// "Sql" (Ex: SQLConnection, SqlCommand, SqlDataAdapter)

// conexão com o banco de dados
OdbcConnection conn = null;
OdbcCommand cmd = null;
OdbcDataAdapter adapter = null;
DataSet ds = null;


Em seguida colocamos o código abaixo no evento Click de um botão:

private void button4_Click(object sender, EventArgs e){
  // Dica: Se estiver usando SQL Server, troque "Odbc" 
  // por "Sql" (Ex: SqlCommand, SqlDataAdapter, etc)
  
  // obtém a conexão com o banco de dados
  conn = ConexaoODBC.obterConexao();

  if(conn != null){
    // obtém todos os clientes cadastrados
    cmd = new OdbcCommand("SELECT * FROM clientes",
      conn);

    adapter = new OdbcDataAdapter(cmd);
    ds = new DataSet();
    adapter.Fill(ds, "clientes_table");

    // exibe os dados da tabela no DataGridView 
    dataGridView1.DataSource = ds;
    dataGridView1.DataMember = "clientes_table";

    // fecha a conexão
    ConexaoODBC.fecharConexao();
  }
}

Aqui os dados já são listados no DataGridView. Porém, as alterações efetuadas no controle ainda não são repassadas para o banco de dados. Veja o código adicional no evento Click de outro botão:

private void button5_Click(object sender, EventArgs e){
  // vamos salvar os dados do DataGridView para a tabela do
  // banco de dados
  
  // Dica: Se estiver usando SQL Server, troque "Odbc" por
  // "Sql" (Ex: SqlCommandBuilder)

  // obtém a conexão com o banco de dados
  conn = ConexaoODBC.obterConexao();

  if(conn != null){
    OdbcCommandBuilder cmb = new OdbcCommandBuilder(adapter);
    cmb.GetUpdateCommand();
    adapter.Update(ds.Tables["clientes_table"]);

    // fecha a conexão
    ConexaoODBC.fecharConexao();
  }
}

Pronto! Execute a aplicação, clique no primeiro botão para carregar os dados da tabela MySQL no DataGridView. Em seguida efetue algumas alterações, insira ou exclua linhas e clique no segundo botão. Feche a aplicação e abra-a novamente e se certifique de que os registros foram atualizados, inseridos ou removidos com sucesso.


C ::: C para Engenharia ::: Física - Mecânica

Como calcular a velocidade da queda livre de um corpo dado o intervalo de tempo (e a aceleração da gravidade) em C

Quantidade de visualizações: 2567 vezes
A Queda Livre é um Movimento Uniformemente Variado, na qual um objeto em queda livre tem a sua velocidade aumentada a taxas constantes. Abandonado em alturas próximas da terra, a velocidade com que um corpo cai aumenta a uma taxa de aproximadamente 9,8m/s. Isso é o mesmo que dizer que a aceleração da gravidade terrestre é de 9,8m/s2, o que aumenta a velocidade do objeto em 35,28km/h a cada segundo.

Assim, a fórmula da velocidade de um objeto em queda livre é:

\[ \text{v} = \text{g} \cdot \text{t} \]

Onde:

v ? velocidade de queda (m/s)

g ? aceleração da gravidade (m/s2)

t ? intervalo de tempo (s)

Vamos ver um exemplo? Veja o seguinte enunciado:

1) Um corpo é abandonado a uma altura qualquer no tempo 0s e está em queda livre. Calcule a sua velocidade no tempo 15s.

Como sabemos que o intervalo de tempo é 15s, só precisamos jogar na fórmula. Veja o código C completo para o cálculo:

#include <stdio.h>
#include <stdlib.h>
     
int main(int argc, char *argv[]){
  // gravidade terrestre em m/s2
  float gravidade = 9.80665;
  // intervalo de tempo da queda livre (em segundos)
  float tempo = 15.00; // em segundos
  // velocidade da queda nesse intervalo
  float velocidade = gravidade * tempo;
  
  // mostramos o resultado
  printf("A velocidade da queda livre é: %fm/s",
    velocidade);
    
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

A velocidade da queda livre é: 147.099747m/s

Se quisermos saber a velocidade em km/h, basta multiplicar o resultado por 3.6, o que dará 529.56km/h.

Vamos tornar o experimento mais interessante? Veja uma modificação no código C que mostra a velocidade da queda nos 10 primeiros segundos, de forma individual:

#include <stdio.h>
#include <stdlib.h>
     
int main(int argc, char *argv[]){
  int i; // variável de controle do laço
  // gravidade terrestre em m/s2
  float gravidade = 9.80665;
  // intervalo de tempo da queda livre (em segundos)
  int tempo;
  // velocidade da queda nesse intervalo
  float velocidade;
  
  // um laço for que repete 10 vezes
  for(i = 1; i <= 10; i++){
    tempo = i; // inicialmente será um segundo
    velocidade = gravidade * tempo;
    printf("A velocidade no tempo %d: %fm/s\n",
      tempo, velocidade);
  }
    
  printf("\n\n");
  system("PAUSE");
  return 0;
}

Ao executar este código C nós teremos o seguinte resultado:

A velocidade no tempo 1: 9.806650m/s
A velocidade no tempo 2: 19.613300m/s
A velocidade no tempo 3: 29.419950m/s
A velocidade no tempo 4: 39.226601m/s
A velocidade no tempo 5: 49.033249m/s
A velocidade no tempo 6: 58.839901m/s
A velocidade no tempo 7: 68.646553m/s
A velocidade no tempo 8: 78.453201m/s
A velocidade no tempo 9: 88.259850m/s
A velocidade no tempo 10: 98.066498m/s


Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico

Exercícios Resolvidos de Java - Escrever um algoritmo que recebe o salário-base de um funcionário, calcule e mostre o salário a receber

Quantidade de visualizações: 9201 vezes
Pergunta/Tarefa:

Faça um programa (algoritmo) Java que recebe o salário-base de um funcionário, calcule e mostre o salário a receber, sabendo-se que esse funcionário tem gratificação de 5% sobre o salário-base e paga imposto de 7% sobre o salário-base.

Sua saída deverá ser parecida com:

Informe o salário base: 1450.00
Gratificação: R$ 72,50
Imposto: R$ 101,50
Salário final: R$ 1.421,00

Resposta/Solução:

Veja a resolução comentada deste exercício usando Java console:

package estudos;

import java.text.NumberFormat;
import java.util.Scanner;

public class Estudos {
  public static void main(String[] args) {
    // vamos fazer a leitura usando a classe Scanner
    Scanner entrada = new Scanner(System.in);
    
    // vamos ler o salario base
    System.out.print("Informe o salário base: ");
    double salario_base = Double.parseDouble(entrada.nextLine());
    
    // vamos calcular a gratificação
    double gratificacao = salario_base * (5.0 / 100);
    
    // vamos calcular o imposto
    double imposto = salario_base * (7.0 / 100);
    
    // e finalmente calculamos o salário final
    double salario_final = salario_base + gratificacao - imposto;
    
    // e exibimos o resultado
    NumberFormat formato = NumberFormat.getCurrencyInstance();
    System.out.println("Gratificação: " + formato.format(gratificacao));
    System.out.println("Imposto: " + formato.format(imposto));
    System.out.println("Salário final: " + formato.format(salario_final));
  }
}



Java ::: Java + MySQL ::: Metadados da Base de Dados (Database Metadata)

Java MySQL - Como obter uma lista das funções numéricas (matemática) suportadas pelo MySQL usando o método getNumericFunctions() da interface DatabaseMetaData

Quantidade de visualizações: 5676 vezes
Em algumas situações gostaríamos de, via código, obter uma lista das funções numéricas, ou seja, funções matemáticas, suportadas pelo MS SQL Server. Para isso podemos usar o método getNumericFunctions() da interface DatabaseMetaData. É importante observar que, no Sun Microsystem's JDBC Driver for MySQL, a interface DatabaseMetaData é implementada por uma classe do mesmo nome, no pacote com.mysql.jdbc.DatabaseMetaData. E esta classe implementa o método getNumericFunctions() de forma a retornar a lista de funções numéricas separadas por vírgulas.

Veja um trecho de código Java no qual listamos todas as funções numéricas suportados no MySQL 5.0:

package estudosbancodados;

import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.SQLException;

public class EstudosBancoDados{
  public static void main(String[] args) {
    // strings de conexão
    String databaseURL = "jdbc:mysql://localhost/estudos";
    String usuario = "root";
    String senha = "osmar1234";
    String driverName = "com.mysql.jdbc.Driver";

    try {
      Class.forName(driverName).newInstance();
      Connection conn = DriverManager.getConnection(databaseURL, usuario, senha);

      // vamos obter um objeto da classe com.mysql.jdbc.DatabaseMetaData
      DatabaseMetaData dbmd = conn.getMetaData();

      // vamos obter a lista de funções numéricas disponíveis
      // nesta versão do MySQL
      String funcoesNumericas = dbmd.getNumericFunctions();

      // como a lista de funções está separada por vírgulas, vamos obter
      // uma matriz de strings
      String funcoes[] = funcoesNumericas.split(",");

      // vamos mostrar o resultado
      for(int i = 0; i < funcoes.length; i++){
        System.out.println(funcoes[i]);
      }
    }
    catch (SQLException ex) {
      System.out.println("SQLException: " + ex.getMessage());
      System.out.println("SQLState: " + ex.getSQLState());
      System.out.println("VendorError: " + ex.getErrorCode());
    }
    catch (Exception e) {
      System.out.println("Problemas ao tentar conectar com o banco de dados: " + e);
    }
  }
}

Ao executarmos este código teremos o seguite resultado:

ABS
ACOS
ASIN
ATAN
ATAN2
BIT_COUNT
CEILING
COS
COT
DEGREES
EXP
FLOOR
LOG
LOG10
MAX
MIN
MOD
PI
POW
POWER
RADIANS
RAND
ROUND
SIN
SQRT
TAN
TRUNCATE

Carregar Publicações Anteriores


Nossas 20 dicas & truques de programação mais populares

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

Últimos Exercícios Resolvidos

E-Books em PDF

E-Book 350 Exercícios Resolvidos de Java - PDF com 500 páginas
Domine lógica de programação e a linguagem Java com o nosso E-Book 350 Exercícios Exercícios de Java, para você estudar onde e quando quiser.

Este e-book contém exercícios resolvidos abrangendo os tópicos: Java básico, matemática e estatística, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book
E-Book 650 Dicas, Truques e Exercícios Resolvidos de Python - PDF com 1.200 páginas
Domine lógica de programação e a linguagem Python com o nosso E-Book 650 Dicas, Truques e Exercícios Exercícios de Python, para você estudar onde e quando quiser.

Este e-book contém dicas, truques e exercícios resolvidos abrangendo os tópicos: Python básico, matemática e estatística, banco de dados, programação dinâmica, strings e caracteres, entrada e saída, estruturas condicionais, vetores e matrizes, funções, laços, recursividade, internet, arquivos e diretórios, programação orientada a objetos e muito mais.
Ver Conteúdo do E-book

Linguagens Mais Populares

1º lugar: Java
2º lugar: Python
3º lugar: C#
4º lugar: PHP
5º lugar: C
6º lugar: Delphi
7º lugar: JavaScript
8º lugar: C++
9º lugar: VB.NET
10º lugar: Ruby



© 2025 Arquivo de Códigos - Todos os direitos reservados
Neste momento há 28 usuários muito felizes estudando em nosso site.