Sistema de Apoio ao Ensino de Lógica e Algoritmo

Documentos relacionados
Conceitos Básicos. Fundamentos de Programação de Computadores

Disciplina de Algoritmos e Programação

Algo+: um app para o auxílio na aprendizagem de programação

AULA 02. OBJETIVO: Desenvolvimento e solução de Algoritmos. LÓGICA DE PROGRAMAÇÃO

Ensino Técnico Integrado ao Médio

É neste ponto que entra o conceito de lógica de programação.

Introdução a Programação

DEINF - UFMA Especialização em Análise e Projeto de Sistema

PLANO DE ENSINO CURSO: ENGENHARIA CIVIL DISCIPLINA: LABORATÓRIO DE PROGRAMAÇÃO I

RELATO DE EXPERIÊNCIA O DESENVOLVIMENTO DA LÓGICA E ALGORITMO NO ENSINO MÉDIO

CURSO TÉCNICO DE NÍVEL MÉDIO EM INFORMÁTICA - PLANO DE DISCIPLINA 2015 LINGUAGEM DE PROGRAMACAO 1 LP1

Programação de Computadores I Introdução PROFESSORA CINTIA CAETANO

Resolução de Problemas com Computador. Resolução de Problemas com Computador. Resolução de Problemas com Computador

Paradigmas de Linguagens

Manual do Aluno. Universidade Mastermaq Softwares

IDES E PROGRAMAÇÃO. Prof. Dr. Cláudio Fabiano Motta Toledo PAE: Maurício A Dias

- -

Lógica de Programação I

ROTEIRO OPERACIONAL CONTABIL MÓDULO 04

Curso online de Fundamentos em Android. Plano de Estudo

PORTUGOL/PLUS: UMA FERRAMENTA DE APOIO AO ENSINO DE LÓGICA DE PROGRAMAÇÃO BASEADO NO PORTUGOL

Uso Restito da Empresa. universidade.mastermaq.com.br

Algoritmos e Programação

Ferramenta de apoio ao ensino de algoritmos.

Obs.: para realizar estas atividades tenha certeza de que já tenha instalado no sistema operacional o Java JDK e o NetBeans.

INFORMÁTICA APLICADA AULA 02 ALGORITMOS

DISCIPLINA: Programação de Computadores I

BEMATECH LOJA PRACTICO PASSO A PASSO PARA UTILIZAÇÃO AMBIENTE DE CADASTROS

Confira abaixo, um breve passo a passo que lhe ajudará a navegar pelo portal:

Manual MAZK (Professor)

Introdução à Programação

SISTEMA ESPECIALISTA ABORDAGENS POLICIAIS MILITAR DE SANTA CATARINA NA REGIONAL DE BLUMENAU. Elaine Starke. Orientador: Wilson P.

Lógica de Programação. Capítulo 1. Introdução. Lógica de Programação. Forbellone / Eberspacher. Introdução

Interação Humano-Computador Interface e Estilos de Interação PROFESSORA CINTIA CAETANO

Programação I Apresentação

INTRODUÇÃO A PROGRAMAÇÃO

Manual Grupo Módulos INTsys CND. Manual Grupo Módulos. Atualização (Abril/2016)

XVI Encontro de Iniciação à Docência Universidade de Fortaleza 17 a 20 de outubro de 2016

MANUAL DO ALUNO INSTITUTO BÍBLICO DA IGREJA CRISTÃ MARANATA

Introdução à Programação. João Manuel R. S. Tavares

O MICROSOFT OFFICE WORD 2010

MANUAL DO PROFESSOR AMBIENTE VIRTUAL DE APRENDIZAEGEM

Objetos e Estilos de Interação

Carga Horária: 60 h Créditos: 3 Pré-requisito: Não se aplica Professor(a): A definir Matricula: A definir Titulação: A definir

Na seqüência, será aberta uma página de login de acesso ao ambiente de gerenciamento do portal, conforme ilustrado na figura 01, abaixo: Figura 01

Tutorial de utilização do EAD-IBRAV Treinamentos

Plano de Trabalho Docente Ensino Técnico

Sistema PCMalotes Developed by: Bruno Lacerda All copyrights reserveds for Prado Chaves

CADASTRANDO RELATÓRIOS

#Conceituação. Algoritmos. Eliezio Soares

