F90: Programa do cálculo relação barras de aço/preço

From AdonaiMedrado.Pro.Br
Revision as of 22:41, 4 December 2008 by Adonaimedrado (Talk | contribs) (New page: Este programa foi desenvolvido pelos alunos José Lemos e Tiago Lima durante a disciplina Processamento de Dados (UFBA 2008.2). Data da apresentação: 02/12/2008. <code lang="fortran"> ...)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Este programa foi desenvolvido pelos alunos José Lemos e Tiago Lima durante a disciplina Processamento de Dados (UFBA 2008.2). Data da apresentação: 02/12/2008.

PROGRAM aco
  IMPLICIT NONE
  CALL MenuPrincipal()
CONTAINS
  SUBROUTINE MenuPrincipal()
    IMPLICIT NONE
    INTEGER :: Opcao, Erro
    WRITE (*,*) "Com qual tipo de aco deseja trabalhar?"
    WRITE (*,*) "1- CA 25"
    WRITE (*,*) "2- CA 50"
    WRITE (*,*) "3- CA 60"
    WRITE (*,*) "4- Sair"
    DO
      READ (*,*,IOstat=Erro) Opcao
      IF (Erro <= 0 .AND. Opcao >= 1 .AND. Opcao <=4) THEN
        SELECT CASE (Opcao)
          CASE (1)
            CALL CalcularAco(3.87,230.78)
          CASE (2)
            CALL CalcularAco(4.32,423.08)
          CASE (3)
            CALL CalcularAco(6.27,484.62)
          CASE (4)
            RETURN
        END SELECT
        EXIT
      ELSE
        WRITE (*,*) "Por favor, digite um número entre 1 e 4."
      END IF
    END DO
  END SUBROUTINE MenuPrincipal
  SUBROUTINE CalcularAco(PRECO,TR)
    IMPLICIT NONE
    INTEGER ::ERRO
    REAL, PARAMETER :: PI = 3.14159265
    REAL :: T, RAIO, ACO, KG, F, B
    REAL, INTENT (IN) :: PRECO, TR
    WRITE(*,*) "Informe o peso que voê deseja adquirir de barras em kg:"
    DO
      READ (*,*,IOstat=ERRO) KG
      IF (ERRO>0) THEN
        WRITE (*,*) "Valor inválido. O peso deve ser um valor real."
      ELSE
        EXIT
      END IF
    END DO
    WRITE(*,*) "Informe a carga que a barra suportara em kgf:"
    DO
      READ (*,*,IOstat=ERRO) F
      IF (ERRO>0) THEN
        WRITE (*,*) "Valor inválido. O raio deve ser um valor real."
      ELSE
        EXIT
      END IF
    END DO
    WRITE(*,*) "Informe o valor do raio da barra em mm:"
    DO
      READ (*,*,IOstat=ERRO) RAIO
      IF (ERRO>0) THEN
        WRITE (*,*) "Valor inválido. O raio deve ser um valor real."
      ELSE
        EXIT
      END IF
    END DO
    ACO=0
    T=F*10/ (PI*(RAIO**2))
    B= NINT(T/TR)
    ACO=B* PRECO*KG
    WRITE(*,"(A,F7.2,A,F4.2,A)") "O orçamento do projeto será será de", ACO ," reais, usando ", B ," barras."
  END SUBROUTINE CalcularAco
END PROGRAM aco