Olá caro leitor,neste post irei apresentar um pequeno software com pouco mais de 120 linhas de código, este foi desenvolvido em linguagem Fortran77 e faz o cálculo do tipo da navegação baseado na informação de profundidade e da distância da costa.Este programa foi compilado gerando um executável com 64,9 kb,seu código fonte tem no total 126 linhas de código entre linhas de comentário,em branco e código fonte propriamente dito.
As regras de navegação foram obtidas através do livro NAVEGAÇÃO : CIÊNCIA E A ARTE, da Marinha do Brasil,o programa irá efetuar um simples cálculo hidroceanográfico.
Tipo da navegação: Águas Restritas
Distância: 3 mn
Profundidade: 20 metros
Precisão: 0,05 mn
Frequência(atualização): 3 minutos
Tipo da navegação: Águas Costeira
Distância:4 a 50 mn
Profundidade: 21 a 200 metros
Precisão: 0,5 mn
Frequência(atualização): 10 || 30
Tipo da navegação: Águas Oceânica
Distância: 51 + a mn
Profundidade: 500 + metros
Precisão: 1 || 2 mn
Frequência(atualização): 3 minutos
mn = milhas náuticas => 1.852 km
|| =.> sinal em computação numérica significa OU.
(Dados de 2006).
Agora que já obtemos as informações iremos para a parte lógica do nosso programa.
10 Recebe DISTANCIA
20 Se DISTANCIA = 0 => Voltar para 10
30 Converte DISTANCIA em : mn,m,yd,ft
40
50 Recebe PROFUNDIDADE
60 Se PROFUNDIDADE = 0 => Voltar para 50
70 Converte PROFUNDIDADE em : m,yd,ft
80
90 Se DISTANCIA = < 4 || Se PROFUNDIDADE = < 24
100 NAVEGACAO == AGUAS RESTRITAS
110
120
130 Se DISTANCIA = > 4 e < 50 || Se PROFUNDIDADE =<24 e> 201
140 NAVEGACAO == AGUAS RESTRITAS
150 ESCREVA RESULTADOS
160 Se DISTANCIA = > 50 || Se PROFUNDIDADE = > 500
170 NAVEGACAO == AGUAS OCEANICAS
180ESCREVA RESULTADOS
190
200 ESCREVA RESULTADOS FINAIS
210 ESCREVA TIPO DA NAVEGAÇÃO.
Veja agora abaixo a "print" do programa em execução e o código fonte.
(Clique para expandir.)
C
C NAME: TNA
C AUTHOR: Lucas de Matos Rocha
C DESCRIPTION: Calcular o tipo da navegação
C DATE:
C
C .START
PROGRAM TIPONAVEG
C .DATA
REAL TNV;
C REAL TNV = Tipo navegacao
REAL D,P;
C REAL D = Distancia
C REAL P = Profundidade
CHARACTER MSG*(10);
C CHAR MSG = Mensagens
CHARACTER SPC_*(30);
SPC_='...........................';
C ESPACO 30 CHARACTERS
C .CODE
WRITE(*,*),SPC_,'TIPO DA NAVEGACAO ',SPC_;
PRINT'(a)',' '!PULAR LINHA
C
C #### DISTANCIA ####
C
WRITE(*,*),'INSIRA A DISTANCIA:(KM)' ;
PRINT'(a)',' '!PULAR LINHA
READ (*,*),D;
PRINT'(a)',' '!PULAR LINHA
DO WHILE (D==0)
PRINT'(a)',' '!PULAR LINHA
WRITE(*,*),'A Distancia nao pode ser 0 (ZERO).'
PRINT'(a)',' '!PULAR LINHA
WRITE(*,*),'INSIRA A DISTANCiA:(KM)'
PRINT'(a)',' '!PULAR LINHA
READ (*,*),D;
END DO
PRINT'(a)','_DISTANCIA_'
WRITE(*,*),'NM:',D/1.852 ,' Milhas N uticas'
WRITE(*,*),'M :',D/1000 ,' Metros'
WRITE(*,*),'YD:',D/0.91439920429,' Jardas'
WRITE(*,*),'FT:',D/0.3048,' Pes'
PRINT'(a)',' '!PULAR LINHA
C
C #### PROFUNDIDADE ####
C
WRITE(*,*),'INSIRA A PROFUNDIDA:(M)'
PRINT'(a)',' '!PULAR LINHA
READ (*,*),P;
PRINT'(a)',' '!PULAR LINHA
DO WHILE (P==0)
PRINT'(a)',' '!PULAR LINHA
WRITE(*,*),'A Profundidade nao pode ser 0 (ZERO).'
PRINT'(a)',' '!PULAR LINHA
WRITE(*,*),'INSIRA A Profundidade:(M)'
PRINT'(a)',' '!PULAR LINHA
READ (*,*),P;
END DO
PRINT'(a)','_PROFUNDIDADE_'
WRITE(*,*),'M :',P,' Metros'
WRITE(*,*),'YD:',P/0.91439920429,' Jardas'
WRITE(*,*),'FT:',P/0.3048,' Pes'
PRINT'(a)',' '!PULAR LINHA
C #### OCEANICA ####
C
IF(D>50)THEN
IF(P>500)THEN
PRINT'(a)','TIPO DA NAVEGACAO [( OCEANICA )]'
ENDIF
ENDIF
C ####
C #### COSTEIRA ####
C
IF(D<50)THEN
IF(D>4)THEN
IF(P<500)THEN
IF(P>24 )THEN
PRINT'(a)','TIPO DA NAVEGACAO [( COSTEIRA )]'
ENDIF
ENDIF
ENDIF
ENDIF
C ####
C
C #### RESTRITA ####
C
IF(D<4)THEN
IF(P<24)THEN
PRINT'(a)','TIPO DA NAVEGACAO [( RESTRITA )]'
ENDIF
ENDIF
C ####
C .END BLOCK
PRINT'(a)',' '!PULAR LINHA
PRINT'(a)','Lucas Softwares 2010-2012'
PRINT'(a)','Scientific Software'
PRINT'(a)','Free Softwre GPL 3.0 '
PRINT'(a)',' '!PULAR LINHA
PRINT'(a)',' Pressione "ENTER"'!
PRINT'(a)',' '!PULAR LINHA
PAUSE
RETURN;
STOP
END
;

Nenhum comentário:
Postar um comentário