Manual Operacional do Módulo Pleno Web

Cláusula de Confidencialidade

CONHECENDO A PLATAFORMA

Algoritmos e Programação

1. INTRODUÇÃO Motivação

Sumário. 1. Ambiente virtual de aprendizagem (AVA) 6

Plano de Trabalho Docente Ensino Técnico

CURSO DE INFORMÁTICA. Algoritmos. Parte 2. Ricardo José Cabeça de Souza

Introdução a Programação

MINISTÉRIO DA EDUCAÇÃO FUNDAÇÃO UNIVERSIDADE FEDERAL DO PAMPA PRÓ-REITORIA DE GRADUAÇÃO COORDENADORIA DE REGISTROS ACADÊMICOS

Programação de Computadores

ALGORITMOS E TÉCNICAS DE PROGRAMAÇÃO

Tutorial de Acesso ao AVA - Ambiente Virtual de Aprendizagem e-learning Consinco. Agosto 2015, versão 1

Fundamentos do Sistema Operacional Windows AULA 03

AMBIENTE DIDÁTICO GRÁFICO PARA A COMPREENSÃO DE LÓGICA DE PROGRAMAÇÃO. Rodrigo Ferreira da Silva

ALGORITMOS AULA 1. Profª Amanda Gondim

Projeto de Interface Homem- Máquina

Plano de Ensino. Identificação. Curso EngE.INT - Engenharia de Energia. Ênfase. Disciplina B161S - Introdução à Ciência da Computação I

Tutorial de uso do Objeto de Aprendizagem. MÃOS LIMPAS: Higiene para um cuidado seguro

Aula 01 Excel Prof. Claudio Benossi

Introdução a Algoritmos Aula 1

Mapa Mental. Aplicabilidade de Mapa Mental

Coordenação de Estágio Integrado. Instruções para Agendamento de Relatório - Professor

Adilandri Mércio Lobeiro 1. Sara Coelho Silva 2. Clícia Geovana Alves Pereira 3 PÚBLICO-ALVO

DISCIPLINA: MATEMÁTICA DISCRETA

Algoritmos e Linguagem de Programação I

_Orientações Museus integrantes do SISEM-SP

Seja Bem-Vindo! Apresentação

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini /

MINISTÉRIO DA DEFESA EXÉRCITO BRASILEIRO COLÉGIO MILITAR DE BRASÍLIA

Acessando ao espaço do aluno: SISTEMA IDEG

1 Introdução e Conceitos básicos

MANUAL PASSO-A-PASSO DISCIPLINAS ONLINE

Onde Cadastrar Os Dados Da Empresa. Onde Cadastrar Os Dados Da Empresa

Manual do Tutor PIRELLI TYRE CAMPUS

Seguindo... TUTORIAL CADASTRO DE ESTABELECIMENTOS: Ao entrar no aplicativo, o Estabelecimento escolherá a opção: QUERO VENDER CERVEJA

SFA Sistema de Fortalecimento das Aprendizagens - SFA Manual Módulo do Professor Versão 01

PLANO DE APRENDIZAGEM. CH Teórica: 60 Prática: 20 CH Total: 80 Créditos: 04 Pré-requisito(s): Fundamentos de Programação Período: II Ano: 2019.

Fundamentos de Algoritmos (5175/31)

Java Básico. Aula 1 por Thalles Cezar

PLATAFORMA DE APOIO AO TREINAMENTO PARA A OLIMPÍADA BRASILEIRA DE INFORMÁTICA

Centralx Clinic Cloud

Professora Orientadora do Departamento de Ciências Exatas e Engenharias. 4

Aula 08 Introdução à Algoritmos. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Gestão Unificada de Recursos Institucionais GURI

Gestão Unificada de Recursos Institucionais GURI

ESPECIFICAÇÃO DE SOFTWARE

01/08/2011. Introdução Lógica Sequencia lógica Instruções Algoritmos Programas. Lógica. Lógica na programação. Instrução.

Conceitos avançados de programação. Módulo 8 Programação e Sistemas de Informação Gestão e Programação de Sistemas Informáticos

Transcrição:

