Você está na página 1de 11

Uma proposta para ajudar alunos com dificuldades na aprendizagem inicial de

programao de computadores
ANABELA GOMES
Instituto Superior de Engenharia de Coimbra; Centro de Informtica e Sistemas da Universidade de Coimbra,
anabela@isec.pt
JOANA HENRIQUES
Centro de Informtica e Sistemas da Universidade de Coimbra,
joanahenriques33@hotmail.com
ANTNIO JOS MENDES
Centro de Informtica e Sistemas da Universidade de Coimbra,
toze@dei.uc.pt

Resumo: Os elevados nveis de insucesso em disciplinas onde so ensinados os


conceitos mais bsicos de programao, em qualquer grau e sistema de ensino, um
problema universal que tem sido alvo de variadas pesquisas, resultando tambm em
diversificados sistemas, sem que contudo o panorama tenha melhorado
significativamente. Na nossa ptica existe um conjunto de razes que esto na
origem do problema, nomeadamente, mtodos de ensino e aprendizagem
desadequados, falta de vrios tipos de competncias por parte dos alunos, em
particular no que respeita resoluo de problemas, a difcil natureza do tema e uma
forte conotao negativa que lhe est associada. Porm, pensamos que as
metodologias tradicionalmente utilizadas para aprender/ensinar estes assuntos no se
revelam suficientes, pelo que apresentada uma nova proposta, centrada na
actividade de resoluo de problemas, de acordo com o nvel cognitivo do aluno e os
seus estilos preferenciais de aprendizagem.
Palavras-chave: Ensino e Aprendizagem
Aprendizagem, Psicologia da Programao.

da

Programao,

Estilos

de

1. INTRODUO
No seu nvel mais elevado de proficincia a programao muito mais
do que a escrita de um conjunto de linhas de cdigo numa dada linguagem,
uma arte e uma cincia. Arte porque existem muitas maneiras diferentes de
codificar instrues, com alguma criatividade. tambm uma cincia,
porque constituda por um conjunto de regras orientadoras, porque
necessrio o uso de lgica e porque existem alguns mtodos rigorosos de
programao que asseguram a eficincia, economia e utilidade dos
programas gerados.
A um nvel mais bsico, o ensino das linguagens de programao tem
como propsito conseguir que os alunos desenvolvam as suas capacidades,
adquirindo os conhecimentos bsicos necessrios para conceber programas
capazes de resolver problemas reais simples. Porm, a este nvel, existem

93

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

enormes taxas de insucesso nas disciplinas de programao onde estes


aspectos bsicos so ensinados. A experincia tem demonstrado que existe,
em termos gerais, uma grande dificuldade em compreender e aplicar certos
conceitos abstractos de programao, por parte de uma percentagem
significativa dos alunos que frequentam disciplinas introdutrias nesta rea.
Uma das grandes dificuldades reside precisamente na compreenso e, em
particular, na aplicao de noes bsicas, como as estruturas de controlo,
para a criao de algoritmos que resolvam problemas concretos.
Existem opinies variadas e por vezes divergentes no que respeita s
causas para tal insucesso, em funo das quais tm surgido diferentes
ferramentas com o propsito de minimizar essas dificuldades. Embora a
avaliao da utilizao dessas ferramentas frequentemente mostre impactos
positivos no desempenho de alguns estudantes, as taxas de evaso e
repetncia em disciplinas de programao continuam elevadas.
Neste artigo so discutidas vrias causas apresentadas na literatura, que
contribuem para o insucesso do ensino/aprendizagem de programao,
problemtica que nos tem levado a reflectir sobre uma srie de questes que
tambm apresentaremos. Ser igualmente apresentada uma nova proposta
que pretende contribuir para minimizar este problema.
2. OS PROBLEMAS DE APRENDIZAGEM DE PROGRAMAO NA
LITERATURA

A literatura apresenta diversas justificaes para a dificuldade inerente


ao aprender a programar. Dijkstra (1989) argumenta que este tipo de
aprendizagem um processo lento e gradual. Almeida et al. (2002) referem
que se observa, neste tipo de matrias, falta de interesse por parte dos alunos.
Referem adicionalmente que esta desmotivao est associada a uma forte
carga de conceitos abstractos que intervm em todo o conhecimento
envolvido na actividade de programao, onde as caractersticas prprias das
linguagens e ambiente de programao, cada vez mais sofisticados e da
mquina em si, tendem a dificultar a programao. Tambm Motil e Epstein
(2000) afirmam que a maioria das linguagens de programao utilizadas nas
disciplinas introdutrias apresenta uma sintaxe grande e complexa, mais
adequada para ambientes de desenvolvimento industrial.

ISSN 1646-933X

De acordo com Dijkstra (1989) e Perkins et al. (1988) a aprendizagem


