1 / 118

Programa o de computadores FORTRAN

Aula 1. - Histrico- Bsicos. Origem do FORTRAN. Criao dos computadores programveisNecessidade dos cientistasPrecisavam do computadorNo entendiam nada de computadorProgramao em cdigos binriosCriao das linguagens AssemblyConvertidas pelos Assemblers. Origem do FORTRAN. Criao das

kurt
Download Presentation

Programa o de computadores FORTRAN

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


    1. Programação de computadores FORTRAN Prof. Gustavo Luís Furtado Vicente

    2. Aula 1

    3. Origem do FORTRAN Criação dos computadores programáveis Necessidade dos cientistas Precisavam do computador Não entendiam nada de computador Programação em códigos binários Criação das linguagens Assembly Convertidas pelos Assemblers

    4. Origem do FORTRAN Criação das linguagens de “alto-nível” FORTRAN (uma das primeiras) C Pascal etc... Convertidas pelo Compilador

    5. FORTRAN FORTRAN = FORmula TRANslation FORTRAN66 FORTRAN77 FORTRAN90 FORTRAN95 FORTRAN2003 FORTRAN2008 Utilizaremos o FORTRAN95 Ferramentas gratuitas: FTN95 Express (Visual FORTRAN) FTN95 Personal Edition FORCE

    6. FORMATOS Programa-fonte Até o FORTRAN77, formato fixo Linhas de no máximo 72 caracteres Colunas 1 a 5: LABEL Coluna 6: continuação de linha Colunas 7 a 72: instruções da linguagem

    7. FORMATO Espaços em branco ignorados: A=0 e A = 0 são a mesma coisa Mais de uma instrução por linha, separadas por ponto-e-vírgula: A = 0; B = 0; C = 0 é interpretado como três comandos

    8. Caracter ‘&’ (ampersand) usado como marca de continuação de linha: X = (-Y + RAIZ)/(2.0*A) e X = & (-Y + RAIZ) & /(2.0*A) são a mesma coisa FORMATO

    9. Caracter ‘!’ (ponto de exclamação) usado como marca de comentário de linha: X = Y/A – B ! Solução da equação FORMATO

    10. Forma mais simples de um programa FORTRAN: PROGRAM <nome_do_programa> <declaração_de_variáveis> <comandos_executáveis> END PROGRAM <nome_do_programa> FORMATO

    11. Programa “Alô Mamãe” PROGRAM primeiro implicit none print *,”Alô mamãe” END PROGRAM primeiro Primeiro Programa

    12. Primeiro Programa

    13. Primeiro Programa

    14. Primeiro Programa

    15. Primeiro Programa

    16. Nomes em FORTRAN Para nomear variáveis, módulos, programas, etc Caracteres válidos: Letras (a - z ; A - Z) Números (0 – 9) Caracter underscore ‘_’ Primeiro caracter do nome deve ser uma letra Não existem diferenças entre letras minúsculas e letras maiúsculas

    17. Nomes em FORTRAN Exemplos válidos: A A_coisa X1 Tempo_de_voo Velocidade VAR1 VAR2 Exemplos NÃO válidos 1ª A coisa #SINAL

    18. E/S padrão em FORTRAN Entrada padrão: TECLADO Comando simples de entrada de dados: read *, <lista_de_variáveis> onde <lista_de_variáveis> contém as variáveis que receberão os valores digitador o usuário deverá digitar os valores separando-os por vírgula Exemplo: read *, a, b

    19. E/S padrão em FORTRAN Saída padrão: VÍDEO Comando simples de saída de dados: print *, <mensagem>, <lista_de_variáveis> Exemplo: print *, “Média de A e B:”, med

    20. PROGRAM segundo implicit none real :: A print *,”Digite o valor de A:” read *, A print *, “Valor Digitado:”, A END PROGRAM segundo Exemplo de E/S: Segundo Programa

    21. Tipos intrínsecos (básicos) em FORTRAN: Numéricos INTEGER REAL COMPLEX Não-numéricos CHARACTER LOGICAL Declaração simples de variáveis <tipo> :: <lista_de_variáveis> TIPOS DE VARIÁVEIS

    22. Variável INTEGER contém valores inteiros Não podem receber valores com ponto decimal Podemos inicializar uma variável na declaração Exemplos: integer :: a, b, c integer :: x, y=35 INTEGER

    23. Variável REAL contém valores fracionados Partes de um valor REAL parte inteira (com ou sem sinal) ponto decimal parte fracionária expoente (com ou sem sinal) Exemplos: -10.6e-11 (representando o valor -10.6 x 10-11) 1. -0.1 1e-1 3.1415926 real:: a, b=-4e12, c=7.5e-3 REAL

    24. Variável COMPLEX contém valores complexos Z = X + Yi , onde i é a raiz de -1 Partes de um valor COMPLEX parte REAL Parte IMAGINÁRIA Representação: (<parte real>, <parte imaginária>) Exemplos: (1.2, 4) (-1.5, 2e-6) complex :: a, b=(-4e12,5e-3) COMPLEX

    25. Variável CHARACTER contém caracteres Devem estar entre aspas (simples ou duplas) Representação: character (len=<tamanho>) :: <lista_de_variáveis> Exemplos: ´bom dia´ “Bomdia” character (len=10) :: nome, sigla CHARACTER

    26. Regras para cadeiras de caracteres longas: A linha a continuar deve terminar com ‘&’, sem comentários A(s) linha(s) de continuação devem iniciar com ‘&’ Exemplo: end = “Rua dos Cachorros, & & N.171 – Volta Grande & & Cidade de Deus” CHARACTER

    27. Variável LOGICAL contém valores lógicos .FALSE. (falso) ou .TRUE. (verdadeiro) Exemplo: logical :: flag E/S FORMATADAS

    28. PROGRAM prog_integer implicit none integer :: A print *,”Digite o valor de A:” read *, A print *, “Valor Digitado:”, A END PROGRAM prog_integer Exemplo de Programa com Integer

    29. PROGRAM prog_real implicit none real:: A print *,”Digite o valor de A:” read *, A print *, “Valor Digitado:”, A END PROGRAM prog_real Exemplo de Programa com Real

    30. PROGRAM prog_complex implicit none complex:: A print *,”Digite o valor de A:” read *, A print *, “Valor Digitado:”, A END PROGRAM prog_complex Exemplo de Programa com Complex

    31. PROGRAM prog_character implicit none Character (len=30):: A print *,”Digite seu nome completo:” read ‘(a)’, A print *, “Nome Digitado:”, A END PROGRAM prog_character Obs.: ‘(a)’ iintstrui a instrução read a aceitar espaços em branco na entrada do texto. Exemplo de Programa com Character

    32. PROGRAM prog_logical implicit none logical:: A = .true. if (a) then print *, “Variável verdadeira” end if END PROGRAM prog_logical Obs.: O deslocamento da linha do print denomina-se “identação”. Não é obrigatório, mas facilita muito o entendimento do fluxo do programa. Exemplo de Programa com Logical

    33. Programa que pede dois números inteiros e mostra no vídeo a soma e o produto entre eles. Programa que pede dois valores reais e calcula e mostra no vídeo a média. Programa que pede dois valores reais e calcula a média ponderada, sendo os pesos de ponderação 1.5 e 3.0, respectivamente. Programa que pede seu nome e mostra-o no vídeo. Programa que pede 2 valores reais e dois inteiros e mostra-os na ordem inversa à sua digitação (o primeiro a ser digitado será o último a ser mostrado). EXERCÍCIOS

    34. Aula 2 Expressões e Operadores Formatação básica de números Estrutura de decisão básica

    35. Forma de executar operações Formadas por operandos e operadores Regras Básicas: Operandos podem ser constantes, variáveis, funções, ou mesmo outra expressão Operador unário ? operador operando Exemplo: -X Operador binário ? operando operador operando Exemplo: X+Y Em geral, operadores conssecutivos devem ser separados por um único operador ? operando operador operando operador operando EXPRESSÕES

    36. Regras Básicas (cont.): Operandos e expressões definidas Ex.: divisão por zero não pode Expressões sem parênteses executam operações de mesma precedência da esquerda para a direita Exceção: o operador ** (potenciação) Para realizar alguma “subexpressão” primeiro, utilizam-se parênteses Exemplo: operando operador (operando operador operando) EXPRESSÕES

    37. Expressões com Integer, Real ou Complex Operadores: EXPRESSÕES NUMÉRICAS

    38. Operadores + e – podem ser usados em operações unárias Exemplo: -velocidade Adição ou subtração não pode seguir imediatamente um outro operador Exemplo: x-y deve ser digitado como x**(-y) Parênteses não indica implicitamente uma multiplicação Exemplos: 5(x+2) está errado 5*(x+2) está correto Exceção à regra de execução da esquerda para a direita: Operador de potenciação **: A**B**C é executada como A**(B**C) O resultado de operações com Inteiros é truncado Atribuição de valor: <nome_variável> = <expressão> EXPRESSÕES NUMÉRICAS

    39. Utilizados na composição de expressões que comparam valores, variáveis ou outras expressões Resultam sempre em um valor lógico (.TRUE. Ou .FALSE.) Utilizados nas estruturas que alteram o fluxo de execução do programa (decisões ou repetições) Exemplos: A < B A+B > I-J CHAR1 == ‘Z’ Obs.: não têm precedência às expressões numéricas OPERADORES RELACIONAIS

    40. OPERADORES RELACIONAIS

    41. Utilizados na composição de expressões lógicas Resultam sempre em um valor lógico (.TRUE. Ou .FALSE.) OPERADORES LÓGICOS

    42. Tabela Verdade da operação lógica .NOT. OPERADORES LÓGICOS

    43. Tabela Verdade da operação lógica .AND. OPERADORES LÓGICOS

    44. Tabela Verdade da operação lógica .OR. OPERADORES LÓGICOS

    45. Tabela Verdade da operação lógica .EQV. OPERADORES LÓGICOS

    46. Tabela Verdade da operação lógica .NEQV. (Operação OU-Exclusivo) OPERADORES LÓGICOS

    47. O único operador intrínseco para caracteres é o de concatenação // Exemplo: ’AB’//’CD’ concatena as strings ‘AB’ e ‘CD’, resultando na string ‘ABCD’ texto1 = “Alô” // “ Mamãe.” texto2 = texto1 // “ Tô aqui” texto3 = texto2 // “ na UFF!” EXPRESSÕES COM CARACTERES

    48. Pode-se referir-se a uma parte de uma string (uma substring), definindo-se as posições inicial e final: <variável>(<inicio>:<final>) Exemplos: texto = “Amanhã vou à praia.” texto(1:6) ? “Amanhã” texto(14:18) ? “praia” EXPRESSÕES COM CARACTERES

    49. Pode-se concatenar com substrings Exemplos: texto = “abcdefg” vogais = texto(1:1)//texto(5:5) cons = texto(2:4)//texto(6:7) Pode-se ainda substituir com substring: texto = “Meu cabelo é jóia!” texto(14:17) = “feio” Comparações entre caracteres: Tabela ASCII EXPRESSÕES COM CARACTERES

    50. Formato geral: IF (<condição>) THEN <bloco_de_instruções_TRUE> ELSE <bloco_de_instruções_FALSE> END IF Aninhamento: pode-se ter Ifs dentro de IFs IF (<condição>) THEN IF (<condição>) THEN <bloco_de_instruções_TRUE> ELSE <bloco_de_instruções_FALSE> END IF <bloco_de_instruções_TRUE> ELSE <bloco_de_instruções_FALSE> END IF ESTRUTURA DE DECISÃO SIMPLES

    51. Especificador FMT na instrução write Exemplo: program meu_programa implicit none real :: x, y print *, "Informe o valor de X e Y:" read *, x,y print *, "Valores digitados:" write (*,FMT='(f5.3,3x,f6.3)') x,y end program meu_programa FORMATAÇÃO SIMPLES

    52. 1) Programa que pede dois valores reais A e B, e indica qual é o maior. 2) Programa que pede 3 valores inteiros A, B e C, e informa qual é o menor. 3) Programa que pede uma string e informa se ela inicia com uma vogal. 4) Programa que pede um valor inteiro e informa se ele é par ou impar. 5) Programa que pede duas strings e mostra a concatenação das mesmas. EXERCÍCIOS

    53. Aula 3

    54. “O computador só faz o que a gente manda...” Devemos ter o controle da execução do programa Estrutura de comandos básica: sequência CONTROLE DE FLUXO

    55. A “inteligência” do computador está na sua habilidade em “tomar decisões” Estrutura que altera o fluxo de execução de um programa: Estrutura de Decisão CONTROLE DE FLUXO

    56. A “inteligência” do computador está na sua habilidade em “tomar decisões” Estrutura que altera o fluxo de execução de um programa: Estrutura de Decisão CONTROLE DE FLUXO

    57. Estrutura de Decisão de vários níveis: CONTROLE DE FLUXO

    58. CONTROLE DE FLUXO

    59. Estrutura para repetição de comandos: Estrutura DO CONTROLE DE FLUXO

    60. Estrutura DO: CONTROLE DE FLUXO

    61. Estrutura DO: <valor_inicial>, <valor_final> e <expressão_atualização> podem ser variáveis ou expressões numéricas CONTROLE DE FLUXO

    62. Estrutura DO: se <expressão_atualização> não é especificada, a variável de controle do loop é incrementada (somada de 1) CONTROLE DE FLUXO

    63. Estrutura DO: DO ilimitado: quando não é especificada nenhuma informação no início da estrutura CONTROLE DE FLUXO

    64. Estrutura DO: DO ilimitado: quando não é especificada nenhuma informação no início da estrutura Comando EXIT: transfere o controle do programa para a próxima instrução depois do final da estrutura DO onde ela está CONTROLE DE FLUXO

    65. Estrutura DO: DO ilimitado: quando não é especificada nenhuma informação no início da estrutura Comando CYCLE: transfere o controle do programa para o final da estrutura DO onde ela está, indo para uma nova iteração se for o caso CONTROLE DE FLUXO

    66. CONTROLE DE FLUXO

    67. Programa que pede três números inteiros e informa se o primeiro está entre os dois últimos. Programa que pede as duas notas de prova e informa se o aluno passou direto, baseado no cálculo da média das provas, que deve ser maior ou igual a 6.0. Um comerciante quer vender um produto com 45% de lucro se o valor de compra for menor que R$20,00. Caso contrário, o lucro será de 30%. Faça um programa que peça o valor do produto e informe o valor de venda. Programa que mostra todos os números inteiros de 1 a 100. Programa que mostra todos os números inteiros ímpares de 100 a 1. Programa que mostra todos os números múltiplos de 5 entre 1 e 500. Programa que mostra todos os números de 1 a 50 e a soma deles. EXERCÍCIOS

    68. Aula 4

    69. Procedimentos frequentemente utilizados em programas Desenvolvidos e “embutidos” no compilador Não é necessário codificar as funções, basta chamá-las Podem ser usadas em expressões Retornam valores que serão utilizados na expressão onde está contida Formato: Funções Intrínsecas

    70. Exemplos: Funções Intrínsecas

    71. Exemplos: Funções Intrínsecas

    72. Exemplos: Funções Intrínsecas

    73. Algumas Funções Intrínsecas

    74. EXERCÍCIOS Programa que pede um número inteiro e informa se ele é múltiplo de 3. Programa que pede um número inteiro e mostra todos os seus divisores. Programa que pede um número inteiro e informa se ele é primo. (Obs.: Número primo só é divisível por 1 e por ele mesmo.) Programa que mostra a lista dos primeiros 20 números primos. Entrar com a idade de várias pessoas e informar quantas tem menos de 21 anos e quantas tem mais de 50 anos. A digitação termina quando for digitada a idade 0 (zero). Chico tem 1.50m e cresce 2cm por ano. Juca tem 1.10m e cresce 3cm por ano. Construir um programa que calcule e mostre quantos anos serão necessários para que Juca seja maior que Chico.

    75. Aula 5

    76. EXERCÍCIOS Você quer calcular quanto terá em uma aplicação. Faça um programa que peça o valor a aplicar, a taxa média de rendimento mensal e quantos anos quer deixar rendendo, e informa o valor a resgatar no final do período. Pode-se calcular a raiz quadrada de um número subtraindo-se os números ímpares consecutivos a partir de 1 até que o resultado seja menor ou igual a 0 (zero). A quantidade de subtrações é a raiz quadrada do número. 16 – 1 = 15 – 3 = 12 – 5 = 7 – 7 = 0 A raiz de 16 é 4. Faça um programa que pede um valor inteiro maior que 0 e calcula a sua raiz quadrada conforme acima. 3) Programa que pede um ano e informa se ele é bisexto (ano bisexto é divisível por 4, não é por 100 mas é por 400). 4) Programa que pede uma data e informa quantos dias você viveu até ela (lembre-se dos anos bisextos...).

    77. Aula 6

    78. EXERCÍCIOS Dois veículos estão em rodovias perpendiculares, em direção ao seu cruzamento. O veículo A está a 48km do cruzamento e anda a uma velocidade de 20m/s. O veículo B está a 60km do cruzamento e anda uma velocidade de 25m/s. Faça um programa que analise iterativamente o problema e informe se os dois veículos se colidirão ao passar pelo cruzamento. Um casal com filhos quer passar as férias em um hotel na praia. Ligaram para o hotel e lhes informaram que a diária por pessoa (adulto) era de R$230,00 e que crianças até 10 anos pagam 50% da diária. Faça um programa que peça quantos filhos com 10 anos ou mais mais e com menos de 10 anos o casal tem, o valor disponível para gastar e informe quantos dias a família poderá passar neste hotel. Faça um programa que pede vários nomes de pessoa e informa quantas têm nome com a letra ‘A’ como terceira letra. O programa deve terminar a entrada de dados quando o usuário entrar um ponto (‘.’) como nome.

    79. Aula 7

    80. EXERCÍCIOS Uma técnica simples de verificar se uma pessoa está no peso ideal é medir a sua altura e o seu peso. A pessoa estará com o peso ideal aproximado se ele (o peso) for igual aos centésimos de sua altura. Faça um programa que pede o peso e a altura de uma pessoa e informa se ela está no peso ideal. Em um campeonato de pescaria o vencedor é aquele que conseguir o maior peso médio entre os peixes que ele pescar em uma hora. Faça um programa que peça o peso dos peixes e informe no final da entrada de dados o peso médio dos peixes pescados. Obs.: A entrada de dados se encerra quando for digitado o valor 0 (zero) para o peso. Faça um programa que peça duas palavras e informe se a primeira contém a segunda. Por exemplo: a palavra “onomatopéia” contém a palavra “mato”.

    81. EXERCÍCIOS Você prometeu ao seu irmão caçula que iria dar os centavos do troco de todas as compras que você fizesse nesta semana. Faça um programa que peça o valor do troco de suas compras e informe quanto o seu irão faturou. OBS.: A entrada de dados se encerra com a entrada do valor 0 (zero) para o troco. Você quer saber qual a área média dos cômodos de uma residência. Faça um programa que pede a quantidade de cômodos e a área de cada um, e informe qual a área média dos cômodos. Faça um programa que peça uma palavra e informe se ela é um palíndromo. (Palíndromo é o texto que é escrito da mesma forma de trás pra frente. Exemplo: “arara”.

    82. EXERCÍCIOS Um professor aplica três provas e dá notas com centésimos. Para ajudar, ele computa a média final somando a parte inteira das 3 notas e mais o dobro dos centésimos de cada nota. Faça um programa que implemente este tipo de cálculo da média. Você vai à pizzaria com a família e quer saber quantas pizzas tamanho Grande (6 fatias) precisará pedir. Faça um programa que peça o número de fatias que cada um irá comer e informe o número de pizzas a pedir. Obs.: Como podem aparecer agregados (p.ex. o namorado da irmã), a digitação só termina com a entrada de 0 (zero) pedaços. O casal está prestes a ganhar o primeiro filho e ainda não escolheu o nome do bebê. Faça um programa que pede 3 nomes e gera o nome do bebê extraindo as duas primeiras letras de cada nome digitado.

    83. Aula 8

    84. Estrutura de decisão “multivalorada” A <expressão> é comparada com múltiplos valores O <bloco_de_instruções> associado ao <valor> igual à <expressão> será executado Formato geral: SELECT CASE (<expressão>) CASE (<valor_1> <bloco_instr_1> CASE (<valor_2> <bloco_instr_2> ... CASE (<valor_n>) <bloco_instr_n> CASE DEFAULT <bloco_instr_default> END SELECT Estrutura CASE

    85. <expressão> pode ser integer, logical ou character <valor> pode conter faixas e listas de valores Exemplos: case (1:5) case (3, 5, 8, 23:41, 67, 95) Exemplo: Estrutura CASE

    86. Exemplo: Estrutura CASE

    87. Exercício: Faça um programa que peça o salário e informe o Imposto de Renda a descontar, conforme a tabela abaixo. Utilizar a estrutura SELECT CASE mas, lembre-se: ela não aceita valores reais como <expressão> a ser comparada. Estrutura CASE

    88. conjunto retangular de elementos, todos do mesmo tipo o conjunto é referenciado por um único nome, acrescido de índices numéricos, para identificar univocamente cada elemento da matriz MATRIZES

    89. Forma geral reduzida de declaração de uma matriz: onde: <tipo> define o tipo de valor a ser armazenado por cada elemento da matriz <lista_de_extensões> define quantas dimensões terá a matriz, e a quantidade de elementos de cada uma <lista_de_nomes> indica o nome da(s) matriz(es) MATRIZES

    90. Obs.:: A declaração pode definir os índices inicial e final da matriz O índice final é obrigatório, e o índice inicial é opcional (sendo igual a 1, se não especificado) real, dimension(-4:7) :: rval integer, dimension(6:15) :: imat1, imat2 MATRIZES

    91. MATRIZES

    92. MATRIZES

    93. MATRIZES

    94. MATRIZES

    95. MATRIZES

    96. Aula 9

    97. MATRIZES

    98. MATRIZES

    99. MATRIZES

    100. MATRIZES

    101. MATRIZES

    102. SUB-PROGRAMAS

    103. SUB-PROGRAMAS

    104. FUNÇÕES INTERNAS

    105. FUNÇÕES INTERNAS

    106. FUNÇÕES INTERNAS

    107. Aula 10

    108. FUNÇÕES INTERNAS

    109. FUNÇÕES INTERNAS

    110. FUNÇÕES INTERNAS

    111. Aula 11

    112. ACESSO A ARQUIVO

    113. ACESSO A ARQUIVO

    114. ACESSO A ARQUIVO

    115. ACESSO A ARQUIVO

    116. ACESSO A ARQUIVO

    117. ACESSO A ARQUIVO

    118. ACESSO A ARQUIVO

    119. ACESSO A ARQUIVO

More Related