Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi,...

32
Lógica de Programação e Algoritmos Prof. André Y. Kusumoto [email protected]

Transcript of Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi,...

Page 1: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Lógica de Programação e Algoritmos

Prof. André Y. [email protected]

Page 2: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

LógicaLógica•A lógica de programação é necessária para pessoas que desejam trabalhar com desenvolvimento de sistemas e programas, ela permite definir a seqüência lógica para o desenvolvimento. •Então o que é lógica?

2

Page 3: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Sequência LógicaSequência Lógica•Estes pensamentos podem ser descritos como uma seqüência de instruções, que devem ser seguidas para se cumprir uma determinada tarefa.

3

Page 4: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Raciocínio Lógico• As crianças aprendem facilmente como

adicionar e subtrair valores. • Suas dificuldades começam no

momento em que elas se deparam com problemas e necessitam identificar quais operações trarão soluções para os mesmos.

• Vejamos alguns exercícios de Raciocínio Matemático, que ajudarão a “exercitar” nosso cérebro.

4

Page 5: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

1. Há três suspeitos de um crime: o cozinheiro, a governanta e o mordomo. Sabe-se que o crime foi efetivamente cometido por um ou por mais de um deles, já que podem ter agido individualmente ou não. Sabe-se, ainda que:

A) se o cozinheiro é inocente, então a governanta é culpada;B) ou o mordomo é culpado ou a governanta é culpada, mas não os dois; C) o mordomo não é inocente.Logo:(a)a governanta e o mordomo são os culpados(b)o cozinheiro e o mordomo são os culpados(c) somente a governanta é culpada(d)somente o cozinheiro é inocente(e)somente o mordomo é culpado.

5

Page 6: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

2. Qual o número que completa a sequência: 1, 3, 6, 10, ...

(a) 13(b) 15(c) 12(d) 11(e) 183. Um frasco contém um casal de melgas. As melgas reproduzem-se e o seu número

dobra todos os dias. Em 50 dias o frasco está cheio. Em que dia o frasco esteve meio cheio ?

(a) 25(b) 24(c) 26(d) 49(e) 2

6

Page 7: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

4. Qual o número que completa a sequência: 1, 1, 2, 3, 5, ...

(a)5(b)6(c) 7(d)8(e)95. Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e

13ª pior. Quantas pessoas estavam em competição ?

(a)13(b)25(c) 26(d)27(e)28

7

Page 8: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

6. O preço de um produto foi reduzido em 20% numa liquidação. Qual deverá ser a percentagem de aumento do preço do mesmo produto para que ele volte a ter o preço original ?

(a)15%(b)20%(c) 25%(d)30%(e)40%

8

Page 9: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

7. Três amigos se encontram e como os tempos estão bicudos resolvem ir ao boteco da esquina para partilhar, no beber e no pagar. "São vinte e cinco reais", diz o garçom, chamado depois de muita conversa. Cada um lhe dá uma nota de R$10, ao todo R$ 30. Ele vai ao caixa e traz o troco: cinco notas de R$1. Dá uma nota a cada um e imediatamente um dos rapazes lhe diz para ficar com os R$2,00 restantes. Ao saírem do boteco, um deles observa: "Que engraçado. Eram R$30, uma nota de R$10 de cada um de nós e como recebemos R$1 de troco, gastamos R$9 por cabeça que multiplicados por: 3 resulta em R$27, que somados aos R$2 da gorjeta somam R$29. Cadê o outro R$1?"

9

9 x 3 = 27 + 2 = 299 x 3 = 27 + 2 = 29

Page 10: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

InstruçõesInstruções•Na linguagem comum, entende-se por instruções “um conjunto de regras ou normas definidas para a realização ou emprego de algo”.•Em informática, porém, instrução é a informação que indica a um computador uma ação elementar a executar.•É necessário um conjunto de instruções colocadas em ordem sequencial lógica. •É evidente que essas instruções tem que ser executadas em uma ordem adequada – não se pode descascar as batatas depois de fritá-las.•Dessa maneira, uma instrução tomada em separado não tem muito sentido; para obtermos o resultado, precisamos colocar em prática o conjunto de todas as instruções, na ordem correta.

10

Page 11: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