de programao requer um treino intensivo em resoluo de problemas,
envolvendo competncias de diversas reas para obter um pequeno retorno.
Os autores afirmam ainda que, em simultneo, se exige uma preciso e
ateno a detalhes muito mais elevada do que a requerida pela maioria das
outras disciplinas. Porm, autores como Byrne e Lyons (2001) referem que
no h nada inerentemente difcil no assunto mas, simplesmente, existem
alunos que no tm as aptides necessrias para programar, nomeadamente
de resoluo de problemas e de matemtica. Igual opinio manifestada em
Jnior e Rapkiewicz (2004, 2005).
Jenkins (2002) refere vrias causas do insucesso generalizado em
disciplinas de programao, como sejam o baixo nvel de abstraco, a falta
de competncias de resoluo de problemas, a inadequao dos mtodos
pedaggicos aos estilos de aprendizagem dos alunos, referindo ainda que as
linguagens de programao possuem sintaxes adequadas para profissionais
mas no para aprendizes inexperientes.
Sloane e Linn (1988) referem que algumas das capacidades exigidas so
bvias, considerando como essenciais a capacidade de resoluo de
problemas e alguma ideia da matemtica subjacente ao processo. Consideram
tambm que um programador dever ser capaz de usar o computador
eficientemente, tem de saber criar um programa num ficheiro, compil-lo e
encontrar os resultados gerados. O programa produzido dever ento ser
testado, os bugs encontrados e corrigidos. Porm, segundo estes autores,
estas so as competncias fceis de identificar. Consideram tambm que
existem competncias menos bvias, classificadas como competncias de
vida. Os mesmos autores referem ainda que programar no consiste apenas
numa nica capacidade, no se trata apenas de um conjunto de aptides mas
antes de uma hierarquia de aptides e um programador necessitar de muitas
delas em algum momento da sua vida.
Bereiter e Ng (1991) referem que um aluno que se depare com a
aprendizagem de uma hierarquia de competncias, geralmente comea pelas
de mais baixo nvel progredindo gradualmente at s mais exigentes. Os
autores concretizam que, no caso da codificao (uma pequena parte de uma
competncia de programao) implica que os alunos aprendam a sintaxe
bsica e gradualmente aprendam a semntica, estrutura e finalmente o estilo.

94

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

O que sugere que aprender a programar um processo que exige tempo e


maturidade.
Jenkins (2002) argumenta que a programao normalmente ensinada
como assuntos fundamental no incio de um curso superior, sendo esse um
momento de transio e muitas dificuldades/novidades, pois muitas vezes a
transio para a universidade implica pela primeira vez uma vida autnoma,
independente e longe dos familiares. Este autor considera que a programao
por si uma matria difcil quando os alunos esto estveis, sendo a situao
agravada num perodo de transio.
O mesmo autor refere-se tambm falta de motivao devido imagem
negativa apresentada pelos programadores. Existe a imagem pblica de um
programador como um desadequado social, o que faz com que seja pouco
provvel que os alunos aspirem a uma imagem deste tipo. Outros autores
referem que a generalidade dos alunos no tm motivao intrnseca para
estudar estes assuntos e sem este tipo de motivao dificilmente sero bem
sucedidos (Bereiter e Ng, 1991).
Por seu lado, Dunican (2002) afirma que os problemas verificados com
os alunos de programao Irlandeses so o produto dos sistemas educativos
(primrios e secundrios) sem mdulos de resoluo de problemas ou lgica,
em qualquer uma das suas disciplinas. Em segundo lugar, estes autores
afirmam que outro grande problema se prende com a natureza abstracta da
tarefa de programar. Noes como variveis, tipos de dados, memria
dinmica, entre outros, no tm correspondncia na vida do dia-a-dia, e
compreender estes conceitos fundamentais de programao no simples.
Em terceiro lugar, as exigncias rgidas em termos de sintaxe quando
comparada com a natureza inexacta e livre da lngua inglesa faz com que
muitos alunos no sejam capazes de escrever programas compilveis bem
sucedidos.
3. OS PROBLEMAS DE APRENDIZAGEM DE PROGRAMAO - A NOSSA
PERSPECTIVA
Na nossa perspectiva existe um conjunto de factores que complicam a
difcil tarefa de aprender a programar, relacionados com os mtodos de
ensino, os mtodos de estudo e a natureza especfica do tipo de matria.

ISSN 1646-933X

Relativamente aos mtodos de ensino, na prtica ainda no existe um


verdadeiro ensino centrado no aluno. Os tempos lectivos continuam a ser
demasiado apertados e as turmas demasiado grandes para promover um
ensino personalizado, com um feedback e superviso adequados s
necessidades de cada aluno. Adicionalmente, muitos professores continuam a
achar que o ensino superior no necessita de pedagogia e que os alunos tm
obrigao de se adaptar ao estilo de cada professor. Frequentemente, os
professores esquecem-se de diversificar as suas estratgias de forma a
contemplar a grande diversidade de pensamentos, compreenses, ritmos e
estilos de aprendizagem existentes em cada turma.
A natureza especfica da programao, substancialmente diferente do da
maioria das disciplinas, implica o ensino de muitos conceitos dinmicos que
, normalmente, realizado atravs de materiais de natureza esttica
(apresentaes projectadas, explicaes verbais, diagramas, desenhos no
quadro, textos, e assim por diante) no promovendo uma plena compreenso
da dinmica envolvida. Tambm a estrutura curricular das disciplinas de
programao est na nossa ptica virada ao contrrio, seguindo uma
aproximao bottom-up quando pensamos que o ideal seria uma abordagem
top-down. prtica comum comear por ensinar os detalhes sintcticos de
uma linguagem de programao, qualquer que ela seja, antes que os alunos,
percebam qual a finalidade e utilidade de aprender programao. Pensamos
que a preocupao principal deveria ser antes de mais o desenvolvimento da
capacidade de resoluo de problemas, aparecendo a linguagem de
programao apenas como um veculo para concretizar essa resoluo, ou
seja, para expressar o algoritmo ou estratgia de resoluo.
Relativamente aos mtodos de estudo adoptados pelos alunos so
tambm desejveis diversas mudanas. Os alunos esto frequentemente
habituados a disciplinas s quais possvel ser bem sucedido atravs de
abordagens de estudo baseadas em leituras sucessivas, memorizao de
frmulas e uma certa mecanizao de procedimentos. Porm, a programao
impe um estudo bastante diferente, exigindo prtica intensiva, uma
verdadeira compreenso dos assuntos e reflexo. Adquirir competncias
necessrias para programar envolve para alm do conhecimento do domnio
da programao, um bom background de conhecimentos matemticos e de
resoluo de problemas. Assistir s aulas e estudar um livro de texto no o
suficiente. Programar exige um intenso trabalho extra aulas. Aos alunos falta
95

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

