Função Fatorial Recursiva em Fortran 95
Publicado por Perfil removido (última atualização em 02/05/2012)
[ Hits: 12.966 ]
A velha função fatorial, recursiva, em Fortran versão 95.
Para compilar, use: "gfortran fatorial001.f95 -o fatorial001", igual GNU Pascal e GCC
Durante a execução (após compilado), o programa pede um número de um intervalo pré-definido de 0 a J.
Insistentemente, há um loop indefinido para isto.
"J" deve ser no máximo até 20, já que o número definido por 21! (fatorial de 21) excede 2^63.
O que há de diferente no código são as particularidades desta linguagem:
- Blocos com início e fim definidos por palavras, lembrando Pascal;
- Cláusula "Program" semelhante a Pascal;
- Comentários vêm após um ponto de exclamação;
- Operadores lógicos definidos por palavras entre pontos (.OP.). Provavelmente foi daí que veio .AND., .T. .F. do Dbase, Clipper etc.;
- Máscaras de formatação com strings, algo mais complexas que C para formatação de entrada/saída de dados. Podem ser feitas com um comando chamado "FORMAT". De novo uma referência ao "PICTURE" do Clipper;
- Necessidade de uma estranha expressão (Advance='no') para evitar avanço de linha;
- Dimensionamento do tamanho do tipo de dados (KIND=8). Esta cláusula aumenta o inteiro para 64 bits. 8 é o valor máximo;
- Cláusula "PARAMETER" para declarar constantes;
- Funções e subrotinas devem estar num bloco determinado em uma áres definida pela cláusula "CONTAINS";
- Não foi usado algo como "RETURN" ao final, mas uma variável especificada para retorno do valor;
- Variáveis de sequências de caracteres são definidas por uma coisa que "lembra" uma multiplicação de um tipo (Character) por um valor (Character*5).
- Não existe operador para resto de divisão (módulo, sinal de porcentagem "%" em C), sendo necessário o uso de uma função já implementada na linguagem (não aparece neste código).
A sintaxe de Fortran é ricamente cheia de recursos tanto quanto C. Infelizmente não tão lacônica e taquigráfica quanto. Seu código compilado com gfortran gerou um executável pequeno, mesmo sem usar "strip -s".
É tão verborrágica quanto Pascal e até mais, lembrando também Clipper e COBOL.
Program fatorial001 ! Isto eh um comentario ! Para compilar, use: ! gfortran fatorial001.f95 -o fatorial001 ! igual GNU Pascal e GCC Integer :: I=-1 Integer, Parameter :: J=20, K=8 Integer (Kind=K) :: L=1 Character*5 :: F0='(2I2)' Character*14 :: F1='(BN,A47,I2,A2)' Character*27 :: F2='(BN,A14,I0,A4,I0,A1)' Do While ((I .LT. 0) .OR. (I .GT. J)) Write (*,F1,Advance='no')"Digite numero para calcular fatorial entre 0 e ",J,": " Read (*,F0) I End Do L = Fatorial(I) Write (*,F2)"O fatorial de ",I," eh ",L,"." Contains Recursive Integer (Kind=K) Function Fatorial(A) Result (B) Integer :: A If (A .LT. 0) Stop "Erro" If (A .EQ. 0) Then B = 1 Else B = A * Fatorial(A-1) End If End Function Fatorial End Program fatorial001
Crivo de Eratóstenes Simples em Fortran 95
Script em Bath "DOS" para Upload e Download de arquivos usando o SSH
Octave - Método de Euler para solução de EDO
Conciliando o uso da ZRAM e SWAP em disco na sua máquina
Servidor de Backup com Ubuntu Server 24.04 LTS, RAID e Duplicati (Dell PowerEdge T420)
Visualizar câmeras IP ONVIF no Linux sem necessidade de instalar aplicativos
Realizar overclock no Miyoo Mini (plus ou normal)
Otimização de memória para máquinas modestas
Unbuntu não atualiza o firmware [RESOLVIDO] (2)
linux mint reconhece microfone de lapela como fone de ouvido sem micro... (0)
Dúvidas sobre a originalidade de conteúdos online (10)
Erro de interface de Rede no Virt Manager dentro Debian 13 KDE (12)