Você está na página 1de 11

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/258023558

Ferramentas de Auxílio ao Aprendizado de Programação : Um Estudo


Comparativo

Conference Paper · January 2013

CITATION READS

1 726

2 authors:

Márcia Valéria César França


C.E.S.A.R. Universidade Federal Rural de Pernambuco
3 PUBLICATIONS 5 CITATIONS 66 PUBLICATIONS 590 CITATIONS

SEE PROFILE SEE PROFILE

Some of the authors of this publication are also working on these related projects:

Towards a Theory of Motivation and Satisfaction of Software Engineers View project

HASE - Human Aspects in Software Engineering View project

All content following this page was uploaded by César França on 11 August 2015.

The user has requested enhancement of the downloaded file.


Ferramentas de Auxílio ao Aprendizado de Programação:
Um Estudo Comparativo
Márcia Valéria Rocha de Souza, A. César C. França

FAFICA – Faculdade de Filosofia Ciências e Letras de Caruaru


R. Azevedo Coutinho – Petrópolis – Caruaru – PE - CEP 55030-240
marciavr.souza@hotmail.com, cesarfranca@gmail.com
Abstract. Being skilled to make programs requires effort and a good level of
understanding of basic concepts of programming. Therefore, we should make
the process of learning programming easier for beginners. This article aims to
discuss the usefulness of the software tools designed to support programming
learners. We conducted a survey on 9 tools available on the internet regarding
their approach on a set of basic programming concepts. As a result, we
suggest a three level model to enable not only the theoretical comparison
between these types of software, but also the suited adoption according to the
learners characteristics and interests.
Resumo. Estar hábil para programar requer esforços e um bom nível de
compreensão de conceitos básicos por parte dos alunos. É necessário,
portanto, buscar meios que facilite o estudo enquanto iniciantes. O objetivo
deste artigo é refletir sobre a utilidade dos softwares de auxílio ao
aprendizado de programação para estes alunos. Para tanto, conduzimos uma
levantamento dos conceitos de programação abordados em 9 ferramentas
disponíveis na internet. Como resultado deste artigo, sugerimos um modelo de
classificação em três níveis que permite a comparação e a adoção da
ferramenta mais adequada de acordo com as características do estudante.

1. Introdução
Um programa de computador pode ser definido como uma sequencia lógica de
instruções, designadas para solucionar um problema computacional [GOEL 2010]. Um
programador, por sua vez, é um profissional com habilidades em codificar tais
instruções de forma que o computador possa executá-las com êxito. Portanto, as
competências de um bom profissional estão fundamentadas em uma boa assimilação de
conhecimentos de algoritmos, lógica e programação durante os estágios iniciais de seu
aprendizado.
De acordo com o currículo de referência da Sociedade Brasileira de Computação
(SBC), entende-se por Computação ou Informática o corpo de conhecimento a respeito
de computadores, sistemas de computação e suas aplicações, englobando aspectos
teóricos, experimentais, de modelagem e de projeto. Sugerem, ainda, que os cursos
desta área possam ser divididos nos que têm a computação como atividade-fim, como
atividade-meio e nos cursos de Licenciatura em Computação [SBC 2003]. A SBC ainda
afirma que as disciplinas de linguagens de programação, estruturas de dados e análise de
algoritmos são matérias que devem compor o currículo destes cursos e estas seriam
exatamente as mais comentadas em grau de dificuldade entre os alunos que se iniciam
nesses cursos [Mota et al. 2003].
Iniciativas acadêmicas e industriais, algumas das quais serão apresentados ao
longo deste artigo, buscam a solução para este problema através do desenvolvimento de
ferramentas de auxílio ao aprendizado de conceitos básicos de programação. O intuito
explícito destas ferramentas é o de simplificar o aprendizado, mas elas também podem
gerar benefícios periféricos como a divulgação de uma linguagem de programação
específica como o KidsRuby [The Hybrid Group 2011], a diminuição da carga de
trabalho do professor [Almeida et al. 2002], ou o despertar do interesse para as
disciplinas de programação em crianças e jovens como o RobotProg [Physics Software
2005].
Embora estas iniciativas sejam amplamente divulgadas, não é possível encontrar
muito material literário que discuta o conteúdo teórico e/ou metodológico abordado por
tais ferramentas, a profundidade e completude dos conceitos explorados ou a eficácia de
seu uso. O objetivo deste artigo é não somente ressaltar a importância dos softwares
didáticos como ferramenta de apoio aos iniciantes em linguagem de programação, mas
apresentar uma análise comparativa de alguns aplicativos disponíveis sob a perspectiva
dos conceitos de programação explorados. Espera-se que os resultados também possam
contribuir para a tomada de decisões de professores quanto à sua aplicação prática.
O artigo está organizado da seguinte forma: a Seção 2 apresenta as dificuldades
mais comuns dos alunos iniciantes em programação e explora a importância do uso de
softwares como uma ferramenta de apoio ao ensino; a Seção 3 apresenta o método
através do qual o estudo comparativo foi conduzido; as Seções 4 e 5 apresentam os
resultados da pesquisa e discussões acerca dos dados, respectivamente. Finalmente, na
Seção 6 encontram-se as conclusões e perspectivas futuras com relação a este estudo.

