Você está na página 1de 6

3ª Lista de Exercícios de Programação em Fortran

Obs.: Caso queira usar um compilador Fortran on-line, use:


https://www.tutorialspoint.com/compile_fortran_online.php

Obs.1: Faça os programas dos exercícios a seguir e em cada programa, crie um cabeçalho (no
início do programa em Fortran), na forma de comentário, insira seu nome, sua matricula,
número do exercício e data, como mostrado a seguir:
!
! Disciplina FACOM49010W
! Aluno: Joaquim da Silva Xavier
! Matricula: 0202020202
! Exercício: 32
! Data: 11/02/2022
!

Obs.2: Todos os programas devem conter comentários que expliquem em detalhes as etapas de
seus algoritmos e dos comandos utilizados.

Obs.3: Para cada atividade ou exercício, anexe uma impressão da saída (print screen) ou os
arquivos usados. Compacte e dê um upload no Teams. O nome de cada programa deverá ter a
indicação do exercício realizado, isto é por exemplo: “exerc_1.f90”. Exemplo da impressão da
tela de saída:
1) Faça um programa que:
a. Leia a quantidade de elementos N de um vetor VET de inteiros < 100. Só deve
dar sequencia se N for válido (isto é: 0<N<100);
b. Ache o produto dos elementos do vetor;
c. Ache a soma dos elementos do vetor;
d. Ache o maior e menor elemento do vetor;
e. Imprima o vetor, o produto, a soma dos seus elementos;
f. Inverta o vetor e imprima o vetor invertido;
g. Solicite ao usuário que escolha qual o método de ordenação, isto é, se é bubble
sort, selection sort ou insertion sort, cujos algoritmos estão explicados no final
desta lista;
h. Ordene o vetor e imprima o vetor ordenado de forma crescente na tela
(monitor).

Valor: Todos os itens valem 1 ponto a exceção do item h que vale 3 pontos. Total de
10 pontos.

2) Comente cada linha do programa a seguir explicando o que faz cada comando na linha.
No final, insira um comentário resumindo o que faz o programa.

program dataStatement
implicit none
integer, dimension(4,4) :: m
integer :: a(5), b(3,3), c(10), i, j
data a /7,8,9,10,11/
data b(1,:) /1,1,1/
data b(2,:) /2,2,2/
data b(3,:) /3,3,3/
data (c(i),i = 1,10,2) /4,5,6,7,8/
data (c(i),i = 2,10,2)/5*2/

m(1:4,1:4) =0
Print *, "Size = ", size(m)
Print *, "Rank = ", rank(m)
Print *, "Shape = ", shape(m)

Print *, 'O Arranjo A:'


do j = 1, 5
Print *, a(j)
end do

Print *, 'O Arranjo B:'


do i = lbound(b,1), ubound(b,1)
write(*,*) (b(i,j), j = lbound(b,2), ubound(b,2))
end do

Print *, 'O Arranjo C:'


do j = 1, 10
Print *, c(j)
end do

Print *, 'Novamente, o Arranjo A:', (a(j),j=1,5)


Print *, 'Novamente, o Arranjo A, apenas indice impar:', (a(j),j=1,5,2)
end program dataStatement

Valor: 5 pontos

3) Faça um programa que faz a multiplicação de duas matrizes A x B. Para tal faça o
fluxograma incialmente.
a) Entre com N, M, e L. A matriz A e B serão de ordem MxL e LxN, respectivamente.
b) Entre com as matrizes A e B, pelo teclado;
c) Imprima as matrizes A e B;
d) Calcule a matriz C que é o produto da matriz A pela matriz B. Isto é, C = A x B;
e) Imprima a matriz C formatada, delimitada por “|”. Por exemplo:
A matriz C:
| 3 .78 4.45 6.32 6.56 |
| 5.00 9.76 8.32 3.87 |
f) Ache a posição do maior e menor elemento de C e imprima as posições.

Use formatação para que a linha fique compatível com a linha da matriz. A
multiplicação de matrizes é ilustrada a seguir:

