Você está na página 1de 52

Trabalho 3

4.2.2
1)
program soma
implicit none
real :: num1, num2, num3, num4
real :: soma

print *, "Digite o primeiro número: "


read *, num1
print *, "Digite o segundo número: "
read *, num2
print *, "Digite o terceiro número: "
read *, num3
print *, "Digite o quarto número: "
read *, num4

soma = num1 + num2 + num3 + num4

print *, "A soma dos quatro números é: ", soma


end program soma

Lucas de Freitas Pereira – 202220464611


Trabalho 3

2)
program equacao
implicit none
real :: a, b
real :: x

print *, "Digite o valor de a: "


read *, a
print *, "Digite o valor de b: "
read *, b

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

print *, "A solução da equação é: x = ", x


end if
end program equacao

Lucas de Freitas Pereira – 202220464611


Trabalho 3

3)
program equacao2
implicit none
real :: a, b, c
real :: x1, x2, delta

print *, "Digite o valor de a: "


read *, a
print *, "Digite o valor de b: "
read *, b
print *, "Digite o valor de c: "
read *, c

delta = b**2 - 4*a*c


if (delta < 0) then
print *, "A equação não possui soluções reais."
else
x1 = (-b + sqrt(delta)) / (2*a)
x2 = (-b - sqrt(delta)) / (2*a)

print *, "As soluções da equação são: x1 = ", x1, " e x2 = ", x2


end if
end program equacao2

Lucas de Freitas Pereira – 202220464611


Trabalho 3

4)

program queda_livre

implicit none

real :: h, t, g

integer :: i, n

g = 9.8

print *, "Digite a altura inicial (em metros): "

read *, h

print *, "Digite o número de iterações: "

read *, n

do i = 1, n

t = sqrt(2 * h / g)

print *, "Depois de ", t, " segundos, a altura é de ", h, " metros."

h = h - g * t**2 / 2

end do

end program queda_livre

Lucas de Freitas Pereira – 202220464611


Trabalho 3

5)

program soma2

implicit none

integer :: n1, n2, n3, n4, soma

character(len=1) :: resp

do

print *, "Digite o primeiro número inteiro: "

read *, n1

print *, "Digite o segundo número inteiro: "

read *, n2

print *, "Digite o terceiro número inteiro: "

read *, n3

print *, "Digite o quarto número inteiro: "

read *, n4

soma = n1 + n2 + n3 + n4

print *, "A soma dos quatro números é ", soma

print *, "Deseja fazer outra soma? (s/n)"

read *, resp

end do while (resp .eq. "s")

end program soma2

Lucas de Freitas Pereira – 202220464611


Trabalho 3

Lucas de Freitas Pereira – 202220464611


Trabalho 3

6)

program produto

implicit none

real :: n1, n2, prod

character(len=1) :: resp

do

print *, "Digite o primeiro número real: "

read *, n1

print *, "Digite o segundo número real: "

read *, n2

prod = n1 * n2

print *, "O produto dos dois números é ", prod

print *, "Deseja fazer outro cálculo? (s/n)"

read *, resp

end do while (resp .eq. "s")

end program produto

Lucas de Freitas Pereira – 202220464611


Trabalho 3

7)

program divisao

implicit none

real :: n1, n2, div

character(len=1) :: resp

do

print *, "Digite o dividendo: "

read *, n1

print *, "Digite o divisor: "

read *, n2

if (n2 .ne. 0) then

! Cálculo da divisão

div = n1 / n2

print *, "A divisão é ", div

else

print *, "Divisão por zero é inválida."

end if

print *, "Deseja fazer outro cálculo? (s/n)"

read *, resp

end do while (resp .eq. "s")

Lucas de Freitas Pereira – 202220464611


Trabalho 3

end program divisao

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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

print *, "O zero da função é ", x


else
! Exibição de mensagem de erro
print *, "Coeficiente a não pode ser zero."
end if

print *, "Deseja resolver outra equação? (s/n)"


read *, resp
end do while (resp .eq. "s")
end program equacao3

Lucas de Freitas Pereira – 202220464611


Trabalho 3

9)

program equacao4

implicit none