2. Revisão Literária
2.1. Dificuldades no aprendizado de programação
É notável que exista uma grande dificuldade em compreender e aplicar conceitos
abstratos de programação por parte dos alunos que frequentam disciplinas introdutórias
nesta área [Lahtinen et al. 2005]. Tais dificuldades podem estar associadas tanto à forma
de ensino quanto à ansiedade do aluno em querer ver os resultados práticos de seus
códigos. Uma das dificuldades dos que querem aprender é na compreensão e na
aplicação de noções básicas para criação de algoritmos.
Almeida et al. [2002] observou que nos cursos que abordam essas disciplinas,
objetivando o ensino de lógica de programação, há uma certa falta de motivação por
parte dos alunos associada à resistência e dificuldade no aprendizado devido a uma forte
carga de conceitos abstratos que permeiam todo o conhecimento em programação.
Gomes, Henriques e Mendes [2008] comentam que o desinteresse pode acontecer por
dificuldades de interpretação ou devido os alunos se sentirem demasiados ansiosos para
começar a codificar sem antes compreender os dados do problema, dificultando a fase
seguinte, a construção do algoritmo, que seria caracterizado pelo déficit de alunos na
capacidade de resolução de problemas.
Os estudantes de disciplinas introdutórias na área da Computação muitas vezes
têm dificuldades de empregar o raciocínio lógico envolvido, o que gera um ambiente
desmotivante, causando uma grande evasão e também grande reprovação na disciplina
[Barros, Delgado e Machion 2004].
Há muitas dificuldades envolvidas na tarefa de desenvolver as habilidades
relacionadas ao aprendizado de uma nova linguagem de programação e de como
resolver problemas a serem resolvidos por um computador [Barros, Delgado e Machion
2004].
Segundo Gomes, Henriques e Mendes [2008], a um nível mais básico, o ensino
das linguagens de programação tem como propósito conseguir que os alunos
desenvolvam as suas capacidades, adquirindo os conhecimentos básicos necessários
para conceber programas capazes de resolver problemas reais simples. Em
compensação para que o estudante possa passar para um nível de entendimento
avançado, faz-se necessário que ele assimile muito bem os conceitos básicos. Sendo
assim, somente após o aprendizado dos conceitos de algoritmos e fundamentos de
lógica, o estudante pode travar contato com uma linguagem de programação concreta
para experimentar os conceitos [Santos e Costa 2006]. Estimular os alunos com aulas
dinâmicas e uso de ferramentas de auxílio podem ser uma solução para ajudar a elevar o
seu nível de compreensão.

2.2. Importância do uso de ferramentas de auxílio