muitas vezes a persistncia exigida por problemas cuja soluo no se


encontra normalmente de forma simples e rpida, como acontece com a
maioria dos problemas de programao. precisamente o conhecimento
adquirido na procura de uma resoluo difcil, que permite desenvolver
estruturas cognitivas valiosssimas neste domnio.
Porm, pensamos que os problemas de muitos alunos se prendem com
um conjunto de dificuldades concretas que levam a que no consigam
programar, mesmo quando se esforam. A primeira dificuldade,
frequentemente no percebida pelos alunos, diz respeito compreenso do
problema, pois muitas vezes os alunos saltam para a fase de codificao,
sem compreenderem completamente o que pretendido. Tal pode acontecer
por dificuldades de interpretao ou devido aos alunos se sentirem
demasiado ansiosos para comear a codificar uma soluo. importante que
os alunos compreendam completamente os dados do problema e o que
esperado obter como resultado, para que posteriormente possam pensar no
algoritmo necessrio para essa transformao. No entanto, as grandes
dificuldades sentidas pelos alunos so geralmente verificadas na fase
seguinte, a construo do algoritmo, o que na nossa opinio
fundamentalmente devido a um dfice de capacidade de resoluo de
problemas manifestado por muitos alunos. Se a resoluo de problemas
genricos j implica competncias referidas nos ltimos patamares da
Taxonomia de Bloom (Bloom, 1956), a resoluo de problemas de
programao exige ainda vrias outras competncias, algumas das quais tm
de estar activas simultaneamente. Associada a esta questo est tambm um
elevado dfice de conhecimentos matemticos bsicos manifestado por
muitos alunos. Gomes et al. (2006) conduziram algumas experincias a fim
de encontrar correlaes entre a falta de conhecimentos matemticos e a
carncia de competncias de programao. Nesta experincia os autores
concluram que os alunos com problemas em aprender a programar
apresentavam dificuldades profundas em diversas reas, tais como clculo
bsico e teoria de nmeros ou conceitos geomtricos e trigonomtricos
simples. Os autores relatam tambm dificuldades em relacionar a descrio
textual de um problema com a frmula matemtica que o resolve. Limitaes
ao nvel da abstraco e do raciocnio lgico foram tambm identificadas.
Todos estes problemas levam a que os alunos inexperientes apresentem

ISSN 1646-933X

dificuldades em aplicar conceitos bsicos, como estruturas de controlo, para


resolver problemas reais, numa fase inicial de aprendizagem de programao.
Outro aspecto importantssimo, corresponde ltima etapa da
programao, muitas vezes negligenciada pelos alunos, o teste e reflexo
sobre o problema e sua soluo. Geralmente os alunos, no fazem o
teste/simulao da soluo construda ou quando muito fazem-no muito
superficialmente ou apenas para um conjunto reduzido de testes sem
verificao de casos limite. A reflexo acerca da forma de resoluo de
determinado problema, bem como o questionamento sobre novas propostas
de soluo em funo de alteraes no enunciado, constituiria uma maisvalia para a aprendizagem dos alunos se fosse uma prtica habitual.
Por ltimo, tambm consideramos, tal como outros autores j referidos,
a falta de motivao apresentada por muitos alunos como uma preocupao a
no descurar.
4. PROPOSTA
Como resolver ou minimizar cada um dos problemas referidos?
Pensamos que o desenvolvimento e utilizao de um ambiente
computacional com caractersticas inovadoras poder resolver parte dos
problemas focados.
Ao longo dos tempos foram desenvolvidos diversos tipos de sistemas
computacionais de apoio aprendizagem da programao, recorrendo a
representaes visuais/animaes de algoritmos, linguagens de programao
baseadas em cones, Sistemas de Tutores Inteligentes, micromundos de
aprendizagem, entre outros.
O nosso grupo tambm j desenvolveu algumas ferramentas destinadas
a apoiar a aprendizagem bsica de programao nomeadamente o VIP
(Mendes e Mendes, 1988) o SICAS (Gomes e Mendes, 2001), o PROGUIDE
(Areias, 2007), o OOP-ANIM (Esteves e Mendes, 2004) e o SICAS-COL
(Rebelo, 2007). Mas com um conjunto to vasto de alternativas, que segundo
os seus autores representam um contributo valioso para o
ensino/aprendizagem de programao, porque razo que os problemas
subsistem? Porque que essas ferramentas no so amplamente utilizadas

96

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

com resultados satisfatrios? Na realidade, e pelos estudos j efectuados,


