29
Algoritmos e Estruturas de Algoritmos e Estruturas de Dados I – Estruturas de Dados Dados I – Estruturas de Dados Profa. Mercedes Gonzales Márquez

Algoritmos e Estruturas de Dados I – Estruturas de Dados

  • Upload
    ervin

  • View
    59

  • Download
    1

Embed Size (px)

DESCRIPTION

Profa. Mercedes Gonzales Márquez. Algoritmos e Estruturas de Dados I – Estruturas de Dados. Estruturas de Dados. Os tipos primitivos ( inteiro , real, literal e lógico ) não são suficientes para representar todos os tipos de informação . - PowerPoint PPT Presentation

Citation preview

Page 1: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmos e Estruturas de Algoritmos e Estruturas de Dados I – Estruturas de DadosDados I – Estruturas de Dados

Profa. Mercedes Gonzales Márquez

Page 2: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Estruturas de DadosEstruturas de Dados

•Os tipos primitivos (inteiro, real, literal e Os tipos primitivos (inteiro, real, literal e lógico) não são suficientes para representar lógico) não são suficientes para representar todos os tipos de informação.todos os tipos de informação.•Particularmente quando temos mais de Particularmente quando temos mais de uma informação relacionada. Ex: Lista dos uma informação relacionada. Ex: Lista dos nomes dos alunos de uma sala, endereço de nomes dos alunos de uma sala, endereço de alguém etc.alguém etc.•Utilizaremos os tipos primitivos para Utilizaremos os tipos primitivos para construirconstruir outras estruturas de dados mais outras estruturas de dados mais complexas.complexas.

Page 3: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetores• Também denominados Também denominados Estruturas compostas Estruturas compostas

homogêneas homogêneas uniunidimensionaisdimensionais• Permitem a manipulação de um conjunto de Permitem a manipulação de um conjunto de

informações de um mesmo tipo primitivoinformações de um mesmo tipo primitivo◦ Declaração :Declaração :tipotipo primitivo : nome_ primitivo : nome_vetorvetor [numero de elementos] [numero de elementos]

◦ Exemplo :Exemplo :Um vetor com nome “dados” de 40 posições reais Um vetor com nome “dados” de 40 posições reais terá a seguinte declaração.terá a seguinte declaração.

Real: dados[40]Real: dados[40]

1 2 3 4 5 6 7 8 9 38 39 40

6,57,8 5,3

dados

9,89,1 4,77,87,8 3,62,4 9,8 1,5 2,8 4,6

Page 4: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetores◦ Manipulação:Manipulação:

Para manipular os elementos de um vetor Para manipular os elementos de um vetor devemos especificar a sua posição.devemos especificar a sua posição.

1 2 3 4 5 6 7 8 9 38 39 40

6,57,8 5,3

dados

9,89,1 4,77,87,8 3,62,4 9,8 1,5 2,8 4,6

--dados[8]dados[8]

• A posição do vetor é determinada por meio de uma A posição do vetor é determinada por meio de uma constante, de uma expressão aritmética ou de uma constante, de uma expressão aritmética ou de uma variável que estiver dentro dos colchetes. Ela é variável que estiver dentro dos colchetes. Ela é também chamada de índice.também chamada de índice.

Page 5: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetores

Exercício – Sendo o vetor v igual a

1 2 3 4 5 6 7 8 9 10

17,8 3 910 147,86 82 21 33

e as variáveis x=2 e y=4 escreva o valor correspondente à solicitação(a) v[x+1] (b) v[x+2] (c) v[x+3] (d) v[x+4] (e) v[x*1] (f) v[x*2] (g) v[x*3] (h) v[v[x+4]](i) v[x+y] (j) v[8-v[2]] (k) v[v[4]] (l) v[v[v[7]]](m) v[v[1]*v[4]] (n) v[x+4]

Page 6: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetores

inteiro: va[50],vb[50],vc[50],iiniciopara i de 1 até 50 repita

leia (va[i],vb[i] )vc[i] ← va[i] + vb[i]escreva (vc[i])

fimparafim.

Algoritmo 2 – Leia dois vetores inteiros de 50 posições, some seus correspondentes elementos e imprima o resultado da soma

Page 7: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetoresAlgoritmo 3 – Preencha um vetor de 100 inteiros, colocando 1 na posição par e 0 na posição impar

inteiro: vetor[100],iiniciopara i de 1 até 100 repita

se (mod(i,2)=0) entãovetor[i] ← 1

senãovetor[i] ← 0

fimpara;fim.

Page 8: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetoresAlgoritmo 4 – Altere o exemplo da soma de vetores para que esta realize a seguinte operação: produto do primeiro vetor pelo inverso do segundo. Os vetores possuem 20 posições e contém valores reais.

