Buscar

algoritmos e programação

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 10 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

s
é
r
ie
 liv
ro
s
 d
id
á
tic
o
s
 in
fo
r
m
á
tic
a
 u
fr
g
s
23
s é r i e l i v r o s d i d á t i c o s i n f o r m á t i c a u f r g s
volume 3 Linguagens Formais e Autômatos, 6.ed., 
de Paulo Blauth Menezes
volume 4 Projeto de Banco de Dados, 6.ed., 
de Carlos Alberto Heuser 
volume 5 Teoria da Computação: Máquinas Universais 
e Computabilidade, 3.ed, de Tiarajú Asmuz Diverio 
e Paulo Blauth Menezes
volume 6 Arquitetura de Computadores Pessoais, 
2.ed., de Raul Fernando Weber
volume 7 Concepção de Circuitos Integrados, 2.ed., 
de Ricardo Augusto da Luz Reis e cols.
volume 8 Fundamentos de Arquitetura de Computadores, 
4.ed., de Raul Fernando Weber
volume 10 Tabelas: Organização e Pesquisa, 
de Clesio Saraiva dos Santos e Paulo Alberto de Azeredo 
volume 11 Sistemas Operacionais, 4.ed., 
de Rômulo Silva de Oliveira, Alexandre da Silva Carissimi 
e Simão Sirineo Toscani 
volume 12 Teoria das Categorias para Ciência 
da Computação, 2.ed., de Paulo Blauth Menezes 
e Edward Hermann Haeusler
volume 13 Complexidade de Algoritmos, 3.ed., 
de Laira Vieira Toscani e Paulo A. S. Veloso 
volume 16 Matemática Discreta para Computação 
e Informática, 4.ed., de Paulo Blauth Menezes
volume 18 Estruturas de Dados, de Nina Edelweiss 
e Renata Galante
volume 19 Aprendendo Matemática Discreta com 
Exercícios, de Paulo Blauth Menezes, Laira Vieira Toscani 
e Javier García López
volume 20 Redes de Computadores, 
de Alexandre da Silva Carissimi, Juergen Rochol 
e Lisandro Zambenedetti Granville
volume 21 Introdução à Abstração de Dados, 
de Daltro José Nunes
volume 22 Comunicação de Dados, de Juergen Rochol
COMPUTAÇÃO
www.grupoa.com.br
A Bookman é um dos selos editoriais do Grupo A Educação, empresa que 
oferece soluções em conteúdo, tecnologia e serviços para a educação 
acadêmica e profissional.
algoritmos
e programação 
com exemplos em Pascal e C
nina edelweiss
maria aparecida castro livi
Material didático para professores
Visite www.grupoa.com.br
nina edelweiss
maria aparecida castro livi
 l i v r o s d i s p o n í v e i s
algoritm
os e program
ação
com
 exem
plos em
 P
ascal e C
23
edelw
eiss
livi
23
algoritmos
e programação 
com exemplos em Pascal e C
Aprender programação não é uma tarefa simples. 
Requer um entendimento perfeito do problema, a análise 
de como solucioná-lo e a escolha da forma de implementação 
da solução. algoritmos e programação apresenta 
o processo de construção de algoritmos e de programas, 
enfatizando as etapas de abstração, organização, análise 
e crítica na busca de soluções eficientes. Os elementos 
de um programa são introduzidos pouco a pouco ao longo 
do texto, inicialmente apresentados em pseudolinguagem e, 
em seguida, exemplificados nas linguagens de programação 
Pascal e C. Este é um livro-texto para disciplinas iniciais 
de programação de duração de um semestre. Pode ser 
utilizado sobretudo em cursos de bacharelado e licenciatura 
em ciência da computação, análise de sistemas e engenharia 
da computação. 
E22a Edelweiss, Nina.
 Algoritmos e programação com exemplos em Pascal e C 
 [recurso eletrônico] / Nina Edelweiss, Maria Aparecida Castro 
 Livi. – Dados eletrônicos. – Porto Alegre : Bookman, 2014.
 Editado também como livro impresso em 2014.
 ISBN 978-85-8260-190-7
 1. Informática. 2. Algoritmos – Programação. I. Livi, 
 Maria Aparecida Castro. II. Título. 