Dada preocupação com a insuficiência em contemplar todos os alunos, Gomes,
Henriques e Mendes [2008] sugerem o desenvolvimento de um sistema de capacidade
de resolução de problemas, baseado numa aproximação construtivista da aprendizagem
(onde o aluno pode aprender fazendo, experimentando e deduzindo, construindo
progressivamente seu próprio conhecimento). Este sistema de aprendizado é estruturado
em três fases: (1) resolução de problemas de diversos domínios não utilizando
algoritmos ou programação, em seguida (2) uma amostra da utilidade da programação
com aplicação dos conhecimentos adquiridos na fase anterior e, finalmente, (3)
passando para a construção dos algoritmos.
O aprendizado de programação eficaz deveria exercitar o aluno gradualmente,
trabalhando as três fases propostas e preparando-o para uma determinada linguagem de
programação. Uma das abordagens mais comuns para enfrentar este problema é o
desenvolvimento de ferramentas computacionais que possam fornecer auxílio ao aluno
na construção da lógica algorítmica e ao professor na organização e ampliação da
capacidade de atendimento aos problemas de aprendizagem [Hostins e Raabe 2007].
Os alunos se interessam mais por uma aula dinâmica e diferenciada, e, segundo
Santos e Costa [2006], o uso de um ambiente lúdico como movimentos em tempo real,
cores e sons enriquecem ainda mais o poder de comunicação. O uso de uma ferramenta
educacional também deixa o aluno livre para ter acesso ao material para estudar em
casa. De fato, o estudo de Lahtinen et al. [2005] envolvendo 500 alunos e professores de
vários países, revela que os alunos de programação sentem que aprendem de forma mais
eficaz em situações de prática.
No entanto, é indubitável que a forma como o aprendizado de programação é
desenvolvido implica na competência do programador profissional, por isso as
disciplinas que se propõe a ensinar lógica de programação devem dispor de ferramentas
confiáveis e que proporcionem uma aprendizagem efetiva.
3. Método
É possível encontrar na literatura diversos tipos de softwares que tem por finalidade
servir de ferramenta de apoio ao aprendizado em programação. Porém, Gomes,
Henriques e Mendes [2008] afirmam que, pelos estudos já efetuados, nenhuma das
ferramentas disponíveis supre completamente as exigências na aprendizagem em
programação. Visto que a problemática, nesta pesquisa, está sendo tratada de forma
menos abrangente, ressaltar-se-ão apenas as características dos softwares de auxílio ao
aprendizado de programação da perspectiva de conceitos fundamentais de lógica,
algoritmos, estruturas de dados e linguagem de programação.
Foram pesquisados em artigos publicados e na internet alguns softwares de
apoio ao aprendizado de programação e estudado nove deles:
 AMBAP: Foi desenvolvido pelo Departamento de Tecnologia da Informação da
Universidade Federal de Alagoas (TCI/UFAL), com o intuito de promover a
interação professor/aluno, constituído com um conjunto de ferramentas que
auxiliam no ensino desde a fase de formulação até a resolução e visualização de
soluções através dos simuladores e que ele seja usado como ferramenta de
suporte para o aluno entender as fases de desenvolvimento de um programa.
Observou-se o aumento motivacional dos alunos nas aulas em laboratório com a
possibilidade de poder escrever e testar os algoritmos diretamente do
computador. Verificou também que o poder de assimilação dos alunos também
aumentou devido à utilização da memória visual compreendendo o significado
dos comandos. Segundo Almeida et al. [2002] espera-se que o aluno assimile o
raciocínio lógico que é exigido de todo bom programador cumprindo uma das
etapas mais importantes dos cursos de computação. O AMBAP não teve
continuação, parou na versão 0.2 e o software não está mais disponível no site da
UFAL, impossibilitando o seu download e instalação.
 Web Portugol: A ferramenta foi criada em 2006 por pesquisadores da
UNIVALI, com o intuito de melhorar os problemas de aprendizagem dos alunos
que iniciam o curso de Ciência da Computação, tendo por principais benefícios,
o verificador de algoritmos e poder ser utilizado através de um navegador
Internet. No estudo de Hostins e Raabe [2007], ela possibilitou aos alunos
ampliar o grau de autonomia durante o desenvolvimento das soluções em
pseudo-linguagem (português estruturado), pois permitia que algum teste com
valores pré-definidos fosse realizado, a exemplo do que muitas vezes faz o
professor em sala de aula. Isso permitiu que os alunos verificassem seu código,
as soluções desenvolvidas e dependendo da resposta, iniciarem a depuração das
suas soluções. É uma ferramenta online gratuita que requer apenas um
preenchimento de cadastro e indicada para os iniciantes trabalharem a lógica.
 VisuAlg: É um aplicativo, desenvolvido pelo programador/analista e professor
universitário Claudio Morgado de Souza, que fornece aos estudantes que se
iniciam nas disciplinas de programação ferramentas para digitar, executar e
depurar o pseudocódigo para resolver problemas propostos nas aulas e em
exercícios, proporcionando também aos professores vários recursos didáticos
para que expliquem como os programas funcionam, tais como: execução passo a
passo, visualização do conteúdo das variáveis, exame da pilha de ativação no
caso de subprogramas, contador de execuções de cada linha do programa, etc
[Souza 2009]. O VisuAlg pode ser executado tanto no modo DOS quanto no
modo padrão e possui uma ferramenta chamada Perfil de Execução que permite
visualizar quantas vezes uma determinada linha de código foi executada. Ele
pode ser utilizado no primeiro dia de aula de programação sem causar muito
impacto, proporcionando uma boa compreensão do funcionamento de um
programa de computador. É gratuito e portátil sendo necessário apenas ter o
arquivo executável da versão mais recente 2.5.
 TBC-AED: Um projeto, desenvolvido por pesquisadores da Universidade
