Você está na página 1de 87

FBIO VINCIUS BINDER

CONCEITOS E FERRAMENTAS PRA APOIAR O ENSINO DE LOGICA DE PROGRAMAO IMPERATIVA

Dissertao apresentada como requisito parcial obteno do grau de Mestre. Curso de Ps-Graduao em Informtica, Setor de Cincias Exatas, Universidade Federal do Paran. Orientador: Alexandre I. Direne

CURITIBA 1999

Ministrio da Educao .

SETOR DE CINCIAS EXATAS

UNIVERSIDADE FEDERAL DO PARAN

PARECER

Ns, abaixo assinados, m e m b r o s da Comisso Examinadora da defesa de Dissertao de Mestrado em Informtica, do aluno Fbio Vincius Binder, avaliamos o trabalho intitulado "Conceitos e Ferramentas para Apoiar o Ensino de Lgica dc Programao Imperativa", cuja defesa foi realizada no dia 14 de abril de 1999. Aps a Avaliao, decidimos pela Aprovao do Candidato.

Curitiba, 14 de abril de 1999.

Prof. Dr. Alexandre Ibrahim Diren Presidente

&-PJ,
roP. Dr 1 . Maria da Graas Volpe N u n e s

M*.
Pix>4VEJfCAurora Trinidad Ramirez Pozo

AGRADECIMENTOS

Ao meu orientador Alexandre, pela seriedade, dedicao e companheirismo. Aos professores que colaboraram para a realizao deste trabalho: Bruno, Patrcia e Francisco. A toda a minha famlia pelo carinho, apoio e compreenso.

iii

SUMRIO
LISTA DE ILUSTRAES VD

RESUMO

Vffl

ABSTRACT

IX

1) INTRODUO
1 . 1 ) 0 ENSINO DE PROGRAMAO DE COMPUTADORES PARA INICIANTES 1.2) VISO RESUMIDA DO SISTEMA ASIMOV 1.3) VANTAGENS INSTRUCIONAIS 1.4) ESQUEMA DA DISSERTAO

1
1 3 6 7

2) SISTEMAS DE APOIO AO ENSINO DE PROGRAMAO PARA INICIANTES


2 . 1 ) DIAGNSTICO AUTOMTICO DE PROGRAMAS DE ALUNOS 2 . 2 ) RESUMO DE ABORDAGENS DE MTODOS DE DIAGNSTICOS 2 . 3 ) SISTEMAS DE ANLISEPS-FIXADA 2.3.1) ANLISE POR "MODEL-ANSWER" 2.3.2) ANLISE POR ESPECIFICAO 2.3.3) ANLISE DE ENTRADA/SALDA 2 . 4 ) SISTEMAS DE ANLISE IN-FIXADA 2.4.1) GREATERP/GIL

9
9 10 11 11 12 15 16 18 19 21 23

2.4.2) BRIDGE 2.4.3) DISCOVER 2 . 5 ) SISTEMAS DE AUTORIA E SHELLS PARA ENSINO/APRENDIZAGEM

3) O SISTEMA ASIMOV
3 . 1 ) PRINCIPAIS CONSIDERAES DE PROJETO 3.1.1) SIMPLICIDADE DA PSEUDO-LINGUAGEM

26
27 27

iv

3.1.2)

GRANULAO DO FEEDBACK :

30 31 33 33 35 37 38 40 41 42 42 43

3.1.3) APRENDIZAGEM BASEADA EM EXEMPLOS 3.2)VISO PANORMICA DO SISTEMA^SMOV. 3.2.1) INTERFACE DO USURIO 3.2.2) A LINGUAGEM DE PROGRAMAO 3.2.3) PROGRAMAO GUIADA 3.3) ARQUITETURA FUNCIN AL 3.3.1) INTERFACE 3.3.2) COMPILADOR 3.3.3) SELETOR DE MODO DE INTERAO 3.3.4) DIAGNOSTICADOR 3 . 3 . 5 ) INTERPRETADOR

4) REPRESENTAO DE CONHECIMENTO E DIAGNSTICO AUTOMTICO


4 . 1 ) A SOLUO DE REFERNCIA DO ASIMOV (MODEL ANSWER) 4.1.1) DESCRIO DA "SOLUO DE REFERNCIA" 4.1.2)CAPACIDADE DE CAPTURAR VARIAES

44
44 45 46 47 49 50 51 56

4 . 2 ) DIAGNSTICO AUTOMTICO 4.2.1) REPRESENTAO DE IDENTIFICADORES DE ERROS INTRA-COMANDOS 4.2.2) REPRESENTAO DE IDENTIFICADORES DE ERROS INTER-COMANDOS 4.2.3) EXEMPLOS DE CENRIO DE USO 4.3) LIMITAES DO SISTEMA ASIMOV

5) A AVALIAO DO ASIMOV
5.1) ENUNCIADOS DA AVALIAO 5.2) FORMAO DOS ESPECIALISTAS 5.3) SOLUES DE REFERNCIAS DOS ESPECIALISTAS 5.4) TESTES COM VARIAES DE PROGRAMAS

57
57 58 59 59

5.5) PONTOS PRINCIPAIS DA AVALIAO

62

6) CONCLUSO E TRABALHOS FUTUROS

63

ANEXO I - FORMATOS DE ARQUIVOS DO SISTEMA ASIMOV.

68

ANEXO D - RESULTADO DO ESTUDO DE IDENTIFICAO DE ERROS EM PROVAS DE ALUNOS INICIANTES 70

ANEXO m - GRADE PRODUZIDO PELO ESPECIALISTA 1

71

ANEXO IV - GRADE PRODUZIDO PELO ESPECIALISTA 2

73

REFERNCIAS BIBLIOGRFICAS

75

vi

LISTA DE ILUSTRAES

FIGURA 1 - CARACTERSTICAS DO ESTERETIPO DE UM PROGRAMADOR PERITO FIGURA 2 - VISUALIZAO DE CLULAS DE MEMRIA NO SISTEMA A S I M O V FIGURA 3 - INTERFACE DO SISTEMA A S I M O V FIGURA 4 - MENSAGEM DE ERRO EMITIDA PELO SISTEMA A S I M O V FIGURA 5 - ARQUITETURA DO SISTEMA A S I M O V FIGURA 6 - GRAFO DE ALTERNATIVAS E DEPENDNCIAS ( G R A D E ) FIGURA 7 - G R A D E DO EXERCCIO SOBRE MDIA ARITMTICA FIGURA 8 - G R A D E DO EXERCCIO SOBRE SOMA FIGURA 9 - ENUNCIADOS PROPOSTOS AOS ESPECIALISTAS FIGURA 10 - SOLUES ESPERADAS E MENSAGENS EMITIDAS

2 4 34 38 39 46 52 55 58 60

vii

RESUMO

Este trabalho apresenta o sistema tutor Asimov que composto de um conjunto de ferramentas utilizadas no apoio ao ensino de programao com linguagens imperativas. Estas ferramentas oferecem um rico ambiente de ensino que pode ser explorado livremente pelo aluno atravs da execuo compassada de sua soluo com visualizao de variveis. O sistema tambm fornece, caso solicitado, apoio tutorial sempre que for cometido algum tipo de erro de lgica. O sistema possui diversas caractersticas flexveis que possibilitam o seu uso em variadas situaes de ensino/aprendizagem, destacando-se a escolha de diversos graus de granulao do feedback tutorial. Sua independncia de domnio permite que um autor altere tanto a sintaxe da linguagem-alvo quanto os enunciados de exerccios propostos para os alunos. Atravs de um modelo que representa a integrao de diversas solues possveis (grafo de alternativas e dependncias - GRADE) o autor pode limitar as solues aceitas como corretas e guiar o aluno durante a resoluo de problemas dentro das variaes desejadas.

viii

ABSTRACT

This work presents the tutoring system Asimov that is composed by a set of tools used to support the learning of programming concepts. The tools offer a rich environment that allows the students to freely explore their own solutions. Alternatively, students can be guided by comparisons with the system's solution, whenever logical errors occur. The system is flexible in several manners, for instance, the teacher or the student can change the granularity of the tutorial feedback. Also, the author can change the target-language syntax being taught as well as insert new exercises with solutions to be proposed to the learner. Author can model solutions through a graph of alternatives and dependencies called GRADE. This technique allows the integration of several solutions in one with a reasonable degree of variation while preventing the student from making mistakes or taking erroneous paths.

ix

1) INTRODUO Este trabalho expressa a concepo, projeto e implementao do sistema tutor Asimov que composto de um conjunto de ferramentas utilizadas no apoio ao ensino de programao com linguagens imperativas. Os principais objetivos deste sistema so: 1) facilitar a aquisio de princpios de programao, disponibilizando um ambiente de explorao livre com compassamento de execuo associado visualizao de clulas de memria e um ambiente guiado; 2) facilitar a aquisio inicial de percia em programao por meio da identificao e explicao de erros de lgica encontrados nos programas de alunos iniciantes e 3) atravs de recursos de autoria e da independncia de domnio, possibilitar a alterao de diversas caractersticas de contedo (como gramtica da linguagem-alvo e enunciados de problemas propostos) e o seu uso em variadas situaes de aprendizagem.

1.1)0 ensino de programao de computadores para iniciantes

Qualquer sistema de computador que tenha como objetivo principal, o apoio ao ensino de programao deve levar em conta que um aluno, para ser considerado apto e capaz de resolver problemas algortmicos de maneira satisfatria, deve adquirir diversas habilidades (figura 1) que podem ser divididas em dois aspectos de programao: princpio e percia (du BOULAY; SOTHCOTT, 1987). O princpio de programao representa o

conhecimento da sintaxe (como um comando deve ser escrito) e da semntica (como um comando funciona) individual dos comandos e da estrutura da linguagem que est sendo estudada. A pericia engloba as habilidades de decomposio de problemas e composio de solues para estes problemas atravs do agrupamento dos comandos da linguagem em uma determinada ordem para formar planos de alto nivel (algoritmos).

As habilidades que um aluno iniciante deve adquirir para poder ser considerado um programador perito esto identificadas na Figura 1 (PIMENTEL; DIRENE, 1998). Este conjunto de caractersticas nos mostra a grande quantidade de conhecimento que um programador deve possuir para poder programar bem. Portanto, no deve ser surpresa para ningum, a dificuldade que alunos iniciantes encontram para assimilar esta aptido. Figura 1 - Caractersticas do esteretipo de um programador perito
Preciso sinttica Preciso semntica Identificao de estruturas principais no programa fonte (busca por palavra-chave) Simulao mental dos estados do computador durante a execuo Catlogo de erros Mapear mentalmente as estruturas do programa Checagem de pr-condies Anlise do problema Integrao dos subproblemas Generalizao da soluo Reutilizao de solues j conhecidas Catlogo de solues

Atualmente, o ensino de programao utilizando linguagens formais imperativas ainda feito com pouco ou nenhum apoio do computador. Na maioria das vezes, quando

existe tal apoio, ele resume-se ao compilador da linguagem que est sendo estudada. Mesmo que este compilador esteja inserido em um ambiente de programao amigvel ele no capaz de guiar o aluno atravs de uma sesso dedicada soluo de um problema. Est claro que um sistema de computador no pode insidir sobre todos os aspectos inerentes ao ensino/aprendizagem de programao, mas ele poderia atenuar as dificuldades do

processo de aprendizagem de programao se utilizado de maneiras variadas, de acordo com cada contexto de ensino. Como a programao no uma maneira natural de expresso textual dos humanos, os alunos sentem enormes dificuldades em escrever, mesmo atravs de uma pseudolinguagem, a soluo para um problema de programao, ainda que j o tenham resolvido mentalmente. Erros em programas de alunos novatos podem ser ocasionados por vrios motivos, entre eles, uso de condicionais ao invs de interao, deficincias totais parciais no entendimento de conceitos de entrada e sada, varivel e processo de atribuio de valores, integrao correta de comandos e finalmente, dificuldade em acompanhar o prprio fluxo de controle do programa (BONAR; SOLOWAY, 1985 & du BOULAY; SOTHCOTT, 1987).

1.2) Viso resumida do sistema Asimov O sistema Asimov foi construdo para apoiar o ensino de programao, ajudando na aquisio tanto de princpio quanto de percia. Ele possui diversas caractersticas flexveis para permitir o uso por diferentes perfis de aluno, de professor e tambm de currculo. A independncia de domnio a principal destas caractersticas e torna o sistema uma shell

para a montagem de sesses para exercitar problemas de programao. O sistema pode ser operado em dois modos: modo livre e modo guiado. No modo livre o aluno tem ao seu dispor um interpretador de programas com compassamento e um visualizador do estado das variveis durante a execuo do programa (Figura 2). No modo guiado, alm das ferramentas acima, ativado o diagnosticador automtico, que procura identificar possveis erros de lgica na soluo do aluno. Figura 2 - Visualizao de clulas de memria no Sistema ASIMOV Asimov AIE - Editoi l. gmm gd Jgei ' MM O f gads* Va&vef A B Tfefefe 4 5 1j :\

Qjftt
\ Editor Incio a := 20 I b := 5 a := a/b i Fim.|

i Enunciado

A aquisio de princpio auxiliada atravs da execuo do algoritmo desenvolvido dentro do prprio sistema. Esta execuo possibilita ao aluno a visualizao das alteraes das clulas de memria que representam as variveis bem como o entendimento do fluxo de controle do programa atravs do compassamento da soluo. Com relao sintaxe da