real :: a, b, c, delta, x1, x2

character :: resposta

do

write(*,'(a)') 'Insira os coeficientes a, b e c da equação:'

read(*,'(f3.1,f3.1,f3.1)') a, b, c

delta = b**2 - 4*a*c

if (delta .lt. 0) then

write(*,'(a)') 'Não há raízes reais para esta equação.'

else if (delta .eq. 0) then

x1 = -b / (2*a)

write(*,'(a,f3.1)') 'Há apenas uma raiz real: ', x1

else

x1 = (-b + sqrt(delta)) / (2*a)

x2 = (-b - sqrt(delta)) / (2*a)

write(*,'(a,f3.1,a,f3.1)') 'As raízes reais são: ', x1, ' e ', x2

end if

write(*,'(a)') 'Deseja continuar (s/n)?'

read(*,'(a1)') resposta

end do while (resposta .eq. 's')

end program equacao4

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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

Lucas de Freitas Pereira – 202220464611


Trabalho 3

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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

Lucas de Freitas Pereira – 202220464611


Trabalho 3

area = base * base


print*, "Área do quadrado: ", area
else if (escolha == 4) then
print*, "Digite o raio da esfera: "
read*, raio
area = 4.0 * 3.14159265358979 * raio**2
volume = (4.0/3.0) * 3.14159265358979 * raio**3
print*, "Área da esfera: ", area
print*, "Volume da esfera: ", volume
else if (escolha == 5) then
print*, "Digite o comprimento do cubo: "
read*, comprimento
area = 6.0 * comprimento**2
volume = comprimento**3
print*, "Área do cubo: ", area
print*, "Volume do cubo: ", volume
else if (escolha == 6) then
print*, "Digite o raio do cilindro: "
read*, raio
print*, "Digite a altura do cilindro: "
read*, altura
area = 2.0 * 3.14159265358979 * raio**2 + 2.0 * 3.14159265358979 * raio * altura
volume = 3.14159265358979 * raio**2 * altura
print*, "Área do cilindro: ", area
print*, "Volume do cilindro: ", volume
else if (escolha == 7) then
exit
else
print*, "Escolha uma opção válida"
end if
end do
end program objetos

Lucas de Freitas Pereira – 202220464611


Trabalho 3

Lucas de Freitas Pereira – 202220464611


Trabalho 3

13)

program carro
implicit none
real :: fabrica_custo, consumidor_custo, distribuidor_porcentagem,
taxas_porcentagem

distribuidor_porcentagem = 0.28
taxas_porcentagem = 0.45

print*, "Digite o custo de fábrica do carro: "


read*, fabrica_custo
consumidor_custo = fabrica_custo + fabrica_custo * distribuidor_porcentagem +
fabrica_custo * taxas_porcentagem
print*, "Custo ao consumidor: ", consumidor_custo
end program carro

Lucas de Freitas Pereira – 202220464611


Trabalho 3

14)

program positivo_ou_negativo

implicit none

integer :: numero

character :: resposta

do

print*, "Digite um número inteiro: "

read*, numero

if (numero >= 0) then

print*, "O número é positivo."

else

print*, "O número é negativo."

end if

print*, "Deseja continuar? (s/n)"

read*, resposta

end do while (resposta == 's')

end program positivo_ou_negativo

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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

Lucas de Freitas Pereira – 202220464611


Trabalho 3

16)

program divisivel_por_5

implicit none

integer :: numero

character :: pergunta

do

print*, "Digite um número inteiro: "

read*, numero

if (mod(numero, 5) == 0) then

print*, "O número é divisível por 5."

else

print*, "O número não é divisível por 5."

end if

print*, "Deseja continuar? (s/n)"

read*, pergunta

end do while (pergunta == 's')

end program divisivel_por_5

Lucas de Freitas Pereira – 202220464611


Trabalho 3

17)

program peso_ideal

implicit none

character :: sexo

real :: altura, peso_ideal

character :: pergunta

do

print*, "Digite a altura (em metros): "

read*, altura

print*, "Digite o sexo (m/f): "

read*, sexo

if (sexo == 'm') then

peso_ideal = 72.7 * altura - 58.0