Federal de Lavras/Departamento de Ciências da Computação em Minas Gerais,
que visa analisar os tópicos básicos de programação, englobando conteúdo
teórico sintético e direto, acompanhado de processo gráfico passo a passo,
representando um repositório didático com visualização gráfica [Santos e Costa
2005]. É considerado um material de coleta de informações de algoritmos e
estrutura de dados representando uma experiência profissional por ter sido
desenvolvido para fins de consumo gratuito e direcionado aos estudantes da área
de computação. Promove aumentar a interação computador-aluno incentivando e
despertando a curiosidade e a atenção dos alunos. Preocupados com a
portabilidade, foi desenvolvido com a linguagem de programação Java
possibilitando atingir o público alvo rapidamente. Tem por características ser
autoexplicativo e didático oferecendo uma nova experiência para professores e
alunos. Os mesmos autores observaram que a ferramenta aumentou o ânimo dos
alunos, pois conceitos abstratos passam a ser mais bem visualizados e
compreendidos, melhorando a dinamização do ensino. Entretanto, não possui
opções para os alunos iniciantes por se tratar de um conceito mais avançado de
estrutura de dados como alocação estática, dinâmica e árvores.
 Guido VanRobot: Foi desenvolvido por estudantes de Yorktown High School
em Arlington, Virgínia. Uma ferramenta educacional, gratuita e de código aberto
destinada a ajudar alunos ou quem deseja aprender linguagem de programação.
Pode ser encontrada na internet na versão 4.4 sendo necessário, apenas, realizar
o download em http://gvr.sourceforge.net/download/. Apresenta os conceitos de
forma visual utilizando um robô que é controlado por uma sequência de códigos
escrita pelo usuário, favorecendo o aprendizado de conceitos básicos de
programação.
 Code Monster: Foi desenvolvido pela Empresa Ventures Geeky Inc. situada em
Washington nos Estados Unidos. É uma ferramenta online destinada a crianças e
aos que precisam de uma base de programação dinâmica e divertida. Apresenta
visualmente alguns conceitos iniciais, tais como: parâmetros, variáveis, loops e
funções. Utiliza a linguagem Javascript e prende a atenção dinamicamente
através de animações
 Robot Prog: Desenvolvido por Corinne Queme, um francês, desenvolvedor e
professor de física. É encontrado na rede na versão 1.1, nos idiomas francês e
inglês estando disponível para MacOSX e Windows, sendo necessário, portanto,
apenas efetuar o download. Esta ferramenta educacional trabalha os conceitos
básicos da lógica de programação através de fluxogramas com ações que ao
executar o programa o robô se movimenta. Possui seis estágios onde
gradativamente é colocado ao usuário um novo conceito a ser estudado.
 Kids Ruby: Um ambiente voltado para quem quer aprender a lógica de
programação, tendo como foco crianças e adultos, utilizando a linguagem de
programação dinâmica e simples: o Ruby. Software livre, desenvolvido pelo The
Hybrid Group com sede em Los Angeles nos EUA, pode ser encontrado na
internet e instalado depois de feito o download.
 Fut Code: Desenvolvido pelo NUPESQ- Núcleo de Pesquisa da FAFICA em