Algoritmo <produto>inteiro: ireal: V[20],a[20],b[20]iniciopara i de 1 até 20 repita

V[i] ← a[i]*b[21-i]fim para

fim.

Page 9: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 5 – Igual que o algoritmo 4, só que o resultado dos produtos dos valores correspondentes devem ser armazenados a partir do centro para as bordas, de modo alternado.

VetoresVetores

Algoritmo <produto2>real: V[20],a[20],b[20]inteiro: iiniciopara i de 1 até 10 repita

v[11-i]=a[11-i]*b[10+i]v[10+i]=a[10+i]*b[11-i]

fim parafim.

Page 10: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 6 – Escreva uma algoritmo que leia um vetor de 20 elementos e conte quantos valores pares existem no vetor.

VetoresVetores

Algoritmo <contagempares>inteiro: V[20],i,cinicio

c ←0para i de 1 até 20 repita

leia (V[i])Se (mod(V[í],2)=0) então

c ← c+1fim se

fim paraescreva (c)

fim.

Page 11: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 7 – Escreva um algoritmo que leia um vetor de 50 posições de números inteiros e mostre somente os positivos

VetoresVetores

Algoritmo <positivos>inteiro:V[50], iiniciopara i de 1 até 50 repita

leia (V[i])se (V[i]>0) então

escreva (V[i])fim se

fim parafim.

Page 12: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 8 – Escreva um algoritmo que leia um vetor de 80 elementos inteiros, encontre e mostre o menor elemento e sua posição no vetor.

VetoresVetores

Algoritmo <menorelemento>inteiro:V[80], i, ind,menorinicio

leia (V[1])menorV[1]ind1para i de 2 até 80 repita

leia (V[i])se (V[i]<menor) então

menorV[i]indi

fim sefim para

fim.

Page 13: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 9 – Faça um algoritmo que leia um conjunto de 10 valores inteiros e os coloque em dois vetores conforme forem pares ou ímpares.

VetoresVetores

Algoritmo <doisvetores>inteiro:V[10], V1[10],V2[10],i,c1,c2inicio

c1c2para i de 1 até 10 repita

leia (V[i])se (mod(V[i],2)=0) então

V1[c1]V[i]c1c1+1

senãoV2[c2]V[i]c2 c2

fim sefim para

fim.

Page 14: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 10 – Escreva um algoritmo que leia um vetor G de 20 elementos literais que representa o gabarito de uma prova. A seguir para cada um dos 50 alunos da turma, leia o vetor de respostas R do aluno. Mostre o número de acertos do aluno e uma mensagem APROVADO, se a nota for maior ou igual a 6; e uma mensagem de REPROVADO, caso contrário.

VetoresVetores

Page 15: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetores

Algoritmo <prova>literal:G[20], R[20]inteiro:i,j,acertosinicio

para i de 1 até 20 repitaleia (G[i])

fim parapara j de 1 até 50 repita

acertos ← 0Para i de 1 até 20 repita

leia R[i]se (R[i]=G[i]) então

acertos ← acertos+1

fim sefim para

notaacertos*0.5se (nota>=6) então

escreva (“APROVADO”)senão

escreva(“REPROVADO”)

fim sefim para

fim

Page 16: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 11 – Faça um algoritmo que leia o código numérico inteiro e um vetor de 50 posições de números reais. Se o código for 0 termine o algoritmo, se for 1, mostre o vetor na ordem direta, e se for 2, mostre o vetor na ordem inversa.

VetoresVetores

Page 17: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetoresAlgoritmo <opcoes>inteiro:i,codigoreal: vetor[50]inicio

leia (codigo)se (codigo>0 e codigo<=2) então

para i de 1 até 50 repitaleia (vetor[i])

fim parase (codigo=1) então

para i de 1 até 50 repitaescreva (vetor[i])

fim parasenão

para i de 50 até 1 passo -1 repitaescreva (vetor [i])

fim parafim se

fim sefim

Page 18: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 12 – Uma locadora de vídeos tem guardada, em um arquivo manual, a quantidade de filmes retirados por cliente durante o ano de 2007. Faça um algoritmo que (a) leia um vetor de 500 posições para guardar esta informação e (b) crie um outro vetor contendo a quantidade de locações gratuitas a que cada cliente tem direito, considerando que a locadora está fazendo uma promoção e para cada 10 filmes retirados ganha-se uma locação grátis.

VetoresVetores

Page 19: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetores

Algoritmo <locadora>inteiro:i,locacoes[500],gratuitas[500]iniciopara i de 1 até 500 repita

leia (locacoes[i])gratuitas[i] ← DIV(locacoes[i],10)