linguagem, foram simplificadas diversas construes e includos alguns aspectos de facilidade (uso de sinnimos de comandos) para evitar que o aluno fosse desviado do objetivo principal do problema, que a lgica do programa. A percia de programao desenvolvida atravs do monitoramento varivel da soluo do aluno medida em que ele vai digitando o seu programa no sistema. As mensagens de indicao de erros de lgica so apresentadas ao aluno de acordo com sua escolha (ou do professor). Esta flexibilidade chamada de granulao do feedback, indicando o momento em que o sistema deve fornecer apoio tutorial. Este acompanhamento de soluo {model-answer) realizado atravs de um diagnosticador automtico de erros que utiliza uma soluo pr-cadastrada (soluo de referncia) no sistema pelo autor como padro de comparao com a soluo do aluno. O sistema tem a caracterstica de ser uma shell, pois permite a alterao de diversos aspectos, principalmente relacionados com o domnio que se pretende abranger. O professor pode alterar a linguagem que est sendo ensinada, atravs do desenvolvimento de uma nova gramtica (ver Anexo I) para o sistema. Entretanto, o principal aspecto de variao de domnio a possibilidade de fornecer ao aplicativo enunciados de exerccios diferentes e suas respectivas solues para serem apresentados ao alunos que utilizarem o sistema. Maiores detalhes sobre a variao de domnio e representao de solues sero apresentados nos captulos 3 e 4.

1.3) Vantagens instrucionais O ensino de programao uma tarefa bastante complexa, exigindo um grande esforo tanto do professor quanto do aluno. So diversas habilidades a serem alcanadas e um quantidade significativa de conhecimento a ser adquirido. Em uma tentativa para amenizar estas dificuldades, muitos sistemas tutores inteligentes (STI) e micromundos de explorao tem sido desenvolvidos. Os STI para apoio ao ensino de programao concentram-se, principalmente, na tarefa de identificar erros de lgica de um programa (ver cap. 2), atravs de diagnstico automtico. Estes sistemas procuram auxiliar o aluno na aquisio de percia de programao. Entretanto, o uso de um STI isolado no resolve diversos problemas de aprendizagem e entre eles, a aquisio do princpio de programao. Mesmo que o aluno tenha recebido uma instruo sobre sintaxe e semntica de comandos antes de usar o sistema, ele necessita de outros meios didticos para assimilar completamente esta instruo. Os sistemas de micromundos de explorao ao contrrio dos STI, permitem uma utilizao livre do ambiente, ou seja, o aluno tem liberdade em explorar o seu programa, atravs do compassamento de solues e da visualizao de clulas de memria que indicam o estado das variveis em determinado momento. O uso de micromundos de explorao pode oferecer ricas oportunidades de contexto de aprendizagem, principalmente com relao maneira em que um programa funciona.

A ligao entre as fortes caractersticas guiadas de um tutor com a explorao livre em apenas um ambiente de descoberta guiada (WENGER, 1987) pode ser eficaz, j que rene o auxlio a aquisio de principio e pericia em um nico sistema. O sistema Asimov possui tanto o modo de explorao livre, onde o aluno pode digitar a sua soluo e utilizar um compassador de execuo e um visualizador de variveis quanto o modo de explorao guiado, onde mensagens tutoriais so fornecidas pelo diagnosticador automtico caso o aprendiz cometa algum erro de lgica.

1.4) Esquema da dissertao A dissertao foi dividida, contando com esta introduo, em 6 captulos. No captulo 2 so apresentados e analisados alguns sistemas tutores inteligentes para o apoio ao ensino de programao e sistemas de autoria. A primeira parte traz uma breve explicao sobre diagnstico automtico de programas de alunos e o captulo segue, com o estudo de sistemas divididos em duas categorias: sistemas com anlise ps-fixada ou posterior ao evento e com anlise in-fixada, ou durante o evento. A ltima parte do captulo traz uma anlise de alguns sistemas de autoria e shells para a construo de sistemas tutores inteligentes. O sistema Asimov apresentado no captulo 3. So explicadas as consideraes que foram feitas em seu projeto: simplicidade da pseudo-linguagem de programao, uso de granulao de feedbak para contemplar diversos perfis de alunos e ensino de programao baseada em exemplos. O captulo segue com a viso panormica do sistema Asimov, onde

so discutidos os seguintes tpicos: a interface utilizada pelo sistema, com sua diviso em quatro reas de trabalho, a gramtica da linguagem utilizada e uma explicao do funcionamento da programao guiada. A apresentao do sistema finalizada com uma passada pelos cinco componentes de sua arquitetura: interface, compilador, seletor do modo de interao, interpretador e diagnosticador automtico. A representao da soluo de referncia e o funcionamento do diagnstico automtico do sistema so explanados no captulo 4. Primeiro explicado como a soluo de referncia representada atravs de redes semnticas e como esta representao auxilia no processo de capturar variaes em programas de alunos iniciantes. Em seguida, revelado como os identificadores de erros funcionam e so apresentados alguns cenrios de uso do sistema. Ao final do captulo, so identificadas as principais limitaes do sistema Asimov em relao ao diagnstico automtico. No captulo 5, descrita uma avaliao emprica do sistema que foi realizada com dois especialistas na rea de ensino de programao. So apresentados os enunciados dos exerccios propostos, a formao dos especialistas, os modelos de soluo de referncia criados pelos especialistas, a execuo do sistema Asimov baseada nos modelos criados e, por fim, so discutidos os pontos principais desta avaliao. Finalmente, no captulo 6, as principais contribuies do trabalho so enfatizadas e so apontadas algumas direes para possveis trabalhos futuros na rea de apoio ao ensino de programao.

2) SISTEMAS DE APOIO AO ENSINO DE PROGRAMAO PARA INICIANTES

2.1) Diagnstico automtico de programas de alunos. Um dos principais objetivos de um sistema tutorial inteligente para programao apoiar o aluno durante a resoluo de exerccios. Para atingir tal objetivo o sistema deve ter a capacidade de interagir com o aluno, analisando o programa, identificando erros e sugerindo novos rumos. Esta tarefa realizada atravs de um diagnstico automtico do programa do aluno, que uma forma de imitar o comportamento de um tutor humano que analisa o programa e sugere as correes ao aprendiz. O diagnstico automtico pode ser classificado, quanto ao momento de atuao, em dois tipos: ativo e passivo. Um sistema que possua um diagnstico ativo est constantemente monitorando o comportamento do aluno, fornecendo feedback quando necessrio. O diagnstico passivo indica que o sistema deve receber um comando do aluno para iniciar o processo de anlise. Como veremos a seguir, a forma que tem sido mais utilizada nos sistemas tutores recentes o diagnstico ativo, pois este evita que o aluno se desvie demasiadamente de alguma soluo correta. A construo de um sistema de diagnstico automtico no tarefa simples, pois o processo de diagnstico envolve diversos fatores, tais como: os objetivos do problema a ser resolvido, caractersticas internas da linguagem de programao usada, erros mais comuns encontrados, uso de comandos ou estruturas de dados semelhantes e solues corretas mas totalmente diferentes da soluo tomada como referncia. Mesmo levando-se em

10

considerao todos estes fatores, os sistemas atuais no so totalmente precisos, ainda que sejam foradas algumas redues do escopo da linguagem, das classes de erros ou do conjunto de problemas propostos. Como qualquer rea que envolva a representao do conhecimento humano no computador e sua posterior utilizao, a modelagem de um sistema deste tipo requer mtodos avanados e, muitas vezes, complexos. Existem, atualmente, diversas maneiras de se realizar o diagnstico automtico de programas, tais como: comparao com uma ou mais solues de referncia, aplicao de regras de construo corretas e incorretas e pela comparao das entradas e sadas do programa com os resultados esperados.

2.2) Resumo de abordagens de mtodos de diagnsticos As abordagens utilizadas no diagnstico automtico de programas em sistemas tutores inteligentes foram quase sempre baseadas em mtodos de ensino bem especficos. Como existem diversas maneiras de se ensinar a programar, os sistemas tutores j desenvolvidos refletiram esta variedade em sua implementao. Apesar da grande variedade de mtodos, podemos classificar os sistemas tutores para apoio a programao com diagnstico automtico em dois grupos: sistemas com anlise ps-fixad ou posterior ao evento e com anlise in-fixada, ou durante o evento.

11

2.3) Sistemas de anlise ps-fxada Esta categoria apresenta sistemas cujo diagnstico automtico ativado aps o evento, ou seja, aps o aluno terminar de especificar a sua soluo para o problema proposto. Os tipos de anlise utilizados nesta classificao podem ser divididos em: modelcmswer ou anlise por comparao com soluo de referncia, specification-analysis ou anlise por especificao e i/o- analysis ou anlise de entrada/sada.

Anlise por "modej-answef O diagnstico realizado atravs da comparao da soluo apresentada pelo aluno com a soluo do sistema, tambm chamada de soluo de referncia. Um erro encontrado quando as solues forem diferentes aps um determinado nmero de transformaes. As dificuldades com este tipo de diagnstico so a falta de conhecimento dos objetivos do exerccio por parte do sistema e a sua incapacidade em indicar onde os erros esto exatamente e porque eles foram cometidos. Um dos principais representantes desta categoria o sistema Laura (ADAM, A.; LAWRENT, J. 1980), utilizado no apoio ao ensino da linguagem Fortran. Inicialmente o sistema transforma as duas solues em grafos, o que facilita a comparao. Em seguida, os grafos so reduzidos atravs da eliminao de variveis redundantes e da separao de comandos independentes existentes no interior de uma repetio em vrias repeties separadas. O passo final a comparao dos elementos dos dois grafos gerados. Se os

12

grafos no puderem ser comparados, ento existem um ou mais erros na soluo do aluno. Estes erros so informados com base em um conjunto de erros pr-identificados. Se isto no for possvel o sistema simplesmente informa a parte do grafo da soluo do aluno que falhou na comparao e a parte correspondente na soluo de referncia. Apesar deste sistema falhar se a soluo do aluno estiver correta mas diferente da soluo de referncia, ele apresenta uma vantagem significativa: a soluo de referncia representada na prpria linguagem-alvo, o que facilita o uso do sistema pelo professor.

2-.3-21 Anlise por especificao Sistemas cujo diagnstico atua atravs da anlise por especificao so aqueles que possuem uma descrio de alto nvel dos objetivos do problema, sendo capazes de emitir mensagens de erro mais significativas do que os outros sistemas, bem como relacionar os erros encontrados na soluo do aluno com trechos do enunciado do exerccio. O sistema faz uma checagem, verificando se a soluo do aluno est compatvel com a descrio dos objetivos. Os melhores exemplos de sistemas que utilizam este tipo de anlise so: Mycroft (GOLDSTEIN, I. P., 1975), Pudsy (LUKEY, F. J., 1980), Aurac (HASEMER, T, 1983) e Proust (JOHNSON, W. L. ; SOLOWAY, E., 1987). O sistema Mycroft pode detectar e corrigir erros em programas Logo. Devido natureza da linguagem e ao fato dos problemas de programao estarem associados a desenho de linhas, possvel representar a base de conhecimentos como uma srie de propriedades geomtricas. A base de conhecimentos construda com uma linguagem especfica denominada de assertion language (linguagem de assero). Esta linguagem

13

permite a criao de formas complexas baseadas em linhas. Para que o sistema funcione corretamente o aluno deve dividir o seu programa em procedimentos que estejam relacionados com as partes da figura a serem desenhadas. Na fase de diagnstico so levados em considerao para a modelagem dos planos do programa apenas os comandos que alterem a posio da tartaruga (o cursor grfico do ambiente Logo). Se os planos da soluo do aluno no estiverem corretos, o sistema sugere modificaes para que o desenho seja impresso corretamente. Eliminar uma limitada classe de erros de pequenos programas codificados em Pascal o principal objetivo do sistema Pudsy. O sistema divide a soluo do aluno em sub-tarefas, tendo como base um conjunto de sub-tarefas pr cadastradas relacionadas com a descrio do problema e, em seguida, identifica como a informao flui de um trecho de cdigo para o outro. Neste primeiro passo, podem ser identificados erros de redundncia de comandos e uso de nomes de variveis inadequadas. No segundo passo so comparados os valores de variveis ao final das sub-tarefas com a especificao do problema. Se o resultado da comparao for negativo o sistema emite uma mensagem de erro e sugere uma possvel correo atravs de um mtodo de gerar-e-testar. Alguns problemas deste sistema, identificados pelo prprio autor so: falta de flexibilidade e incapacidade em usar o comportamento a partir da execuo do programa. O objetivo do sistema Aurac depurar programas codificados na linguagem imperativa/procedimental Solo para manipulao de bases de dados de relaes e utilizada para ensinar modelagem computacional para programadores novatos. O sistema funciona em trs fases: na primeira so utilizadas 12 regras de produo de erros para a identificao de

14

erros sintticos de alto-nvel; na segunda etapa, segmentos do programa so comparados com uma biblioteca de clichs (trechos de cdigo comuns em programas de iniciantes); na fase final feita uma anlise do fluxo de dados que detecta uma limitada classe de algoritmos e erros, tais como uma varivel definida mas nunca usada. Como a linguagem utilizada bastante simples e limitada, o sistema no necessita de um detalhado conhecimento dos objetivos do programa como os outros dois sistemas desta seo. Segundo seus autores, o sistema PROUST foi projetado para encontrar todo erro de lgica existente em programas j compilados de programadores iniciantes. Ele capaz de realizar esta tarefa, pois tem conhecimento da essncia do problema, ou seja, ele sabe o que o programa dever fazer quando for executado e mais: sabe tambm como resolver o problema proposto de vrias maneiras. Esta abordagem de diagnstico permite que o sistema avalie melhor a soluo do aluno do que, por exemplo, uma anlise de entradas e sadas, fluxo de dados e comparao com uma biblioteca de erros mais comuns. O sistema possui um conjunto de descries de problemas, sendo que estas descries so relacionadas com os requisitos ou objetivos que devem ser satisfeitos. Quando um programa est sendo analisado, o sistema usa a descrio dos objetivos e seu conhecimento de programao para inferir determinadas hipteses sobre como o problema pode ser resolvido. Se nenhuma hiptese combinar com a soluo do aluno, uma base de dados contendo os erros mais comuns acionada para tentar explicar as discrepncias. Este sistema acionado aps a compilao com sucesso de um programa em um compilador Pascal, ou seja, ele no encontra erros sintticos nem capaz de avaliar solues parciais dos alunos. Da mesma maneira, o sistema no executa o programa nem