Caruaru-PE. É um jogo de futebol virtual onde os jogadores se comportam
conforme o código escrito. Cada programador desenvolve um algoritmo de
táticas que serão seguidas pelos jogadores do jogo utilizando a API do FutCode.
Vence o jogo quem desenvolve o melhor algoritmo contra o time adversário.
Tem a proposta de facilitar o aprendizado em programação através da
visualização dinâmica do comportamento programado pelo aluno, aliado ao
entretenimento dos jogos [Pereira, Diniz e França 2011]. A linguagem utilizada
é o Java, orientado a objetos, interface gráfica implementada com a biblioteca
Java 2D.
Por razões de limitação de tempo, ficaram de fora deste artigo a avaliação de alguns
outros softwares conhecidos como, por exemplo, o Alice e o RoboMind. No entanto,
desdobramentos futuros deste trabalho deverão incluir estes outros aplicativos na
análise.
Em seguida, foi feito um mapeamento das características básicas de plataforma,
idioma, licença, preço e forma de interação (visual ou textual) adotada pela ferramenta.
Por fim, conduzimos uma verificação segundo conceitos básicos de programação
abordados pela ferramenta, incluindo: paradigma de programação, linguagem utilizada,
compilação, alocação de memória, alocação vetorial, tipos de dados abstratos, operações
aritméticas e lógicas, estruturas de controle de fluxo (if/else, while, etc.), funções,
recursão e depuração. Outros conceitos foram adicionados na categoria “outros
conceitos avançados".

4. Resultados
As Tabelas 1, 2 e 3 sumarizam as informações levantadas nesta pesquisa. O único
software, dos nove escolhidos, que não pudemos avaliar foi o AMBAP pois seu
download não estava mais disponível. Além disto, todos os avaliados são de plataforma
acessível e gratuita, sendo necessário apenas ter o JVM instalado na máquina para o
funcionamento do FutCode e do TBC-AED.
Tabela 1 - Características gerais das ferramentas avaliadas
Idioma Licença Preço
CodeMonster Inglês Freeware Grátis
FutCode Portugês Open Source Grátis
Guido VanRobot Inglês, Francês, Espanhol Open Source Grátis
KidsRuby Inglês, Francês, Espanhol Open Source Grátis
RobotProg Inglês e Francês Freeware Grátis
TBC-AED Português Freeware Grátis
Visual Alg Português Freeware Grátis
Web Portugol Português Open Source Grátis
Em relação aos Paradigmas de Programação destacamos o FutCode e o CodeMonster
como Orientado a Objetos e os demais de paradigmas Imperativo. A interação foi
classificada em textual, visual ou as duas opções e observamos que todas elas trabalham
com os conceitos básicos de programação, porém, o GuidoVanRobot é o único que não
aloca variáveis.
Tabela 2 - Características técnicas das ferramentas avaliadas
Plataforma Forma de Paradigma de Linguagem de
Interação Programação Programação
CodeMonster Web Textual e Visual Orient. a Objetos JavaScript
FutCode Java Textual e Visual Orient. a Objetos Java
Guido Windows, Textual e Visual Imperativa Própria
VanRobot Linux e
MacOS X
KidsRuby Windows, Textual e Visual Imperativa Ruby
Linux e
MacOS X
RobotProg Windows e Imperativa Própria
MacOS X
TBC-AED Web Visual Imperativa Própria
Visual Alg Windows Textual Imperativa Própria
Web Portugol Web Textual Imperativa Própria

Tabela 3 – Conceitos trabalhados nas ferramentas avaliadas


Alocação de
Compilação

Controle de
Aritméticas

Depuração
(variáveis)

Operações

Operações

Recursão
abstratos
Alocação
memória

Tipos de

passo-a-
Funções
(arrays)

Estr. de
vetorial

Lógicas
dados

passo
fluxo
CodeMonster Não SIM SIM SIM SIM SIM SIM SIM SIM Não
FutCode SIM SIM SIM SIM SIM SIM SIM SIM SIM Não
Guido VanRobot Não Não Não Não Não SIM SIM SIM Não SIM
KidsRuby Não SIM Não Não SIM SIM SIM Não Não Não
RobotProg Não SIM Não Não SIM SIM SIM SIM SIM SIM
TBC-AED Não SIM SIM SIM SIM SIM SIM SIM Não SIM
Visual Alg Não SIM SIM SIM SIM SIM SIM SIM SIM SIM
Web Portugol Não SIM SIM Não SIM SIM SIM Não Não SIM

Tabela 4 – Competências trabalhadas (vide Gomes et al [2008])


