Delphi ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular juros simples e montante usando DelphiQuantidade de visualizações: 13515 vezes |
O regime de juros será simples quando o percentual de juros incidir apenas sobre o valor principal. Sobre os juros gerados a cada período não incidirão novos juros. Valor Principal ou simplesmente principal é o valor inicial emprestado ou aplicado, antes de somarmos os juros. Transformando em fórmula temos: J = P . i . n Onde: J = juros P = principal (capital) i = taxa de juros n = número de períodos Imaginemos uma dívida de R$ 2.000,00 que deverá ser paga com juros de 5% a.m. pelo regime de juros simples e o prazo para o pagamento é de 2 meses. O cálculo em Delphi pode ser feito assim: procedure TForm1.Button1Click(Sender: TObject); var principal, taxa, juros: double; meses: integer; begin principal := 2000.00; taxa := 0.08; meses := 2; juros := principal * taxa * meses; ShowMessage('O total de juros a ser pago é: ' + FloatToStr(juros)); end; O montante da dívida pode ser obtido das seguintes formas: a) Montante = Principal + Juros b) Montante = Principal + (Principal x Taxa de juros x Número de períodos) M = P . (1 + (i . n)) Veja o código: procedure TForm1.Button1Click(Sender: TObject); var principal, taxa, juros, montante: double; meses: integer; begin principal := 2000.00; taxa := 0.08; meses := 2; juros := principal * taxa * meses; montante := principal * (1 + (taxa * meses)); ShowMessage('O total de juros a ser pago é: ' + FloatToStr(juros)); ShowMessage('O montante a ser pago é: ' + FloatToStr(montante)); end; Para questões de compatibilidade, esta dica foi escrita usando Delphi 2009. |
VB.NET ::: Desafios e Lista de Exercícios Resolvidos ::: VB.NET Básico |
Exercício Resolvido de VB.NET - Como ler um número inteiro e imprimir seu sucessor e seu antecessor em VB.NETQuantidade de visualizações: 740 vezes |
Pergunta/Tarefa: Escreva um programa VB.NET para ler um número inteiro e imprimir seu sucessor e seu antecessor. O usuário poderá informar um valor positivo ou negativo. Sua saída deverá ser parecida com: Informe um número inteiro: 16 O número informado foi: 16 O antecessor é 15 O sucessor é: 17 Veja a resolução comentada deste exercício usando VB.NET: Imports System Module Program Sub Main(args As String()) ' vamos pedir ao usuário que informe um número inteiro Console.Write("Informe um número inteiro: ") Dim numero As Integer = Integer.Parse(Console.ReadLine()) ' vamos calcular o sucessor do número informado Dim sucessor As Integer = numero + 1 ' vamos calcular o antecessor do número informado Dim antecessor As Integer = numero - 1 ' e agora mostramos os resultados Console.WriteLine("O número informado foi: {0}", numero) Console.WriteLine("O antecessor é {0}", antecessor) Console.WriteLine("O sucessor é: {0}", sucessor) Console.WriteLine(vbCrLf & "Pressione qualquer tecla para sair...") ' pausa o programa Console.ReadKey() End Sub End Module |
Delphi ::: Data Access Controls (Controles de Acesso a Dados) ::: TClientDataSet |
Como usar o componente TClientDataSet do Delphi em suas aplicações de banco de dadosQuantidade de visualizações: 16004 vezes |
Um objeto da classe TClientDataSet implementa um conjunto de dados independente de banco de dados. Este controle representa um conjunto de dados em memória (in-memory). Antes de prosseguirmos, veja a posição desta classe na hierarquia de classes do Delphi: System.TObject Classes.TPersistent Classes.TComponent DB.TDataSet DBClient.TCustomClientDataSet DBClient.TClientDataSet Um controle TClientDataSet pode ser usado das seguintes formas: a) Um conjunto de dados baseado em arquivo, único e totalmente funcional direcionado a aplicações compostas de apenas uma camada. Quando usado desta forma, o client dataset representa os dados armazenados em um arquivo dedicado na máquina do usuário. b) Um buffer em memória local dos registros de um outro conjunto de dados. O outro conjunto de dados (a fonte dos dados) pode residir no mesmo formulário ou data module que o client dataset (por exemplo, quando o client dataset fornece navegação e edição para os dados de um conjunto de dados unidirecional). O conjunto de dados fonte pode também residir em um sistema separado quando o client dataset apoia a parte cliente de uma aplicação de bancos de dados de múltiplas camadas. A forma mais comum de se usar um controle TClientDataSet é acessando a aba Data Acccess da Tool Palette (Paleta de Ferramentas) e arrastando-o para o seu formulário. Em seguida ajustamos algumas de suas propriedades em tempo de design e pronto. Veja o passo-a-passo para configurar um TClientDataSet para representar uma tabela no banco de dados MySQL (outras dicas minhas mostram como efetuar a conexão com outros bancos de dados): 1) Certifique-se de que o banco de dados MySQL está devidamente configurado e funcionando. Inicie-o, anote o nome de usuário e senha e vamos começar. 2) Vá até a aba de componentes dbExpress e arraste um componente TSQLConnection para o formulário. Este é o componente responsável pela conexão com o banco de dados. Selecione o componente no formulário de forma a acessar suas propriedades no Object Inspector. Em seguida siga atentamente as observações a seguir: a) Vá na propriedade ConnectioName e selecione MySQLConnection. Automaticamente a propriedade Driver é definida como MySQL. A propriedade LibrayName será definida como dbxmys.dll. O mesmo acontece com a propriedade VendorLib, que é definida como libmysql.dll. dbxmys.dll é fornecida com o Delphi enquanto libmysql.dll vem com a instalação do MySQL e deverá estar em C:\Windows\System para que sua aplicação seja executada com sucesso. b) O simples fato de definirmos o valor MySQL para a propriedade ConnectionName faz com que os parâmetros de conexão sejam criados com os valores padrões e guardados na propriedade Params. O próximo passo é alterar estes valores de forma a refletir a realidade do banco de dados que vamos usar. Vá em Params e acione o editor Value List Editor. Em HostName você deverá informar o nome ou IP do servidor MySQL. Se estiver rodando localmente use apenas "localhost". Em Database informe o nome da base de dados, por exemplo, "estoque". Em User_Name informe o usuário do banco de dados. Geralmente é "root". Em Password informe a senha do banco de dados. Pressione OK. c) Vá na propriedade LoginPrompt e altere seu valor para False. Isso evita que a tela de login seja exibida quando tentarmos efetuar a conexão. Agora vá na propriedade Connected e altere seu valor para True. Se correr tudo bem você já estará conectado ao banco de dados MySQL. 3) Agora coloque um componente TSQLDataSet no formulário e defina sua propriedade SQLConnection para o componente TSQLConnection que representa a conexão com o banco de dados. Em seguida defina o valor "ctTable" para a propriedade CommandType. Na propriedade CommandText você deverá informar o nome da tabela que será representada por este TSQLDataSet. Finalmente ajuste a propriedade Active para True. 4) O próximo passo é colocar no formulário um componente TDataSetProvider (na aba Data Access). Este componente é responsável por fazer a conexão com o conjunto de dados (dataset), extrair os dados do SQLDataSet e gerar os comandos de atualização SQL adequados. Assim, informe o valor "SQLDataSet1" para a sua propriedade DataSet. 5) Finalmente chegamos ao componente TClientDataSet. Vá na aba Data Acccess e arraste um TClientDataSet para o formulário. Em seguida informe o valor "DataSetProvider1" para sua propriedade ProviderName. Ajuste sua propriedade Active para True. 6) Hora de exibir e manipular os dados. Vá na aba Data Access e arraste um controle TDataSource para o formulário. Aponte sua propriedade DataSet para "ClientDataSet1". Agora vá na aba Data Controls e arraste um TDBGrid para o formulário. Ajuste sua propriedade DataSource para "DataSource1". Se tudo correu bem, você já verá os registros da tabela serem exibidos no DBGrid. 7) Hora de executar a aplicação. Pressione F9 e vamos ao resultado. Experimente navegar e editar os registros no DBGrid. A aplicação permitirá que você faça isso. No entanto, ao fechar a aplicação e abrí-la novamente você perceberá que as alterações não foram refletidas no banco de dados. Para que isso aconteça, coloque o código abaixo no evento Click de um botão: procedure TForm3.Button1Click(Sender: TObject); begin if (ClientDataSet1.ChangeCount > 0) then ClientDataSet1.ApplyUpdates(-1); end; Pronto. Execute a aplicação novamente e faça modificações nos dados exibidos no DBGrid (é preciso sair da linha de edição para que os dados sejam atualizados no DBGrid). Clique no botão para atualizar os dados na tabela do banco de dados. Feche a aplicação a abra-a novamente. Note que agora os dados foram atualizados com sucesso. Esta dica foi escrita e testada no Delphi 2009. |
Java ::: Java para Engenharia ::: Hidrologia e Hidráulica |
Como calcular o volume de chuvas em Java - Fórmula do cálculo do volume de chuvas em JavaQuantidade de visualizações: 407 vezes |
O estudo da Hidrologia passa, necessariamente, pelo cálculo do volume de chuvas em uma determinada região, ou bacia hidrológica. Assim, é comum ouvirmos alguém dizer que, em um determinado local, choveu 100 mm durante um determinado período. Mas o que isso significa? O mês mais chuvoso em Goiânia é dezembro, com média de 229 milímetros de precipitação de chuva. Isso significa que, em uma área de 1 m2, a lâmina de água formada pela chuva que cai apresenta uma altura de 229 milímetros. Como sabemos que o volume é a área multiplicada pela altura, tudo que temos a fazer é considerar a área de 1 m2 multiplicada pela altura da lâmina de água (convertida também para metros). Veja a fórmula: \[\text{Volume} = \text{(Área da Base) x Altura}\] Lembre-se de que volume pode ser retornado em litros, ou seja, 1 m3 = 1000 litros. Veja agora o código Java completo que pede para o usuário informar a precipitação da chuva, ou seja, a altura da lâmina de água em milímetros e retorna o volume de água em litros. package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir para o usuário informar a altura da lâmina // de água em milímetros System.out.print("Altura da lâmina de água em milímetros: "); double altura_lamina = Double.parseDouble(entrada.nextLine()); // o primeiro passo é converter os milímetros da lâmina de água // para metros altura_lamina = altura_lamina / 1000.00; // agora que já temos a altura da lâmina em metros, vamos multiplicar // pela base (1 metro quadrado) para obtermos o volume da chuva por // metro quadrado double volume_chuva = (altura_lamina * 1.00) * 1000.00; // vamos mostrar o resultado System.out.println("O volume da chuva é: " + volume_chuva + " litros para cada metro quadrado"); } } Ao executar este código Java nós teremos o seguinte resultado: Altura da lâmina de água em milímetros: 229 O volume da chuva é: 229.0 litros para cada metro quadrado Qual é o volume de 1 mm de chuva? A altura pluviométrica é a espessura da lâmina d'água precipitada que cobre a região atingida pela chuva. Geralmente a unidade de medição é o milímetro (mm) porque o aparelho que mede a chuva, o pluviômetro, é lido em milímetros. O pluviômetro é um aparelho meteorológico destinado a medir, em milímetros, a altura da lâmina de água gerada pela chuva que caiu numa área de 1 m2. 1 mm de chuva equivale a 1 litro de água, ou 1 dm3, considerando a área de 1 m2. |
Java ::: Dicas & Truques ::: Threads |
Threads em Java - Como definir as prioridades das threads JavaQuantidade de visualizações: 12654 vezes |
Quando estamos trabalhando com threads em Java, precisamos estar cientes de que cada thread possui uma prioridade de execução. É por meio da prioridade de cada uma que o gerenciador de threads decidirá qual thread deverá ser executada primeiro. Por padrão, todas as threads possuem prioridade NORM_PRIORITY. Esta é uma constante que possui o valor 5 e está declarada na classe Thread. Além disso, cada thread herda automaticamente a prioridade da thread que a criou. As constantes MAX_PRIORITY (prioridade máxima), MIN_PRIORITY (prioridade mínima) e NORM_PRIORITY (prioridade normal) são usadas para definir as prioridades das threads Java. Veja um exemplo no qual temos duas threads. A primeira possui a prioridade máxima enquanto a segunda possui a prioridade mínima: // criamos uma classe que servirá como thread class MinhaThread extends Thread{ private String nome; public MinhaThread(String nome){ this.nome = nome; } public void run(){ for(int i = 1; i <= 20; i++){ System.out.println(nome + ": " + i); } } } public class Estudos{ public static void main(String[] args){ // vamos criar duas threads MinhaThread t1 = new MinhaThread("Thread 1"); t1.setPriority(Thread.MAX_PRIORITY); // prioridade máxima t1.start(); MinhaThread t2 = new MinhaThread("Thread 2"); t2.setPriority(Thread.MIN_PRIORITY); // prioridade mínima t2.start(); } } Execute este exemplo e veja como a segunda thread só é executada quando a primeira finaliza. Remova as linhas que definem a prioridade e note como o tempo de cada thread é novamente fracionado. É importante ter em mente que aqui estamos falando de um ambiente de processador único. Em ambientes de múltiplos processadores o comportamento pode ser diferente do abordado na dica. Não devemos confiar em prioridades de threads quando o objetivo é aguardar a finalização de uma thread e só então permitir o processamento das instruções contidas no método run() de outra thread. Para estes casos o recomendável é usar alguma forma para sinalizar as demais threads de que a thread atual concluiu sua tarefa. |
C# ::: Dicas & Truques ::: Strings e Caracteres |
Como contar as ocorrências de um caractere em uma string C# usando o método IndexOf() da classe StringQuantidade de visualizações: 16924 vezes |
Nesta dica mostrarei como podemos tirar proveito da função IndexOf() da classe String do C# para contar todas as ocorrências de uma letra em uma palavra, texto ou frase. Note que, além de retornar a quantidade de ocorrências do caractere, nós vamos mostrar também o índice de cada ocorrência. Veja o código C# completo: using System; namespace Estudos { class Program { static void Main(string[] args) { string frase = "Gosto muito de C#. E você?"; char letra = 'o'; // vamos pesquisar a letra "o" int quant = 0; int pos = -1, pos_ant = -1, cont = 0; while (cont < frase.Length) { pos = frase.IndexOf(letra, cont); if ((pos != pos_ant) && (pos != -1)) { Console.WriteLine("\"" + letra + "\" encontrada no índice " + pos); quant++; } cont++; // aumenta o contador pos_ant = pos; } Console.WriteLine("Encontrei " + quant + " ocorrências da " + "letra " + letra); Console.WriteLine("\n\nPressione uma tecla para sair..."); Console.ReadKey(); } } } Ao executar este código C# nós teremos o seguinte resultado: "o" encontrada no índice 1 "o" encontrada no índice 4 "o" encontrada no índice 10 "o" encontrada no índice 22 Encontrei 4 ocorrências da letra o |
PHP ::: Dicas & Truques ::: Variáveis e Constantes |
Como verificar se uma variável PHP é do tipo object usando a função is_object()Quantidade de visualizações: 9349 vezes |
Em algumas situações podemos querer saber se o tipo de uma determinada variável é object. Este teste pode ser feito com o auxílio da função is_object() da linguagem PHP. Esta função retorna um valor true se a variável for do tipo object e false em caso contrário. Veja o código completo para o exemplo: <html> <head> <title>Estudos PHP</title> </head> <body> <?php class Pessoa{ public $nome = ''; function nome($novo_nome = NULL){ if(!is_null($novo_nome)){ $this->nome = $novo_nome; } return $this->nome; } } $pessoa = new Pessoa; if(is_object($pessoa)){ echo 'A variável $pessoa é do tipo object.'; } ?> </body> </html> Ao executarmos este código PHP nós teremos o seguinte resultado: A variável $pessoa é do tipo object. |
PHP ::: Fundamentos da Linguagem ::: Métodos, Procedimentos e Funções |
Apostila de PHP - Como criar suas próprias funções em PHPQuantidade de visualizações: 31174 vezes |
Uma função é um bloco de código que executa uma determinada tarefa, possivelmente baseado em um conjuntos de valores fornecidos, ou parâmetros, e possivelmente retornando um único valor. Funções permitem a melhora na leitura do código e correção de bugs, visto que blocos de códigos bem testados podem ser reutilizados inúmeras vezes em seus programas. Antes de continuarmos é bom estar ciente dos diferentes nomes que as linguagens de programação adotam quando o assunto é função. Em Java, funções são chamadas de métodos. Em Delphi, temos funções (function) e procedimentos (procedure). Se uma função em Delphi retorna um valor, ela é chamada de function. Se nenhum valor é retornado, ela é chamada de procedure. Em PHP o nome é função (function) mesmo, não importando se valores são retornados ou não. Veja um exemplo onde criamos uma função que apenas escreve na página: <? // define a função function escrever(){ echo "Observe este texto"; } // chama a função escrever(); ?> Podemos estender este exemplo e fornecer à função o texto que deverá ser escrito. Veja: <? // define a função function escrever($texto){ echo $texto; } // chama a função escrever("Observe este texto"); ?> Veja que agora a função possui parâmetros, neste caso a variável local $texto. Assim, ao efetuarmos a chamada nós podemos fornecer um valor (um argumento) a esta função. Vamos progredir escrevendo uma função que soma dois valores: <? // define a função function somar($valor1, $valor2){ echo "A soma é: " . ($valor1 + $valor2); } // chama a função somar(3, 5); ?> Para finalizar, vamos escrever uma função que retorna um valor. Veja: <? // define a função function somar($valor1, $valor2){ return ($valor1 + $valor2); } // chama a função $soma = somar(3, 5); echo "O resultado é: " . $soma; ?> Observe o uso da palavra-chave return para definirmos o valor que será retornado pela função. |
Java ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar a quantidade de palavras em uma string Java usando um objeto da classe StringTokenizerQuantidade de visualizações: 344 vezes |
Nesta dica mostrarei como podemos usar um objeto da classe StringTokenizer, do pacote java.util para contar as palavras em um texto ou frase, ou seja, em uma string. O método que usaremos da classe StringTokenizer é countTokens() que retorna a quantidade de pedaçõs na string, separados por espaço. Veja o código completo para o exemplo: // Este exemplo mostra como contar as palavras // de uma string import java.util.*; public class Estudos{ public static void main(String[] args){ String frase = "Programar em Java é bom demais"; StringTokenizer parser = new StringTokenizer(frase); int cont = parser.countTokens(); System.out.println("A frase contém " + cont + " palavras"); System.exit(0); } } Ao executar este código Java nós teremos o seguinte resultado: A frase contem 6 palavras. |
Python ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o arco cosseno de um número em Python usando o método acos() do módulo mathQuantidade de visualizações: 3562 vezes |
O arco cosseno, (também chamado de cosseno inverso) pode ser representado por cos-1 x, arccos x ou acos x. Esta função é a inversa do cosseno, ou seja, se o cosseno é a relação entre o cateto adjacente ao ângulo e a hipotenusa, o arco cosseno parte desta relação para encontrar o valor do ângulo. Em Python, o arco cosseno de um número pode ser obtido por meio do método acos() da classe Math. Este método recebe um valor double e retorna também um double, na faixa 0 <= x <= PI, onde PI vale 3.1416. Veja um código Python completo no qual informamos um número e em seguida calculamos o seu arco-cosseno: # vamos importar o módulo Math import math as math def main(): numero = 0.5 print("O arco cosseno de %f é %f" % (numero, math.acos(numero))) if __name__== "__main__": main() Ao executar este código nós teremos o seguinte resultado: O arco cosseno de 0.500000 é 1.047198 Não se esqueça de que as funções trigonométricas são usadas para modelar o movimento das ondas e fenômenos periódicos, como padrões sazonais. Elas formam a base para análises avançadas em engenharia elétrica, processamento digital de imagem, radiografia, termodinâmica, telecomunicações e muitos outros campos da ciência e da tecnologia. |
Nossas 20 dicas & truques de programação mais populares |
C++ Builder - Como obter a quantidade de caracteres em um TEdit usando a função GetTextLen() do C++ Builder JavaScript - Formulários HTML - Como marcar ou desmarcar todas as checkboxes de um formulário HTML de uma só vez usando JavaScript GNU Octave - Como calcular a derivada de uma função usando a função diff() do GNU Octave - Regra do Tombo (ou Regra da Potência) |
Você também poderá gostar das dicas e truques de programação abaixo |
C - Como inverter (reverter) o conteúdo de uma string em C usando uma função str_reverse() personalizada Ruby - Como inserir uma substring em uma determinada posição de uma string em Ruby usando a função insert() |
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 |