15

mostra o estado de clulas de memria durante esta execuo. A incapacidade em avaliar solues parciais permite que os alunos possam se desviar completamente de uma soluo possvel para o problema, embora permitam uma livre explorao do programa pelo estudante. A falta de um ambiente de visualizao do funcionamento de um programa torna obscuro o modelo mental que um aprendiz constri sobre como as coisas realmente acontecem quando um programa executado.

.2:3,31 Anlise .de.entrada/sajda Uma maneira menos trabalhosa de se implementar o diagnstico automtico de programas tentar imitar o papel de uma pessoa que no sabe como o sistema foi construdo mas conhece bem a rea em que o sistema atua: a anlise de entrada/sada. Esta anlise feita atravs da execuo da soluo do aluno com determinados valores de entrada e a comparao dos valores de sada gerados com os resultados esperados de um programa correto. Os problemas com este tipo de anlise so facilmente identificveis: dificuldade em se definir quais conjuntos de valores de entrada podero gerar erros, impossibilidade em se afirmar que um programa que apresenta os resultados corretos est realmente correto e falta de conhecimento do prprio cdigo da soluo do aluno. A dificuldade encontrada na definio dos conjuntos de valores de entrada ocorre porque existem determinados valores que podem gerar erros em situaes bastante especficas da execuo do programa. Somente um teste exaustivo com um conjunto significativo de valores pode levar a concluso de que determinada soluo est realmente correta, j que muitas vezes um programa tem o comportamento esperado com certos

16

valores e com outros no. Alm disso, a falta de conhecimento do prprio cdigo do aluno, impossibilita tanto a determinao exata do erro do aluno, quanto a certeza de que o aprendiz programou a soluo de acordo com o esperado. Por exemplo, para calcular a soma dos n primeiros nmeros inteiros pode-se utilizar um lao com contador e acmulo dos valores ou ento lanar mo da frmula de progresso aritmtica. A primeira soluo demonstra uma compreenso de diversos aspectos bsicos de programao enquanto a segunda nos mostra que o aluno tem uma boa memria e talvez um bom conhecimento de matemtica. O representante mais significativo desta categoria o sistema Bip (BARR, A.; BEARD, M.; ATKINSON, R. C., 1976), cuja linguagem-alvo a Basic. Junto com a anlise de entradas/sadas tambm possui um interpretador com diversas facilidades grficas, conjunto de problemas de programao e um mecanismo de seleo de problemas que baseia-se no desempenho do aluno, no conjunto de problemas e no conjunto de habilidades que o aprendiz pretende adquirir. Para minimizar os problemas encontrados na anlise de entradas/sadas o sistema possui um mdulo rudimentar e bastante limitado para a identificao de erros de lgica.

2.4) Sistemas de anlise in-fixada Os sistemas de anlise durante o evento, so aqueles que interagem com o aprendiz durante a resoluo do problema, fornecendo feedback em caso de erro e, em alguns sistemas, no caso de acerto tambm. O diagnstico pode ocorrer a pedido do aluno, sendo

17

chamado neste caso de diagnstico passivo ou durante a resoluo do problema, tambm chamado de diagnstico ativo ou reativo. Independentemente da forma como o diagnstico realizado, estes sistemas podem ser classificados em dois grandes grupos, model-tracing e model-answer. Na primeira categoria {model-tracing) enquadram-se sistemas que possuem como principal caracterstica, o diagnstico de programas atravs da utilizao de regras de produo. Estes sistemas tem a capacidade de, efetivamente, entender o enunciado proposto e apresentar uma soluo correta para o problema. Entre os sistemas tutores desta categoria, temos: Greaterp (du BOULAY, B.; SOTHCOTT, C., 1987, p. 348-350), um sistema tutorial para o ensino da linguagem LISP e Gil (REISER, B.; KIMBERG, D.; RANNEY M., 1988), que acrescentou uma interface grfica e a capacidade de visualizao ao sistema Greaterp. Na segunda categoria {model-answer) temos os sistemas cujo diagnstico realizado com base em uma soluo de referncia inserida no sistema antes do incio da sesso de tutoramento. Estes sistemas no entendem o enunciado do problema e tambm no so capazes de apresentar qualquer tipo de soluo, correta ou errada. Os sistemas mais significativos que se encaixam nesta categoria so: BRIDGE (BONAR; CUNNINGHAM, 1985, cap. 15) para o ensino de programao Pascal atravs do mtodo SSNLP, SPADE (du BOULAY, B.; SOTHCOTT, C., 1987, p. 359-361) utilizado para o ensino de programao atravs da linguagem Logo e DISCOVER (RAMADHAN; du BOULAY, 1993, p. 125-134) que auxilia o ensino de programao atravs de uma linguagem prpria, semelhante ao pseudo-cdigo.

18

.2,4,1). GREMER.P/GJL Estes sistemas guiam os aprendizes na resoluo de problemas de programao dos primeiros captulos de um curso de LISP. O sistema GREATERP (du BOULAY, B.; SOTHCOTT, C., 1987, p. 348-350) segue a teoria de que um erro detectado em um programa de um aluno deve ser corrigido no mesmo momento. Ele cumpre esta tarefa atravs do uso de regras de produo para expressar habilidades de especialistas e de novatos. Devido a esta capacidade o sistema pode apresentar suas prprias solues para os problemas e tambm fornecer comentrios mais detalhados sobre um erro encontrado em um programa de um aluno. O sistema GREATERP pode tambm gerar problemas para o aluno resolver. Ao mesmo tempo em que o aluno digita sua soluo, o sistema tenta verificar se cada novo smbolo inserido est correto ou errado para o problema proposto. Um smbolo est correto se casa com uma regra de produo de especialista e est errado se casa com uma regra de produo de novato. Se no for encontrada nenhuma regra compatvel, o sistema intervm, apresentando alternativas ao aluno e obrigando-o a escolher uma delas. As regras para novatos representam os erros mais comuns encontrados em programas de alunos iniciantes. Embora o sistema Greaterp seja realmente poderoso, ele carece de um ambiente mais adequado ao entendimento de como funciona um programa quando executado dentro do computador. Esta ausncia foi em parte suprida pelo sistema Gil (REISER, B.; KIMBERG, D.; RANNEY M., 1988), que adicionou a capacidade de visualizao de clulas de memria durante a execuo do programa. A capacidade avanada de diagnstico de

19

programas apresentada, deve-se principalmente a dois fatores: relativa simplicidade dos exerccios iniciais de um curso de Lisp e a prpria estrutura da linguagem. Outro ponto a ser destacado que a base de exerccios apresentada fixa, no havendo nenhuma indicao de que haja alguma maneira simples de se adicionar outros problemas e exemplos dentro do sistema.

.2.4..2J. BRIDGE

Este STI apresenta-se como um sistema tutorial completo para o ensino de programao a alunos novatos (BONAR; CUNNINGHAM, 1985, cap. 15). O seu nome indica que ele pretende ser uma ponte entre o conhecimento de programao e o aprendiz. um sistema bastante rgido, tanto em sua concepo quanto em sua interface, obrigando o aluno a solucionar o problema seguindo trs etapas bem distintas:

Identificao e refinamento dos planos para a soluo do problema apresentado, atravs do uso de frases em linguagem natural.

Associao dos planos descritos em linguagem natural com planos descritos em uma linguagem mais organizada e prxima do computador.

Traduo da fase anterior para um programa em Pascal.

Estas etapas levam em considerao que o conhecimento de programao no natural e, portanto, o aluno deve ter a possibilidade de iniciar a construo de seu programa com frases em ingls (ou em seu idioma). A turma de alunos que foi estudada para o

20

desenvolvimento deste sistema j possua um prvio conhecimento da descrio de problemas do cotidiano usando uma abordagem passo-a-passo conhecida como

SSNLP(step-by-step informal language procedures). Esta abordagem sugere que os programas devem ser desenvolvidos de acordo com as etapas identificadas anteriormente. Em cada uma das etapas, o aluno pode solicitar uma anlise de sua soluo, mesmo que ela no esteja completa. Esta avaliao verifica s a soluo do aluno est correta e indica discrepncias em relao aos resultados esperados. As respostas do sistema so fornecidas a partir da identificao do estado atual de aprendizado do aluno, ou seja, apenas mensagens que tenham importncia para o conhecimento corrente do aprendiz so apresentadas. A tarefa de verificar uma soluo parcial no difcil para o sistema Bridge por dois motivos principais: a) o aluno constantemente guiado e sempre deve escolher uma frase ou um comando de um menu de opes e posicion-lo no local correto e b) o aluno apenas converte um determinado item da representao de uma etapa para um ou mais itens na representao da etapa seguinte. Portanto, deve-se destacar que, embora este seja um dos sistemas tutores mais completos j desenvolvidos, existem aspectos deste aplicativo que podem inviabilizar o seu uso efetivo no ensino de programao. O primeiro aspecto diz respeito ao mtodo utilizado para ensinar programao: os estudantes devem ter familiaridade com a identificao de objetivos e planos em um enunciado proposto. O sistema no permite que qualquer programador novato usufrua de seus ensinamentos, apenas aqueles que compreendam determinado mtodo de trabalho (SSNLP) podem utiliz-lo. Outro aspecto a ser considerado o ambiente de programao guiado, inadequado para uma explorao livre.

21

Esta limitao restringe o aluno a uma identificao dos planos pr-definidos existentes em cada etapa, inibindo a criao de solues diferentes. Uma restrio menos significativa que a nica linguagem disponvel para a soluo final a Pascal, embora os prprios autores indiquem que um dos melhoramentos seja o de se disponibilizar outras linguagens semelhantes.

.2.4.3). DISCOVER O DISCOVER (RAMADHAN; du BOULAY, 1993, p. 125-134) um sistema tutor cujo objetivo apoiar o ensino de programao bsica, atravs de uma linguagem prpria semelhante ao pseudo-cdigo. Foi implementado como a unio de algumas tcnicas computacionais: visualizao de domnios, micro-mundos, diagnstico automtico ativo e sistemas tutores inteligentes. Um aspecto diferencial deste sistema que ele integra tanto a explorao livre de um programa, quanto o ensino guiado. Esta integrao permite que o aluno beneficie-se das vantagens de ambos os mtodos de ensino. Estes mtodos so representados em dois mdulos ou fases, fase livre, na qual o aluno explora o formato de execuo de um programa atravs da visualizao de clulas de memria, execuo compassada e explicao de conceitos bsicos, como: criao de variveis e leitura e impresso de valores; fase guiada, na qual o aluno convidado a resolver um determinado problema de programao, tendo como apoio, alm dos componentes da fase livre, feedback em caso de sucesso ou erro e exemplos resolvidos de problemas semelhantes. A fase livre utilizada, basicamente, para facilitar o entendimento de como um programa funciona quando executado no computador. Atravs da explorao deste mdulo,

22

o aluno capaz de construir um modelo mental claro e robusto sobre o comportamento de conceitos de programao, funcionamento do programa como um todo e caractersticas inerentes mquina. O aprendiz escolhe conceitos de um conjunto e completa-os com nomes de variveis e expresses. No momento em que um conceito finalizado o sistema executa-o, indicando dinamicamente o comportamento do conceito escolhido. Deve-se ressaltar que nesta fase o sistema no fornece qualquer feedback tutorial sobre a lgica do programa, apenas para o seu funcionamento. A fase guiada tem como objetivo, "...ensinar o novato a compor e ajustar conceitos de programao e comandos para resolver determinados problemas de programao..." (RAMADHAN; du BOULAY, 1993, p. 127). Nesta fase o sistema escolhe um problema seguindo uma ordem pr-determinada e apresenta-o ao aluno. medida que o estudante vai compondo os conceitos o sistema compara-o com uma soluo pr-determinada e indica se a composio est certa ou errada. Atravs deste feedback o aluno guiado e no se afasta demasiadamente da soluo final. Segundo experincias empricas realizadas pelos autores, o DISCOVER obteve resultados bastante significativos em relao a dois aspectos do ensino de programao: quantidade de erros produzidos pelos alunos e tempo necessrio para a concluso de exerccios bsicos. Nestas experincias foi observado que os alunos que iniciaram os

estudos pela fase livre, apresentaram rendimento superior ao dos alunos que iniciaram o estudo pela fase guiada. A explicao pode residir no fato de que a fase livre propcia para o entendimento de como um programa funciona dentro do computador.

23

Observando-se os sistemas at aqui analisados, percebe-se que, em todos eles, a principal preocupao foi com o modelo de tutoramento: como guiar o aluno, em que momento apresentar feedback, qual mtodo de ensino utilizar e qual a representao interna das solues. Nenhum deles apresenta de forma concreta uma generalizao de seu funcionamento de forma a permitir ao professor, a incluso de novos exemplos, enunciados de problemas e respectivas solues.

2.5) Sistemas de autoria e shells para ensino/aprendizagem. Os principais problemas que fazem com que os STI, de maneira geral, no sejam amplamente divulgados e utilizados em escolas so a dificuldade do seu desenvolvimento e, por conseguinte, o alto custo de sua produo (NICOLSON, R. I.; SCOTT, P. J., 1986; MURRAY, T., 1997; MAJOR, N. et al., 1997). Alm da demora usual de seu projeto e programao, temos ainda a grande complexidade da representao do conhecimento de um especialista em alguma forma que possa ser implementada em um sistema de computao. Estes argumentos valem para qualquer tipo de STI, incluindo os STI de apoio ao ensino de programao. A abordagem utilizada para amenizar estes problemas o desenvolvimento de sistemas com independncia de domnio conhecidos como sistemas de autoria e shells. Eles possibilitam a um usurio comum, respectivamente, desenvolver seus prprios sistemas tutores inteligentes ou alterar de maneira significativa o modelo de conhecimento e o modelo de tutoramento de um sistema pronto. Nenhum dos sistemas estudados neste captulo possuem estas caractersticas, j que no foram projetados para este fim, ou seja, ainda no

24

