Escolar Documentos
Profissional Documentos
Cultura Documentos
4.2.2
1)
program soma
implicit none
real :: num1, num2, num3, num4
real :: soma
2)
program equacao
implicit none
real :: a, b
real :: x
if (a == 0) then
if (b == 0) then
print *, "A equação possui infinitas soluções."
else
print *, "A equação não possui solução."
end if
else
x = -b / a
3)
program equacao2
implicit none
real :: a, b, c
real :: x1, x2, delta
4)
program queda_livre
implicit none
real :: h, t, g
integer :: i, n
g = 9.8
read *, h
read *, n
do i = 1, n
t = sqrt(2 * h / g)
h = h - g * t**2 / 2
end do
5)
program soma2
implicit none
character(len=1) :: resp
do
read *, n1
read *, n2
read *, n3
read *, n4
soma = n1 + n2 + n3 + n4
read *, resp
6)
program produto
implicit none
character(len=1) :: resp
do
read *, n1
read *, n2
prod = n1 * n2
read *, resp
7)
program divisao
implicit none
character(len=1) :: resp
do
read *, n1
read *, n2
! Cálculo da divisão
div = n1 / n2
else
end if
read *, resp
8)
program equacao3
implicit none
real :: a, b, x
character(len=1) :: resp
do
! Leitura dos coeficientes a e b
print *, "Digite o coeficiente a: "
read *, a
print *, "Digite o coeficiente b: "
read *, b
if (a .ne. 0) then
! Cálculo do zero da função
x = -b / a
9)
program equacao4
implicit none
character :: resposta
do
read(*,'(f3.1,f3.1,f3.1)') a, b, c
x1 = -b / (2*a)
else
end if
read(*,'(a1)') resposta
10)
program conversao_tempo
implicit none
integer :: hora_inicial, minuto_inicial, segundo_inicial
integer :: hora_final, minuto_final, segundo_final
character :: opcao
do
write(*,'(a)') 'Insira a hora inicial em horas, minutos e segundos:'
read(*,'(i2,i2,i2)') hora_inicial, minuto_inicial, segundo_inicial
write(*,'(a)') 'Deseja converter em horas (h), minutos (m) ou segundos (s)?'
read(*,'(a1)') opcao
if (opcao .eq. 'h') then
hora_final = hora_inicial + minuto_inicial/60 + segundo_inicial/3600
write(*,'(f7.4)') hora_final
else if (opcao .eq. 'm') then
minuto_final = hora_inicial*60 + minuto_inicial + segundo_inicial/60
write(*,'(i3)') minuto_final
else if (opcao .eq. 's') then
segundo_final = hora_inicial*3600 + minuto_inicial*60 + segundo_inicial
write(*,'(i5)') segundo_final
else
write(*,'(a)') 'Opção inválida.'
end if
write(*,'(a)') 'Deseja continuar (s/n)?'
read(*,'(a1)') opcao
end do while (opcao .eq. 's')
end program conversao_tempo
11)
program media_geometrica
implicit none
integer :: n, i
real :: aresta, produto, media, desvio
do
write(*,*) "Digite o número de medidas da aresta:"
read(*,*) n
if (n .le. 0) then
write(*,*) "Entrada inválida. Por favor, digite um número positivo."
else
produto = 1
do i = 1, n
write(*,*) "Digite a medida da aresta:"
read(*,*) aresta
produto = produto * aresta
end do
media = produto**(1/real(n))
desvio = 0
do i = 1, n
desvio = desvio + (aresta - media)**2
end do
desvio = sqrt(desvio / real(n - 1))
write(*,*) "Média geométrica: ", media
write(*,*) "Desvio padrão: ", desvio
end if
write(*,*) "Deseja realizar uma nova operação? (s/n)"
read(*,*) resp
end do while (resp == 's' .or. resp == 'S')
end program media_geometrica
12)
program objetos
implicit none
integer :: escolha
real :: base, altura, comprimento, raio, area, volume
do
print*, "Escolha o objeto geométrico para calcular área e volume:"
print*, "1 - Triângulo"
print*, "2 - Círculo"
print*, "3 - Quadrado"
print*, "4 - Esfera"
print*, "5 - Cubo"
print*, "6 - Cilindro"
print*, "7 - Sair"
read*, escolha
if (escolha == 1) then
print*, "Digite a base do triângulo: "
read*, base
print*, "Digite a altura do triângulo: "
read*, altura
area = 0.5 * base * altura
print*, "Área do triângulo: ", area
else if (escolha == 2) then
print*, "Digite o raio do círculo: "
read*, raio
area = 3.14159265358979 * raio**2
print*, "Área do círculo: ", area
else if (escolha == 3) then
print*, "Digite o lado do quadrado: "
read*, base
13)
program carro
implicit none
real :: fabrica_custo, consumidor_custo, distribuidor_porcentagem,
taxas_porcentagem
distribuidor_porcentagem = 0.28
taxas_porcentagem = 0.45
14)
program positivo_ou_negativo
implicit none
integer :: numero
character :: resposta
do
read*, numero
else
end if
read*, resposta
15)
program impar_ou_par
implicit none
integer :: numero
character :: pergunta
do
print*, "Digite um número inteiro: "
read*, numero
if (mod(numero, 2) == 0) then
print*, "O número é par."
else
print*, "O número é ímpar."
end if
print*, "Deseja continuar? (s/n)"
read*, pergunta
end do while (pergunta == 's')
end program impar_ou_par
16)
program divisivel_por_5
implicit none
integer :: numero
character :: pergunta
do
read*, numero
if (mod(numero, 5) == 0) then
else
end if
read*, pergunta
17)
program peso_ideal
implicit none
character :: sexo
character :: pergunta
do
read*, altura
read*, sexo
else
end if
end if
read*, pergunta
18)
program preco_venda
implicit none
character :: pergunta
do
read*, preco_compra
else
end if
read*, pergunta
19)
program preco_venda
implicit none
character :: pergunta
do
read*, preco_compra
else
end if
read*, pergunta
20)
program main
implicit none
do
read*, a, b, c
read*, opcao
21)
program euler
implicit none
integer :: n, i
read *, n
e = 1.0
do i = 1, n
fatorial = 1.0
do j = 1, i
fatorial = fatorial * j
end do
e = e + termo
end do
4.2.4
1)
program matrizes
implicit none
integer :: m, n, r, s
real, dimension(100, 100) :: matriz1, matriz2, resultado
character :: opcao
do
write(*,'("Digite a ordem da primeira matriz (linhas colunas): ")')
read(*,'(i2,i2)') m, n
write(*,'("Digite a ordem da segunda matriz (linhas colunas): ")')
read(*,'(i2,i2)') r, s
if (n .ne. r) then
write(*,'("As matrizes não podem ser multiplicadas!")')
else
write(*,'("Digite os elementos da primeira matriz: ")')
read(*,'(100f6.2)',end=100) matriz1
write(*,'("Digite os elementos da segunda matriz: ")')
read(*,'(100f6.2)',end=100) matriz2
write(*,'("Digite a operação desejada (+ para adição, - para subtração e * para
produto): ")')
read(*,'(a1)',end=1) opcao
if (opcao .eq. '+') then
resultado = matriz1 + matriz2
write(*,'("Resultado da adição: ")')
write(*,'(100f6.2)',end=100) resultado
else if (opcao .eq. '-') then
resultado = matriz1 - matriz2
write(*,'("Resultado da subtração: ")')
write(*,'(100f6.2)',end=100) resultado
else if (opcao .eq. '*') then
2)
program fibonacci
implicit none
integer :: n, i
real :: f1, f2, f3
character :: opcao
do
write(*,'("Digite o número de termos desejados: ")')
read(*,'(i2)') n
if (n .lt. 2) then
write(*,'("O",i2,"º termo da série de Fibonacci é:",i2)') n, n
else
f1 = 0
f2 = 1
write(*,'("O 1º termo da série de Fibonacci é:",f6.0)') f1
write(*,'("O 2º termo da série de Fibonacci é:",f6.0)') f2
do i = 3, n
f3 = f1 + f2
write(*,'("O",i2,"º termo da série de Fibonacci é:",f6.0)') i, f3
f1 = f2
f2 = f3
end do
end if
write(*,'("Deseja repetir o programa? (S/N)")')
read(*,'(a1)',end=1) opcao
end do while (opcao .eq. 'S' .or. opcao .eq. 's')
end program fibonacci
3)
program ackermann
implicit none
integer :: m, n, ack
character :: opcao
do
write(*,'("Digite os valores de m e n:")')
read(*,'(i2,i2)') m, n
ack = ackermann_func(m, n)
write(*,'("O valor de A(",i2,",",i2,") é:",i2)') m, n, ack
write(*,'("Deseja repetir o programa? (S/N)")')
read(*,'(a1)',end=1) opcao
end do while (opcao .eq. 'S' .or. opcao .eq. 's')
if (m .eq. 0) then
ackermann_func = n + 1
else if (m .gt. 0 .and. n .eq. 0) then
ackermann_func = ackermann_func(m - 1, 1)
else if (m .gt. 0 .and. n .gt. 0) then
ackermann_func = ackermann_func(m - 1, ackermann_func(m, n - 1))
end if
end function ackermann_func
4)
program progressao_aritmetica
implicit none
integer :: a1, d, n, an
character :: opcao
do
read(*,'(i2,i2,i2)') a1, d, n
an = a1 + (n - 1) * d
read(*,'(a1)',end=1) opcao
5)
program progressao_geometrica
implicit none
integer :: a1, d, n
real :: an
character :: opcao
do
read(*,'(i2,i2,i2)') a1, d, n
do i = 1, n
an = a1 * (d ** (i - 1))
end do
read(*,'(a1)') opcao
6)
program calendario
implicit none
character(10) :: mes_nome(12)
do
read(*,'(I4)') ano
do j = 1, 12
mes = j
write(*,'(A)') mes_nome(j)
if (mes == 2) then
num_dias = 29
else
num_dias = 28
end if
num_dias = 30
else
num_dias = 31
end if
dia = 1
write(*,'(I2)') dia
dia = dia + 1
i=1
if (i == 7) then
write(*,'(I2)') dia
write(*,'(A)') ''
i=1
else
i=i+1
end if
dia = dia + 1
end do
write(*,'(A)') ''
end do
7)
program cadastro_pessoas
implicit none
character(len=10) :: data_nascimento
integer :: i
do i = 1, 10 ! para 10 registros
read(*,'(A)',end=99) nome
read(*,'(A)',end=99) genero
read(*,'(A)',end=99) data_nascimento
read(*,'(A)',end=99) cpf
read(*,'(A)',end=99) rg
read(*,'(A)',end=99) endereco
end do
99 continue
close(unit=10)
8.a)
PROGRAM AREA
REAL :: a, b, area
a = 0.0
b = 6.0
area = (b - a) * 3.0
8.b)
PROGRAM AREA
REAL :: a, b, area
a = 0.0
b = 6.0
8.c)
program area_parabola
implicit none
integer :: n
real :: a, b, h, x, y, area
a = 0.0
b = 6.0
n = 1000
h = (b - a) / n
area = 0.0
do i = 0, n - 1
x=a+i*h
y = x**2
area = area + y * h
end do
4.2.7
1.1)
program Calorimetria
implicit none
read *, m
read *, c
read *, Ti
read *, Tf
implicit none
real, intent(out) :: Q
Q = m * c * (Tf - Ti)
return
1.2)
program Calorimetria
implicit none
read *, m
read *, c
read *, Ti
read *, Tf
implicit none
real :: Q
Q = m * c * (Tf - Ti)
return
2.1)
program Calorimetria
implicit none
integer :: fase
real :: m, L, Q
read *, m
read *, fase
Q=m*L
print *, "A quantidade de calor latente (Q) transferida é: ", Q, " J"
implicit none
real, intent(in) :: m
real, intent(out) :: L
if (fase == 1) then
else
end if
2.2)
program Calorimetria2
implicit none
integer :: fase
real :: m, L, Q
read *, m
read *, fase
L = calcular_calor_latente(fase)
Q=m*L
print *, "A quantidade de calor latente (Q) transferida é: ", Q, " J"
implicit none
real :: L
if (fase == 1) then
else
end if
3.1)
SUBROUTINE Pressão(V,n,R,Ti,Tf,P)
IMPLICIT NONE
REAL :: V,n,R,Ti,Tf,P
P = n * R * (Tf - Ti) / V
RETURN
END
PROGRAM GasIdeal
IMPLICIT NONE
REAL :: V,n,R,Ti,Tf,P
n = 1.0
R = 8.31
Ti = 273.0
Tf = 298.0
V = 1.0
CALL Pressão(V,n,R,Ti,Tf,P)
3.2)
FUNCTION Pressure(V,n,R,Ti,Tf)
IMPLICIT NONE
REAL :: V,n,R,Ti,Tf
REAL :: Pressure
RETURN
END
PROGRAM IdealGas
IMPLICIT NONE
REAL :: V,n,R,Ti,Tf,P
n = 1.0
R = 8.31
Ti = 273.0
Tf = 298.0
V = 1.0
P = Pressure(V,n,R,Ti,Tf)
4.1)
SUBROUTINE LeiOhm(R,i,V)
IMPLICIT NONE
REAL :: R,i,V
V=R*i
RETURN
END
PROGRAM LeiOhmPrograma
IMPLICIT NONE
REAL :: R,i,V
R = 10.0
i = 2.0
CALL LeiOhm(R,i,V)
4.2)
FUNCTION OhmLei(R,i)
IMPLICIT NONE
REAL :: R,i,OhmLei
OhmLaw = R * i
RETURN
END
PROGRAM LeiOhmPrograma2
IMPLICIT NONE
REAL :: R,i,V
R = 10.0
i = 2.0
V = OhmLaw(R,i)