else if (sexo == 'f') then

peso_ideal = 62.1 * altura - 44.7

else

print*, "Sexo inválido."

end if

if (sexo == 'm' .or. sexo == 'f') then

print*, "Seu peso ideal é: ", peso_ideal, "kg"

end if

print*, "Deseja continuar? (s/n)"

read*, pergunta

Lucas de Freitas Pereira – 202220464611


Trabalho 3

end do while (pergunta == 's')

end program peso_ideal

Lucas de Freitas Pereira – 202220464611


Trabalho 3

18)

program preco_venda

implicit none

real :: preco_compra, preco_venda

character :: pergunta

do

print*, "Digite o valor de compra do produto: "

read*, preco_compra

if (preco_compra < 20.0) then

preco_venda = preco_compra * 1.45

else

preco_venda = preco_compra * 1.30

end if

print*, "O preço de venda será: ", preco_venda

print*, "Deseja continuar? (s/n)"

read*, pergunta

end do while (pergunta == 's')

end program preco_venda

Lucas de Freitas Pereira – 202220464611


Trabalho 3

19)

program preco_venda

implicit none

real :: preco_compra, preco_venda

character :: pergunta

do

print*, "Digite o valor de compra do produto: "

read*, preco_compra

if (preco_compra < 20.0) then

preco_venda = preco_compra * 1.45

else

preco_venda = preco_compra * 1.30

end if

print*, "O preço de venda será: ", preco_venda

print*, "Deseja continuar? (s/n)"

read*, pergunta

end do while (pergunta == 's')

end program preco_venda

Lucas de Freitas Pereira – 202220464611


Trabalho 3

20)

program main

implicit none

integer :: a, b, c, maior, menor, opcao

do

print*, "Digite três números inteiros:"

read*, a, b, c

maior = max(a, max(b, c))

menor = min(a, min(b, c))

print*, "Maior número:", maior

print*, "Menor número:", menor

print*, "Deseja repetir o programa (1-Sim / 0-Não)?"

read*, opcao

end do while (opcao /= 0)

end program main

Lucas de Freitas Pereira – 202220464611


Trabalho 3

21)

program euler

implicit none

integer :: n, i

real :: e, fatorial, termo

print *, "Insira o valor de N: "

read *, n

e = 1.0

do i = 1, n

fatorial = 1.0

do j = 1, i

fatorial = fatorial * j

end do

termo = 1.0 / fatorial

e = e + termo

end do

print *, "O valor de e é: ", e

end program euler

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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

Lucas de Freitas Pereira – 202220464611


Trabalho 3

resultado = matmul(matriz1, matriz2)


write(*,'("Resultado da multiplicação: ")')
write(*,'(100f6.2)',end=100) resultado
else
write(*,'("Operação inválida.")')
end if
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 matrizes

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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')

end program ackermann

integer function ackermann_func(m, n)


implicit none
integer :: m, n

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

Lucas de Freitas Pereira – 202220464611


Trabalho 3

4)

program progressao_aritmetica

implicit none

integer :: a1, d, n, an

character :: opcao

do

write(*,'("Digite os valores de a1, d e n:")')

read(*,'(i2,i2,i2)') a1, d, n

an = a1 + (n - 1) * d

write(*,'("O termo ",i2," da PA é:",i2)') n, an

write(*,'("Deseja repetir o programa? (S/N)")')

read(*,'(a1)',end=1) opcao

end do while (opcao .eq. 'S' .or. opcao .eq. 's')

end program progressao_aritmetica

Lucas de Freitas Pereira – 202220464611


Trabalho 3

5)

program progressao_geometrica

implicit none

integer :: a1, d, n

real :: an

character :: opcao

do

write(*,'("Digite os valores de a1, d e n:")')

read(*,'(i2,i2,i2)') a1, d, n

do i = 1, n

an = a1 * (d ** (i - 1))

write(*,'("an = ", f6.2)') an

end do

write(*,'("Deseja continuar (s/n)?:")')

read(*,'(a1)') opcao

end do while (opcao /= 'n')

end program progressao_geometrica

Lucas de Freitas Pereira – 202220464611


