Programa que gera Progressão Geométrica em Fortran

Progressão Geométrica em Fortran

Neste tutorial vamos criar um pequeno programa em Fortran para exibir os elementos de uma progressão geométrica, com base em parâmetros fornecidos pelo usuário em tempo de execução.

O que é uma Progressão Geométrica?

Progressão geométrica (PG) é uma sequência numérica em que cada termo, a partir do segundo, é obtido multiplicando o termo anterior por uma constante chamada de “razão”.

Matematicamente, uma progressão geométrica pode ser representada da seguinte forma:

a, ar, ar2, ar3, …

Onde:

  • a é o primeiro termo da progressão.
  • r é a razão da progressão, que é um número constante.
  • ar é o segundo termo da progressão.
  • ar2 é o terceiro termo da progressão.

E assim por diante.

Em uma progressão geométrica, a razão r determina como os termos subsequentes são calculados a partir do termo anterior. Se r for maior que 1, a progressão será crescente, e se r estiver entre -1 e 1 (exclusivamente), a progressão será decrescente.

Se r for igual a 1, todos os termos serão iguais, formando uma sequência constante.

Onde usamos Progressão Geométrica?

As progressões geométricas são usadas em várias áreas da matemática e das ciências em geral para modelar crescimento exponencial, decaimento e fenômenos relacionados à multiplicação ou divisão por uma constante fixa em cada etapa.

São frequentemente aplicadas em finanças, física, biologia, engenharia e muitos outros campos.

Vejamos como implementar um programa em linguagem Fortran que nos permite calcular e exibir os termos de uma progressão geométrica, com base nos valores de termo inicial e razão informados pelo usuário.

Código

PROGRAM ProgressaoGeometrica

  IMPLICIT NONE

  INTEGER :: n
  REAL(8) :: a, r
  INTEGER :: i

  WRITE (*,*) 'Programa para calcular e mostrar uma Progressão Geométrica'
  WRITE (*,*) 'Digite o primeiro termo (a):'
  READ(*, *) a
  WRITE (*,*) 'Digite a razão (r):'
  READ(*, *) r
  WRITE (*,*) 'Digite o número de termos (n):'
  READ(*, *) n

  IF (n <= 0) THEN
    WRITE (*,*) 'O número de termos deve ser maior que zero.'
    STOP
  END IF

  WRITE (*,*) 'Os', n, 'primeiros termos da Progressão Geométrica são:'

  DO i = 1, n
    WRITE (*,*) 'Termo ', i, ': ', a
    a = a * r ! Calcula o próximo termo
  END DO

END PROGRAM ProgressaoGeometrica

Teste

Programa para calcular e mostrar uma Progressão Geométrica
Digite o primeiro termo (a):
5
Digite a razão (r):
2
Digite o número de termos (n):
10

Os 10 primeiros termos da Progressão Geométrica são:
Termo 1 : 5.0000000000000000 
Termo 2 : 10.000000000000000 
Termo 3 : 20.000000000000000 
Termo 4 : 40.000000000000000 
Termo 5 : 80.000000000000000 
Termo 6 : 160.00000000000000 
Termo 7 : 320.00000000000000 
Termo 8 : 640.00000000000000 
Termo 9 : 1280.0000000000000 
Termo 10 : 2560.0000000000000 

Funcionamento do programa Fortran para calcular e mostrar uma progressão geométrica

IMPLICIT NONE: Essa instrução força a declaração explícita de todas as variáveis, que é uma boa prática para evitar erros de tipo.

Logo a seguir temos a declaração das variáveis usadas no programa:

  • INTEGER :: n: Essa variável inteira será usada para armazenar o número de termos da progressão geométrica.
  • REAL(8) :: a, r: a é o primeiro termo da progressão e r é a razão. Ambos são números reais com precisão dupla (REAL(8)).
  • INTEGER :: i: Essa variável será usada como um contador em um loop.

Configuramos então algumas mensagens de  introdução

WRITE (*,*) ‘Programa para calcular e mostrar uma Progressão Geométrica’: Isso exibe uma mensagem informativa para o usuário no console.
WRITE (*,*) ‘Digite o primeiro termo (a):’, WRITE (*,*) ‘Digite a razão (r):’, WRITE (*,*) ‘Digite o número de termos (n):’: Essas mensagens solicitam ao usuário que insira o valor do primeiro termo (a), a razão (r) e o número de termos (n) da progressão geométrica.

Lógica principal do programa:

IF (n <= 0) THEN: Esta estrutura condicional verifica se o número de termos (n) é menor ou igual a zero.
WRITE (*,*) ‘O número de termos deve ser maior que zero.’: Se o número de termos for menor ou igual a zero, o programa exibe uma mensagem de erro.
STOP: A instrução STOP encerra a execução do programa.

Mensagem de exibição dos termos da progressão

WRITE (*,*) ‘Os’, n, ‘primeiros termos da Progressão Geométrica são:’: Esta linha de código exibe uma mensagem indicando que os termos da progressão geométrica serão exibidos a seguir.

Laço de repetição para o cálculo e exibição dos valores:

DO i = 1, n: Inicia um laço DO que vai de 1 até n. Isso permitirá que o programa calcule e exiba os primeiros n termos da progressão geométrica.
WRITE (*,*) ‘Termo ‘, i, ‘: ‘, a: Dentro do laço, o programa exibe o número do termo (contado pelo índice i) e o valor do termo atual (a) no console.
a = a * r: O valor do termo atual (a) é multiplicado pela razão (r) para calcular o próximo termo da progressão geométrica.

Finalização do Programa:

O programa atinge o final do laço após calcular e exibir os n termos da progressão, e então é encerrado com a instrução END PROGRAM.

Conclusão

Neste artigo apresentamos uma sugestão de programa em linguagem Fortran que solicita ao usuário o primeiro termo (a) de uma progressão geométrica, a razão (r) e o número de termos (n) desejados. Em seguida, ele verifica se o número de termos é válido, e se for, calcula e exibe os primeiros n termos da progressão geométrica.

Cada termo é calculado multiplicando o termo anterior pela razão r. O programa usa um laço de repetição DO para repetir essa operação e a exibição até que todos os termos sejam processados.

É isso aí! Veja também: Como calcular Fatorial com Fortran.

Sobre Fábio dos Reis (1207 Artigos)
Fábio dos Reis trabalha com tecnologias variadas há mais de 30 anos, tendo atuado nos campos de Eletrônica, Telecomunicações, Programação de Computadores e Redes de Dados. É um entusiasta de Ciência e Tecnologia em geral, adora Viagens e Música, e estuda idiomas, além de ministrar cursos e palestras sobre diversas tecnologias em São Paulo e outras cidades do Brasil.

Escreva um comentário

Seu e-mail não será divulgado


*