![]() |
|
||||
![]() Planilha Web - Planilhas e Calculadoras online para estudantes e profissionais de Engenharia Civil, Engenharia Elétrica e Engenharia Mecânica. |
|||||
Java ::: Dicas & Truques ::: Data e Hora |
Como retornar a diferença de meses entre duas datas em Java - Datas e horas em JavaQuantidade de visualizações: 9456 vezes |
O trecho de código abaixo mostra como obter a diferença de meses entre dois objetos Date. Estude-o atentamente. Esta é uma técnica muito útil para programadores que lidam com cálculos de datas em suas aplicações:package arquivodecodigos; import java.util.*; import java.text.*; public class Estudos{ public static void main(String args[]){ try{ // constrói a primeira data DateFormat fm = new SimpleDateFormat( "dd/MM/yyyy"); Date data1 = (Date)fm.parse("20/10/2008"); // constrói a segunda data fm = new SimpleDateFormat("dd/MM/yyyy"); Date data2 = (Date)fm.parse("30/12/2008"); // vamos obter a diferença de meses long segundos = (data2.getTime() - data1.getTime()) / 1000; int meses = (int)Math.floor(segundos / 2592000); segundos -= meses * 2592000; int dias = (int)Math.floor(segundos / 86400); // exibe o resultado System.out.println("As duas datas tem " + meses + " meses e " + dias + " dias de diferença"); } catch(ParseException e){ e.printStackTrace(); } } } Ao executar este código Java nós teremos o seguinte resultado: As duas datas tem 2 meses e 11 dias de diferença |
C# ::: Windows Forms ::: DataGridView |
Como retornar a linha da célula selecionada em um DataGridView do C# Windows FormsQuantidade de visualizações: 23979 vezes |
Muitas vezes precisamos obter a linha atual de uma determinada célula selecionada no DataGridView. Isso pode ser feito por meio da propriedade CurrentRow. Esta propriedade retorna um objeto da classe DataGridViewRow, que representa uma linha no DataGridView. Podemos usar esta classe para obter o índice da linha que contém a célula selecionada, percorrer todas as células de uma determinada linha, etc. Veja um trecho de código no qual usamos a propriedade CurrentRow para obter o DataGridViewRow representando a linha da célula selecionada: private void button3_Click(object sender, EventArgs e){ // vamos obter a linha da célula selecionada DataGridViewRow linhaAtual = dataGridView1.CurrentRow; // vamos exibir o índice da linha atual int indice = linhaAtual.Index; MessageBox.Show("O índice da linha atual é: " + indice); } |
Python ::: Desafios e Lista de Exercícios Resolvidos ::: Recursão (Recursividade) |
Exercícios Resolvidos de Python - Uma função recursiva que conta quantas vezes um valor inteiro k ocorre em um vetor de inteirosQuantidade de visualizações: 655 vezes |
Pergunta/Tarefa: Escreva uma função recursiva em Python que conta quantas vezes um valor inteiro k ocorre em um vetor de 10 inteiros. Sua função deverá ter a seguinte assinatura: # função recursiva que recebe um valor e informa quantas vezes # ele aparece no vetor também informado def quant_repeticoes(indice, valor, vetor): # sua implementação aqui Sua saída deverá ser parecida com: Informe o 1 valor: 2 Informe o 2 valor: 7 Informe o 3 valor: 4 Informe o 4 valor: 7 Informe o 5 valor: 1 Informe o valor a ser pesquisado no vetor: 7 O valor informado se repete 2 vezes. Veja a resolução comentada deste exercício usando Python: # método principal def main(): # vamos declarar um vetor de 10 inteiros valores = [0 for x in range(5)] # vamos pedir ao usuário que informe os valores do vetor for i in range(len(valores)): valores[i] = int(input("Informe o %d.o valor: " % ((i + 1)))) # agora vamos pedir para informar o valor a ser pesquisado valor = int(input("\nInforme o valor a ser pesquisado no vetor: ")) # e vamos ver a quantidade de repetições repeticoes = quant_repeticoes(0, valor, valores) print("O valor informado se repete {0} vezes.".format(repeticoes)) # função recursiva que recebe um valor e informa quantas vezes # ele aparece no vetor também informado def quant_repeticoes(indice, valor, vetor): if indice == len(vetor) - 1: # caso base...hora de parar a recursividade if vetor[indice] == valor: return 1 # mais um repetição foi encontrada else: # dispara mais uma chamada recursiva if vetor[indice] == valor: # houve mais uma repetição return 1 + quant_repeticoes(indice + 1, valor, vetor) else: return 0 + quant_repeticoes(indice + 1, valor, vetor) # não repetiu return 0 # só para deixar o compilador satisfeito...esta linha nunca é executada if __name__== "__main__": main() |
PHP ::: Dicas & Truques ::: Arquivos e Diretórios |
Quais as diferenças entre as funções fgetc(), fread() e fgets() da linguagem PHP? - RevisadoQuantidade de visualizações: 15845 vezes |
As funções fgetc(), fread() e fgets() do PHP nos permitem fazer a leitura de caracteres, palavras, textos e bytes de um arquivo. No entanto, nem sempre os iniciantes nesta linguagem conseguem identificar as diferenças entre essas três funções. Nessa dica falarei sobre o que diferencia uma da outra. Em mais dicas e truques dessa seção você aprenderá como usá-las. A função fgetc() lê um caractere por vez em um arquivo. Sua assinatura é: string fgetc(resource $handle) A função fgets(), por sua vez, retorna uma linha de texto de cada vez. Veja a assinatura: string fgets(resource $handle [, int $length]) O parâmetro $length pode ser omitido, o que significa que o tamanho da linha será definindo pela ocorrência de uma quebra de linha "\n". Já a função fread() permite ler uma determinada quantidade de bytes de um arquivo. Sua assinatura é: string fread(resource $handle, int $length) O parâmetro $length indica a quantidade de bytes que serão lidos, de cada vez, do arquivo. Esta dica foi revisada para o PHP 8. |
Delphi ::: Dicas & Truques ::: Rotinas de Conversão |
Como converter um valor inteiro em um caractere usando a função Chr() do DelphiQuantidade de visualizações: 14402 vezes |
Em algumas situações precisamos converter um valor inteiro em um caractere, ou seja, uma letra, símbolo, dígito, etc. Para isso podemos usar a função Chr() do Delphi. Esta função recebe um valor inteiro e retorna seu caractere correspondente de acordo com a tabela ASCII. Vamos ver um exemplo? Eis um trecho de código que declara uma variável do tipo Integer e depois a converte para um caractere: procedure TForm3.Button2Click(Sender: TObject); var valor: Integer; letra: Char; begin // vamos atribuir à variável valor o número 70 valor := 70; // vamos converter este valor para um caractere // o resultado será a letra F letra := Chr(valor); // vamos mostrar o resultado ShowMessage(letra); end; Ao executar este código teremos o valor 70 convertido para a letra "F". Note que também é possível converter um valor inteiro em um caractere usando uma conversão forçada (cast) para o tipo Char. Veja: procedure TForm3.Button2Click(Sender: TObject); var valor: Integer; letra: Char; begin // vamos atribuir à variável valor o número 70 valor := 70; // vamos converter este valor para um caractere // o resultado será a letra F letra := Char(valor); // vamos mostrar o resultado ShowMessage(letra); end; Neste segundo trecho de código nós conseguimos o mesmo resultado do código anterior, mas, sem usar a função Chr(). |
VisuAlg ::: Desafios e Lista de Exercícios Resolvidos ::: VisuAlg Básico |
Exercício Resolvido de VisuAlg - Escreva um programa VisuAlg que leia um número inteiro e informe se ele é par ou ímparQuantidade de visualizações: 1082 vezes |
Pergunta/Tarefa: Escreva um algorítmo em VisuAlg que pede para o usuário informar um número inteiro. Depois da leitura do número digitado, informe se ele é par ou ímpar. Sua saída deverá ser parecida com: Informe um número: 14 O número é par Veja a resolução comentada deste exercício usando VisuAlg: Algoritmo "Um algorítmo para tstar se um número é par ou ímpar" Var // variáveis usadas na resolução do problema numero: inteiro Inicio // vamos pedir para o usuário informar o número escreva("Informe um número: ") leia(numero) // vamos testar se o número é par ou ímpar se numero mod 2 = 0 entao escreval("O número é par") senao escreval("O número é ímpar") fimse Fimalgoritmo Na versão 3.0.7.0 do VisuAlg nós podemos usar "mod" ou "%" para representar o operador de módulo. Por favor, verifique qual o operador suportado pela sua versão. |
Ruby ::: Dicas & Truques ::: Arquivos e Diretórios |
Como testar se um diretório existe em Ruby usando a função File.exist()Quantidade de visualizações: 6738 vezes |
Em algumas situações nós precisamos testar a existência de um diretório na linguagem Ruby. Para isso nós podemos usar a função File.exist?(), que nos retorna um valor True se o diretório existir e False em caso contrário. Veja o código Ruby completo para o exemplo: # nome e caminho do diretório a ser testado diretorio = "C:\\estudos_ruby\\escola" if File.exist? diretorio puts "O diretório existe" else puts "O diretório não existe" end Ao executar este código Ruby nós teremos o seguinte resultado: O diretório existe |
Python ::: Dicas & Truques ::: Ordenação e Pesquisa (Busca) |
Como usar a busca binária em Python - Pesquisa binária na linguagem PythonQuantidade de visualizações: 748 vezes |
A busca binária, ou pesquisa binária, é um algoritmo eficiente para encontrar um item em uma lista (vetor ou array) ordenada. Sim, os itens devem, obrigatoriamente, estar ordenados. O processo é bem simples. A busca binária começa a partir do meio da lista e compara o item nesta posição com o valor sendo pesquisado. Se o valor não for encontrado e for menor que o item no meio da lista, o algoritmo passa para a porção à esquerda da lista, eliminando, assim, metade dos elementos do vetor ou array (a porção maior que o valor pesquisado). Se o valor não for encontrado e for maior que o item no meio da lista, então a busca reinicia a partir da metade da sub-lista à direita (os itens maiores que o valor pesquisado). Essa divisão continua até que o valor seja encontrado ou não seja mais possível dividir a lista pela metade. Se um array ou vetor possuir 100 elementos e usarmos a busca binária nele, precisaremos efetuar no máximo 7 tentativas para encontrar o valor desejado. Se a lista possuir 4 bilhões de itens nós teremos que fazer no máximo 32 tentativas. Isso acontece porque a pesquisa binária é executada em tempo logarítmico, ou seja, log2 n, onde n é a quantidade de itens no vetor. Dessa forma, se tivemos 1.000 itens em um array, log2 1000 = 10 tentativas. Lembre-se de que, na programação log e log2 retornam resultados diferentes: log(10) = 2.302585092994046 enquanto log2(10) = 3.321928094887362. Na análise da busca binária nós usamos sempre log2. Vamos agora ver como podemos codificar a busca binária em Python. Veja o código a seguir: # função principal do programa def main(): # vamos criar uma lista ordenada de inteiros valores = [3, 5, 7, 8, 9, 12, 43, 50, 52, 60] print("Os valores da lista são: {0}".format(valores)) # vamos pedir o item a ser pesquisado numero = int(input("Informe o número a ser pesquisado: ")) # agora vamos pesquisar o número no array usando a pesquisa # binária # a variável esquerda aponta para o primeiro elemento do vetor esquerda = 0 # a variável direita aponta para o último elemento do vetor direita = len(valores) - 1 # para indicar se o valor foi encontrado encontrado = False # enquanto houver mais de um elemento a ser comparado while esquerda <= direita: # obtemos o elemento na metade da lista meio = (esquerda + direita) // 2 # fazemos a comparação if numero == valores[meio]: print("O número foi encontrado no índice {0}".format( meio)) encontrado = True break # sai do laço # o item atual é maior que o valor pesquisado? if valores[meio] > numero: direita = meio - 1 # o item atual é menor que o valor pesquisado? else: esquerda = meio + 1 # o valor foi encontrado? if not encontrado: print("O valor pesquisado não foi encontrado") if __name__== "__main__": main() Ao executar este código Python nós teremos o seguinte resultado: Os valores da lista são: [3, 5, 7, 8, 9, 12, 43, 50, 52, 60] Informe o número a ser pesquisado: 9 O número foi encontrado no índice 4 |
VBA ::: Dicas & Truques ::: Strings e Caracteres |
Como retornar o código ASCII associado a um caractere em VBA usando a função Asc()Quantidade de visualizações: 477 vezes |
Em algumas situações nós precisamos retornar o código ASCII associado a um determinado caractere. Em VBA nós podemos realizar essa tarefa usando a função Asc(), que recebe uma string representando uma letra, dígito ou símbolo e retorna o código numérico correspondente. Veja um trecho de código VBA no qual informamos a letra "A" e obtemos, como retorno, o código ASCII 65: ' Macro VBA Excel usada para converter um caractere ' em seu código ASCII Sub RetornarCodigoASCII() ' Variáveis usadas na resolução do problema Dim letra As String Dim codigo As Integer ' vamos pedir para o usuário informar um caractere letra = InputBox("Informe um caractere: ", "Código ASCII", 0) Debug.Print "Você informou o caractere: " & letra ' agora vamos obter o código ASCII correspondente codigo = Asc(letra) ' e mostramos o resultado Debug.Print "O código ASCII correspondente é: " & codigo End Sub Ao executarmos este código VBA nós teremos o seguinte resultado: O código ASCII correspondente é: 65 |
Java ::: Dicas & Truques ::: Programação Orientada a Objetos |
Como usar classes abstratas em Java - Programação Orientada a Objetos - Java POOQuantidade de visualizações: 21974 vezes |
Classes abstratas (abstract classes) não diferem muito das classes que normalmente criamos, ou seja, elas também podem possuir propriedades e métodos. Porém, não é possível criar instâncias de uma classe abstrata usando o operador new. Veja:abstract class Pessoa{ public String nome; public int idade; } public class Estudos{ public static void main(String args[]){ // cria um objeto da classe Pessoa Pessoa p = new Pessoa(); } } Ao tentarmos compilar este exemplo teremos a seguinte mensagem: Estudos.java:9: Pessoa is abstract; cannot be instantiated Pessoa p = new Pessoa(); ^ 1 error Classes abstratas geralmente contém métodos abstratos (ainda que métodos não abstratos sejam também permitidos). Um método abstrato é um método que possui apenas a assinatura. Não há implementação. Esta implementação deverá ser fornecida pela subclasse ou classe derivada. Uma classe que contém métodos abstratos deverá, obrigatoriamente, ser declarada abstrata. Veja um exemplo de um método abstrato: public abstract class Pessoa{ public abstract String getNome(); } Se a classe não fosse declarada com o modificador abstract, teríamos a seguinte mensagem de erro de compilação: Pessoa.java:1: Pessoa is not abstract and does not override abstract method getNome() in Pessoa public class Pessoa{ ^ 1 error Classes abstratas são um dos tópicos mais complicados da linguagem Java e uma dor de cabeça enorme para aqueles que estão estudando para a certificação Java. Mostramos abaixo algumas dicas resultantes de nossas pesquisas sobre o assunto. 1)Uma classe não abstrata não pode conter métodos abstratos. Se uma classe concreta (não abstrata) herda de uma classe abstrata e não implementa todos os métodos abstratos, a classe derivada deve ser declarada abstract. Além disso, métodos abstratos não podem ser marcados como static. Insistir nisso pode gerar a seguinte mensagem de erro de compilação: Pessoa.java:2: illegal combination of modifiers: abstract and static public static abstract String getNome(); ^ 2) Embora uma classe abstrata não possa ser instanciada usando o operador new, ela pode conter construtores. Tais construtores serão invocados nos construtores das classes derivadas. 3) Uma subclasse pode ser abstrata até mesmo se sua superclasse for concreta. E isso é fácil de notar, uma vez que todas as classes Java herdam de Object, que é concreta. 4) Uma classe derivada pode sobrescrever um método de sua superclasse e declará-lo abstract. Isso faz sentido quando a classe derivada for abstract e quiser tornar o método herdado inválido. 5) Embora uma classe abstrata não possa ser instanciada usando o operador new, ela pode ser usada como um tipo de dados. Esta técnica é útil quando parte do time de desenvolvedores precisa adiantar códigos que dependem de classes que ainda não foram implementadas (e, portanto, herdarão das classes abstratas usadas como tipos de dados) por outra parte do mesmo time. |
Nossas 20 dicas & truques de programação mais populares |
Java - Como usar null em Java C# - Como ordenar alfabeticamente os itens de uma ListBox do C# Windows Forms usando a propriedade Sorted |
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 |