CDU 004.421
 as autoras
Nina Edelweiss é engenheira eletricista e doutora em Ciência da Computação pela Uni-
versidade Federal do Rio Grande do Sul. Durante muitos anos, lecionou em cursos de Enge-
nharia e de Ciência da Computação na UFRGS, na UFSC e na PUCRS. Foi, ainda, orientadora 
do Programa de Pós-Graduação em Ciência da Computação da UFRGS. É coautora de três 
livros, tendo publicado diversos artigos em periódicos e em anais de congressos nacionais 
e internacionais. Participou de diversos projetos de pesquisa financiados por agências de 
fomento como CNPq e FAPERGS, desenvolvendo pesquisas nas áreas de bancos de dados e 
desenvolvimento de software.
Maria Aparecida Castro Livi é licenciada e bacharel em Letras, e mestre em Ciência da 
Computação pela Universidade Federal do Rio Grande do Sul. Desenvolveu sua carreira pro-
fissional na UFRGS, onde foi programadora e analista de sistema, antes de ingressar na 
carreira docente. Ministrou por vários anos a disciplina de Algoritmos e Programação para 
alunos dos cursos de Engenharia da Computação e Ciência da Computação. Sua área de 
interesse prioritário é o ensino de Linguagens de Programação, tanto de forma presencial 
quanto a distância.
Catalogação na publicação: Ana Paula M. Magnus – CRB 10/2052
Edelweiss_Iniciais_eletronica.indd iiEdelweiss_Iniciais_eletronica.indd ii 14/05/14 16:5114/05/14 16:51
180 Algoritmos e Programação com Exemplos em Pascal e C
exercício 6.8 Classificação por seleção. Esse é um método de classificação bastante sim-
ples, embora não muito eficiente. Para colocar os dados em ordem crescente, percorre-se 
o vetor buscando o elemento com o menor valor. Esse é trocado com aquele que está na 
primeira posição do vetor. O método é, então, repetido para o segmento do vetor que inicia 
na segunda posição, e assim sucessivamente. A Figura 6.6 mostra esquematicamente como é 
feita a classificação por seleção.
Algoritmo ClassSeleção
{CLASSIFICA UM VETOR PELO MÉTODO DE SELEÇÃO, EM ORDEM CRESCENTE}
 Constantes: MIN = 1
 MAX = 10 {LIMITES DO VETOR}
 Entradas:
 vet (arranjo [MIN..MAX] de inteiro) {VETOR A SER ORDENADO}
 Saídas: {VETOR CLASSIFICADO EM ORDEM CRESCENTE}
 Variáveis auxiliares:
 i, j (inteiro) {ÍNDICES DE UMA PASSADA}
 menor (inteiro) {MENOR VALOR DA PASSADA}
 aux (inteiro) {AUXILIAR PARA FAZER A TROCA}
início
 para i de MIN incr 1 até MAX faça
 ler (vet[i]) {PREENCHE VET POR LEITURA}
 para i de MIN incr 1 até MAX-1 faça
 início
 menor ← i
 para j de i+1 incr 1 até MAX faça
 se vet[j] < vet[menor]
 então menor ← j
 se menor ≠ i
 então início {VAI FAZER A TROCA}
 aux ← vet[i]
 vet[i] ← vet[menor]
 vet[menor] ← aux
 fim
 fim
 para i de MIN incr 1 até MAX faça
 escrever (vet[i]) {MOSTRA VET ORDENADO}