Trabalho 3

6)

program calendario

implicit none

integer :: ano, mes, dia, ultimo_dia, num_dias, i, j

character(10) :: mes_nome(12)

mes_nome = ['Janeiro', 'Fevereiro', 'Março', &

'Abril', 'Maio', 'Junho', &

'Julho', 'Agosto', 'Setembro', &

'Outubro', 'Novembro', 'Dezembro']

do

write(*,'(A)') 'Insira o ano (AAAA): '

read(*,'(I4)') ano

write(*,'(A)') 'Ano: ', ano

do j = 1, 12

mes = j

write(*,'(A)') mes_nome(j)

write(*,'(A,I2,A)') ' Dom Seg Ter Qua Qui Sex Sab'

if (mes == 2) then

if (mod(ano,4) == 0 .and. mod(ano,100) /= 0) then

num_dias = 29

else

num_dias = 28

Lucas de Freitas Pereira – 202220464611


Trabalho 3

end if

else if (mes == 4 .or. mes == 6 .or. &

mes == 9 .or. mes == 11) then

num_dias = 30

else

num_dias = 31

end if

dia = 1

write(*,'(I2)') dia

dia = dia + 1

i=1

do while (dia <= num_dias)

if (i == 7) then

write(*,'(I2)') dia

write(*,'(A)') ''

i=1

else

write(*,'(I2,A)') dia, ' '

i=i+1

end if

dia = dia + 1

end do

write(*,'(A)') ''

Lucas de Freitas Pereira – 202220464611


Trabalho 3

end do

write(*,'(A)') 'Deseja verificar outro ano (S/N)? '

read(*,'(A1)', advance='NO') ultimo_dia

end do while (ultimo_dia /= 'N')

end program calendario

Lucas de Freitas Pereira – 202220464611


Trabalho 3

7)

program cadastro_pessoas

implicit none

character(len=50) :: nome, genero, cpf, rg, endereco

character(len=10) :: data_nascimento

integer :: i

open(unit=10, file='dados_pessoas.txt', status='unknown')

do i = 1, 10 ! para 10 registros

write(*,'(A)') 'Digite o nome: '

read(*,'(A)',end=99) nome

write(*,'(A)') 'Digite o gênero: '

read(*,'(A)',end=99) genero

write(*,'(A)') 'Digite a data de nascimento (DD/MM/YYYY): '

read(*,'(A)',end=99) data_nascimento

write(*,'(A)') 'Digite o CPF: '

read(*,'(A)',end=99) cpf

write(*,'(A)') 'Digite o RG: '

read(*,'(A)',end=99) rg

write(*,'(A)') 'Digite o endereço completo: '

read(*,'(A)',end=99) endereco

write(10,*) nome, genero, data_nascimento, cpf, rg, endereco

end do

99 continue

close(unit=10)

Lucas de Freitas Pereira – 202220464611


Trabalho 3

end program cadastro_pessoas

Lucas de Freitas Pereira – 202220464611


Trabalho 3

8.a)

PROGRAM AREA

REAL :: a, b, area

a = 0.0

b = 6.0

area = (b - a) * 3.0

PRINT *, "A área da função retangular é:", area

END PROGRAM AREA

Lucas de Freitas Pereira – 202220464611


Trabalho 3

8.b)

PROGRAM AREA

REAL :: a, b, area

a = 0.0

b = 6.0

area = (b - a) * (a + 3.0 + b + 3.0) / 2.0

PRINT *, "A área da função triangular é:", area

END PROGRAM AREA

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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

area = area + (b**2) / 2.0

write(*,'(A,F5.2)') 'A área da parábola é: ', area

end program area_parabola

Lucas de Freitas Pereira – 202220464611


Trabalho 3

4.2.7

1.1)

program Calorimetria

implicit none

real :: m, c, Ti, Tf, Q

print *, "Digite a massa (m) em kg: "

read *, m

print *, "Digite o calor específico (c) em J/kg.K: "

read *, c

print *, "Digite a temperatura inicial (Ti) em ºC: "

read *, Ti

print *, "Digite a temperatura final (Tf) em ºC: "

