Você está aqui: Delphi ::: Dicas & Truques ::: Recursão (Recursividade) |
Como calcular fatorial em Delphi usando recursividadeQuantidade de visualizações: 12983 vezes |
O fatorial de um determinado número, representado por n! equivale a multiplicar este número por seus antecessores. Assim, o fatorial de 4 (4!) pode ser calculado da seguinte forma: 4 x 3 x 2 x 1 = 24 Sempre que falamos de recursão, o cálculo de fatorial nos auxilia na exemplicação por ser relativamente fácil de se entender todas as etapas do processo. O código abaixo mostra uma função recursiva em Delphi que calcula o fatorial de qualquer número. Tenha cuidado. Calcular o fatorial de um número maior que 10 pode tornar sua máquina extremamente lenta, além de, muitas vezes, não retornar os resultados esperados. ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- // função recursiva para calcular o fatorial // de um determinado número function fatorial(n: Integer): Integer; begin if n = 0 then Result := 1 else Result := n * fatorial(n - 1); end; // vamos chamar a função recursiva // a partir do Click de um botão procedure TForm1.Button1Click(Sender: TObject); var res: Integer; begin // vamos calcular o fatorial de 5 res := fatorial(5); // vamos mostrar o resultado ShowMessage('O fatorial de 5 é: ' + IntToStr(res)); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Link para compartilhar na Internet ou com seus amigos: |
Delphi ::: VCL - Visual Component Library ::: TStringGrid |
Como definir a altura padrão das linhas em um TStringGrid do Delphi usando a propriedade DefaultRowHeightQuantidade de visualizações: 10738 vezes |
A propriedade DefaultRowHeight é útil quando queremos obter ou definir a altura padrão das linhas de um TStringGrid. Por padrão, o valor desta propriedade é 24 pixels. Veja no trecho de código abaixo como o valor desta propriedade é obtido: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin // vamos obter a altura padrão das linhas // do TStringGrid Memo1.Lines.Add('A altura padrão das linhas do TStringGrid é: ' + IntToStr(StringGrid1.DefaultRowHeight)); end; Ao executar este trecho de código você terá o seguinte resultado: A altura padrão das linhas do TStringGrid é: 24. Podemos definir a altura padrão das linhas do TStringGrid em tempo de design ou execução simplemente definindo um valor inteiro para sua propriedade DefaultRowHeight. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); begin // vamos definir a altura padrão das linhas // do TStringGrid StringGrid1.DefaultRowHeight := 50; end; Quando novas linhas são adicionadas por meio da propriedade RowCount, suas alturas serão aquelas da propriedade DefaultRowHeight. |
Delphi ::: VCL - Visual Component Library ::: TListBox |
Como obter o índice do item selecionado em uma ListBox do Delphi usando a propriedade ItemIndex da classe TListBoxQuantidade de visualizações: 14837 vezes |
Muitas vezes precisamos saber o índice do item atualmente selecionado em uma ListBox. Para isso podemos obter o valor da propriedade ItemIndex. Esta propriedade retorna um valor inteiro correspondente ao índice do item selecionado. O primeiro item da lista possui o índice 0. Se nenhum item estiver selecionado, ItemIndex retorna -1. Veja o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button2Click(Sender: TObject); var indice: Integer; begin // vamos obter o índice do item selecionado na ListBox indice := ListBox1.ItemIndex; // mostra o resultado ShowMessage('O índice do item selecionado é: ' + IntToStr(indice)); end; Note que esta propriedade não se aplica às ListBoxes de seleção múltipla. Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Delphi ::: Dicas & Truques ::: Rotinas de Conversão |
Como converter uma string em um valor numérico de ponto-flutuante (com parte fracionária) em Delphi usando as funções StrToFloat(), TryStrToFloat() e StrToFloatDef()Quantidade de visualizações: 24777 vezes |
Em algumas situações precisamos converter strings em valores numéricos do tipo ponto-flutuante, ou seja, números que contenham uma parte fracionária. Isso acontece quando recebemos valores de caixas de texto e precisamos usuá-los em cálculos. Vamos começar com a função StrToFloat() da unit SysUtils. Esta função recebe uma string representando um valor de ponto-flutuante válido e retorna um valor de ponto-flutuante. Veja o exemplo: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var valor1, valor2, soma: Double; begin // vamos receber as strings dos TEdits e converter // seus valores para números de ponto-flutuante // note que em Delphi, um valor de ponto-flutuante // é informado em caixas de texto usando vírgula. Ex: 7,3 valor1 := StrToFloat(Edit1.Text); valor2 := StrToFloat(Edit2.Text); // vamos obter a soma dos dois valores soma := valor1 + valor2; // vamos exibir o resultado. Note o uso de FloatToStr() para // converter o valor fracionário em string ShowMessage('A soma é: ' + FloatToStr(soma)); end; Note que, se a string sendo convertida possuir um valor de ponto-flutuante inválido, uma exceção do tipo EConvertError será lançada. Podemos evitar isso usando a função TryStrToFloat(). Esta função recebe dois argumentos: a string a ser convertida e a variável do tipo Extended, Double ou Single que receberá o valor. O resultado será true se a conversão for feita com sucesso e false em caso contrário. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var valor: Double; begin // vamos tentar converter o valor da caixa de texto // em um valor de ponto-flutuante if TryStrToFloat(Edit1.Text, valor) then ShowMessage('Conversão efetuada com sucesso.') else ShowMessage('Erro na conversão'); end; Há ainda uma terceira possibilidade: usar a função StrToFloatDef(). Esta função funciona exatamente da mesma forma que StrToFloat(), exceto que agora, se houver um erro de conversão, um valor de ponto-flutuante padrão será retornado. Veja: ---------------------------------------------------------------------- Se precisar de ajuda com o código abaixo, pode me chamar no WhatsApp +55 (62) 98553-6711 (Osmar) ---------------------------------------------------------------------- procedure TForm1.Button1Click(Sender: TObject); var valor: Double; begin // vamos converter o valor da caixa de texto // em um valor de ponto-flutuante. Se a conversão não puder // ser feita o valor 10,50 será atribuído à varial valor valor := StrToFloatDef(Edit1.Text, 10.50); // vamos exibir o resultado ShowMessage(FloatToStr(valor)); end; Para fins de compatibilidade, esta dica foi escrita usando Delphi 2009. |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Processos e técnicas construtivas de instalações elétricas e hidráulicas O projetista deve prezar pela compatibilização de projetos, de modo que os dispositivos elétricos e hidráulicos não se sobreponham aos elementos estruturais e arquitetônicos. Analise as afirmativas a seguir, referentes à compatibilização de projetos e à sua relação com as instalações elétricas. I. As instalações elétricas aparentes devem, sempre, ser executadas com eletrodutos flexíveis, pois estes são mais adequados à geometria do substrato quando comparados aos eletrodutos rígidos. II. A realização de cortes e rasgos em paredes de alvenaria, muito comum no cotidiano da engenharia, pode prejudicar o desempenho e a durabilidade do elemento de vedação e do ambiente interno da edificação. III. As instalações elétricas podem ser executadas de forma aparente, sob a laje de concreto, sendo recobertas, em seguida, por forros suspensos de gesso, de modo a manter a instalação escondida. IV. As instalações elétricas podem ser executadas no interior de paredes drywall; contudo, essa técnica resulta em elevado desperdício de material, em virtude dos cortes e rasgos nas placas de gesso acartonado. Assinale a alternativa que apresenta somente a(s) afirmativa(s) correta(s). A) Apenas a afirmativa I está correta. B) Apenas a afirmativa III está correta. C) Apenas as afirmativas II e III estão corretas. D) Apenas as afirmativas I, II e IV estão corretas. E) As afirmativas I, II, III e IV estão corretas. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em |
Domínios de Deformações O dimensionamento de uma seção transversal de um elemento linear concreto armado, sujeito a solicitações normais, de acordo com a NBR 6118 - "Projeto de estruturas de concreto" - é realizado com base em hipóteses básicas. A respeito dessas hipóteses, analise as informações a seguir, indicando V para as verdadeiras e F para as falsas: ( ) A distribuição das deformações ocorre de forma não linear ao longo da altura da seção. ( ) As deformações nas barras de armadura são idênticas às deformações do concreto que as envolve. ( ) Admite-se que todas as tensões de tração existentes serão resistidas pelo concreto e pela armadura. ( ) Adota-se o diagrama parábola-retângulo idealizado para o concreto comprimido. Assinale a alternativa que contém a sequência correta: A) V - V - F - F. B) V - F - F - F. C) F - V - F - V. D) F - V - V - V. E) V - F - F - V. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Engenharia Civil - Construção Civil |
Alvenaria: Técnicas construtivas Durante o levantamento, devemos aferir o nivelamento e o prumo de uma parede em blocos cerâmicos: A) Somente se houver um embarrigamento ou desnivelamento visível. B) Ao levantar 1,0 m a parede. C) Somente na última fiada. D) A cada fiada executada. E) A cada 3 fiadas executadas. Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Java |
Analise o seguinte código Javaint a = 3 / 0; System.out.println(a); Qual é o resultado de sua execução? A) Infinity B) NaN C) Uma exceção java.lang.ArithmeticException: / by zero D) 0 Verificar Resposta Estudar Cards Todas as Questões |
Vamos testar seus conhecimentos em Hidrologia |
O método racional é muito utilizado na determinação de vazão máxima de projeto para pequenas bacias hidrográficas. Uma bacia hidrográfica com área de 100 ha, coeficiente de escoamento médio de 0,6, recebeu uma precipitação intensa de 120 mm/h, resultando em uma vazão de pico de 20 m3/s. Qual a vazão de pico para a mesma bacia hidrográfica se ocorresse uma precipitação de 90 mm/h. A) 30 m3/s. B) 20 m3/s. C) 10 m3/s. D) 5 m3/s. E) 15 m3/s. Verificar Resposta Estudar Cards Todas as Questões |
Desafios, Exercícios e Algoritmos Resolvidos de Delphi |
Veja mais Dicas e truques de Delphi |
Dicas e truques de outras linguagens |
Códigos Fonte |
Software de Gestão Financeira com código fonte em PHP, MySQL, Bootstrap, jQuery - Inclui cadastro de clientes, fornecedores e ticket de atendimento Diga adeus às planilhas do Excel e tenha 100% de controle sobre suas contas a pagar e a receber, gestão de receitas e despesas, cadastro de clientes e fornecedores com fotos e histórico de atendimentos. Código fonte completo e funcional, com instruções para instalação e configuração do banco de dados MySQL. Fácil de modificar e adicionar novas funcionalidades. Clique aqui e saiba mais |
Controle de Estoque completo com código fonte em PHP, MySQL, Bootstrap, jQuery - 100% funcional e fácil de modificar e implementar novas funcionalidades Tenha o seu próprio sistema de controle de estoque web. com cadastro de produtos, categorias, fornecedores, entradas e saídas de produtos, com relatórios por data, margem de lucro e muito mais. Código simples e fácil de modificar. Acompanha instruções para instalação e criação do banco de dados MySQL. Clique aqui e saiba mais |
Linguagens Mais Populares |
1º lugar: Java |