1.18k likes | 1.94k Vues
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
E N D
1. Programao de computadoresFORTRAN 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