Algoritmo e Estrutura de Dados I Aula 9


![Declaração de Variáveis Compostas Homogêneas declare lista de identificadores [li: ls]t onde: – declare: Declaração de Variáveis Compostas Homogêneas declare lista de identificadores [li: ls]t onde: – declare:](https://slidetodoc.com/presentation_image_h/a9d4e62bc51c07baa95a12d791b330ce/image-3.jpg)
![Alguns exemplos de declaração • • declare literal • declare NOTA [1: 10] numérico Alguns exemplos de declaração • • declare literal • declare NOTA [1: 10] numérico](https://slidetodoc.com/presentation_image_h/a9d4e62bc51c07baa95a12d791b330ce/image-4.jpg)
![Exemplo 1 – preenchimento Algoritmo declare M[1: 6] numérico declare I numérico I ← Exemplo 1 – preenchimento Algoritmo declare M[1: 6] numérico declare I numérico I ←](https://slidetodoc.com/presentation_image_h/a9d4e62bc51c07baa95a12d791b330ce/image-5.jpg)








![Refinamentos sucessivos do exemplo 3 Ref. Declare as variaveis declare AEDSI[1: 151], CN [1: Refinamentos sucessivos do exemplo 3 Ref. Declare as variaveis declare AEDSI[1: 151], CN [1:](https://slidetodoc.com/presentation_image_h/a9d4e62bc51c07baa95a12d791b330ce/image-14.jpg)
![Exemplo 3 completo (1/2) Algoritmo declare AEDSI[1: 151], CN [1: 221] numérico declare I, Exemplo 3 completo (1/2) Algoritmo declare AEDSI[1: 151], CN [1: 221] numérico declare I,](https://slidetodoc.com/presentation_image_h/a9d4e62bc51c07baa95a12d791b330ce/image-15.jpg)
![Exemplo 3 completo (2/2) I ← 1 repita se AEDSI[I] = 9999 entao interrompa Exemplo 3 completo (2/2) I ← 1 repita se AEDSI[I] = 9999 entao interrompa](https://slidetodoc.com/presentation_image_h/a9d4e62bc51c07baa95a12d791b330ce/image-16.jpg)


![Exemplo 4 – alto nível Algoritmo leia VOOS[1]. . . VOOS[37], LDISP[1]. . . Exemplo 4 – alto nível Algoritmo leia VOOS[1]. . . VOOS[37], LDISP[1]. . .](https://slidetodoc.com/presentation_image_h/a9d4e62bc51c07baa95a12d791b330ce/image-19.jpg)



![Algoritmo declare VOOS, {numero dos voos} LDISP[1: 37] {lugares disponiveis} declare APONT, CLIENTE, I, Algoritmo declare VOOS, {numero dos voos} LDISP[1: 37] {lugares disponiveis} declare APONT, CLIENTE, I,](https://slidetodoc.com/presentation_image_h/a9d4e62bc51c07baa95a12d791b330ce/image-23.jpg)
- Slides: 23
Algoritmo e Estrutura de Dados I Aula 9 – Variáveis Compostas Homogêneas Márcia Marra marsha@dcc. ufmg. br
Variáveis Compostas Homogêneas • Correspondem a posições de memória, identificadas por um mesmo nome, individualizadas por índices e cujo conteúdo é do mesmo tipo. • Exemplo: NOTA 60 70 90 60 55 91 99 47 47 86 1 2 3 4 5 6 7 8 9 10 2
Declaração de Variáveis Compostas Homogêneas declare lista de identificadores [li: ls]t onde: – declare: palavra chave – lista de identificadores: nomes associados às variáveis que se deseja declarar – l i: limite inferior do intervalo de variação dos índices – l s: limite superior do intervalo de variação dos índices – t: tipo dos componentes da variável (numérico, literal, lógico) • O limite superior não deve ser menor do que o limite inferior, ou seja, ls ≥ li 3
Alguns exemplos de declaração • • declare literal • declare NOTA [1: 10] numérico VOOS [1: 500] numérico LIVROS [1: 1000] numérico GABARITO, RESPOSTAS [1: 10] FREQUENCIA [0: 10] numerico 4
Exemplo 1 – preenchimento Algoritmo declare M[1: 6] numérico declare I numérico I ← 1 repita se I > 6 então interrompa fim se M[I] ← 2 I ← I + 1 fim repita escreva M[1], M[2] … M[6] Fim Algoritmo 5
Exemplo 2 • O algoritmo deve ler uma variável de 100 elementos e verificar se existem elementos iguais a 30. Se existirem, escrever as posições em que estão armazenados. Algoritmo Defina o tipo das variaveis leia NUMEROS[1]. . . NUMEROS[100] Verifique se existem elementos iguais a 30 Fim Algoritmo 6
Refinamentos sucessivos do exemplo 2 Ref. Verifique se existem elementos iguais a 30 I ← 1 repita se I > 100 então interrompa fim se se NUMEROS[I] = 30 então escreva I fim se I ← I + 1 fim repita Fim Ref. Defina o tipo das variáveis declare NUMEROS[1: 100] numerico declare I numerico Fim Ref 7
Exemplo 2 – Algoritmo Completo Algoritmo { Declaracao do tipo das variaveis } declare NUMEROS[1: 100] numerico declare I numerico leia NUMEROS[1]. . . NUMEROS[100] { Verificacao da existencia de elementos iguais a 30 } I ← 1 repita se I > 100 então interrompa fim se se NUMEROS[I] = 30 então escreva I fim se I ← I + 1 fim repita Fim Algoritmo 8
Exemplo 3 • A diretoria do ICEx deseja saber se existem alunos cursando, simultaneamente, Algoritmos e Estrutura de Dados I (AEDSI) e Cálculo Numérico (CN). • Existem disponíveis na unidade de entrada os números de matrícula dos alunos de AEDSI (no máximo 150 alunos) e de CN (no máximo 220 alunos). • Cada conjunto dos números de matrícula dos alunos de uma disciplina tem a matrícula fictícia 99999 no final. • Formular um algoritmo que imprima o número de matrícula dos alunos que estão cursando estas disciplinas simultaneamente. 9
Exemplo 3 – Estrutura de Dados • Este problema trata da verificação de ocorrência de um elemento de um conjunto em um outro conjunto. AEDS I . . . 1 2 3 4 5 . . . 150 151 CN . . . 1 2 3 4 5 . . . 10 221
Exemplo 3 – Algoritmo em alto nível Algoritmo Declare variaveis Leia matricula dos alunos que estao cursando AEDS I Leia matricula dos alunos que estao cursando CN Verifique a matricula simultanea em AEDS I e CN Fim Algoritmo 11
Refinamentos sucessivos do algoritmo 3 Ref. Leia matricula dos alunos que estao cursando AEDSI I ← 1 repita leia AEDSI [I] se AEDSI[I] = 9999 entao interrompa fim se I ← I + 1 fim repita Fim Ref. Leia matricula dos alunos que estao cursando CN I ← 1 repita leia CN [I] se CN[I] = 9999 entao interrompa fim se I ← I + 1 fim repita Fim Ref. 12
Refinamentos sucessivos do algoritmo 3 Ref. Verifique a matricula simultanea em AEDSI e CN I ← 1 repita se AEDSI[I] = 9999 entao interrompa fim se J ← 1 repita se CN[J] = 9999 ou AEDSI[I] = CN[J] entao interrompa fim se J ← J + 1 fim repita se AEDSI[I] = CN [J] entao escreva AEDS[I] fim se I ← I + 1 fim repita Fim Ref. 13
Refinamentos sucessivos do exemplo 3 Ref. Declare as variaveis declare AEDSI[1: 151], CN [1: 221] numérico declare I, J numérico Fim Ref. 14
Exemplo 3 completo (1/2) Algoritmo declare AEDSI[1: 151], CN [1: 221] numérico declare I, J numérico I ← 1 repita leia AEDSI [I] se AEDSI[I] = 9999 entao interrompa fim se I ← I + 1 fim repita I ← 1 repita leia CN [I] se CN[I] = 9999 entao interrompa fim se I ← I + 1 fim repita 15
Exemplo 3 completo (2/2) I ← 1 repita se AEDSI[I] = 9999 entao interrompa fim se J ← 1 repita se CN[J] = 9999 ou AEDSI[I] = CN[J] entao interrompa fim se J ← J + 1 fim repita se AEDSI[I] = CN [J] entao escreva AEDS[I] fim se I ← I + 1 fim repita Fim Algoritmo 16
Exemplo 4 • Escrever um algoritmo que faça reserva de passagens aéreas de uma companhia. • Além da leitura do número de vôos e quantidade de lugares disponíveis, ler vários pedidos de reserva, constituídos do número da carteira de identidade do cliente e do número do 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 do vôo, atualizando o número de lugares dosponí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 da carteira de identidade é 9999. Considerar fixo e igual a 37 o número de vôos da companhia. 17
Exemplo 4 – Estrutura de Dados Número dos Lugares Vôos Disponíveis 18
Exemplo 4 – alto nível Algoritmo leia VOOS[1]. . . VOOS[37], LDISP[1]. . . LDISP[37] repita leia CLIENTE, NVOO se CLIENTE = 9999 entao interrompa fim se Verifique a existencia de voo Verifique a existencia de lugar fim repita Fim Algoritmo 19
Refinamentos sucessivos do Exemplo 4 Ref. Verifique a existência de voo I ← 0 repita I ← I + 1 se I = 37 ou VOOS[I] = NVOO entao interrompa fim se fim repita se VOOS[I] = NVOO entao APONT ← I senao escreva “VOO INEXISTENTE” APONT ← 0 fim se Fim ref. 20
Refinamentos sucessivos do Exemplo 4 Ref. Verifique a existência de lugar se APONT ≠ 0 entao se LDISP[APONT] > 0 entao escreva CLIENTE, NVOO senao escreva NVOO, “LOTADO” fim se Fim Ref. Atualize o número de lugares disponiveis LDISP[APONT] ← LDISP[APONT] -1 Fim Ref. 21
Refinamentos sucessivos do Exemplo 4 Ref. Declare as variaveis declare VOOS, {numero dos voos} LDISP[1: 37] {lugares disponiveis} numérico declare APONT, CLIENTE, I, NVOO numerico Fim Ref. 22
Algoritmo declare VOOS, {numero dos voos} LDISP[1: 37] {lugares disponiveis} declare APONT, CLIENTE, I, NVOO numerico leia VOOS[1]. . . VOOS[37], LDISP[1]. . . LDISP[37] repita leia CLIENTE, NVOO se CLIENTE = 9999 entao interrompa fim se I ← 0 repita I ← I + 1 se I = 37 ou VOOS[I] = NVOO entao interrompa fim se fim repita se VOOS[I] = NVOO entao APONT ← I senao escreva “VOO INEXISTENTE” APONT ← 0 fim se se APONT ≠ 0 entao se LDISP[APONT] > 0 entao escreva CLIENTE, NVOO LDISP[APONT] ← LDISP[APONT] -1 senao escreva NVOO, “LOTADO” fim se Fim Repita Fim Algoritmo 23























