Ruby ::: Dicas & Truques ::: Data e Hora |
Como retornar o dia do mês em Ruby usando um objeto da classe Time e os métodos day e mdayQuantidade de visualizações: 6245 vezes |
Muitas vezes precisamos obter o dia do mês de uma determinada data. Para isso a classe Time do Ruby nos fornece os métodos day e mday. Estes método retornam um número inteiro na faixa 1..31. Veja uma demonstração destes métodos no trecho de código a seguir: # obtém o dia do mês usando o método day agora = Time.new dia = agora.day # exibe o resultado puts "Dia do mês usando a função day: " + dia.to_s # obtém o dia do mês usando o método mday agora = Time.new dia = agora.mday # exibe o resultado puts "Dia do mês usando a função mday: " + dia.to_s Ao executar este código Ruby nós teremos o seguinte resultado: Dia do mês usando a função day: 21 Dia do mês usando a função mday: 21 |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Laços de Repetição |
Exercício Resolvido de Java - Usando o laço do...while para pedir ao usuário para informar números inteiros e calcular a quantidade de números positivos, negativos, a soma e a médiaQuantidade de visualizações: 9607 vezes |
Pergunta/Tarefa: Escreva um programa Java que usa o laço do...while para ler números inteiros até que o valor lido seja igual a 0. Em seguida mostre a quantidade de valores positivos e negativos, a soma dos valores e a média aritmética (sem incluir o valor 0 na contagem e no cálculo da média). A média deverá ser exibida como um valor de ponto flutuante. Sua saída deverá ser parecida com a mostrada abaixo: Informe um número inteiro (0 para sair): 5 Informe um número inteiro (0 para sair): -4 Informe um número inteiro (0 para sair): 3 Informe um número inteiro (0 para sair): 8 Informe um número inteiro (0 para sair): -2 Informe um número inteiro (0 para sair): 0 Quantidade de números positivos: 3 Quantidade de números negativos: 2 A soma dos números lidos é: 10 A média aritmética é: 2.0 Veja a resolução comentada deste exercício usando Java console: package exercicios; import java.util.Scanner; public class Exercicios { public static void main(String[] args) { // vamos fazer a leitura usando a classe Scanner Scanner entrada = new Scanner(System.in); // declaração das variáveis int numero, quantLidos = 0, soma = 0; int quantPositivos = 0, quantNegativos = 0; // laço do...while que repetirá até que o usuário informe o valor 0 do { // lê o primeiro ou próximo número System.out.print("Informe um número inteiro (0 para sair): "); numero = Integer.parseInt(entrada.nextLine()); if(numero > 0){ // o número é positivo? quantPositivos++; } else if(numero < 0){ // o número é negativo? quantNegativos++; } // soma este número à soma já existente soma += numero; // aumenta a contagem dos números lidos if(numero != 0){ // não incluir o 0 para sair do programa na contagem quantLidos++; } } while(numero != 0); // condição de parada do laço if(quantLidos == 0){ System.out.println("Você não informou nenhum número."); } else{ System.out.println("Quantidade de números positivos: " + quantPositivos); System.out.println("Quantidade de números negativos: " + quantNegativos); System.out.println("A soma dos números lidos é: " + soma); System.out.println("A média aritmética é: " + ((soma * 1.0) / quantLidos)); // note a multiplicação de soma por 1.0 para gerar um valor de ponto flutuante // antes da divisão } } } |
C# ::: Windows Forms ::: TextBox |
Como definir a cor do texto de uma caixa de texto TextBox do C# Windows Forms via códigoQuantidade de visualizações: 12949 vezes |
Nesta dica mostrarei como podemos usar a propriedade ForeColor da classe Control do C# Windows Forms para definir a cor do texto de um componente TextBox. Note que criei uma caixa de texto com o nome textBox1 e chamei o código que altera a cor do texto a partir do evento Click de um botão Button. Veja o trecho de código a seguir: private void button1_Click(object sender, EventArgs e) { // vamos definir o azul para a cor do texto textBox1.ForeColor = Color.Blue; } |
Delphi ::: Dicas & Truques ::: Data e Hora |
Como retornar a data e hora atual em Delphi usando as funções Now() e DateTimeToStr()Quantidade de visualizações: 23697 vezes |
Em algumas situações precisamos obter a data e hora atual do sistema. Em Delphi isso pode ser feito com o auxílio da função Now(), presente na unit SysUtils. Este função não requer nenhum argumento e retorna a data e hora atual como um TDateTime. Veja o exemplo:procedure TForm1.Button1Click(Sender: TObject); var data: TDateTime; begin // vamos obter a data e hora atual data := Now(); // vamos exibir o resultado ShowMessage(DateTimeToStr(data)); end; Ao executar este código Delphi nós teremos o seguinte resultado: 28/09/2018 15:14:15 Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Java ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Java - Pesquisando um valor em uma matriz de int e retornando o índice no qual o mesmo foi encontradoQuantidade de visualizações: 9458 vezes |
Pergunta/Tarefa: Escreva um programa Java GUI ou console que declara, constrói e inicializa uma matriz de 5 inteiros. Em seguida peça ao usuário para informar um valor inteiro e informe se o valor lido está contido na matriz. Se o valor for encontrado na matriz, retorne seu índice (lembre-se de que os índices dos elementos em uma matriz Java começam em 0). A declaração, construção e inicialização da matriz pode ser feita da seguinte forma: // declara, constrói e inicializa uma matriz de 5 inteiros int valores[] = {4, 21, 8, 120, 1}; Resposta/Solução: Veja a resolução comentada deste exercício usando Java console: package estudos; import javax.swing.JOptionPane; public class Estudos { public static void main(String[] args) { // declara, constrói e inicializa uma matriz de 5 inteiros int valores[] = {4, 21, 8, 120, 1}; // vamos ler um valor inteiro int pesquisa = Integer.parseInt(JOptionPane.showInputDialog("Valor:")); // vamos verificar se o valor está contido na matriz e retornar seu índice int pos = -1; // índice não existente na matriz for(int i = 0; i < valores.length; i++){ if(valores[i] == pesquisa){ pos = i; // encontrou? vamos anotar este índice break; } } // vamos mostrar o resultado if(pos > -1){ JOptionPane.showMessageDialog(null, "O valor foi encontrado no índice: " + pos); } else{ JOptionPane.showMessageDialog(null, "O valor não foi encontrado na matriz"); } } } Uma idéia na resolução deste exercício é inicializar a variável que guardará o índice do elemento pesquisado com o valor -1. Assim, se no final da pesquisa o valor ainda for -1, sabemos que o elemento não foi encontrado. |
PHP ::: Dicas & Truques ::: Matemática e Estatística |
Como calcular juros compostos e montante usando PHPQuantidade de visualizações: 14909 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. 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 PHP para a resolução: <? $principal = 2000.00; $taxa = 0.03; // 3% $meses = 3; $montante = $principal * pow((1 + $taxa), $meses); $juros = $montante - $principal; echo "O total de juros a ser pago é: " . $juros . "<br>"; echo "O montante a ser pago é: " . $montante; ?> Um outra aplicação interessante é mostrar mês a mês a evolução dos juros. Veja o código a seguir: <? $principal = 2000.00; $taxa = 0.03; // 3% $meses = 3; $anterior = 0.0; for($i = 1; $i <= $meses; $i++){ $montante = $principal * pow((1 + $taxa), $i); $juros = $montante - $principal - $anterior; $anterior += $juros; echo "Mês: " . $i . " - Montante: " . $montante . " - Juros: " . $juros . "<br>"; } ?> |
Ruby ::: Desafios e Lista de Exercícios Resolvidos ::: Arrays e Matrix (Vetores e Matrizes) |
Exercícios Resolvidos de Ruby - Escreva um programa Ruby para mover todos os zeros para o final do vetor, sem alterar a ordem dos elementos já presentes no arrayQuantidade de visualizações: 1212 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 Ruby: # 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 (0..valores.length - 1) printf("%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 (0..valores.length - 1) # 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 end end # agora mostramos o resultado print("\n\nVetor com os zeros deslocados para o final:\n") for i in (0..valores.length - 1) printf("%d ", valores[i]) end 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. |
C++ ::: Dicas & Truques ::: Input e Output (Entrada e Saída) |
Como ler entrada do usuário em C++ usando a função global getline() da classe stringQuantidade de visualizações: 12743 vezes |
Nesta dica mostrarei como é possível usar a função global getline() da classe string da linguagem C++ para ler a entrada do usuário. Veja a assinatura que usaremos: istream& getline(istream& is, string& str); Esta função extrai os caracteres do fluxo de entrada (is) e os armazena na string fornecida como argumento (str). Veja o código completo: #include <iostream> using namespace std; int main(int argc, char *argv[]) { string nome; cout << "Por favor, informe o seu nome: "; getline(cin, nome); cout << "Seu nome é: " << nome << "\n\n"; system("PAUSE"); // pausa o programa return 0; } Ao executarmos este código nós teremos o seguinte resultado: Por favor, informe o seu nome: Osmar J. Silva Seu nome é: Osmar J. Silva Pressione qualquer tecla para continuar... |
PHP ::: Fundamentos da Linguagem ::: Estruturas de Controle |
PHP para iniciantes - Como usar o laço for da linguagem PHPQuantidade de visualizações: 31191 vezes |
O laço for, ou loop for, ou laço PARA, é usado quando queremos executar um bloco de instruções um determinado número de vezes. Este laço é composto de três partes:for(inicialização; teste; incremento/decremento){ bloco de instruções } Na parte inicialização nós definimos o valor inicial da variável de controle. Na parte teste nós usamos o valor da variável de controle para testar a continuidade ou interrupção do laço. Finalmente, na parte incremento/decremento nós alteramos o valor da variável de controle para cima ou para baixo. Veja um exemplo: <? for($i = 1; $i <= 10; $i++){ echo $i . "<br>"; } ?> Este trecho de código vai mostrar o seguinte resultado: 1 2 3 4 5 6 7 8 9 10 O incremento/decremento da variável de controle não precisa ser necessariamente em 1. Podemos usar qualquer expressão. Veja um trecho de código que exibe os números pares de 0 à 10: <? for($i = 0; $i <= 10; $i += 2){ echo $i . "<br>"; } ?> Este código mostrará o seguinte resultado: 0 2 4 6 8 10 Observe que "$i += 2" é o mesmo que "$i = $i + 2". Com exceção da parte de testes, podemos inserir múltiplas expressões nas demais partes de um laço for. Veja: <? for($i = 0, $x = 2; $i <= 10; print ($i * $x) . "<br>", $i++); ?> Ao executarmos este laço, o resultado será: 0 2 4 6 8 10 12 14 16 18 20 Este último código é um pouco exótico, mas muito fácil de ser encontrado por aí. Esta dica foi revisada, atualizada e testada no PHP 8. |
Java ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Como implementar a ordenação Quicksort em Java - Apostila de Java para iniciantesQuantidade de visualizações: 423 vezes |
A ordenação Quicksort é um dos algorítmos de ordenação mais encontrados em aplicações reais de programação. No Delphi esta ordenação é encontrada no objeto TList. No Java podemos encontrá-lo no método Arrays.sort(). Na linguagem C a ordenação Quicksort é implementada na função qsort() da biblioteca padrão. O algoritmo de ordenação Quicksort é do tipo dividir para conquistar (divide-and-conquer principle). Neste tipo de algoritmo o problema é dividido em sub-problemas e a solução é concatenada quando as chamadas recursivas atingirem o caso base. O vetor (ou array) a ser ordenado é dividido em duas sub-listas por um elemento chamado pivô, resultando em uma lista com elementos menores que o pivô e outra lista com os elementos maiores que o pivô. Esse processo é repetido para cada chamada recursiva. Sim, a ordenação Quicksort faz uso extensivo de recursividade, razão pela qual devemos ter muito cuidado para não estourar a pilha do sistema. Existem muitos estudos sobre o pivô ideal para a ordenação Quicksort. Nessa dica adotarei o último elemento do array ou sub-array como pivô. Em vetores não ordenados essa estratégia, em geral, resulta em uma boa escolha. Vamos ao código Java então? Veja um programa Java completo demonstrando o uso da ordenação Quicksort para um array de 10 elementos inteiros: package estudos; import java.util.Scanner; public class Estudos { public static void main(String[] args) { // vamos declarar um array de 10 elementos int valores[] = new int[10]; // para ler a entrada do usuário Scanner entrada = new Scanner(System.in); // vamos pedir ao usuário para informar os valores para o vetor for(int i = 0; i < valores.length; i++){ System.out.print("Informe o valor do elemento " + i + ": "); valores[i] = Integer.parseInt(entrada.nextLine()); } // vamos mostrar o array informado System.out.println("\nO array informado foi:\n"); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } // vamos ordenar o vetor usando a ordenação Quicksort quickSort(valores, 0, valores.length - 1); System.out.println("\n\nO array ordenado é:\n"); for(int i = 0; i < valores.length; i++){ System.out.print(valores[i] + " "); } System.out.println("\n\n"); } // função de implementação da ordenação Quicksort public static void quickSort(int vetor[], int inicio, int fim) { // o início é menor que o fim? if (inicio < fim) { // vamos obter o novo índice da partição int indiceParticao = particionar(vetor, inicio, fim); // efetuamos novas chamadas recursivas quickSort(vetor, inicio, indiceParticao - 1); quickSort(vetor, indiceParticao + 1, fim); } } // função que retorna o índice de partição private static int particionar(int vetor[], int inicio, int fim) { // para guardar o pivô int pivot = vetor[fim]; int i = (inicio - 1); for (int j = inicio; j < fim; j++) { if (vetor[j] <= pivot) { i++; // fazemos a troca int temp = vetor[i]; vetor[i] = vetor[j]; vetor[j] = temp; } } // efetua a troca int temp = vetor[i + 1]; vetor[i + 1] = vetor[fim]; vetor[fim] = temp; return i + 1; } } Ao executar este código Java nós teremos o seguinte resultado: Informe o valor do elemento 0: 7 Informe o valor do elemento 1: 2 Informe o valor do elemento 2: 43 Informe o valor do elemento 3: 1 Informe o valor do elemento 4: 9 Informe o valor do elemento 5: 6 Informe o valor do elemento 6: 22 Informe o valor do elemento 7: 3 Informe o valor do elemento 8: 37 Informe o valor do elemento 9: 5 O array informado foi: 7 2 43 1 9 6 22 3 37 5 O array ordenado é: 1 2 3 5 6 7 9 22 37 43 |
Nossas 20 dicas & truques de programação mais populares |
MySQL - Como formatar campos DATE, TIME, DATETIME e TIMESTAMP usando a função DATE_FORMAT() do MySQL C# - Como detectar a mudança de estado da CheckBox do C# Windows Forms usando o evento CheckedChanged |
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 |