foi desenvolvido nenhum sistema de autoria ou shell para apoiar o ensino de programao de computadores. Os sistemas de autoria podem contribuir para a divulgao dos STIs de diversas maneiras (MURRAY, T., 1997): a elicitao de conhecimento facilitada, pois praticamente no se exige programao e tambm eficiente, j que a representao do conhecimento modular e pode ser reutilizada em outros sistemas; o autor pode verificar a validade do sistema construdo atravs de testes imediatos; o sistema pode incluir conhecimento que o especialista talvez no possua, como por exemplo, sistemas de autoria que baseiam-se em princpios educacionais; alm disso, o sistema pode gerar conhecimento alm do que esperado de um especialista na rea. O problema da produo de software emerge tambm no desenvolvimento de um STI (NICOLSON, R. I.; SCOTT, P. J, 1986) e nos apresenta a questo: quantidade ou qualidade? Esta questo foi originada a partir da observao das falhas dos modelos tradicionais de desenvolvimento de STI: por autor individual ou por equipe de autores. Apesar do desenvolvimento individual produzir sistemas rapidamente e em quantidade, ele geralmente possui problemas de qualidade, alm de dificultar a manuteno. Em contrapartida, com o desenvolvimento por equipe, composto de vrios componentes, onde cada um responsvel por uma parcela substancial do sistema, consegue-se produzir sistemas de qualidade mas lentamente e com um alto custo. Devido aos obstculos originados do uso destas duas abordagens, algumas estratgias foram criadas: ambientes hbridos de autoria, onde programadores profissionais utilizaram linguagens de autoria para o desenvolvimento de STIs; uso de toolboxes, mdulos teis para o desenvolvimento de

25

STIs, que oferecem robustez e reutilizao de cdigo facilitada; construo de shells de sistemas especialistas, com as quais pode-se utilizar um mesmo programa com domnios de conhecimento diferenciados para se obter especialistas em diferentes reas; finalmente, como uma situao ideal, o professor deve ter o controle de uma parte significativa do processo de desenvolvimento atravs de uma ferramenta de prototipao e o apoio de um analista/projetista de sistemas, especializado no desenvolvimento de STIs.. Os sistemas de autoria podem possuir graus de generalidade de domnios diferentes: alguns podem ser usados para construir sistemas bem especficos, como o sistema RUI (DIRENE, A., I., 1997) enquanto outros so mais genricos, podendo gerar STIs para diversas reas, como o caso do sistema COCA (MAJOR, N., 1997). Alm dos diferentes graus de generalidade, estes dois sistemas apresentam outra caracterstica que os diferencia significativamente: a facilidade de construo dos STIs. Quando o escopo tem limites bem definidos possvel implementar, nos sistemas de autoria, diversas facilidades com relao ao tipo de conhecimento e de estratgia de ensino que sero usados pelos professores para a construo do STI. O sistema RUI utilizado especificamente para o ensino de conceitos visuais para identificao de anomalias existentes em radiografias. No caso do sistema RUI, a principal tarefa do autor descrever a anatomia e as anomalias encontradas em imagens atravs de uma ferramenta de autoria com interface grfica e sem a necessidade de se programar. O sistema COCA, sendo mais genrico, necessita de um esforo bem maior do autor para construir seu STI. A estratgia de montagem de um STI no sistema COCA baseia-se em trs tipos de conhecimento: conhecimento do domnio (descrio do assunto a ser ensinado),

26

estratgia de ensino (a maneira como o conhecimento do domnio ser apresentado) e conhecimento meta-estratgico (condies nas quais certas estratgias de ensino devem ser aplicadas). Na construo do STI, o autor deve especificar todos os trs tipos de conhecimento, atravs da entrada de objetos de domnio e da criao de regras de estratgia de ensino e de regras meta-estratgicas. Portanto, podemos concluir que as tarefas que um autor tem que realizar em sistemas de autoria com alto grau de generalidade so bem mais complexas e trabalhosas se comparadas com as tarefas de um sistema de autoria com baixo grau de generalidade.

3) O SISTEMA ASIMOV

O objetivo principal do sistema Asimov apoiar o ensino de lgica de programao de linguagens imperativas/procedimentais. Para atingir este objetivo, foram levados em considerao no projeto, diversos aspectos positivos encontrados nos sistemas estudados no captulo anterior. Dentre estes aspectos temos: explorao livre do ambiente de programao, diagnstico automtico de programas, visualizao de clulas de memria, execuo compassada, possibilidade de alterao de alguns parmetros de tutoramento pelo prprio aluno, facilidade na incluso de novos problemas (ver Anexo I) e mudana (desde que obedecidas determinadas restries) da linguagem alvo do sistema.

27

3.1) Principais consideraes de projeto Para facilitar o uso do sistema por parte do aluno, procurou-se incluir no projeto apenas caractersticas necessrias ao acompanhamento da lgica do programa, retirando-se quaisquer itens que pudessem confundir, desconcentrar ou desviar o aprendiz de seu objetivo. A linguagem de programao foi projetada para atender a estes requisitos: existe apenas o tipo de dado numrico, a declarao de variveis opcional, os comandos podem ser substitudos por diversos sinnimos e podem ser usadas mscaras {templates) de programao que completam os comandos mais complexos como a condio e a repetio. Em relao periodicidade em que o sistema deve fornecer apoio ao aluno, sabe-se que existem diversos nveis de aprendizagem que exigem mais ou menos resposta do sistema. Portanto, foi includa a capacidade de se alterar a granulao do feedback a qualquer momento em que o aprendiz ou o professor desejarem. Outro aspecto relevante a ser considerado a abordagem que deve ser usada para ensinar programao. A abordagem escolhida foi o ensino atravs de exemplos, que permite a aprendizagem atravs da repetio, induzindo o aluno a encontrar a soluo correta gradativamente.

Embora possam ser realizadas alteraes na linguagem-alvo, foi escolhida uma linguagem mais prxima do pseudo-cdigo para a implementao inicial do sistema (ver Seo 3.2.2). A definio da linguagem levou em considerao o objetivo principal do

28

sistema (apoio a lgica) e, portanto, procurou atenuar as dificuldades de aprendizagem inerentes aos aspectos sintticos da programao. A rigidez sinttica de uma linguagem de programao insere mais um obstculo na dura tarefa de se aprender a programar. Ao invs de se concentrar na soluo do problema propriamente dito, o aluno deve assimilar diversas regras absolutas para poder comear a escrever um programa. Como a parte mais importante e mais difcil de se aprender a programar a capacidade de entender o

funcionamento individual dos comandos e de seu comportamento quando inseridos em determinado contexto, a pseudo-linguagem foi simplificada em quatro pontos principais: podem ser utilizados sinnimos para expressar aes, a declarao de variveis opcional, existe somente o tipo de dados numrico e o aluno guiado atravs de mscaras (templates). Em qualquer classe de ensino de programao podem ser identificados diversos alunos cuja dificuldade em se aprender a programar est ligada ao no entendimento da sintaxe da linguagem. A flexibilidade sinttica foi includa no sistema Asimov para evitar o impacto negativo inicial que um erro sinttico causa em um aluno novato. Foram implementadas duas caractersticas com o intuito de se atingir esta flexibilidade: possvel utilizar-se diversos sinnimos de comandos e no necessrio finalizar um comando com o ponto-e-vrgula. Quando um aluno inicia a resoluo de um problema de programao ele deve procurar identificar quais aes levaro construo de uma soluo correta. Como o que realmente importa para a soluo final a escolha correta tanto das aes quanto da maneira como elas se relacionam, desnecessrio e prejudicial para o aprendizado que apenas uma palavra possa ser escolhida para expressar determinada ao ou que devam ser

29

utilizados determinados smbolos especiais dentro do programa. Alm destas duas caractersticas que o sistema Asimov explora, a prpria gramtica da linguagem bastante flexvel, possibilitando a utilizao de diversos elementos de forma opcional, como por exemplo, algumas palavras reservadas desnecessrias (faa e ento) e parnteses de funes da linguagem (leia e escreva). Outro tpico que causa diversos problemas no aprendizado de programao a maneira como o computador armazena valores. Qualquer valor deve ser armazenado em memria e deve ser classificado como pertencente a algum tipo de dado disponvel na linguagem. Este processo causa grande confuso em alunos novatos por se tratar de assunto totalmente anti-natural, diferente do processo de raciocnio que uma pessoa utiliza para resoluo de problemas do cotidiano. No sistema Asimov, o aluno no obrigado a declarar suas variveis, e tambm no precisa saber que existem diversas classificaes diferentes ou tipos de dados, pois s est disponvel o tipo numrico. Pode-se argumentar que estas atitudes no ajudam o aluno a programar bem, de maneira correta, com todas as suas variveis declaradas e bem definidas. Entretanto, deve-se lembrar que o nosso objetivo ajudar o aluno a adquirir a percia inicial da montagem de algoritmos e que os aspectos abordados anteriormente podem onerar de maneira significativa esta aprendizagem. Outras caractersticas que, se implementadas, trariam um ganho significativo para a flexibilidade sinttica seriam: um aproximador ortogrfico, a colorao diferenciada dos tokens digitados e a incluso automtica de mscaras (templates). O aproximador ortogrfico seria de grande valia, pois mesmo que o aluno iniciante esteja pensando em uma soluo correta, um erro de digitao pode causar dvida e como conseqncia um desvio

30

em relao ao que seria uma resposta certa para o problema. Alm disso, um editor dirigido pela sintaxe facilitaria ainda mais a relao entre o aluno e a parte sinttica da linguagem. Este editor poderia colorir de forma diferenciada os tokens da linguagem, facilitando a identificao dos diversos elementos do programa e tambm poderia inserir

automaticamente templates para os comandos mais complexos. Por exemplo, quando o aluno digitasse "Se" seguido de espao em branco, o editor completaria o comando colocando "<condio> Ento <comandos> FimSe". Desta forma o aluno poderia se concentrar apenas na soluo do problema, evitando os empecilhos decorrentes da rigidez sinttica da linguagem.

Os sistemas estudados no captulo 2 demonstraram que sempre houve uma preocupao dos autores com o momento em que um STI deve interferir na execuo do programa e exibir uma mensagem de erro ou de acerto para o aluno. Enquanto alguns sistemas iniciam o seu diagnstico apenas depois do trmino do programa (anlise psfxada), outros atuam durante a interao com o aluno (anlise in-fxada). Embora, atualmente, exista uma tendncia em se perseguir a segunda alternativa, ainda existe muita controvrsia em relao periodicidade da interferncia do sistema. Devido a esta indefinio, o sistema Asimov foi projetado para permitir que o professor, ou at mesmo o aluno, alterem esta periodicidade, tambm chamada de granulao do feedback. Esta alterao dinmica permite que o sistema seja utilizado por alunos com diferentes nveis de entendimento de programao, desde o mais novato, que no consegue

31

seguir adiante sem a certeza de que o comando digitado est correto, at o mais adiantado que prefere digitar toda a sua soluo para s ento receber as crticas do sistema. Desta maneira, dois aspectos do ensino de programao esto contemplados: a explorao livre do ambiente, sem nenhuma interferncia do sistema e a programao guiada, na qual o sistema entra em ao sempre que houver algum desvio em relao soluo correta. A flexibilidade do sistema Asimov em relao granulao do feedback alcanada atravs da alterao de determinados parmetros que permitem a realizao do diagnstico em momentos diferentes. Os tipos de granulao permitidos so: token, expresso, comando, bloco, programa e nenhuma. Respectivamente, o sistema atua aps a concluso da digitao de um dos seguintes elementos: um token, uma expresso aritmtica ou relacionai; um comando que finalizado por um ponto-e-vrgula ou pelo incio de um outro comando; um bloco que finalizado por um token especfico de fechamento de blocos, de acordo com cada linguagem; do programa como um todo e, ainda, nenhuma interferncia se o aluno no quiser feedback por parte do sistema.

3..1.3).Aprendizagem baseada em exemplos Para considerarmos que um aluno esteja apto a programar, devemos lembrar de dois objetivos a serem atingidos durante o estudo: aquisio de princpio e de percia. A aquisio do princpio de programao leva em conta a aprendizagem da sintaxe e da semntica individual de comandos e da estrutura da linguagem-alvo. A aquisio da percia de programao vem logo aps o domnio dos itens bsicos (princpio) e engloba o entendimento do comportamento dos comandos quando inseridos em um determinado

32

contexto e a capacidade de integrar estes comandos para resolver problemas de programao. Embora estes dois aspectos devam ser aprendidos como um todo, eles so ensinados separadamente e de formas diferentes. Enquanto os tpicos bsicos podem ser ensinados atravs da explanao simples e pura, o comportamento e a integrao dos comandos so muito complexos para serem aprendidos atravs de uma atitude passiva. Atravs da explicao de um determinado algoritmo, um aluno novato at consegue entender o seu funcionamento, mas dificilmente conseguir resolver um problema semelhante sem o auxlio de algum que j tenha adquirido a percia em programao. A maneira mais difundida para se ensinar a programao atravs do estudo de exemplos prontos e da aplicao do algoritmo destes exemplos em problemas semelhantes. Ao estudar como um novo algoritmo funciona, o aluno descobre novas formas de resolver uma certa faixa de problemas. Com a aplicao deste mesmo algoritmo em um ou mais problemas semelhantes o aluno adquire efetivamente o conhecimento embutido no conjunto de comandos que formam este algoritmo. O aluno novato induzido a resolver certo conjunto de problemas de uma determinada maneira e assim adquire a percia ou a capacidade de agrupar comandos para formar solues atravs da repetio do uso de um conjunto de comandos que foram apresentados atravs de um exemplo pronto. O sistema Asimov contribui para esta abordagem no sentido de que permite ao professor a fcil incluso de novos problemas para serem propostos ao aluno. Com esta caracterstica o aluno pode treinar determinado formato de algoritmo em diversos problemas semelhantes ao mesmo tempo em que guiado enquanto digita sua soluo. Como o

33