parece que nenhuma das ferramentas disponveis supre completamente as
exigncias da aprendizagem de programao. Como pensamos que o
problema principal reside na incapacidade de os alunos resolverem
problemas, ou seja, construrem algoritmos que os resolvam, criou-se uma
aplicao, SICAS (Sistema Interactivo para Construo de Algoritmos e sua
Simulao) (Gomes, 2002), cuja preocupao principal era fornecer um
ambiente onde os alunos no apenas compreendessem as diversas fases de
um algoritmo j concebido, mas sobretudo que permitisse que o aluno
concebesse, testasse, experimentasse, alterasse e corrigisse os seus prprios
algoritmos. Contudo, as avaliaes efectuadas com o SICAS demonstraram
que a abordagem utilizada no suficiente para contemplar todos os alunos.
Por um lado, um ambiente que no promove de igual forma todos os estilos
de aprendizagem, mas antes favorece os alunos marcadamente visuais em
detrimento dos verbais. Por outro lado, constitui uma abordagem til apenas
para aqueles alunos que quando confrontados com o enunciado de um
problema conseguem iniciar a sua resoluo e construir uma primeira
soluo, mesmo que no completamente correcta. Mas, na realidade, existem
muitos alunos com enormes dificuldades que perante o enunciado de um
problema simples nem sequer conseguem chegar a uma primeira proposta de
soluo. Nestes casos o SICAS de pouca utilidade. Assim, a nossa proposta
centra-se em primeiro lugar num ensino personalizado, que adapte as
actividades a cada aluno de acordo com o seu estado cognitivo, ritmo e estilo
de aprendizagem. Um aspecto central do sistema em desenvolvimento
consiste em diagnosticar o estilo de aprendizagem preferencial de cada aluno,
de modo a condicionar a forma de apresentao dos problemas/actividades
em todo o ambiente. Existem diferentes modelos para determinar o estilo de
aprendizagem de um indivduo, nomeadamente The Myers-Briggs Type
Indicator (MBTI) (Myers e McCaulley, 1985), The Kolbs Learning Style
Model (Kolb, 1985), The Felder-Silverman Learning Style Model
(Felder, 1988), entre outros. Porm, temos vindo a fazer diversas
experincias com o The Felder-Silverman Learning Style Model
adoptando o tipo de inqurito nele proposto para diagnosticar os estilos de
aprendizagem dos alunos. A principal razo da escolha deste modelo prendese com o facto de ter sido desenvolvido a pensar em alunos de engenharia,
tambm o nosso pblico-alvo, para alm de possuir um inqurito on-line que

ISSN 1646-933X

facilmente permite caracterizar um indivduo. No entanto, outros modelos


no esto ainda excludos.
Pretende-se ento construir um sistema centrado no desenvolvimento da
capacidade de resoluo de problemas, sendo baseado numa aproximao
construtivista da aprendizagem, onde o aluno aprende fazendo,
experimentando e deduzindo, construindo progressivamente o seu prprio
conhecimento. Uma parte fundamental do ambiente, consiste na
incorporao de vrios tipos de actividades ldicas e jogos lgicos que, de
uma forma atractiva e estimulante, permitam desenvolver a capacidade de
resoluo de problemas nos alunos. A metodologia proposta constituda por
trs fases. A primeira trabalha a resoluo de problemas de diversos
domnios (quebra-cabeas simblicos, quebra-cabeas lgicos, jogos e
charadas, problemas simples de aritmtica e geometria, entre outros) no
tratando directamente de algoritmos ou de programao. Em seguida, e
gradualmente, o sistema mostrar ao aluno a utilidade da programao, com
aplicao dos conhecimentos adquiridos na fase anterior. Finalmente, o
objectivo passa pela construo de algoritmos, pretendendo transformar a
formalizao desenvolvida em procedimentos sistemticos. Gradualmente, os
problemas apresentados ao aluno passaro a exigir solues mais elaboradas,
nas quais cada vez mais estar inerente o acto de explicitar procedimentos.
Cada uma das fases apontadas sempre aplicada de acordo com o estado
actual de conhecimento do aluno e do seu estilo preferencial de
aprendizagem.
4.1. 1 Fase Resoluo de Problemas
Na primeira fase, a grande questo prende-se com o tipo de problemas a
apresentar aos alunos. Ser que qualquer tipo de problema desenvolve as
capacidades pretendidas? Que capacidades, competncias ou funes
cognitivas se pretendem realmente exercitar? De forma a responder a estas
questes pesquisou-se a literatura sobre as competncias necessrias para
resolver problemas de programao. De acordo com diversos autores estas
envolvem, habilidades matemticas, raciocnio analgico, raciocnio
condicional; pensamento procedimental e raciocnio temporal (Pea e
Kurland, 1984) ou raciocnio analtico, raciocnio quantitativo, raciocnio
analgico, raciocnio combinatrio (OCDE, 2003), entre outros. A psicologia

97

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

oferece diversos instrumentos de avaliao para detectar quais as funes