(1) resolução de (2) utilidade da (3) construção
problemas de domínios programação dos algoritmos
diversos
CodeMonster Não SIM SIM
FutCode SIM SIM SIM
Guido VanRobot Não Não SIM
KidsRuby Não SIM SIM
RobotProg Não SIM SIM
TBC-AED Não SIM SIM
Visual Alg Não Não SIM
Web Portugol Não Não SIM
Dos softwares selecionados, apenas o FutCode transparece o conceito de compilação, e
todos aplicam operações lógicas e controles de fluxos. Em relação aos conceitos
avançados, o VisuAlg trabalha com comandos aleatórios, eco e auto digitação. O TBC-
AED além de demonstrar o funcionamento de pilhas, também comprova os conceitos de
alocação estática e dinâmica, árvores e teoria dos Grafos. O CodeMonster dedica-se em,
através de códigos, gerar animações. E o KidsRuby, após passar por todos os níveis de
aprendizado, estimula o usuário a desenvolver games. Salientamos, também, a
importância do conhecimento da língua inglesa devido ao fato da metade dos softwares
escolhidos não serem em português e, também, por ter o conhecimento em outro idioma
ser um fator de escolha no mercado profissional.

5. Discussão
O mínimo que se espera de uma ferramenta de auxílio ao aprendizado de programação é
que ela aborde os conceitos de operações lógicas e estruturas de controle de fluxo, e
todas as ferramentas avaliadas atendem a este requisito. No entanto, nenhuma das
ferramentas avaliadas atendem à totalidade dos conceitos avaliados. Em particular, o
conceito de compilação é o menos trabalhado.
No geral, os resultados apresentados levantam as seguintes discussões:
 Apenas metade das ferramentas avaliadas estão disponíveis em Português.
Embora o conhecimento da língua inglesa seja indubitavelmente necessário na
área de programação, o fim específico destas ferramentas é o aprendizado de
programação. Portanto, a língua pode apresentar-se como um empecilho a mais
na adoção de tais ferramentas por programadores iniciantes.
 A maioria das ferramentas avaliadas utilizam linguagens de programação
próprias, isto é, projetadas para o fim específico do aprendizado dos conceitos
trabalhados na própria ferramenta. Isto levanta o questionamento sobre a
limitação destas ferramentas para o desenvolvimento de programadores, embora
este não seja de fato o propósito de algumas delas. Por outro lado, as ferramentas
que trabalham diretamente com alguma linguagem de programação comercial
(ex. Java ou Ruby), dada a sua complexidade inerente, podem encontrar
barreiras de programadores iniciantes.
 O valor do conceito de compilação é subestimado pelas ferramentas de auxílio
ao aprendizado de programação em geral, embora não seja um conceito
complexo. Isso se dá pelo fato das ferramentas tentarem simplificar o
aprendizado diminuindo o caminho entre o código e o resultado do programa
produzido. Este conceito poderia ser trabalhado mesmo que nos níveis mais
avançados das ferramentas, podendo ajudar a desenvolver habilidades de
otimização de código nos programadores. No entanto, não é este o caso das
ferramentas avaliadas.
 No que diz respeito às fases de aprendizado sugeridas por Gomes et al (2008), o
foco das ferramentas de auxílio ao aprendizado de programação é claramente na
fase 3: construção dos algoritmos, o que limita significativamente o
desenvolvimento das competências do programador.
Fundamentando-se nos resultados atingidos até o momento pelo nosso levantamento, é
possível sugerir uma categorização para as ferramentas que identifica o seu nível de
complexidade. Ferramentas nível iniciante são aquelas que focam nos conceitos mais
básicos e simples (operações aritméticas e lógicas, e estruturas de controle), utilizam
prioritariamente uma forma de interação visual, e trabalham apenas a construção de
algoritmos (ex. RobotProg e Guido VanRobot).
Ferramentas de nível intermediário seriam aquelas que trabalham mais
largamente os conceitos de programação (alocação de memória em variáveis e vetores,
tipos de dados abstratos e funções), trabalham com linguagens de programação reais, e
esclarecem a utilidade da programação (ex. CodeMonster e KidsRuby), e nível
avançado aquelas que abordam conceitos como compilação e recursão, e ainda
permitem ao programador iniciante o exercício amplo da solução de problemas em
domínios reais (ex. FutCode).