prprio professor que inclui a resposta ao problema (ver Seo 4.1), ele pode limitar a soluo para conter apenas determinado algoritmo que deve ser assimilado pelo aluno naquele momento de seu aprendizado.

3.2)Viso panormica do sistema Asimov O sistema Asimov possui uma interface contendo quatro reas bem distintas: edio de programas, visualizador, entrada e sada de dados do programa e enunciado do exerccio proposto. A linguagem escolhida como linguagem nativa do sistema est bem prxima do pseudo-cdigo, embora possa ser adaptada pelo professor desde que algumas regras sejam seguidas. O professor pode tambm criar seu prprio conjunto de exerccios que serviro de base para a abordagem de programao guiada, na qual o aluno pode ser constantemente avaliado e induzido a escrever uma soluo correta.

.3 2,l)Jnterfae do usurio A interface do sistema (Figura 3) composta de um menu com as opes de uso e de quatro janelas secundrias que esto permanentemente visveis: rea de edio de programas, onde o aluno digita sua soluo; visualizador de clulas de memria, na qual o estado das variveis mostrado; janela de entrada/sada, utilizada para apresentar os dados decorrentes da execuo do programa do aluno e janela de exibio de enunciados, que exibe o enunciado atual ou tambm pode estar vazia se nenhum enunciado for escolhido. A

34

diviso da interface do aplicativo em janelas sempre visveis permite uma melhor identificao dos elementos visuais, facilitando a sua utilizao. O aluno tem duas opes para iniciar o uso do sistema: comear a digitar um programa qualquer ou escolher um exerccio da base de problemas. No primeiro caso, o sistema funcionar como um compilador e um interpretador, permitindo uma explorao livre do ambiente, execuo compassada e visualizao das clulas de memria. Se o aluno escolher um exerccio ele ter, alm dos itens apresentados no caso anterior, apoio sempre que cometer algum erro, ou seja, ser guiado at alcanar uma soluo correta. Figura 3 - Interface do Sistema ASIMOV Asmov AIE - Editor!
&3UVO Tm Ofrm Ajuste

' ..

.""

""Ti'j

Editor
Incio Ieia(n1]

'';' ' .

!w i

... i i

I f rwnrtart
f a z e r a m algontrte para 1er trs mners e RMstrar V ftaSSartontica. N% S sua N % % V S N S -.VS . %
s

jii^
ss

V" .

"

% s

* s

sv>

A janela de enunciados poder conter o enunciado de um problema escolhido ou estar vazia, dependendo do modo de interao escolhido. Desta maneira, o aluno poder

35

voltar ao enunciado sempre que precisar, enquanto procura identificar a soluo correta para o problema. O contedo desta janela est vinculado aos critrios de ensino do professor, podendo conter, alm do enunciado da questo, dicas para resoluo, lembretes sobre determinados tpicos obscuros do assunto e, at mesmo, solues utilizadas em problemas semelhantes que podero servir como base para o aprendiz. A soluo a ser avaliada pelo sistema deve ser digitada diretamente no editor de programas, da mesma maneira em que um texto digitado em um editor comum. Dependendo do tipo de granulao escolhido e da existncia de um exerccio a ser resolvido, o sistema fornecer diagnstico medida em que o programa fonte apresentado ao sistema. Alm de receber este apoio, com relao lgica, o aluno pode solicitar a execuo do programa (total ou compassada) a qualquer momento para verificar como ele est se comportando. Nesta fase, chamada de interpretao, podero ser visualizadas as alteraes das variveis utilizadas de acordo com a execuo do programa na janela de visualizao de clulas de memria. Esta janela apresenta todas as variveis contidas na soluo do aluno e seus respectivos valores correntes. Durante esta fase, os dados de sada que o programa gerar e os dados de entrada necessrios ao funcionamento do programa so exibidos na janela de entrada/sada.

.S-.?...?.). A linguagem de programao A linguagem de programao escolhida para a implementao inicial do sistema procedural/imperativa estando bem prxima de uma pseudo-linguagem de programao

36

amplamente utilizada no ensino de lgica de programao. Entretanto, esta definio pode ser alterada pelo professor atravs da incluso de uma nova gramtica no sistema (ver Anexo I). Esta gramtica deve ser urmESLL(l) (SETZER, V. W.; MELO, I. S. H., 1983) e toda palavra reservada pode ter diversos sinnimos associados. A gramtica da linguagem alvo est descrita em BNF a seguir, com as palavras reservadas e smbolos da linguagem em negrito, elementos especiais em caracteres maisculos e no-terminais em caracteres normais. programa ::= [incio] declarao comando fim declarao ::= [declare {IDENT || comando ::= { nmero [';']]

(
IDENT ':=' expresso | escreva '(' {expresso || leia'('{IDENT D ' ) ' | se condio ento comando [seno comando] fimse | enquanto condio [faa] comando fimenquanto | repita (NUM vezes comando fimrepita | comando at condio) | para IDENT de expresso at expresso [passo expresso] [faa] comando fimpara ) m ')' |

37

expresso ::= ['-'] (termo || '+' | '-' | ou}+ termo ::= {fator || | '/' | e}+

fator ::= NUM | '(' expresso ')' | IDENT | no fator | function condio ::= expresso [('=' | '<' | '<=' | '>' | '>=' | '#')expresso] fonction ::= raizquadrada '(' expresso ')' | quadrado '(' expresso ')' resto '(' expresso expresso ')'

.3-2,3). Programao guiada No sistema Asimov, o aluno pode receber auxilio tutorial com relao lgica enquanto desenvolve o seu algoritmo. Esta modalidade de programao com

acompanhamento e diagnstico da lgica chamada de programao guiada e procura evitar que o aprendiz desvie-se demasiadamente da soluo correta. Como esta abordagem no ideal para todos os perfis de alunos encontrados, permite-se a alterao da granulao do feedback, j explanada no item 3.1.2. Os erros de lgica mais comuns encontrados em programas de alunos iniciantes so bastante semelhantes e podem ser classificados em erros intra-comandos e inter-comandos (du BOULAY, B.; SOTHCOTT, C., 1987), embora existam situaes de sobreposio entre os dois tipos de erros(ver seo 4.2.1). A Figura 4 mostra um erro intercomandos detectado pelo sistema Asimov em uma soluo de aluno e a mensagem tutorial correspondente. Os erros intra-comandos so aqueles cuja correo ocorre apenas no escopo do comando onde ocorreu o erro, como, por exemplo, uso incorreto de expresses

38

relacionais e aritmticas. Os erros inter-comandos so aqueles que influenciam ou so influenciados por outros comandos do programa (a correo de tais erros pode afetar um ou mais comandos), como: colocao errada de comandos em relao a uma repetio ou condio e inverso de comandos. Estes erros so sinalizados para o aprendiz de acordo com o tipo de granulao de feedback escolhido. Figura 4 - Mensagem de erro emitida pelo sistema ASIMOV

Q l t f M . f - ' 4 ? l
1 Lditut Ieia(n1) : escrevaj i V-*e : lomte

1
111

S&sS&; Ses mt iBk artes- test*

-llllvlT-.i j i nimcwl

, ? 11

F m m aigwHii* ara 1er f $ ' ' t t m m mv&r a sita d i a armettea.

d O^smprgsjwa ; ?\

3.3) Arquitetura funcional O sistema Asimov capaz de realizar as tarefas de: edio de textos, compilao do texto digitado de acordo com uma gramtica flexvel, diagnstico automtico da soluo do

39

aluno e interpretao do programa, com execuo compassada e visualizao do contedo das variveis deste programa em clulas de memria. A implementao destes processos exigiu o uso de diversas tcnicas computacionais tais como: construo de compiladores e interpretadores, redes semnticas e casamento de padres. Todas estas caractersticas esto distribudas em diversos mdulos que formam a arquitetura do sistema (Figura 5): interface, compilador, seletor de modo de interao, diagnosticador de bugs e interpretador. Figura 5 - Arquitetura do Sistema ASIMOV

40

3.3.1) Interface Atravs da interface, o aluno pode ativar as diversas caractersticas do sistema, bem como receber informaes tutoriais. A entrada de dados no sistema resume-se a: alterao da granulao do feedback, digitao da soluo proposta para o problema, execuo compassada da soluo e entrada de dados requisitadas pela execuo. As informaes fornecidas pela interface so: feedback tutorial em relao lgica da soluo do aluno, exibio das mensagens geradas por esta soluo e visualizao das clulas de memria que representam as variveis do programa do estudante. A alterao da granulao de feedback interfere na periodicidade em que o diagnosticador automtico fornece as mensagens tutoriais. A digitao da soluo proposta para o problema ser validada sintaticamente e traduzida pelo compilador, avaliada logicamente pelo diagnosticador e executada pelo interpretador. A execuo do soluo proposta tarefa do interpretador e pode ser realizada atravs de compassamento, de acordo com o comando do aluno. Esta execuo pode fornecer mensagens geradas pela prpria soluo e tambm requisitar entradas de dados numricos do teclado. Todo o processamento realizado por esta soluo poder ser visualizado atravs das clulas de memria que indicam, a cada momento, o contedo das variveis. Na interface tambm ocorre a exibio das mensagens correspondentes aos erros identificados pelo diagnosticador automtico.

41

3.3.2) Compilador O compilador inicia o seu processamento com a leitura de um arquivo externo da gramtica da linguagem que dever ser traduzida e com a correspondente montagem das estruturas de dados necessrias, tais como tabelas de smbolos e grafo sinttico. O processo de traduo realizado medida em que o aluno vai digitando a sua soluo, independente do tipo de granulao escolhido. Cada caracter validado pelo analisador lxico, cada token validado e classificado pelo analisador sinttico e cada comando tem seu cdigo gerado pelo gerador de cdigo durante a digitao da soluo. Este formato possibilita tanto a criao de um editor dirigido pela sintaxe, quanto a execuo da soluo em qualquer momento, mesmo que esta ainda no tenha sido completada. O compilador, atravs do processo de validao e traduo, fornece dados para outros dois componentes da arquitetura do sistema: diagnosticador e interpretador. Os elementos da soluo identificados e classificados so usados pelo diagnosticador automtico para a comparao com a soluo de referncia, enquanto o cdigo gerado com informaes de depurao (nmero das linhas do cdigo fonte e nomes das variveis) utilizado pelo interpretador para a execuo do programa, compassamento desta execuo e visualizao das variveis atravs das clulas de memria. Nesta verso inicial do sistema, na qual a performance do cdigo gerado irrelevante, no foram implementadas as rotinas que fazem a otimizao do programa objeto.

42

3.3.3) Seietor de modo de interao O seletor de modo de interao o componente responsvel pela verificao do estado corrente do sistema e pela conseqente ativao ou desativao do diagnosticador automtico. O diagnosticador pode ser desativado de duas maneiras: pela opo "nenhuma" da granulao do feedback, ou quando no for escolhido nenhum exerccio para ser solucionado. Este modo de uso foi denominado de modo de explorao livre, j que o aluno no recebe qualquer auxlio tutorial do diagnosticador, apesar de ainda poder utilizar os recursos de compassamento e visualizao do interpretador. Quando o aluno escolher um exerccio da base de dados e uma das opes da granulao do feedback (token, comando, expresso, bloco, programa) estiver selecionada, o diagnosticador ativado e o sistema passa a fornecer auxlio tutorial. Este modo foi denominado de modo guiado, pois, atravs da comparao com a soluo de referncia, guia o aluno durante o desenvolvimento de sua soluo, evitando que ocorram desvios em relao ao modelo correto.

3.3.4) Diagnosticador O diagnosticador automtico do sistema Asimov responsvel pela identificao de algumas classes de erros lgicos comuns encontrados na soluo proposta pelo aluno. Ele composto por mdulos altamente especializados, divididos em dois grandes grupos de elementos de conhecimento dinmico: identificadores de erros inter-comandos e intracomandos. Estes identificadores encontram erros atravs da comparao da soluo do

43

aluno com uma soluo de referncia cadastrada no sistema, geralmente montada pelo professor. O diagnosticador depende do tipo de granulao de feedback escolhida para identificar o momento de exibir as mensagens de erro, mas, independentemente da granulao, ele realiza o seu diagnstico constantemente, durante o processo de entrada de dados no sistema. Ele se restringe a chamadas aos identificadores de erro para encontrar e classificar os possveis erros da soluo do aluno e no influenciado pelo funcionamento do interpretador. Veremos os detalhes das representaes e do funcionamento detalhado dos identificadores e do processo de comparao das solues (de referncia e do aluno) no captulo 4.

3.3.5) Interpretador O objetivo do interpretador o de fornecer um mecanismo para o Asimov permitir a conduo de tarefas de visualizao da execuo de programas atravs da apresentao das alteraes de clulas de memria. Sendo assim, o interpretador tipicamente ativado no modo de explorao livre. O interpretador o componente que realiza a execuo simblica dos programas de aprendizes quando o Asimov encontra-se em seu estado passivo. Esta execuo realizada com base no cdigo gerado pelo compilador, que alm das informaes de quais instrues devem ser executadas, tambm contm alguns dados de depurao.

44

O mdulo do interpretador geralmente utilizado aps o trmino da digitao, embora possa realizar sua tarefa em qualquer ponto do desenvolvimento da soluo, ou seja, ele capaz de executar solues parciais, quando solicitado pelo aluno. Esta caracterstica permite que o aluno explore o ambiente e verifique se o seu programa est tendo o comportamento esperado a qualquer momento. Ainda durante a execuo, o interpretador envia e recebe dados da interface, de acordo com as entradas e sadas do cdigo gerado.

4) REPRESENTAO DE CONHECIMENTO E DIAGNSTICO AUTOMTICO

