Função Fatorial Recursiva em Fortran 95
Publicado por Perfil removido (última atualização em 02/05/2012)
[ Hits: 12.830 ]
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
Octave - Método de Runge-Kutta
Octave - Calcular raiz pelo método da Secante
Octave - Sistemas lineares por Gauss-Seidel
Passkeys: A Evolução da Autenticação Digital
Instalação de distro Linux em computadores, netbooks, etc, em rede com o Clonezilla
Título: Descobrindo o IP externo da VPN no Linux
Armazenando a senha de sua carteira Bitcoin de forma segura no Linux
Enviar mensagem ao usuário trabalhando com as opções do php.ini
Instalando Brave Browser no Linux Mint 22
vídeo pra quem quer saber como funciona Proteção de Memória:
Encontre seus arquivos facilmente com o Drill
Mouse Logitech MX Ergo Advanced Wireless Trackball no Linux
Compartilhamento de Rede com samba em modo Público/Anônimo de forma simples, rápido e fácil
VMs e Interfaces de Rede desapareceram (12)
Instalação do drive do adaptador wiffi (7)