fim
exercício 6.9 Método da Bolha. Trata-se de um método de classificação de vetores bem 
mais eficiente do que o método de classificação por seleção antes apresentado. Consiste em 
percorrer o vetor comparando cada dois elementos adjacentes e trocando-os de posição caso 
estejam em ordem contrária à desejada. É feito um controle, a cada varredura do vetor, para 
saber se houve alguma troca de valores e, se houve, nova varredura é executada. O ponto 
onde a última troca aconteceu é fixado como o limite da próxima varredura, reduzindo pro-
gressivamente o número de elementos do conjunto considerado na varredura. Se nenhuma 
Edelweiss_06.indd 180Edelweiss_06.indd 180 12/03/14 09:0212/03/14 09:02
Capítulo 6 Variáveis Estruturadas: Arranjos Unidimensionais 181
troca acontece durante uma varredura, então o conjunto já está ordenado e o processo é 
interrompido. Essa estratégia recebe o nome de “Método da Bolha” (bubble sort) ou “orde-
nação por flutuação”, pois os valores maiores (no caso de ordenação em ordem crescente) 
vão “subindo” para o final do vetor a cada varredura, até atingirem sua posição definitiva no 
conjunto de dados.
A Figura 6.7 simula o funcionamento desse método para um vetor de cinco elementos intei-
ros. São representados os valores contidos no vetor nas três primeiras varreduras. Na quarta 
varredura, não será necessário troca – isso indica que o vetor está ordenado. Observar que, ao 
final da primeira varredura, o maior valor (30) estará na posição final e que os valores meno-
res terão descido uma posição, aproximando-se de sua posição correta. Nasegunda varredura 
não é feita a comparação com o último valor, pois ele já está correto. Assim, a cada varredura 
diminui o tamanho do segmento de vetor a ser analisado.
O algoritmo apresentado a seguir classifica o vetor em ordem crescente. Se a ordena-
ção desejada for a decrescente, basta alterar a comparação de vet[i] > vet[i+1] para 
vet[i] < vet[i+1].
Algoritmo ClassBolha
{CLASSIFICA UM VETOR PELO MÉTODO DA BOLHA}
 Constante MAX = 5 {NÚMERO DE ELEMENTOS DO VETOR}
 Entradas:
 vet (arranjo [1..MAX] de inteiro) {VETOR A SER CLASSIFICADO}
 Saídas: {vet CLASSIFICADO}
 Variáveis auxiliares:
 i (inteiro) {ÍNDICE QUE PERCORRE O VETOR}
1 2 3 4 5
28 26 30 24 25
24 26 30 28 25
1 2 3 4 5
1 2 3 4 5
24 25 30 28 26
24 25 26 28 30
1 2 3 4 5
1 2 3 4 5
24 26 30 28 25
24 25 30 28 26
1 2 3 4 5
1 2 3 4 5
24 25 26 28 30
24 25 26 28 30
1 2 3 4 5
i=1
j=2 a 5 
i=2
j=3 a 5 
i=4
j=5 a 5 
i=3
j=4 a 5 
1ª iteração 2ª iteração
4ª iteração3ª iteração
figura 6.6 Classificação por seleção.
Edelweiss_06.indd 181Edelweiss_06.indd 181 12/03/14 09:0212/03/14 09:02
182 Algoritmos e Programação com Exemplos em Pascal e C
 k (inteiro) {AO TERMINAR A VARREDURA, ARMAZENA A POSIÇÃO
 ONDE OCORREU A ÚLTIMA TROCA}
 m (inteiro) {LIMITE SUPERIOR DA VARREDURA –
 RECUA UMA OU MAIS POSIÇÕES A CADA ITERAÇÃO}
 aux (inteiro) {VARIÁVEL AUXILIAR UTILIZADA PARA A TROCA}
 trocou (lógico) {VERDADEIRA SE OCORREU ALGUMA TROCA}