Valor: 6 pontos

4) Faça um programa que o usuário forneça um número natural (positivo e inteiro) e o


programa deve imprimir a fatoração dele na posição vertical e na ordem crescente. Por
exemplo: o usuário digita 2100 o programa vai imprimir:
2
2
3
5
5
7

Obs.: pode ser qualquer número natural desde que seja menor ou igual a 10000

Valor: 3 pontos

5) Faça um programa que o usuário forneça um número natural (positivo e inteiro) N e o


programa deve gravar em um arquivo todos os números primos existentes menores que
N. N deve ser menor que 16000.

Valor: 3 pontos
6) Faça um programa que conta o número de palavras, numero de vogais e de consoantes
de um arquivo texto cujo nome é fornecido pelo usuário e mostre o resultado na tela.

Valor: 3 pontos
Bubble Sort – é o algoritmo mais simples, mas o menos eficiente. Neste algoritmo cada
elemento da posição i será comparado com o elemento da posição i + 1, ou seja, um
elemento da posição 2 será comparado com o elemento da posição 3. Caso o elemento da
posição 2 for maior que o da posição 3, eles trocam de lugar e assim sucessivamente. Por
causa dessa forma de execução, o vetor terá que ser percorrido quantas vezes que for
necessária, tornando o algoritmo ineficiente para listas muito grandes.

É verificado se o 3 é maior que 5, por essa condição ser falsa, não há troca.
É verificado se o 5 é maior que 1, por essa condição ser verdadeira, há uma troca.
É verificado se o 5 é maior que 2, por essa condição ser verdadeira, há uma troca.
É verificado se o 5 é maior que 4, por essa condição ser verdadeira, há uma troca.
O método retorna ao início do vetor realizando os mesmos processos de comparações,
isso é feito até que o vetor esteja ordenado.

Selection Sort – Este algoritmo é baseado em se passar sempre o menor valor do vetor
para a primeira posição (ou o maior dependendo da ordem requerida), depois o
segundo menor valor para a segunda posição e assim sucessivamente, até os últimos
dois elementos.
Neste algoritmo de ordenação é escolhido um número a partir do primeiro, este
número escolhido é comparado com os números a partir da sua direita, quando
encontrado um número menor, o número escolhido ocupa a posição do menor
número encontrado. Este número encontrado será o próximo número escolhido,
caso não for encontrado nenhum número menor que este escolhido, ele é colocado
na posição do primeiro número escolhido, e o próximo número à sua direita vai ser
o escolhido para fazer as comparações. É repetido esse processo até que a lista esteja
ordenada.
Neste passo o primeiro número escolhido foi o 3, ele foi comparado com todos os
números à sua direita e o menor número encontrado foi o 1, então os dois trocam
de lugar.
• O mesmo processo do passo 1 acontece, o número escolhido foi o 5 e o
menor número encontrado foi o 2.
• Não foi encontrado nenhum número menor que 3, então ele fica na
mesma posição.
• O número 5 foi escolhido novamente e o único número menor que ele à
sua direita é o 4, então eles trocam.

O Insertion sort é um algoritmo simples e eficiente quando aplicado em pequenas listas.


Neste algoritmo a lista é percorrida da esquerda para a direita, à medida que avança vai
deixando os elementos mais à esquerda ordenados.
O algoritmo funciona da mesma forma que as pessoas usam para ordenar cartas em um
jogo de baralho como o pôquer.

Neste passo é verificado se o 5 é menor que o 3, como essa condição é falsa, então
não há troca.
• É verificado se o quatro é menor que o 5 e o 3, ele só é menor que o 5, então
os dois trocam de posição.
• É verificado se o 2 é menor que o 5, 4 e o 3, como ele é menor que 3, então o
5 passa a ocupar a posição do 2, o 4 ocupa a posição do 5 e o 3 ocupa a posição
do 4, assim a posição do 3 fica vazia e o 2 passa para essa posição.
O mesmo processo de comparação acontece com o número 1, após esse processo o
vetor fica ordenado.

Você também pode gostar