cognitivas ou tipos de competncias/raciocnios que um indivduo tem em
dfice. Adequados faixa etria e competncias necessrias dos alunos em
causa destacam-se as Matrizes Progressivas de Raven (Simes, 1995) e o
PARC (Ribeiro e Almeida, 1999). O PARC, surgiu como complemento
BPRD (Bateria de Provas de Raciocnio Diferencial) (Almeida, 1995) mas
para jovens e jovens adultos incluindo, para alm de provas de raciocnio,
outros processos cognitivos como a compreenso e o pensamento divergente.
No entanto, estamos a iniciar um conjunto de experincias com o ABI
Aptides Bsicas para Informtica (Cruz e Fonseca, 2002). Esta bateria de
exerccios foi concebida especificamente para a avaliao de candidatos ou
de profissionais da rea de informtica. Avalia a compreenso verbal (prova
de compreenso verbal do tipo "sinnimos"), a compreenso de problemas e
de conceitos matemticos (avalia a capacidade do sujeito para manipular
smbolos matemticos e para resolver problemas numricos), a ateno e
resistncia monotonia (avalia a ateno concentrada, mediante uma tarefa
de deteco de erros num determinado contexto), o raciocnio lgico (prova
de raciocnio em que os sujeitos devem encontrar, nas solues possveis, o
nmero que continuaria a srie apresentada), a capacidade de classificao e
de anlise (avalia um aspecto especfico da ateno: a capacidade para
localizar elementos que esto misturados com outros e assinalar o cdigo
correspondente) e a capacidade de organizao de fases lgicas, tambm
denominada de prova de diagramas (avalia a capacidade para analisar um
problema e para organizar solues numa srie de etapas lgicas).
Adicionalmente tambm se pretende aplicar Testes de auto-estima e
motivao. A sua pertinncia justifica-se dado que os alunos com
dificuldades escolares tendem a ter uma imagem pessoal menos positiva,
pouco favorvel aprendizagem e desempenho. Logo, ao identificarmos
dfices desta ordem podemos realizar treinos cognitivos que visam
proporcionar mudanas no mbito das expectativas e das percepes pessoais
de competncia (Almeida e Balo, 1996 cit in Cruz e Fonseca, 2002),
contribuindo desta forma para potenciar a aprendizagem. A motivao um
factor que no pode, de forma alguma, ser esquecido. fundamental
perceber os sentimentos e imagens dos alunos em relao s suas
capacidades, sua realizao cognitiva e sua aprendizagem. Isto porque
uma auto-estima, auto-conceito e expectativas de eficcia pouco positivas

ISSN 1646-933X

vo ter influncia na motivao, entusiasmo e persistncia do aluno na


realizao das tarefas implementadas no programa.
Pretendemos ainda aplicar inventrios de atitudes e comportamentos
habituais de estudo, como por exemplo o IACHE. Um aspecto relevante para
o sucesso na aprendizagem de programao prende-se com os mtodos de
estudo. Desta forma, pretende-se aplicar um instrumento deste tipo para
perceber o tipo de abordagem da aprendizagem seguido prioritariamente
pelos alunos com dificuldades: profunda (motivao intrnseca), de altorendimento (competio e maximizao do sucesso) ou superficial
(motivao extrnseca, aprendizagem baseada na simples memorizao dos
contedos).
A aplicao de um dado teste cognitivo, permite identificar
determinadas lacunas cognitivas no aluno, aps o que se pretende propor
estratgias/testes para treinar as funes cognitivas em falta. A abordagem do
treino cognitivo uma abordagem do processamento da informao com a
finalidade de compreender as capacidades mentais, de um ponto de vista de
treinabilidade dos processos cognitivos. Existem programas que treinam as
funes cognitivas bsicas e superiores e outros que delimitam o campo de
actuao a processos cognitivos mais especficos. No entanto, alguns autores
defendem que os resultados deste tipo de abordagem s podem ser durveis
se houver um treino ao nvel das metacomponentes (funes executivas, de
ordem superior) e ao nvel das componentes de desempenho (processos de
ordem inferior) (Cruz e Fonseca, 2002). A anlise e aplicao dos diversos
testes referidos tem como intuito aferir o tipo de problemas a incluir no
sistema. A incapacidade demonstrada pelo aluno em resolver um problema
de determinado tipo, sugere a incluso no sistema de actividades de treino
cognitivo que tambm se encontram em elaborao.
4.2. 2 Fase Demonstrao da programao atravs de um jogo
Na segunda fase, pretende-se mostrar aos alunos para que serve e como
se faz um programa. Para tal, ser ilustrado de forma interactiva o
desenvolvimento e implementao de um jogo, procurando utilizar-se o
carcter ldico para gerar um nvel de motivao superior. O jogo escolhido
ser o jogo do galo, por ser um jogo bem conhecido e por ter sido o 1 jogo
computacional. A estratgia de compreenso usada Top-Down, comeando
98

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

pelos conceitos mais gerais de um programa e atravs de um processo de