início
 para i de 1 incr 1 até MAX faça
 ler (vet[i]) {PREENCHIMENTO DO VETOR POR LEITURA}
 trocou ← verdadeiro {INICIALIZA trocou EM VERDADEIRO}
 m ← (MAX – 1) {INICIALIZA m NA PENÚLTIMA POSIÇÃO DO VETOR}
 k ← 1 {INICIALIZA k NO PRIMEIRO ELEMENTO DO VETOR}
 enquanto trocou {REPETE ENQUANTO HOUVER ALGUMA TROCA}
 início
 trocou ← falso {INDICA QUE NESTA VARREDURA AINDA NÃO HOUVE TROCA}
 para i de 1 incr 1 até m faça
 se vet[i] > vet [i + 1] {COMPARA VALORES ADJACENTES}
 então início
 aux ← vet[i] {TROCA DOIS ELEMENTOS DE POSIÇÃO}
 vet[i] ← vet [i + 1]
 vet[i + 1] ← aux
28 26 30 24 25
1ª iteração
26 28 30 24 25
26 28 30 24 25
26 28 24 30 25
26 28 24 25 30
26 28 24 25 30
26 28 24 25 30
26 24 28 25 30
26 24 25 28 30
26 24 25 28 30
2ª iteração
3ª iteração
24 26 25 28 30
24 25 26 28 30
figura 6.7 Classificação por meio do Método da Bolha.
Edelweiss_06.indd 182Edelweiss_06.indd 182 12/03/14 09:0212/03/14 09:02
Capítulo 6 Variáveis Estruturadas: Arranjos Unidimensionais 183
 k ← i {k POSIÇÃO EM QUE OCORREU A TROCA}
 trocou ← verdadeiro; {INDICA QUE NESTA VARREDURA HOUVE
 TROCA}
 fim
 m ← k {m INDICA ATÉ ONDE SERÁ FEITA A PRÓXIMA VARREDURA}
 fim {ENQUANTO}
 escrever ('Vetor classificado');
 para i de 1 incr 1 até MAX faça
 escrever (vet[i]) {MOSTRA VETOR CLASSIFICADO}
fim
6.5 em Pascal
6.5.1 declaração de um vetor
Um tipo de dado vetor (arranjo de uma dimensão) é declarado em Pascal da seguinte forma:
array [<limite inferior>..<limite superior>] of <tipo>
Os limites superior e inferior, índices do primeiro e do último elemento do vetor, devem ser do 
tipo inteiro, caractere ou do tipo enumeração (que será apresentado no Capítulo 8). O 
tipo declarado no final será o tipo de todos os elementos do vetor.
Exemplo de declarações de vetores:
var
 nota: array [1..10] of real;
 nr_letras: array ['a'..'j'] of integer;
 caract: array [-4..7] of char;
Nesses exemplos, o vetor nota tem 10 elementos reais, com índices iniciando em 1 e crescen-
do até 10; o vetor nr_letras tem elementos inteiros, com índices do tipo caractere, tendo 
o primeiro elemento o índice “a” e o último o índice “j”; e o vetor caract, de elementos do 
tipo caractere, tem 12 elementos, tendo o primeiro o índice -4 e o último, 7. A Figura 6.8 
ilustra estes três vetores, simulando alguns valores contidos em seus elementos.
Quando os índices forem do tipo inteiro, recomenda-se que a declaração dos limites do 
vetor seja feita usando constantes previamente definidas. As duas declarações a seguir são 
equivalentes à declaração do vetor nota:
const LIMSUP = 10;
 LIMINF = 1;