4.1) A soluo de referncia do Asimov (Model Answer) O sistema Asimov identifica erros de lgica em programas de alunos iniciantes atravs da comparao da soluo do aluno para um determinado problema com uma soluo pr-definida pelo professor, denominada de soluo de referncia. As solues de referncia tradicionais so bastante rgidas, aceitando como solues corretas apenas aquelas cuja comparao resulte em total igualdade com a soluo do sistema. A soluo de referncia do Asimov mais flexvel, pois permite dois tipos de variaes em relao soluo correta: dentro de uma mesma soluo, atravs da definio de dependncias de comandos e entre solues diferentes, pelo uso de caminhos alternativos de comandos. O modelo de representao da soluo de referncia expressa o conhecimento esttico do sistema e o processo de diagnstico, o conhecimento dinmico.

45

.4-.ll).Descrio.da/;spluo A maior dificuldade na escolha de uma representao para a soluo de um problema de programao a complexa interdependncia entre os diversos comandos existentes em um programa. Mesmo que a representao seja a mais completa possvel ainda nos resta o problema de como identificar desvios e variaes que no tornam a soluo incorreta e que so bastante comuns nos programas de alunos iniciantes. A partir de uma representao de rede semntica, estrutura onde o significado de determinado item est associado com a
c

maneira como ele est conectado a outros itens da rede (QUILLIAN, R., 1968), desenvolvemos um formalismo de modelagem da lgica de soluo de programas denominado de GRADE (grafo de alternativas e dependncias). O objetivo deste modelo facilitar tanto a criao de novos exerccios quanto a comparao de solues corretas com a soluo de alunos. A rede semntica identifica os mapas conceituais da soluo de referncia de um enunciado. Esta soluo contm a representao do conhecimento de uma faixa de solues expressas pelo professor, descritas atravs de conjuntos de comandos e de relaes entre eles. O sistema utiliza esta soluo como base para a comparao com a soluo do aluno, tentando encontrar semelhanas e/ou divergncias entre elas. O processo de comparao e a soluo de referncia complementam-se formando o conhecimento necessrio para a realizao do diagnstico. Enquanto o conhecimento embutido na soluo de referncia declarativo e de natureza esttica, j que por si s no identifica os erros de programas de alunos, o conhecimento do processo de comparao possui natureza dinmica, pois

46

consegue efetuar a correspondncia entre a soluo do aluno e os parmetros indicados na soluo de referncia, verificando assim, se existem erros de lgica.

4.1-.?lQapaidade de.^ptujar.var|aes Cada exerccio proposto pelo sistema composto da rea de texto livre, onde o professor pode inserir o enunciado, exemplos, sugestes e dicas e da soluo de referncia, conjunto de comandos e parmetros representada pelo GRADE. O GRADE (figura 6) um grafo que representa a soluo de referncia de determinado exerccio levando em considerao as dependncias obrigatrias e opcionais que existem entre comandos e o uso de algoritmos diferentes para resolver um mesmo problema. Figura 6 - Grafo de Alternativas e Dependncias (GRADE)

/ 1 Enquanto i <= 10

\ 1

Alternativa
[

Repita 10 vezes

Dependncia

\>
I Leia(nl)

Continuidade

47

O GRADE composto de quatro elementos bsicos: ns, arcos de dependncia, arcos de alternativa e arcos de continuidade. Os ns possuem os atributos que identificam uma determinada linha do programa fonte: identificador, comando, parmetros do comando e mensagem de erro mostrada no caso de ausncia do comando. Estes ns so ligados a outros atravs de trs tipos de arcos: arco de dependncia que indica que o n destino dependente do n de origem, ou seja, o comando descrito no n destino s ser vlido se vier depois do comando que est no n de origem; arco de alternativa, indicando que o n destino uma alternativa ao n origem, ou seja, se a comparao do comando do n origem falhar, o comando do n destino ativado; arco de continuidade, usado para representar a ordem de continuao para alternativas. Esta representao possibilita a capacidade de capturar variaes, atravs das relaes de ordem entre os comandos da soluo de

referncia que so a dependncia e a alternatividade.

4.2) Diagnstico automtico O conhecimento dinmico do sistema originado da natureza procedimental do diagnosticador o qual guiado por conhecimento declarativo dos identificadores de classes de erro. A comparao entre a soluo de referncia e a soluo do aluno realizada atravs de um algoritmo de casamento de padres ou pattern matching (BURTON, M.; SHADBOLT, N 1987, p.53-60; RICH, E., 1993, p.211-219). Embora existam diversas linguagens de IA tradicionais que possuem rotinas de casamento de padres nativas (Pop11, Miranda), foram implementadas funes prprias no sistema Asimov.

48

Com base nas relaes de dependncia e alternatividade citadas na seo 4.1.2, o diagnosticador procura encaixar a soluo do aluno dentro da soluo de referncia e, se este encaixe no for possvel, um erro inter-comando identificado. Embora possam existir vrios erros no programa do aluno, dependendo do tipo de granulao escolhida, o sistema apresenta mensagem apenas para o primeiro, sugerindo ao aprendiz qual a ao a ser tomada para corrigir o erro. A forma geral de representao das aes do diagnosticador semelhante a de regras de produo, podendo ser resumida ao seguinte comportamento: se padro encontrado na soluo do aluno casa com parmetros de qualquer identificador de erro ento emitir mensagem. Assim, se o diagnosticador encontrar algum erro no programa do aluno, ele altera o estado do ambiente de programao, emitindo mensagens de erro. Estas mensagens so originadas a partir de classes de erros mais comuns encontradas em programas de alunos iniciantes. Estes erros foram identificados em 66 provas (cuja nfase era o uso de comandos de condio e repetio) de alunos iniciantes de uma turma com 8 semanas de estudo de programao bsica (ver Anexo II). Os identificadores das classes de erros podem ser de dois tipos, de acordo com a explicao da seo 3.2.3: inter-comandos e intra-comandos. Apesar da importncia de ambos os identificadores para um diagnstico correto, o sistema Asimov implementa apenas os identificadores de erros inter-comandos em sua verso inicial. O diagnosticador, assim como o restante do sistema, foram implementados em C++ como parte integrante deste trabalho.

49

4.2...1).Representao de .Identifica^ Os erros de lgica intra-comandos so aqueles cuja correo feita apenas no escopo do comando onde o erro ocorre, no afetando outros comandos do programa. Os identificadores de erros intra-comandos necessrios para o diagnstico de programas de alunos iniciantes so: Expresso relacionai ou aritmtica incorreta. Este tipo de erro difcil de ser identificado de maneira precisa por um diagnosticador automtico, havendo a necessidade de se gerar gramticas especficas para cada expresso a ser avaliada. Inverso de operadores aritmticos, relacionais ou lgicos. Outro erro difcil de ser identificado, tambm exigindo a gerao de gramticas especficas. Ex.. Enquanto (i >10) E (i < 0) no lugar de Enquanto (i >10) OU (i < 0). Erro no uso de parnteses. Mais um erro de complexa identificao atravs da gerao de gramticas. Ex: valor <-(a+b/2) no lugar de valor <-(a+b)/2. Atribuio intil. Este erro acontece nos estgios iniciais de aprendizagem, quando o aluno ainda no tem um modelo claro do funcionamento de um programa e do armazenamento de variveis em memria. A identificao deste erro bem simples, pois basta verificar se ambos os lados da atribuio contm a mesma varivel. Ex: cont <-cont.

50

.4:2 .2).Representao de Jdentjfjdores de.Errg Os erros inter-comandos tem uma relao estreita com a percia que um aluno deve adquirir, pois so aqueles erros originados da falta de entendimento do comportamento dos comandos quando agrupados para formar um algoritmo. Os principais identificadores de erros inter-comandos encontrados em programas de alunos so: Posicionamento incorreto de comandos. Este um dos erros mais freqentes e tambm ocasionado pela falta de entendimento do fluxo de controle de um programa. O identificador desta classe ativado quando todos os comandos de um certo trecho da soluo de referncia existem na soluo do aluno, porm no esto na ordem correta. Ex: um comando de contagem que deveria estar dentro de uma repetio mas est fora dela. Erro de ajuste de valor inicial. Quando uma varivel inicializada com um valor incorreto em relao ao problema que deve ser resolvido. O identificador reconhece este erro atravs da comparao do comando do aluno com as alternativas da soluo de referncia. Uso de varivel do lado direito de uma expresso sem inicializao ou leitura. Outro erro cuja identificao simples: basta verificar se a varivel contm um valor de inicializao. Uso de varivel incorreta em comandos. Este erro ocasionado pelo uso de uma varivel incorreta em um comando qualquer. Sua identificao feita atravs do uso de meta-smbolos para representar as variveis da soluo de referncia com relao s variveis da soluo do aluno. Ex: cont 4-soma + 1 ao invs de cont <-cont+l" Leitura de varivel que deveria ser calculada. Outro erro comum que identificado da mesma maneira que o erro anterior. Ex: leia (soma)

51

Ausncia de um comando dentro de uma seqncia. A identificao feita atravs da comparao com a soluo de referncia onde todos os comandos esto corretos, faltando apenas um.

No entendimento da estrutura de funcionamento de um programa. Este identificador acionado quando a comparao da soluo do aluno com a soluo de referncia tem como resultado uma impossibilidade de encaixe de qualquer tipo. Neste ponto deve-se ressaltar que uma quantidade bastante pequena de solues pode estar correta, apesar de ser totalmente diferente de uma resposta padro.

Dentre as classes acima citadas, o sistema Asimov identifica em sua verso inicial os seguintes erros de lgica inter-comandos (em ordem de complexidade de reconhecimento): Uso de varivel sem inicializao ou leitura; Falta de qualquer comando dentro de uma seqncia; Uso de varivel incorreta; Inverso da posio de comandos e Colocao errada de comandos em relao a uma repetio ou condio.

.4,2 .3). Exemplos de Cenrio, de Uso Apresentamos a seguir dois exemplos de exerccios que podem ser propostos pelo sistema Asimov e quais as aes que o sistema executa quando o aluno comete um erro. Neste primeiro exemplo vamos considerar que o aluno escolheu a granulao de feedback do tipo token, ou seja, o sistema fornecer apoio tutorial sempre que for cometido algum erro de lgica.

52

Enunciado: Fazer um programa que leia dois nmeros inteiros quaisquer e calcule a sua mdia aritmtica. Primeira soluo possvel: Leia (nl) Leia (n2) Valor := (nl+n2)/2 Escreva (Valor) Segunda soluo possvel: Leia (nl) Valor := nl Leia (n2) Valor := (Valor + n2)/2 Escreva (Valor) A figura 7 mostra a representao destas duas solues atravs do GRADE. As flechas simples indicam alternativas, as flechas largas indicam dependncia e as flechas pontilhadas indicam continuidade. Figura 7 - GRADE do exerccio sobre mdia aritmtica
Leia(nl)

Leia (n2)

a
Valor :=(nl+n2)/2 Valor := nl

Valor := (Valor + n2)/2

Escreva (Valor)

53

Como a granulao escolhida foi a mais restritiva de todas, a cada item que o aluno digitar, o diagnosticador far a validao do programa. Se, por exemplo, o aluno comear o seu programa com um comando diferente de leia, o sistema emitir uma mensagem sugerindo que o aluno utilize este comando. As duas relaes de ordem esto aqui representadas: 1) dependncia, pela qual o clculo s pode existir depois da leitura das variveis e 2) alternatividade, onde o mesmo clculo pode ser dividido em dois comandos. Atravs destas duas variaes possveis e da soluo de referncia para este exerccio, o sistema Asimov consideraria a soluo abaixo como correta, no emitindo nenhuma mensagem de alerta:

Leia (B) Leia (A) Mdia := A Mdia := (Mdia + B)/2 Escreva (Mdia)

Para o segundo exerccio, vamos considerar que a granulao escolhida foi a do tipo programa, ou seja, o aluno ir receber apoio tutorial apenas aps ter completado a digitao de seu programa. Enunciado: Construir um programa que leia n nmeros inteiros quaisquer e calcule e mostre a sua soma.

Primeira soluo possvel: Soma := 0 Leia (n) Cont := 0 Enquanto cont < n faa Leia (Numero) Soma := Soma + Numero Cont := Cont + 1 FimEnquanto Escreva (Soma)

Segunda soluo possvel: Soma := 0 Leia (n) Cont := 1 Leia (Numero) Enquanto cont < n faa Soma := Soma + Numero Cont := Cont + 1 Leia (Numero) FimEnquanto Escreva (Soma)

55

A figura 8 mostra a representao destas duas solues atravs do GRADE. Figura 8 - GRADE do exerccio sobre soma

Soma := 0

Enquanto cont < n

Leia (n)

Cont := 0

Leia (Numero)

Cont := 1

t
Leia (Numero) Enquanto cont < n Soma := Soma + Numero Soma := Soma + Numero

Cont := Cont + 1

Cont := Cont + 1

FimEnquanto

Leia (Numero)

Escreva(Soma)

Neste cenrio, com a granulao por programa ativada, o diagnosticador pode identificar erros que no seriam possveis no modo de granulao por token, pois ele consegue analisar a soluo do aluno como um todo. Assim, erros de posicionamento de comandos podem ser reconhecidos. Desta maneira, supondo que o aluno coloque a inicializao das variveis dentro da repetio, o sistema Asimov consegue identificar que o erro no simplesmente a falta de inicializao de varivel, mas sim, a posio das inicializaes esta errada com relao ao escopo do comando enquanto.

56

.4.3}.Umjtaes do Sistema Asimov Alm de algumas caractersticas adicionais desejveis e de determinadas restries apresentadas no decorrer deste documento, existem mais duas limitaes significativas no sistema Asimov. tanto a verificao de expresses aritmticas e relacionais quanto o reconhecimento de uma soluo correta esto condicionados s dependncias e alternativas identificados pelo professor na soluo de referncia. O problema da verificao de expresses de um modo geral a dificuldade em se identificar uma expresso correta. Esta dificuldade surge pois existem infinitas combinaes possveis de smbolos que geram o resultado esperado para todas as faixas de valores, assim como existem aquelas combinaes que esto corretas para algumas faixas de valores e incorretas para outras. Por exemplo, para calcular a mdia aritmtica entre dois elementos pode ser usada a forma natural (valor<-(a+b)/2), uma outra forma correta qualquer (valor<-a; valor<-(valor+b)/2) e ainda, uma soluo que est correta apenas para alguns casos (valor^-a+b/2). As solues viveis para este problema so bastante complexas, j que tratam da manipulao de conjuntos de variaes de magnitude muito grande, e mesmo sendo genricas no conseguem tratar de todos os casos. Uma das solues a gerao de uma gramtica para cada expresso da soluo de referncia a ser testada, seguida de uma verificao que identifica se a expresso montada pelo aluno pertence ou no gramtica. Existem diversas solues corretas para um problema de programao e estas solues podem ser muito diferentes umas das outras. O sistema Asimov s consegue identificar como corretas, as solues de alunos que tenham poucas variaes em relao