Sistema de Apoio ao Ensino de Lógica e Algoritmo Eliane Moreira Sá de Souza, MEng eliane@eps.ufsc.br Sociedade Lageana de Educação FACIC Rua Trompowsky, nº265, aptº 701 B CEP: 88015-300 Florianópolis, SC Rudimar Scaranto Dazzi, MSc rudimar@inf.univali.br Universidade do Vale do Itajaí CTMAR -UNIVALI Rua Duarte Schutel, nº 215, aptº504 B- Centro - CEP: 88015-640 Florianópolis, SC RESUMO O sistema apresentado pretende suprir a falta de uma ferramenta que auxilie nas disciplinas de Lógica e Algoritmos, permitindo ao aluno estudar e praticar os assuntos abordados em sala de aula. Os conteúdos estudados nessas disciplinas, como lógica de programação, conceitos, operadores, estruturas, entre outros são apresentados neste sistema. Para o desenvolvimento do SAEL, foi utilizada a metodologia de Análise Essencial, baseada nos pressupostos dos autores Pompilho e Yourdon. O ambiente de programação utilizado para implementação do sistema foi Delphi, em função dos recursos de programação visual e interação na manipulação de objetos apresentados pela linguagem. O artigo apresenta os elementos que levaram à realização do sistema, a modelagem de dados e implementação do sistema; e, por fim, os resultados do sistema ao atingir seus objetivos. PALAVRAS-CHAVE: Informát. s.

1- INTRODUÇÃO Este projeto descreve os itens mais importantes sobre lógica, algoritmos, linguagens formais e compiladores, visando o embasamento necessário para efetivar a construção do sistema de apoio ao ensino de lógica e algoritmos. Por meio da teoria e dos exemplos, o projeto se propõe a ensinar lógica e algoritmos, permitindo, assim, que o usuário obtenha as condições necessárias para montar seu próprio algoritmo. A idéia surgiu da necessidade de uma ferramenta prática e de fácil utilização, a ser utilizada nas aulas de ensino de lógica e algoritmos, dispensando, com isso, o uso de uma linguagem de programação. Em virtude da necessidade de ensinar, no contexto atual, além das formas básicas de desenvolvimento da lógica indispensável para resolução dos problemas computacionalmente, mas, também, a linguagem de programação, aumenta-se desnecessariamente o conjunto de informações a serem assimiladas pelos alunos. Atualmente, o uso de computadores no ensino de algoritmos não é adotado. Dessa forma, surge uma lacuna na didática de ensino, visto a falta de interação entre os alunos e a máquina; é, nesta falha, que atuaria o sistema em questão. O Este projeto descreve os itens mais importantes sobre lógica, algoritmos, linguagens formais e compiladores, visando o embasamento necessário para efetivar a construção do sistema de apoio ao ensino de lógica e algoritmos. Por meio da teoria e dos exemplos, o projeto se propõe a ensinar lógica e algoritmos, permitindo, assim, que o usuário obtenha as condições necessárias para montar seu próprio algoritmo.

A idéia surgiu da necessidade de uma ferramenta prática e de fácil utilização, a ser utilizada nas aulas de ensino de lógica e algoritmos, dispensando, com isso, o uso de uma linguagem de programação. Em virtude da necessidade de ensinar, no contexto atual, além das formas básicas de desenvolvimento da lógica indispensável para resolução dos problemas computacionalmente, mas, também, a linguagem de programação, aumenta-se desnecessariamente o conjunto de informações a serem assimiladas pelos alunos. Atualmente, o uso de computadores no ensino de algoritmos não é adotado. Dessa forma, surge uma lacuna na didática de ensino, visto a falta de interação entre os alunos e a máquina; é, nesta falha, que atuaria o sistema em questão. Este projeto descreve os itens mais importantes sobre lógica, algoritmos, linguagens formais e compiladores, visando o embasamento necessário para efetivar a construção do sistema de apoio ao ensino de lógica e algoritmos. Por meio da teoria e dos exemplos, o projeto se propõe a ensinar lógica e algoritmos, permitindo, assim, que o usuário obtenha as condições necessárias para montar seu próprio algoritmo. A idéia surgiu da necessidade de uma ferramenta prática e de fácil utilização, a ser utilizada nas aulas de ensino de lógica e algoritmos, dispensando, com isso, o uso de uma linguagem de programação. Em virtude da necessidade de ensinar, no contexto atual, além das formas básicas de desenvolvimento da lógica indispensável para resolução dos problemas computacionalmente, mas, também, a linguagem de programação, aumenta-se desnecessariamente o conjunto de informações a serem assimiladas pelos alunos.