var nota: array [LIMINF..LIMSUP] of real;
Nesse caso, todas as referências ao primeiro e último elemento do vetor ao longo do progra-
ma serão feitas utilizando as constantes declaradas. Dessa forma, o tamanho do vetor poderá 
Edelweiss_06.indd 183Edelweiss_06.indd 183 12/03/14 09:0212/03/14 09:02
Capítulo 15 Recursividade 427
A Figura 15.3 ilustra as chamadas recursivas realizadas para calcular o quinto termo dessa 
série.
exercício 15.3 Classificação de vetor pelo método Quicksort. No Capítulo 6 (Seção 
6.3.3), foi ressaltado que a classificação de um vetor é uma operação muito usual em apli-
cações e que há vários métodos disponíveis para realizá-la. Aqui, é apresentado um dos mé-
todos mais eficientes para classificar um vetor, denominado Quicksort ou ordenação rápida. 
Embora possa ser implementado somente por meio de comandos iterativos, a utilização de 
chamadas recursivas é recomendável, uma vez que a eficiência do método garante que o 
número de chamadas nunca seja elevado.
O método inicia buscando a posição correta do primeiro elemento do vetor (aqui chamado de 
pivô) e trocando-o para essa posição. Além de posicionar o pivô em seu lugar correto, todos 
os elementos antes dele serão menores do que ele e todos os posteriores, maiores do que ele. 
Isso é feito da seguinte maneira: o pivô é comparado com o segundo elemento, depois com 
o terceiro, etc., até que seja encontrado um (aqui nomeado de índice i) que seja maior do 
que ele. Em seguida, o pivô é comparado com o último elemento do vetor, depois com o pe-
núltimo, etc., até que seja encontrado um que seja menor do que ele (índice j). Os elementos 
de índices i e j são então permutados. Feita a troca, novamente o pivô é comparado com os 
elementos que seguem o elemento que estava em i, até que seja encontrado outro maior do 
que ele, depois com os elementos abaixo do j, até que seja encontrado outro menor do que 
ele, e nova permuta é feita. Esse processo é repetido até que i seja maior do que j, o que de-
fine o valor de j como a posição correta do pivô, que é então trocado com o elemento dessa 
posição. Uma vez posicionado o pivô, o vetor original está particionado em dois – no subvetor 
inferior, todos os elementos são menores do que o pivô e, no superior, todos são maiores. 
O mesmo método de ordenação é então repetido para cada um desses subvetores por meio 
de chamadas recursivas, passando, como parâmetros, os índices que limitam os subvetores.
Exemplificando, suponha um vetor de 9 elementos, numerados de 1 a 9, preenchido com os 
seguintes valores:
70 27 21 90 81 24 30 80 88
FIB (5)
FIB (3) + FIB (2)
FIB (2) + FIB (1)
FIB (2) + FIB (1)
FIB (4) + FIB (3)
figura 15.3 Chamadas recursivas para cálculo do quinto termo da série de Fibonacci.
Edelweiss_15.indd 427Edelweiss_15.indd 427 12/03/14 09:0012/03/14 09:00
428 Algoritmos e Programação com Exemplos em Pascal e C
A Figura 15.4 mostra resumidamente a sequência de valores no vetor durante a execução do 
método. Os índices i e j são utilizados para percorrer o vetor, o primeiro crescendo e o se-
gundo diminuindo. O pivô é o primeiro elemento, com valor 70. Quando i=4 e j=30, é feita a 
primeira permuta de valores, entre 90 e 30. A permuta seguinte acontece quando i=5 e j=6, 
sendo trocados de posição os valores 81 e 24. Quando i=6 e j=5, significa que foi encontra-
da a posição do pivô (posição 5), que é então permutado com o elemento dessa posição. Na 
figura, pode ser observado que agora todos os valores à esquerda de 70 são menores do que 
esse valor e todos os à direita dele são superiores a 70. Duas chamadas recursivas solicitam a 
ordenação do subvetor inferior, fornecendo os índices 1e 4 como seus limites, e do subvetor 
superior, com índices limites 6 e 9. Na figura podem ser observados os valores decorrentes das 
permutas durantes as chamadas recursivas.
O procedimento a seguir implementa a classificação pelo método Quicksort. O procedimento 
utiliza o vetor V, do tipo TipoVetorInteiros, com valores inteiros, e um outro procedi-
mento, chamado troca, que permuta os conteúdos (valores inteiros) entre duas posições de 
memória recebidas como parâmetros.
Procedimento Quick
{CLASSIFICA O VETOR V EM ORDEM CRESCENTE, PELO MÉTODO QUICKSORT}
 Parâmetros de entrada:
 ref V (TipoVetorInteiros) {VETOR OU SUBVETOR A SER CLASSIFICADO}
 li, ls (inteiro) {LIMITES INFERIOR E SUPERIOR DOS ÍNDICES}
 Variáveis locais:
 i, j (inteiro) {ÍNDICES UTILIZADOS PARA PERCORRER O VETOR}
 pivô (inteiro) {VALOR CONTIDO NO PRIMEIRO ELEMENTO CONSIDERADO}
 sinal (lógico) {INDICA FINAL DE UMA VARREDURA}