57

soluo de referncia. Solues corretas com diferenas estruturais significativas e que no estejam descritas na soluo de referncia sero consideradas incorretas. Existem diversas maneiras de se amenizar esta situao e entre elas destacamos: a incluso de um mdulo de inferncia, capaz de associar a soluo do aluno com os principais pontos do enunciado; a ativao de um processo de anlise de entrada e sada de valores caso o diagnosticador automtico considere a soluo incorreta.

5) A AVALIAO DO ASIMOV Neste captulo apresentaremos uma avaliao emprica do potencial e das limitaes do mtodo de modelagem GRADE e do sistema Asimov. Os objetivos principais da avaliao do sistema so: 1) verificar se o mtodo de modelagem GRADE uma forma adequada de se representar solues de referncia e 2) validar a interface e as mensagens tutoriais emitidas. Para realizar tal avaliao, foram consultados dois especialistas no ensino de algoritmos e programao que utilizaram o GRADE para modelar solues para dois enunciados. Estas solues de referncia foram aplicadas no sistema para a validao de quatro situaes possveis referentes a solues corretas e incorretas de alunos.

5.1) Enunciados da Avaliao Os enunciados de exerccios escolhidos para a avaliao do sistema fazem parte do incio de um currculo de disciplinas de ensino de programao. Eles englobam os conceitos de armazenamento de valores em variveis, seqncias de comandos, blocos de comandos,

58

entrada e sada de dados, utilizao de variveis em expresses aritmticas e repetio. Ambos os exerccios(figura 9) so bastante significativos dentro de seus tpicos e, apesar de suas resolues serem razoavelmente simples, abrangem uma grande variao de possveis solues corretas. Figura 9 - Enunciados propostos aos especialistas Exerccios de Programao: 1) Construir um programa que leia dois nmeros quaisquer, calcule e mostre a sua soma e multiplicao. 2) Desenvolver um programa que mostre os nmeros de 1 a 100 utilizando comandos de repetio.

5.2) Formao dos Especialistas Para a avaliao do sistema foram consultados dois especialistas na rea de ensino de programao imperativa de computadores. O especialista 1 professor da disciplina de algoritmos e estruturas de dados, na qual o aluno aprende programao com uma pseudolinguagem, sem qualquer auxlio do computador. O especialista 2 tm maior experincia no ensino de programao do ponto de vista prtico, ou seja, em laboratrio, com o uso de computadores e ferramentas de programao. Para realizar a avaliao, foram utilizados os seguintes passos, separadamente para cada especialista: 1) apresentao do sistema ao especialista; 2) explicao da modelagem de solues de referncia utilizando o GRADE; 3) proposio dos enunciados da seo 5.1; 4) modelagem de solues de referncia pelos

59

especialistas; 5) simulao da entrada das solues imitando o comportamento do sistema Asimov.

5.3) Solues de Referncias dos Especialistas Como os dois especialistas so da rea de informtica e esto acostumados com os aspectos de programao e de modelagem de sistemas, nenhum deles teve grande dificuldade em entender o GRADE e em modelar as solues de referncia para os enunciados propostos (ver Anexos III e IV). Com apenas uma explicao inicial, ambos no demoraram mais do que trinta minutos para elaborar as solues de referncia para os dois enunciados. Neste ponto foi identificado mais um tipo de soluo possvel para um problema de programao: a soluo "tpica". Esta soluo representa o modelo mental de um instrutor humano, ou seja, a soluo que ele desenvolveria se fosse confrontado com o problema. Os dois especialistas iniciaram a modelagem da resposta de cada exerccio com a sua soluo "tpica" e com base nela, desenvolveram as demais variaes.

5.4) Testes com Variaes de Programas Aps a modelagem das solues de referncia, elas foram testadas no sistema Asimov com quatro diferentes variaes de programas: duas variaes corretas e duas incorretas. As variaes corretas e incorretas so diferentes entre si no que diz respeito ao que se espera do sistema em relao a elas. A soluo 1 est correta, no a soluo "tpica" (existem diversas variaes em comparao com a soluo de referncia), embora

60

siga a mesma estrutura da soluo de referncia e o sistema deve consider-la correta. A soluo 2 tambm est correta, sua estrutura difere em um ou mais pontos da estrutura da soluo de referncia e o sistema deve consider-la incorreta. A soluo 3, apesar de estar incorreta, est bem prxima de uma soluo correta identificada na soluo de referncia e o sistema deve consider-la incorreta. Finalmente, a soluo 4 tambm est incorreta e sua estrutura difere fundamentalmente da estrutura da soluo de referncia e, portanto, o sistema deve consider-la incorreta. O sistema reagiu de maneira positiva para todas as variaes esperadas, tanto para as solues aceitas como para as no aceitas. Para exemplificar esta situao apresentamos na figura 10, as solues esperadas para o GRADE do exerccio 1 construda pelo especialista 1 e as respectivas mensagens tutoriais emitidas, considerando-se a granulao por programa. As demais solues dos dois especialistas e as respectivas mensagens emitidas pelo sistema podem ser encontradas nos anexos III e IV. Figura 10 - Solues esperadas e mensagens emitidas 1 Solues
prod := 1 leia(nl) leia(n2) soma := nl + n2 prod := prod * nl prod := prod * n2 imprima(prod) imprima(soma) leia(nl) leia(n2) nl :=nl +n2 imprima(nl) nl := (nl-n2) * n2 imprima(nl)

2
prod := 1 leia(nl) leia(n2) soma := 0

3
soma := nl soma := n2

soma := soma + soma imprima(soma) prod := nl prod. - n2 prod := prod*prod imprima(prod)

soma := soma + nl prod := prod * nl prod := prod * n2 imprima(prod) imprima(sonia)

Mensagens

Nenhuma. Soluo aceita.

Erro na linha 3 ! Voc deveria usar soma no lugar de nl : soma := nl + n2!

Erro na linha 9! Faltou soma:=soma+n2 antes deste comando!

Erro na linha 1 ! Inicializao da varivel soma est incorreta!

61

Quanto a solues corretas (1 e 2 da Figura 10), temos as situaes descritas a seguir. Na soluo 1 temos diversas variaes com relao a uma soluo considerada como "tpica". Portanto, a soluo aceita pelo sistema j que as dependncias modeladas permitem este tipo de variao. A soluo 2, apesar de estar correta, no aceita pelo sistema, pois ela no existe dentro do GRADE deste enunciado. O sistema tenta realizar um encaixe e pra na terceira linha do programa, local onde o encaixe no mais possvel: foi encontrado o comando nl ;= nl + n2 mas o sistema esperava soma := nl + n2. Para o sistema Asimov, o comando est incorreto j que a varivel nl est sendo usada incorretamente no lugar de soma. Ambas as solues incorretas (3 e 4 da Figura 10) foram consideradas como tal pelo sistema, indicando que, na comparao com a soluo de referncia, foram encontradas divergncias entre as solues. A soluo de nmero 3 est praticamente correta, sendo que o nico problema a falta da varivel n2 somada com a varivel soma. O sistema captura corretamente este erro, indicando, alm da mensagem, uma possvel localizao para o comando que est ausente. Esta identificao possvel, pois o comando imprima(soma) tem dependncia em relao ao comando soma . = soma + n2. A ltima soluo est completamente incorreta, no sendo possvel fazer qualquer tipo de considerao a seu respeito. Na tentativa de encaixe, o sistema identifica que a varivel soma est sendo inicializada com um valor incorreto de acordo com o que est representado no GRADE do enunciado proposto.

62

5.5) Pontos Principais da Avaliao Embora o sistema Asimov no tenha sido avaliado com estudantes reais, os especialistas que participaram deste experimento consideraram as ferramentas e as mensagens tutoriais emitidas como sendo bastante teis para o apoio ao aprendizado de programao. Os resultados obtidos da simulao de um aluno usando o sistema descrito na seo anterior, demonstrou que o sistema comporta-se apropriadamente como um guia que evita desvios em relao a solues corretas. Aliado a estes resultados, o modelo utilizado para representar solues de referncia (GRADE) foi julgado simples e eficaz pelos especialistas. Portanto, o sistema pode ser admitido como uma ferramenta adequada para apoiar estudantes durante o desenvolvimento de suas solues. Mesmo o fato do diagnosticador considerar incorretas algumas solues vlidas foi considerada uma caracterstica positiva pelos especialistas, j que restringe o escopo de solues e possibilita maior controle sobre o tipo de algoritmo que o aluno deve treinar. Quanto s limitaes do sistema, foi considerado pelos especialistas que determinados elementos tidos como absolutos, poderiam ser ligados e/ou desligados, tais como: uso de sinnimos e rigidez sinttica da linguagem-alvo. Sugeriu-se tambm que o sistema pudesse restringir a soluo do aluno, permitindo que fossem digitadas respostas contendo apenas os comandos j explicados pelo professor em aula. Para fortalecer a capacidade tutorial do sistema de guiar o aluno, foi proposta a apresentao, aps a soluo do aprendiz ter sido digitada, da soluo "tpica", mais indicada para o enunciado. Alm

63

disso, foi identificada, por um dos especialistas, a ausencia de um elemento importante no GRADE: a possibilidade de se indicar que um determinado comando opcional. Esta capacidade tornaria possvel a insero de comandos que seriam ignorados caso existissem na soluo do aluno, mas que so bastante utilizados, como inicializaes de variveis lidas ou calculadas e exibio de mensagens do prprio programa.

6) CONCLUSO E TRABALHOS FUTUROS

No desenvolvimento do sistema Asimov procurou-se reunir diversas caractersticas positivas de sistemas j desenvolvidos em um nico ambiente com caractersticas flexveis e com independncia de domnio para auxiliar alunos iniciantes na aquisio de princpio e percia de programao. Os pontos que merecem destaque em relao ao que foi desenvolvido e alcanado so: um modelo flexvel de tutoramento, o diagnstico automtico de solues, a independncia de domnio e um ambiente de descoberta guiada. O modelo flexvel de tutoramento possibilita a variao da granulao do feedback, isto , a periodicidade com que o sistema fornecer apoio tutorial pode ser alterada. Esta flexibilidade permite que o sistema seja utilizado em variadas situaes de

ensino/aprendizagem, por alunos com diferentes graus de experincia em programao. Por exemplo, no incio de um curso de programao pode ser escolhida a granulao mais restritiva (por token) para evitar que os alunos mais inexperientes desviem-se demasiadamente da soluo correta e, com o desenrolar dos assuntos, liberar-se o sistema

64

gradativamente (granulao por comando, expresso e bloco) at que os alunos tenham conhecimento suficiente para precisar de apoio tutorial apenas ao final do desenvolvimento da soluo (granulao por programa). Um instrutor, ao ensinar programao, geralmente considera dois aspectos relevantes com relao s respostas para problemas que esperam dos alunos: no existe apenas uma soluo correta e nem todas as solues corretas podem ser aceitas como respostas para o problema. O sistema Asimov atende a ambas as expectativas atravs do diagnstico automtico de programas guiado por uma soluo de referncia que representada pelo grafo de alternativas e dependncias (GRADE). O GRADE possibilita a integrao de diversas solues em uma rede semntica que utilizada pelo sistema para validar as respostas de alunos. Existem dois tipos de variaes possveis: dependncia e alternativa. A dependncia entre comandos permite que uma mesma soluo possa ser escrita de vrias maneiras diferentes e demonstra que em uma soluo correta existem situaes onde a ordem das linhas no interfere no objetivo final. Assim, se uma seqncia de comandos possuir o mesmo grau de dependncia ela pode ser escrita em qualquer ordem sem prejudicar o resultado do programa. A capacidade do GRADE de manipular alternativas, permite que vrias solues sejam representadas dentro de um mesmo enunciado. Desta maneira, o professor pode criar enunciados cujas solues pertenam a uma determinada faixa de algoritmos que devem ser avaliados naquele momento de aprendizado do aluno. Solues que estejam corretas, mas que no estejam de acordo com o critrio do professor no sero aceitas, simplesmente porque no foram representadas na soluo de referncia. Portanto, o GRADE acrescenta uma boa dimenso de variaes a

65

esquemas de model-answer tradicionais, onde apenas uma faixa restrita de solues so consideradas como corretas e no podem ser alteradas. A independncia de domnio permite que o professor altere o contedo do sistema, ou seja, a linguagem-alvo e os enunciados dos problemas. Esta cracterstica de mudana de contedo torna o sistema uma shell para a montagem de sesses de tutoramento com domnios diferentes. Turmas com diferentes graus de experincia e at mesmo com diferentes linguagens de programao como alvo de estudo podem se beneficiar das caractersticas tutoriais do sistema, sem que exista a necessidade de reprogramao a cada nova turma ou a cada nova mudana. O ambiente de descoberta guiada (STI + micromundos) oferece uma rica oportunidade para aprendizagem, pois engloba a explorao livre e a programao guiada. A ligao entre estas caractersticas ser eficaz para o aprendizado, j que rene o auxlio a aquisio de princpio e percia em um nico sistema. O sistema Asimov possui o modo de explorao livre, onde o aluno pode digitar a sua soluo e utilizar um compassador de execuo para entender o controle de fluxo de um programa e um visualizador de clulas de memria para a percepo da mudana do estado das variveis. Alm disso, temos o modo de explorao guiado, onde somado s caractersticas do modo livre, mensagens tutoriais so fornecidas pelo diagnosticador automtico de programas caso o aprendiz cometa algum erro de lgica. O sistema Asimov pode ser melhorado em diversos aspectos de acordo com o que foi explicado em vrios trechos do texto, porm, mudanas significativas sero alcanadas se dois pontos principais forem estudados: 1) o aumento da capacidade de diagnstico e 2) a