Atualmente, o uso de computadores no ensino de algoritmos não é adotado. Dessa forma, surge uma lacuna na didática de ensino, visto a falta de interação entre os alunos e a máquina; é, nesta falha, que atuaria o sistema em questão.. A idéia surgiu da necessidade de uma ferramenta prática e de fácil utilização, a ser utilizada nas aulas de ensino de lógica e algoritmos, dispensando, com isso, o uso de uma linguagem de programação. Em virtude da necessidade de ensinar, no contexto atual, além das formas básicas de desenvolvimento da lógica indispensável para resolução dos problemas computacionalmente, mas, também, a linguagem de programação, aumenta-se desnecessariamente o conjunto de informações a serem assimiladas pelos alunos. Atualmente, o uso de computadores no ensino de algoritmos não é adotado. Dessa forma, surge uma lacuna na didática de ensino, visto a falta de interação entre os alunos e a máquina; é, nesta falha, que atuaria o sistema em questão.

A idéia surgiu da necessidade de uma ferramenta prática e de fácil utilização, a ser utilizada nas aulas de ensino de lógica e algoritmos, dispensando, com isso, o uso de uma linguagem de programação. Em virtude da necessidade de ensinar, no contexto atual, além das formas básicas de desenvolvimento da lógica indispensável para resolução dos problemas computacionalmente, mas, também, a linguagem de programação, aumenta-se desnecessariamente o conjunto de informações a serem assimiladas pelos alunos. Atualmente, o uso de computadores no ensino de algoritmos não é adotado. Dessa forma, surge uma lacuna na didática de ensino, visto a falta de interação entre os alunos e a máquina; é, nesta falha, que atuaria o sistema em questão.. Atualmente, o uso de computadores no ensino de algoritmos não é adotado. Dessa forma, surge uma lacuna na didática de ensino, visto a falta de interação entre os alunos e a máquina; é, nesta falha, que atuaria o sistema em questão.

Atualmente, o uso de computadores no ensino de algoritmos não é adotado. Dessa forma, surge uma lacuna na didática de ensino, visto a falta de interação entre os alunos e a máquina; é, nesta falha, que atuaria o sistema em questão..

Este sistema visa apresentar, de forma textual e exemplificada, o funcionamento de conceitos e técnicas para aprendizagem da lógica de programação por meio do uso de algoritmos. Além de mostrar o funcionamento das principais técnicas de construção de algoritmos, utilizando pseudocódigo e outras representações. Os exercícios interativos testam os conhecimentos do usuário em relação à teoria apresentada até aquele momento, seguindo uma seqüência crescente e ordenada do conteúdo, conforme o avanço na disciplina de algoritmos. Propôs-se um ambiente para a montagem dos algoritmos, seguindo a forma utilizada em sala de aula na disciplina. O intuito é, ao não oferecer dificuldades na utilização do sistema, fazer com que o usuário mantenha sua atenção na lógica do desenvolvimento da solução dos problemas. 2- LÓGICA e ALGORITMOS O conceito de algoritmos e lógica apresenta grande amplitude no domínio de aplicação, pois não está restrito à computação, mas ao universo do ser humano. Lógica pode ser expressa como a arte de pensar de forma a atingir a solução dos problemas. A lógica tem sido definida como a ciência do raciocínio, que vem a ser uma modalidade especial do ato de pensar; a forma na qual obtêm-se conclusões a partir de evidências. É a arte de colocar ordem no pensamento [FOR93,CER79]. Assim a lógica é entendida como sendo o estudo das leis do raciocínio e do modo de aplicálas corretamente na demonstração da verdade [VEN97]. A utilização da lógica na vida do indivíduo é constante, visto que é por meio dela que se obtém a ordenação do pensamento humano [FOR93]. O aprimoramento do raciocínio lógico pode ser efetivado através da elaboração de soluções para problemas do mundo real, objetivando enfatizar a naturalidade à lógica de procedimentos, quer para tarefas computacionais, quer para tarefas não-computacionais, de tal forma a fornecer um alicerce sólido de raciocínio para solução de problemas nos mais diversificados domínios de aplicação.

