Função Fatorial Recursiva em Fortran 95
Publicado por Perfil removido (última atualização em 02/05/2012)
[ Hits: 12.507 ]
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
Matriz de Hilbert e resolução de sistemas lineares
Octave - Calcular raiz pelo método de Newton
Crivo de Eratóstenes Simples em Fortran 95
Octave - Calcular raiz pelo método Regula-Falsi
Octave - Sistemas lineares por Jacobi
Melhorando o tempo de boot do Fedora e outras distribuições
Como instalar as extensões Dash To Dock e Hide Top Bar no Gnome 45/46
E a guerra contra bots continua
Tradução do artigo do filósofo Gottfried Wilhelm Leibniz sobre o sistema binário
Conheça o firewall OpenGFW, uma implementação do (Great Firewall of China).
Instalando o FreeOffice no LMDE 6
Anki: Remover Tags de Estilo HTML de Todas as Cartas
Colocando uma opção de redimensionamento de imagem no menu de contexto do KDE
Não consigo acessar os modos de desempenho (5)
Alguém pode me ajudar porfavor como executar comandos ao iniciar no i3... (2)
Debian Bookworm para a versão beta Debian 13 Trixie (2)
Como adicionar módulo de saúde da bateria dos notebooks Acer ao kernel... (21)
[Shell Script] Script para desinstalar pacotes desnecessários no OpenSuse
[Shell Script] Script para criar certificados de forma automatizada no OpenVpn
[Shell Script] Conversor de vídeo com opção de legenda
[C/C++] BRT - Bulk Renaming Tool
[Shell Script] Criação de Usuarios , Grupo e instalação do servidor de arquivos samba