66

extenso da shell para uma ferramenta de autoria. O primeiro item tem relao com o entendimento do enunciado por parte do sistema e o segundo com a possibilidade de tornar o sistema o mais amigvel possvel para os autores. Na verso atual, o sistema Asimov no tem a capacidade de entender a relao existente entre a soluo para um problema e o seu enunciado. Uma das implicaes disto que ele considera algumas solues corretas como sendo incorretas, j que o seu nico parmetro de comparao a soluo de referncia. Alm disso, o fato do sistema considerar solues corretas como incorretas no tem como causa nica a falta de compreenso do problema. Assim, uma soluo para este problema deveria ser melhor estudada e trabalhada para capturar todos os tipos de variaes que o espectro humano consegue perceber. Uma extenso bastante til do sistema seria um estudo para expanso do modelo de descrio de enunciados (GRADE) no sentido de identificar o relacionamento existente entre determinado trecho da soluo de referncia com partes do enunciado proposto. Alm de possibilitar a deteco de solues corretas com maior preciso, esta expanso tambm permitiria que as mensagens tutoriais fossem montadas com uma maior preciso de significado para o aluno. Apesar do sistema ser flexvel e possuir independncia em relao ao domnio estudado, possveis mudanas da linguagem e dos enunciados so todas feitas atravs de alteraes em arquivos texto(ver Anexo I), alteraes estas, que no so nem muito simples nem amigveis. A composio de novas ferramentas de autoria para serem associadas e acopladas ao sistema, que atualmente uma shell, seria outra direo futura de pesquisa que

67

traria ganhos significativos para o processo de apoio ao ensino de programao. Dentre as ferramentas de autoria necessrias as mais teis seriam: 1) a criao de um editor de solues de referncia para a montagem do GRADE com facilidades grficas e um banco de dados com trechos de algoritmos (clichs) disponveis para pronto uso e 2) a construo de um editor de gramticas de linguagens imperativas que ofereceriam no s um ambiente amigvel de trabalho, mas tambm poderiam guiar o professor na tarefa de desenvolvimento de gramticas para as variaes desejadas de linguagens imperativas.

68

ANEXO I - Formatos de arquivos do sistema Asimov

O sistema Asimov permite a alterao do seu domnio (linguagem e enunciados) em sua verso inicial, atravs da mudana de valores em arquivos do tipo texto: 3 para a mudana da linguagem e 1 para a incluso de novos exerccios. Os trs arquivos para a mudana da linguagem-alvo so baseados no trabalho de Setzer (SETZER, V. W.; MELO, I. S. H., 1983) e englobam as seguintes estruturas: 1) Tabela de smbolos, Cdigo, descrio do smbolo, tipo (SMB para smbolo, PR para palavra reservada, FNC para funo pr-definida, ID para identificador e NUM para constante numrica) e sinnimos. 2) Tabela de no terminais e Cdigo, descrio do no terminal, incio do no terminal no grafo sinttico. 3) Grafo sinttico da gramtica. Cdigo, 1 para terminal e 0 para no terminal, cdigo do elemento na tabela correspondente, prximo elemento da gramtica, alternativa a este elemento, cdigo da funo semntica a ser executada se este n for reconhecido. O arquivo de exerccios a codificao da representao das solues de referncia utilizando o GRADE e composto de duas partes: rea de enunciado e rea da soluo de referncia.

69

Formato do arquivo: Area de enunciado@<conjunto de ns do GRADE> Cada n: Cdigo, comando, lista de parmetros, lista de dependencias, alternativa, prximo, mensagem de erro. Apenas os campos cdigo e comando so obrigatrios. Obs: O separador padro para os elementos dos arquivos a tabulao, a no ser que exista indicao em contrrio.

70

ANEXO II - Resultado do estudo de identificao de erros em provas de alunos iniciantes

Com o objetivo de identificar os principais erros de lgica cometidos por alunos iniciantes, foram analisadas 66 provas de 2 turmas de alunos de um curso de algoritmos. Estas provas versavam sobre o uso de comandos de condio e repetio. Os resultados obtidos encontram-se na tabela abaixo, com os tipos de erro na coluna da esquerda e a quantidade de provas com este tipo de erro na coluna da direita.
Tino de Erro Erros em expresses aritmticas Colocao de comandos em posies erradas relao a repetio ou condio Erros na inicializao de variveis Uso de varivel sem inicializao ou leitura Erro na definio de limites de repetio Uso incorreto de parnteses Uso da varivel incorreta em condio Leitura de varivel que deveria ser calculada Troca de e por ou Falta de leitura dentro de repetio Uso de varivel incorreta para armazenamento Inverso da posio de comandos No entendimento do funcionamento de um programa (sem sentido) Esquecimento de repetio Operador relacionai errado Comando intil (atribuio de varivel para ela mesma) Leitura de mais variveis que o necessrio Troca de comandos (repetio por condio ou vice-versa) Leitura de varivel que no usada Inverso de atribuio Erro em comando de armazenamento Esquecimento do seno Ouantidade de Provas 26 21 20 19 12 11 10 8 6 5 3 3 3 2 2 2 1 1 1 1 1 1

71

ANEXO III - GRADE produzido pelo especialista 1

GRADE para o exerccio 1 :


Leia (nl)

Leia (n2)

Soma:=0

Prod:=l

Soma:=Soma+nl Soma:=nl+n2 Prod:=Prod*nl Soma := Soma + n2 Prod := Prod * r

Prod:=nl*n2

Imprima (Soma)

Imprima (Prod)

Solues esperadas e mensagens para o exerccio 1 : 1 Solues


prod := 1 leia(nl) leia(n2) soma := nl + n2 prod :=prod * nl prod := prod * n2 imprima(prod) imprima(soma) leia(nl) leia(n2) nl :=nl +n2 imprima(nl) nl := (nl-n2) * n2 imprima(nl)

2
prod := 1 leia(nl) leia(n2) soma := 0

3
soma := nl soma :=n2

soma := soma + soma imprima(soma) prod := nl prod := n2 prod := prod*prod imprima(prod)

soma := soma + nl prod := prod * nl prod := prod * n2 imprima(prod) imprima(soma)

Mensagens

Nenhuma. Soluo aceita.

Erro na linha 3 ! Voc deveria usar soma no lugar de nl !

Erro na linha 9! Faltou soma:=soma+n2 antes deste comando!

Erro na linha 1 ! Inicializao da varivel soma est incorreta!

GRADE para o exerccio 2:


ni := 1

ti

o2:=l00

Repita

fe w

Impnma(nl)

Imprima(nl)

Repita

Imprima(nl)

Repita

Repita

Imprima(nl)

nl:=nl+l

Imprima(nl)

Imprima(nl)

nl:=nl+l at nl>100

H
nl:=nl+l

nl:=nl+l

at nl > n2

at nl>100

at nl > n2

Solues esperadas e mensagens para o exerccio 2: 1 Solues


lim := 100 i := 1 repita imprima(i) i i+ 1 i := 0 repita i := i + 1 imprima(i) at i >= 100

2
lim := 100 i := 1 repita imprima(i) i := i - 1 at i > lim Erro na linha 1! Inicializao da varivel i est incorreta!

3
i := 1 repita i := i + 1 imprima(i) at i <= 0

at i > lim

Mensagens

Nenhuma. Soluo aceita.

Erro na linha 5! Faltou i := i + 1 antes deste comando!

Erro na linha 3! Faltou imprima(i) antes deste comando!

73

ANEXO IV - GRADE produzido pelo especialista 2

GRADE para o exerccio 1 :

Solues esperadas e mensagens para o exerccio 1 : 1 Solues


leia(nl) leia(ti2) soma := nl + n2 prod := nl * n2 imprima(prod) imprima(soma) leia(nl) leia(n2) nl :=nl +n2 imprima(nl) nl := (nl-n2) *n2 imprima(nl)

2
leia(nl) leia(n2)

3
soma := nl soma := n2

soma := nl + n2 imprima(prod) imprima(soma)

soma := soma + soma imprima(soma) prod := nl prod := n2 prod := prod*prod imprima(prod)

Mensagens

Nenhuma. Soluo aceita.

Erro na linha 3! Voc deveria usar soma no lugar de nl !

Erro na linha 4! Faltou prod := nl * n2 antes deste comando!

Erro na linha 1 ! Inicializao da varivel soma est incorreta!

74

GRADE para o exerccio 2:

Solues esperadas e mensagens para o exerccio 2: 1 Solues


i := 1 enquanto i < 101 imprima(i) i := i + 1 FimEnquanto i := 1 enquanto i <= 100 imprima(i) i := i + 1 FimEnquanto Erro na linha 2! Use enquanto i < 101 no lugar deste comando!

2
i := 1

3
i := 1

enquanto i < 101 imprima(i) i := i - 1 FimEnquanto Erro na linha 4! Faltou i := i + 1 antes deste comando!

enquanto i < 101 i := i + 1 imprima(i) FimEnquanto Erro na linha 3! Faltou imprima(i) antes deste comando!

Mensagens

Nenhuma. Soluo aceita.

75

REFERNCIAS BIBLIOGRFICAS ADAM, A.; LAWRENT, J. A system to debug students programs. In: Journal of Artificial intelligence, v. 15, 1980. p. 75-122. ANDERSON, John R. Acquisition of cognitive skill. In: Psychological review, n. 89, 1982. p.369-406. BARR, A ; BEARD, M ; ATKINSON, R. C The computer as a tutorial laboratory: the Stanford BIP project. In: International journal of man-machine studies, v. 8, p. 567595. BONAR, Jeffrey R ; CUNNINGHAM, Robert. Bridge : tutoring the programming process. 1985. p. 409-434. BONAR, J.; SOLOWAY, E.. Pre-programming knowledge: A major source of misconceptions in novice programmers. In: Human-Computer Studies in

Mathematics 20. v.20, 1985. p. 293-316. BURTON, Mike; SHADBOLT, Nigel. Pop-11 programming for artificial intelligence. Great Britain : Addison-Wesley, 1987. DIRENE, Alexandre I. Methodology and tools for designing concept tutoring systems. In: The Third White House Papers. CSRP 172, School of Cognitive and Computing Sciences - University of Sussex, 1990.

76

DIRENE, Alexandre I. et al. Sistemas tutoriais para assistir o treinamento de operao de centrais de comutao. In: Simposio Brasileiro de Informtica na Educao. Belo Horizonte, 1996. du BOULAY, Benedict; SOTHCOTT, Christopher. Computers teaching programming: an introdutory survey of the field. In: LAWLER, R W.; YAZDANI, M. Artificial intelligence and education: learning environment and tutoring systems, v. 1, 1987. cap. 16, p. 345-372. GOLDSTEIN, I. P. Summary of Mycroft: a system for understanding simple picture programs. In: Artifical intelligence, v. 6, 1975, p. 249-288. HASEMER, T. An empirically-based debugging system for novice programmers. In: Human cognition research laboratory. Open University, 1983. JOHNSON, W. Lewis ; SOLOWAY, Elliot. PROUST: an automatic debugger for pascal programs. In: KEARSLEY, Greg. Artificial intelligence in education: applications and methods. Addison Wesley, 1987. cap. 3, p. 49 - 67. LUKEY, F. J. Understanding and debugging programs. In: International journal of man-machine studies. V 12, 1980, p. 189-202. MAJOR, Nigel. Using COCA to build an intelligent tutoring system in simple algebra. In Intelligent tutoring media, v. 2, n. 3/4, p. 159-169, 1991 MAJOR, Nigel; AINSWORTH, Shaaron; WOOD, David. REDEEM: Exploiting

symbiosis between psychology and authoring environments. In. International journal of artificial intelligence in education. UK: International AIED Society, v. 8, n. 3/4, p. 317-340, 1997.

77

MURRAY, Tom. Expanding the knowledge acquisition bottleneck for intelligent tutoring systems. In: SELF, John. International journal of artificial intelligence in education: authoring systems for intelligent tutoring systems. UK: International AIED Society, v. 8, n. 3/4, p. 222-232, 1997. NICOLSON, R. I.; SCOTT, P. J. Computers and education: the software production problem. In: British journal of educational technology, v. 17, n. 1, p. 26-35, january 1986. PIMENTEL, Andrey Ricardo; DIRENE, Alexandre Ibrahim. Medidas cognitivas no ensino de programao de computadores com sistemas tutores inteligentes. In: Anais do Simpsio Brasileiro de Informtica na Educao. 1998. QUILLIAN, R. Semantic memory. In: Semantic information processing. Ed. M. Minsky, Cambridge, MA, MIT Press, 1968. RAMADHAN, Haider; du BOULAY, Benedict. Programming environments for novices. In. LEMUT, Enrica. Cognitive models and intelligent environments for learning programming. Springer Verlag, p. 125-134. REISER, B ; KIMBERG, D ; RANNEY M. Knowledge representation and explanation in GIL, na intelligent tutor for programming. In: Cognitive science laboratory report. NJ, USA. Princeton University, 1988. RICH, Elaine; KNIGHT, Kevin. Inteligncia artificial. 2. ed. So Paulo : Makron Books, 1993. SETZER, Valdemar W.;MELO, Ins Homem de. A construo de um compilador. Rio de Janeiro : Campus, 1983.

78

WENGER, Etienne. Artificial intelligence and tutoring systems: Computational and cognitive approaches to the communication of knowledge. California : Morgan Kaufmann, 1987. WOOLF, Beverly. Representing, acquiring, and reasoning about tutoring knowledge. In: BURNS, Hugh et al. I.T.S.: evolutions in design. Hillsdale, New Jersey : Lawrence Erlbaum Associates, Publishers, 1991.