apostila fortran

Upload: hugow182

Post on 15-Oct-2015

150 views

Category:

Documents


7 download

TRANSCRIPT

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    CONTEDO

    PARTE I: Construo de Algoritmos Estruturados

    1) Conceito de Algoritmos

    2) Pseudo-Linguagem

    2.1. Declarao de variveis Tipos bsicos

    2.2. Comandos Bsicos

    2.2.1. Entrada/Sada de Dados

    2.2.2. Comando de Atribuio

    2.2.3. Operadores Aritmticos, Lgicos e Relacionais

    2.3. Estruturas Bsicas de Controle

    2.3.1. Seqncia

    2.3.2. Seleo

    2.3.3. Repetio

    2.4. Estruturas de Dados

    2.4.1. Vetores

    2.4.2. Matrizes

    2.5. Subprogramao

    2.5.1. Blocos

    2.5.2. Escopo das variveis

    2.5.3. Procedimentos

    2.5.4. Funes

    PARTE II: Programao Fortran Estruturada

    1. Apresentao da Linguagem Fortran 2. Mapeamento de Algoritmos para

    Fortran 3. Programao de Aplicaes

  • METODOLOGIA

    Os tpicos abordados sero estudados atravs da realizao de exerccios. Nas aulas sero apresentados os tpicos, com exemplos, e a seguir os alunos realizaro exerccios, corrigidos durante a aula.

    Ser praticado, com freqncia, o trabalho em dupla para a construo de algoritmos ou

    programas. Um dos alunos ficar responsvel por criar o algoritmo ou programa solicitado e o outro dever realizar revises e testes.

    Ao fim da aula sero apresentados alguns exerccios que devem ser resolvidos pelos alunos antes da aula seguinte.

    MONITORIA

    A sala de monitoria, localizada no terceiro andar do Bloco E, tem a relao de horrios disponveis para atendimento.

    FORTRAN

    GNU Fortran Compiler (GFortran) Software Livre (http://gcc.gnu.org/fortran/)

    IDE (Integrated Development Environment ) - Force 3.0 Fortran ( http://force.lepsch.com/) - Software livre para FORTRAN 77/90

    BIBLIOGRAFIA

    Guimares e Lages, Algoritmos e Estruturas de Dados, Ed. LTC Harry Farrer e outros, Fortran Estruturado, Ed. Koogan Michael Metcalf, John K. Reid, Fortran 90/95, Oxford University Press.

    AVALIAO

    Aprovado: Presena (>=75%) e ( Prova 1 + Prova 2) /2 > = 6.0

    Em VS: Presena (>=75%) e (P1 + P2) /2 > = 4.0

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO DA 1 AULA

    INTRODUO

    I. Algoritmo e programa

    II. Programao estruturada

    III. Fortran e o Force

    IV. Passos para a elaborao de um programa

    V. Comentrios, nome do programa, stop, end e print.

    VI. Exerccios

  • I. ALGORITMO E PROGRAMA

    Um programa-exemplo em Fortran

    Objetivo: Escrever uma tabela de multiplicao de 6, de 6 x 1 a 6 x 30.

    Programa em Fortran:

    C Escreve uma tabela de multiplicao por 6, de 6 x 1 a 6 x 30.

    program tabelaDeMultiplicacaoPor6

    integer multiplicando, resultado

    C Gerar o primeiro multiplicando

    multiplicando = 1 C Gerar a tabela

    print *, 'Tabela de Multiplicao por 6 - de 6x1 a 6x30'

    do while (multiplicando .le. 30) C Calcular e imprimir

    resultado = 6 * multiplicando

    print *, '6 x ', multiplicando, ' = ', resultado C Gerar o prximo multiplicando

    multiplicando = multiplicando + 1

    end do

    print *, 'Tecle ENTER para sair... ' read *

    stop end

  • Um programa deve ser executado pelo computador.

    Resultado obtido quando o programa executado pelo computador:

  • O algoritmo

    Para que o programa-exemplo fosse elaborado houve a necessidade de se

    refletir sobre o problema a ser resolvido. Neste caso algum desejava que

    fosse elaborado um programa para imprimir na tela uma tabela de

    multiplicao de 6, de 6 x 1 a 6 x 30.

    Depois foi necessrio que algum pensasse numa sequncia de operaes

    que, ao ser executada, produzisse o resultado desejado. Esta sequncia de

    operaes o algoritmo.

    Algoritmos podem ser escritos numa linguagem mais simples do que a

    linguagem de programao. Estas linguagens costumam ser chamadas de

    pseudo-linguagens.

    O programa-exemplo poderia ser escrito da seguinte forma numa

    pseudolinguagem:

    Gerar o primeiro multiplicando (o nmero 1) Enquanto o multiplicando corrente for menor ou igual a 30 repetir

    Calcular o resultado da multiplicao de 6 pelo multiplicando corrente Escrever o resultado calculado Gerar o prximo multiplicando. Fim do enquanto

    H outras pseudolinguagens. Veremos nas prximas aulas...

  • Algoritmo e Programa

    Algoritmos representados em pseudolinguagens no podem ser executados

    por computadores. Devem ser representados em linguagens de programao.

    Um algoritmo representado em linguagem de programao denominado

    PROGRAMA.

    comum que os algoritmos sejam elaborados destas duas maneiras: atravs

    de pseudolinguagem e atravs de uma linguagem entendida pelos

    computadores.

    - A pseudolinguagem uma linguagem prxima da linguagem natural utilizada

    pela pessoa responsvel pelo desenvolvimento do algoritmo. No nosso caso a

    linguagem natural o portugus. A pseudolinguagem um subconjunto da

    linguagem natural. mais fcil elaborar e verificar algoritmos escritos em

    pseudolinguagem.

    - Os computadores s so capazes de executar sequncias de operaes

    com muitos detalhes. Estes detalhes podem atrapalhar o processo de

    elaborao e verificao realizado pelas pessoas envolvidas com o

    desenvolvimento do algoritmo.

    Algoritmos escritos numa linguagem de programao so executados pelo

    computador. Se o algoritmo estiver errado no far o que desejado.

    Assim, muito importante que o algoritmo seja elaborado com ateno.

  • Ento, de acordo com o que foi estudado at agora:

    Para elaborar um programa podemos seguir os seguintes passos:

    1. A definio com clareza do problema

    2. A elaborao de um algoritmo descrito em uma

    pseudolinguagem, que apresente uma soluo para o

    problema.

    3. A elaborao de um programa que corresponda a esta

    soluo

  • II. PROGRAMAO ESTRUTURADA

    Sequncia, seleo e repetio

    Dijkstra e outros propuseram, em fins dos anos 60, que programas

    utilizassem trs estruturas bsicas: sequncia, seleo e repetio. Cada uma delas tem uma estrutura lgica previsvel : a entrada pelo topo e

    a sada pela parte inferior, permitindo ao leitor seguir o fluxo com

    facilidade. Esta proposta teve como objetivo reduzir a complexidade do

    programa, facilitar a leitura, e a realizao de testes e manuteno.

    Esta idia surgiu em um momento em que era muito comum o uso em

    programas do comando GO TO, que tem como objetivo desviar o controle

    para um outro comando. O uso de GO TO dificulta muito o entendimento do

    programa, a realizao de testes e a futura manuteno.

    Modularizao

    Um programa em Fortran pode ser composto por uma sequncia de unidades.

    A primeira dessas unidades a que considerada principal e as demais

    unidades so sub-rotinas ou funes.

    No curso, vamos comear elaborando programas que tenham s o programa

    principal, como o programa-exemplo que foi apresentado. Depois

    passaremos a trabalhar com as demais unidades.

    A qualidade de um programa tambm depende de como estas unidades so

    projetadas. importante que seja realizada uma boa decomposio do

    problema em mdulos. Veremos mais adiante este assunto com detalhes.

    Esta apenas uma introduo: a Programao Estruturada ser estudada e

    aplicada ao longo de todo o curso.

  • III. FORTRAN e o Force

    Fortran:

    - Foi a primeira linguagem considerada de alto nvel.

    - Criada por J. Backus em 1954.

    - Origem do nome: FORmula TRANslation System.

    - At hoje indicada para aplicaes de processamento

    numrico.

    - Desde sua criao a linguagem FORTRAN vem sendo

    aperfeioada.

    IDE (Integrated Development Environment ) utilizado no

    Curso:

  • Voltando ao programa-exemplo.

    Como este programa poder realizar o que desejado?

    necessrio:

    1) Editar e Salvar o Programa escrito em Fortran

    2) Compilar

    3) Executar

    Vamos ver na prtica ....

  • IV . PASSOS PARA O DESENVOLVIMENTO DE UM

    PROGRAMA

    Passos para a construo de um programa:

    1. Definir com clareza o problema

    2. Elaborar um algoritmo descrito em uma pseudolinguagem,

    que apresente uma soluo para o problema.

    3. Elaborar um programa que corresponda ao algoritmo

    4. Digitar, compilar e executar

    5. Realizar testes

    E em todos estes passos devem ser realizadas revises antes

    de se passar ao prximo passo.

    Mais adiante veremos com mais detalhes como cada um desses

    passos realizado.

  • V. COMENTRIOS, NOME DO PROGRAMA, STOP, END e

    PRINT

    Voltando ao programa- exemplo: Objetivo - Escrever uma tabela de multiplicao de 6, de 6 x 1 a 6 x 30. C Escreve uma tabela de multiplicao por 6, de 6 x 1 a 6 x 30. program tabelaDeMultiplicacaoPor6 integer multiplicando, resultado C Gerar o primeiro multiplicando multiplicando = 1 C Gerar a tabela print *, 'Tabela de Multiplicao por 6 - de 6x1 a 6x30' do while (multiplicando .le. 30) C Calcular e imprimir o valor da tabela resultado = 6 * multiplicando print *, '6 x ', multiplicando, ' = ', resultado C Gerar o prximo multiplicando multiplicando = multiplicando + 1 end do print *, 'Tecle ENTER para sair... ' read * stop end

    Colunas 7 a 72 comandos ou comentrios

    Nome do programa Os programas podem ter, no incio, o seu nome. O nome vir logo aps a palavra program

    print *,lista_de_parmetros Print -Sempre inicia uma nova linha ao imprimir. Print * - utilizada a sada padro: a tela. parmetros - separados por vrgulas. Neste caso h um s parmetro, que uma sequncia de caracteres. As sequncias de caracteres devem estar entre apstrofos. (mais adiante veremos outros detalhes sobre impresso...)

    stop Indica o fim da execuo do programa. Poderia estar em outro lugar, mas seguindo os princpios da programao estruturada, construiremos programas nos quais o stop ser sempre o ltimo comando. end Indica o fim do programa

    Comentrios - No so interpretados pelo compilador - A letra c na primeira coluna indica que o que est escrito na linha um comentrio

  • VI. EXERCCIOS

    Exerccio 1: Elabore um programa que escreva: Este o meu primeiro programa. Exerccio 2: Elabore um programa que desenhe a seguinte figura: ***************** * * * * *****************

    Bibliografia:

    - Guimares e Lages, Algoritmos e Estruturas de Dados, Ed. LTC

    - Harry Farrer e outros, Fortran Estruturado (Fortran 77), Ed. Koogan

    - Michael Metcalf, John K. Reid, Fortran 90/95, Oxford University

    Press.

    - Sergio de Carvalho, Introduo Cincia da Computao, Ed.Campus

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO DA 2 AULA

    INTRODUO - CONTINUAO

    I. Variveis

    II. Expresses aritmticas e lgicas

    III. Estrutura de repetio - do while

    IV. Simulando a execuo de um programa

    V. Exerccios

  • I. VARIVEIS

    Uma varivel corresponde a uma posio de memria, cujo

    contedo pode variar durante a execuo do programa.

    Apesar de uma varivel poder assumir diferentes valores, ela s

    pode armazenar um valor a cada momento.

    Toda varivel identificada por um nome e deve ser indicado o

    contedo a ser armazenado na varivel. Veja um trecho do

    programa exemplo. As variveis multiplicando e resultado foram

    declaradas como integer.

    C Escreve uma tabela de multiplicao por 6, de 6 x 1 a 6 x 30.

    program tabelaDeMultiplicacaoPor6 integer multiplicando, resultado

    C Gerar o primeiro multiplicando

    multiplicando = 1 ....

  • A atribuio de valor a uma varivel:

    No programa exemplo podemos observar as seguintes

    atribuies de valores s variveis multiplicando e resultado:

    C Escreve uma tabela de multiplicao por 6, de 6 x 1 a 6 x 30.

    program tabelaDeMultiplicacaoPor6 integer multiplicando, resultado

    C Gerar o primeiro multiplicando

    multiplicando = 1

    C Gerar a tabela print *, 'Tabela de Multiplicao por 6 - de 6x1 a 6x30'

    do while (multiplicando .le. 30)

    C Calcular e imprimir

    resultado = 6 * multiplicando print *, '6 x ', multiplicando, ' = ', resultado

    C Gerar o prximo multiplicando multiplicando = multiplicando + 1

    end do

    Em Fortran comandos de atribuio tm a forma:

    varivel = expresso

    Na execuo avaliada em primeiro lugar a expresso direita

    do sinal = e em seguida o valor da expresso atribudo

    varivel.

    Ao elaborar os algoritmos em pseudo-linguagem vamos passar a

    usar a seguinte notao quando houver uma atribuio.

    Nome da Varivel expresso

  • II. EXPRESSES ARITMTICAS E LGICAS

    Expresses aritmticas

    Expresso aritmtica aquela cujos operadores so aritmticos

    e os operandos so constantes e/ou variveis numricas.

    Exemplo:

    6 * multiplicando

    (O operador * corresponde operao de multiplicao.

    6 uma constante numrica e multiplicando uma varivel do

    tipo inteiro)

    Expresses lgicas

    No programa exemplo podemos observar a seguinte expresso

    lgica multiplicando .le. 30

    ...

    do while (multiplicando .le. 30)

    ...

    uma comparao entre dois valores de mesmo tipo.

    O operador .le. significa menor ou igual a. um operador

    relacional que indica a comparao a ser realizada.

    O resultado sempre verdadeiro ou falso.

    Obs: Leia, no livro texto, detalhes sobre as expresses aritmticas e lgicas

  • III. ESTRUTURA DE REPETIO - DO WHILE

    A estrutura de repetio permite que uma sequncia de

    comandos seja executada repetidamente at que determinada

    condio de interrupo seja satisfeita.

    A repetio pode ser realizada atravs da operao do while.

    do while(expresso lgica)

    seqncia de passos

    end do

    A expresso lgica testada.

    Se for verdadeira, a sequncia de comandos executada.

    Aps, a expresso testada novamente.

    A repetio continua enquanto a expresso for verdadeira.

    Quando for falsa, a repetio termina.

    No programa exemplo:

    C Gerar a tabela

    print *, 'Tabela de Multiplicao por 6 - de 6x1 a 6x30'

    do while (multiplicando .le. 30)

    C Calcular e imprimir

    resultado = 6 * multiplicando print *, '6 x ', multiplicando, ' = ', resultado

    C Gerar o prximo multiplicando multiplicando = multiplicando + 1

    end do

  • IV. SIMULANDO A EXECUO DE UM PROGRAMA

    Para entender como o programa executado, importante que

    seja explicado o funcionamento do computador. Ser utilizado,

    para facilitar o entendimento, um modelo simplificado de

    computador.

    O computador tem trs partes principais: a unidade de

    processamento central, a memria e os dispositivos de entrada e

    de sada de dados.

    Dispositivos de entrada e sada de dados - Os dados so

    obtidos de dispositivos de entrada, como o teclado, por exemplo,

    ou calculados em operaes do programa. Os dados gerados

    atravs da execuo do programas podem ser disponibilizados em

    dispositivos de sada, como a tela.

    Memria - responsvel pelo armazenamento de dados, os

    valores.

    Unidade de processamento central responsvel por

    executar, em ordem, as operaes especificadas no programa.

    A ordem imposta pelas seguintes estruturas de controle:

    sequncia de passos, repetio de passos e seleo entre passos.

    Na aula passada, algoritmo foi descrito como uma sequncia de

    operaes que, ao ser executada, produz o resultado desejado.

    Uma definio mais detalhada seria a seguinte:

  • Um algoritmo uma sequncia de passos, onde cada passo de

    uma das seguintes trs naturezas:

    - Uma operao elementar

    - Uma operao de controle especificando a repetio de uma

    sequncia de passos

    - Uma operao de controle especificando uma seleo entre

    sequncia de passos.

    Uma operao elementar qualquer uma que no seja de

    controle especificando repetio ou seleo. Ex: clculos onde

    gerado um resultado, impresso de dados.

    No algoritmo apresentado na aula passada podemos observar

    operaes elementares e uma operao de controle especificando

    a repetio de uma sequncia de passos. Identifique-as,

    observando o algoritmo escrito numa pseudo-linguagem.

    Gerar o primeiro multiplicando (o nmero 1) Enquanto o multiplicando corrente for menor ou igual a 30 repetir

    Calcular o resultado da multiplicao de 6 pelo multiplicando corrente Escrever o resultado calculado Gerar o prximo multiplicando. Fim do enquanto

  • Antes que o programa seja executado, ele :

    - lido de um dispositivo de entrada e traduzido para uma

    linguagem interna. O programa nesta linguagem interna

    colocado na memria.

    - alocada na memria uma rea reservada aos nomes usados no

    programa. Cada nome associado a determinados atributos

    (quando foi criado, por exemplo) e ao seu valor corrente.

    O processador central, em uma fase de preparao, acessa a

    primeira instruo do programa, o primeiro dado de entrada e a

    primeira linha do relatrio de sada.

    Uma vez determinada a primeira operao do programa a ser

    executada, ocorre o seguinte passo:

    Enquanto existirem operaes a serem executadas, repetir:

    Executar a operao selecionada

    Selecionar a prxima operao

  • Exerccio Simular a execuo do programa-exemplo

    C Escreve uma tabela de multiplicao por 6, de 6 x 1 a 6 x 30.

    program tabelaDeMultiplicacaoPor6

    integer multiplicando, resultado C Gerar o primeiro multiplicando

    multiplicando = 1

    C Gerar a tabela print *, 'Tabela de Multiplicao por 6 - de 6x1 a 6x30'

    do while (multiplicando .le. 30)

    C Calcular e imprimir

    resultado = 6 * multiplicando print *, '6 x ', multiplicando, ' = ', resultado

    C Gerar o prximo multiplicando

    multiplicando = multiplicando + 1 end do

    print *, 'Tecle ENTER para sair... '

    read * stop

    end

  • V. EXERCCIOS

    1) Elabore um programa que escreva uma tabela de multiplicao de 6 pelos nmeros pares, de 2 a 20.

    2) Elabore um programa que escreva a tabela de multiplicao de 6,

    imprimindo o resultado de 6 x1 a 6xn. O valor de n dever ser solicitado ao usurio.

    Bibliografia:

    - Harry Farrer e outros, Fortran Estruturado (Fortran 77), Ed. Koogan

    - Michael Metcalf, John K. Reid, Fortran 90/95, Oxford University

    Press.

    - Sergio de Carvalho, Introduo Cincia da Computao, Ed.Campus

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO DA 3 AULA

    I. Entrada e sada de dados

    II. Exerccios

  • I. ENTRADA E SADA DE DADOS

    Entrada de dados:

    read *, lista_de_identificadores

    lista_de_identificadores so os nomes das variveis, separadas por vrgulas, nas

    quais so armazenados os valores provenientes da entrada.

    * indica que ser utilizado o teclado como meio de entrada de dados .

    Exemplos

    read *, n

    read *, m, n

    Quando vrios valores devem ser lidos: Os dados devem ser separados por espaos

    ou devem estar em linhas separadas.

    Sada de dados:

    print *, lista_de_identificadores

    lista_de_identificadores - so nomes das variveis (nas quais esto armazenados

    os valores) ou sequncias de caracteres (constantes literais), separadas por

    vrgulas. As sequncias de caracteres devem estar entre apstrofos.

    Print - Sempre inicia uma nova linha ao imprimir.

    * indica que ser utilizada a sada padro: a tela.

    Outras informaes sobre entrada e sada de dados sero apresentadas mais

    adiante, em outras aulas.

    Exerccio:

    Diga como ficar a impresso, considerando que o valor de multiplicando 2 e de

    resultado 12:

    print *, 'Tabela de Multiplicao por 6 - de 6x1 a 6x30'

    print *, '6 x ', multiplicando, ' = ', resultado

  • II. EXERCCIOS

    a) Faa um programa que calcule e escreva a soma dos nmeros inteiros de 1 a

    100.

    b) Faa um programa que calcule e escreva a soma dos nmeros inteiros de 1 a

    n. O valor de n dever ser solicitado ao usurio.

    c) Faa um programa que calcule e escreva a soma dos nmeros inteiros de m

    a n. Os valores de m e n devero ser solicitados ao usurio.

    A elaborao dos programas deve seguir o processo apresentado a seguir:

    Passos para a construo de um programa:

    1. Definir com clareza o problema

    2. Elaborar um algoritmo descrito em uma pseudo-linguagem, que

    apresente uma soluo para o problema.

    3. Fazer um programa que corresponda soluo elaborada no passo 2.

    4. Digitar, compilar e executar

    5. Realizar testes

    Em todos estes passos devem ser realizadas revises antes de se passar ao

    prximo passo. Simule a execuo antes de passar ao passo 3.

    Para resolver em casa:

    a) Faa um programa que escreva os mltiplos de n, de n a m.

    b) Faa um programa que calcule e escreva a soma dos mltiplos de n, de n a m.

    c) Faa um programa que calcule e escreva o fatorial de n.

    N! = 1 x 2 x 3 x ... x (N 1) x N

    0! = 1

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO DA 4 AULA

    I. Exerccios

    II. Estrutura de repetio - do

  • I. EXERCCIOS

    1. Faa um programa que calcule N ! (fatorial de N)

    N ! = 1 x 2 x 3 x ... x (N 1) x N

    0 ! = 1

    A elaborao do programa deve seguir o processo apresentado a seguir:

    Passos para a construo de um programa:

    1. Definir com clareza o problema

    2. Elaborar um algoritmo descrito em uma pseudo-linguagem, que

    apresente uma soluo para o problema.

    3. Fazer um programa que corresponda soluo elaborada no passo 2.

    4. Digitar, compilar e executar

    5. Realizar testes

    Em todos estes passos devem ser realizadas revises antes de se passar ao

    prximo passo. Simule a execuo antes de passar ao passo 3.

    Algoritmo na pseudo-linguagem:

    leia n

    fat 1

    num 2

    enquanto (num

  • Programa em Fortran:

    program fatorial

    integer fat, n, num

    print *, 'Escreva o nmero n para o c lculo de n!'

    read *, n

    fat = 1

    num = 2

    do while (num .le. n)

    fat = fat * num

    num = num + 1

    end do

    print *, 'Fatorial de ', n, '= ', fat

    print *, 'Tecle ENTER para sair'

    read *

    stop

    end

    2. Faa um programa que leia vrios nmeros inteiros, calcule e escreva a soma

    desses nmeros. Dever ser informada a quantidade de nmeros a serem

    lidos.

  • program somaDeNInteiros

    integer quantNum, cont, soma, num

    print *, 'Diga a quantidade de nmeros'

    read *, quantNum

    soma = 0

    cont = 1

    do while (cont .le. quantNum)

    print *, ' Escreva o numero'

    read *, num

    soma = soma + num

    cont = cont + 1

    end do

    print *, ' Soma = ', soma

    print *, 'Tecle ENTER para sair'

    read *

    stop

    end

    II. ESTRUTURA DE REPETIO DO

    A estrutura de repetio permite que uma sequncia de comandos seja executada

    repetidamente at que determinada condio de interrupo seja satisfeita.

    A repetio pode ser realizada atravs das estruturas

    do while e do

    Do while j foi estudado. Lembrando:

    do while(expresso lgica)

    seqncia de passos

    end do

  • Como funciona:

    - A expresso lgica testada.

    - Se for verdadeira, a sequncia de passos executada.

    - Aps, a expresso testada novamente.

    - A repetio continua enquanto a expresso for verdadeira. Quando for

    falsa, a repetio termina e o prximo passo a ser executado o que vem

    aps o end do.

    Repetio com DO

    do var = n1,n2,n3

    seqncia de passos

    end do

    var - uma varivel inteira ou real

    n1 uma constante ou varivel inteira ou real. Representa o valor inicial atribudo a

    var.

    n2 - uma constante ou varivel inteira ou real. Representa o limite de valores que

    var pode assumir.

    n3 uma constante ou varivel inteira ou real. Representa o incremento que var

    ter aps cada execuo dos passos. Se n3 for igual a 1, pode ser omitido.

    Como funciona:

    - var recebe inicialmente o valor n1,

    - a seqncia de passos executada,

    - e o valor de var aumenta de n3 a cada vez que o comando volta para a linha

    inicial do do.

    - A repetio s para quando o valor de var ultrapassa n2.

    Caso o programa exija uma contagem regressiva o valor de n3 deve ser negativo e

    n1maior que n2.

    n1, n2 e n3 podem ser constantes ou variveis inteiras ou reais, positivas ou

    negativas.

  • Recomendao:

    Sempre que o nmero de iteraes conhecido antes do incio da execuo da

    repetio, deve ser utilizado o do e no o do while.

    Utilizando o do, o programador no necessita controlar o nmero de iteraes

    dentro do corpo da repetio.

    Representao na pseudo-linguagem:

    para var de n1 a n2, passo n3 faa

    sequncia de passos

    fim para

    Exerccio:

    Escreva o programa do exerccio anterior, apresentado a seguir, substituindo o

    do while pelo do

    program somaDeNInteiros

    integer quantNum, cont, soma, num

    print *, 'Diga a quantidade de nmeros'

    read *, quantNum

    soma = 0

    cont = 1

    do while (cont .le. quantNum)

    print *, ' Escreva o numero'

    read *, num

    soma = soma + num

    cont = cont + 1

    end do

    print *, ' Soma = ', soma

    print *, 'Tecle ENTER para sair'

    read *

    stop

    end

  • program somaDeNInteiros

    integer quantNum, cont, soma, num

    print *, 'Diga a quantidade de nmeros'

    read *, quantNum

    soma = 0

    do cont = 1, quantNum

    print *, ' Escreva o numero'

    read *, num

    soma = soma + num

    end do

    print *, ' Soma = ', soma

    print *, 'Tecle ENTER para sair'

    read *

    stop

    end

    Para a prxima aula:

    Estudar as expresses aritmticas.

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO DA 5 AULA

    I. Tipo Real e Expresses Aritmticas

    II. Exerccios

  • I. TIPO REAL e EXPRESSES ARITMTICAS

    Pginas 1 at 7- Harry Farrer e outros, Fortran Estruturado.

    II. EXERCCIOS

    1) Faa um programa que leia vrias notas de um aluno, calcule e escreva a

    mdia. Dever ser informada a quantidade de notas a serem lidas.

    2) Faa um programa que calcule e escreva o valor de S

    S= 1

    1 +

    3

    2 +

    5

    3 +

    7

    4 + +

    99

    50

    3) Faa um programa que calcule e escreva a seguinte soma:

    2

    50 +

    22

    49 +

    23

    48 + +

    250

    1

    Para a prxima aula:

    1) Faa um programa que determine e escreva o n-esimo termo da srie de

    Fibonacci

    Srie de Fibonacci - 0 1 1 2 3 5 ....

    2) Faa um programa que calcule e escreva a soma dos n primeiros termos

    da srie

    100

    0! +

    99

    1!+

    98

    2 !+

    97

    3!+

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO DA 6 AULA

    I. Funes

    II. Exerccios

  • I. FUNES

    At o momento utilizamos nas expresses aritmticas as operaes bsicas

    (adio, subtrao, multiplicao, diviso e potenciao).

    Podem ser usadas tambm nas expresses aritmticas, funes comuns na

    Matemtica que so disponibilizadas pelo compilador Fortran.

    Consulte o livro para conhecer estas funes.

    Nos exerccios a seguir utilizaremos a funo MOD

    MOD (x, y) - resto da diviso de x por y

    x e y so parmetros do tipo inteiro e o resultado inteiro.

    Exemplo:

    ...

    integer resto, num1, num2

    num1 = 10

    num2 = 3

    resto = MOD (num1, num2)

    ...

    O valor da varivel resto ao final da execuo da sequncia de comandos 1.

    II. EXERCCIOS

    1) Faa um programa que leia vrios pares de nmeros e escreva o resto da

    diviso do primeiro pelo segundo. O programa dever perguntar ao usurio

    o nmero de pares a serem lidos.

    2) Faa um programa que calcule e escreva o MDC (mximo divisor comum) de dois nmeros inteiros. Utilize o algoritmo de Euclides.

    O MDC de dois nmeros inteiros o maior nmero inteiro que divide ambos sem deixar resto.

    3) Faa um programa que calcule e escreva o MDC de vrios pares de

    nmeros. O programa dever perguntar ao usurio o nmero de pares a

    serem lidos.

  • Lembrando:

    A elaborao dos programas deve seguir o processo apresentado a seguir:

    Passos para a construo de um programa:

    1. Definir com clareza o problema

    2. Elaborar um algoritmo descrito em uma pseudolinguagem, que apresente

    uma soluo para o problema.

    3. Fazer um programa que corresponda soluo elaborada no passo 2.

    4. Digitar, compilar e executar

    5. Realizar testes

    Em todos estes passos devem ser realizadas revises antes de se passar ao

    prximo passo. Simule a execuo antes de passar ao passo 3.

    EXERCCIOS A SEREM RESOLVIDOS AT A PRXIMA AULA

    1) Diga se as constantes numricas abaixo so constantes inteiras vlidas:

    23

    + 8

    -9

    -9.

    8.900.888

    2) Diga se as constantes numricas abaixo so constantes reais vlidas:

    0.234

    .5

    -6.

    -4.E-8

    9.56E9

    14,8

    9

    3) Explique o motivo dos seguintes identificadores de variveis no serem

    vlidos:

    5b

    S:9

    4) Represente as seguintes expresses matemticas em Fortran

  • a) +

    1 +

    b) 2 4

    5) Diga o resultado das seguintes divises e explique o motivo dos resultados

    serem diferentes:

    a) 12/5

    b) 12./5

    c) 12./5.

    6) Considerando que a varivel s do tipo real e as variveis num e den

    so do tipo inteiro, diga qual o valor que s ter aps a execuo da seguinte

    sequncia de comandos:

    s = 8

    num = 12

    den = 5

    s = s + num / den

    7) Qual o motivo da recomendao de se evitar a utilizao de expresses

    aritmticas mistas?

    8) O que uma expresso lgica ?

    9) Diga a quantidade de repeties que so especificadas pelas seguintes

    linhas de comando:

    a) do i = 1, 5

    b) do cont = 1, 16, 2

    c) do ind = 15, 3, -5

    d) do a = 0.0, 1.2, 0.1

    10) Faa um programa que escreva as tabelas de multiplicao de 2 a 9 pelos

    multiplicandos de 1 a 20.

    11) Faa um programa que escreva todos os termos da srie de Fibonacci, at o

    n-esimo. O programa dever solicitar o valor de n.

    Srie de Fibonacci - 0 1 1 2 3 5 ....

    12) Faa um programa que calcule e escreva o MDC de vrios pares de nmeros.

    O programa dever perguntar ao usurio, antes de solicitar os pares, se ele

    deseja continuar.

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO DA 7 AULA

    I. Esclarecimento de dvidas de exerccios anteriores

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO DA 8 AULA

    - Expresses lgicas

    - Estrutura Condicional

    - Exerccios

    I. EXPRESSES LGICAS

    1. Variveis e constantes lgicas so expresses lgicas

    - Constante lgica um valor lgico que s pode ser verdadeiro ou falso. S h duas

    constantes deste tipo, representadas pelas palavras true e false, precedidas e seguidas

    por um ponto: .TRUE. e .FALSE.

    - As variveis lgicas so declaradas como LOGICAL

    Ex: LOGICAL existe

    2. Expresses relacionais so expresses lgicas

    Expresses relacionais so comparaes que quando avaliadas, produzem o resultado

    .TRUE. ou .FALSE.

    Uma expresso relacional uma comparao realizada entre dois valores de mesmo tipo

    bsico.

    Os operadores relacionais indicam a operao a ser realizada entre os termos da relao:

    Operador Relacional

    .GT. >

    .GE.

    .LT. <

    .LE.

    .EQ. =

    .NE.

  • Exemplo de expresso relacional: num .GT. 8

    (num uma varivel do tipo integer)

    3. Sendo A e B expresses lgicas, ento

    A .AND. B

    A .OR. B

    .NOT. A

    tambm so expresses lgicas.

    AND, OR e NOT so operadores lgicos.

    A .AND. B O resultado verdadeiro se A for verdadeiro e B tambm for verdadeiro.

    Nos demais casos o resultado falso.

    A .OR. B O resultado falso se A for falso e B tambm for falso. Nos demais casos o

    resultado verdadeiro.

    .NOT. A Se A verdadeiro o resultado falso. E se B for falso o resultado

    verdadeiro.

    II. ESTRUTURA CONDICIONAL

    utilizada para criar sequncias alternativas de aes.

    II.1) Estrutura condicional simples

    If ( expresso lgica ) then Sequncia de comandos End if

    A expresso lgica avaliada produzindo o resultado verdadeiro ou falso. Se for

    verdadeiro, a sequncia de comandos executada e logo aps executado o

    comando que segue o end if. Se o resultado for falso, o comando que segue o

    end if executado.

  • II.2) Estrutura condicional composta

    If ( expresso lgica ) then Sequncia de comandos Else

    Sequncia de comandos End if

    A expresso lgica avaliada produzindo o resultado verdadeiro ou falso. Se for

    verdadeiro, a primeira sequncia de comandos executada e logo aps executado

    o comando que segue o end if. Se o resultado da expresso lgica for falso, a

    sequncia de comandos aps o else executada e logo aps executado o comando

    que segue o end if.

    III. EXERCCIOS

    1) Faa um programa que realize o que pedido a seguir:

    - Leia 6 notas de um aluno

    - Calcule a mdia e verifique se o aluno foi aprovado (mdia maior ou igual a 6), se

    est em VS (mdia maior ou igual a 4 e menor que 6) ou ento se foi reprovado

    (mdia menor que 4)

    - Escreva a mdia do aluno e a sua situao

    2) Faa um programa que leia 3 valores inteiros diferentes, determine e imprima o

    menor deles.

    3) Altere o programa apresentado na aula anterior, que calculava a mdia de um aluno

    em uma disciplina a partir de vrias notas, que eram lidas at ser encontrado o

    valor -1. Inclua o comando de seleo para tratar a situao em que no h dados (o

    primeiro valor lido -1).

    4) Faa outra verso do programa 1. Agora a quantidade de notas no conhecida e o

    programa dever perguntar ao usurio, antes de solicitar cada nota, se deseja

    informar uma nova nota.

    5) Faa um programa que verifique se um nmero perfeito.

    Um nmero perfeito aquele cuja soma de todos os seus divisores, excluindo ele

    mesmo, igual ao prprio nmero.

    Exemplo: 6 e 28 so perfeitos

    6 = 1+ 2 + 3

    28 = 1 + 2 + 4 + 7 + 14

    6) Faa um programa que decomponha um nmero em seus fatores primos e indique

    para cada fator primo, o nmero de ocorrncias.

  • Ex: 150

    150 ! 2

    75 ! 3

    25 ! 5

    5 ! 5

    1 !

    Resposta :

    2 ocorre 1 vez

    3 ocorre 1 vez

    5 ocorre 2 vezes

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO DA 9 AULA

    1) Dvidas dos exerccios anteriores

    2) Recomendao: Utilizar sempre nos programas o comando implicit none. Quando este comando usado em um programa, o compilador acusa erro caso uma varivel citada no programa no tenha sido declarada explicitamente. Lembre que em Fortran o primeiro caracter do identificador de uma varivel define implicitamente o tipo dessa varivel, de acordo com a seguinte conveno:

    - Os identificadores de variveis iniciados pelas letras I, J, K, L, M e N representam variveis inteiras

    - Os identificadores de variveis iniciados por quaquer outra letra diferente destas mencionadas acima representam variveis reais. aconselhvel, no entanto, que as variveis sejam sempre declaradas explicitamente, indicando-se o nome do tipo e a lista de identificadores. Exemplo: integer cont real media

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO - 10 e 11 AULAS Laboratrio e Sala de Aula - Dvidas de Exerccios anteriores e novos exerccios

    EXERCCIOS

    1) Faa um programa que leia um nmero inteiro de 4 algarismos e verifique se ele tem

    a mesma caracterstica do nmero 3025:

    30 + 25 = 55

    552 = 3025

    2) Faa uma nova verso do programa anterior de modo que ele verifique quais os

    nmeros de 4 algarismos que tm a mesma caracterstica do nmero 3025:

    30 + 25 = 55

    552 = 3025

    3) Faa um programa que realize o que pedido a seguir:

    - Leia 3 valores inteiros e maiores que zero.

    - Verifique se estes valores podem ser os lados de um tringulo

    - Caso possam formar um tringulo:

    Verifique se os trs valores formam um tringulo equiltero (3 lados iguais),

    issceles (2 lados iguais) ou escaleno (3 lados diferentes).

    Escreva o tipo de tringulo.

    4) Altere o programa anterior possibilitando a consulta at que o usurio diga que no

    deseja mais continuar.

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    RESUMO - 12 AULA - CONSTANTES E VARIVEIS LITERAIS - EXERCCIOS

    CONSTANTES E VARIVEIS LITERAIS

    CONSTANTE LITERAL Uma constante literal qualquer sequncia de caracteres (letras, dgitos ou smbolos especiais). A sequncia de caracteres deve estar entre apstrofos. Uma sequncia de caracteres tambm chamada de string. Exemplos de sequncias de caracteres: amarelo 16/10/2010 VARIVEL LITERAL As variveis literais podem armazenar uma sequncia com um nmero varivel de caracteres. Declarao:

    character v1 *c1, v2 *c2, .... , vn *cn

    character - a palavra-chave vi - uma varivel ci - o nmero mximo de caracteres que poder ser armazenado na varivel vi

  • Exemplo: character nome Outra forma de declarar:

    character *c v1,..., vn

    Neste caso as variveis declaradas possuem o mesmo tamanho c. Exemplo: character *15 cor, nome

    EXERCCIO

    Considere que para se determinar o nmero de lmpadas necessrias para cada

    cmodo de uma residncia, existem normas que do o mnimo de potncia de

    iluminao exigida por metro quadrado, conforme a utilizao do cmodo.

    Suponha que utilizada a seguinte tabela e que s so utilizadas no projeto da

    residncia lmpadas de 60W.

    Utilizao Classe Potncia/m2

    Quarto 1 15

    Sala de TV 1 15

    Salas 2 18

    Cozinha 2 18

    Varanda 2 18

    Escritrio 3 20

    Banheiro 3 20

    Faa um programa que:

    a) Leia um nmero indeterminado de linhas contendo cada uma:

    - o nome do cmodo

    - a classe de iluminao deste cmodo

    - as duas dimenses do cmodo

  • b) Calcule e escreva

    b1) Para cada cmodo

    - o nome

    - a rea

    - a potncia de iluminao

    - o nmero de lmpadas necessrias

    b2) Para toda a residncia

    - o total de lmpadas

    - o total de potncia

    Obs:

    1) Se o nmero calculado de lmpadas for fracionrio, considerar o menor inteiro que

    contenha esse nmero. Ex: 8,3 9; 8,7 9

    2) A ltima linha, que no entrar nos clculos, conter no lugar do cmodo a palavra

    vazio e os demais valores sero 0.

    - Adaptado de exerccio do livro Harry Farrer, Fortan Estruturado

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    Resumo 2 Parte/1 Aulas de Variveis Compostas Homogneas Unidimensionais

    VARIVEIS COMPOSTAS HOMOGNEAS UNIDIMENSIONAIS

    At o momento estudamos as variveis simples com seus tipos bsicos (real, inteiro, lgico e literal). No entanto, h situaes nas quais importante criar uma nica varivel, que tenha tantos componentes quantos so os valores a serem processados. Essas variveis existem em linguagens para facilitar a representao e o acesso a valores relacionados entre si. Comearemos a estudar as variveis compostas, que tambm so chamadas de agregados, arranjos, vetores e matrizes. Variveis compostas homogneas:

    - so identificadas por um nico nome, individualizadas por ndices e o seu contedo de um nico tipo.

    - Podem ter uma ou mais dimenses. Dentre as variveis compostas homogneas, veremos inicialmente aquelas que tm uma s dimenso, ou unidimensionais. Estas variveis so tambm chamadas de vetores. Exemplo: Suponha que as 10 respostas de um aluno a um exerccio de mltipla escolha estejam na varivel denominada resposta: resposta

    a a c b d a e c c d

    1 2 3 4 5 6 7 8 9 10 a) Para referenciar um elemento desta varivel necessrio colocar o nome

    da varivel, seguida de um ndice, entre parnteses. Por exemplo, para referenciar o segundo elemento, deve ser escrito:

    resposta (2)

  • O contedo de resposta (2) a

    a a c b d a e c c d

    1 2 3 4 5 6 7 8 9 10 2 o ndice, uma constante inteira.

    b) Para tornar mais flexvel a utilizao de variveis compostas so utilizadas

    variveis inteiras e expresses aritmticas como ndices. resposta (i) i substitudo por seu contedo. c) Leitura e escrita Exemplo: - Leitura das 10 respostas de um aluno para a varivel composta resposta: do i = 1, 10 read *, resposta (i) end do ou: read *, (resposta (i), i = 1, 10) - Escrita do i = 1, 10 print *, resposta (i) end do ou: print *, (resposta (i), i = 1, 10) d) Declarao

    nome-do-tipo ident1 (Li1:Ls1), ident2 (Li2:Ls2), .... , identn (Lin:Lsn)

    nome-do-tipo - uma palavra chave (integer, real, logical, etc) que define o tipo do contedo a ser armazenado pela varivel. ident1, ident2,..., identn - lista de nomes escolhidos para as variveis.

  • Li1, Li2, .... , Lin limites inferiores dos intervalos de variao dos ndices. Quando for omitida esta especificao o limite inferior assume o valor 1. Os limites inferiores podem ser valores inteiros negativos, nulos ou positivos. Ls1, Ls2, .... , Lsn - limites superiores dos intervalos de variao dos ndices. Os limites superiores podem ser valores inteiros negativos, nulos ou positivos. O limite superior deve sempre ser maior ou igual ao limite inferior. Exemplos: character resposta (10) real quantidade (20) character nome (20) *30

    EXERCCIOS

    1. Elabore um programa em Fortran que leia os preos de um produto em diferentes lojas,

    calcule o preo mdio, verifique e escreva em quantas lojas o preo foi maior que a mdia. O

    nmero de lojas informado pelo usurio.

    2. Elabore um programa em Fortran que faa a correo de uma prova de mltipla escolha

    realizada por alunos de uma turma. O programa dever atender aos seguintes requisitos:

    - solicitar ao usurio o nmero de questes da prova

    - solicitar ao usurio o gabarito. As respostas podem ser a, b, c, d e e.

    - solicitar ao usurio a matrcula e as respostas de cada aluno.

    - determinar o nmero de questes corretas de cada aluno e escrever este valor, juntamente

    com a matrcula do aluno.

    A matrcula tem 6 caracteres e o fim dos dados de alunos indicado pela palavra fim.

    3. Elabore um programa em Fortran que determine e escreva a interseo de duas sequncias

    de inteiros. O programa dever atender aos seguintes requisitos:

    - solicitar ao usurio a quantidade de elementos de cada uma das sequncias.

    - solicitar ao usurio os valores que pertencem a cada sequncia.

    - determinar e escrever os elementos que esto presentes simultaneamente nas duas

    sequncias.

    Obs: As sequncias no esto ordenadas e em cada uma delas no h elementos repetidos.

    4. Elabore um programa em Fortran que determine e escreva a unio de duas sequncias de

    inteiros. O programa dever atender aos seguintes requisitos:

    - solicitar ao usurio a quantidade de elementos de cada uma das sequncias.

    - solicitar ao usurio os valores que pertencem a cada sequncia.

    - determinar e escrever todos os elementos presentes nas duas sequncias.

    Obs: As sequncias no esto ordenadas e em cada uma delas no h elementos repetidos.

    5. Elabore um programa em Fortran que leia uma sequncia de valores inteiros para um vetor,

    ordene este vetor e escreva-o ordenado.

    Bibliografia: - Harry Farrer e outros, Fortran Estruturado, Ed. Koogan

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    Resumo 2 Parte/2 Aulas de Subrotinas

    SUBROTINAS

    A partir de agora vamos elaborar programas compostos por mdulos. Cada programa ser constitudo de um mdulo que o principal, alm de outros denominados subprogramas. O programa principal corresponde verso inicial do algoritmo. Os passos que necessitarem de refinamentos so representados no programa principal por chamadas de subprogramas. A execuo comea pelo programa principal. Quando, atravs de um comando especial, um subprograma chamado, ativada a regio de comunicao entre os mdulos envolvidos: o que chama e o que chamado. Depois da execuo do mdulo chamado, continua a execuo do mdulo que chamou, no comando que segue o comando de chamada. Cada mdulo possui definies de variveis e comandos prprios. E so estabelecidas regies de comunicao entre os mdulos. Em Fortran h dois tipos de subprogramas que podem ser utilizados: subrotinas e funes. Vamos comear estudando as subrotinas.

    Declarao de uma subrotina:

    subroutine nome-da-subrotina (lista-de-parmetros) declarao de parmetros declarao de variveis locais comandos end

    subroutine uma palavra chave nome-da-subrotina um identificador, com as mesmas restries do nome de uma varivel. lista-de-parmetros so parmetros formais que sero substitudos pelos parmetros atuais (argumentos) quando a subrotina for chamada. Podem ser nomes de variveis simples ou compostas e nomes de outros subprogramas. declarao de parmetros - a declarao de parmetros formais. declarao de variveis locais a declarao de variveis utilizadas apenas nesta subrotina.

  • comandos so quaisquer comandos Fortran. Return um comando que indica o final lgico da subrotina e retorna o controle para o programa ou subprograma que a chamou. end uma palavra chave

    Chamada de uma subrotina:

    call nome-da-subrotina (lista-de-parmetros)

    call uma palavra chave lista de parmetros parmetros atuais, ou argumentos, que substituiro os parmetros formais durante a execuo da subrotina. Devem corresponder em nmero, ordem, tipo e dimenso aos parmetros formais da declarao da subrotina.

    Vantagens da elaborao de subprogramas:

    1. Facilidade de entendimento - Um programa pode ser muito longo e programas longos so difceis de serem compreendidos

    2. Economia de cdigo O subprograma pode ser desenvolvido uma vez e utilizado, atravs de chamadas, de vrios pontos do programa.

    3. Codificao, compilao e teste em separado Vrias pessoas poderiam desenvolver os subprogramas necessrios separadamente.

    4. Facilidade de manuteno A modularizao facilita a identificao dos trechos que devem sofrer alterao durante a manuteno.

    EXERCCIOS

    1) Elabore o subrotina Ordena (A,N). O vetor A contm N elementos inteiros sem repetio e dever ser ordenado em ordem crescente. Elabore um programa que leia at 25 inteiros para um vetor, realize a ordenao dos elementos do vetor em ordem crescente atravs de uma chamada subrotina Ordena e escreva os elementos ordenados.

  • program OrdenacaoInteiros implicit none integer seq (25), quant, i print *, 'Diga a quantidade de nmeros - mximo = 25' read *, quant print *, 'Escreva os nmeros' read *, (seq (i), i = 1, quant) call ordena (seq, quant) print *, 'Sequncia ordenada' print *, (seq (i), i = 1, quant) print *, 'Tecle enter para sair' read * stop end c ---------------------------------------------------------- subroutine ordena (a, n) implicit none integer n, a (n) integer i, j, aux do i = 2, n do j = n, i, -1 if ( a (j-1) .GT. a (j) ) then aux = a (j-1) a (j-1) = a (j) a (j) = aux end if end do end do return end c -----------------------------------------------------------

    2) Elabore uma nova verso do programa que determina e escreve a interseo de duas sequncias de inteiros. Crie a subrotina Intersecao.

    3) Faa uma subrotina que transforme segundos em horas, minutos e segundos.

    4) Faa uma subrotina que obtenha as razes de uma equao de segundo grau.

    Bibliografia:

    - Harry Farrer e outros, Fortran Estruturado, Ed. Koogan - Sergio de Carvalho, Introduo Cincia da Computao, Ed.Campus

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    Resumo 2 Parte/3 Aulas de variveis compostas homogneas multidimensionais

    VARIVEIS COMPOSTAS HOMOGNEAS MULTIDIMENSIONAIS

    Dentre as variveis compostas homogneas, estudamos inicialmente aquelas que tm uma s dimenso, ou unidimensionais. Em muitos casos uma s dimenso no suficiente para representar uma estrutura de dados. Agora vamos estudar as variveis compostas homogneas multidimensionais.

    Exemplo: Suponha que foi elaborada a seguinte tabela contendo as quantidades de veculos que vinham de 4 origens e se dirigiam a 4 destinos.

    Origem-Destino Destino 1 Destino 2 Destino 3 Destino 4

    Origem 1 67 29 44 19

    Origem 2 34 66 88 35

    Origem 3 19 32 28 16

    Origem 4 55 77 43 18

    Tabelas de duas dimenses costumam ser chamadas de matrizes. Em Fortran esta tabela pode ser armazenada em uma varivel composta homognea de duas dimenses. Daremos a esta varivel o nome trafego

    a) Para referenciar um elemento desta varivel necessrio colocar o nome

    da varivel, seguida de dois ndices, entre parnteses. Por exemplo, para referenciar a origem 2, destino 1

    trafego (2,1)

  • 1 2 3 4

    1 67 29 44 19

    2 34 66 88 35

    3 19 32 28 16

    4 55 77 43 18

    O contedo de trafego (2,1 ) 34

    2 e 1 so os ndices, constantes inteira.

    Nas variveis de duas dimenses a regra utilizada que o primeiro ndice indica a linha, e o segundo, a coluna.

    b) Para tornar mais flexvel a utilizao de variveis compostas so utilizadas

    variveis inteiras e expresses aritmticas como ndices. Exemplo: do origem = 1, 4 do destino = 1, 4 trafego (origem, destino) = 0 end do end do c) Leitura e escrita - Exemplo de leitura do i = 1, 5 do j = 1, 5 read *, a (i, j) end do end do - Exemplo de escrita do origem = 1, 4 print *, 'Origem - ', origem print *, 'Destino ' , 'Total de veculos' do destino = 1, 4 print *, ' ', destino, ' ', trafego (origem, destino) end do end do d) Declarao

    nome-do-tipo ident1 (LI11:LS11, LI12:LS12, ... ), ident2 (LI21:LS21, LI22:LS22, ...), .... , identn (LIn1:LSn1, LIn2:LSn2, ...)

  • nome-do-tipo - uma palavra chave (integer, real, logical, etc) que define o tipo do contedo a ser armazenado pela varivel. ident1, ident2,..., identn - lista de nomes escolhidos para as variveis. LIj1, LIj2, .... , LIjn limites inferiores dos ndices de cada dimenso. Quando for omitida esta especificao o limite inferior assume o valor 1. Os limites inferiores podem ser valores inteiros negativos, nulos ou positivos. LSj1, LSj2, .... , LSjn - limites superiores dos ndices de cada dimenso. Os limites superiores podem ser valores inteiros negativos, nulos ou positivos. O limite superior deve sempre ser maior ou igual ao limite inferior. Exemplo: integer trafego (4,4)

    EXERCCIOS

    1) Considere que foi realizada uma pesquisa sobre o trfego em uma regio visando a realizao de melhorias. Cada motorista teve que responder de onde vinha e para onde estava indo.

    Cada resposta composta pelos seguintes dados: origem e destino em cdigo (1 a 4). A ltima resposta, que indica o fim dos dados 0 para a origem e 0 para o destino. Elabore um programa em Fortran que leia estas respostas e calcule o total de veculos

    de cada origem-destino, utilizando uma varivel composta de duas dimenses. Dever ser impresso o total de veculos de acordo com o seguinte formato:

    Origem 1 Destino Total de Veculos

    1 67 2 29 3 44 4 19

    Origem 2

    Destino Total de Veculos 1 34 2 66 3 88 4 35

    Origem 3

    Destino Total de Veculos 1 19 2 32 3 28 4 16

    Origem 4

    Destino Total de Veculos 1 55 2 77 3 43 4 18

  • 2) Faa uma nova verso do programa do exerccio anterior. Agora cada resposta composta pelos seguintes dados: origem e destino (1 a 4) alm do tipo de veculo (1 a 3). A ltima resposta, que indica o fim dos dados 0 para a origem, 0 para o destino e 0 para o veculo. Dever ser impresso um relatrio com as quantidades de veculos, de acordo com o seguinte formato:

    Veculo 1

    Origem 1 Destino Total de Veculos

    1 12 2 34 3 45 4 16

    Origem 2

    Destino Total de Veculos 1 16 2 38 3 145 4 116

    Origem 3

    Destino Total de Veculos 1 116 2 138 3 15 4 11

    Origem 4

    Destino Total de Veculos 1 6 2 8 3 45 4 6

    Veculo 2

    ....

    ...

    3) Faa um programa que leia os dados de um tabela com 5 linhas e 5 colunas, multiplique os elementos da diagonal principal por uma constante k, tambm lida, e escreva a tabela resultante. 4) Elabore um programa que leia os dados de uma tabela de quatro linhas e quatro colunas, calcule e escreva a soma de cada linha e a soma de todos os elementos. 5) Faa um programa que gere e escreva o Tringulo de Pascal com n linhas. O nmero de linhas dever ser informado pelo usurio. 6) Elabore uma subrotina que troque duas linhas de uma tabela.

    Bibliografia: - Harry Farrer e outros, Fortran Estruturado, Ed. Koogan

  • PROGRAMAO DE COMPUTADORES 2/2010

    INSTITUTO DE COMPUTAO - UFF

    Profa Teresa Cristina de Aguiar

    Resumo 2

    Parte/4 Aulas de Funes

    Em Fortran h dois tipos de subprogramas que podem ser utilizados: subrotinas e funes. J estudamos as subrotinas e a partir de agora vamos iniciar o estudo das funes. A linguagem Fortran oferece uma biblioteca de funes predefinidas. J utilizamos no curso algumas delas, como sqrt e mod. O programador pode tambm criar funes adicionais, como veremos a seguir. Uma caracterstica das funes, que as diferenciam das subrotinas, que elas retornam sempre um nico valor.

    FUNES

    Declarao de uma funo:

    tipo function nome-da-funo (lista-de-parmetros) declarao de parmetros declarao de variveis locais comandos end

    tipo pode ser integer, real, logical, complex, double precision ou character. function uma palavra chave nome-da-funo um identificador, com as mesmas restries do nome de uma varivel. lista-de-parmetros so parmetros formais que sero substitudos pelos parmetros atuais (argumentos) quando a funo for chamada. Podem ser nomes de variveis simples ou compostas e nomes de outros subprogramas. declarao de parmetros - a declarao de parmetros formais. declarao de variveis locais a declarao de variveis utilizadas apenas nesta funo. end uma palavra chave comandos:

    So quaisquer comandos Fortran. Return um comando que indica o final lgico da funo e retorna o controle

    para o mdulo que a chamou. A funo retornar o valor atribudo ao nome-da-funo

    Exemplo:

  • integer function fatorial (n) implicit none integer n integer num fatorial = 1 do num = 2, n fatorial = fatorial * num end do return end

    Ativao de uma funo: Para ativar uma funo deve ser colocada a seguinte chamada em uma expresso:

    nome-da-funo (lista-de-parmetros)

    lista de parmetros parmetros atuais, ou argumentos, que substituiro os parmetros formais durante a execuo da funo. Devem corresponder em nmero, ordem, tipo e dimenso aos parmetros formais da declarao da funo.

    O tipo da funo deve ser declarado no mdulo que ativar a funo, como se fosse uma varivel comum. program calculoFatorial implicit none integer n, fatorial print *, 'Escreva o valor de n para o clculo de n!' print *, 'n >= 0' read *, n print *, 'Fatorial de ', n, ' = ', fatorial (n) print *, 'Tecle ENTER para sair' read * stop end

  • c ------------------------------------------------------------ integer function fatorial (n) implicit none integer n integer num fatorial = 1 do num = 2, n fatorial = fatorial * num end do return end c ------------------------------------------------------------

    EXERCCIOS

    1. Escreva uma funo que calcule o valor de e:

    e = 1 + 1

    1! +

    1

    2! +

    1

    3! + ...

    O nmero de termos da srie dever ser fornecido funo como parmetro.

    Utilize a funo fatorial (n)

    2. Escreva a funo logical function existe (seq, n, num) que verifica a existncia

    de um nmero num em uma sequncia seq (sem repeties) que tem n valores. Seq

    uma varivel composta unidimensional (vetor).

    3. Escreva um programa que leia um conjunto com 20 nmeros inteiros (sem

    repeties), seguido de outro conjunto de 10 nmeros inteiros (sem repeties), e

    determine e escreva quais destes 10 nmeros so iguais a um dos 20 primeiros.

    Utilize a funo existe.

    4. Escreva a funo mdc (a, b), que retorna o mximo divisor comum entre dois nmeros inteiros a e b.

    5. Escreva um programa que leia dois valores e escreva o mdc, utilizando a funo

    mdc(a,b)

    6. Faa uma funo que transforme horas, minutos e segundos em segundos.

    Bibliografia: - Harry Farrer e outros, Fortran Estruturado, Ed. Koogan