anlise - por decomposio ou refinamentos sucessivos chegar-se ao detalhe.
Comea-se assim pelo conhecimento do problema, um jogo conhecido do
aluno. O jogo ser ilustrado recorrendo a 3 robots (bonecos animados) com
funes distintas, nomeadamente:
- robot-A- que ir ilustrar o jogo do ponto de vista do jogador.
- robot-B que ir ilustrar a forma lgica (programao) de representao
do jogo.
- robot-C que ir ilustrar a forma fsica (armazenamento interno) de
representao do jogo.
A estratgia geral consiste em introduzir o robot-A que dialogar com o
aluno sobre os diversos elementos constituintes do jogo, as diversas regras a
respeitar, de forma a assegurar uma completa compreenso e correcto
planeamento do jogo. Durante este processo o robot-A utilizar vrias
metforas, recorrendo a animaes que mostram exemplos reais conhecidos
do aluno que lhe facilitem a compreenso de diversos conceitos teis e
permitam mais facilmente fazer a transio para o campo da implementao
(funo do robot-B). ento da responsabilidade do robot-B a explicao de
como fazer certas implementaes a um nvel lgico, nomeadamente quais as
estruturas de programao que permitem representar o tabuleiro, os
jogadores, situao de final de jogo, entre outras. Numa fase final e para um
melhor entendimento das questes computacionais, ser possvel, atravs do
robot-C mostrar a forma como os diversos acontecimentos se processam
internamente (ao nvel da mquina).
Desta maneira, o aluno pode concentrar-se inicialmente na lgica geral
do programa, sem se preocupar com os pormenores sintcticos das instrues
individuais. Este processo de planeamento pode ento ser repetido vrias
vezes, com pormenores de programao adicionados em cada fase.
Cada uma das fases inclui um questionamento permanente, onde so
aplicadas as etapas mencionadas na literatura para uma correcta resoluo de
problemas, a dificuldade gradual de apresentao de situaes de acordo com
a Taxonomia de Bloom, no esquecendo os Estilos de Aprendizagem
preferenciais de cada aluno.

ISSN 1646-933X

4.3. 3 Fase Treino de programao


A implementao desta fase pode ser conseguida, por exemplo
utilizando o SICAS ou um ambiente similar. O SICAS possibilita,
essencialmente, dois tipos de cenrios: edio/resoluo de problemas e
execuo/simulao de resolues previamente construdas pelo aluno. No
primeiro cenrio, o aluno pode construir algoritmos atravs de representaes
visuais fluxogramas recorrendo a simbologia grfica que representa as
principais estruturas necessrias construo de um algoritmo. No segundo
cenrio, o utilizador pode simular a execuo das resolues construdas,
analisando-as com o detalhe e ritmo desejado.
O SICAS apresenta um conjunto de possibilidades de utilizao
educativa que nos parecem relevantes. Destacamos a possibilidade de os
alunos construrem e simularem os seus prprios algoritmos, analisando os
respectivos resultados e corrigindo aspectos eventualmente menos
conseguidos. Esta uma actividade de grande importncia para a
aprendizagem dos fundamentos da programao, objectivo primeiro do
desenvolvimento deste ambiente. Apesar de ter sido concebido para uma
utilizao independente, este ambiente pode tambm suportar actividades em
contexto de sala de aula, mesmo que o professor pretenda levar a cabo um
conjunto de actividades mais controladas e especficas. O SICAS pode
evidentemente ser utilizado em qualquer outro local, fora do horrio
curricular, no mbito do estudo autnomo fundamental na aprendizagem da
programao.
Outro aspecto importante da utilizao do SICAS reside na
possibilidade de, em utilizao autnoma e sem preocupaes classificativas,
o aluno auto-avaliar os seus conhecimentos atravs da simulao e teste das
suas resolues. Em particular, a possibilidade de verificar que o seu
algoritmo se comporta correctamente com os testes especificados pelo
professor (dados de entrada e resultados esperados) pode apresentar uma
credibilidade superior, conferindo ao aluno um grau de confiana mais
elevado no sistema e nas suas prprias capacidades.
Outro aspecto importante reside na possibilidade de permitir ao
professor criar conjuntos de exerccios resolvidos, constituindo assim mais
um auxiliar para o estudo dos seus alunos. Claro que podem ser utilizadas
diversas abordagens pedaggicas, como seja fornecer resolues correctas,
99

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

incorrectas ou ainda incompletas. Apesar de acharmos que analisar


problemas resolvidos no se traduz inevitavelmente num aumento da
capacidade de solucionar novos problemas, pensamos que pode ser
interessante permitir aos alunos fazer alteraes s solues existentes ou
propor e testar solues alternativas. Tambm a possibilidade de dar aos
alunos algoritmos errados, em especial com o tipo de erros lgicos que o
aluno em causa habitualmente apresenta, e pedir-lhe que procure e corrija
esses erros, pode apresentar um alto valor educativo nesta rea.
Outra caracterstica importante do SICAS a possibilidade de os alunos
compararem algoritmos diferentes para um mesmo problema e verificarem
quando que uns apresentam um desempenho superior aos outros,
interiorizando assim gradualmente tcnicas eficazes de programao. O
ambiente pode tambm ser utilizado numa inverso de papis, podendo ser
pedido ao aluno para indicar o enunciado de um problema cuja resoluo lhe
seja facultada (e que ele pode analisar com o SICAS).
Destacamos ainda a possibilidade de o professor colocar problemas aos
alunos e verificar o seu grau de proficincia atravs da anlise das solues
por eles propostas. De acordo com esta perspectiva, possvel afirmar que o
SICAS permite avaliar e individualizar as actividades desenvolvidas pelos
alunos. Com este conhecimento, o professor pode propor actividades de
acordo com os nveis actuais de conhecimentos de cada aluno, evitando
propor problemas demasiado fceis ou difceis, o que geralmente se traduz
em desmotivao dos alunos. Este aspecto acrescenta um conjunto de valores
importantssimo aos mtodos de ensino tradicionais, na medida em que
possibilita uma actividade de ensino/aprendizagem mais personalizada,
contribuindo para que os alunos possam aprender ao seu prprio ritmo,
aumentando a sua motivao, pois muitas vezes os factores que mais
contribuem para o desinteresse dos alunos nas salas de aula a sua total
incapacidade de acompanhamento dos exerccios que esto a ser abordados.
claro que este objectivo poderia ser atingido por outros meios, mas
pensamos que o SICAS pode proporcionar algum suporte a esta abordagem,
necessariamente mais trabalhosa para o professor.
Prev-se, no entanto, o melhoramento e incluso de novas
funcionalidades, de que se destaca, por exemplo, proporcionar o
desenvolvimento de actividades algortmicas que contemplem no apenas os