AlgoritmoAlgoritmo•Um algoritmo é formalmente uma sequência finita de passos que levam a execução de uma tarefa. •Podemos pensar em algoritmo como uma receita, uma sequência de instruções que dão cabo de uma meta específica. Estas tarefas não podem ser redundantes nem subjetivas na sua definição, devem ser claras e precisas.•Como exemplos de algoritmos podemos citar os algoritmos das operações básicas (adição, multiplicação, divisão e subtração) de números reais decimais. •Outros exemplos seriam os manuais de aparelhos eletrônicos.

11

Page 12: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

ProgramasProgramas•Os programas de computadores nada mais são do que algoritmos escritos numa linguagem de computador (Pascal, C, Cobol, Fortran, Visual Basic, Java, PHP, entre outras) e que são interpretados e executados por uma máquina, no caso um computador. •Notem que dada esta interpretação rigorosa, um programa é por natureza muito específico e rígido em relação aos algoritmos da vida real.

12

Page 13: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Algoritmizando a LógicaAlgoritmizando a Lógica•É importante ressaltar que qualquer tarefa que siga determinado padrão pode ser descrita por um algoritmo. •Podemos pensar também num algoritmo como um “mecanismo” de transformação de entradas em saídas. Assim, um algoritmo ao ser “executado”, receberá algumas entradas, que serão processadas e nos devolverá algumas saídas.

13

Page 14: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

• Entretanto ao montar um algoritmo, precisamos primeiro dividir o problema apresentado em três fases fundamentais.

Onde temos:• ENTRADA: São os dados de entrada do algoritmo• PROCESSAMENTO: São os procedimentos utilizados para chegar ao resultado final• SAÍDA: São os dados já processados

14

EntradaEntrada ProcessamentoProcessamento SaídaSaída

Page 15: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Por que é importante construir algoritmos?Por que é importante construir algoritmos?•Um algoritmo tem por objetivo representar mais fielmente o raciocínio envolvido na lógica de programação e, dessa forma, permite-nos abstrair de uma série de detalhes computacionais, que podem ser acrescentados mais tarde. •Assim, podemos focalizar nossa atenção naquilo que é importante: a lógica da construção de algoritmos.•Outra importância da construção dos algoritmos é que uma vez concebido uma solução algorítmica para um problema, esta pode ser traduzida para qualquer linguagem de programação.

15

Page 16: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Vamos a um exemplo?Vamos a um exemplo?•Podemos escrever um primeiro algoritmo de exemplo, utilizando português coloquial, que descreva o comportamento na resolução de uma determinada atividade, como, por exemplo, trocar uma lâmpada.

• Pegar uma escada;• Posicionar a escada embaixo da lâmpada queimada;• Buscar uma lâmpada nova;• Subir na escada;• Retirar a lâmpada velha;• Colocar a lâmpada nova.

16

Page 17: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Se a lâmpada não estivesse queimada?Se a lâmpada não estivesse queimada?•Para solucionar essa necessidade, podemos efetuar um teste, a fim de verificar se a lâmpada está ou não queimada. Uma solução para esse novo algoritmo:

• Pegar uma escada;• Posicionar a escada embaixo da lâmpada queimada;• Buscar uma lâmpada nova;• Subir na escada;• Retirar a lâmpada velha;• Colocar a lâmpada nova;• Descer da escada;• Acionar o interruptor• Se a lâmpada não acender, então• Chamar um eletricista.

•Há muitas formas de resolver um problema, afinal cada pessoa pensa e age de maneira diferente. Isso significa que, para esse mesmo problema de troca de lâmpada poderíamos ter diferentes soluções corretas.

17

Page 18: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Pseudocódigo (PORTUGOL)Pseudocódigo (PORTUGOL)•Os algoritmos são descritos em uma linguagem chamada pseudocódigo. •Este nome é uma alusão à posterior implementação em uma linguagem de programação, ou seja, quando formos programar em uma linguagem, por exemplo, JAVA, estaremos gerando código em JAVA. •Por isso os algoritmos são independentes das linguagens de programação. Ao contrário de uma linguagem de programação não existe um formalismo rígido de como deve ser escrito o algoritmo. •O algoritmo deve ser fácil de se interpretar e fácil de codificar. Ou seja, ele deve ser o intermediário entre a linguagem falada e a linguagem de programação.