início
24 27 21 30 70 81 90 80 88
Quick (V, 1, 4) Quick (V, 6, 9) 
24 27 21 30 81 90 80 88
24 21 27 30 81 80 90 88
21 24 27 30 80 81 90 88
21 27 30 80 88 90
i
70 27 21 90 81 24 30 80 88
70 27 21 30 81 24 90 80 88
70 27 21 30 24 81 90 80 88
j
j
i
i j
ij
figura 15.4 Simulação de valores no Quicksort.
Edelweiss_15.indd 428Edelweiss_15.indd 428 12/03/14 09:0012/03/14 09:00
Capítulo 15 Recursividade 429
 sinal ← falso {INICIALIZAÇÃO}
 se li < ls
 então início
 i ← li {POSICIONA I E J NO INÍCIO E NO FINAL}
 j ← ls + 1
 pivô ← v[li]
 repita
 i ← i + 1
 {AVANÇA I ENQUANTO O ELEMENTO FOR INFERIOR AO PIVÔ
 E NÃO CHEGAR AO FINAL DO SEGMENTO ANALISADO}
 enquanto (v[i]<pivô) e (i<ls)
 faça i ← i + 1
 j ← j – 1
 {RECUA J ENQUANTO O ELEMENTO FOR SUPERIOR AO PIVÔ
 E NÃO CHEGAR AO INÍCIO DO SEGMENTO ANALISADO}
 enquanto (v[j]>pivô) e (j>li)
 faça j ← j – 1
 se i < j {PERMUTA DOIS ELEMENTOS}
 então executar troca(v[i], v[j])
 senão sinal ← verdadeiro {INDICA QUE TERMINOU}
 até sinal
 executar troca(v[j], v[li]) {POSICIONA PIVÔ EM SUA POSIÇÃO}
 executar Quick(v, li, j-1)
 executar Quick(v, j+1, ls)
 fim
fim {Quick}
exercício 15.4 Pesquisa binária recursiva. No Exercício de Fixação 6.7 (no Capítulo 6), 
foi visto o método de pesquisa conhecido como pesquisa binária. Relembrando, esse méto-
do realiza a busca de um valor sobre um vetor já ordenado, comparando o valor buscado 
com o elemento que está na posição central do vetor. Se o valor não for encontrado nessa 
posição, a pesquisa segue buscando o valor na metade superior (caso o valor buscado seja 
superior ao valor que está no meio) ou na metade inferior (caso seja inferior ao valor do 
meio). Claramente, esse método pode ser implementado por meio de recursividade, pois a 
pesquisa na metade superior ou inferior é feita novamente da mesma maneira, alterando 
somente o tamanho do vetor analisado, ou seja, fazendo a chamada recursiva para a metade 
superior ou para a inferior.
A função a seguir realiza a pesquisa binária utilizando chamadas recursivas. Além do nome 
do vetor e do valor a ser pesquisado, são passados como parâmetros os índices que limitam o 
espaço do vetor a ser pesquisado. A função devolve o índice do elemento em que foi encon-
trado o valor buscado ou, no caso de não encontrá-lo, o valor -1 (supondo que esse índice 
não seja utilizado no vetor original).
Edelweiss_15.indd 429Edelweiss_15.indd 429 12/03/14 09:0012/03/14 09:00
Encerra aqui o trecho do livro disponibilizado para 
esta Unidade de Aprendizagem. Na Biblioteca Virtual 
da Instituição, você encontra a obra na íntegra.

Continue navegando