ISSN 1646-933X

alunos visuais (atravs de fluxogramas) mas tambm os verbais (atravs de


pseudocodigo).
5. CONCLUSO
Face s dificuldades apresentadas pelos alunos inexperientes em
programao, expomos neste artigo uma proposta que visa contribuir para
ultrapassar parte destas dificuldades, apresentando uma abordagem que:
- Contribua para o aumento da motivao do aluno, atravs de um ambiente
ldico e estimulante, com companheiros/tutores sempre bem dispostos e
muito pacientes.
- Inclua animaes e modelos dinmicos que melhor representem os vrios
conceitos de programao.
- Apresente e proponha actividades de acordo com o estilo de aprendizagem
preferencial de cada aluno e de acordo com o seu ritmo e estado cognitivo.
- Oferea uma abordagem gradual de apresentao da programao
treinando, em primeiro lugar competncias bsicas de resoluo de
problemas, de planeamento de solues e mostrando a utilidade da
programao, deixando para mais tarde os detalhes sintcticos das
linguagens de programao
- Minimize, pelo menos inicialmente, os complexos detalhes sintcticos de
uma linguagem de programao.
- Utilize metforas e exemplos concretos conhecidos do aluno para ajudar a
diminuir a carga abstracta inerentemente associada programao.
- Exiba um ambiente estruturado que assegure metodologias de estudo
correctas que levem reflexo e questionamento permanente.
- Permita um treino intensivo de resoluo de problemas, obrigando o
aluno a seguir todas as etapas para uma correcta resoluo de problemas,
que se resumem compreenso do problema, caracterizao do problema,
representao do problema, soluo do problema e reflexo sobre a soluo
obtida.

100

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

- Permita um treino intensivo de conhecimentos matemticos e lgicos teis


programao.

on Innovation and Technology in Computer Science Education - ITiCSE


2001, United Kingdom, p.49-52.

- Possibilite que os alunos ganhem uma certa experincia em programao,


dando-lhe sugestes para atingir determinadas solues, propondo
actividades diversificadas (programas completos para os alunos analisarem,
programas que contenham erros lgicos habitualmente cometidos pelos
alunos, programas incompletos para completar, entre outras actividades),
apresentando modelos de forma a que os alunos adquiram as melhores
prticas de programao.

CRUZ, V. and FONSECA, C. (2002). Educao Cognitiva e Aprendizagem.


Porto Editora, Porto.

6. REFERNCIAS BIBLIOGRFICAS
ALMEIDA, L. (1995). Bateria de Provas de Raciocnio Diferencial (BPRD).
In L. Almeida, M. Simes & M. Gonalves (ed.), Provas psicolgicas em
Portugal, vol.1, p.19-28. Braga: APPORT.
ALMEIDA, E. S., COSTA, E. B., BRAGA, J. D. H., SILVA, K. S., PAES,
R. B. e ALMEIDA, A. A. M. (2002). AMBAP: Um Ambiente de Apoio
ao Aprendizado de Programao. In X Workshop sobre Educao em
Computao, Florianpolis. Anais do WEI 2002/ SBC2002.
AREIAS, C. (2007). ProGuide: Sistema de acompanhamento na resoluo
de problemas bsicos de programao. Tese de Mestrado em Engenharia
Informtica, Universidade de Coimbra.

CRUZ, M. Aptides Bsicas para Informtica (ABI), Available in


http://www.cegoc.pt/testes/catalogo/testes.asp?Tema=25
DIJKSTRA, Edsger W. (1989). On the Cruelty of Really Teaching
Computing Science. In Communications of ACM, Issue 12, (vol.32),
1398-1404.
DUNICAN, E. (2002). Making The Analogy: Alternative Delivery
Techniques for First Year Programming Courses. In 14th Workshop of
the Psychology of Programming Interest Group, Brunel University, p.8999, In J. Kuljis, L. Baldwin & R. Scoble (Eds).
ESTEVES, M. and MENDES, A. (2004). A Simulation Tool to Help
Learning of Object Oriented Programming Basics. In Proceedings of the
34th ASEE/IEEE Frontiers in Education Conference.
FELDER, R. M. (1988). Learning and Teaching Styles in Engineering
Education. In Journal of Engineering Education, n 7, (vol. 78), 674-681.

BEREITER, C. and NG., E. (1991). Three Levels of Goal Orientation in


Learning. In Journal of the Learning Sciences, n 3, (vol. 1), 243-271.

GOMES, A. e MENDES, A. J. (2001). SICAS: Interactive system for


algorithm development and simulation. In Manuel Ortega y Jos Bravo
(Ed.), Computers and Education in an Interconnected Society, Kluwer
Academic Publishers, p.159-166.

BLOOM, B. S. and KRATHWOHL, D. R. (1956). Taxonomy of Educational


Objectives, Handbook I: Cognitive Domain. Longmans, Green and
Company.

GOMES, A. (2002). Ambiente de suporte aprendizagem de conceitos


bsicos de programao. Tese de Mestrado em Engenharia Informtica,
Faculdade de Cincias e Tecnologia da Universidade de Coimbra.

