<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-7476510521545171110</id><updated>2012-02-02T22:52:30.454-08:00</updated><category term='fortran conversões'/><category term='fortran erros comuns'/><category term='fortran otimização de código'/><category term='fortran iniciantes'/><category term='fortran codigos fonte'/><category term='fortran comparações'/><category term='fortran downloads'/><category term='fortran cunho científico'/><category term='fortran dicas'/><category term='fortran faq'/><title type='text'>FORTRAN BR</title><subtitle type='html'>Blog para discussão sobre dúvidas e outros aspectos de programação, preferencialmente em Linguagem FORTRAN. (Autorizada a reprodução, desde que citada a fonte.)</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>25</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-7208637421538965419</id><published>2011-10-11T06:16:00.000-07:00</published><updated>2011-10-11T06:16:27.686-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran faq'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran iniciantes'/><title type='text'>Como determinar se um número é PAR ou ÍMPAR em FORTRAN</title><content type='html'>&lt;div dir="ltr" style="text-align: left;" trbidi="on"&gt;Acredito que a forma mais fácil de determinar se um número é &lt;b&gt;PAR&lt;/b&gt; ou &lt;b&gt;ÍMPAR&lt;/b&gt; em &lt;b style="background-color: #f3f3f3; color: blue;"&gt;FORTRAN&lt;/b&gt;&lt;span style="background-color: #f3f3f3; color: blue;"&gt; &lt;/span&gt;é utilizando a função intrínseca MOD(.), que retorna o resto de uma divisão. Se o resto de uma divisão por 2 é igual a zero, o número é par, se é igual a um, o número é ímpar.&lt;br /&gt;Nesse caso, para determinar se X é par, tem-se:&lt;br /&gt;&lt;br /&gt;!PARA O CASO DE X &lt;u&gt;REAL: &lt;/u&gt;&lt;br /&gt;IF ( MOD( X , 2.D0) == 0 ) THEN&amp;nbsp; !&amp;nbsp; -&amp;gt;&amp;nbsp; X é PAR!&lt;br /&gt;&lt;br /&gt;!PARA O CASO DE X &lt;u&gt;INTEIRO: &lt;/u&gt;&lt;br /&gt;&lt;br /&gt;IF ( MOD( X , 2) == 0 ) THEN&amp;nbsp; !&amp;nbsp; -&amp;gt;&amp;nbsp; X é PAR!&lt;br /&gt;&lt;br /&gt;Caso contrário, X é ÍMPAR. &lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-7208637421538965419?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/7208637421538965419/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2011/10/como-determinar-se-um-numero-e-par-ou.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/7208637421538965419'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/7208637421538965419'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2011/10/como-determinar-se-um-numero-e-par-ou.html' title='Como determinar se um número é PAR ou ÍMPAR em FORTRAN'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-8104718467404443508</id><published>2010-04-04T13:48:00.000-07:00</published><updated>2010-04-04T14:06:11.188-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran faq'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran codigos fonte'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>COMO MODIFICAR ALGO QUE JÁ FOI ESCRITO NA TELA - MOSTRAR PORCENTAGEM DE PROCESSAMENTO...</title><content type='html'>"Modificar" algo que foi escrito na tela não é algo difícil. Neste post mostra-se como fazer isso em Windows, utilizando o Compaq Visual Fortran 6.6. O procedimento deve ser semelhante para outros compiladores e outros sistemas operacionais.&lt;br /&gt;&lt;strong&gt;Basta declarar uso da biblioteca que permite manipular a saída padrão (Standard Output) obter o handle (identificador) da mesma, posicionar o cursor no local que se deseja modificar o que foi escrito, e escrever o que quiser.&lt;/strong&gt;&lt;br /&gt;Em outras palavras...&lt;br /&gt;&lt;br /&gt;PROGRAM MAIN&lt;br /&gt;&lt;br /&gt;    USE DFLIB         !PARA PODER UTILIZAR A FUNÇÃO SLEEP&lt;br /&gt;    USE DFWIN       !PARA TER ACESSO ÀS FUNÇÕES RELACIONADAS AO CONSOLE&lt;br /&gt;    INTEGER :: I, HANDLE1       !UM INTEIRO PARA A PORCENTAGEM,&lt;br /&gt;                                                        !OUTRO PARA O IDENTIFICADOR&lt;br /&gt;    TYPE(T_COORD) WPOS1     !PARA ARMAZENAR A POSIÇÃO&lt;br /&gt;    LOGICAL LSTAT1&lt;br /&gt;&lt;br /&gt;!OBTENDO O IDENTIFICADOR DA SAÍDA PADRÃO&lt;br /&gt;HANDLE1 = GETSTDHANDLE(STD_OUTPUT_HANDLE)&lt;br /&gt;&lt;br /&gt;! POSIÇÃO ONDE SE VAI ESCREVER&lt;br /&gt;WPOS1.X = 0      ! 0 CARACTERES PARA A ESQUERDA&lt;br /&gt;WPOS1.Y = 0      ! 0 LINHAS PARA BAIXO&lt;br /&gt;&lt;br /&gt;DO I=1,100&lt;br /&gt;         !POSICIONANDO&lt;br /&gt;         LSTAT1 = SETCONSOLECURSORPOSITION(HANDLE1, WPOS1)&lt;br /&gt;         !ESCREVENDO&lt;br /&gt;         WRITE(*,*) I,'%'&lt;br /&gt;         !ESPERANDO&lt;br /&gt;         CALL SLEEPQQ(200)&lt;br /&gt;END DO&lt;br /&gt;&lt;br /&gt;END PROGRAM MAIN&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-8104718467404443508?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/8104718467404443508/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2010/04/como-modificar-algo-que-ja-foi-escrito.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/8104718467404443508'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/8104718467404443508'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2010/04/como-modificar-algo-que-ja-foi-escrito.html' title='COMO MODIFICAR ALGO QUE JÁ FOI ESCRITO NA TELA - MOSTRAR PORCENTAGEM DE PROCESSAMENTO...'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-6993246985545408714</id><published>2010-03-23T09:11:00.001-07:00</published><updated>2010-03-23T10:03:50.684-07:00</updated><title type='text'>Inserindo um CRONÔMETRO no seu programa - MEDIÇÃO DO TEMPO DE EXECUÇÃO</title><content type='html'>Neste post é apresentado um cronômetro simples com interface gráfica mais simples ainda, que permite mostrar o tempo (em segundos) decorrido desde o início da execução de um código qualquer. A figura abaixo dá uma idéia do cronômetro supracitado (pequena caixa de diálogo que aparece no canto superior esquerdo da figura).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 230px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5451865979380213778" border="0" alt="" src="http://2.bp.blogspot.com/_QzyNAIs9Qmg/S6jrORf-qBI/AAAAAAAAALA/PGUV_lZ_8C4/s400/IMAGEM-CRON.JPG" /&gt;OBSERVAÇÃO: Primeiro de tudo, não esqueça que o acoplamento deste cronômetro ao seu código deixará sua aplicação um pouco mais lenta!&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;ACOPLANDO O CRONÔMETRO À SUA APLICAÇÃO&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;O primeiro passo é baixar o código fonte (um projeto completo utilizando o cronômetro, mostrado na figura acima), para isto basta &lt;a href="http://rapidshare.com/files/367211006/CRONOMETRO_fortranbr.blogspot.com.zip"&gt;&lt;strong&gt;clicar aqui e baixar o arquivo .zip hospedado no&lt;/strong&gt; &lt;strong&gt;rapidshare!&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;No exemplo, o cronômetro foi inserido em um projeto FORTRAN CONSOLE APPLICATION. Tudo foi desenvolvido em Compaq Visual Fortran 6.6.&lt;/p&gt;&lt;p&gt;Após baixar os arquivos, copie ATUALIZA_CRON.F90, CRONOMETRO_DIALOG.rc e RESOURCE.fd para a pasta do seu projeto.&lt;/p&gt;&lt;p&gt;(Procedimento verificado apenas em CVF 6.6) &lt;/p&gt;&lt;p&gt;Com seu projeto aberto no CVF, clique no menu Project, vá em Add to Project e clique em Files. Adicione os arquivos CRONOMETRO_DIALOG.rc e RESOURCE.fd.&lt;/p&gt;&lt;p&gt;Na subrotina que você quer cronometrar, insira as definições para utilizar o cronômetro:&lt;/p&gt;&lt;p&gt;&lt;span style="color:#333399;"&gt;!******************************************************************&lt;br /&gt;! DEFINIÇÕES PARA UTILIZAR O CRONÔMETRO&lt;br /&gt;USE DFPORT !PARA USAR A FUNÇÃO TIMEF&lt;br /&gt;USE DFLOGM&lt;br /&gt;INCLUDE 'RESOURCE.FD'&lt;br /&gt;TYPE (DIALOG) DLG&lt;br /&gt;LOGICAL RETLOG&lt;br /&gt;REAL*8 :: TEMPO&lt;br /&gt;!******************************************************************&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="color:#333399;"&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;E logo após a definição das variáveis de sua subrotina, insira o código para inicializar o cronômetro:&lt;/p&gt;&lt;p&gt;&lt;span style="color:#333399;"&gt;!*******************************************************************&lt;br /&gt;!INICIALIZANDO O CRONÔMETRO&lt;br /&gt;RETLOG = DLGINIT(101,DLG) !INICIALIZANDO A CAIXA DE DIÁLOGO&lt;br /&gt;IRET = DLGMODELESS(DLG) !IMPRIMINDO A CAIXA NA TELA (NÃO MODAL)&lt;br /&gt;TEMPO = TIMEF() !INICIALIZANDO A CONTAGEM DO TEMPO&lt;br /&gt;!******************************************************************* &lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#ff0000;"&gt;PRONTO!!!&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#000000;"&gt;Agora é só chamar a subrotina que atualiza o tempo dentro dos principais loops da subrotina a ser cronometrada:&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#333399;"&gt;&lt;em&gt;CALL ATUALIZACRON(DLG) !ATUALIZAR TEMPO MOSTRADO NA CAIXA DE DIÁLOGO &lt;/em&gt;&lt;/span&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;O CRONÔMETRO PODE SER MODIFICADO E MELHORADO CONFORME SUAS NECESSIDADES.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Para modificá-lo, vá em ResourceView e clique duas vezes em IDD_DIALOGTEMPO. A aba ResourceView fica imediatamente abaixo de onde aparecem os nomes dos arquivos do seu projeto. &lt;/p&gt;&lt;br /&gt;Uma ótima referência sobre Interfaces Gráficas em CVF 6.6 é encontrada no post &lt;a href="http://fortranbr.blogspot.com/2009/06/apostila-visual-fortran-desenvolver.html"&gt;Desenvolver interfaces gráficas&lt;/a&gt;.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-6993246985545408714?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/6993246985545408714/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2010/03/inserindo-um-cronometro-no-seu-programa.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/6993246985545408714'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/6993246985545408714'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2010/03/inserindo-um-cronometro-no-seu-programa.html' title='Inserindo um CRONÔMETRO no seu programa - MEDIÇÃO DO TEMPO DE EXECUÇÃO'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QzyNAIs9Qmg/S6jrORf-qBI/AAAAAAAAALA/PGUV_lZ_8C4/s72-c/IMAGEM-CRON.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-9045743304392412093</id><published>2010-03-22T09:28:00.000-07:00</published><updated>2010-03-22T10:05:31.573-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran comparações'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran otimização de código'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>Comparação: MATMUL versus DGEMM (Multiplicação de Matrizes)</title><content type='html'>Neste post é feita uma comparação de tempo de processamento (utilizando a função CPU_TIME) entre multiplicações de matrizes quadradas utilizando a função intrínseca MATMUL e a subrotina DGEMM da biblioteca IMSL.&lt;br /&gt;&lt;br /&gt;Os dois casos explicados a seguir foram feitos para TAM = 1000, ou seja, para matrizes de tamanho 1000 x 1000.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;PRIMEIRO CASO&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Para o primeiro caso, as matrizes a serem multiplicadas (A*B) são definidas como:&lt;br /&gt;DO i=1,TAM&lt;br /&gt;DO j=1,TAM&lt;br /&gt;A(i,j) = i + j&lt;br /&gt;B(i,j) = i + j&lt;br /&gt;END DO&lt;br /&gt;END DO&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;SEGUNDO CASO&lt;br /&gt;&lt;/span&gt;&lt;/strong&gt;Para o segundo caso, as matrizes a serem multiplicadas (A*B) são definidas como:&lt;br /&gt;DO i=1,TAM&lt;br /&gt;DO j=1,TAM&lt;br /&gt;A(i,j) = i &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;-&lt;/span&gt;&lt;/strong&gt; j&lt;br /&gt;B(i,j) = i &lt;strong&gt;+&lt;/strong&gt; j&lt;br /&gt;END DO&lt;br /&gt;END DO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;RESULTADOS&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#000000;"&gt;Os resultados estão resumidos no seguinte gráfico:&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;a href="http://4.bp.blogspot.com/_QzyNAIs9Qmg/S6ejKbmpx3I/AAAAAAAAAKw/o9P4KpwuSwY/s1600-h/MATMULxDGEMM.JPG"&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 229px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5451505273559172978" border="0" alt="" src="http://4.bp.blogspot.com/_QzyNAIs9Qmg/S6ejKbmpx3I/AAAAAAAAAKw/o9P4KpwuSwY/s400/MATMULxDGEMM.JPG" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p&gt;Para os dois casos estudados, &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;MATMUL foi cerca de 5 vezes mais lento que DGEMM&lt;/span&gt;&lt;/strong&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;CONCLUSÕES&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;em&gt;&lt;strong&gt;Caso você tenha acesso à biblioteca IMSL, vale a pena gastar um pouco de tempo substituindo a função MATMUL pela DGEMM em todos os seus programas que utilizem multiplicação de matrizes.&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;em&gt;&lt;strong&gt;Caso não tenha acesso a esta biblioteca, vale a pena ver se há outra subrotina que você possa utilizar no lugar da MATMUL e fazer uma breve comparação entre elas.&lt;/strong&gt;&lt;/em&gt;&lt;/span&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-9045743304392412093?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/9045743304392412093/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2010/03/comparacao-matmul-versus-dgemm.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/9045743304392412093'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/9045743304392412093'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2010/03/comparacao-matmul-versus-dgemm.html' title='Comparação: MATMUL versus DGEMM (Multiplicação de Matrizes)'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QzyNAIs9Qmg/S6ejKbmpx3I/AAAAAAAAAKw/o9P4KpwuSwY/s72-c/MATMULxDGEMM.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-8586805912839437808</id><published>2010-03-21T06:57:00.000-07:00</published><updated>2010-03-21T07:47:46.050-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran comparações'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran otimização de código'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>Comparação (de velocidade de processamento): mesclando código .FOR + .F90, usando ou não subrotinas (funções)...</title><content type='html'>&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;O QUE É COMPARADO?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;Neste post são comparados alguns resultados (de tempo de processamento) para a realização de um conjunto determinado de operações, englobando os casos a seguir. Todos os exemplos foram desenvolvidos utilizando o Compaq Visual Fortran 6.6.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;1. F90&lt;/strong&gt;&lt;br /&gt;O código é todo escrito em Fortran 90. São feitos dois arquivos, MAIN.F90 e FUNC.F90. O programa MAIN chama a função presente em FUNC.F90 um total de NUM_ITE vezes, e repete o procedimento um total de NUM_REPETICOES vezes, obtendo a média do tempo de processamento.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;2. F90 + FOR&lt;/strong&gt;&lt;br /&gt;Semelhante ao caso &lt;strong&gt;.F90&lt;/strong&gt;, sendo que o arquivo MAIN é um .F90, e o arquivo FUNC é um .FOR (formato fixo).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;3. F90 Direto&lt;/strong&gt;&lt;br /&gt;O arquivo FUNC deixa de existir, as operações são inseridas no arquivo MAIN diretamente. O código é todo escrito em F90.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;4. FOR Direto&lt;/strong&gt;&lt;br /&gt;Semelhante ao &lt;strong&gt;F90 Direto&lt;/strong&gt;, mas o código é todo escrito em formato fixo (.FOR).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;5. F90 mesclado&lt;/strong&gt;&lt;br /&gt;Todo o código do arquivo FUNC é inserido após o fim do programa MAIN, de forma que se trabalha com uma subrotina (função) à parte, mas tanto o programa quanto a função ficam presentes no mesmo arquivo. Todo o código é escrito em formato livre (.F90).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;6. FOR mesclado&lt;/strong&gt;&lt;br /&gt;Semelhante ao &lt;strong&gt;F90 mesclado&lt;/strong&gt;, mas o código é escrito em formato fixo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;QUAIS SÃO AS OPERAÇÕES EFETUADAS?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Foram executados três exemplos com diferentes conjuntos de operações, para todos os casos NUM_REPETICOES = 3 (para efetuar a média de tempo de processamento).&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;PRIMEIRO CONJUNTO DE OPERAÇÕES&lt;/strong&gt;&lt;br /&gt;Y = X**2&lt;br /&gt;Y = Y + 0.02D0&lt;br /&gt;NUM_ITE = 1E9&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;SEGUNDO CONJUNTO DE OPERAÇÕES&lt;/strong&gt;&lt;br /&gt;Y = X**2&lt;br /&gt;Y = Y + 0.02D0&lt;br /&gt;Y = SQRT(Y)&lt;br /&gt;Y = Y/2.25D0&lt;br /&gt;NUM_ITE = 5E8&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;TERCEIRO CONJUNTO DE OPERAÇÕES&lt;/strong&gt;&lt;br /&gt;Y = X**2.2D0&lt;br /&gt;Y = Y + 0.0225D0&lt;br /&gt;Y = SQRT(Y)&lt;br /&gt;Y = SIN(Y)&lt;br /&gt;Y = Y/2.25673D0&lt;br /&gt;Y = COS(Y)&lt;br /&gt;NUM_ITE = 5E7&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;QUAIS FORAM OS RESULTADOS?&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;O tempo de processamento para cada caso é mostrado na figura abaixo.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 226px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5451096030788200514" border="0" alt="" src="http://2.bp.blogspot.com/_QzyNAIs9Qmg/S6Yu9XesKEI/AAAAAAAAAJA/YS_672Pd5kU/s400/Compara_f90_for.jpg" /&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;span style="font-size:130%;color:#000099;"&gt;CONCLUSÕES&lt;/span&gt;&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;Para os casos estudados:&lt;/p&gt;&lt;p&gt;1 - Mesclar códigos escritos em .FOR com códigos em .F90 não leva a grandes diferenças de custo computacional.&lt;/p&gt;&lt;p&gt;2 - Utilizar subrotinas (funções) em diferentes arquivos ou mescladas num mesmo arquivo não leva a grandes diferenças também.&lt;/p&gt;&lt;p&gt;3 - Efetuar as operações diretamente no código principal é mais rápido do que efetuar as operações em subrotinas (funções) à parte. No entanto, à medida que a complexidade das operações aumenta, o custo de chamada da função perde importância.&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;&lt;span style="color:#000099;"&gt;Portanto, para grandes problemas (com operações complexas) a clareza de código obtida utilizando subrotinas supera de longe o acréscimo de custo computacional.&lt;/span&gt;&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;4 - &lt;strong&gt;&lt;span style="color:#000099;"&gt;&lt;em&gt;Para problemas mais complexos (conjunto de operações 3) todos os seis casos apresentaram praticamente o mesmo custo computacional.&lt;/em&gt;&lt;/span&gt;&lt;/strong&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;-------------------- x ----------------------- x -----------------------&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-8586805912839437808?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/8586805912839437808/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2010/03/comparacao-de-velocidade-de.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/8586805912839437808'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/8586805912839437808'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2010/03/comparacao-de-velocidade-de.html' title='Comparação (de velocidade de processamento): mesclando código .FOR + .F90, usando ou não subrotinas (funções)...'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QzyNAIs9Qmg/S6Yu9XesKEI/AAAAAAAAAJA/YS_672Pd5kU/s72-c/Compara_f90_for.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-919866990969192137</id><published>2009-12-13T03:55:00.000-08:00</published><updated>2009-12-13T04:58:14.703-08:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran comparações'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>MATLAB versus FORTRAN - 1 - somatório simples</title><content type='html'>Pretendo fazer algumas comparações entre &lt;span style="color:#ff0000;"&gt;&lt;strong&gt;MATLAB&lt;/strong&gt;&lt;/span&gt; e &lt;span style="color:#000099;"&gt;&lt;strong&gt;FORTRAN&lt;/strong&gt;&lt;/span&gt;, e este é o primeiro post com tal objetivo. Dois aspectos principais serão verificados: a quantidade de linhas do código fonte, que se relaciona com a facilidade de escrita na linguagem, e o tempo de processamento, que está diretamente vinculado ao tempo de execução. Como se sabe, o MATLAB, por ser uma linguagem interpretada (sem geração de código executável) tende a ser mais lento, no entanto, existem muitas facilidades no mesmo que diminuem o tempo de programação requerido.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;No intuito de medir o tempo nos dois ambientes sem que haja muita diferença no método de medição, optou-se por utilizar as funções tic e toc, no MATLAB, e a função TIMEF() do FORTRAN (biblioteca DFPORT). A descrição destas funções é a seguinte:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 421px; DISPLAY: block; HEIGHT: 124px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5414693329883116050" border="0" alt="" src="http://4.bp.blogspot.com/_QzyNAIs9Qmg/SyTa5S9cMhI/AAAAAAAAAIo/K__uTJC7D8E/s400/tictoc_timef.jpg" /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;O primeiro exemplo é um somatório simples, para i variando de 1 a 1 bilhão, conforme o código abaixo (em MATLAB):&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;j=0;&lt;br /&gt;tic&lt;br /&gt;for i=1:1000000000&lt;br /&gt;j=j+1;&lt;br /&gt;end&lt;br /&gt;toc&lt;/p&gt;&lt;p&gt;O número de linhas do código fonte foi de &lt;span style="color:#ff0000;"&gt;6 linhas para o MATLAB&lt;/span&gt; contra &lt;span style="color:#000099;"&gt;10 linhas do FORTRAN&lt;/span&gt; (sem contar cabeçalho e finalização da função).&lt;br /&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;O tempo médio de execução para 10 repetições é mostrado a seguir:&lt;/p&gt;&lt;p&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 366px; DISPLAY: block; HEIGHT: 296px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5414703657508838930" border="0" alt="" src="http://2.bp.blogspot.com/_QzyNAIs9Qmg/SyTkScXSnhI/AAAAAAAAAIw/aZgPAq0PVjI/s400/MATLABxFORTRAN-01tabela.jpg" /&gt;&lt;/p&gt;&lt;p&gt;Verificou-se que, para este exemplo, o MATLAB foi quase duas vezes mais lento que o FORTRAN.&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-919866990969192137?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/919866990969192137/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/12/matlab-versus-fortran-1-somatorio.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/919866990969192137'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/919866990969192137'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/12/matlab-versus-fortran-1-somatorio.html' title='MATLAB versus FORTRAN - 1 - somatório simples'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QzyNAIs9Qmg/SyTa5S9cMhI/AAAAAAAAAIo/K__uTJC7D8E/s72-c/tictoc_timef.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-2652520926471883552</id><published>2009-10-29T11:42:00.000-07:00</published><updated>2009-10-29T11:59:51.959-07:00</updated><title type='text'>VISITAS... Onde se programa em FORTRAN no Brasil?</title><content type='html'>&lt;div&gt;Este post traz apenas uma curiosidade: as visitas a este blog no mês de outubro (na verdade de 28 de setembro a 28 de outubro) divididas &lt;span style="color:#000099;"&gt;por cidade&lt;/span&gt;. Dá pra se ter uma idéia superficial de lugares nos quais o FORTRAN tem sido utilizado no &lt;strong&gt;&lt;span style="color:#009900;"&gt;Brasil&lt;/span&gt;&lt;/strong&gt;... Rio de Janeiro aparece em primeiro lugar com 25 visitas, seguido por Salvador com 20 visitas e São Paulo com 19 visitas.&lt;/div&gt;&lt;div&gt; &lt;/div&gt;&lt;br /&gt;&lt;img style="TEXT-ALIGN: center; MARGIN: 0px auto 10px; WIDTH: 400px; DISPLAY: block; HEIGHT: 344px; CURSOR: hand" id="BLOGGER_PHOTO_ID_5398097973823849106" border="0" alt="" src="http://3.bp.blogspot.com/_QzyNAIs9Qmg/SunlgcCGwpI/AAAAAAAAAIY/JBNXFTLSjog/s400/Visitas_out2009.JPG" /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;O Blog recebeu ainda 20 visitas &lt;span style="color:#330099;"&gt;internacionais&lt;/span&gt; este mês.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Agradeço &lt;strong&gt;a todos que visitaram o Fortran-BR&lt;/strong&gt;, e peço que deixem mais comentários nos posts ou, pelo menos, digam o que acharam por meio das reações ao final de cada post (péssimo, ruim, bom, interessante...). Até mais!&lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;OBS.: Os dados das visitas foram obtidos por meio do serviço &lt;a href="http://www.google.com/analytics/"&gt;Google Analytics&lt;/a&gt;.&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-2652520926471883552?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/2652520926471883552/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/10/visitas-onde-se-programa-em-fortran-no.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/2652520926471883552'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/2652520926471883552'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/10/visitas-onde-se-programa-em-fortran-no.html' title='VISITAS... Onde se programa em FORTRAN no Brasil?'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QzyNAIs9Qmg/SunlgcCGwpI/AAAAAAAAAIY/JBNXFTLSjog/s72-c/Visitas_out2009.JPG' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-1050764626340701756</id><published>2009-10-29T10:10:00.000-07:00</published><updated>2009-10-29T10:27:44.574-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran faq'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran conversões'/><title type='text'>Convertendo CHARACTER para REAL ou INTEGER</title><content type='html'>Como esqueço o tempo todo como fazer essas conversões, decidi escrever aqui um resumo do processo.&lt;br /&gt;&lt;br /&gt;Tomando-se as seguintes 3 variáveis:&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;CHARACTER(100) :: TEXTO&lt;br /&gt;REAL*8 :: VALOR_REAL&lt;br /&gt;INTEGER :: VALOR_INTEIRO&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;Se um "número" é armazenado no TEXTO, por exemplo:&lt;br /&gt;TEXTO = '5.6987'&lt;br /&gt;a conversão pode ser feita utilizando o READ() de forma bem simples.&lt;br /&gt;&lt;br /&gt;READ(TEXTO,*) VALOR_REAL&lt;br /&gt;READ(TEXTO,*) VALOR_INTEIRO.&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;Converter variáveis FORTRAN, conversão de variáveis, texto para número, caracter para real, caracter para inteiro.&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-1050764626340701756?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/1050764626340701756/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/10/convertendo-character-para-real-ou.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/1050764626340701756'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/1050764626340701756'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/10/convertendo-character-para-real-ou.html' title='Convertendo CHARACTER para REAL ou INTEGER'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-131604658103320081</id><published>2009-10-19T08:10:00.000-07:00</published><updated>2009-10-19T08:29:59.087-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran erros comuns'/><title type='text'>Overflow condition - números inteiros em Fortran</title><content type='html'>Uma pequena explicação sobre números inteiros e &lt;em&gt;"overflow condition".&lt;/em&gt;&lt;br /&gt;A chamada &lt;em&gt;overflow condition&lt;/em&gt; ocorre quando se tenta armazenar numa variável do tipo inteiro um número maior que o valor máximo possível ou menor que o valor mínimo possível.&lt;br /&gt;Esses limites existem pois, quando declaramos uma variável, um determinado espaço de memória é reservado para guardar o valor da tal variável.&lt;br /&gt;Considerando um inteiro de &lt;em&gt;n &lt;/em&gt;bits, usualmente o menor número que pode ser armazenado é dado por:&lt;br /&gt;&lt;span style="color:#000066;"&gt;menor_valor_inteiro = -2**(n-1)&lt;/span&gt;&lt;br /&gt;e o maior valor é dado por:&lt;br /&gt;&lt;span style="color:#000066;"&gt;maior_valor_inteiro = 2**(n-1) -1          !&lt;/span&gt;&lt;span style="color:#000066;"&gt;(O  '-1' é o espaço reservado ao zero) .&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style="color:#000000;"&gt;O tipo mais comum de inteiros nos computadores de hoje em dia são os inteiros de quatro bytes (1 byte = 8 bits;  4 bytes = 32 bits), que, portanto, podem armazenar qualquer número inteiro entre -2,147,483,648  e  2,147,483,647.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;Portanto, se você tiver problemas com overflow condition, a solução pode ser simplesmente ter que trocar um INTEGER por um INTEGER*8.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-131604658103320081?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/131604658103320081/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/10/overflow-condition-numeros-inteiros-em.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/131604658103320081'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/131604658103320081'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/10/overflow-condition-numeros-inteiros-em.html' title='Overflow condition - números inteiros em Fortran'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-6459916104673290191</id><published>2009-08-04T06:21:00.000-07:00</published><updated>2009-08-18T04:38:41.111-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran faq'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran downloads'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran iniciantes'/><title type='text'>Programa para renomear projetos: Compaq Visual Fortran 6.6</title><content type='html'>Depois de ter perdido muito tempo procurando como &lt;span style="color:#ff0000;"&gt;renomear um projeto dentro do Compaq Visual Fortran 6.6&lt;/span&gt; e não conseguindo, terminei por descobrir uma forma de renomear o projeto fora do mesmo. O processo é bastante simples, mas decidi fazer um programa para torná-lo ainda mais fácil e rápido.&lt;br /&gt;&lt;div&gt;&lt;img id="BLOGGER_PHOTO_ID_5366105535249594562" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 292px; CURSOR: hand; HEIGHT: 198px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_QzyNAIs9Qmg/Sng8ja_POMI/AAAAAAAAAHw/cb7jexqetLY/s400/renamer.JPG" border="0" /&gt;O pequeno programa, que trabalha em cima dos arquivos .dsw e .dsp, deve ser copiado para a pasta onde se encontram os arquivos .dsw e .dsp do projeto que se deseja renomear e lá executado. Depois de pedir o nome atual do projeto e o novo nome, o programa cria dois novos arquivos (um .dsw e um .dsp) com o novo nome. Verifique se está tudo ok com o projeto renomeado abrindo-o (abra o workspace '.dsw' no Developer Studio). Se tiver dado tudo certo você pode deletar os antigos arquivos .dsw e .dsp.&lt;br /&gt;&lt;/div&gt;&lt;em&gt;&lt;/em&gt;&lt;br /&gt;&lt;div&gt;&lt;em&gt;OBS.:&lt;/em&gt; &lt;em&gt;É recomendável fazer um backup do projeto antes de utilizar este programa, pois o mesmo não foi testado exaustivamente, tendo sido feito apenas para suprir a necessidade do próprio autor.&lt;/em&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Faça &lt;a href="http://rapidshare.com/files/263626056/CVF_RENAMER_fortranbr.blogspot.com.exe"&gt;&lt;strong&gt;aqui do download do programa (450Kb)&lt;/strong&gt;&lt;/a&gt;, pelo rapidshare.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;P.S.1: Caso você, leitor, se interesse pelo &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;código fonte&lt;/span&gt;&lt;/strong&gt; deste pequeno programa, deixe seu &lt;strong&gt;&lt;span style="color:#ff0000;"&gt;comentário&lt;/span&gt;&lt;/strong&gt; neste post. Posso disponibilizar o projeto completo posteriormente.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-6459916104673290191?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/6459916104673290191/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/08/programa-para-renomear-projetos-compaq.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/6459916104673290191'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/6459916104673290191'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/08/programa-para-renomear-projetos-compaq.html' title='Programa para renomear projetos: Compaq Visual Fortran 6.6'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QzyNAIs9Qmg/Sng8ja_POMI/AAAAAAAAAHw/cb7jexqetLY/s72-c/renamer.JPG' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-2006083845325889670</id><published>2009-07-31T11:49:00.000-07:00</published><updated>2009-08-19T06:37:16.064-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran faq'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran erros comuns'/><title type='text'>ERROS COMUNS: Exponenciação - número negativo elevado a um potência real</title><content type='html'>Sabe-se que a expressão:&lt;br /&gt;&lt;div align="center"&gt;&lt;em&gt;y&lt;/em&gt; = &lt;em&gt;x&lt;/em&gt; ** &lt;em&gt;n&lt;/em&gt;,&lt;/div&gt;onde &lt;em&gt;y&lt;/em&gt; e &lt;em&gt;x&lt;/em&gt; são reais, e &lt;em&gt;n&lt;/em&gt; é um inteiro, equivale a simplesmente multiplicar &lt;em&gt;x&lt;/em&gt; por ele mesmo &lt;em&gt;n&lt;/em&gt; vezes, e é isso exatamente que o computador faz ao encontrar uma expressão desse tipo.&lt;br /&gt;&lt;br /&gt;No entanto, quando se tem algo do tipo:&lt;br /&gt;&lt;div align="center"&gt;&lt;em&gt;y&lt;/em&gt; = &lt;em&gt;x&lt;/em&gt; ** &lt;em&gt;z&lt;/em&gt;,&lt;/div&gt;&lt;div align="justify"&gt;onde &lt;em&gt;y&lt;/em&gt;, &lt;em&gt;x&lt;/em&gt; e &lt;em&gt;z&lt;/em&gt; são reais, &lt;em&gt;z&lt;/em&gt; pode ser igual a, por exemplo, 2.5. É fisicamente impossível multiplicar um número por ele mesmo 2.5 vezes, e portanto é necessário recorrer a métodos indiretos para calcular &lt;em&gt;x&lt;/em&gt; ** &lt;em&gt;z&lt;/em&gt;. O método mais comum para este caso é o seguinte:&lt;/div&gt;&lt;div align="center"&gt;&lt;em&gt;x&lt;/em&gt; ** &lt;em&gt;z&lt;/em&gt; = exp(&lt;em&gt;z&lt;/em&gt;*ln(&lt;em&gt;x&lt;/em&gt;)).&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;Portanto, como não existe logaritmo natural de número negativo, o seguinte "ERRO" pode ocorrer:&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt;(-2.0)**(2.5) = NaN       (Not a number)&lt;/div&gt;&lt;div align="justify"&gt;( 2.0)**(2.5) = 5.656854.&lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div align="justify"&gt; &lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-2006083845325889670?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/2006083845325889670/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/07/erros-comuns-exponenciacao-numero.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/2006083845325889670'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/2006083845325889670'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/07/erros-comuns-exponenciacao-numero.html' title='ERROS COMUNS: Exponenciação - número negativo elevado a um potência real'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-6986089817774025147</id><published>2009-07-31T11:22:00.000-07:00</published><updated>2009-08-19T06:37:16.064-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran faq'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran iniciantes'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran erros comuns'/><title type='text'>ERROS COMUNS: Divisão em "modo misto"</title><content type='html'>Um erro bastante comum, do qual eu e alguns colegas já fomos vítimas, é a divisão envolvendo reais e inteiros. De uma forma geral, as expressões em "modo misto" devem ser evitadas, visto que são relativamente difíceis de entender e podem levar a resultados diferentes dos desejados.&lt;br /&gt;&lt;br /&gt;Em operações aritméticas entre um número real e um inteiro,  o inteiro é convertido para real pelo computador e o resultado é do tipo real.&lt;br /&gt;Isso explica porque:&lt;br /&gt;&lt;div align="center"&gt;(1 + 1/2)   = 1&lt;/div&gt;&lt;div align="center"&gt;(1. + 1/2)  = 1.0&lt;/div&gt;&lt;div align="center"&gt;(1 + 1./2)  = 1.5&lt;/div&gt;&lt;div align="center"&gt;(1 + 1/2.) = 1.5&lt;/div&gt;No primeiro e no segundo caso ocorre que 1/2 = 0, por se tratar de uma divisão entre dois números inteiros. No terceiro e no quarto casos, 1./2 = 1/2. = 0.5, o inteiro é convertido para real e a aritmética para números reais é utilizada.&lt;br /&gt;&lt;br /&gt;Portanto, é necessário ter atenção redobrada para casos tais como:&lt;br /&gt;&lt;div align="center"&gt;(2**(1/2)), que resulta igual 1, diferentemente de&lt;/div&gt;&lt;div align="center"&gt;(2**(1./2)) ou (2**(1/2.)), cujo resultado é 1.414214...&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-6986089817774025147?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/6986089817774025147/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/07/erros-comuns-divisao-em-modo-misto.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/6986089817774025147'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/6986089817774025147'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/07/erros-comuns-divisao-em-modo-misto.html' title='ERROS COMUNS: Divisão em &quot;modo misto&quot;'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-5523962476156235657</id><published>2009-07-06T12:44:00.000-07:00</published><updated>2009-08-19T06:40:31.052-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran downloads'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran otimização de código'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran codigos fonte'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>Comparação - ACESSANDO MATRIZES... (RANK 2 ARRAYS)</title><content type='html'>Acho que muitos já devem saber (ou ter ouvido falar) que o fortran guarda matrizes na memória "coluna por coluna". Dessa forma, o acesso às mesmas deve ser feito também coluna por coluna, para maior velocidade de execução. O conceito de coluna varia um pouco quando se trabalha com matrizes de mais de duas dimensões, mas de uma forma geral os loops mais internos devem se referir à dimensão mais à esquerda da matriz.&lt;br /&gt;Por exemplo, com uma matriz de três dimensões se teria:&lt;br /&gt;&lt;br /&gt;!LOOP mais rápido&lt;br /&gt;DO K=1,N3&lt;br /&gt;   DO J=1,N2&lt;br /&gt;      DO I=1,N1&lt;br /&gt;            A(I,J,K) = ...&lt;br /&gt;      END DO&lt;br /&gt;   END DO&lt;br /&gt;END DO&lt;br /&gt;&lt;br /&gt;Qualquer alteração da ordem desses LOOPs resulta num código mais lento.&lt;br /&gt;&lt;br /&gt;&lt;span style="color:#000066;"&gt;&lt;em&gt;Tomando-se o caso de duas dimensões apenas, qual seria a diferença de velocidade do loop mais rápido para o mais lento?&lt;/em&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;Na busca por respostas para essa pergunta, foi desenvolvido &lt;a href="http://rapidshare.com/files/252753468/MATRIZES_COMP_fortranbr.blogspot.com.zip"&gt;um pequeno projeto no Compaq Visual Fortran 6.6&lt;/a&gt; ( 288Kb). Para uma matriz A de dimensão NxN, onde N=5000, foram rodados 20 vezes os códigos que permitiram colocar o valor de cada elemento da matriz como sendo&lt;br /&gt;A(I,J) = A(I,J) + I**2 + J**2,&lt;br /&gt;acessando linha por linha (mais lento) e coluna por coluna (mais rápido).&lt;br /&gt;O tempo médio e o tempo médio relativo foram obtidos para comparação.&lt;br /&gt;Os resultados foram os seguintes:&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5355446428761143266" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 347px; CURSOR: hand; HEIGHT: 131px; TEXT-ALIGN: center" alt="" src="http://1.bp.blogspot.com/_QzyNAIs9Qmg/SlJeJw_xN-I/AAAAAAAAAHg/_SYGrHb0FvE/s400/Compara%C3%A7%C3%A3oMatrizes_Coluna_por_coluna_Linha_por_linha.jpg" border="0" /&gt;&lt;br /&gt;&lt;p&gt;Ou seja, para este caso específico a diferença já mostrou ser muito grande. O acesso coluna por coluna chega a ser &lt;span style="color:#cc0000;"&gt;&lt;strong&gt;quase 5 vezes mais rápido&lt;/strong&gt; &lt;span style="color:#000000;"&gt;que o acesso linha por linha&lt;/span&gt;&lt;span style="color:#000000;"&gt;. Um bom motivo para varrer seus códigos-fonte e excluir os loops coluna por coluna deles sempre que possível.&lt;/span&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;em&gt;&lt;/em&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-5523962476156235657?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/5523962476156235657/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/07/comparacao-acessando-matrizes-rank-2.html#comment-form' title='2 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/5523962476156235657'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/5523962476156235657'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/07/comparacao-acessando-matrizes-rank-2.html' title='Comparação - ACESSANDO MATRIZES... (RANK 2 ARRAYS)'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QzyNAIs9Qmg/SlJeJw_xN-I/AAAAAAAAAHg/_SYGrHb0FvE/s72-c/Compara%C3%A7%C3%A3oMatrizes_Coluna_por_coluna_Linha_por_linha.jpg' height='72' width='72'/><thr:total>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-4347068792737676336</id><published>2009-06-19T11:04:00.000-07:00</published><updated>2009-08-19T06:40:31.052-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran downloads'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran otimização de código'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran codigos fonte'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>CONCLUSÃO da comparação - LOOPs (DO x DO WHILE x DO "INFINITO")</title><content type='html'>Após a exposição do caso (&lt;a href="http://fortranbr.blogspot.com/2009/06/comparacao-loops-do-x-do-while-x-do.html"&gt;http://fortranbr.blogspot.com/2009/06/comparacao-loops-do-x-do-while-x-do.html&lt;/a&gt;) e a apresentação de um resultado, seguiu-se longa discussão na comunidade &lt;a href="http://www.orkut.com.br/Main#Community.aspx?cmm=254607"&gt;Fortran Brasil&lt;/a&gt;. O mesmo &lt;a href="http://rapidshare.com/files/246037975/DODOWHILE_fortranbr.blogspot.com.zip"&gt;projeto&lt;/a&gt; foi testado com diferentes casos e diferentes compiladores. Agradecimentos ao pessoal que participou da discussão na comunidade, em especial ao &lt;a href="http://www.orkut.com.br/Main#Profile.aspx?uid=1714388538125678111"&gt;Alexandre&lt;/a&gt;, que foi o "causador" da mesma.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;ALGUMAS CONCLUSÕES...&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;O tipo de loop mais rápido varia com os códigos executados no loop e depende também do compilador. De qualquer forma, nos casos em que o DO WHILE foi melhor que os outros, os outros ficaram muito próximos. E no geral o &lt;strong&gt;loop do tipo DO&lt;/strong&gt; foi o que se saiu melhor, pois ele é o mais rápido em alguns casos, e nas vezes que não é ainda assim fica bem próximo do melhor.&lt;br /&gt;&lt;br /&gt;Esse loop seria definido genericamente por:&lt;br /&gt;&lt;em&gt;&lt;strong&gt;CASO 1 : LOOP DO&lt;/strong&gt;&lt;/em&gt;&lt;br /&gt;DO I=1,N&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;br /&gt;END DO&lt;br /&gt;&lt;br /&gt;E seria "o mais rápido" dos três casos verificados.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-4347068792737676336?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/4347068792737676336/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/06/conclusao-da-comparacao-loops-do-x-do.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/4347068792737676336'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/4347068792737676336'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/06/conclusao-da-comparacao-loops-do-x-do.html' title='CONCLUSÃO da comparação - LOOPs (DO x DO WHILE x DO &quot;INFINITO&quot;)'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-3276965736284740690</id><published>2009-06-18T12:46:00.000-07:00</published><updated>2009-08-19T06:40:31.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran downloads'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran otimização de código'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran codigos fonte'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>Comparação - LOOPs (DO x DO WHILE x DO "INFINITO")</title><content type='html'>Efetuei uma pequena comparação entre Loops utilizando DO, DO WHILE e DO "INFINITO", baseada na afirmação de &lt;a href="http://www.orkut.com.br/Main#Profile.aspx?uid=9736190237107825123"&gt;Francisco Franco&lt;/a&gt;, proprietário da comunidade do orkut &lt;a href="http://www.orkut.com.br/Main#Community.aspx?cmm=254607"&gt;Fortran Brasil [&lt;o&gt;&lt;o&gt;]&lt;/a&gt;, de que o DO WHILE é mais lento que os outros dois.&lt;br /&gt;Os Loops em estudo são definidos genericamente da seguinte forma, onde N é um inteiro:&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CASO 1 : &lt;em&gt;LOOP DO&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;DO I=1,N&lt;br /&gt;&lt;span style="font-size:78%;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;.&lt;/span&gt;&lt;br /&gt;END DO&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CASO 2 : &lt;em&gt;LOOP DO WHILE&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;DO WHILE (I&lt;=N) &lt;span style="font-size:78%;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;.&lt;/span&gt;&lt;br /&gt;&lt;span style="font-size:78%;"&gt;.&lt;/span&gt;&lt;br /&gt;I = I + 1&lt;br /&gt;END DO&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;CASO 3 : &lt;em&gt;LOOP DO "INFINITO"&lt;/em&gt;&lt;/strong&gt;&lt;br /&gt;LOOP1 : DO&lt;br /&gt;&lt;span style="font-size:78%;"&gt;.&lt;br /&gt;.&lt;br /&gt;.&lt;/span&gt;&lt;br /&gt;I = I + 1&lt;br /&gt;IF (I==N) EXIT LOOP1&lt;br /&gt;END DO LOOP1&lt;br /&gt;&lt;br /&gt;Os resultados INICIAIS encontrados, apresentados na tabela abaixo, confirmaram que o DO WHILE é mais lento que os outros loops acima mostrados.&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5348759103133811570" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 61px; TEXT-ALIGN: center" alt="" src="http://2.bp.blogspot.com/_QzyNAIs9Qmg/SjqcELttg3I/AAAAAAAAAHY/xHGv7cvXbXg/s400/Compara%C3%A7%C3%A3o+DO.jpg" border="0" /&gt;&lt;/p&gt;&lt;p&gt;A tabela mostra os valores obtidos para uma função qualquer, comprovando que a mesma coisa estava sendo calculada nos três casos. Foram feitos dois loops, um dentro do outro, com N=25000, ou seja, 625 milhões de cálculos da função (X = X + (-1**J)*X/N, onde J varia em um dos loops). Tomou-se um tempo relativo ao tempo do Loop Do "Infinito".&lt;br /&gt;Constatou-se PARA ESTE N ESPECÍFICO que o&lt;em&gt; caso 2&lt;/em&gt; demora cerca de 2% a mais de tempo do que a referência, enquanto que o caso 3 leva cerca de 0,7%.&lt;br /&gt;&lt;br /&gt;O estudo foi feito utilizando o Compaq Visual Fortran 6.6, e o projeto completo está disponível para &lt;a href="http://rapidshare.com/files/246037975/DODOWHILE_fortranbr.blogspot.com.zip"&gt;download aqui (294Kb)&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;&lt;strong&gt;&lt;em&gt;&lt;span style="font-size:130%;"&gt;ATUALIZAÇÃO:&lt;br /&gt;&lt;/span&gt;&lt;/em&gt;&lt;/strong&gt;&lt;strong&gt;Este mesmo post gerou discussões e mais discussões na comunidade supracitada. Algumas conclusões podem ser vistas &lt;/strong&gt;&lt;a href="http://fortranbr.blogspot.com/2009/06/conclusao-da-comparacao-loops-do-x-do.html"&gt;&lt;strong&gt;AQUI&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-3276965736284740690?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/3276965736284740690/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/06/comparacao-loops-do-x-do-while-x-do.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/3276965736284740690'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/3276965736284740690'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/06/comparacao-loops-do-x-do-while-x-do.html' title='Comparação - LOOPs (DO x DO WHILE x DO &quot;INFINITO&quot;)'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://2.bp.blogspot.com/_QzyNAIs9Qmg/SjqcELttg3I/AAAAAAAAAHY/xHGv7cvXbXg/s72-c/Compara%C3%A7%C3%A3o+DO.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-1530350111347330192</id><published>2009-06-12T07:04:00.000-07:00</published><updated>2009-08-18T04:40:37.056-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran downloads'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran codigos fonte'/><title type='text'>Apostila Visual FORTRAN - Desenvolver interfaces</title><content type='html'>&lt;a href="http://3.bp.blogspot.com/_QzyNAIs9Qmg/SjJkAMJ23-I/AAAAAAAAAHQ/ZsKguP2DiLk/s1600-h/Interfaces_apostila.jpg"&gt;&lt;img id="BLOGGER_PHOTO_ID_5346445662067548130" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 95px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_QzyNAIs9Qmg/SjJkAMJ23-I/AAAAAAAAAHQ/ZsKguP2DiLk/s400/Interfaces_apostila.jpg" border="0" /&gt;&lt;/a&gt; &lt;div align="center"&gt;&lt;/div&gt;&lt;div&gt;Apostila que aborda desde o básico até aspectos de desenvolvimento de Interfaces Gráficas de Usuário (GUIs) em FORTRAN, desenvolvida por Wilton Pereira da Silva, Cleiton e Cleide Maria D. P. S. e Silva. A apostila em formato PDF pode ser baixada diretamente &lt;a href="http://rapidshare.com/files/243742939/VisualFortran_fortranbr.blogspot.com.zip"&gt;neste link num único arquivo zipado&lt;/a&gt; (1934KB), ou, se preferir, você pode baixar a versão dos autores &lt;a href="http://br.geocities.com/pextensao/visual_fortran.zip"&gt;neste link&lt;/a&gt;, em formato hlp, e que necessita instalação de um pequeno aplicativo.&lt;br /&gt;Os códigos fonte desenvolvidos podem ser baixados &lt;a href="http://br.geocities.com/pextensao/programetes/programetes.html"&gt;AQUI&lt;/a&gt;. E a página dos autores sobre o tutorial é a seguinte:&lt;br /&gt;&lt;a href="http://br.geocities.com/pextensao/vf.html"&gt;http://br.geocities.com/pextensao/vf.html&lt;/a&gt; .&lt;br /&gt;&lt;br /&gt;Até mais.&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-1530350111347330192?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/1530350111347330192/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/06/apostila-visual-fortran-desenvolver.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/1530350111347330192'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/1530350111347330192'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/06/apostila-visual-fortran-desenvolver.html' title='Apostila Visual FORTRAN - Desenvolver interfaces'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QzyNAIs9Qmg/SjJkAMJ23-I/AAAAAAAAAHQ/ZsKguP2DiLk/s72-c/Interfaces_apostila.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-5175895585865286742</id><published>2009-06-11T10:31:00.000-07:00</published><updated>2009-08-19T06:40:31.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran dicas'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran otimização de código'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>Otimização de códigos FORTRAN</title><content type='html'>Guia RÁPIDO de OTIMIZAÇÃO de códigos FORTRAN visando maior VELOCIDADE de execução...&lt;br /&gt;Detalhes muito interessantes que encontrei no site da Pós Graduação em Engenharia Civil da UFRGS. Vale a pena dar uma lida:&lt;br /&gt;&lt;a href="http://www.cpgec.ufrgs.br/masuero/otimizacao/otimizacao.htm"&gt;http://www.cpgec.ufrgs.br/masuero/otimizacao/otimizacao.htm&lt;/a&gt; .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-5175895585865286742?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/5175895585865286742/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/06/otimizacao-de-codigos-fortran.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/5175895585865286742'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/5175895585865286742'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/06/otimizacao-de-codigos-fortran.html' title='Otimização de códigos FORTRAN'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-8949966382099190865</id><published>2009-06-09T06:12:00.000-07:00</published><updated>2009-08-18T04:38:41.112-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran downloads'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran iniciantes'/><title type='text'>Apostilas básicas de FORTRAN.</title><content type='html'>Cinco apostilas de FORTRAN básico para download em um arquivo zipado (950KB):&lt;br /&gt;&lt;br /&gt;&lt;a href="http://rapidshare.com/files/242607414/Apostilas-FORTRAN_fortranbr.blogspot.com.zip"&gt;http://rapidshare.com/files/242607414/Apostilas-FORTRAN_fortranbr.blogspot.com.zip&lt;/a&gt; .&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-8949966382099190865?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/8949966382099190865/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/06/apostilas-basicas-de-fortran.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/8949966382099190865'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/8949966382099190865'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/06/apostilas-basicas-de-fortran.html' title='Apostilas básicas de FORTRAN.'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-5672068185466312619</id><published>2009-06-05T06:26:00.000-07:00</published><updated>2009-08-19T06:40:31.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran faq'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran codigos fonte'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>Como utilizar a Derivação automática? - EXEMPLO COMPLETO</title><content type='html'>Um exemplo de derivação automática com alguns comentários. O projeto COMPLETO, desenvolvido em Compaq Visual Fortran 6.6, pode ser &lt;a href="http://rapidshare.com/files/241122098/DERIVADATESTE_--fortranbr.blogspot.com--.zip"&gt;baixado AQUI&lt;/a&gt;.&lt;br /&gt;São três arquivos diferentes denominados no meu projeto como sendo: MAIN.F90, que contem o código PROGRAM TEST dado abaixo, FUNCOES.F90, que contem o módulo FUNCOES, também dado abaixo, e DERIV_CLASS.F90, o módulo de derivação cujo link está disponível no post &lt;a href="http://fortranbr.blogspot.com/2009/06/derivacao-automatica.html"&gt;Derivação Automática&lt;/a&gt;.&lt;br /&gt;&lt;br /&gt;----------------- CÓDIGO PARA O MAIN.F90 ----------------------&lt;br /&gt;&lt;br /&gt;PROGRAM TEST &lt;br /&gt;USE DERIV_CLASS      ! torna o módulo de derivação disponível&lt;br /&gt;USE FUNCOES&lt;br /&gt;INTEGER, PARAMETER    :: TAM_X=3   !tamanho do vetor x&lt;br /&gt;REAL*8 :: F_, X_(TAM_X), DF(TAM_X)    !variáveis p/ armazenar valores de f, x e derivada&lt;br /&gt;REAL*8 :: DDF(TAM_X * (TAM_X + 1) / 2)    !variável p/ armazenar valor da 2a derivada&lt;br /&gt;TYPE (FUNC)  :: X(TAM_X), F   !Para usar o módulo é preciso utilizar estes tipos&lt;br /&gt;&lt;br /&gt;!Valores de X para os quais se deseja calcular a derivada&lt;br /&gt;X_(1) = 1.0D0&lt;br /&gt;X_(2) = 1.3D0&lt;br /&gt;X_(3) = 1.8D0&lt;br /&gt;&lt;br /&gt;! Zerando o valor da derivada até então&lt;br /&gt;DF  = 0.0D0 &lt;br /&gt;CALL DERIVATIVE(2)    !declara a ordem da derivada - 2 indica 1a e 2a derivadas&lt;br /&gt;! DECLARAR AS VARIÁVEIS INDEPENDENTES(X) E SEUS VALORES (X_)&lt;br /&gt;CALL INDEPENDENT(1, X(1), X_(1))      !primeira variável independente&lt;br /&gt;CALL INDEPENDENT(2, X(2), X_(2))     !segunda variável independente&lt;br /&gt;CALL INDEPENDENT(3, X(3), X_(3))     !terceira variável independente&lt;br /&gt;F = F1(X,TAM_X)  !definindo q a função é calculada pela função f1, presente no módulo funcoes&lt;br /&gt;&lt;br /&gt;!Extraindo valores das derivadas e mostrando os mesmo na tela. &lt;br /&gt;CALL EXTRACT(F, DF, DDF)   &lt;br /&gt;WRITE(*, *) 'DF',DF&lt;br /&gt;WRITE(*, *) 'DDF',DDF&lt;br /&gt;&lt;br /&gt;END PROGRAM TEST&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;----------------- CÓDIGO PARA O MÓDULO FUNCOES ----------------------&lt;br /&gt;&lt;br /&gt;MODULE FUNCOES&lt;br /&gt;&lt;br /&gt;USE DERIV_CLASS&lt;br /&gt;&lt;br /&gt;CONTAINS&lt;br /&gt;&lt;br /&gt;FUNCTION F1(X,TAM_X) RESULT(Y)&lt;br /&gt;INTEGER :: TAM_X&lt;br /&gt;TYPE (FUNC)  :: X(TAM_X), Y&lt;br /&gt;&lt;br /&gt;!AQUI PODE SER ESCRITA QUALQUER FUNÇÃO DE X(TAM_X)&lt;br /&gt;Y = 2*X(1)**2 + X(2)**3 + COS(X(3))&lt;br /&gt;&lt;br /&gt;END FUNCTION&lt;br /&gt;&lt;br /&gt;END MODULE FUNCOES&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;-------------------------MUITO IMPORTANTE -----------------------------------&lt;br /&gt;----------------- &lt;span style="color:#ff0000;"&gt;ALTERAÇÃO NO MÓDULO DERIV_CLASS&lt;/span&gt; ----------------------&lt;br /&gt;MODULE deriv_class  IMPLICIT NONE&lt;br /&gt;  PRIVATE&lt;br /&gt;  INTEGER, PARAMETER :: n   = 3           ! &lt;&lt;&lt; AQUI precisa-se colocar o valor de tam_x&lt;br /&gt;&lt;br /&gt;------------------------------------------------------------------------------------&lt;br /&gt;&lt;br /&gt;Como o código é aberto, podem ser feitas as alterações que o usuário achar necessário. Por exemplo, pode-se colocar o parâmetro &lt;em&gt;n&lt;/em&gt; do módulo Deriv_class em função do TAM_X já declarado anteriormente.&lt;br /&gt;&lt;br /&gt;Até mais.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-5672068185466312619?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/5672068185466312619/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/06/como-utilizar-derivacao-automatica.html#comment-form' title='4 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/5672068185466312619'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/5672068185466312619'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/06/como-utilizar-derivacao-automatica.html' title='Como utilizar a Derivação automática? - EXEMPLO COMPLETO'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>4</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-4288822174996195772</id><published>2009-06-03T04:55:00.000-07:00</published><updated>2009-08-19T06:40:31.053-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran codigos fonte'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>Derivação automática</title><content type='html'>Qual a melhor forma para derivar uma função? Pensando sobre essa questão, a primeira referência que me veio à cabeça foi a das &lt;a href="http://www.enq.ufrgs.br/cursos/index.php?dir=pos/MetNumII/Da/&amp;amp;file=Notas_de_Aula_DA.doc"&gt;notas de aula da disciplina de Metódos Numéricos&lt;/a&gt; (ou no &lt;a href="http://74.125.45.132/search?q=cache:n-rD6zO_BkgJ:www.enq.ufrgs.br/cursos/index.php%3Fdir%3Dpos/MetNumII/Da/%26file%3DNotas_de_Aula_DA.doc+%22deriva%C3%A7%C3%A3o+autom%C3%A1tica%22&amp;amp;cd=1&amp;amp;hl=pt-BR&amp;amp;ct=clnk&amp;amp;gl=br"&gt;link em memória cache do google&lt;/a&gt;), acredito que seja da Pós-Graduação, do departamento de engenharia química da UFRGS. Infelizmente não sei quem foi que escreveu a apostila.&lt;br /&gt;&lt;br /&gt;A solução que mais me chamou a atenção foi a da Derivação automática. Pelas razões encontradas na tabela das notas de aula:&lt;br /&gt;&lt;p&gt;&lt;img id="BLOGGER_PHOTO_ID_5343071830113879234" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 124px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_QzyNAIs9Qmg/SiZnhUtVhMI/AAAAAAAAAHA/UzewC66BSTs/s400/Deriva%C3%A7%C3%A3o_tabela.jpg" border="0" /&gt;e pela existência de um código fonte disponível para FORTRAN que efetua tal operação.&lt;br /&gt;Trata-se do AUTO_DERIV, desenvolvido por &lt;em&gt;S. Stamatiadis, R. Prosmiti e S. C. Farantos&lt;/em&gt;, da "University of Crete" (Grécia) e do "Institute of Electronic Structure and Laser Foundation for Research and Technology - Hellas".&lt;br /&gt;&lt;br /&gt;O código permite calcular a primeira e a segunda derivadas parciais de qualquer função contínua com muitas variáveis independentes. Além disso, a função a ser derivada pode depender de outras várias subrotinas ou funções escritas em linguagem Fortran 90 ou 77.&lt;br /&gt;Um &lt;a href="http://tccc.iesl.forth.gr/general/intro/pdf/87.pdf"&gt;artigo completo&lt;/a&gt; sobre o código fonte está disponível.&lt;br /&gt;&lt;br /&gt;O código fonte (+ exemplos) pode ser &lt;a href="http://www.mpipks-dresden.mpg.de/publ/zeitschriftenverz/cpc/2000/cpcprograms/adls.gz"&gt;baixado direto por este link&lt;/a&gt; retirado &lt;a href="http://www.mpipks-dresden.mpg.de/publ/zeitschriftenverz/cpc/2000/ADLS.html"&gt;deste site&lt;/a&gt;, ou pelo site &lt;a href="http://cpc.cs.qub.ac.uk/summaries/ADLS"&gt;http://cpc.cs.qub.ac.uk/summaries/ADLS&lt;/a&gt;, que parece estar fora do ar por algum tempo.&lt;br /&gt;&lt;br /&gt;Qualquer dúvida sobre a utilização do programa pode ser colocada em comentários aqui ou na comunidade do orkut: &lt;a href="http://www.orkut.com.br/Main#Community.aspx?cmm=52735996"&gt;Fortran 90/95/2003 BR&lt;/a&gt;.&lt;br /&gt;Até mais.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-4288822174996195772?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/4288822174996195772/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/06/derivacao-automatica.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/4288822174996195772'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/4288822174996195772'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/06/derivacao-automatica.html' title='Derivação automática'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QzyNAIs9Qmg/SiZnhUtVhMI/AAAAAAAAAHA/UzewC66BSTs/s72-c/Deriva%C3%A7%C3%A3o_tabela.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-4097495767663435964</id><published>2009-05-29T11:07:00.000-07:00</published><updated>2009-08-19T06:40:31.054-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran codigos fonte'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran cunho científico'/><title type='text'>PARSER - avaliador de Expressões - f(x) = sin(x) + x**2 ... automaticamente.</title><content type='html'>Um avaliador de expressões, como o próprio nome já diz, permite avaliar expressões diretamente, sem ser necessário criar uma função para efetuar tal avaliação. É possível, por exemplo, determinar o valor de uma função qualquer dada pelo usuário durante a execução de um programa (a função é armazenada em uma string), ou ler funções de um bloco de texto, interpretá-las e retornar o valor da função para determinados valores das variáveis da mesma.&lt;br /&gt;&lt;br /&gt;&lt;img id="BLOGGER_PHOTO_ID_5341316422873764050" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 400px; CURSOR: hand; HEIGHT: 115px; TEXT-ALIGN: center" alt="" src="http://4.bp.blogspot.com/_QzyNAIs9Qmg/SiAq_LJZ0NI/AAAAAAAAAG4/8O8ZssY-uEk/s400/PARSER.gif" border="0" /&gt; &lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;div&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;Aqui trago a referência para um PARSER BRASILEIRO GRATUITO, que já utilizei em alguns trabalhos e que, segundo testes dos autores, apresenta desempenho melhor que outros PARSERs gratuitos existentes (um &lt;a href="http://www.netspace.net.au/~smidgley/fortran/"&gt;australiano&lt;/a&gt; e um &lt;a href="http://www.its.uni-karlsruhe.de/~schmehl/functionparserE.html"&gt;alemão&lt;/a&gt;).&lt;br /&gt;&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;O PARSER foi desenvolvido por professores e alunos da Universidade Federal de Campina Grande e do ITA (Instituto Tecnológico da Aeronáutica), conforme pode ser visto no &lt;a href="http://www.cos.ufrj.br/~ivomar/paper02.pdf"&gt;artigo&lt;/a&gt;&lt;br /&gt;publicado no &lt;em&gt;Science &amp;amp; Engineering Journal&lt;/em&gt; de 2005.&lt;/div&gt;&lt;br /&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Mais detalhes sobre o PARSER e DOWNLOAD GRATUITO do mesmo podem ser encontrados em&lt;/div&gt;&lt;div&gt;&lt;a href="http://br.geocities.com/pextensao/programetes/functionparser/brfunctionparser.html"&gt;http://br.geocities.com/pextensao/programetes/functionparser/brfunctionparser.html&lt;/a&gt;. &lt;/div&gt;&lt;div&gt;&lt;/div&gt;&lt;div&gt;Download direto do código fonte &lt;a href="http://br.geocities.com/pextensao/programetes/functionparser/FunctionParser.zip"&gt;AQUI&lt;/a&gt;.&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-4097495767663435964?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/4097495767663435964/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/05/parser-avaliador-de-expressoes-fx-sinx.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/4097495767663435964'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/4097495767663435964'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/05/parser-avaliador-de-expressoes-fx-sinx.html' title='PARSER - avaliador de Expressões - f(x) = sin(x) + x**2 ... automaticamente.'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://4.bp.blogspot.com/_QzyNAIs9Qmg/SiAq_LJZ0NI/AAAAAAAAAG4/8O8ZssY-uEk/s72-c/PARSER.gif' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-1377205554396462821</id><published>2009-05-28T05:17:00.000-07:00</published><updated>2009-08-18T04:40:37.057-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran faq'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran codigos fonte'/><title type='text'>Transformando letras maiúsculas em minúsculas... e vice-versa</title><content type='html'>Aqui se encontra uma forma de transformar letras maiúculas em minúsculas e vice-versa, baseada no fato de que a diferença entre os números de que representam as letras é uma constante (igual a 32), conforme pode ser visto na tabela abaixo (clique para ver a tabela no site da msdn - microsoft):&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/60ecse8t(VS.80).aspx" target="_blank"&gt;&lt;img id="BLOGGER_PHOTO_ID_5341208308127104994" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 303px; CURSOR: hand; HEIGHT: 344px; TEXT-ALIGN: center" alt="Clique para ver a imagem no site da msdn - microsoft" src="http://1.bp.blogspot.com/_QzyNAIs9Qmg/Sh_IqEVH_-I/AAAAAAAAAF4/8LtMYhQym3U/s320/chart1.bmp" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;As funções principais utilizadas na subrotina são:&lt;br /&gt;LEN_TRIM - Retorna o tamanho de um argumento de caracteres, sem contar os caracteres em branco após o último caractere não branco. (Tradução grosseira do help...).&lt;br /&gt;IACHAR - Retorna o número (decimal) equivalente à letra.&lt;br /&gt;ACHAR - Inverso de IACHAR. Retorna a letra equivalente ao número.&lt;br /&gt;&lt;br /&gt;Uma subrotina que realiza a operação (para minúsculas e para maiúsculas):&lt;br /&gt;&lt;br /&gt;SUBROUTINE LETRAS&lt;br /&gt;CHARACTER(100) NOME&lt;br /&gt;INTEGER :: I, J&lt;br /&gt;&lt;br /&gt;WRITE(*,*) 'DIGITE SEU NOME:'&lt;br /&gt;1 FORMAT (A$) !PERMITE LER TAMBÉM ESPAÇOS ENTRE OS NOMES. (EX.: PAULO SANTANA)&lt;br /&gt;READ(*,1) NOME&lt;br /&gt;WRITE(*,*) 'NOME INICIAL:',NOME&lt;br /&gt;&lt;br /&gt;!MAIUSCULAS PARA MINUSCULAS:&lt;br /&gt;DO I=1,LEN_TRIM(NOME)&lt;br /&gt;J = IACHAR(NOME(I:I))&lt;br /&gt;IF ((J&gt;=65) .AND. (J&lt;=90)) THEN !SE SE TRATAR DE LETRA MAIUSCULA&lt;br /&gt;J = J + 32 !TRANFORMANDO EM MINÚSCULA&lt;br /&gt;NOME(I:I) = ACHAR(J) !RETORNANDO A LETRA MINÚSCULA REFERENTE&lt;br /&gt;END IF&lt;br /&gt;END DO&lt;br /&gt;WRITE(*,*) 'NOME EM MINUSCULAS:',NOME &lt;/p&gt;&lt;p&gt;!MINUSCULAS PARA MAIUSCULAS:&lt;br /&gt;DO I=1,LEN_TRIM( NOME )&lt;br /&gt;J = IACHAR(NOME(I:I))&lt;br /&gt;IF ((J&gt;=97) .AND. (J&lt;=122)) THEN !SE SE TRATAR DE LETRA MINUSCULA&lt;br /&gt;J = J - 32 ! TRANFORMANDO PARA LETRA MINÚSCULA&lt;br /&gt;NOME(I:I) = ACHAR(J) !RETORNANDO A LETRA CORRESPONDENTE&lt;br /&gt;END IF&lt;br /&gt;END DO&lt;br /&gt;WRITE(*,*) 'NOME EM MAIUSCULAS:',NOME &lt;/p&gt;&lt;p&gt;END SUBROUTINE &lt;/p&gt;&lt;p&gt;Espero que o código seja útil para vocês. Qualquer dúvida pode ser postada nos comentários... &lt;/p&gt;&lt;div align="center"&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-1377205554396462821?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/1377205554396462821/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/05/transformando-letras-maiusculas-em.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/1377205554396462821'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/1377205554396462821'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/05/transformando-letras-maiusculas-em.html' title='Transformando letras maiúsculas em minúsculas... e vice-versa'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QzyNAIs9Qmg/Sh_IqEVH_-I/AAAAAAAAAF4/8LtMYhQym3U/s72-c/chart1.bmp' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-365913544603938910</id><published>2009-05-27T07:59:00.000-07:00</published><updated>2009-08-18T04:40:37.057-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran faq'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran codigos fonte'/><title type='text'>Executando comandos DOS (ou programas externos) em Fortran</title><content type='html'>&lt;a href="http://pt.wikipedia.org/wiki/DOS"&gt;&lt;img id="BLOGGER_PHOTO_ID_5340521477181476354" style="DISPLAY: block; MARGIN: 0px auto 10px; WIDTH: 141px; CURSOR: hand; HEIGHT: 142px; TEXT-ALIGN: center" alt="" src="http://3.bp.blogspot.com/_QzyNAIs9Qmg/Sh1X_Pq_DgI/AAAAAAAAAE8/PxdMT3XJN4U/s320/ms-dos-logo.jpg" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;p align="center"&gt;&lt;/p&gt;&lt;p&gt;Demorei um tempo procurando isso, então decidi deixar arquivado aqui o como fazer, apesar de ser simples. É possível rodar um programa externo também utilizando a mesma sintaxe.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;Basta declarar uso da biblioteca DFPORT:&lt;br /&gt;USE DFPORT&lt;br /&gt;E utilizar o código :&lt;br /&gt;result = SYSTEM ('string contendo o comando')&lt;br /&gt;OBS.: Não é necessário declarar a variável result.&lt;br /&gt;&lt;br /&gt;Exemplo:&lt;br /&gt;result = SYSTEM ('copy arq1.TXT arq2.TXT') !copia o arquivo arq1.txt sobre o arquivo arq2.txt&lt;br /&gt;&lt;br /&gt;Para quem sabe pouco sobre &lt;a href="http://pt.wikipedia.org/wiki/DOS"&gt;DOS&lt;/a&gt; e quer aprender mais:&lt;br /&gt;&lt;a href="http://www.ziggi.com.br/downloads/apostila-msdos.asp"&gt;http://www.ziggi.com.br/downloads/apostila-msdos.asp&lt;/a&gt; - apostila grátis muito boa!.&lt;/p&gt;&lt;br /&gt;&lt;p&gt;&lt;/p&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-365913544603938910?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/365913544603938910/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/05/executando-comandos-dos-ou-programas.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/365913544603938910'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/365913544603938910'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/05/executando-comandos-dos-ou-programas.html' title='Executando comandos DOS (ou programas externos) em Fortran'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://3.bp.blogspot.com/_QzyNAIs9Qmg/Sh1X_Pq_DgI/AAAAAAAAAE8/PxdMT3XJN4U/s72-c/ms-dos-logo.jpg' height='72' width='72'/><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-1819945876792153935</id><published>2009-05-21T05:49:00.000-07:00</published><updated>2009-08-18T04:38:41.112-07:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='fortran faq'/><category scheme='http://www.blogger.com/atom/ns#' term='fortran iniciantes'/><title type='text'>Porque aprender FORTRAN?</title><content type='html'>Baseado nos escritos de John Mahaffy, da "Pennsylvania State University".&lt;br /&gt;&lt;div class="para"&gt;Outras coisa interessantes sobre FORTRAN podem ser encontradas em:&lt;br /&gt;&lt;a href="http://www.personal.psu.edu/jhm/f90/lectures/quickref.html" target="_blank"&gt;http://www.personal.psu.edu/jhm/f90/lec&lt;wbr&gt;tures/quickref.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;span style="font-weight: bold;"&gt;PORQUE aprender FORTRAN?&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://1.bp.blogspot.com/_QzyNAIs9Qmg/ShVTzOwdUjI/AAAAAAAAAE0/uF1PanGxqKg/s1600-h/fortran_fig1.jpg"&gt;&lt;img style="margin: 0px auto 10px; display: block; text-align: center; cursor: pointer; width: 320px; height: 87px;" src="http://1.bp.blogspot.com/_QzyNAIs9Qmg/ShVTzOwdUjI/AAAAAAAAAE0/uF1PanGxqKg/s320/fortran_fig1.jpg" alt="" id="BLOGGER_PHOTO_ID_5338265072917369394" border="0" /&gt;&lt;/a&gt;&lt;br /&gt;&lt;span style="font-style: italic;"&gt;Primeiro aqui coloco minha tradução, e logo depois eu postarei o original, visto q meu inglês está em desenvolvimento. O texto é antigo (1997), mas interessante.&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;"Muitos de você têm ouvido falar hoje em dia que Fortran é uma linguagem obsoleta. Me disseram a mesma coisa quando eu comecei em 1968. A razão maior dessa noção é que as linguagens de programação são geralmente desenvolvidas e ensinadas por cientistas da computação. Fortran definitivamente não é a melhor linguagem para os tipos de aplicações encontrados na Ciência da Computação. A linguagem C foi desenvolvida para escrever sistemas operacionais, compiladores, e ourtas aplicações relacionadas. Como resultado, muitos que focaram nesses tópicos veem-na (a linguagem C) e suas relativas (C++) como as linguagens de escolha. Muitas outras linguagens tem vindo e ido através dos anos, com vários seguimentos.&lt;br /&gt;&lt;br /&gt;FORTRAN foi desenvolvido pela IBM, especificamente para cálculos científicos. Padrões internacionais têm sido desenvolvidos e expandidos ao longo dos anos para prover uma sintax uniforme e um conjunto de funções de suporte para as necessidades de cálculo desses campos. Como resultado, a qtde de aplicações científicas e de engenharia desenvolvidas nos últimos 30 anos é imensa. Se nenhum novo programa científico fosse escrito em FORTRAN, o número de oportunidades de trabalho para suporte das aplicações existentes ainda seria imenso. Entretanto, com o desenvolvimento do padrão FORTRAN 90, Fortran continua a ser a primeira escolha para novos programas científicos..."&lt;br /&gt;&lt;br /&gt;Até mais...&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-1819945876792153935?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/1819945876792153935/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/05/porque-aprender-fortran.html#comment-form' title='1 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/1819945876792153935'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/1819945876792153935'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/05/porque-aprender-fortran.html' title='Porque aprender FORTRAN?'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><media:thumbnail xmlns:media='http://search.yahoo.com/mrss/' url='http://1.bp.blogspot.com/_QzyNAIs9Qmg/ShVTzOwdUjI/AAAAAAAAAE0/uF1PanGxqKg/s72-c/fortran_fig1.jpg' height='72' width='72'/><thr:total>1</thr:total></entry><entry><id>tag:blogger.com,1999:blog-7476510521545171110.post-5398588228289637162</id><published>2009-05-21T05:47:00.000-07:00</published><updated>2009-05-21T05:48:48.409-07:00</updated><title type='text'>Why learn Fortran? - Original</title><content type='html'>&lt;span style="font-weight: bold;"&gt;&lt;/span&gt;A versão original do texto de John Mahaffy - &lt;a href="http://www.personal.psu.edu/jhm/f90/lectures/quickref.html" target="_blank"&gt;http://www.personal.psu.edu/jhm/f90/lec&lt;wbr&gt;tures/quickref.html&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;div class="para"&gt;"Many of you have by now been told that Fortran is an obsolete language. I was told the same thing when I started in 1968. A major reason for this notion is that computer languages are generally developed and taught by Computer Scientists. Fortran is unquestionably not the best language for the types of applications found in Computer Science. The C language was developed for writing operating systems, compilers, and other related applications. As a result, many focused on these disciplines, see it and its relatives (C++) as the languages of choice. Many other languages have come and gone over the years, with varying followings.&lt;br /&gt;&lt;br /&gt;Fortran (Formula Translation System) was developed by IBM specifically for performing scientific calculations. International language standards have been developed and expanded over the years to provide a uniform language syntax and set of supporting functions for all calculational needs in these fields. As a result, the body of scientific and engineering applications that have been developed over the last 30+ years is immense. If no new scientific programs were written in Fortran, the number of job opportunities supporting existing applications would still be quite large. However, with the release of the Fortran 90 language standards, Fortran continues to be the first choice for new scientific programs, and is the focus of efforts to develop computationally intensive applications for new generations of parallel and vector computers, through the use of an extention of Fortran 90 called High Performance Fortran (HPF)." &lt;/div&gt;&lt;br /&gt;Até mais.&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/7476510521545171110-5398588228289637162?l=fortranbr.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://fortranbr.blogspot.com/feeds/5398588228289637162/comments/default' title='Postar comentários'/><link rel='replies' type='text/html' href='http://fortranbr.blogspot.com/2009/05/why-learn-fortran-original.html#comment-form' title='0 Comentários'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/5398588228289637162'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/7476510521545171110/posts/default/5398588228289637162'/><link rel='alternate' type='text/html' href='http://fortranbr.blogspot.com/2009/05/why-learn-fortran-original.html' title='Why learn Fortran? - Original'/><author><name>W. Gomes</name><uri>http://www.blogger.com/profile/09488931807887651937</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='28' height='32' src='http://4.bp.blogspot.com/_QzyNAIs9Qmg/TQY9K3rQFkI/AAAAAAAAAPU/LHItFRnFLcw/S220/Imagem%2B446.jpg'/></author><thr:total>0</thr:total></entry></feed>