6. Conclusão
Apresentamos neste artigo, uma forma de contribuir para o aperfeiçoamento do ensino
em programação e compreendemos que ela precisa ser reavaliada. Por se tratar de
disciplinas sistemáticas, complexas e que requer um bom nível de assimilação de
conteúdos lógicos, é necessário que, tanto os alunos quanto os professores, possam
utilizar instrumentos que os ajudem na comunicação. O uso de ferramentas no início do
curso tem mostrado, na literatura, sua produtividade, pois permite que o estudante tenha
o contato com um ambiente de desenvolvimento bem próximo a que vão encontrar em
sua vida profissional. Motivar o estudante para um ambiente lúdico e estimulante que
utiliza de vários conceitos de programação numa abordagem gradual possibilita que eles
ganhem experiências em programação e possam tornar-se bons profissionais no futuro.
Dos softwares que selecionamos para análise observou-se que cada um em
particular trabalha com conceitos, porém, de forma isolada em alguns casos. A
integração de alguns conceitos em um só software aliado ao dinamismo e animação
poderia resultar numa forma de percepção mais clara e estimulante para o usuário.
Por fim, sugerimos um modelo de classificação para este tipo de software
organizado em três níveis: básico, intermediário e avançado. Este modelo pode não
somente habilitar uma comparação mais adequada entre softwares com objetivos mais
semelhantes, mas também habilitar uma adoção mais adequada a estudantes de acordo
com as suas características, interesses e metas de aprendizado.
A próxima etapa deste projeto é levantar requisitos para uma possível mudança
na forma de ensino das disciplinas de Introdução à Computação e Lógica de
Programação de uma instituição de nível superior da área de informação testando um
software e acompanhando os resultados com os alunos do primeiro período e
professores com o objetivo de diminuir as dificuldades dos estudantes iniciantes do
curso.

Referências
Almeida, E. S. ; Costa, E. B. ; Braga, J. D. H. ; Silva, K. ; Paes, R. B. ; Almeida, A.
(2002) “Ambap: Um Ambiente de Apoio ao Aprendizado de Programação”,
http://goo.gl/KSNmG, Dezembro 2012.
Barros, L.N.; Delgado, K. V.; Machion, A. C. G. (2004). “An ITS for programming to
explore practical reasoning”. http://goo.gl/z4f50, Janeiro 2013.
Goel, A. (2010). “Computer Fundamentals”. Pearson Education. ISBN 978-81-317-
3309-7.
Gomes, A., Henriques, J., Mendes, A. J. (2008). “Uma proposta para ajudar alunos com
dificuldades na aprendizagem inicial de programação de computadores”,
http://goo.gl/DGLXh, Dezembro 2012.
Hostins, H. ; Raabe, A. L. A. (2007). “Auxiliando a aprendizagem de algoritmos com a
ferramenta Webportugol”. http://goo.gl/Hwgz0, Dezembro 2012.
Lahtinnen, E.; Ala-Mutka, K.; Järvinen, H. M. (2005) “A study of the difficulties of
novice programmers”. Anais do ITiCSE '05 - 10th annual SIGCSE conference on
Innovation and technology in computer science education. p14-18. ACM New York,
NY, USA. DOI 10.1145/1067445.1067453.
ACM New York, NY, USA ©2005
Mota, M. P., Brito, S. R., Moreira, M. P. and Favero, E. L. (2009) “Ambiente Integrado
à Plataforma Moodle para Apoio ao Desenvolvimento das Habilidades Iniciais de
Programação”, http://goo.gl/dFHKS. Dezembro 2012.
Pereira, V. B. ; Diniz, P. D. B. ; França, A. C. C. (2011). “FutCode: Plataforma para
Aprendizado Interativo de Programação em Java.” http://goo.gl/KDok0. Janeiro
2013.
Physics Software (2005). “RobotProg”. Disponível em <http://goo.gl/xE0rp>. Acessado
em: Janeiro 2013.
Santos, R. P.; Costa, H. A. X. (2005). “TBC-AED: Um Software Gráfico para
Apresentação de Algoritmos e Estruturas de Dados aos Iniciantes em Computação e
Informática.” http://goo.gl/2XEuJ, Dezembro 2012.
Santos, R. P. ; Costa, H. A. X. (2006). “Análise de Metodologias e Ambientes de
Ensino para Algoritmos, Estruturas de Dados e Programação aos Iniciantes em
Computação e Informática.” http://goo.gl/RcCjk, Dezembro 2012.
SBC - Sociedade Brasileira de Computação (2003). Currículo de Referência da
Sociedade Brasileira de Computação para Cursos de Graduação em Computação e
Informática”. http://www.sbc.org.br. Dezembro 2012.
Souza, C. M. (2009). “VisuAlg - FERRAMENTA de Apoio ao Ensino de
Programação”. http://goo.gl/yIg94, Dezembro 2012.
The Hybrid Group (2011). “KidsRuby”. Disponível em <http://kidsruby.com/>.
Acessado em Janeiro 2013.

View publication stats

Você também pode gostar