BRIGGS-MYERS, I. and MCCAULLEY, M. H. (1985). Manual: A Guide to


the Development and Use of the Myers-Briggs Type Indicator. Palo Alto,
CA: Consulting Psychologists Press.

GOMES, A., CARMO, L., BIGOTTE, E. and MENDES, A. J. (2006).


Mathematics and programming problem solving, in Proceedings of 3rd
E-Learning Conference Computer Science Education, Coimbra,
Portugal [CD-ROM].

BYRNE, P. and LYONS, G. (2001). The Effect of Student Attributes on


Success in Programming. In Proceedings of the 6th Annual Conference
101

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

JENKINS, T. (2002). On the difficulty of learning to program. In


Proceedings of 3rd Annual LTSN_ICS Conference (Loughborough
University, United Kingdom, August 27-29, 2002). The Higher Education
Academy, p.53-58.

PERKINS, D. N., SCHWARTZ, S. and SIMMONS, R.; (1988). Instructional


Strategies for the Problems of Novice Programmers. In R. E. Mayer (ed.),
Teaching and Learning Computer Programming, p.153-178. Hillsdale,
NJ: Lawrence Erlbaum Associates.

JNIOR, J. C. R. P. e RAPKIEWICZ, C. E. (2004). O Processo de Ensino e


Aprendizagem de Algoritmos e Programao: Uma Viso Crtica da
Literatura. In III Workshop de Educao em Computao e Informtica
do estado de Minas Gerais (WEIMIG 2004). Belo Horizonte, MG, Brasil.

REBELO, B. (2007). SICAS-COL - Um Sistema Colaborativo para


Aprendizagem Inicial da Programao. Tese de Mestrado em Engenharia
Informtica, Universidade de Coimbra.

JNIOR, J. C. R. P., RAPKIEWICZ, C. E., Delgado, C. e Xexeo, J. A. M.


(2005). Ensino de Algoritmos e Programao: Uma Experincia no
Nvel Mdio. In XIII Workshop de Educao em Computao
(WEI2005). So Leopoldo, RS, Brasil.
KOLB, D. A. (1985). Learning Style Inventory: Technical Manual. McBer
and Company, Boston.
MENDES, A. J. e MENDES, T. (1988). VIP A Tool to VIsualize
programming examples. In Proceedings of Education and Application of
Computer Technology, p.131-140.
Motil, J. and Epstein, D. (2000). JJ: a Language Designed for Beginners
(Less Is More). Available at
http://www.ecs.csun.edu/jmotil/TeachingWithJJ.pdf

RIBEIRO, I. & ALMEIDA, L. (1999). Provas de avaliao da realizao


cognitiva (P. A. R. C.). Iin M. Simes, M. Gonalves & L. Almeida (ed.),
Testes e provas psicolgicas em Portugal, vol.2, p.71-79. Braga:
APPORT/SHO.
Simes, M. (1995). Portuguese standardisation of the Ravens Coloured
Progressive Matrices: An overview of item analyses, reliability, validity
and norming studies. In Proceedings of 3rd European Conference on
Psychological Assessment, Trier, Germany.
SLOANE, K. D. and LINN, M. C. (1988). Instructional Conditions in Pascal
Programming Classes. In R. E. Mayer (ed.), Teaching and Learning
Computer Programming, p.207-235. Hillsdale, NJ: Lawrence Erlbaum
Associates.

Myers, I. B. and McCaulley, M. H. (1985). Manual: A Guide to the


Development and Use of the Myers Briggs Type Indicator. Palo Alto,
CA, Consulting Psychologists Press.
OECD (Organisation for Economic Co-operation and Development).
Learning for tomorrows world. First results from PISA 2003, Paris,
available in http://www.pisa.oecd.org/dataoecd/38/30/33707234.pdf
PEA, R. D. and KURLAND, D. M. (1984). On the Cognitive and
Educational Benefits of Teaching Children Programming: A Critical
Look. New Ideas in Psychology, n 2, p.147-168.

102

Educao, Formao & Tecnologias, vol. 1 (1), Maio 2008

ISSN 1646-933X

Abstract: The high failure rate in introductory programming courses, where basic
programming concepts are taught, is a universal problem that has motivated several
authors to investigate the causes of those difficulties. Several tools have been
proposed to help students learn programming. Although some of these tools have
been reported to have a positive effect in student learning, the problem remains
almost the same.
From our point of view there are several reasons that cause that problem. We
consider that the study and teaching methods are not suitable, the students lack
previous preparation on problem solving. We also consider that the nature of the
subject is complex and that students have lack of motivation in studying for these
subjects.
We think that the traditional methodologies to teach and learn these subjects are not
enough nor appropriate. So we propose a new tool, focused on problem solving,
providing a set of suitable activities according to the students cognitive needs and
knowledge level, also supporting students with different backgrounds and learning
styles.
Key-words: Programming Learning, Learning Styles, Psychology of Programming.

Texto
- Submetido em Fevereiro de 2008
- Aprovado em Maro de 2008

Como citar este texto:


GOMES, A., HENRIQUES, J., MENDES, A. J. (2008). Uma proposta para ajudar
alunos com dificuldades na aprendizagem inicial de programao de
computadores. In Educao, Formao & Tecnoloigias; vol.1(1), pp. 93103. Disponvel em http://eft.educom.pt

103

Você também pode gostar