Crivo de Eratóstenes Simples em Fortran 95
Publicado por Perfil removido (última atualização em 02/05/2012)
[ Hits: 6.186 ]
Para compilar, use: "gfortran sieve001.f95 -o sieve001", igual GNU Pascal e GCC
Particularidades desta linguagem:
- Início e fim de blocos demarcados por palavras, lembrando Pascal;
- Cláusula "Program" ao início do programa semelhante a Pascal;
- Declaração de variáveis no início do código, como em Pascal.
- Arrays podem ser bem flexíveis ao serem dimensionados;
- Usam-se parêntesis para determinar elementos de um array;
- A simples declaração "LISTAGEM(:)=12345" preenche todos os elementos do array LISTAGEM com o mesmo valor.
- Cláusula de fim de blocos terminam geralmente com a seguinte estrutura: "END" + "Comando titular do bloco" + "Identificador criador pelo programador". Exemplos: END DO, END IF, END PROGRAM XXXXXXX, END FUNCTION XXXXXXX;
- Comentários são declarados após um ponto de exclamação;
- Operadores lógicos são identificados por palavras abreviadas entre pontos (.OP.). Exemplos: .AND. .OR. .NOT. Provavelmente foi daí que veio .AND., .T. .F. do Dbase, Clipper etc.;
- Originalmente "maior que (>)", "menor que (<)", "maior ou igual que (>=)", "menor ou igual que (<=)" etc em Fortran escreviam-se igual ao que se usa hoje em Bash Script ou no comando test:
* Maior que: .GT. (Greater Than). Em Bash: -gt
* Menor que: .GT. (Less Than). Em Bash: -lt
* Maior ou igual que:: .GE. (Greater or Equal Than). Em Bash: -ge
* Menor ou igual que:: .LE. (Less or Equal Than). Em Bash: -ge
* Igual a: .EQ. (Equal). Em Bash -eq
* Diferente de: .NE. (Not Equal). Em Bash -ne
Usados dentro de colchetes em scripts em comandos "if/elif" e "while", por exemplo.
- Atualmente os operadores simbólicos consagrados do tipo ">" para a omparação "maior que" podem ser usados em lugar das letras e pontos. No script fica como exemplificado.
- Formatação de entrada/saída de strings e números, são mais complicadas que em C. São feitas com uma variável de string pré-declarada ou com um comando chamado "FORMAT", podendo até ter um número de linha de código (label) para identificá-lo. FORMAT lembra um comando chamado "PICTURE" do Clipper/XBase;
- Impressão de término de linha ('\n' em C) no comando Write pode ser cancelada com a incomum declaração "Advance='no'";
- Cláusula "PARAMETER" pode definir constantes;
- Strings são definidas por uma notação semelhante a uma multiplicação de um tipo de dado (Character) por um valor. Exemplo: 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).
- Não encontrei operador de auto-incremento semelhante ao "duplo mais" em C.
Fortran não é lacônico, conciso e simbólico quanto C, porém pode ser tão poderoso quanto. Existem algumas facilidades sintáticas que não devem ser subestimadas.
Program sieve001 ! Isto eh um comentario ! Para compilar, use: ! gfortran sieve001.f95 -o sieve001 ! igual GNU Pascal e GCC Integer :: i=5, j=0, l=2 Integer, Parameter :: p=5000000, q=348600 Integer, Dimension (1:q) :: primes Real :: k=0.0, n=5.0 Character*8 :: F1='(I0," ")' primes(1)=2 primes(2)=3 primes(3:)=1 Do While ((i .LE. p) .AND. (l .LT. q)) j = 1 k = SQRT(Real(i)) Do While ((Real(primes(j)) .LT. k) .AND. (MOD(i,primes(j)) .NE. 0)) j = j + 1 End Do If (Real(primes(j)) .GT. k) Then l = l + 1 primes(l) = i End If If (MOD(i,3) .EQ. 2) Then i = i + 2 Else i = i + 4 End If End Do !Character*8 :: F1='(BN,4A5)' Do j=1,l Write (*,F1,Advance='No') primes(j) End Do Print * End Program sieve001
Octave - Sistemas lineares por Gauss-Seidel
Octave - Sistemas lineares por Jacobi
Octave - Calcular raiz pelo método de Newton
Cálculo da raiz de uma função pelo Método da Bisseção - Octave
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)