Buscar

Taxonomias de Exemplos para Aprendizagem de Programação

Prévia do material em texto

Universidade de Bras´ılia
Instituto de Cieˆncias Exatas
Departamento de Cieˆncia da Computac¸a˜o
Taxonomias de Exemplos para Aprendizagem de
Programac¸a˜o
Adam Victor Nazareth Brandizzi
Yuri Moreira de Nun˜ez
Monografia apresentada como requisito parcial
para conclusa˜o do Curso de Computac¸a˜o — Licenciatura
Orientador
Prof. Dr. Homero Luiz P´ıccolo
Bras´ılia
2009
Universidade de Bras´ılia — UnB
Instituto de Cieˆncias Exatas
Departamento de Cieˆncia da Computac¸a˜o
Curso de Computac¸a˜o — Licenciatura
Coordenador: Prof. Dr. Fla´vio Leonardo Cavalcanti de Moura
Banca examinadora composta por:
Prof. Dr. Homero Luiz P´ıccolo (Orientador) — CIC/UnB
Prof.ª Dr.ª Maria de Fa´tima R. Branda˜o — CIC/UnB
Prof.ª Dr.ª Carla Cavalcante Koike — CIC/UnB
CIP — Catalogac¸a˜o Internacional na Publicac¸a˜o
Brandizzi, Adam Victor Nazareth.
Taxonomias de Exemplos para Aprendizagem de Programac¸a˜o / Adam
Victor Nazareth Brandizzi, Yuri Moreira de Nun˜ez. Bras´ılia : UnB, 2009.
121 p. : il. ; 29,5 cm.
Monografia (Graduac¸a˜o) — Universidade de Bras´ılia, Bras´ılia, 2009.
1. Exemplos, 2. Problemas, 3. Programac¸a˜o de Computador,
4. Ensino de Programac¸a˜o, 5. Sistemas Tutoriais Inteligentes,
6. Sistemas Tutorias Baseados na Web, 7. Taxonomia de Exemplos,
8. Tutorias
CDU 004
Enderec¸o: Universidade de Bras´ılia
Campus Universita´rio Darcy Ribeiro — Asa Norte
CEP 70910-900
Bras´ılia–DF — Brasil
Universidade de Bras´ılia
Instituto de Cieˆncias Exatas
Departamento de Cieˆncia da Computac¸a˜o
Taxonomias de Exemplos para Aprendizagem de
Programac¸a˜o
Adam Victor Nazareth Brandizzi
Yuri Moreira de Nun˜ez
Monografia apresentada como requisito parcial
para conclusa˜o do Curso de Computac¸a˜o — Licenciatura
Prof. Dr. Homero Luiz P´ıccolo (Orientador)
CIC/UnB
Prof.ª Dr.ª Maria de Fa´tima R. Branda˜o Prof.ª Dr.ª Carla Cavalcante Koike
CIC/UnB CIC/UnB
Prof. Dr. Fla´vio Leonardo Cavalcanti de Moura
Coordenador do Curso de Computac¸a˜o — Licenciatura
Bras´ılia, 30 de junho de 2009
Agradecimentos
Agradec¸o, acima de tudo, a meus saudosos pais, que me deram a melhor educac¸a˜o poss´ıvel;
a meus tios Nataniel e Ana, que me apoiaram nos momentos dif´ıceis; a minhas irma˜s, que
sempre me apoiaram, e a Juliana Vilela, que esteve ao meu lado durante grande parte do
curso. Agradec¸o a` Universidade de Bras´ılia, pelo ensino de alta qualidade; aos professores
do departamento, pelo conhecimento, te´cnico ou na˜o, transmitido e pela compreensa˜o e
apoio. Agradec¸o especialmente ao professor Homero, pela orientac¸a˜o sa´bia, dedicada e
paciente. Por fim, agradec¸o a todos os companheiros universita´rios que me apoiaram,
especialmente ao amigo Pedro, que muito me ajudou no comec¸o do curso, e ao parceiro
de projeto Yuri, cujo trabalho foi indispensa´vel. A todos citados, e aos que na˜o pude
citar, muito obrigado.
Adam Victor Nazareth Brandizzi
Agradec¸o ao professor orientador, Homero, e parceiro de projeto, Adam, pela pacieˆncia
e esmero. Agradec¸o especialmente a`s mulheres da minha vida - minha ma˜e, minha esposa,
minha irma˜ e minha avo´ - que contribuiram a cada tempo com amor e compreensa˜o.
Agradec¸o, enfim, a todos os amigos que aguardavam ansiosos por este feliz desfecho.
Yuri Moreira de Nun˜ez
iv
Resumo
Estudantes possuem diferentes ritmos de aprendizado. Para satisfazer suas diferentes
necessidades, sa˜o necessa´rios materiais dida´ticos em diferentes n´ıveis de complexidade.
Nesse trabalho, propomos um conjunto de exemplos de programac¸a˜o com va´rios n´ıveis
de complexidade para alunos que estejam aprendendo a programar computadores. Esse
conjunto de exemplos sera´ integrado ao Tutorial ICC, um sistema de aprendizagem auxi-
liado por computador. Este e´ mais um passo para acrescentar adaptabilidade ao Tutorial
ICC, aproximando-o dos sistemas tutoriais inteligentes.
Palavras-chave: Exemplos, Problemas, Programac¸a˜o de Computador, Ensino de Pro-
gramac¸a˜o, Sistemas Tutoriais Inteligentes, Sistemas Tutorias Baseados na Web, Taxono-
mia de Exemplos, Tutorias
v
Abstract
Students have different learning paces. In order to satisfy their different needs, educational
materials at different complexity levels are necessary. In this work, we propose a set of
programming examples with various complexity levels for students who are learning how
to program computers. This set will be integrated to Tutorial ICC, a computer-assisted
learning system. It is one more step to add adaptability to Tutorial ICC, approaching it
to intelligent tutoring systems.
Keywords: Computer Programming, Examples, Examples Taxonomy, Intelligent Tutor-
ing Systems, Problems, Programming Teaching, Tutorials, Web-based Tutoring Systems
vi
Suma´rio
1 Introduc¸a˜o 1
1.1 Problemas e Justificativa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2 Objetivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.3 Metodologia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.4 Resultados esperados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
2 O Ensino de Programac¸a˜o 4
2.1 A dificuldade de ensinar a programar . . . . . . . . . . . . . . . . . . . . . 4
2.2 Fatores cognitivos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.3 Fatores pedago´gicos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.4 Proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3 Sistemas Tutoriais Inteligentes 8
3.1 Arquitetura de um sistema tutorial inteligente . . . . . . . . . . . . . . . . 8
3.2 Categorias de sistemas tutoriais inteligentes . . . . . . . . . . . . . . . . . 10
3.3 Vantagem dos sistemas tutoriais inteligentes . . . . . . . . . . . . . . . . . 14
3.4 O papel do trabalho corrente . . . . . . . . . . . . . . . . . . . . . . . . . . 14
4 Taxonomias de Exemplos 15
4.1 Taxonomia hiera´rquica de exemplos . . . . . . . . . . . . . . . . . . . . . . 15
4.2 Enunciados e soluc¸o˜es . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
4.3 “Tira-teima” e roteiros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4.4 Localizac¸a˜o na taxonomia . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.5 Resumo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
5 Exemplos de Taxonomias 23
5.1 A´rvore 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.1.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 23
5.1.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 24
5.1.3 Enunciados e programas . . . . . . . . . . . . . . . . . . . . . . . . 24
5.1.4 Comenta´rios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2 A´rvore 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
5.2.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 28
5.2.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 28
vii
5.2.3 Enunciados e programas . . . . . . . . . . . . . . . . . . . . . . . . 28
5.2.4 Comenta´rios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5.3 A´rvore 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
5.3.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 34
5.3.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 34
5.3.3 Enunciados e programas . . . . . . . . . . . . . . . . . . . . . . . . 34
5.3.4 Comenta´rios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4 A´rvore 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
5.4.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 42
5.4.2Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4.3 Enunciados e programas . . . . . . . . . . . . . . . . . . . . . . . . 42
5.4.4 Comenta´rios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.5 A´rvore 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
5.5.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 49
5.5.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 49
5.5.3 Enunciados e programas . . . . . . . . . . . . . . . . . . . . . . . . 49
5.5.4 Comenta´rios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
5.6 A´rvore 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62
5.6.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 62
5.6.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 62
5.6.3 Enunciados e programas . . . . . . . . . . . . . . . . . . . . . . . . 62
5.6.4 Comenta´rios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73
6 Concluso˜es e Trabalhos Futuros 74
Refereˆncias 75
A Taxonomias do Cap´ıtulo 2 do Tutorial ICC 78
A.1 A´rvore 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
A.1.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 78
A.1.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 78
A.1.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78
A.2 A´rvore 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
A.2.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 79
A.2.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 79
B Taxonomias do Cap´ıtulo 4 do Tutorial ICC 81
B.1 A´rvore 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
B.1.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 81
B.1.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 81
B.1.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81
B.2 A´rvore 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
B.2.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 82
B.2.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 82
viii
B.2.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
B.3 A´rvore 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
B.3.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 83
B.3.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 83
B.3.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83
B.4 A´rvore 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84
B.4.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 84
B.4.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 84
B.4.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
B.5 A´rvore 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85
B.5.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 85
B.5.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 85
B.5.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
B.6 A´rvore 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86
B.6.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 86
B.6.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 87
B.6.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87
B.7 A´rvore 7 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
B.7.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 88
B.7.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 88
B.7.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
C Taxonomias do Cap´ıtulo 4 do Tutorial ICC 89
C.1 A´rvore 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
C.1.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 89
C.1.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 89
C.1.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89
C.2 A´rvore 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90
C.2.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 90
C.2.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 90
C.2.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
C.3 A´rvore 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91
C.3.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 91
C.3.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 92
C.3.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
C.4 A´rvore 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 92
C.4.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 93
C.4.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 93
C.4.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93
C.5 A´rvore 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
C.5.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 94
C.5.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 94
C.5.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94
ix
D Taxonomias do Cap´ıtulo 6 do Tutorial ICC 96
D.1 A´rvore 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
D.1.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 96
D.1.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 96
D.1.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96
D.2 A´rvore 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
D.2.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 97
D.2.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 97
D.2.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97
D.3 A´rvore 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98
D.3.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 98
D.3.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 99
D.3.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
D.4 A´rvore 4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99
D.4.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 100
D.4.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 100
D.4.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
D.5 A´rvore 5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
D.5.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 101
D.5.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 101
D.5.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101
D.6 A´rvore 6 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
D.6.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 102
D.6.2Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 102
D.6.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102
E Taxonomias do Cap´ıtulo 7 do Tutorial ICC 104
E.1 A´rvore 1 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
E.1.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 104
E.1.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 104
E.1.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104
E.2 A´rvore 2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 105
E.2.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 105
E.2.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 105
E.2.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
E.3 A´rvore 3 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 106
E.3.1 Caracter´ısticas remov´ıveis . . . . . . . . . . . . . . . . . . . . . . . 106
E.3.2 Numerac¸a˜o dos exemplos . . . . . . . . . . . . . . . . . . . . . . . . 107
E.3.3 Enunciados . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107
x
Lista de Tabelas
3.1 Categorias de STIs, segundo Murray (1999) . . . . . . . . . . . . . . . . . 13
xi
Lista de Figuras
3.1 Componentes de um STI, segundo Beck et al. (1996) . . . . . . . . . . . . 10
4.1 Representac¸a˜o de taxonomia com duas caracter´ısticas remov´ıveis . . . . . . 16
4.2 Representac¸a˜o de taxonomia com treˆs caracter´ısticas remov´ıveis . . . . . . 16
4.3 Representac¸a˜o de taxonomia sem no´ sem caracter´ısticas . . . . . . . . . . . 17
4.4 Representac¸a˜o de uma taxonomia na˜o-ortogonal . . . . . . . . . . . . . . . 18
4.5 Screenshot da applet Java executando um “tira-teima” . . . . . . . . . . . 19
4.6 Exemplo de roteiro de “tira-teima” . . . . . . . . . . . . . . . . . . . . . . 20
4.7 Representac¸a˜o da localizac¸a˜o do aluno na taxonomia . . . . . . . . . . . . 21
xii
Siglas e Acroˆnimos
ACM Association of Computing Machinery
AIS Association for Information Systems
CALS computer-assisted learning1
CALS computer-assisted learning system
EaD educac¸a˜o a distaˆncia2
HTML Hypertext Markup Language
HTTP Hypertext Transfer Protocol
IEEE Institute of Electrical and Electronics Engineers
IEEE-CS IEEE Computer Society
ICC Introduc¸a˜o a` Cieˆncia da Computac¸a˜o
ITS intelligent tutoring system
SAAC sistema de aprendizagem auxiliada por computador
STBW sistema tutorial baseado em Web
STI sistema tutorial inteligente
UnB Universidade de Bras´ılia
1Tambe´m e´ comum a forma, para efeitos gerais equivalente nesta monografia, computer-aideld learning.
2Tambe´m e´ comum a forma, para efeitos gerais equivalente nesta monografia, ensino a distaˆncia.
xiii
Cap´ıtulo 1
Introduc¸a˜o
A programac¸a˜o e´ comumente reconhecida como uma habilidade dif´ıcil de se aprender e,
portanto, de se ensinar (Gomes e Mendes, 2007). Ale´m desse problema, a procura por
formac¸a˜o em Cieˆncia da Computac¸a˜o, Engenharia de Software e outros cursos que exigem
conhecimento de programac¸a˜o como base cresceu bastante a partir dos anos 90 (ACM,
2005, p. 10).
Uma poss´ıvel soluc¸a˜o para o grande aumento da demanda dos cursos de programac¸a˜o
e´ o uso dos chamados sistemas tutoriais baseados em Web (STBW), que teˆm mostrado
bons resultados quando complementado por canais pelos quais alunos e professores podem
se comunicar e esclarecer du´vidas (Brusilovsky et al., 1998, p. 2). A vantagem dos cursos
baseados na Web para o problema de formac¸a˜o em maior escala e´ que esses cursos podem
ser acessados de qualquer lugar por uma grande quantidade de alunos. Ale´m disso, cursos
baseados em Web permitem que os estudantes aprendam os pontos ba´sicos de seus cursos
sem exigir acompanhamento constante do professor, que pode se concentrar nas du´vidas
mais complicadas e nos alunos com mais dificuldades, desde que o material on-line possa
se adaptar aos estudantes e seus backgrounds (Brusilovsky et al., 1998, p. 2).
Va´rios experimentos ja´ foram ou esta˜o sendo feitos para avaliar a viabilidade do uso de
cursos baseados na Web para o ensino de programac¸a˜o, como, por exemplo, Chen (2005),
Ferrandin e Stephani (2005), Carlson (2004) e dos Santos e Costa (2005). Esse presente
trabalho pretende evoluir um sistema em funcionamento. Esse sistema e´ chamado Tutorial
ICC e e´ utilizado no ensino de programac¸a˜o para as turmas de Introduc¸a˜o a` Cieˆncia da
Computac¸a˜o da Universidade de Bras´ılia.
Mais especificamente, nossa abordagem sera´ acrescentar alguma flexibilidade ao tu-
torial. Nosso planejamento inicial e´ tornar Tutorial ICC na˜o exatamente um sistema
tutorial inteligente (STI) no sentido estrito, mas tentar aplicar os conceitos inerentes a
esse tipo de sistema de uma maneira ba´sica. Em especial, nosso foco sera´ oferecer um
sistema de exemplos alternativos ao estudante. Essa e´ uma decisa˜o promissora porque ja´
foi obtido sucesso considera´vel com essa abordagem no ensino do uso de bibliotecas na
pro´pria Universidade de Bras´ılia (P´ıccolo, 2006).
1
1.1 Problemas e Justificativa
Embora programac¸a˜o seja uma das atividades fundamentais na Cieˆncia da Computac¸a˜o,
muitos estudantes tem grandes dificuldades para aprender a programar (Jenkins, 2003;
Gomes e Mendes, 2007). Por outro lado, a demanda por cursos que exigem conhecimento
de programac¸a˜o teˆm crescido bastante (ACM, 2005). Desse modo, e´ de grande interesse
que se consigam ferramentas educacionais que auxiliem os estudantes no processo de
ensino-aprendizagem de programac¸a˜o. Tambe´m tem crescido o interesse em ferramentas
que auxiliem o professor a ministrar cursos de programac¸a˜o a um nu´mero crescente de
alunos; em outras palavras, e´ necessa´rio criar ferramentas que acrescentem escalabilidade
aos cursos de programac¸a˜o.
Tem-se tentado satisfazer a necessidade de escalabilidade no ensino de programac¸a˜o
atrave´s de do uso de ferramentas tutoriais remotas, especialmente sistema tutorial baseado
em Webs (STBWs). Entretanto, cursos remotos podem dificultar a aprendizagem do
aluno, que na˜o contaria com o apoio constante de um professor. Uma poss´ıvel soluc¸a˜o
para o problema da dificuldade de aprendizagem atrave´s de STBWs e´ permitir que tais
tutoriais se adaptem ao ritmo e necessidade dos estudantes. Isso e´ poss´ıvel, atrave´s do
uso de STIs.
O Tutorial ICC e´, desde ja´, um STBW que evolui aos poucos para um STI. Este
trabalho da´ mais um passo nessa direc¸a˜o, a saber, fornecer exemplos que possam ser
utilizados em um STI.
1.2 Objetivos
O objetivo geral deste trabalho e´ desenvolver um conjunto de taxonomias hiera´rquicas de
exemplos para o ensino de programac¸a˜o para os alunos da disciplina Introduc¸a˜o a` Cieˆncia
da Computac¸a˜o (ICC).
Os objetivos espec´ıficos deste trabalho, por sua vez, sa˜o:
1. identificar conceitos e habilidades que estudantes de programac¸a˜o podem ter difi-
culdade de apreender;
2. desenvolver exemplos, enunciados, programas e representac¸o˜es gra´ficas da execuc¸a˜o
de programas que exercitem os conceitos e habilidades identificados.
3. desenvolver uma representac¸a˜o gra´fica das taxonomias hiera´rquicas, para auxiliar o
aluno a se localizar em uma determinada taxonomia.
1.3 Metodologia
Propusemos e implementamos uma se´rie de taxonomias de exemplos organizada hierarqui-
camente em n´ıveis de dificuldade. Essa taxonomia foi influenciada tambe´m por pesquisas
publicadas, mas em sua maior parte e´ a aplicac¸a˜o do conhecimento emp´ırico e longa
2
experieˆncia de professores de programac¸a˜o da Universidade de Bras´ılia (UnB). Ha´ uma
taxonomia para cada cap´ıtulo atual do Tutorial ICC, exceto o primeiro e o u´ltimo (oitavo).
Para desenvolver uma taxonomia, identificamosos conceitos e habilidades que estu-
dantes de programac¸a˜o podem ter dificuldade de apreender em um determinado cap´ıtulo.
Concebemos, enta˜o, problemas que exercitem cada um dos conjuntos de conceitos pro-
postos.
Para cada um desses problemas, desenvolvemos verso˜es simplificadas de modo a criar
a´rvores de problemas em que cada problema exercita um subconjunto dos conjuntos de
conceitos. Escrevemos, enta˜o, enunciados para cada um dos problemas, incluindo os
problemas que exercitem todos os conceitos de um conjunto.
Uma vez que tivemos um conjunto de enunciados que podiam apresentar os conceitos
escolhidos, programamos soluc¸o˜es para os enunciados, em Pascal. Criamos tambe´m scripts
que, aliados com uma applet em Java ja´ desenvolvida, permitem representar graficamente
a execuc¸a˜o dos programas escritos.
Por fim, integramos os enunciados, os programas e os scripts gerados para cada
cap´ıtulo ao Tutorial ICC. Tambe´m desenvolvemos e implantamos uma representac¸a˜o
gra´fica das taxonomias hiera´rquicas, para auxiliar o aluno a se localizar em uma de-
terminada taxonomia.
1.4 Resultados esperados
Ao final deste trabalho, temos uma taxonomia de exemplos implementada para os cap´ıtulos
2, 3, 4, 5, 6 e 7 do Tutorial ICC. Essas taxonomias sa˜o um primeiro passo para trabalhos
futuros que envolvam a flexibilizac¸a˜o e automatizac¸a˜o da interface do Tutorial ICC em
prol de torna´-lo cada vez mais dotado de inteligeˆncia.
3
Cap´ıtulo 2
O Ensino de Programac¸a˜o
Embora programac¸a˜o seja uma das atividades fundamentais na Cieˆncia da Computac¸a˜o,
muitos estudantes teˆm grande dificuldade para aprender a programar (Jenkins, 2003;
Gomes e Mendes, 2007). Desse modo, e´ de grande interesse conseguir ferramentas educa-
cionais que auxiliem no processo de ensino-aprendizagem de programac¸a˜o. Neste cap´ıtulo,
apresentaremos algumas das questo˜es e dificuldades sobre ensinar a programar.
2.1 A dificuldade de ensinar a programar
Aprender e ensinar a programar sa˜o tarefas dif´ıceis. Grande nu´mero de estudantes de
Computac¸a˜o consideram muito dif´ıcil aprender programac¸a˜o, mesmo em etapas avanc¸adas
do curso. Essa e´ uma situac¸a˜o preocupante para o ensino de Computac¸a˜o: programac¸a˜o
e´ um componente ba´sico, ou mesmo uma ferramenta indispensa´vel para se compreender
va´rias a´reas da disciplina. O ensino de programac¸a˜o e´ objeto de diversos estudos que
buscam reduzir essa dificuldade, mas ha´ poucas evideˆncias de que se tenham conseguido
avanc¸os significativos na aprendizagem (Jenkins, 2003).
Va´rias razo˜es foram apontadas para essas dificuldades. Por vezes, afirma-se que o
problema na˜o e´ que aprender a programar seja dif´ıcil em si, mas sim que certos alunos
teˆm dificuldades, por na˜o terem algumas habilidades necessa´rias para programar bem
desenvolvidas, como habilidades matema´ticas ou para soluc¸a˜o de problemas. Entretanto,
Jenkins (2003) considera os resultados de pesquisas nesse sentido inconclusivos: enquanto
alguns trabalhos de fato mostram alguma correlac¸a˜o entre o domı´nio de certas habilida-
des e a maior ou menor facilidade em aprender a programar (por exemplo, Byrne e Lyons
(2001)), outros estudos indicam que na˜o ha´ tal correlac¸a˜o (Jenkins e Davy, 1999). De
qualquer forma, essas habilidades na˜o sa˜o necessariamente inatas, podendo ser desen-
volvidas; Gomes e Mendes (2007), por exemplo, consideram como problema a falta de
treinamento pre´vio do estudante em matema´tica e lo´gica, na˜o uma dificuldade inata; de
fato, a escolha do estudante por um curso de Cieˆncia da Computac¸a˜o ou correlato e´ um
ind´ıcio de que ele ja´ tem considera´vel interesse na a´rea de cieˆncias matema´ticas1.
1Temos constatado empiricamente que alguns estudantes escolhem o curso com uma visa˜o preliminar
erroˆnea da Computac¸a˜o, e esses mesmos estudantes teˆm se´rias dificuldades em aprender a programar.
4
2.2 Fatores cognitivos
Va´rios fatores cognitivos sa˜o relevantes para a maior ou menor facilidade na aprendizagem
de programac¸a˜o. O primeiro fator sa˜o os estilos de aprendizagem. Estudantes aprendem
de maneiras diferentes: estudando sozinho ou em grupo, estudando em detalhes ou su-
perficialmente a disciplina. Va´rios componentes de uma disciplina podem exigir maneiras
diferentes de se estudar. Usualmente, estudantes tendem a escolher os estilos que melhor
lhes serviram previamente para aprender algo, mas esse estilo pode na˜o ser adequado para
um determinado ponto do estudo de programac¸a˜o (Jenkins, 2003).
Como exemplo, consideremos os estilos de aprendizagem classificados como aborda-
gem aprofundada e abordagem superficial. A abordagem aprofundada e´ aquela na qual o
estudante busca pela compreensa˜o do to´pico, enquanto a abordagem superficial e´ aquela
na qual o estudo resume-se a pouco mais que memorizar as informac¸o˜es. Programac¸a˜o
e´ uma atividade que exige o uso de ambas as abordagens: enquanto e´ necessa´rio um
conhecimento mı´nimo, mesmo que vago, das regras le´xicas e sinta´ticas da linguagem de
programac¸a˜o utilizada, uma compreensa˜o profunda da semaˆntica e dos conceitos abstra-
tos sobre programac¸a˜o e´ exigido. No caso, na˜o so´ e´ necessa´rio que se utilize ambas as
abordagens em va´rios pontos da disciplina; e´ exigido que ambas as abordagens sejam
utilizadas ao mesmo tempo (Jenkins, 2003).
Os estilos de aprendizagem podem tambe´m variar de acordo com os tipos psicolo´gicos.
Alunos teˆm estilos de aprendizagem diferentes, que influenciam em seus me´todos e pre-
fereˆncias de estudo. Alguns preferem pensar em termos mais abstratos, enquanto outros
podem preferir conceitos mais concretos e aplicados; alguns alunos preferem me´todos
sistema´ticos de estudos, enquanto outros “deixam-se levar” pelo tema (Keirsey, 1998).
Ocorre que programac¸a˜o exige tanto racioc´ınio abstrato quanto concreto; por vezes, exige
me´todo r´ıgido e, noutras, experimentac¸a˜o avulsa. Inclusive, ha´ problemas que sa˜o mais
facilmente resolv´ıveis de uma forma que de outra. O estudante, pore´m, usualmente es-
colhe explorar o tema da programac¸a˜o apenas atrave´s da maneira que mais lhe agrada,
e tenta utilizar sua abordagem preferida sem considerar o cara´ter do problema. Uma
pesquisa preliminar focando no estilo de aprendizagem do aluno, com poss´ıvel aplicac¸a˜o
futura no Tutorial ICC, foi desenvolvido por Chaves Ju´nior e Bastos (2008). Outras pes-
quisas podera˜o abordar as pra´ticas necessa´rias na aprendizagem de programac¸a˜o, dando
um primeiro passo no trabalho sobre as diversas maneiras de estudar de cada tipo de
estilo de aprendizagem.
Outro fator importante — e problema´tico — no estudo de programac¸a˜o e´ a motivac¸a˜o.
Enquanto va´rios alunos aprendem a programar por vontade pro´pria e interesse pessoal
— em outras palavras, por motivac¸a˜o intr´ınseca —, outros estudantes o fazem em busca
de uma carreira financeiramente renta´vel ou apenas para obter diploma em um curso
superior qualquer — ou seja, por motivac¸a˜o extr´ınseca. Previsivelmente, alunos com mo-
tivac¸o˜es intr´ınsecas apresentam um desempenho melhor em aprendizagem que alunos com
motivac¸o˜es extr´ınsecas. Entretanto, a motivac¸a˜o extr´ınseca na˜o e´, de maneira alguma,
Entretanto, tais estudantes sa˜o uma minoria e, afinal, va´rios dos estudantes que demonstram grande
habilidade em diversas outras a´reas da Computac¸a˜o tambe´m teˆm dificuldades espec´ıficas em solucionar
problemas com co´digo.
5
um empecilho para a aprendizagem, de modo que estudantes com tais interesses na˜o sa˜o
“casos perdidos” (Jenkins, 2003).
Ale´m disso, existem diversos “ bugs” conceituais que afetam a maneira como pro-
gramadores iniciantes programam e leˆem programas. Por exemplo, e´ usual que o aluno
imagine que o programa e´, em certo sentido, executado de uma vez so´ — o que e´ usu-
almente chamado de “bug” de paralelismo; tambe´m ocorre de programadores iniciantes
lereminstruc¸o˜es de co´digo subentendendo intenc¸o˜es e na˜o apenas seu significado (“bug”
de intencionalidade) ou de escreverem co´digo que em seu racioc´ınio produza o efeito de-
sejado, mas que possui menos semaˆntica que a necessa´ria (“bug” de egocentrismo) (Pea,
1986). A catalogac¸a˜o e estudo desses “bugs” ja´ vem de longo tempo e inclui artigos como
Pea (1986) e Spohrer e Soloway (1986).
2.3 Fatores pedago´gicos
Os professores de programac¸a˜o teˆm um grande desafio: ensinar uma disciplina extrema-
mente jovem. O corpo de conhecimento sobre o processo dida´tico do ensino de Com-
putac¸a˜o e´ ainda pequeno quando comparado a outras disciplinas mais bem estabelecidas,
como A´lgebra e Ca´lculo. Isso e´ especialmente verdadeiro quando se trata de programac¸a˜o,
uma atividade cheia de idiossincrasias e peculiaridades que a colocam no meio do caminho
entre a A´lgebra e alguma engenharia.
Entretanto, isso na˜o implica que na˜o temos base alguma para comec¸ar a desenvolver e
propor um modelo de ensino de programac¸a˜o. Ja´ ha´ pesquisa na busca de uma metodo-
logia confia´vel de ensino de programac¸a˜o, e muitas das razo˜es das dificuldades do ensino
de programac¸a˜o ja´ sa˜o conhecidas, ao menos superficialmente.
Por exemplo, va´rios cursos de programac¸a˜o tendem a dar eˆnfase no ensino da lingua-
gem de programac¸a˜o, e na˜o na programac¸a˜o em si (Gomes e Mendes, 2007), ao ponto de
va´rias instituic¸o˜es terem uma se´rie de cursos de “Programac¸a˜o”, cada um ensinando uma
linguagem diferente. A escolha da linguagem de programac¸a˜o que suportara´ os exemplos
de um curso comumente e´ guiada pela linguagem mais popular na indu´stria no momento,
ao inve´s de considerar fatores dida´ticos (Jenkins, 2003). Isso pode ser problema´tico, dado
que a linguagem de programac¸a˜o e´ uma notac¸a˜o e, portanto, pode fazer uma dra´stica dife-
renc¸a na transmissa˜o de conceitos (Iverson, 1980). Por isso linguagens de programac¸a˜o de
cara´ter dida´tico, como Pascal (Wirth, 1972) e Logo (Pea, 1983), e ambientes que reduzam
as dificuldades do aluno sa˜o didaticamente importantes (Jenkins, 2003)(Gomes e Mendes,
2007).
O contexto em que o estudante acaba de adentrar tambe´m dificulta a aprendizagem.
E´ usual que o ensino de programac¸a˜o seja um dos primeiros cursos que um aluno de
Computac¸a˜o (ou alguma a´rea relacionada ou dependente) tenha durante sua graduac¸a˜o.
O aluno, inexperiente, ao lidar com ta˜o complexa disciplina, tem ainda mais dificuldades
de aprender. Muitos autores consideram que o posicionamento de ensino de programac¸a˜o
na grade curricular e´ excessivamente adiantado (Jenkins, 2003)(Gomes e Mendes, 2007)2.
2Nossa experieˆncia pessoal nos da´ uma visa˜o diversa: no´s, quando estudantes, ouvimos muitos cole-
gas de turma reclamarem do quanto se demorava para aprender a programar e para chegar aos cursos
6
Por fim, podemos citar tambe´m a grande heterogeneidade de estudantes nas turmas
de programac¸a˜o. Como o curso de programac¸a˜o e´ um dos primeiros a serem ministrados,
ha´ em suas turmas estudantes dos mais diversos backgrounds e perfis. Como tais cursos
na˜o raramente ainda seguem uma estrutura bastante tradicional de aula expositiva, seus
professores na˜o dispo˜em de tempo e energias suficientes para atender pessoalmente cada
um dos alunos. De fato, a falta de personalizac¸a˜o nos cursos e o desgaste do professor
sa˜o apontadas por va´rios pesquisadores como causas significativas para mau desempenho
de estudantes de programac¸a˜o (Jenkins, 2003)(Gomes e Mendes, 2007)(Lahtinen et al.,
2005).
2.4 Proposta
A ferramenta que pretendemos expandir — o Tutorial ICC — pode solucionar ou, ao
menos, amenizar va´rios dos problemas que afligem os estudantes e professores de pro-
gramac¸a˜o. A proposta do tutorial, a longo prazo, e´ tornar-se um sistema tutorial dotado
de inteligeˆncia, objetivo para o qual esse trabalho oferece mais um pequeno passo. Para
compreender como um sistema tutorial dotado de inteligeˆncia pode auxiliar o ensino de
programac¸a˜o, precisamos ver, antes o que sa˜o sistemas tutoriais inteligentes.
mais avanc¸ados e “pra´ticos”. Entretanto, esta e´ apenas uma evideˆncia anedo´tica: embora realmente te-
nhamos conhecidos alguns estudantes que reclamassem dessa demora (especialmente em verso˜es antigas
do curr´ıculo dos nossos cursos), na˜o sabemos quantos realmente reclamavam. Eis uma a´rea digna de
pesquisa.
7
Cap´ıtulo 3
Sistemas Tutoriais Inteligentes
Sistemas tutoriais inteligentes (do ingleˆs intelligent tutoring systems) sa˜o sistemas de
aprendizagem auxiliados por computador (SAAC) que se adaptam, sem necessidade de
cont´ınua intervenc¸a˜o humana, a`s necessidades e ao desempenho do aluno (Self, 1999).
Esses sistemas sa˜o um caso especial dos sistemas de instruc¸a˜o auxiliada por computador
(do ingleˆs computer aided instruction) que almejam utilizar tecnologias informa´ticas no
processo de ensino (Freedman, 2000). Tais sistemas se popularizaram bastante nas escolas
e empresas durante os anos 80 e 90, sendo utilizados para transmitir as mais variadas
competeˆncias e conhecimentos (Murray, 1999).
O Tutorial ICC evolui para adquirir, se na˜o o cara´ter de um sistema tutorial inteligente
em todos os aspectos, ao menos algumas caracter´ısticas e func¸o˜es de sistemas tutoriais
inteligentes, tornando-se um sistema tutorial dotado de inteligeˆncia. O corrente trabalho
e´ mais um passo nessa direc¸a˜o.
3.1 Arquitetura de um sistema tutorial inteligente
Um dos aspectos mais importantes de qualquer sistema computacional — inclusive de sis-
temas tutoriais inteligentes — e´ a sua arquitetura. Va´rias arquiteturas ja´ foram propostas
para sistemas tutoriais inteligentes mas, tradicionalmente, divide-se um sistema tutorial
inteligente em treˆs mo´dulos: o mo´dulo especialista, o mo´dulo do estudante e o mo´dulo
do tutor (Self, 1999). Ademais, a maioria das demais arquiteturas sa˜o apenas variac¸o˜es
isoladas desse modelo.
O mo´dulo especialista e´ responsa´vel por modelar o conhecimento a ser transmitido.
Treˆs abordagens sa˜o poss´ıveis nesse caso: a criac¸a˜o de um mo´dulo “caixa preta”, um
mo´dulo de “caixa de vidro” ou um mo´dulo de soluc¸a˜o de problemas. Um mo´dulo “caixa
preta” na˜o codifica a inteligeˆncia humana, mas so´ o conhecimento. Desse modo, esse
mo´dulo apenas pode fazer comparac¸o˜es entre o conhecimento do estudante e a repre-
sentac¸a˜o do conhecimento interna ao sistema. Esse modelo e´ insuficiente para o ensino,
de modo que sistemas tutoriais inteligentes que fazem uso de tais mo´dulos geralmente
incrementam seu desempenho com os chamados mo´dulos de soluc¸a˜o de problemas, que
decidem o comportamento do sistema para cada comportamento observado no mo´dulo
8
do estudante, com especial eˆnfase em enganos comuns. Alternativas aos mo´dulos “caixa
preta”, os mo´dulos “caixa de vidro” sa˜o usualmente baseados em formalismos dos co-
nhecimentos a serem apresentados. Seu desenvolvimento no geral depente do aux´ılio de
engenheiros de conhecimento, que apo´s entrevistar especialistas, cria uma representac¸a˜o
computacinal do conhecimento a ser transmitido (Burns e Capps, 1988).
O mo´dulo do estudante tenta simular o comportamento de um estudante, de modo a
poder prever qual o melhor passo a ser dado. No projeto desse mo´dulo, Burns e Capps
(1988) chama a atenc¸a˜o para treˆs dimenso˜es a serem levadas em conta. Primeiro, e´
necessa´rio saber que informac¸o˜es temos sobre o comportamento do usua´rio do sistema. A
maioria dos sistemas tutoriais inteligentes so´ tem acesso a`s respostas dadas pelo aluno a`s
questo˜es propostas.1 Segundo, conve´m distinguir qual a categoria do conhecimento que se
tenta transmitir; isto e´, e´ preciso ter em mente se queremos transmitir um conhecimento
procedural (conhecimento sobre como executar uma tarefa), declarativo (conhecimento
sobre fatos em geral, sem necessa´ria aplicac¸a˜o) ou mesmoqualitativo (habilidade em
fazer julgamentos e tirar concluso˜es de modelos mentais). Por fim, Burns e Capps (1988)
chama a atenc¸a˜o para a necessidade de se distinguir diferenc¸as entre o estudante e o
mo´dulo especialista. Tradicionalmente, usa-se a representac¸a˜o do conhecimento do pro´prio
mo´dulo especialista na implementac¸a˜o do mo´dulo do estudante; sistemas mais avanc¸ados,
pore´m, tambe´m fornecem uma biblioteca de erros que permitem que o sistema reaja de
maneira mais adequada a erros previstos (Burns e Capps, 1988).
O mo´dulo do tutor e´ o mo´dulo responsa´vel pela integrac¸a˜o entre o mo´dulo espe-
cialista e o mo´dulo do estudante. Ele e´ o real responsa´vel por escolher o fluxo de
apresentac¸a˜o do conteu´do, assim como por dar sugesto˜es e apresentar correc¸o˜es de ma-
neira ass´ıncrona. Existem diversas teorias instrucionais utilizadas na construc¸a˜o de tais
mo´dulos (Burns e Capps, 1988).
A esses componentes, Burns e Capps (1988) acrescenta o ambiente de instruc¸a˜o e a
interface homem-ma´quina. O ambiente de instruc¸a˜o e´ o conjunto de ferramentas utilizadas
no processo de transmissa˜o de conhecimento. Exemplos dessas ferramentas sa˜o jogos,
gra´ficos, animac¸o˜es etc. Elas compo˜em um micromundo no qual o aluno explora as
possibilidades do sistema tutorial inteligente. A interface homem-ma´quina e´ o conjunto
de tecnologias utilizado para a comunicac¸a˜o entre o computador e o aluno. O Tutorial
ICC, por exemplo, utiliza a interface Web atrave´s de uma interface de usua´rio gra´fica.
Beck et al. (1996) propo˜em uma divisa˜o levemente diferente. O conhecimento do
domı´nio estaria separado do mo´dulo especialista: enquanto o conhecimento do domı´nio se-
ria uma base de dados de conhecimento a ser utilizado, o mo´dulo especialista representaria
o conhecimento de uma pessoa especialmente ha´bil no tema estudado. O mo´dulo espe-
cialista seria, enta˜o, responsa´vel por comparar a soluc¸a˜o dada pelo aluno com a soluc¸a˜o
do especialista. Ale´m disso, Beck et al. (1996) apresentam tanto o ambiente de instruc¸a˜o
1Entretanto, va´rios sistemas tentam captar e processar informac¸o˜es sobre outros aspectos do compor-
tamento do aluno como, por exemplo, seu estado emocional. Esses sistemas sa˜o denominados sistemas
tutoriais inteligentes afetivos e podem tanto escolher a ordem de apresentac¸a˜o do conteu´do quanto enviar
mensagens de motivac¸a˜o ou apoio ao estudante (Nkambou, 2006). Infelizmente, como Murray (1999)
ressalta, sistemas baseados em hipermı´dia e Web, como o Tutorial ICC, na˜o dispo˜em de tais facilidades,
ao menos na˜o de maneira trivial.
9
quanto a interface homem-ma´quina como um componente so´: o modelo de comunicac¸a˜o,
que intermedeia a interac¸a˜o entre a ma´quina e o aluno. A figura 3.1 apresenta as interac¸o˜es
entre os mo´dulos da arquitetura proposta por Beck et al. (1996).
Modelo de estudante Mo´dulo Pedago´gico Modelo de Comunicac¸a˜o
Conhecimento de Domı´nio Modelo de Especialista
6 6
�
�
�
�>
Z
Z
Z
Z}
-
ff -
Figura 3.1: Componentes de um STI, segundo Beck et al. (1996)
Uma alternativa com alterac¸o˜es mais significativas e´ a de Gugerty (1997). Gugerty
(1997) propo˜e a criac¸a˜o de sistemas tutoriais inteligentes sem mo´dulos de estudante.
Tais sistemas seriam, enta˜o, ferramentas computacionais de aux´ılio a professores. Esses
sistemas sa˜o chamados sistemas tutoriais inteligentes na˜o-diagno´sticos, em oposic¸a˜o aos
sistemas tutoriais inteligentes tradicionais que fazem um diagno´stico do estado afetivo
e/ou cognitivo do estudante. De fato, a experieˆncia tem mostrado que sistemas tutoriais
inteligentes sa˜o caros e dif´ıceis de se desenvolver, embora bastante efetivos (Murray, 1999),
e o mo´dulo de estudante e´ a parte mais dif´ıcil de se desenvolver (Burns e Capps, 1988).
Ademais, o estado atual da tecnologia informa´tica ainda na˜o oferece uma largura de
banda de informac¸o˜es sobre o usua´rio suficiente para uma avaliac¸a˜o significativa do estado
cognitivo e afetivo do aluno e, no final das contas, os ganhos pedago´gicos do uso de sistemas
tutoriais inteligentes na˜o-diagno´sticos sa˜o considera´veis (Gugerty, 1997). Embora esse
tipo de sistema tutorial fuja do modelo tradicional, ele e´ bastante promissor e pode servir
como refereˆncia em va´rios aspectos para o nosso sistema.
Como se percebe, ha´ va´rias divergeˆncias sobre como organizar a arquitetura de um
sistema tutorial inteligente. Entretanto, essas sa˜o, quase sempre, divergeˆncias superficiais:
todos os modelos de sistemas tutoriais inteligentes, de certo modo, derivam da arquitetura
seminal apresentada por Self (1974).
3.2 Categorias de sistemas tutoriais inteligentes
Nosso primeiro passo sera´ tentar situar o Tutorial ICC no estado da arte dos sistemas
tutoriais inteligentes. O que e´ interessante que o Tutorial ICC tenha? O que outros
sistemas nos ensinam?
Uma primeira diferenciac¸a˜o a ser feita e´ entre os sistemas tutoriais inteligentes shell e
tool. Um shell e´ um framework para desenvolvimento de sistemas tutoriais inteligentes; ge-
ralmente, e´ mais voltado para programadores de computadores, que podem customiza´-los,
e sa˜o mais gene´ricos. Ja´ tools sa˜o mais voltados para o pu´blico em geral, fornecendo inter-
faces que permitem na˜o programadores registrarem o conhecimento no sistema (Murray,
1999). Nessa categorizac¸a˜o, Tutorial ICC e´ claramente um tool.
10
Murray (1999) divide os sistemas tutoriais inteligentes em sete categorias na˜o ortogo-
nais em func¸a˜o dos seus domı´nios de atuac¸a˜o e a´reas em que seu uso e´ mais adequado.
As categorias, sumarizadas na tabela 3.1, sa˜o as seguintes:
1. Planejamento e sequenciamento de curr´ıculos
Os sistemas tutoriais inteligentes de planejamento e sequenciamento de curr´ıculos
definem unidades de instruc¸a˜o cujo fluxo de apresentac¸a˜o e´ decidido pelo sistema
de acordo com as necessidades do aluno. Para o estudante, esses sistemas sa˜o muito
semelhantes a sistemas de gerenciamento de cursos (como o Moodle); entretanto, os
sistemas de planejamento e sequenciamento de curr´ıculos podem seguir quaisquer
ordens mais adequadas de apresentac¸a˜o de conteu´dos. A ordem de apresentac¸a˜o
de conteu´dos deve, pore´m, ser escolhida pelo sistema de forma automatizada, sem
interfereˆncia humana, assim como deve se adequar especificamente ao desempenho
de cada aluno.
2. Estrate´gias tutoriais
Diz-se que um sistema tutorial inteligente tem foco em estrate´gias tutoriais (ou
estrate´gias de ensino) quando tem a capacidade de decidir quais as melhores es-
trate´gias de apresentac¸a˜o de conteu´do para o aluno. Esses sistemas sa˜o semelhantes
aos sistemas de planejamento e sequenciamento de curr´ıculos, mas agem em um
n´ıvel de abstrac¸a˜o mais baixo. Enquanto os sistemas de planejamento e sequencia-
mento de curr´ıculos tomam deciso˜es sobre quais componentes do fluxo da mate´ria
va˜o apresentar; sistemas de estrate´gias tutoriais escolhem o melhor momento para
apresentar ferramentas de ensino, e na˜o so´ conteu´do. Por exemplo, um sistema que
decida explicar mais detalhadamente um determinado to´pico do ensino e escolha
quando apresentar uma determinada explicac¸a˜o ou um exemplo sa˜o sistemas de
estrate´gias tutoriais.
3. Simulac¸a˜o de dispositivos e treinamento em equipamentos
Va´rios sistemas tutoriais inteligentes buscam simular certos dispositivos para o estu-
dante. A interac¸a˜o entre o estudante e o sistema mimetiza o uso de um determinado
dispositivo ou equipamento. Desse modo, esses sistemas, categorizados como siste-
mas de simulac¸a˜o de dispositivos ou sistemas de treinamento em equipamentos, per-
mitem que o estudante possa compreender o funcionamento do dispositivo simulado
sem ter de lidar com o dispositivo em si. Isso e´ especialmente u´til quando se quer
ensinar o uso de equipamentos caros, fra´geis, perigosos ou inacess´ıveis. Tais sistemas
tambe´m sa˜ointeressantes pois permitem que se deˆ uma resposta mais dida´tica ao
estudante, ao inve´s do erro real gerado pelo dispositivo.
4. Sistemas especialistas e tutores cognitivos
E´ bastante comum o uso de simulac¸o˜es cognitivas em sistemas tutoriais inteligentes.
Sistemas tutoriais inteligentes que usam esse me´todo possuem um mecanismo de
simulac¸a˜o de cognic¸a˜o que, baseado em regras, tentam criar um modelo de cognic¸a˜o
do atual esta´gio de conhecimento do aluno. Esse modelo e´ utilizado pelo mo´dulo
11
especialista para definir o melhor fluxo de ensino. Esses sistemas sa˜o chamados
de sistemas tutores cognitivos, ou sistemas de modelagem de cognic¸a˜o. Murray
(1999) po˜e na mesma categoria tanto esses sistemas quanto os sistemas que fazem
uso de sistemas especialistas para a resoluc¸a˜o de problemas. A diferenc¸a e´ que
sistemas especialistas sa˜o utilizados no mo´dulo especialista para encontrar a soluc¸a˜o
de problemas dida´ticos e na˜o para modelar o estado cognitivo do estudante.
5. Mu´ltiplos tipos de conhecimento
Quanto um sistema tutorial inteligente baseia-se em uma determinada teoria do
conhecimento para escolher a maneira mais adequada de apresentar uma parte do
conteu´do, diz-se que o sistema possui mu´ltiplos tipos de conhecimentos. Por exem-
plo, um sistema com mu´ltiplos tipos de conhecimento pode dividir o conhecimento
a ser transmitido em treˆs categorias: fatos, conceitos e procedimentos. Cada com-
ponente da habilidade maior a ser ensinada contaria com um me´todo espec´ıfico de
ensino, dependendo de qual das treˆs categorias acima melhor modela o componente.
Esses sistemas tendem a ser mais fa´ceis de configurar, mas sa˜o menos flex´ıveis.
6. Sistemas de propo´sito espec´ıfico
Embora sistemas tutoriais inteligentes gene´ricos tenham atra´ıdo bastante interesse,
tambe´m pode ser interessante projetar sistemas tutoriais inteligentes para a´reas es-
pec´ıficas. Na˜o raramente, sistemas gene´ricos surgem do desenvolvimento de um
sistema espec´ıfico que vai gradativamente se tornando parametriza´vel e reutiliza´vel.
Por um lado, esses sistemas de propo´sito espec´ıfico atingem um pu´blico-alvo bem
restrito; por outro lado, podem utilizar ferramentas dida´ticas espec´ıficas mais po-
derosas.
7. Hipermı´dia adaptativa/inteligente
Com a crescente sofisticac¸a˜o de sistemas de hipermı´dia (notadamente, a Web), um
passo natural seria o desenvolvimento de sistemas tutoriais inteligentes baseados
em hipermı´dia adaptativa (ou hipermı´dia inteligente). De fato, sistemas tutoriais
inteligentes baseados na Web teˆm se tornado predominantes nessa a´rea de pesquisa.
Esses sistemas permitem a apresentac¸a˜o, ordenac¸a˜o, filtragem etc. de links em
func¸a˜o de va´rios aspectos da disciplina ou do desempenho do aluno, como fluxo
de apresentac¸a˜o, dificuldade, adequac¸a˜o de pre´-requisitos etc. Comumente, tais
sistemas sa˜o sistemas de planejamento e sequenciamento de curr´ıculo, ou sistemas
de estrate´gias tutoriais com uma interface baseada em hipermı´dia.
Embora essa classificac¸a˜o mais parec¸a a “enciclope´dia chinesa” de Jorge Luis Bor-
ges (Foucault, 2002) que uma taxonomia tradicional, ela e´ muito u´til. O pro´prio Murray
a descreve mais como um “saco de dicas” que uma “caixa de ferramentas”. De qual-
quer forma, Tutorial ICC pode se encaixar mais ou menos bem em va´rias dessas ca-
tegorias. Nosso objetivo inicial e´, a princ´ıpio, torna´-lo um sistema de planejamento e
sequenciamento de curr´ıculos, ou, mais provavelmente, um sistema de estrate´gias tuto-
riais; naturalmente, podemos torna´-lo ambos. Do mesmo modo, ja´ hoje o Tutorial ICC
12
Categoria Vantagens Desvantagens Variac¸o˜es
Planejamento
e sequenci-
amento de
curr´ıculos
Executar regras para
sequenciamento de
mo´dulos e programas
Pouca fidelidade ao
modelo de estudante;
representac¸a˜o superfi-
cial de habilidades
As regras podem ser
fixas ou altera´veis pelo
autor
Estrate´gias
tutoriais
Estrate´gias tutoriais
varia´veis dentro do
mo´dulo; conjunto so-
fisticado de primitivas
e mu´ltiplas estrate´gias
tutoriais
Pouca fidelidade ao
modelo de estudante;
representac¸a˜o superfi-
cial de habilidades
Me´todo de estrate´gia
de representac¸a˜o,
fonte de expertise
instrucional
Simulac¸a˜o de
dispositivos
e treina-
mento em
equipamentos
Tutoramento de iden-
tificac¸a˜o de compo-
nentes, operac¸a˜o e re-
soluc¸a˜o de problemas;
habilidades procedu-
rais
Estrate´gias instrutivas
limitadas; modelagem
de estudante limitada
Fidelidade da si-
tuac¸a˜o, facilidade
de composic¸a˜o de
tutorial
Sistemas
especialistas
e tutores
cognitivos
Modelo do domı´nio
de especializac¸a˜o mais
profundo e executa´vel;
facilidade de inclusa˜o
de erros e comporta-
mento de novato
Dificuldade de cons-
truc¸a˜o; limitac¸a˜o a ha-
bilidades procedurais
ou de soluc¸a˜o de pro-
blemas; estrate´gias de
instruc¸a˜o limitadas
Modelos de habilidade
baseados em cognic¸a˜o
ou desempenho
Mu´ltiplos
tipos de
conhecimento
Representac¸a˜o clara
e me´todo instrutivos
pre´-definidos para
fatos, conceitos e
procedimentos
Limitado a fatos, con-
ceitos e procedimentos
simples; estrate´gias
tutoriais pre´-definidas
Inclusa˜o de sequenci-
amento curricular in-
teligente; variac¸a˜o dos
tipos de conhecimento
e tarefas suportados
Sistemas de
propo´sito
espec´ıfico
Modelos de sistemas
proveˆem uma grande
ajuda na composic¸a˜o
do conteu´do; um
projeto ou princ´ıpio
pedago´gico espec´ıfico
pode ser enfatizado
Ferramentas limitadas
ao tipo de tutor que
suportam; inflexibili-
dade na representac¸a˜o
e pedagogia
Grau de inflexibili-
dade
Hipermı´dia
adaptati-
va/inteligente
Acess´ıvel pela Web;
uniformidade de in-
terface de usua´rio;
selec¸a˜o adaptativa e
anotac¸a˜o de hiper-
ligac¸a˜o
Interac¸a˜o limitada;
largura de banda de
resposta de modelo de
estudante limitada
Foco em micro ou ma-
crovisa˜o; grau de inte-
ratividade.
Tabela 3.1: Categorias de STIs, segundo Murray (1999)
13
fornece simulac¸o˜es de um computador, tornando-o um potencial sistema de simulac¸a˜o
de dispositivos. Como programac¸a˜o exige o conhecimento de uma se´rie de fatos, concei-
tos e habilidades, e´ tambe´m bem prova´vel que o Tutorial ICC se torne um sistema de
mu´ltiplos conhecimentos. Como, afinal, o Tutorial ICC e´ um sistema Web, ele e´, desde
ja´, um sistema de hipermı´dia, e o transformaremos em um sistema de hipermı´dia adapta-
tiva. Estudando cada um dos cases apresentados em Murray (1999), podemos encontrar
diversas ide´ias para nos auxiliar no nosso projeto.
3.3 Vantagem dos sistemas tutoriais inteligentes
Os sistemas de aprendizagem auxiliada por computador (SAAC) fornecem uma se´rie de
vantagens aos professores e estudantes de programac¸a˜o. Por exemplo, dado o aumento
na demanda por cursos focados em Tecnologia da Informac¸a˜o, o nu´mero de aluno nas
turmas de disciplinas de programac¸a˜o tende a crescer bastante, como comentamos no
cap´ıtulo 1; SAACs permitem que as partes mais fa´ceis de assimilar do conteu´do dessas
disciplinas sejam ministradas em massa para os alunos, permitindo que o professor se
desgaste menos e foque mais em ajudar os alunos com mais dificuldades. De modo ana´logo,
estes sistemas viabilizam cursos de educac¸a˜o a distaˆncia (EaD). Tais sistemas tambe´m
permitem que o aluno possa estudar em seu pro´prio ritmo, algo que pode ser bastante
positivo para a aprendizagem, conforme comentado na sec¸a˜o 2.3. O Tutorial ICC, sobre
o qual trabalhamos, e´ um exemplo sistema de aprendizagem auxiliada por computador
(SAAC).
Entretanto, SAACs teˆm desvantagens. Uma destas desvantagens e´ a despersonalizac¸a˜o
do ensino. Mesmo cursos tradicionais de programac¸a˜o na˜o alcanc¸am o ideal de cursos
personalizados, com foco nas dificuldades dos alunos; SAACs tradicionais tendem a ser
ainda mais problema´ticos.De modo ana´logo, estes sistemas na˜o se adaptam ao ritmo de
aprendizagem e estilo de estudo dos estudantes.
Te´cnicas de desenvolvimento de STIs podem ser utilizadas em SAACs para tentar su-
perar essas desvantagens. De fato, va´rios STIs se adaptam ao ritmo, estilo e personalidade
do aluno. A me´dio prazo, espera-se que o Tutorial ICC torne-se adapta´vel aos diversos
n´ıveis de dificuldade dos alunos.
3.4 O papel do trabalho corrente
Neste trabalho, nosso objetivo e´ prover ao Tutorial ICC uma se´rie de exemplos, orga-
nizados em taxonomias de exemplos hiera´rquicas, que permitam que alunos em diversos
esta´gios e ritmos de aprendizagem analisar cena´rios simples e complexos de acordo com
sua pro´pria capacidade. Esses cena´rios devem conter um enunciado, uma soluc¸a˜o em
co´digo-fonte Pascal e um script de execuc¸a˜o de “tira-teima”, que representa graficamente
a execuc¸a˜o do programa, atrave´s de uma applet Java. Tambe´m faz parte do trabalho uma
representac¸a˜o da posic¸a˜o do aluno na taxonomia.
A maneira como essas tarefas foram desenvolvidas e´ apresentadas no cap´ıtulo 4.
14
Cap´ıtulo 4
Taxonomias de Exemplos
Afora os exemplos desenvolvidos e integrados ao Tutorial ICC, um dos principais resulta-
dos deste trabalho e´ o me´todo de desenvolvimento de uma forma de estruturar problemas
que denominamos taxonomias hiera´rquicas de exemplos. O me´todo envolve uma se´rie de
passos, seus pro´prios termos e algumas recomendac¸o˜es. Abaixo, seguem estes resultados.
4.1 Taxonomia hiera´rquica de exemplos
Uma taxonomia e´, literalmente, a cieˆncia ou te´cnica de classificac¸a˜o (Houaiss et al., 2001,
pp. 2680—2681). No nosso trabalho, uma taxonomia de exemplos e´ uma classificac¸a˜o
de um conjunto de exemplos; por extensa˜o, uma taxonomia de exemplos e´ tambe´m um
conjunto de exemplos organizados segundo uma determinada classificac¸a˜o. Por sua vez,
uma taxonomia hiera´rquica de exemplos e´ uma taxonomia na qual os exemplos sa˜o orga-
nizados de forma estruturada, como a´rvores. Tambe´m dizemos, neste trabalho, que uma
taxonomia hiera´rquica e´ uma a´rvore de exemplos, de modo que e´ poss´ıvel que nos refi-
ramos a alguma propriedade de a´rvores, mas se referindo a uma taxonomia hiera´rquica.
Como trataremos apenas de taxonomias hiera´rquicas de exemplos, toda vez que usarmos
o termo “taxonomia” o significado sera´ “taxonomia de exemplos hiera´rquica”.
Cada taxonomia exemplifica o uso de um conjunto de caracter´ısticas remov´ıveis. Uma
caracter´ıstica remov´ıvel e´ um conceito, te´cnica ou padra˜o que o estudante deve aprender.
A raiz da a´rvore da taxonomia deve utilizar todas as caracter´ısticas remov´ıveis; seus
no´s diretamente subordinados devem explorar subconjuntos diferentes das taxonomias
da raiz, e os filhos desses no´s apresentara˜o subconjuntos dos subconjuntos que seus pais
apresentam.
Na pra´tica, no´s utilizamos taxonomias com duas ou treˆs caracter´ısticas remov´ıveis.
Se a taxonomia tiver duas caracter´ısticas remov´ıveis, os no´s filhos da raiz devera˜o ter,
cada um, uma caracter´ıstica. Parece natural que cada um desses no´s tenha ele mesmo
um no´ filho sem nenhuma caracter´ıstica; entretanto, na˜o seria muito dida´tico fazer o
estudante descer mais um n´ıvel nos exemplos para observar um exemplo que sequer apre-
senta uma das caracter´ısticas da a´rvore. Deste modo, o no´ que na˜o conte´m nenhuma
15
das caracter´ısticas remov´ıveis torna-se filho do no´ principal. A figura 4.1 apresenta uma
representac¸a˜o gra´fica dessa a´rvore. O travessa˜o e´ o ro´tulo do no´ sem caracter´ısticas.
��
��
C1, C2
��
��
—
�
�
�
�
�
�
�
�
�
��
��
��
C1 ��
��
C2
Z
Z
Z
Z
Z
Z
Z
Z
Z
ZZ
Figura 4.1: Representac¸a˜o de taxonomia com duas caracter´ısticas remov´ıveis
Se a taxonomia tiver treˆs caracter´ısticas remov´ıveis, o exemplo raiz deve usar as treˆs. A
raiz teria, usualmente, treˆs no´s filhos, cada um apresentando duas das treˆs caracter´ısticas
remov´ıveis. Esse no´ filho e´, por sua vez, raiz de uma suba´rvore que tem a estrutura de uma
taxonomia de duas caracter´ısticas remov´ıveis. A figura 4.2 apresenta uma representac¸a˜o
gra´fica dessa a´rvore. O travessa˜o e´ o ro´tulo do no´ sem caracter´ısticas.
��
��
C1, C2, C3
��
��
C1, C2
,
,
,
,
,
,
,
,
,
��
��
C1, C3 ��
��
C2, C3
l
l
l
l
l
l
l
l
l
��
��
—
�
�
�
�
�
��
��
��
C1
��
��
C2
L
L
L
L
L
LL
��
��
—
�
�
�
�
�
��
��
��
C1
��
��
C3
L
L
L
L
L
LL
��
��
—
�
�
�
�
�
��
��
��
C2
��
��
C3
L
L
L
L
L
LL
Figura 4.2: Representac¸a˜o de taxonomia com treˆs caracter´ısticas remov´ıveis
Se uma taxonomia tem uma das estruturas apresentadas acima, dizemos que e´ uma
taxonomia totalmente preenchida. Embora tenhamos focado em gerar taxonomias total-
mente preenchidas, nem sempre e´ poss´ıvel ou interessante “forc¸ar” o total preenchimento
16
de uma taxonomia. Por exemplo, muitas vezes o exemplo sem caracter´ısticas remov´ıveis
em uma taxonomia pode ser simples demais e na˜o precisa ser apresentado. Isto ocorre co-
mumente com taxonomias de treˆs caracter´ısticas, e a a´rvore resultante possui a estrutura
representada na figura 4.3. A sec¸a˜o 5.2 apresenta uma taxonomia com esta estrutura.
��
��
C1, C2, C3
��
��
C1, C2
,
,
,
,
,
,
,
,
,
��
��
C1, C3 ��
��
C2, C3
l
l
l
l
l
l
l
l
l
��
��
C1
�
�
�
�
�
��
��
��
C2
B
B
B
B
B
BB
��
��
C1
�
�
�
�
�
��
��
��
C3
B
B
B
B
B
BB
��
��
C2
�
�
�
�
�
��
��
��
C3
B
B
B
B
B
BB
Figura 4.3: Representac¸a˜o de taxonomia sem no´ sem caracter´ısticas
Outro caso de a´rvore na˜o totalmente preenchida ocorrem quando ao menos uma ca-
racter´ıstica remov´ıvel so´ pode ser apresentada se uma outra qualquer estiver presente.
Por exemplo, considere uma a´rvore de treˆs caracter´ısticas remov´ıveis C1, C2 e C3 tal que,
para C3 estar presente em um exemplo, e´ necessa´rio que ou C1 ou C2 tambe´m estejam
presentes. Na˜o ha´ exemplos que exercitem apenas C3. A estrutura da taxonomia e´ a apre-
sentada na figura 4.4, e a sec¸a˜o 5.4 apresenta uma taxonomia na qual esta configurac¸a˜o
ocorre.
Dizemos que essas caracter´ısticas remov´ıveis sa˜o caracter´ısticas na˜o-ortogonais entre
si pois elas se influenciam; em contraposic¸a˜o, caracter´ısticas remov´ıveis que podem estar
presentes em um exemplo independente das outras sa˜o chamadas de caracter´ısticas ortogo-
nais entre si. Se uma taxonomia e´ constru´ıda apenas a partir de caracter´ısticas ortogonais
— isto e´, todas as caracter´ısticas que geram a taxonomia sa˜o ortogonais entre si —, ela
e´ dita uma taxonomia ortogonal ; caso contra´rio, e´ chamada de taxonomia na˜o-ortogonal.
Em geral, nossa experieˆncia indicou que taxonomias na˜o-ortogonais sa˜o mais complexas
de criar e, ao que tudo indica, menos claras, didaticamente falando. Enquanto e´ perfeita-
mente razoa´vel construir taxonomias na˜o totalmente preenchidas, construir taxonomias
na˜o-ortogonais na˜o e´ o ideal.
17
��
��
C1, C2, C3
��
��
C1, C2
,
,
,
,
,
,
,
,
,
��
��
C1, C3 ��
��
C2, C3
l
l
l
l
l
l
l
l
l
��
��
C1
�
�
�
�
�
��
��
��
C2
B
B
B
B
B
BB
��
��
C1 ��
��
C2
Figura 4.4: Representac¸a˜o de uma taxonomia na˜o-ortogonal
4.2 Enunciados e soluc¸o˜es
Dados os conceitos apresentados na sec¸a˜o 4.1, o processo para o desenvolvimento de ta-
xonomias de problemas poˆde ser facilmente definido. Primeiro, defin´ıamos conjuntos de
duas ou treˆs caracter´ısticas remov´ıveis — idealmente, conjunto de caracter´ısticas que
usualmente aparecem de fato pro´ximas em problemas reais e que fossem caracter´ısticas
ortogonais entre si. Para cada um desses conjuntos, elaboramosum enunciado que possi-
bilite apresentar todas as caracter´ısticas, assim como enunciados que permitam apresentar
apenas subconjuntos das caracter´ısticas, formando uma taxonomia hiera´rquica. Para cada
um dos enunciados, elaboramos um pequeno programa que resolva o problema.
A elaborac¸a˜o de enunciados apresenta uma se´rie de questo˜es. Por exemplo, qual e´
o melhor estilo: enunciados que apresentem problemas da vida real, ou enunciados abs-
tratos? Conforme comentamos na sec¸a˜o 2.2, ha´ estudantes que lidariam melhor com um
estilo, enquanto outros apreciariam mais o outro — e nem consideramos outros paraˆmetros
que variam em func¸a˜o do tipo de personalidade! Nossa abordagem foi experimentar enun-
ciados de ambos os estilos. Em breve, poderemos avaliar os resultados1.
Outra questa˜o foi: como exercitar bugs conceituais dos estudantes? Na sec¸a˜o 2.2
comentamos que ha´ va´rios enganos que estudantes cometem recorrentemente. Esses en-
ganos podem servir de guia para os exemplos, mas ainda ha´ o desafio de inseri-los em
enunciados. Do mesmo modo, ha´ padro˜es de programac¸a˜o importantes e u´teis que os
1Um estilo que pode ser promissor sa˜o os enunciados baseados em abstrac¸o˜es com estado, especialmente
jogos, como o Jogo da Vida, Snake ou Tetris. De fato, em conversas e observac¸o˜es anedo´ticas com calouros,
notamos que esses problemas sa˜o especialmente apreciados.
18
estudantes devem conhecer, e deve haver enunciados que os apresentem. Em verdade,
bugs conceituais e padro˜es importantes sa˜o boas caracter´ısticas remov´ıveis.
Tambe´m se questionou qual deve ser a relac¸a˜o entre os enunciados de uma taxono-
mia. Os enunciados devem ser independentes ou relacionados? Nossa hipo´tese e´ que os
enunciados devem ser relacionados, e os mais simples devem ser verso˜es ou “passos” dos
enunciados mais completos. Isto, supomos, mante´m o estudante no contexto mental do
problema, facilitando sua compreensa˜o.
Uma vez definidos os enunciados, devemos desenvolver os programas que os soluci-
onam. A linguagem de programac¸a˜o em que foram solucionados foi aquela ja´ utilizada
no Tutorial ICC: Pascal. Pascal e´ uma boa escolha tambe´m porque e´ uma linguagem
dida´tica, como explicado na sec¸a˜o 2.3.
Um desafio na criac¸a˜o dos enunciados e´: como criar um enunciado que “force” —
isto e´, torne mais natural — o aluno a utilizar as caracter´ısticas que queremos? Depois
de criarmos algumas taxonomias, notamos que esta e´ uma questa˜o secunda´ria: embora
seja realmente interessante criar enunciados que levem intuitivamente a`s caracter´ısticas
remov´ıveis escolhidas, sa˜o os desenvolvedores das taxonomias que escolhem como soluci-
onara˜o os enunciados. Isto e´ interessante de se ter em mente porque, por vezes, alguns
enunciados tornam-se pouco intuitivos para forc¸ar a soluc¸a˜o de um problema em uma
determinada direc¸a˜o. Este esforc¸o, pore´m, na˜o e´ necessa´rio. A taxonomia apresentada na
sec¸a˜o 5.2 e´ um bom exemplo pra´tico disso.
Figura 4.5: Screenshot da applet Java executando um “tira-teima”
19
4.3 “Tira-teima” e roteiros
Um dos recursos mais nota´veis do Tutorial ICC sa˜o os “tira-teimas”: representac¸o˜es
gra´ficas da execuc¸a˜o de um programa. Esses “tira-teimas” sa˜o apresentados atrave´s de
uma applet Java, apresentada na figura 4.5. Os “tira-teimas” sa˜o compostos de duas
partes: um programa cuja execuc¸a˜o sera´ simulada e um script espec´ıfico que simulara´ a
execuc¸a˜o. Denominamos tais scripts de roteiros.
Cada linha de um roteiro inicia com um nu´mero inteiro; este nu´mero e´ o ı´ndice da
linha do programa simulado que sera´ realc¸ada no programa quando a linha do roteiro
for executada. Apo´s este ı´ndice, podem vir zero ou mais comandos separados por ponto-
e-v´ırgula. Se na˜o houver nenhum comando a ser executado na linha, apenas o ponto-e-
v´ırgula segue o nu´mero; se houver mais de um, os comandos devem vir entre chaves. Ha´,
basicamente, comandos de declarac¸a˜o de varia´veis (que aparecem como caixas coloridas
na applet de tira-teima, comandos de escrita (que imprimem um valor no console da applet
e alterac¸a˜o de valores de varia´veis. A figura 4.6 apresenta o exemplo do roteiro utilizado
para o exemplo apresentado na sec¸a˜o 5.4.3.1.
1;
3;
4 real a, b;
6;
7 writeln ("Digite a parte real:");
8 {writeln ("3.0"); a = 3.0;}
9 writeln ("Digite a parte imaginaria:");
10 {writeln ("0.0"); b = 0.0;}
11;
18;
19;
22;
23 writeln ("3.0 + 0.0i e um real nao -negativo.");
24;
Figura 4.6: Exemplo de roteiro de “tira-teima”
Um roteiro pode percorrer apenas um caminho dentro de um programa. Por exemplo,
se ha´ um comando if com uma cla´usula else no programa, um roteiro pode passar
apenas pela cla´usula then ou pela cla´usula else. Isto levanta uma questa˜o importante:
como escolher o caminho que um roteiro deve percorrer em um programa?
No´s utilizamos alguns crite´rios bem simples para escolher os caminhos. Um, bastante
natural, foi:
Se o programa apresenta apenas uma caracter´ıstica remov´ıvel, o caminho escolhido
deve executar a caracter´ıstica.
20
O programa apresentado na sec¸a˜o 5.1.3.4 por exemplo, possui como caracter´ıstica
remov´ıvel a presenc¸a da cla´usula else no comando if. O roteiro deste programa iria,
enta˜o, passar pelo comando da cla´usula else, ao inve´s de passar pela cla´usula then.
Outro crite´rio adotado foi:
Dentre dois caminhos poss´ıveis, o roteiro deve passar pelo caminho mais complexo
ou que gere mais sa´ıda para o console da applet.
Este crite´rio foi adotado porque acreditamos que, quanto mais linhas de co´digo o
estudante observar serem executadas, mais oportunidades havera´ para fixar conceitos.
Ale´m disso, execuc¸o˜es sem sa´ıda podem ser bastante confusas: para o iniciante, e´ bem
poss´ıvel que um programa que na˜o imprima nada parec¸a um programa que na˜o fac¸a nada.
4.4 Localizac¸a˜o na taxonomia
Os va´rios exemplos sa˜o apresentados em pa´ginas HTML separadas, mas sentimos a ne-
cessidade de prover ao estudante uma maneira de ele se localizar em uma determinada
taxonomia. A soluc¸a˜o foi criar imagens de a´rvores, nas quais o exemplo em que o estu-
dante se encontra e´ destacado atrave´s de cores. A figura 4.7 apresenta a representac¸a˜o de
uma a´rvore.
Figura 4.7: Representac¸a˜o da localizac¸a˜o do aluno na taxonomia
21
4.5 Resumo
Dados os conceitos acima, o processo de criac¸a˜o de taxonomias para um cap´ıtulo pode
ser resumido da seguinte maneira:
1. selecionar conceitos e estruturas relevantes — isto e´, caracter´ısticas remov´ıveis — a
partir do tema do cap´ıtulo;
2. agrupar as caracter´ısticas remov´ıveis em conjuntos de duas ou treˆs caracter´ısticas.
Idealmente, as caracter´ısticas sa˜o conceitualmente pro´ximas e ortogonais entre si;
3. criar, para cada conjunto agrupado, enunciados que levem a programas que apresen-
tem subconjuntos das caracter´ısticas. Pode-se, eventualmente, na˜o criar enunciados
para alguns subconjuntos que sejam triviais ou invia´veis. Os enunciados de uma
taxonomia devem, idealmente, ser verso˜es mais simples ou mais completas de um
problema;
4. para cada enunciado, desenvolver uma soluc¸a˜o, em linguagem Pascal;
5. para cada soluc¸a˜o, desenvolver um roteiro de “tira-teima”;
6. inserir os programas e roteiros em pa´ginas HTML do Tutorial ICC;
7. para cada pa´gina, criar uma representac¸a˜o gra´fica da taxonomia da qual a pa´gina
faz parte, e inserir essa representac¸a˜o na pa´gina.
Naturalmente, os passos na˜o precisam seguir forc¸osamente esta ordem, mas e´ usual
que sejam seguidos assim.
O cap´ıtulo 5 apresenta a aplicac¸a˜o deste processo em um cap´ıtulo do Tutorial ICC.
22
Cap´ıtulo 5
Exemplos de Taxonomias
No tutorial ICC, implementamos sete conjuntos de taxonomias, um para cada um dos
cap´ıtulos do tutorial, a partir do segundo1.
O primeiro conjunto implementadoforam as taxonomias do cap´ıtulo 3. Este cap´ıtulo
trata de estruturas de decisa˜o if-then-else e case-of. Julgamos os conceitos por tra´s
destes comandos sofisticados o suficiente para antevermos alguns desafios da criac¸a˜o de
taxonomias, mas simples o suficiente para que na˜o nos perdeˆssemos no seu desenvolvi-
mento; por isso, cap´ıtulo 3 do tutorial foi escolhido para o desenvolvimento da primeira
taxonomia.
Chegamos a va´rias concluso˜es e questionamentos durante a criac¸a˜o desta taxonomia e,
portanto, elegemos a taxonomia deste cap´ıtulo como um bom exemplo para ser analisado.
5.1 A´rvore 1
Na primeira a´rvore do cap´ıtulo 3, propomos ao aluno um problema que possa ser resol-
vido com o comando if-then — assim sendo, todos os problemas da a´rvore devem ser
solucionados utilizando a estrutura condicional. As caracter´ısticas remov´ıveis, nesta pri-
meira a´rvore, sa˜o o uso do comando else e a presenc¸a de um comando composto, formado
por va´rios outros comandos agrupados pelos delimitadores de blocos begin-end. Como
ha´ duas caracter´ısticas remov´ıveis, essa a´rvore possui dois n´ıveis de hierarquia e quatro
exemplos.
5.1.1 Caracter´ısticas remov´ıveis
C1. uso de blocos begin-end
C2. uso de else
1O primeiro cap´ıtulo e´, basicamente, para apresentac¸a˜o de conceitos sobre computadores. Nesse
sentido, na˜o ha´ como criar uma taxonomia de exemplos de programac¸a˜o para o cap´ıtulo.
23
5.1.2 Numerac¸a˜o dos exemplos
C1 C2 Exemplo
• • 1 (subsec¸a˜o 5.1.3.1)
– – 1.1 (subsec¸a˜o 5.1.3.2)
• – 1.2 (subsec¸a˜o 5.1.3.3)
– • 1.3 (subsec¸a˜o 5.1.3.4)
5.1.3 Enunciados e programas
5.1.3.1 Exemplo 1
Enunciado Uma companhia de seguros vende seguros de carros. O prec¸o de um seguro
anual e´ 5%, ou 1/20 do prec¸o do carro. Entretanto, a companhia so´ vende seguros para
pessoas com mais de 25 anos.
Fac¸a um programa que leia o prec¸o do carro a ser segurado e a idade do motorista. Se
o motorista tiver idade para contratar seguro, imprima uma mensagem dizendo o valor
do seguro. Se o carro valer, por exemplo, R$ 20 mil, a mensagem sera´:
’Valor do seguro: R$ 1000.00. ’
Se o motorista na˜o tiver idade para contratar o seguro, imprima duas linhas. A
primeira linha sera´:
’Voce nao pode contratar o seguro.’
Supondo que o motorista tenha 22 anos, a segunda linha sera´:
’podera contaratar em 3 anos.’
Soluc¸a˜o A soluc¸a˜o usada foi a seguinte
program exemplo1;
var
idade : integer;
preco : real;
begin
writeln(’Qual e a sua idade?’);
readln(idade);
writeln(’Qual e o preco de seu carro?’);
readln(preco);
24
if idade >= 25
then
writeln(’Valor do seguro: R$ ’, preco /20:2:2 , ’.’)
else
begin
writeln(’Voce nao pode contratar o seguro.’);
writeln(’Podera contratar em ’, 25 - idade , ’ anos.’);
end;
end.
5.1.3.2 Exemplo 1.1
Enunciado Uma companhia de seguros vende seguros de carros. O prec¸o de um seguro
anual e´ 5%, ou 1/20 do prec¸o do carro. Entretanto, a companhia so´ vende seguros para
pessoas com mais de 25 anos.
Fac¸a um programa que diga se um potencial cliente dessa seguradora pode contratar
um seguro. O programa deve ler a idade do cliente e, caso ele tenha idade para contratar
o seguro, deve imprimir a mensagem:
’Voce pode contratar o seguro.’
Soluc¸a˜o A soluc¸a˜o usada foi a seguinte
program exemplo1_1;
var
idade : integer;
begin
writeln(’Qual e a sua idade?’);
readln(idade);
if idade >= 25
then
writeln(’Voce pode contratar o seguro.’);
end.
5.1.3.3 Exemplo 1.2
Enunciado Uma companhia de seguros vende seguros de carros. O prec¸o de um seguro
anual e´ 5%, ou 1/20 do prec¸o do carro. Entretanto, a companhia so´ vende seguros para
pessoas com mais de 25 anos.
Fac¸a um programa que diga se um potencial cliente dessa seguradora pode contratar
um seguro. O programa deve ler a idade do cliente e, caso ele na˜o tenha idade para
contratar o seguro, deve imprimir a mensagem:
25
’Voce nao pode contratar o seguro.’
Ale´m disso, deve tambe´m informar quando o cliente tera´ idade para contratar o seguro.
Supondo que o cliente tenha 22 anos, a mensagem sera´:
’Podera contratar em 3 anos.’
Soluc¸a˜o A soluc¸a˜o usada foi a seguinte
program exemplo1_2;
var
idade : integer;
begin
writeln(’Qual e a sua idade?’);
readln(idade);
if idade < 25
then
begin
writeln(’Voce nao pode contratar o seguro.’);
writeln(’Podera contratar em ’, 25-idade ,’ anos.’);
end;
end.
5.1.3.4 Exemplo 1.3
Enunciado Uma companhia de seguros vende seguros de carros. O prec¸o de um seguro
anual e´ 5%, ou 1/20 do prec¸o do carro. Entretanto, a companhia so´ vende seguros para
pessoas com mais de 25 anos.
Fac¸a um programa que leia o prec¸o do carro a ser segurado e a idade do motorista. Se
o motorista tiver idade para contratar seguro, imprima uma mensagem dizendo o valor
do seguro. Se o carro valer, por exemplo, R$ 20 mil, a mensagem sera´:
’Valor do seguro: R$ 1000.00. ’
Se o motorista na˜o tiver idade para contratar o seguro, imprima a mensagem:
’Voce nao pode contratar o seguro.’
26
Soluc¸a˜o A soluc¸a˜o usada foi a seguinte
program exemplo1_3;
var
idade : integer;
preco : real;
begin
writeln(’Qual e a sua idade?’);
readln(idade);
writeln(’Qual e o preco de seu carro?’);
readln(preco);
if idade >= 25
then
writeln(’Valor do seguro: R$ ’, preco /20:2:2 , ’.’)
else
writeln(’Voce nao pode contratar o seguro.’);
end.
5.1.4 Comenta´rios
No exemplo 1, t´ınhamos de apresentar ambas as caracter´ısticas remov´ıveis. Na a´rvore ori-
ginal, acrescentamos a caracter´ıstica C2 colocando blocos de comando tanto na cla´usula
then quanto na cla´usula else. Entretanto, decidimos posteriormente que seria mais inte-
ressante colocar o comando composto em apenas uma das cla´usulas: deste modo, espera-se
que o aluno compreenda que e´ poss´ıvel ter um comando composto em uma das cla´usulas
tendo um comando simples na outra cla´usula. Julgamos relevante inserir, sempre que
poss´ıvel, esse tipo de assimetria nos problemas. Ale´m disso, decidimos colocar o comando
composto na cla´usula else porque, no exemplo 1.2, o comando composto ja´ fora colocado
em uma cla´usula then.
5.2 A´rvore 2
Nosso objetivo na segunda a´rvore do cap´ıtulo 3 e´ apresentar exemplos de aplicac¸a˜o, ao
aluno, do uso dos operadores booleanos and, or e not. A a´rvore tem treˆs caracter´ısticas
remov´ıveis, que sa˜o o uso do operador and, o uso do operador or e o uso do operador not. O
exemplo maior utiliza as treˆs caracter´ısticas remov´ıveis e possui treˆs exemplos diretamente
subordinados; cada um desses exemplos possui duas das caracter´ısticas remov´ıveis, e
possuem dois exemplos subordinados, cada um exercendo uma caracter´ıstica remov´ıvel
do exemplo superior.
27
5.2.1 Caracter´ısticas remov´ıveis
C1. uso do operador and
C2. uso do operador or
C3. uso do operador not
5.2.2 Numerac¸a˜o dos exemplos
c1 c2 c3 Exemplo
• • • 2 (subsec¸a˜o 5.2.3.1)
• • – 2.1 (subsec¸a˜o 5.2.3.2)
• – • 2.2 (subsec¸a˜o 5.2.3.3)
– • • 2.3 (subsec¸a˜o 5.2.3.4)
• – – 2.1.1, 2.2.1 (subsec¸a˜o 5.2.3.5)
– • – 2.1.2, 2.3.1 (subsec¸a˜o 5.2.3.6)
– – • 2.2.2, 2.3.2 (subsec¸a˜o 5.2.3.7)
– – – — (ver comenta´rios na subsec¸a˜o 5.2.4)
5.2.3 Enunciados e programas
5.2.3.1 Exemplo 2
Enunciado Um certo pa´ıs exige que qualquer estrangeiro que va´ trabalhar em seu
territo´rio satisfac¸a duas condic¸o˜es. A primeira condic¸a˜o e´ que o contratador do estrangeiro
envie uma carta a` embaixada. Ale´m disso, o estrangeiro deve ter US$ 10 mil em uma
conta do pa´ıs de origem ou ter um imo´vel no pa´ıs de origem.
Fac¸a um programa que pergunte ao usua´rio se ele tem a carta do empregador, pergunte
se ele tem US$ 10 mil reais em uma conta no pa´ıs de origem e pergunte se ele tem um
imo´vel. Se o usua´rio na˜o tiver a carta ou alguma das

Outros materiais