Algoritmos são seqüências ordenadas de passos que, seguidos conforme o proposto, levam a solução de um problema. Analogamente, pode-se dizer que os algoritmos estão para um programador como uma receita de bolo está para uma cozinheira [FOR93]. Em geral, um algoritmo é feito para resolver um problema da seguinte forma: fixa-se um padrão de comportamento que será seguido, no qual haverá uma norma de execução, para poder-se chegar ao resultado final [FOR93]. A sintaxe e a semântica são aspectos importantes na hora de construir algoritmos. A semântica é o sentido certo que deve ser dado a frase, enquanto a sintaxe é a maneira correta de ser escrita; ela é padrão, caso contrário, não é aceita no algoritmo [GUI85]. Na elaboração de algoritmos de bom nível de qualidade, três fatores norteiam os desenvolvedores: correção, eficiência e facilidade de implementação [WIL95]. Estes fatores exigem um projeto bem determinado, onde se conjugue robustez, sem perder a eficiência, legibilidade e facilidade de execução das ações. Manter esta diretriz quando se trata de solução para problemas complexos exige algum tipo de metodologia que diminua a complexidade do desenvolvimento. O processo de ensino-aprendizagem de lógica tem como o fato deste ser aplicado a vários estilos que são tão individuais como o é uma assinatura, visto que cada indivíduo possui talentos, estilo de vida, estilo de trabalho e características que o diferencia dos demais. A forma distinta de pensar e agir do ser humano determinam soluções diferentes, mas corretas para um mesmo problema. O treinamento em estruturação do raciocínio, leva a soluções bem projetadas e otimizadas, ao mesmo tempo em que capacita o aprendiz a solucionar com maior facilidade, inúmeras classes de problemas.

Assim, o processo ensino-aprendizagem deve primar pelo treinamento intenso em técnicas de decomposição e estruturação de algoritmos, de tal forma que o raciocínio lógico flua com naturalidade na determinação de soluções para problemas apresentados. 3- SAEL O SAEL (Sistema de Apoio ao Ensino de Lógica e Algoritmos)[SOU98] objetiva auxiliar no ensino de lógica e algoritmos, abordando as mais diversas técnicas no ensino destas disciplinas, com uma interface agradável e de fácil compreensão, incluindo exercícios interativos e um ambiente para montagem e testes de algoritmos. Esse sistema foi elaborado em ambiente gráfico e possui uma interface amigável ao usuário, onde basta selecionar botões para obter informações sobre os assuntos cadastrados, exercícios e desenvolver seu próprio algoritmo, independente dos assuntos abordados pelo sistema. A figura 1 apresenta o índice, onde são listados os assuntos disponíveis a serem consultados.

Figura 1- Índice dos Sistema SAEL O SAEL possui um sistema para efetuar cadastro de assuntos (figura 2), aos quais o professor tem total acesso através da utilização de senha especial, sendo permitido a inclusão de novos assuntos ou reformulação dos já cadastrados. Com isso, torna-se uma ferramenta bastante flexível podendo se adaptar a metodologia e as expressões utilizadas pelo professor que a utilizar. Além dos assuntos com seus textos explicativos, é permitido ainda incluir imagens (figuras) e vídeos (animações) para auxiliar as explicações sobre o referido assunto, facilitando, dessa forma, a assimilação dos conteúdos pelo aluno ou usuário. Similar a essa, existe outra tela para cadastrar exercícios, onde o professor pode incluir um exercício com sua respectiva resposta, assim os alunos podem tentar resolvê-lo e, também, verificar uma alternativa de solução correta. Todos esses cadastros são ilimitados, podendo ser incluídos inúmeros textos e exercícios, conforme a necessidade ou disposição do professor.

Figura 2 Tela para incluir os Assuntos A figura 3 mostra como é apresentada, pelo sistema, a consulta de um determinado assunto, que vem acompanhado de um texto explicativo e imagens (figuras) representando o assunto, que estão na parte interior das páginas, mas podem ser ampliadas com um clique sobre elas. Todos esses recursos visam sempre facilitar a compreensão e a melhor fixação dos conteúdos.

