Programao de Computadores Viviane Torres da Silva viviane
- Slides: 34
Programação de Computadores Viviane Torres da Silva viviane. silva@ic. uff. br http: //www. ic. uff. br/~viviane. silva/prog. III
Variáveis Compostas Ø Exemplo motivacional: Ler as notas de 3 alunos. Calcular a média da turma. Informar quantos alunos tiveram nota acima da média.
program notas implicit none real nota 1, nota 2, nota 3, media integer maior read *, nota 1, nota 2, nota 3 maior = 0 media = (nota 1 + nota 2 + nota 3)/3 if (nota 1. GT. media) then maior = maior + 1 end if (nota 2. GT. media) then maior = maior + 1 end if (nota 3. GT. media) then maior = maior + 1 end if print *, ‘Média: ’, media print *, ‘Maiores: ’, maior end E se fossem 40 alunos?
Variáveis Compostas Ø É possível definir variáveis que guardam mais de um valor de um mesmo tipo. Essas variáveis são conhecidas como variáveis compostas, variáveis subscritas ou arranjos (array). Ø Existem dois tipos principais de variáveis compostas: – Vetores – Matrizes
Vetores Ø Um vetor é uma variável composta unidimensional. Ela contém espaço para armazenar diversos valores, e é acessada via um índice. Ø A idéia de vetor é comum na matemática, com o nome de variável subscrita: x 1, x 2, . . . , xn Ø O que vimos até agora são variáveis com somente um valor: x = 7. No caso de vetores, uma mesma variável guarda ao mesmo tempo múltiplos valores: x 1 = 7, x 2 = 10, x 3= 5 X= 1 2 3 4 7 10 5 … 5 6 7 posição valor
Declaração de Vetor Ø Feita junto com as demais declarações de variáveis, no início do programa. Ø Forma geral: <tipo> <nome>(< início>: <fim>) Ø Caso o início do vetor seja omitido, o Fortran assume início igual a 1. Ø Ex: Real x (5) – Vetor de 5 posições onde os valores são do tipo Real 1 X= 2 3 4 5
Ø Exemplos: Ø Integer a(10) 1 2 3 4 5 6 7 8 9 a= Ø Integer b(3: 8) 3 4 5 6 7 8 b= Ø Integer c 1 c= Ø Character*20 nome(-2: 2) – (em cada posição do vetor ficará um string de 20 caracteres) -2 nome = -1 0 1 2 10
Utilização Ø Uma posição do arranjo é acessada pelo seu índice, seja para atribuir ou recuperar o valor. Ø Exemplo: Ø Ø Ø Integer nota(5) nota(1) = 1 nota(3) = 8 nota(2) = nota(1) + nota(3) print *, nota(2) nota = 1 2 3 1 ? 8 4 5
Utilização Ø Exemplo: Ø Ø Ø Character*3 texto(5) texto (1) = ‘abc’ texto (2) = ‘def’ texto (3) = ‘ghi’ texto (4) = ‘jkl’ texto (5) = ‘mno’ texto = 1 2 3 4 5 abc def ghi jkl mno
Retornando ao exemplo dos 40 alunos… Ø Faça um programa que lê a nota de 40 alunos, calcula a média e calcula quantas notas estão acima da média. No final o programa informa estes dois valores. program notas 2 implicit none real nota(40), soma, media integer maior, i soma = 0 do i = 1, 40 read *, nota(i) soma = soma + nota(i) end do. . 1 nota = 2 3 4 5 …. 37 38 39 40
Retornando ao exemplo dos 40 alunos… program notas 2 implicit none Ø Faça um programa que lê a nota de 40 alunos, calcula a real nota(40), soma, media média e calcula quantas notas estão acima da média. integer maior, i soma = 0 No final o programa informa estes dois valores. do i = 1, 40 read *, nota(i) soma = soma + nota(i) end do 1 2 3 4 5 …. 37 nota = media = soma/40 maior = 0 do i = 1, 40 if (nota(i) > media) then maior = maior + 1 end if end do print *, ‘Média: ’, media print *, ‘Maiores: ’, maior end 38 39 40
Exercício 1 Ø Faça um programa em Fortran que lê dois vetores inteiros de tamanho 3 e soma cada posição uma armazenando os resultados em outro vetor. program soma vetores implicit none integer vetor. A(3), vetor. B(3), i, vetor. C(3) do i=1, 3 print *, 'digite o vetor. A(', i, ') e o vetor. B(', i, ')' read *, vetor. A(i), vetor. B(i) vetor. C (i) = vetor. A (i) + vetor. B (i) print *, 'vetor. C(', i, '): ', vetor. C(i) end do end
Exercício 2 Ø Faça um programa em Fortran que lê dez números inteiros e listar esses números em ordem crescente. program ordenacao implicit none integer numero(10), aux, i, j do i=1, 10 read *, numero(i) end do j=1, 10 do i=1, 10 if (numero(i). GT. numero (j)) then aux = numero (j) numero(j) = numero(i) numero(i) = aux end if end do do i=1, 10 print *, numero(i) end do end
Exercício 3 Ø Faça um programa em Fortran que lê=eia dois vetores inteiros v 1 e v 2 de 10 posições. Um terceiro vetor é calculado da seguinte maneira: Ø Para cada posição i de s, o usuário deve informar um valor n. Peque o valor M armazenado na posição v 2(n) e some as M primeiras posições de v 1 e armazene este valor em s(i).
Parte II
Melhorando o programa Ø O Fortran fornece alguns comandos que podem ajudar na manipulação de variáveis compostas: – Parameter – DO implícito Ø Parameter permite criar constantes que podem ser utilizadas para definir o tamanho de variáveis compostas. Desta forma, a alteração do tamanho consiste em alterar em somente um Depois lugar. Antes real nota(40) do i = 1, 40 read *, nota(i) end do. . . integer tnota parameter (tnota=40) real nota(tnota) do i = 1, tnota read *, nota(i) end do. . .
DO implícito Ø Permite combinar de forma resumida o comando “do” com os comandos “print” ou “read”. Antes Depois integer tnota parameter (tnota=40) real *, nota(tnota) do i = 1, tnota read *, nota(i) end do. . . integer tnota parameter (tnota=40) real *, nota(tnota) read *, (nota(i), i = 1, tnota). . . do i = 1, tnota print *, nota(i) end do. . . print *, (nota(i), i = 1, tnota). . .
Exercício 1 Ø Faça um programa em Fortran usando “parameter” e “do implícito” que lê o nome e a nota de dez alunos e informe: Ø Ø O nome do aluno que obteve menor nota e a sua nota O nome do aluno que obteve maior nota e a sua nota A média da turma Nome de alunos com nota acima de 9, 0
program ordenacao idade implicit none integer n. Pessoas, j, i parameter (n. Pessoas=10) real nota(n. Pessoas), aux character*20 nome(n. Pessoas), aluno read *, (nome(i), i = 1, n. Pessoas) read *, (nota(i), i = 1, n. Pessoas) aux = 10 do j=1, n. Pessoas if (nota(j). LT. aux) then aux = nota(j) aluno = nome(j) end if end do print *, aluno, 'foi quem obteve a menor nota: ', aux = 0 do j=1, n. Pessoas if (nota(j). GT. aux) then aux = nota(j) aluno = nome(j) end if end do print *, aluno, 'foi quem obteve a maior nota: ', aux = 0 do j=1, n. Pessoas aux = aux + nota(j) end do aux = aux / n. Pessoas print *, 'a m‚dia ‚: ', aux . . . aux = 0 do j=1, n. Pessoas if (nota(j). GT. 9) then print *, nome(j) , 'obteve nota acima de 9. 0' end if end do end
Exercício 2 Ø Faça um programa em Fortran usando “parameter” e “do implícito” que lê o nome e a idade de dez pessoas e lista as pessoas em ordem decrescente de idade.
program ordenacao idade implicit none integer n. Pessoas, j, i, aux parameter (n. Pessoas=10) integer idade(n. Pessoas) character*20 nome(n. Pessoas), aux 2 read *, (nome(i), i = 1, n. Pessoas) read *, (idade(i), i = 1, n. Pessoas) do j=1, n. Pessoas do i=1, n. Pessoas if (idade(i). GT. idade (j)) then aux = idade(j) idade(j) = idade(i) idade(i) = aux aux 2 = nome(j) nome(j) = nome(i) nome(i) = aux 2 end if end do print *, (nome(i), idade(i), '; ', i = 1, n. Pessoas) end
Exercício 3 Ø Faça um programa em Fortran usando “parameter” e “do implícito” que lê duas listas de nomes de tamanho 10 e informe quais nomes ocorrem nas duas listas. Ø OBS. Não permita que o programa repita a mesma informação
program ordenacao idade implicit none integer n. Pessoas, j, i, k, l, aux parameter (n. Pessoas=3) character*20 lista 1(n. Pessoas), lista 2(n. Pessoas), lista 3(n. Pessoas) print*, 'entre com os nomes da lista 1' read *, (lista 1(i), i = 1, n. Pessoas) print*, 'entre com os nomes da lista 2' read *, (lista 2(i), i = 1, n. Pessoas) l=1 aux=0 do j=1, n. Pessoas do i=1, n. Pessoas if (lista 1(i). EQ. lista 2(j)) then do k=1, n. Pessoas if (lista 1(i). EQ. lista 3(k)) then aux=1 end if end do if (aux. EQ. 0) then lista 3(l) = lista 1(i) l=l+1 print*, 'este nome aparece nas duas listas: ', lista 1(i) end if aux=0 end if end do read* end
Parte III
Matrizes Ø Uma matriz é uma variável composta multidimensional. Ø Ela é equivalente a um vetor, contudo permite a utilização de diversas dimensões acessadas via diferentes índices. Ø Em diversas situações matrizes são necessárias para correlacionar informações. Ø Matrizes podem ser vistas como tabelas Matriz 3 x 4
Exemplo Ø Assumindo que um aluno é avaliado com 3 notas, seria necessário um vetor de três posições para guardar as notas de cada aluno. . . Nota 1 Nota 2 Nota 3 Ø Contudo, assumindo que uma turma tem 5 alunos, seria necessária uma matriz bidimensional para guardar as notas de todos os alunos de uma turma. . . – Nota(2, 3) = 7. 5 (terceira nota do segundo aluno foi 7, 5) Nota 1 Nota 2 Nota 3 Aluno 1 Aluno 2 Aluno 3 Aluno 4 Aluno 5 7, 5
Exemplo Ø Ainda, assumindo que um curso tem duas turmas, seria necessária uma matriz tridimensional para guardar as notas de todos os alunos de todas as turmas do curso. . . – Nota(2, 3, 1) (2 a linha, 3 a coluna, 1 a profundidade) – Nota do aluno 2 na prova 3 da turma A foi 7. 5 Turma B Turma A Aluno 1 7. 5 Aluno 2 Aluno 3 Aluno 4 Aluno 5 N 1 N 2 N 3
Declaração x y z Ø Real nota(5, 3, 2) x: linha, y: coluna e z: profundidade – Matriz tridimensional Ø Integer matriz(10: 15, 1: 3) – Matriz bidimensional – posições de 10 a 15 , de 1 a 3 Ø Exemplo: Integer nota(2, 2) Nota(1, 1) = 5 Nota(2, 2) = 3 Nota(2, 1) = nota(1, 1) + nota(2, 2) Nota(1, 2) = nota(1, 1) * nota(2, 2) Print *, nota(1, 2) – nota(2, 1)
DO implícito para matrizes Ø Matriz A tem 2 linhas e três colunas e serão lidos primeiro os elementos por colunas e depois por linhas, i. e. , A(1, 1); A(1, 2); A(1, 3); A(2, 1); A(2, 2); A(2, 3) read *, (( A(i, j), j=1, 3) , i=1, 2 )
Exercício 1 Ø Faça um programa em Fortran que lê uma matriz quadrada 3 x 3, calcule a sua transposta (at(i, j) = a(j, i)) e exiba para o usuário o resultado.
Exercício 2 Ø Faça um programa em Fortran que lê uma matriz de entrada(3, 3) e calcule a matriz de saída(3, 3) da seguinte maneira: Ø se (i=j) então saída(i, j) = 0 Ø se (i<>j) então saída(i, j) = entrada (j, i)
Exercício 3 Ø Faça um programa em Fortran que lê o nome e as 3 notas para cada aluno de cada turma de um curso. Cada turma tem 2 alunos e o curso tem 2 turmas. Ao final, o programa deve permitir que o usuário informe: Ø A) o nome de um aluno e o programa liste a média desse aluno Ø B) o usuário informe uma média e o programa liste todos os alunos que têm médias acima desse valor. Ø nota (num. Aluno, num. Nota, num. Turma); Ø numero de alunos = 2, número de notas = 3 e número de turmas = 2
Exercício 4 Ø Faça um programa em Fortran que lê duas matrizes tamanho 2 x 3 e 3 x 2 e multiplica essas matrizes Ø Dica: c(i, j) = somatório de a(i, k) * b(k, j) para todo k.
Exercício 5 Ø Faça um programa que receba o nome, a idade, a renda salariam e a quantidade de anos de contribuição para a previdência dos 10 funcionários de uma empresa. O programa deve ser capaz de informar: a) o salário mais alto e o nome do empregado b) a média salarial e quantos empregados ganham acima da média c) quais são os empregados que estão prestes a se aposentar, i. e. , quais possuem mais 30 anos de contribuição d) Idade do empregado mais novo e do empregado mais velho que estão prestes a se aposentar
- Viviane dalles
- Viviane sensible
- Viviane pinheiro a viagem
- Khler def
- Viviane bouysse évaluation positive
- Viviane robinson open to learning conversations
- Computadoras neuroelectrónicas
- Ensamble y mantenimiento de computadores
- Organização de computadores
- Redes de computadores
- Organização e arquitetura de computadores
- Fundamentos de redes de computadores
- Organização de computadores
- Rede de computadores
- Mantenimiento preventivo
- Redes de computadores
- Arquitetura de computadores
- Computadores
- Redes de computadores
- Classificação dos computadores
- Rede de computadores
- Stallings william comunicaciones y redes de computadores
- Torres de madereo
- Fis. juan velazquez torres
- Luis torres paz
- Escuela normal superior jose maria torres
- Penny rubin mafu
- Massiel torres
- Pared mojada
- Nuestra señora del buen suceso profecias
- Vicios de refracción
- Jesus guillen torres
- Vanesa torres cubi
- Julio romero de torres pinto a la mujer morena
- Christian thomas torres