 
<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://www.adonaimedrado.pro.br/wiki/index.php?action=history&amp;feed=atom&amp;title=F90%3A_Programa_de_PA_e_PG</id>
		<title>F90: Programa de PA e PG - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://www.adonaimedrado.pro.br/wiki/index.php?action=history&amp;feed=atom&amp;title=F90%3A_Programa_de_PA_e_PG"/>
		<link rel="alternate" type="text/html" href="https://www.adonaimedrado.pro.br/wiki/index.php?title=F90:_Programa_de_PA_e_PG&amp;action=history"/>
		<updated>2026-05-27T00:20:45Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.26.2</generator>

	<entry>
		<id>https://www.adonaimedrado.pro.br/wiki/index.php?title=F90:_Programa_de_PA_e_PG&amp;diff=872&amp;oldid=prev</id>
		<title>Adonaimedrado: New page: Este programa foi desenvolvido pelos alunos Alberto Rocha da Silva, Calos Alberto, Rafael Santos da Costa e Ruy Pereira durante a disciplina Processamento de Dados (UFBA 2008.2). Data da a...</title>
		<link rel="alternate" type="text/html" href="https://www.adonaimedrado.pro.br/wiki/index.php?title=F90:_Programa_de_PA_e_PG&amp;diff=872&amp;oldid=prev"/>
				<updated>2008-11-30T20:56:07Z</updated>
		
		<summary type="html">&lt;p&gt;New page: Este programa foi desenvolvido pelos alunos Alberto Rocha da Silva, Calos Alberto, Rafael Santos da Costa e Ruy Pereira durante a disciplina Processamento de Dados (UFBA 2008.2). Data da a...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;Este programa foi desenvolvido pelos alunos Alberto Rocha da Silva, Calos Alberto, Rafael Santos da Costa e Ruy Pereira durante a disciplina Processamento de Dados (UFBA 2008.2). Data da apresentação: 27/11/2008. &lt;br /&gt;
&lt;br /&gt;
&amp;lt;code lang=&amp;quot;fortran&amp;quot;&amp;gt;&lt;br /&gt;
PROGRAM paepg &lt;br /&gt;
  IMPLICIT NONE &lt;br /&gt;
  CALL MenuPrincipal() &lt;br /&gt;