18

Page 19: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Regras para construção do AlgoritmoRegras para construção do Algoritmo1. Use comentários com frequência Isto torna o algoritmo mais legível e facilita o entendimento da lógica empregada. Seus algoritmos deverão ser lidos e entendidos por outras pessoas (e por você mesmo) de tal forma que possam ser corrigidos e receber manutenção.

Obs: Não se esqueça de atualizar os comentários, em caso de manutenção. Pior do que um programa sem comentários, é um programa com comentários errados.2. Use comentários, também, no cabeçalho do algoritmo, incluindo, principalmente:

• Descrição do que faz o algoritmo• Autor• Data de criação

3. Escolha nomes de variáveis significativos, todavia evite nomes muito longos.• Prefira SalBruto ou SalarioBruto ao invés de SB ou VAR1• Prefira TotAlunosAprovDireta ao invés de TotalAlunosAprovacaoDireta

19

Page 20: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

4. Destaque as palavras-chave das estruturas de controle e comandos com sublinhado.Ex: se media >= 7 então

...senão

...fim-se

5. Utilize espaços e linhas em branco para melhorar a legibilidade. 6. Coloque apenas um comando por linha. Vários comandos em uma linha causa

ilegibilidade e dificulta a depuração.7. Utilize parênteses para aumentar a legibilidade e prevenir-se de erros.

20

Page 21: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

8. Use identação nos comandos de acordo com o nível que estejam, ou seja, alinhe comandos de mesmo nível e desloque comandos de nível inferior.

Ex.:início

comando 1;

se condicao1 então

comando2;

comando3;

senão

comando4;

comando5;

fim-se

comando6;

Fim

21

Page 22: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

Método para desenvolvimento de algoritmosMétodo para desenvolvimento de algoritmos1. Faça uma leitura de todo o problema até o final, a fim de formar a primeira impressão. A seguir, releia o problema e faça anotações sobre os pontos principais.2. Verifique se o problema foi bem entendido. Questione, se preciso, ao autor da especificação sobre suas dúvidas. Releia o problema quantas vezes for preciso para tentar entendê-lo.3. Extraia do problema todas as suas saídas.4. Extraia do problema todas as suas entradas.5. Identifique qual é o processamento principal.

22

Page 23: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

6. Verifique se será necessário algum valor intermediário que auxilie a transformação das entradas em saídas. Esta etapa pode parecer obscura no início, mas com certeza no desenrolar do algoritmo, estes valores aparecerão naturalmente.

7. Teste cada passo do algoritmo, com todos os seus caminhos para verificar se o processamento está gerando os resultados esperados.• Crie valores de teste para submeter ao algoritmo.

8. Reveja o algoritmo, checando as boas normas de criação.

23

Page 24: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

De que maneira representaremos o algoritmo?De que maneira representaremos o algoritmo?•As formas gráficas são mais puras por serem mais fiéis ao raciocínio original•Substitui um grande número de palavras por convenções de desenhos. •Para fins de ilustração mostraremos como ficaria graficamente em um fluxograma tradicional.

O que é um diagrama de bloco ou fluxograma?O que é um diagrama de bloco ou fluxograma?• O diagrama de blocos é uma forma padronizada e eficaz para representar os passos lógicos de um determinado processamento.•Com o diagrama podemos definir uma sequência de símbolos, com significado bem definido, portanto, sua principal função é a de facilitar a visualização dos passos de um processamento.

27

Page 25: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

SimbologiaSimbologia• Existem diversos símbolos em um diagrama de bloco. No decorrer do curso apresentaremos os mais utilizados.Veja alguns dos símbolos que iremos utilizar:

28

Símbolo Significado Descrição

Terminal Início e Fim do fluxo lógico de um algoritmo.

Entrada Manual Entrada manual de dados. Teclado.

Processamento Execução de uma operação ou grupo de operações

Exibição Execução da operação de saída visual de dados.

Page 26: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

SimbologiaSimbologia

29

Símbolo Significado Descrição

Decisão Desvios condicionais para outros pontos do algoritmo de acordo com situações variáveis.

Conector Entrada ou saída em outra parte do diagrama de blocos. Pode ser usado na continuação da execução de decisões.