read *, Tf

call calcular_calor(m, c, Ti, Tf, Q)

print *, "A quantidade de calor (Q) transferida é: ", Q, " J"

end program Calorimetria

subroutine calcular_calor(m, c, Ti, Tf, Q)

implicit none

real, intent(in) :: m, c, Ti, Tf

real, intent(out) :: Q

Q = m * c * (Tf - Ti)

return

end subroutine calcular_calor

Lucas de Freitas Pereira – 202220464611


Trabalho 3

Lucas de Freitas Pereira – 202220464611


Trabalho 3

1.2)

program Calorimetria

implicit none

real :: m, c, Ti, Tf, Q

print *, "Digite a massa (m) em kg: "

read *, m

print *, "Digite o calor específico (c) em J/kg.K: "

read *, c

print *, "Digite a temperatura inicial (Ti) em ºC: "

read *, Ti

print *, "Digite a temperatura final (Tf) em ºC: "

read *, Tf

Q = calcular_calor(m, c, Ti, Tf)

print *, "A quantidade de calor (Q) transferida é: ", Q, " J"

end program Calorimetria

function calcular_calor(m, c, Ti, Tf)

implicit none

real, intent(in) :: m, c, Ti, Tf

real :: Q

Q = m * c * (Tf - Ti)

return

end function calcular_calor

Lucas de Freitas Pereira – 202220464611


Trabalho 3

2.1)

program Calorimetria

implicit none

integer :: fase

real :: m, L, Q

print *, "Digite a massa (m) em kg: "

read *, m

print *, "Escolha a transição de fase desejada:"

print *, "1. Fusão"

print *, "2. Vaporização"

read *, fase

call calcular_calor_latente(m, L, fase)

Q=m*L

print *, "A quantidade de calor latente (Q) transferida é: ", Q, " J"

end program Calorimetria

subroutine calcular_calor_latente(m, L, fase)

implicit none

integer, intent(in) :: fase

real, intent(in) :: m

real, intent(out) :: L

if (fase == 1) then

L = 334000.0 ! J/kg, calor de fusão da água

else if (fase == 2) then

L = 2257000.0 ! J/kg, calor de vaporização da água

Lucas de Freitas Pereira – 202220464611


Trabalho 3

else

print *, "Opção inválida"

end if

end subroutine calcular_calor_latente

Lucas de Freitas Pereira – 202220464611


Trabalho 3

2.2)

program Calorimetria2

implicit none

integer :: fase

real :: m, L, Q

print *, "Digite a massa (m) em kg: "

read *, m

print *, "Escolha a transição de fase desejada:"

print *, "1. Fusão"

print *, "2. Vaporização"

read *, fase

L = calcular_calor_latente(fase)

Q=m*L

print *, "A quantidade de calor latente (Q) transferida é: ", Q, " J"

end program Calorimetria2

real function calcular_calor_latente(fase)

implicit none

integer, intent(in) :: fase

real :: L

if (fase == 1) then

L = 334000.0 ! J/kg, calor de fusão da água

Lucas de Freitas Pereira – 202220464611


Trabalho 3

else if (fase == 2) then

L = 2257000.0 ! J/kg, calor de vaporização da água

else

print *, "Opção inválida"

end if

end function calcular_calor_latente

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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)

PRINT *, "Pressão: ", P, "Pa"

END PROGRAM GasIdeal

Lucas de Freitas Pereira – 202220464611


Trabalho 3

3.2)

FUNCTION Pressure(V,n,R,Ti,Tf)

IMPLICIT NONE

REAL :: V,n,R,Ti,Tf

REAL :: Pressure

Pressure = n * R * (Tf - Ti) / V

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)

PRINT *, "Pressão: ", P, "Pa"

END PROGRAM IdealGas

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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)

PRINT *, "Diferença de potencial (V): ", V, "V"

END PROGRAM LeiOhmPrograma

Lucas de Freitas Pereira – 202220464611


Trabalho 3

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)

PRINT *, "Diferença de potencial (V): ", V, "V"

END PROGRAM LeiOhmPrograma2

Lucas de Freitas Pereira – 202220464611

Você também pode gostar