CONTAINS &lt;br /&gt;
  SUBROUTINE MenuPrincipal() &lt;br /&gt;
    IMPLICIT NONE &lt;br /&gt;
    INTEGER :: opcao, erro &lt;br /&gt;
    Write (*,*) &amp;quot;1  Verificar se a serie e uma PA ou PG&amp;quot; &lt;br /&gt;
    Write (*,*) &amp;quot;2  Calculo da razao da PA&amp;quot; &lt;br /&gt;
    Write (*,*) &amp;quot;3  Calculo do ultimo termo da PA&amp;quot; &lt;br /&gt;
    Write (*,*) &amp;quot;4  Calculo da quantidade de termos da PA&amp;quot; &lt;br /&gt;
    Write (*,*) &amp;quot;5  Calculo da soma dos termos da PA&amp;quot; &lt;br /&gt;
    Write (*,*) &amp;quot;6  Calculo da razao da PG&amp;quot;&lt;br /&gt;
    Write (*,*) &amp;quot;7  Calculo do termo qualquer da PG&amp;quot;&lt;br /&gt;
    Write (*,*) &amp;quot;8  Calculo do termo medio da PG&amp;quot;&lt;br /&gt;
    Write (*,*) &amp;quot;9  Calculo da soma da PG finita&amp;quot;&lt;br /&gt;
    Write (*,*) &amp;quot;10 Calculo da soma da pg infinita&amp;quot;&lt;br /&gt;
    Write (*,*) &amp;quot;11 Calculo do produto da PG finita&amp;quot;&lt;br /&gt;
    Write (*,*) &amp;quot;12  Sair&amp;quot;  &lt;br /&gt;
    DO &lt;br /&gt;
      Read (*,*) opcao &lt;br /&gt;
      IF (opcao&amp;gt;= 1 .AND. Opcao&amp;lt;=12) THEN &lt;br /&gt;
        SELECT CASE (Opcao) &lt;br /&gt;
          CASE (1)&lt;br /&gt;
            CALL Verificaraserie()&lt;br /&gt;
          CASE (2)&lt;br /&gt;
            CALL Calculararazao() &lt;br /&gt;
          CASE (3)&lt;br /&gt;
            CALL Calcularultimotermo() &lt;br /&gt;
          CASE (4)  &lt;br /&gt;
            CALL Calcularquantidadedetermos() &lt;br /&gt;
          CASE (5) &lt;br /&gt;
            CALL Calcularasomadostermos() &lt;br /&gt;
          CASE (6)&lt;br /&gt;
            CALL Calcularrazaopg()&lt;br /&gt;
          CASE (7)&lt;br /&gt;
            CALL Calculartermoqualquerdapg()&lt;br /&gt;
          CASE (8)&lt;br /&gt;
            CALL Calculartermomediodapg()&lt;br /&gt;
          CASE (9)&lt;br /&gt;
            CALL Calcularsomapgfinita()&lt;br /&gt;
          CASE (10)&lt;br /&gt;
            CALL Calcularsomapginfinita()&lt;br /&gt;
          CASE (11)&lt;br /&gt;
            CALL Calcularprodutopgfinita()&lt;br /&gt;
          CASE (12)&lt;br /&gt;
            RETURN&lt;br /&gt;
        END SELECT &lt;br /&gt;
        EXIT &lt;br /&gt;
      END IF &lt;br /&gt;
    END DO &lt;br /&gt;
  END SUBROUTINE MenuPrincipal &lt;br /&gt;
  SUBROUTINE Verificaraserie() &lt;br /&gt;
    IMPLICIT NONE &lt;br /&gt;
    REAL :: a,b,c,r &lt;br /&gt;
    WRITE (*,*) &amp;quot;Digite o 1,2 e 3 termos de sua serie&amp;quot; &lt;br /&gt;
    READ (*,*) a,b,c &lt;br /&gt;
    IF (b-a==0 .AND. c-b==0) THEN &lt;br /&gt;
      WRITE(*,*) &amp;quot;A serie e uma PA constante&amp;quot; &lt;br /&gt;
    End IF &lt;br /&gt;
    IF (b-a&amp;lt;0 .AND. b-a==c-b) THEN &lt;br /&gt;
      WRITE(*,*) &amp;quot;A serie e uma PA decrescente&amp;quot; &lt;br /&gt;
    END IF &lt;br /&gt;
    IF (b-a&amp;gt;0 .AND. b-a==c-b) THEN &lt;br /&gt;
      WRITE(*,*) &amp;quot;A serie é uma PA crescente&amp;quot; &lt;br /&gt;
    END IF &lt;br /&gt;
    IF (b/a==1 .AND. b/a==c/b) THEN &lt;br /&gt;
      WRITE(*,*) &amp;quot;A serie e uma PG constante&amp;quot; &lt;br /&gt;
    END IF &lt;br /&gt;
    IF (b/a&amp;lt;0 .AND. b/a==c/b) THEN &lt;br /&gt;
      WRITE(*,*) &amp;quot;A serie e uma PG oscilante&amp;quot; &lt;br /&gt;
    END IF&lt;br /&gt;
    IF (b/a == c/b) THEN &lt;br /&gt;
      r=(b/a)&lt;br /&gt;
    END IF &lt;br /&gt;
    IF ((a&amp;gt;0 .AND. r&amp;gt;1) .OR. (a&amp;lt;0 .AND. r&amp;gt;0 .AND. r&amp;lt;1)) THEN &lt;br /&gt;
      WRITE(*,*) &amp;quot;A serie e uma PG crescente&amp;quot; &lt;br /&gt;
    END IF&lt;br /&gt;
    IF (b/a == c/b) THEN&lt;br /&gt;
      r= (b/a)&lt;br /&gt;
    END IF &lt;br /&gt;
    IF ((a&amp;lt;0 .AND. r&amp;gt;1) .OR. (a&amp;gt;0 .AND. r&amp;gt;0 .AND. r&amp;lt;1)) THEN &lt;br /&gt;
      WRITE(*,*) &amp;quot;A serie e uma PG decrescente&amp;quot; &lt;br /&gt;
    END IF &lt;br /&gt;
    IF (b-a/=c-b .AND. b/a /= c/b) THEN &lt;br /&gt;
      WRITE(*,*) &amp;quot;A serie nao e PA e nao e PG&amp;quot; &lt;br /&gt;
    END IF &lt;br /&gt;
  END SUBROUTINE verificaraserie &lt;br /&gt;
  SUBROUTINE Calculararazao() &lt;br /&gt;
    IMPLICIT NONE &lt;br /&gt;
    REAL :: a,b &lt;br /&gt;
    WRITE (*,*) &amp;quot;Digite o 1 e o 2 termo da PA&amp;quot; &lt;br /&gt;
    READ (*,*) a,b &lt;br /&gt;
    WRITE (*,*) &amp;quot;A razao e:&amp;quot;,b-a &lt;br /&gt;
  END SUBROUTINE Calculararazao &lt;br /&gt;
  SUBROUTINE Calcularultimotermo() &lt;br /&gt;
    IMPLICIT NONE &lt;br /&gt;
    REAL :: a,b &lt;br /&gt;
    INTEGER :: n &lt;br /&gt;
    WRITE (*,*) &amp;quot;Digite o 1 e o 2 termo da PA&amp;quot; &lt;br /&gt;
    READ (*,*) a,b &lt;br /&gt;
    WRITE (*,*) &amp;quot;Digite a quantidade de termos da PA&amp;quot; &lt;br /&gt;
    READ (*,*) n &lt;br /&gt;
    WRITE(*,*)  &amp;quot;O ultimo termo da PA e:&amp;quot;,a+(n-1)*(b-a) &lt;br /&gt;
  END SUBROUTINE Calcularultimotermo &lt;br /&gt;
  SUBROUTINE Calcularquantidadedetermos() &lt;br /&gt;
    IMPLICIT NONE &lt;br /&gt;
    REAL :: a,b,c,Q&lt;br /&gt;
    WRITE (*,*) &amp;quot;Digite o 1 e o ultimo termo da PA&amp;quot; &lt;br /&gt;
    READ (*,*) a,b &lt;br /&gt;
    WRITE (*,*) &amp;quot;Digite a razao da PA&amp;quot; &lt;br /&gt;
    READ (*,*) c&lt;br /&gt;
    Q = ((b-a)/c)+1&lt;br /&gt;
    IF (Q &amp;lt;= 0) THEN&lt;br /&gt;
      WRITE(*,*) &amp;quot;Os dados nao sao coerentes&amp;quot;&lt;br /&gt;
    ELSE&lt;br /&gt;
      WRITE (*,*) &amp;quot;A quantidade de termos da PA e:&amp;quot;,Q&lt;br /&gt;
    END IF&lt;br /&gt;
  END SUBROUTINE calcularquantidadedetermos &lt;br /&gt;
  SUBROUTINE Calcularasomadostermos()  &lt;br /&gt;
    IMPLICIT NONE &lt;br /&gt;
    REAL :: a,b &lt;br /&gt;
    INTEGER :: n &lt;br /&gt;
    WRITE (*,*) &amp;quot;Digite o 1 e o ultimo termo da PA&amp;quot; &lt;br /&gt;
    READ (*,*) a,b &lt;br /&gt;
    WRITE (*,*) &amp;quot;Digite a quantidade de termos da PA&amp;quot; &lt;br /&gt;
    READ (*,*) n &lt;br /&gt;
    WRITE(*,*) &amp;quot;A soma dos termos da PA e:&amp;quot;,(a+b)*n/2 &lt;br /&gt;
  END SUBROUTINE Calcularasomadostermos &lt;br /&gt;
  SUBROUTINE Calcularrazaopg()&lt;br /&gt;
    implicit none&lt;br /&gt;
    real :: a1,an,q&lt;br /&gt;
    integer :: n, ERRO&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;Digite o primeiro termo da P.G&amp;quot;&lt;br /&gt;
      read(*,*,IOstat=ERRO) a1&lt;br /&gt;
      write(*,*) &amp;quot;Digite um termo sucessor n do termo digitado&amp;quot;&lt;br /&gt;
      read(*,*,IOstat=ERRO) an&lt;br /&gt;
      if(a1==0 .or. an==0 .or. a1*an&amp;lt;=0) then&lt;br /&gt;
        write(*,*) &amp;quot;Numeros invalidos (a1 e an devem ser diferentes de zero e devem ter o mesmo sinal)&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;Informe o quanto o termo n sucede o primeiro termo&amp;quot;&lt;br /&gt;
      read(*,*,IOstat=ERRO) n&lt;br /&gt;
      if(n&amp;lt;=0) THEN&lt;br /&gt;
        write(*,*) &amp;quot;Numero Invalido(n&amp;gt;0)&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    q= ((an/a1)**(1/(n*1.0)))&lt;br /&gt;
    write(*,*) &amp;quot;A razao e&amp;quot;,q&lt;br /&gt;
  END SUBROUTINE Calcularrazaopg&lt;br /&gt;
  SUBROUTINE Calculartermoqualquerdapg()&lt;br /&gt;
    real :: a1, an, q, n&lt;br /&gt;
    do&lt;br /&gt;
      write (*,*) &amp;quot;Digite o primeiro termo da P.G.&amp;quot;&lt;br /&gt;
      read (*,*) a1&lt;br /&gt;
      if (a1 == 0) then&lt;br /&gt;
        write(*,*) &amp;quot;O numero e invalido&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    do&lt;br /&gt;
      write (*,*) &amp;quot;Digite a razao&amp;quot;&lt;br /&gt;
      read (*,*) q&lt;br /&gt;
      if (q == 1 .or. q &amp;lt;= 0) then&lt;br /&gt;
        write (*,*) &amp;quot;O numero e invalido&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    do&lt;br /&gt;
      write (*,*) &amp;quot;Digite o numero do termo desejado&amp;quot;&lt;br /&gt;
      read (*,*) n&lt;br /&gt;
      if (n &amp;lt;= 1) then&lt;br /&gt;
        write (*,*) &amp;quot;O numero e invalido&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    an = a1*q**(n-1)&lt;br /&gt;
    write (*,*) &amp;quot;O termo e igual a&amp;quot;,an&lt;br /&gt;
  END SUBROUTINE Calculartermoqualquerdapg&lt;br /&gt;
  SUBROUTINE Calculartermomediodapg()&lt;br /&gt;
    real:: a1, an, T&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;digite o primeiro termo&amp;quot;&lt;br /&gt;
      read(*,*) a1&lt;br /&gt;
      write(*,*) &amp;quot;digite o ultimo termo&amp;quot;&lt;br /&gt;
      read(*,*) an&lt;br /&gt;
      if(a1==0 .or. an==0 .or. a1*an&amp;lt;=0) then&lt;br /&gt;
        write(*,*) &amp;quot;Numeros invalidos&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    T=(a1*an)**(0.5)&lt;br /&gt;
    write(*,*) &amp;quot;O termo medio e&amp;quot;,T&lt;br /&gt;
  END SUBROUTINE Calculartermomediodapg&lt;br /&gt;
  SUBROUTINE Calcularsomapgfinita()&lt;br /&gt;
    IMPLICIT NONE&lt;br /&gt;
    real:: Sn, a1, q&lt;br /&gt;
    integer :: n&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;digite o termo inicial da P.G.&amp;quot;&lt;br /&gt;
      read(*,*) a1&lt;br /&gt;
      if (a1==0) then&lt;br /&gt;
        write(*,*) &amp;quot;Numero invalido&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;Digite a razao&amp;quot;&lt;br /&gt;
      read(*,*) q&lt;br /&gt;
      if(q&amp;lt;=0 .or. q==1) then&lt;br /&gt;
        write(*,*)&amp;quot;O numero e invalido&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;Digite o numero de termos da P,G.&amp;quot;&lt;br /&gt;
      read(*,*) n&lt;br /&gt;
      if(n&amp;lt;=1) then&lt;br /&gt;
        write(*,*) &amp;quot;Numero invalido&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    Sn=(a1*(q**n-1))/(q-1)&lt;br /&gt;
    write(*,*) &amp;quot;A soma dos termos da P.G. e&amp;quot;,Sn&lt;br /&gt;
  END SUBROUTINE Calcularsomapgfinita&lt;br /&gt;
  SUBROUTINE Calcularsomapginfinita()&lt;br /&gt;
    IMPLICIT NONE&lt;br /&gt;
    real :: a1, Sn, q&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;digite o primeiro termo&amp;quot;&lt;br /&gt;
      read(*,*) a1&lt;br /&gt;
      if(a1==0) then&lt;br /&gt;
        write(*,*) &amp;quot;Numero invalido&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;Digite a razao&amp;quot;&lt;br /&gt;
      read(*,*) q&lt;br /&gt;
      if(q&amp;lt;=0 .or. q&amp;gt;=1) then&lt;br /&gt;
        write(*,*) &amp;quot;Numero invalido, A razao deve estar entre ]0,1[&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    Sn=a1/(1-q)&lt;br /&gt;
    write(*,*) &amp;quot;A soma desta P.G. e&amp;quot;,Sn&lt;br /&gt;
  END SUBROUTINE Calcularsomapginfinita&lt;br /&gt;
  SUBROUTINE Calcularprodutopgfinita()&lt;br /&gt;
    real:: a1, q, Pn&lt;br /&gt;
    integer:: n, ERRO&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;Digite o primeiro termo da P.G.&amp;quot;&lt;br /&gt;
      read(*,*) a1&lt;br /&gt;
      if(a1==0) then&lt;br /&gt;
        write(*,*) &amp;quot;Numero invalido&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;Digite a razao&amp;quot;&lt;br /&gt;
      read(*,*) q&lt;br /&gt;
      if(q==1 .or. q&amp;lt;=0) then&lt;br /&gt;
        write(*,*) &amp;quot;Numero invalido&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    do&lt;br /&gt;
      write(*,*) &amp;quot;Digite o numero de termos da P.G.&amp;quot;&lt;br /&gt;
      read(*,*,IOstat=ERRO) n&lt;br /&gt;
      if(n&amp;lt;=0 .or. n==1) then&lt;br /&gt;
        write(*,*) &amp;quot;Numero invalido&amp;quot;&lt;br /&gt;
      else&lt;br /&gt;
        exit&lt;br /&gt;
      end if&lt;br /&gt;
    end do&lt;br /&gt;
    Pn=(a1**n)*(q**((n*(n-1))/2))&lt;br /&gt;
    write(*,*) &amp;quot;O produto dos&amp;quot;, n,&amp;quot;termos da P.G. e&amp;quot;,Pn&lt;br /&gt;
  END SUBROUTINE Calcularprodutopgfinita&lt;br /&gt;
END PROGRAM paepg&lt;br /&gt;
&amp;lt;/code&amp;gt;&lt;/div&gt;</summary>
		<author><name>Adonaimedrado</name></author>	</entry>

	</feed>