1.18k likes | 1.94k Views
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. Programação de computadoresFORTRAN 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