Figura 3 Apresentação da teoria a ser estudada A tela apresenta botões que servem como atalho para se deslocar no sistema: ir para o desenvolvedor de algoritmos, voltar para o índice, praticar exercícios e ainda a opções do exercício ilustrado. Dessa pode-se navegar para qualquer outro ponto do sistema através dos ícones apresentados no canto superior esquerdo de forma bastante simples e fácil. O usuário pode praticar melhor os ensinamentos por meio de exercícios previamente cadastrados pelo professor, conforme apresentado na figura 4, com o objetivo de obter melhor fixação dos conteúdos. No princípio é mostrada a lista de assuntos, na qual pode-se escolher o assunto de interesse. Aparece o primeiro exercício cadastrado para aquele assunto, sendo que pode haver vários exercícios para cada assunto. A resposta do exercício só aparece se for solicitada pelo usuário, utilizando o botão Resposta na parte inferior esquerda da tela. O sistema permite ao usuário, também, construir seu algoritmo no desenvolvedor, bastando para isso utilizar o botão Desenvolvedor na parte inferior direita da tela.

Figura 4 Apresenta os exercícios propostos Outra janela do sistema possibilita apresentar ao usuário exercícios interativos para melhorar a assimilação da teoria demonstrada. O desenvolvedor (figura 5) é o ambiente no qual o usuário pode desenvolver seus algoritmos, de forma extremamente fácil e interativa, uma vez que todos os comandos e instruções necessários estão apresentados em ícones localizados na parte superior da tela. Para ativa-los, o aluno deve pressionar um deles para aparecer a pré-sintaxe do mesmo na janela de desenvolvimento. Ao usuário poderá ainda ser apresentada uma caixa de dialogo com um exemplo daquele comando, demonstrando a sintaxe completa e a forma correta de uso. Permitindo, também, salvar o algoritmo criado, compilar esse para verificação de erros ou, ainda, imprimir o algoritmo. O sistema possibilita a compilação do algoritmo, verificando possíveis erros de sintaxe, diante disto o usuário pode corrigir seus erros dessa ordem, assimilando a sintaxe correta naturalmente.

Figura 5 Ambiente para construir os Algoritmos Com o intuito de resolver as principais dúvidas do usuário, o sistema é composto ainda por um completo sistema de ajuda on-line no padrão Windows. Todos os módulos do sistema estão explicados nesse dispositivo de ajuda, facilitando ainda mais aos iniciantes, uma vez que, a qualquer tempo podem acessá-lo para tirar suas dúvidas sobre o funcionamento do SAEL. 4- CONCLUSÃO Por meio da utilização deste sistema, os iniciantes no aprendizado de algoritmos conseguem sair do papel de forma bastante tranqüila e natural. Por essa ser uma ferramenta simples e interativa, atrai, cada vez mais, os seus usuários a aprofundarem seus conhecimentos, seguindo seus passos, caminhando de acordo com a metodologia do professor que cadastrou os assuntos, exercícios e demais itens possíveis a serem utilizados nessa ferramenta. A flexibilidade, disponibilizada no cadastro dos assuntos, permite total liberdade ao professor que deseja utilizar essa como ferramenta de apoio a sua disciplina. Pode-se, inclusive,

editar todo o material de acompanhamento das aulas, deixando esse fazer o papel de livro texto, com a vantagem de permitir simultaneamente a assimilação da teoria e a aplicação prática com a construção dos algoritmos, tudo no mesmo aplicativo. 5- REFERÊNCIAS BIBLIOGRAFICAS [CER79] [FOR93] [GUI85] [SOU98] [VEN97] [WIL95] CERQUEIRA, Luiz Alberto; OLIVA, Alberto. Introdução à Lógica. Rio de Janeiro: Zahar Editores S.A., 1979. FORBELLONE, André Luiz Villar; EBERSPÄCHER, Henri Frederico. Lógica de Programação. São Paulo: Markrom Books, 1993. GUIMARÃES, Ângelo de Moura; LAGES, Newton Alberto de Castilho. Algoritmo e Estrutura de Dados. Rio de Janeiro: LTC - Livros Técnicos e Científicos Editora S.A., 1985. SOUSA, Daniela Cristina. Sistema de Apoio ao Ensino de Lógica e Algoritmo- Monografia de Conclusão de Curso. Itajaí: UNIVALI, 1998. VENANCIO, Cláudio Ferreira. Desenvolvimento de algoritmos: uma nova abordagem. São Paulo: Érica, 1997. WILT, Nicholas. Classical Algorithms in C++ With New Approaches to Sorting, Searching and Selection, 1995.