fim parafim

Page 20: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 13 – Dado um polinômio P(x) de grau n, da forma

P(x) = a0xn + a1xn-1 + ... + an-1x + an, onde a0, a1, ..., an (reais) são os coeficientes do polinômio. Faça um algoritmo para ler:(a)n (o grau do polinômio), n<=100(b)os coeficientes a0, a1, ..., an e(c)uma seqüência de 5 valores para x.

O algoritmo deve calcular o valor de P(x) para cada valor de x.

VetoresVetores

Page 21: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo <polinomio>inteiro:i,nreal: a[101],xinício

leia (n)para i de 1 até n+1 repita

leia a[i]fim parapara j de 1 até 5 repita

leia xPx ← 0para i de 1 até n+1 repita

Px ← Px+ a[i]*x**(n-i+1)fim paraescreva (x,Px)

fim parafim

VetoresVetores

Page 22: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 14 – Escrever um algoritmo que faça a reserva de passagens aéreas de uma companhia. Além da leitura do número dos vôos e quantidade de lugares disponíveis, ler vários pedidos de reserva, constituídos do número de carteira de identidade do cliente e do número de vôo desejado.Para cada cliente, verificar se há disponibilidade no vôo desejado. Em caso afirmativo, imprimir o número da identidade do cliente, e o número de vôo, atualizando o número de lugares disponíveis. Caso contrário, avisar ao cliente da inexistência de lugares.Indicando o fim dos pedidos de reserva, existe um passageiro cujo número de carteira de identidade é 9999. Considerar fixo e igual a 37 o número de vôos da companhia.

VetoresVetores

Algoritmo <reservapassagens>inteiro:i,voos[37],disp[37],cliente,nvoo

Page 23: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

inícioPara i de 1 até 37 repita

leia (voos[i],disp[i])Fim Paraleia clienteenquanto cliente<>9999 faça

leia nvooi ← 0repita

i ← i+1até que (i=37 ou voos[i]=nvoo)se (voos[i]=nvoo) então

se (disp[i]>0) entãoescreva (cliente,nvoo)disp[i] ← disp[i]-1

senãoescreva (nvoo, “lotado”)

fim sesenão

escreva (“voo inexistente”)fim seleia cliente

fim enquantofim

Page 24: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 15 – Faça um algoritmo que leia um vetor de 20 inteiros e o coloque em ordem crescente, utilizando a seguinte estratégia de ordenação:•Selecione o elemento do vetor de 20 posições que apresente o menor valor. •Troque este elemento pelo primeiro.•Repita estas operações, envolvendo agora apenas os 19 elementos restantes (trocando o de menor valor com a segunda posição), depois os 18 elementos (trocando o de menor valor com a terceira posição), depois os 17,16 e assim por diante, até restar um único elemento, o maior deles.

VetoresVetores

Page 25: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetoresAlgoritmo <ordemcrescente>inteiro:i,j,vetor[20]inicio

para i de 1 até 19 repitainter ← 0menor ← vetor[i]indice ← ipara j de i+1 até 20 repita

se (vetor[j] < menor ) entãomenor ← vetor[j]indice ← jinter ← 1

fim sefim parase (inter=1) então

vetor[indice] ← vetor[i]vetor[i] ← menor

fim sefim para

fim

Page 26: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 16 – Desenvolva um algoritmo que leia um vetor de 20 posições inteiras e o coloque em ordem crescente, utilizando como estratégia de ordenação a comparação de pares de elementos adjacentes, permutando-os quando estiverem fora de ordem até que todos estejam ordenados.

VetoresVetores

Page 27: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetoresAlgoritmo <ordemcrescente2>inteiro:i,j,t,vetor[20]iniciopara i de 2 até 20 repita

para j de 20 até i passo -1 repita

se (vetor[j-1] > vetor[j] ) entãot ← vetor[j-1]vetor[j-1] ← vetor[j]vetor[j] ← t

fim sefim para

fim parafim

Page 28: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

Algoritmo 17 – Desenvolva um algoritmo que leia um vetor de 20 posições inteiras e o coloque em ordem crescente, utilizando como estratégia de ordenação inserir um elemento n num vetor já ordenado de  n-1 elementos.

VetoresVetores

Page 29: Algoritmos  e  Estruturas  de Dados I –  Estruturas  de Dados

VetoresVetoresAlgoritmo <ordemcrescente3>inteiro:i,j,elemento,vetor[20]iniciopara i de 2 até 20 repita

elemento ←vetor[j]i ←j-1enquanto (i>0 e vetor[i]>elemento)

vetor[i+1] ← vetor[i]i ← i-1

fim enquantovetor[i+1] ← elemento

fim parafim