C# ::: Dicas & Truques ::: Data e Hora |
Como adicionar ou subtrair dias de uma data em C# usando o método AddDays() da classe DateTimeQuantidade de visualizações: 26983 vezes |
Em algumas situações nossos códigos precisam adicionar ou subtrair dias de uma data. Isso pode ser feito com o auxílio do método AddDays() da estrutura DateTime. Este método recebe o número de dias a serem acrescidos ou substraídos da data representada pelo DateTime atual e retorna um novo DateTime com as devidas modificações. Veja um trecho de código no qual adicionamos 5 dias à data atual: static void Main(string[] args){ // vamos obter a data de hoje DateTime hoje = DateTime.Now; // exibe a data de hoje System.Console.WriteLine("Hoje é {0:d}", hoje); // vamos adicionar 5 dias à data de hoje DateTime data_futura = hoje.AddDays(5); // exibe a data daqui a cinco dias System.Console.WriteLine("Daqui a 5 dias será {0:d}", data_futura); // pausa o programa System.Console.Write("\nPressione qualquer tecla para sair..."); Console.ReadKey(); } É possível também subtrair dias. Para isso só precisamos fornecer um valor negativo para o método AddDays(). Veja: static void Main(string[] args){ // vamos obter a data de hoje DateTime hoje = DateTime.Now; // exibe a data de hoje System.Console.WriteLine("Hoje é {0:d}", hoje); // vamos subtrair 7 dias da data de hoje DateTime data_passado = hoje.AddDays(-7); // exibe a data sete dias atrás System.Console.WriteLine("Há 7 dias era {0:d}", data_passado); // pausa o programa System.Console.Write("\nPressione qualquer tecla para sair..."); Console.ReadKey(); } Lembre-se, contudo, que o método AddDays() pode disparar uma exceção do tipo ArgumentOutOfRangeException se o DateTime resultante for menor que MinValue ou maior que MaxValue. MinValue e MaxValue são os menor e maior valores que um DateTime pode representar. |
Java ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular juros compostos e montante usando a linguagem Java - Fórmula de juros compostos em Java - RevisadoQuantidade de visualizações: 20962 vezes |
O regime de juros compostos é o mais comum no sistema financeiro e, portanto, o mais útil para cálculos de problemas do dia-a-dia. Os juros gerados a cada período são incorporados ao principal para o cálculo dos juros do período seguinte. Chamamos de capitalização o momento em que os juros são incorporados ao principal. Assim, após três meses de capitalização, temos: 1º mês: M = P .(1 + i) 2º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) 3º mês: o principal é igual ao montante do mês anterior: M = P x (1 + i) x (1 + i) x (1 + i) Simplificando, obtemos a fórmula: M = P . (1 + i)^n Importante: a taxa i tem que ser expressa na mesma medida de tempo de n, ou seja, taxa de juros ao mês para n meses. Para calcularmos apenas os juros basta diminuir o principal do montante ao final do período: J = M - P Vejamos um exemplo: Considerando que uma pessoa empresta a outra a quantia de R$ 2.000,00, a juros compostos, pelo prazo de 3 meses, à taxa de 3% ao mês. Quanto deverá ser pago de juros? Veja o código Java para a resolução: public class Estudos{ public static void main(String args[]){ double principal = 2000.00; double taxa = 0.03; int meses = 3; double montante = principal * Math.pow((1 + taxa), meses); double juros = montante - principal; System.out.println("O total de juros a ser pago é: " + juros); System.out.println("O montante a ser pago é: " + montante); System.exit(0); } } Ao executarmos este código nós teremos o seguinte resultado: O total de juros a ser pago é: 185.45400000000018 O montante a ser pago é: 2185.454 É claro que uma formatação para moeda deixaria os valores mais bonitos. Uma outra aplicação interessante é mostrar mês a mês a evolução dos juros. Veja o código a seguir: public class Estudos{ public static void main(String args[]){ double principal = 2000.00; double taxa = 0.03; int meses = 3; double anterior = 0.0; for(int i = 1; i <= meses; i++){ double montante = principal * Math.pow((1 + taxa), i); double juros = montante - principal - anterior; anterior += juros; System.out.println("Mês: " + i + " - Montante: " + montante + " - Juros: " + juros); } System.exit(0); } } Ao executarmos este código nós teremos o seguinte resultado: Mês: 1 - Montante: 2060.0 - Juros: 60.0 Mês: 2 - Montante: 2121.7999999999997 - Juros: 61.79999999999973 Mês: 3 - Montante: 2185.454 - Juros: 63.65400000000045 Esta dica foi revisada e testada no Java 8. |
Delphi ::: Dicas & Truques ::: Trigonometria - Funções Trigonométricas |
Como calcular o cosseno de um ângulo em Delphi usando a função Cos() - Calculadora de cosseno em DelphiQuantidade de visualizações: 1338 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 Delphi. Esta função, incorporada por padrão à linguagem, recebe um valor numérico (Extended) e retorna um valor Extended, ou seja, também numérico) entre -1 até 1 (ambos inclusos). Veja: procedure TForm1.Button1Click(Sender: TObject); begin Memo1.Lines.Add('Cosseno de 0 = ' + FloatToStr(Cos(0))); Memo1.Lines.Add('Cosseno de 1 = ' + FloatToStr(Cos(1))); Memo1.Lines.Add('Cosseno de 2 = ' + FloatToStr(Cos(2))); end; Ao executar este código Delphi nós teremos o seguinte resultado: Cosseno de 0 = 1 Cosseno de 1 = 0,54030230586814 Cosseno de 2 = -0,416146836547142 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: ![]() |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercícios Resolvidos de Java - Escreva um programa (algorítmo) Java que usa o laço for para exibir uma tabela de conversões de milhas para quilômetrosQuantidade de visualizações: 3904 vezes |
Pergunta/Tarefa: Escreva um programa (algorítmo) Java que usa o laço for para exibir uma tabela de conversões de milhas para quilômetros. Sabendo que uma milha equivale a 1.609 quilômetros, seu programa deverá exibir uma saída parecida com: Milhas Quilômetros ------------------------------- 1 1.609 2 3.218 3 4.827 4 6.436 5 8.045 6 9.654 7 11.263 8 12.872 9 14.481 10 16.09 Veja a resolução comentada deste exercício usando Java console: package estudos; public class Estudos { public static void main(String[] args){ System.out.println("Milhas\t\tQuilômetros"); System.out.println("-------------------------------"); // um laço for que repetirá 10 vezes for (int i = 1; i <= 10; i++){ // usamos a variável de controle do laço para o cálculo System.out.println(i + "\t\t" + (i * 1.609)); } } } |
Java ::: Projetos Java Completos - Códigos Fonte Completos Java ::: Projetos Java Programação Orientada a Objetos - Exemplos Java |
Simulação de Sistema Bancário usando Programação Orientada a Objetos em Java - Projeto completo com código fonte - Versão consoleQuantidade de visualizações: 17464 vezes |
Sobre este projeto Java Durante estes anos que tenho trabalhado como freelancer, mais da metade das requisições dos meus clientes foram ajuda para desenvolver idéias de programação orientada a objetos em Java para projeto de faculdades e universidades. Com isso percebi que boa parte dos alunos e iniciantes em programação orientada a objetos já entendem toda a teoria. O que lhes falta é prática, ou seja, aplicar estes conhecimentos em aplicações do mundo real. Pensando nisso, apresento a você um projeto muito interessante e que, se bem entendido e praticado, o ajudará a desenvolver qualquer tipo de aplicação, seja comercial ou para solucionar problemas cotidianos. O projeto Java apresentado nesta dica é uma simulação completa de um Sistema Bancário, tudo com código fonte em Java, comentado, com variáveis em português, em um nível médio de programação, para facilitar o entendimento de todos. Nesta simulação nós temos a criação de classes Java, construtores, encapsulamento de dados, agregação e composição, métodos com retorno e sem retorno, variáveis estáticas, variáveis públicas e privadas, e relacionamento entre objetos (um para um, um para muitos, muitos para um) usando ArrayList. Sim, o projeto faz uso extensivo de ArrayList, o que o torna muito rico para o aprendizado e fixação dos conhecimentos da linguagem Java e suas classes principais. O Diagrama de Classes Java Antes de falarmos mais sobre o projeto, dê uma boa olhada no seu diagrama de classes: ![]() Como a aplicação está estruturada? Como podemos ver no diagrama de classes, nós temos uma classe Sistema que contém zero ou vários objetos da classe Banco (relacionamento um para muitos). A classe Banco, por sua vez, possui uma ArrayList de objetos da classe Agência, ou seja, mais um relacionamento um para muitos, já que cada agência pertence a um único banco. Cada agência pode possuir zero ou mais contas, e cada conta possui um ArrayList de objetos da classe Transação, o que nos permite registrar todas as operações nas contas e emitir o extrato bancário, com os débitos, créditos e transferências entre contas. Tudo isso é feito por meio de vários menus de opções, como podemos ver na imagem a seguir: ![]() Devo usar ArrayList do Java para desenvolver o sistema? Sim, objetos da classe ArrayList são perfeitos quando precisamos representar relacionamentos um para muitos e muitos para um. É claro que poderíamos usar vetores de objetos (usando array), mas ficaríamos restritos a tamanhos fixos, enquanto o ArrayList nos permite cadastrar quantos bancos, pessoas, agências e contas quisermos. Dessa forma, veja, por exemplo, o trecho de código que cria um novo banco: switch(opcao){ case 1: // vamos cadastrar um novo banco System.out.print("\nNúmero do Banco: "); String numeroBanco = entrada.nextLine(); System.out.print("Nome do Banco: "); String nomeBanco = entrada.nextLine(); // vamos incrementar o contador de bancos Banco.contadorBancos++; // agora vamos criar um novo objeto da classe Banco Banco b = new Banco(Banco.contadorBancos, nomeBanco, numeroBanco); // e o adicionamos no ArrayList de bancos bancos.add(b); // e finalmente mostramos uma mensagem de sucesso. System.out.println("\nO banco criado com sucesso"); break; Note que este trecho de código é parte do case da opção Novo Banco do menu Gerenciar Bancos. Veja como usamos uma variável estática contadorBancos da classe Banco para criarmos um valor inteiro auto-incremento que nos permite identificadores únicos para cada banco. Veja agora mais um trecho de código muito interessante. Trata-se case 3: // vamos pesquisar uma conta System.out.print("\nId, número ou nome cliente da conta: "); pesquisaConta = entrada.nextLine(); // chamamos o método que pesquisa a conta temp = pesquisarConta(agenciaAtual, pesquisaConta); if(temp == null){ // conta não encotrada System.out.println("\nConta não encontrada na agência."); } else{ // mostra a conta encontrada System.out.println("\nId da conta bancária: " + temp.getId()); System.out.println("Número da conta: " + temp.getNumero()); System.out.println("Cliente: " + temp.getCliente().getNome()); System.out.println("Agência: " + agenciaAtual.getNumero() + " - " + agenciaAtual.getCidade()); System.out.println("Banco: " + bancoAtual.getNumero() + " - " + bancoAtual.getNome()); System.out.println("Saldo atual: " + temp.getSaldo()); System.out.println("Limite atual: " + temp.getLimite()); } break; Viu que código mais lindo? Note como a Programação Orientada a Objetos em Java nos permite desenvolver idéias de forma bem parecida mesmo ao mundo real. O fechamento com chave de ouro O produto final da aplicação Java deverá ser um extrato bancário mostrando os dados da conta escolhida, o histórico de transações com data, tipo da transação e valor, e o saldo atual da conta, com ou sem limite. Veja na imagem abaixo a formatação apresentada (mesmo em modo texto): ![]() Como posso obter este código fonte? Os links para você baixar todas as versões deste projeto estão abaixo: 1) SBJCNB-A - Sistema Bancário em Java com Código Fonte Versão Console - NetBeans IDE - Faça o Download. 2) SBJCNB-B - Sistema Bancário em Java com Código Fonte Versão Console - Lê e salva os dados em arquivo usando serialização (Serializable), ou seja, os métodos readObject() e writeObject() - NetBeans IDE - Faça o Download. Não se esqueça: Uma boa forma de estudar o código é fazendo pequenas alterações e rodando para ver os resultados. Outra opção é começar um projeto Java do zero e ir adicionando trechos do código fonte para melhor entendimento de suas partes. |
C ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de C - Declare uma matriz de 10 inteiros e use um laço for para preencher os elementos da matriz usando valores aleatórios de 0 até 10Quantidade de visualizações: 11854 vezes |
Pergunta/Tarefa: Escreva um programa C que declara uma matriz de 10 inteiros. Use um laço for para preencher os elementos da matriz usando valores aleatórios de 0 até 10 (incluindo os valores 0 e 10). Para finalizar, percorra os elementos da matriz e exiba seus valores. A saída do programa deverá ser parecida com: 3 5 5 1 3 8 10 0 9 7 Resposta/Solução: Veja abaixo a resolução completa para esta tarefa: #include <stdio.h> #include <stdlib.h> int main(int argc, char *argv[]) { // vamos inicializar o gerador de números aleatórios srand(time(NULL)); // vamos declarar e construir uma matriz de 10 inteiros int valores[10]; // vamos preencher a matriz com valores aleatórios de 0 até 10 (incluindo) int i; for(i = 0; i < 10; i++){ valores[i] = rand() % 11; } // vamos exibir os valores dos elementos da matriz for(i = 0; i < 10; i++){ printf("%d ", valores[i]); } printf("\n\n"); system("PAUSE"); return 0; } Espero que você tenha gostado e continue a acessar a nossa Lista de Exercícios de C. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Java Básico |
Exercícios Resolvidos de Java - Um programa que lê três números e os classifica e exibe em ordem crescenteQuantidade de visualizações: 6897 vezes |
Pergunta/Tarefa: Escreva um programa Java que pede ao usuário três números inteiros. Em seguida, ordene os três valores em ordem crescente e os exiba. Sua saída deverá ser parecida com: Informe o primeiro valor: 7 Informe o segundo valor: 4 Informe o terceiro valor: 6 Os números ordenados em ordem crescente são: 4 6 7 Veja a resolução comentada deste exercício usando Java console: package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { Scanner entrada = new Scanner(System.in); // vamos pedir que o usuário informe três números inteiros System.out.print("Informe o primeiro valor: "); int num1 = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o segundo valor: "); int num2 = Integer.parseInt(entrada.nextLine()); System.out.print("Informe o terceiro valor: "); int num3 = Integer.parseInt(entrada.nextLine()); // o primeiro número é maior que o segundo? vamos trocá-los if(num1 > num2){ int temp = num1; num1 = num2; num2 = temp; } // o segundo número é maior que o terceiro? vamos trocá-los if(num2 > num3){ int temp = num2; num2 = num3; num3 = temp; } // depois da segunda troca o número 1 é novamente maior que o número 2? if(num1 > num2){ int temp = num1; num1 = num2; num2 = temp; } // mostra o resultado System.out.println("Os números ordenados em ordem crescente são: "); System.out.println(num1 + " " + num2 + " " + num3); System.out.println("\n"); } } |
Java ::: Dicas & Truques ::: Formatação de datas, strings e números |
Java para iniciantes - Como controlar a quantidade de casas decimais na exibição de um valor double ou floatQuantidade de visualizações: 26839 vezes |
Este trecho de código mostra como usar o método printf() do Java 5.0 para definir a quantidade de casas decimais na exibição de um valor double. Obs: Veja que há arredondamento durante a redução das casas decimais. Eis o código completo para o exemplo: package arquivodecodigos; public class Estudos{ public static void main(String[] args){ double valor = 54.235344213; // exibe o valor original System.out.println(valor); // exibe o valor com duas casas decimais System.out.printf("%.2f\n", valor); // exibe o valor com quatro casas decimais System.out.printf("%.4f\n", valor); // exibe o valor com cinco casas decimais System.out.printf("%.5f\n", valor); // exibe o valor com uma casa decimal System.out.printf("%.1f", valor); } } Ao executar este código Java nós teremos o seguinte resultado: 54.235344213 54,24 54,2353 54,23534 54,2 |
Java ::: Coleções (Collections) ::: HashSet |
Java HashSet - Como usar o método add() para adicionar novos elementos a um HashSet da linguagem JavaQuantidade de visualizações: 5371 vezes |
Novos elementos podem ser adicionados a um HashSet por meio do método add(), definido originalmente na interface Collection<E> e sobrescrevendo a versão herdada de AbstractCollection<E>. Este método possui a seguinte assinatura:public boolean add(E e) package estudos; import java.util.HashSet; import java.util.Iterator; import java.util.Set; public class Estudos{ public static void main(String[] args) { // vamos criar uma instância da classe HashSet Set<Integer> conjunto = new HashSet<>(); // vamos tentar inserir três inteiros neste conjunto if(conjunto.add(5)){ System.out.println("Elemento inserido com sucesso."); } else{ System.out.println("O elemento não foi inserido."); } if(conjunto.add(7)){ System.out.println("Elemento inserido com sucesso."); } else{ System.out.println("O elemento não foi inserido."); } if(conjunto.add(5)){ System.out.println("Elemento inserido com sucesso."); } else{ System.out.println("O elemento não foi inserido."); } // vamos exibir os elementos inseridos com sucesso Iterator iterator = conjunto.iterator(); while(iterator.hasNext()){ System.out.println(iterator.next()); } } } Ao executar este código teremos o seguinte resultado: Elemento inserido com sucesso. Elemento inserido com sucesso. O elemento não foi inserido. 5 7 |
Python ::: Dicas & Truques ::: Lista (List) |
Como adicionar uma lista Python ao final de outra usando o método extend()Quantidade de visualizações: 7732 vezes |
A função extend() do objeto List da linguagem Python nos permite adicionar todos os elementos de uma determinada lista ao final de outra lista. É claro que qualquer objeto que fornece uma forma de iteração pode ser passado ao método, incluindo uma List, um Set, uma Tuple, etc. Veja um trecho de código no qual criamos duas listas de inteiros e adicionamos todos os elementos da segunda lista ao final da primeira: """ Este exemplo mostra como adicionar os elementos de uma lista ao final de outra """ def main(): # cria uma lista de inteiros valores1 = [2, 5, 12, 2, 3] print(valores1) # cria uma lista de pontos-flutuantes valores2 = [4.3, 6.43, 8.1] print(valores2) # insere a segunda lista no final da primeira valores1.extend(valores2) # exibe o resultado final print(valores1) if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: [2, 5, 12, 2, 3] [4.3, 6.43, 8.1] [2, 5, 12, 2, 3, 4.3, 6.43, 8.1] |
Nossas 20 dicas & truques de programação mais populares |
MySQL - Como excluir a chave primária de uma tabela MySQL usando o comando ALTER TABLE DROP PRIMARY KEY Python - Como retornar o dia do mês em Python como um decimal no intervalo 01-31 usando strftime("%d") Portugol - Exercício Resolvido de Portugol - Um programa que lê três números inteiros e mostra o maior |
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 |