Page 27: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Introdução à Lógica de Programação

• Dentro do símbolo sempre terá algo escrito, • pois somente os símbolos não nos dizem nada.

30

B1, B2

Média ← (B1+B2)/2

Média >= 7

AprovadoReprovado

Fim

Início

Page 28: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Exercícios

1) Crie uma sequência lógica para tomar banho:

2) Três jesuítas e três canibais precisam atravessar um rio; para tal, dispõem de um barco com capacidade para duas pessoas. Por medida de segurança, não se deve permitir que em alguma margem a quantidade de jesuítas seja inferior à de canibais. Qual a solução para efetuar a travessia em segurança? Escreva um algoritmo mostrando a resposta, indicando as ações que caracterizem a solução deste problema.

3) Elabore um algoritmo que mova três discos de uma Torre de Hanói, que consiste em três hastes (a – b – c), uma das quais serve de suporte para três discos de tamanhos diferentes (1 –2 –3), os menores sobre os maiores. Pode-se mover um disco de cada vez para qualquer haste, contanto que nunca seja colocado um disco maior sobre um menor. O objetivo é transferir os três discos para outra haste.

4) Faça um algoritmo para somar dois números e multiplicar o resultado pelo primeiro número

31

Page 29: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Exercícios

5) Descreva com detalhes a sequência lógica para Trocar um pneu de um carro.

6) Identifique os dados de entrada, processamento e saída no algoritmo abaixo:• Receba código da peça• Receba valor da peça• Receba Quantidade de peças• Calcule o valor total da peça (Quantidade * Valor da peça)• Mostre o código da peça e seu valor total

7) Faça um algoritmo para “Calcular o estoque médio de uma peça”, sendo que:ESTOQUEMÉDIO = (QUANTIDADE MÍNIMA + QUANTIDADE MÁXIMA) /2

32

Page 30: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Exercícios

8) Construa um diagrama de blocos que:• Leia a cotação do dólar• Leia um valor em dólares• Converta esse valor para Real• Mostre o resultado

9) Desenvolva um diagrama que:• Leia 4 (quatro) números• Calcule o quadrado para cada um• Somem todos e• Mostre o resultado

33

Page 31: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Exercícios

10) Construa um algoritmo para pagamento de comissão de vendedores de peças, levando-se em consideração que sua comissão será de 5% do total da venda e que você tem os seguintes dados:

• Identificação do vendedor• Código da peça• Preço unitário da peça• Quantidade vendida.

34

Page 32: Lógica de Programação e Algoritmos - kusumoto.com.br · Num concurso de saltos, Maria foi, simultaneamente, a 13ª melhor e 13ª pior. Quantas pessoas estavam em competição ?

Prof. André Y. Kusumoto – [email protected]

Referências• Algoritmos Estruturados.

FARRER, Harry, BECKER, Christiano G., FARIA, Eduardo C., MATOS, Helton Fábio de, SANTOS, Marcos Augusto dos, MAIA, Miriam Lourenço. Rio de Janeiro: Editora Guanabara, 1989.

• Lógica de Programação – A Construção de Algoritmos e Estruturas de Dados

Forbellone, André Luiz Villar . São Paulo, Prentice Hall, 2005:• Algoritmos e estruturas de dados.

GUIMARÃES, Angelo de Moura, LAGES, Newton A de Castilho. Rio de Janeiro: LTC – Livros Técnicos e Científicos Editora, 1985.

• Programação e lógica com Turbo Pascal.

MECLER, Ian, MAIA, Luiz Paulo. Rio de Paulo Janeiro: Campus, 1989.• Unicamp - Centro de Computação – DSC. Sérgio de Moraes, abril 2000.• Algoritmos.

SALVETTI, Dirceu Douglas, BARBOSA, Lisbete Madsen. São Paulo: Makron Books, 1998.• Concursos Públicos – Raciocínio Lógico.

SILVA, Joselias Santos da. São Paulo: R&A Editora Cursos e Materiais Didáticos, 1999.• Algoritmos e Estruturas de Dados.

WIRTH, Niklaus. Rio de Janeiro: Editora Prentice-Hall do Brasil, 1986.• Sites na Web: http://www.inf.pucrs.br/~egidio/algo1/

35