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
Télécharger la présentation

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. Programao de computadores FORTRAN Prof. Gustavo Lus Furtado Vicente

    2. Aula 1

    3. Origem do FORTRAN Criao dos computadores programveis Necessidade dos cientistas Precisavam do computador No entendiam nada de computador Programao em cdigos binrios Criao das linguagens Assembly Convertidas pelos Assemblers

    4. Origem do FORTRAN Criao das linguagens de alto-nvel 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 mximo 72 caracteres Colunas 1 a 5: LABEL Coluna 6: continuao de linha Colunas 7 a 72: instrues da linguagem

    7. FORMATO Espaos em branco ignorados: A=0 e A = 0 so a mesma coisa Mais de uma instruo por linha, separadas por ponto-e-vrgula: A = 0; B = 0; C = 0 interpretado como trs comandos

    8. Caracter & (ampersand) usado como marca de continuao de linha: X = (-Y + RAIZ)/(2.0*A) e X = & (-Y + RAIZ) & /(2.0*A) so a mesma coisa FORMATO

    9. Caracter ! (ponto de exclamao) usado como marca de comentrio de linha: X = Y/A B ! Soluo da equao FORMATO

    10. Forma mais simples de um programa FORTRAN: PROGRAM <nome_do_programa> <declarao_de_variveis> <comandos_executveis> END PROGRAM <nome_do_programa> FORMATO

    11. Programa Al Mame PROGRAM primeiro implicit none print *,Al mame END PROGRAM primeiro Primeiro Programa

    12. Primeiro Programa

    13. Primeiro Programa

    14. Primeiro Programa

    15. Primeiro Programa

    16. Nomes em FORTRAN Para nomear variveis, mdulos, programas, etc Caracteres vlidos: Letras (a - z ; A - Z) Nmeros (0 9) Caracter underscore _ Primeiro caracter do nome deve ser uma letra No existem diferenas entre letras minsculas e letras maisculas

    17. Nomes em FORTRAN Exemplos vlidos: A A_coisa X1 Tempo_de_voo Velocidade VAR1 VAR2 Exemplos NO vlidos 1 A coisa #SINAL

    18. E/S padro em FORTRAN Entrada padro: TECLADO Comando simples de entrada de dados: read *, <lista_de_variveis> onde <lista_de_variveis> contm as variveis que recebero os valores digitador o usurio dever digitar os valores separando-os por vrgula Exemplo: read *, a, b

    19. E/S padro em FORTRAN Sada padro: VDEO Comando simples de sada de dados: print *, <mensagem>, <lista_de_variveis> Exemplo: print *, Mdia 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 intrnsecos (bsicos) em FORTRAN: Numricos INTEGER REAL COMPLEX No-numricos CHARACTER LOGICAL Declarao simples de variveis <tipo> :: <lista_de_variveis> TIPOS DE VARIVEIS

    22. Varivel INTEGER contm valores inteiros No podem receber valores com ponto decimal Podemos inicializar uma varivel na declarao Exemplos: integer :: a, b, c integer :: x, y=35 INTEGER

    23. Varivel REAL contm valores fracionados Partes de um valor REAL parte inteira (com ou sem sinal) ponto decimal parte fracionria 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. Varivel COMPLEX contm valores complexos Z = X + Yi , onde i a raiz de -1 Partes de um valor COMPLEX parte REAL Parte IMAGINRIA Representao: (<parte real>, <parte imaginria>) Exemplos: (1.2, 4) (-1.5, 2e-6) complex :: a, b=(-4e12,5e-3) COMPLEX

    25. Varivel CHARACTER contm caracteres Devem estar entre aspas (simples ou duplas) Representao: character (len=<tamanho>) :: <lista_de_variveis> 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 comentrios A(s) linha(s) de continuao devem iniciar com & Exemplo: end = Rua dos Cachorros, & & N.171 Volta Grande & & Cidade de Deus CHARACTER

    27. Varivel LOGICAL contm valores lgicos .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 instruo read a aceitar espaos em branco na entrada do texto. Exemplo de Programa com Character

    32. PROGRAM prog_logical implicit none logical:: A = .true. if (a) then print *, Varivel verdadeira end if END PROGRAM prog_logical Obs.: O deslocamento da linha do print denomina-se identao. No obrigatrio, mas facilita muito o entendimento do fluxo do programa. Exemplo de Programa com Logical

    33. Programa que pede dois nmeros inteiros e mostra no vdeo a soma e o produto entre eles. Programa que pede dois valores reais e calcula e mostra no vdeo a mdia. Programa que pede dois valores reais e calcula a mdia ponderada, sendo os pesos de ponderao 1.5 e 3.0, respectivamente. Programa que pede seu nome e mostra-o no vdeo. Programa que pede 2 valores reais e dois inteiros e mostra-os na ordem inversa sua digitao (o primeiro a ser digitado ser o ltimo a ser mostrado). EXERCCIOS

    34. Aula 2 Expresses e Operadores Formatao bsica de nmeros Estrutura de deciso bsica

    35. Forma de executar operaes Formadas por operandos e operadores Regras Bsicas: Operandos podem ser constantes, variveis, funes, ou mesmo outra expresso Operador unrio ? operador operando Exemplo: -X Operador binrio ? operando operador operando Exemplo: X+Y Em geral, operadores conssecutivos devem ser separados por um nico operador ? operando operador operando operador operando EXPRESSES

    36. Regras Bsicas (cont.): Operandos e expresses definidas Ex.: diviso por zero no pode Expresses sem parnteses executam operaes de mesma precedncia da esquerda para a direita Exceo: o operador ** (potenciao) Para realizar alguma subexpresso primeiro, utilizam-se parnteses Exemplo: operando operador (operando operador operando) EXPRESSES

    37. Expresses com Integer, Real ou Complex Operadores: EXPRESSES NUMRICAS

    38. Operadores + e podem ser usados em operaes unrias Exemplo: -velocidade Adio ou subtrao no pode seguir imediatamente um outro operador Exemplo: x-y deve ser digitado como x**(-y) Parnteses no indica implicitamente uma multiplicao Exemplos: 5(x+2) est errado 5*(x+2) est correto Exceo regra de execuo da esquerda para a direita: Operador de potenciao **: A**B**C executada como A**(B**C) O resultado de operaes com Inteiros truncado Atribuio de valor: <nome_varivel> = <expresso> EXPRESSES NUMRICAS

    39. Utilizados na composio de expresses que comparam valores, variveis ou outras expresses Resultam sempre em um valor lgico (.TRUE. Ou .FALSE.) Utilizados nas estruturas que alteram o fluxo de execuo do programa (decises ou repeties) Exemplos: A < B A+B > I-J CHAR1 == Z Obs.: no tm precedncia s expresses numricas OPERADORES RELACIONAIS

    40. OPERADORES RELACIONAIS

    41. Utilizados na composio de expresses lgicas Resultam sempre em um valor lgico (.TRUE. Ou .FALSE.) OPERADORES LGICOS

    42. Tabela Verdade da operao lgica .NOT. OPERADORES LGICOS

    43. Tabela Verdade da operao lgica .AND. OPERADORES LGICOS

    44. Tabela Verdade da operao lgica .OR. OPERADORES LGICOS

    45. Tabela Verdade da operao lgica .EQV. OPERADORES LGICOS

    46. Tabela Verdade da operao lgica .NEQV. (Operao OU-Exclusivo) OPERADORES LGICOS

    47. O nico operador intrnseco para caracteres o de concatenao // Exemplo: AB//CD concatena as strings AB e CD, resultando na string ABCD texto1 = Al // Mame. texto2 = texto1 // T aqui texto3 = texto2 // na UFF! EXPRESSES COM CARACTERES

    48. Pode-se referir-se a uma parte de uma string (uma substring), definindo-se as posies inicial e final: <varivel>(<inicio>:<final>) Exemplos: texto = Amanh vou praia. texto(1:6) ? Amanh texto(14:18) ? praia EXPRESSES 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 jia! texto(14:17) = feio Comparaes entre caracteres: Tabela ASCII EXPRESSES COM CARACTERES

    50. Formato geral: IF (<condio>) THEN <bloco_de_instrues_TRUE> ELSE <bloco_de_instrues_FALSE> END IF Aninhamento: pode-se ter Ifs dentro de IFs IF (<condio>) THEN IF (<condio>) THEN <bloco_de_instrues_TRUE> ELSE <bloco_de_instrues_FALSE> END IF <bloco_de_instrues_TRUE> ELSE <bloco_de_instrues_FALSE> END IF ESTRUTURA DE DECISO SIMPLES

    51. Especificador FMT na instruo 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 FORMATAO 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 concatenao das mesmas. EXERCCIOS

    53. Aula 3

    54. O computador s faz o que a gente manda... Devemos ter o controle da execuo do programa Estrutura de comandos bsica: sequncia CONTROLE DE FLUXO

    55. A inteligncia do computador est na sua habilidade em tomar decises Estrutura que altera o fluxo de execuo de um programa: Estrutura de Deciso CONTROLE DE FLUXO

    56. A inteligncia do computador est na sua habilidade em tomar decises Estrutura que altera o fluxo de execuo de um programa: Estrutura de Deciso CONTROLE DE FLUXO

    57. Estrutura de Deciso de vrios nveis: CONTROLE DE FLUXO

    58. CONTROLE DE FLUXO

    59. Estrutura para repetio de comandos: Estrutura DO CONTROLE DE FLUXO

    60. Estrutura DO: CONTROLE DE FLUXO

    61. Estrutura DO: <valor_inicial>, <valor_final> e <expresso_atualizao> podem ser variveis ou expresses numricas CONTROLE DE FLUXO

    62. Estrutura DO: se <expresso_atualizao> no especificada, a varivel de controle do loop incrementada (somada de 1) CONTROLE DE FLUXO

    63. Estrutura DO: DO ilimitado: quando no especificada nenhuma informao no incio da estrutura CONTROLE DE FLUXO

    64. Estrutura DO: DO ilimitado: quando no especificada nenhuma informao no incio da estrutura Comando EXIT: transfere o controle do programa para a prxima instruo depois do final da estrutura DO onde ela est CONTROLE DE FLUXO

    65. Estrutura DO: DO ilimitado: quando no especificada nenhuma informao no incio da estrutura Comando CYCLE: transfere o controle do programa para o final da estrutura DO onde ela est, indo para uma nova iterao se for o caso CONTROLE DE FLUXO

    66. CONTROLE DE FLUXO

    67. Programa que pede trs nmeros 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 clculo da mdia 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 contrrio, o lucro ser de 30%. Faa um programa que pea o valor do produto e informe o valor de venda. Programa que mostra todos os nmeros inteiros de 1 a 100. Programa que mostra todos os nmeros inteiros mpares de 100 a 1. Programa que mostra todos os nmeros mltiplos de 5 entre 1 e 500. Programa que mostra todos os nmeros de 1 a 50 e a soma deles. EXERCCIOS

    68. Aula 4

    69. Procedimentos frequentemente utilizados em programas Desenvolvidos e embutidos no compilador No necessrio codificar as funes, basta cham-las Podem ser usadas em expresses Retornam valores que sero utilizados na expresso onde est contida Formato: Funes Intrnsecas

    70. Exemplos: Funes Intrnsecas

    71. Exemplos: Funes Intrnsecas

    72. Exemplos: Funes Intrnsecas

    73. Algumas Funes Intrnsecas

    74. EXERCCIOS Programa que pede um nmero inteiro e informa se ele mltiplo de 3. Programa que pede um nmero inteiro e mostra todos os seus divisores. Programa que pede um nmero inteiro e informa se ele primo. (Obs.: Nmero primo s divisvel por 1 e por ele mesmo.) Programa que mostra a lista dos primeiros 20 nmeros primos. Entrar com a idade de vrias pessoas e informar quantas tem menos de 21 anos e quantas tem mais de 50 anos. A digitao 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 sero necessrios para que Juca seja maior que Chico.

    75. Aula 5

    76. EXERCCIOS Voc quer calcular quanto ter em uma aplicao. Faa um programa que pea o valor a aplicar, a taxa mdia de rendimento mensal e quantos anos quer deixar rendendo, e informa o valor a resgatar no final do perodo. Pode-se calcular a raiz quadrada de um nmero subtraindo-se os nmeros mpares consecutivos a partir de 1 at que o resultado seja menor ou igual a 0 (zero). A quantidade de subtraes a raiz quadrada do nmero. 16 1 = 15 3 = 12 5 = 7 7 = 0 A raiz de 16 4. Faa 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 divisvel por 4, no 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. EXERCCIOS Dois veculos esto em rodovias perpendiculares, em direo ao seu cruzamento. O veculo A est a 48km do cruzamento e anda a uma velocidade de 20m/s. O veculo B est a 60km do cruzamento e anda uma velocidade de 25m/s. Faa um programa que analise iterativamente o problema e informe se os dois veculos se colidiro ao passar pelo cruzamento. Um casal com filhos quer passar as frias em um hotel na praia. Ligaram para o hotel e lhes informaram que a diria por pessoa (adulto) era de R$230,00 e que crianas at 10 anos pagam 50% da diria. Faa um programa que pea quantos filhos com 10 anos ou mais mais e com menos de 10 anos o casal tem, o valor disponvel para gastar e informe quantos dias a famlia poder passar neste hotel. Faa um programa que pede vrios nomes de pessoa e informa quantas tm nome com a letra A como terceira letra. O programa deve terminar a entrada de dados quando o usurio entrar um ponto (.) como nome.

    79. Aula 7

    80. EXERCCIOS Uma tcnica 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 centsimos de sua altura. Faa 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 mdio entre os peixes que ele pescar em uma hora. Faa um programa que pea o peso dos peixes e informe no final da entrada de dados o peso mdio dos peixes pescados. Obs.: A entrada de dados se encerra quando for digitado o valor 0 (zero) para o peso. Faa um programa que pea duas palavras e informe se a primeira contm a segunda. Por exemplo: a palavra onomatopia contm a palavra mato.

    81. EXERCCIOS Voc prometeu ao seu irmo caula que iria dar os centavos do troco de todas as compras que voc fizesse nesta semana. Faa um programa que pea o valor do troco de suas compras e informe quanto o seu iro faturou. OBS.: A entrada de dados se encerra com a entrada do valor 0 (zero) para o troco. Voc quer saber qual a rea mdia dos cmodos de uma residncia. Faa um programa que pede a quantidade de cmodos e a rea de cada um, e informe qual a rea mdia dos cmodos. Faa um programa que pea uma palavra e informe se ela um palndromo. (Palndromo o texto que escrito da mesma forma de trs pra frente. Exemplo: arara.

    82. EXERCCIOS Um professor aplica trs provas e d notas com centsimos. Para ajudar, ele computa a mdia final somando a parte inteira das 3 notas e mais o dobro dos centsimos de cada nota. Faa um programa que implemente este tipo de clculo da mdia. Voc vai pizzaria com a famlia e quer saber quantas pizzas tamanho Grande (6 fatias) precisar pedir. Faa um programa que pea o nmero de fatias que cada um ir comer e informe o nmero de pizzas a pedir. Obs.: Como podem aparecer agregados (p.ex. o namorado da irm), a digitao s termina com a entrada de 0 (zero) pedaos. O casal est prestes a ganhar o primeiro filho e ainda no escolheu o nome do beb. Faa 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 deciso multivalorada A <expresso> comparada com mltiplos valores O <bloco_de_instrues> associado ao <valor> igual <expresso> ser executado Formato geral: SELECT CASE (<expresso>) 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. <expresso> 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. Exerccio: Faa um programa que pea o salrio e informe o Imposto de Renda a descontar, conforme a tabela abaixo. Utilizar a estrutura SELECT CASE mas, lembre-se: ela no aceita valores reais como <expresso> a ser comparada. Estrutura CASE

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

    89. Forma geral reduzida de declarao de uma matriz: onde: <tipo> define o tipo de valor a ser armazenado por cada elemento da matriz <lista_de_extenses> define quantas dimenses 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 declarao pode definir os ndices inicial e final da matriz O ndice final obrigatrio, e o ndice inicial opcional (sendo igual a 1, se no 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. FUNES INTERNAS

    105. FUNES INTERNAS

    106. FUNES INTERNAS

    107. Aula 10

    108. FUNES INTERNAS

    109. FUNES INTERNAS

    110. FUNES 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