|
Acadêmico(a): Jean Fabio Fuchs |
Título: Qualifica: um Método de Desenvolvimento de Algoritmos |
|
Introdução: |
Os recursos de informática vem sendo gradativamente incorporados na educação, na medida em que se verifica uma tendência de assimilar as novas tecnologias de informação e comunicação disponíveis. Conforme Mantovani et al. (2000) as tecnologias da informação e da comunicação apontam, nos meios educacionais, novos rumos de trabalho. Cabe aos educadores utilizar adequadamente os recursos dessas tecnologias e explorar seu potencial pedagógico, tendo em vista a configuração de novos ambientes de ensino e aprendizagem. De acordo com Casas (1999), a pedagogia em ciências de educação está baseada em dois princípios: (a) a instrução pode desenvolver as habilidades do aprendiz para que compreenda intuitivamente como funciona o mundo natural em vez de inculcar-lhe a representação formal e as habilidades de raciocínio que os cientistas usam; (b) a instrução que pode ajudar o aprendiz a desenvolver o seu modelo mental (existente) para uma concepção mais exata da realidade. Segundo Mattos, Fernandes e Lopez (1999), os estudantes que iniciam um curso de Graduação em Informática, normalmente encontram uma primeira dificuldade relacionada com a disciplina de Introdução a Programação (ou com nome similar), cujo principal objetivo é o de introduzir os conceitos básicos de lógica de programação. Esta dificuldade é na maioria das vezes decorrente da falta de experiência com os aspectos relacionados a ambientes industriais e/ou comerciais, pois é a partir destes ambientes que são caracterizados os exercícios propostos. Analisando-se o perfil dos alunos, verifica-se que em sua maioria, são oriundos do 2º Grau, e portanto, possuem conhecimentos abstratos sobre áreas científicas (matemática, física, biologia, e outros.). Porém, quando deparam-se com a descrição textual dos enunciados dos problemas apresentados nesta disciplina introdutória, geralmente encontram dificuldades em identificar como extrair as informações necessárias para iniciar a solução destes problemas. (MATTOS, 2002). Esta constatação é corroborada em Kovacic (2003, p. 794). Conforme Carvalho e Chiossi (2001, p. 19), quando os requisitos não são totalmente compreendidos, registrados e comunicados para a equipe de desenvolvimento, pode haver discrepância entre o que o sistema construído faz e o que deveria fazer. Estas discrepâncias no contexto de introdução à programação conduzem ao desenvolvimento de soluções erradas (na melhor das hipóteses) ou mesmo à dificuldade no desenvolvimento de uma solução (mesmo que incorreta). As pesquisas do Prof. Mauro Mattos na área de ferramentas de apoio ao ensino de introdução a programação vêm sendo desenvolvidas desde 1999 (MATTOS, 1999); MATTOS; WANGENHEIM, 1999; MATTOS, 2000ab; MATTOS, 2002). Neste período as pesquisas avançaram no sentido da utilização de técnicas de Inteligência Artificial (IA) aplicadas como ferramental de apoio ao desenvolvimento de um método de ensino de algoritmos a partir da análise de enunciados de problemas específicos e da condução do aluno no sentido da construção de um esboço da solução algorítmica. Kovacic (2003) apresenta os resultados de um estudo empírico realizado em 2003, na Open Polytechnic of New Zeland, sobre estilos de aprendizagem aplicado a um grupo de estudantes de computação e os estilos de ensino dos respectivos professores. As conclusões do autor corroboram os resultados obtidos por Felder (FELDER, 1993 apud KOVACIC, 2003, p. 795) enfatizando que, estudantes cujo estilo de aprendizagem é compatível com o estilo de ensinar de seus professores tendem a reter melhor as informações, obter melhores notas e manter interesse no curso. Ainda segundo Kovacic (2003, p. 802), a discrepância entre o estilo de aprendizagem e o estilo de ensino deve ser considerada como um obstáculo a ser superado e conduzir a mudanças nas práticas de ensino. Conforme Mattos (2005), um outro obstáculo ao aprendizado de introdução à programação está relacionado também à ausência de um método padrão de ensino em diferentes turmas desta mesma disciplina, o que limita a possibilidade de interação entre alunos de turmas diferentes da mesma fase (interação horizontal) e a possibilidade de interação entre alunos de semestres diferentes (interação vertical). A hipótese de pesquisa consiste em analisar a eficácia da adoção de uma ferramenta de análise de dados que permita a especificação de um esboço de solução para problemas de introdução à programação na perspectiva da construção de um método unificado de ensino de desenvolvimento de algoritmos nos cursos de computação da FURB. A presente proposta possui dois aspectos motivadores: os métodos de especificação de programas COBOL e o método de programação estruturada de Jackson. O primeiro aspecto está relacionado ao método de especificação de programas COBOL (Figura 1). Na época era comum a utilização de gabaritos de descrição de leiaute de registro e gabaritos de descrição de leiaute de relatório de saída como método de especificação de programas. A Figura 1 apresenta um exemplo obtido em Brown (2003) e caracteriza a especificação de um exercício da disciplina de Introdução a Programação COBOL. Na Figura 1 é possível identificar as duas características citadas anteriormente, ou seja: a) declaração explícita da estrutura de dados a ser utilizada (leiaute de registro) e, b) a declaração explícita do formato da saída (leiaute de relatório) esperada para o programa. Isto permite ao programador analisar o problema a partir de exemplos de dados de entrada e do leiaute de saída esperado. Segundo Mattos (1995), estas duas características estão associadas com a estrutura da linguagem. Em COBOL há a necessidade de declaração de uma File Section no programa fonte COBOL onde o leiaute do registro do arquivo a ser utilizado deve ser descrito. Além disso, há uma seção na Working-storage section que permite estabelecer o leiaute de cada linha-detalhe (em COBOL a saída em relatório demanda que cada linha com cabeçalho ou com dados a ser escrita tenha que ser previamente definida em termos de campos e pictures de campos) a ser escrita no relatório de saída. O segundo aspecto está relacionado ao método de programação estruturada de Jackson o qual pode ser resumido em três etapas (JACKSON, 1988, p. 39): a) considere o ambiente do problema e anote a maneira como ele é compreendido, definindo estruturas para os dados a serem processados; b) forme uma estrutura de programa baseada nas estruturas de dados; c) defina a tarefa a ser executada em termos das operações elementares utilizáveis, e aloque cada uma dessas operações a componentes apropriados da estrutura do programa. Como se pode observar, a estrutura da linguagem COBOL facilita a adoção da metodologia de Jackson uma vez que o programa é desenvolvido a partir da análise e detalhamento dos dados do programa. O projeto apresenta a fundamentação teórica e a descrição da arquitetura de uma ferramenta que, de um lado, possibilite ao professor de introdução a programação construir uma especificação mais detalhada do problema a ser resolvido pelo aluno (envolvendo a definição das estruturas de dados a serem utilizadas e o leiaute de saída esperado) e, de outro lado, permita ao aluno realizar uma análise da especificação do problema e a produção de um esboço de solução algorítmica que solucione o problema proposto. Para a produção do pseudocódigo do esboço da solução algorítmica, foi escolhido o Portugol, por ser muito utilizado na descrição de algoritmos, possibilitando o uso de comandos escritos na língua portuguesa facilitando o ensino, introduzindo o aluno iniciante dentro do formalismo da lógica e da programação. Conforme Saliba (1992), a forma de representação de algoritmo em Portugol é muito rica em detalhes, como a definição dos tipos das variáveis e, por assemelhar-se bastante à forma em que os programas são escritos. 1.1 OBJETIVOS O objetivo deste trabalho consiste na construção de uma ferramenta que permita a especificação detalhada de um problema de introdução a programação e a solução do mesmo por parte do aluno através da análise dos dados de entrada e das saídas esperadas. Os objetivos específicos são: a) construção de um módulo professor que permita ao mesmo não só descrever em termos textuais o enunciado do problema (em pelo menos 3 níveis de dificuldade –básico, intermediário e avançado) mas detalhar as estruturas de dados a serem utilizados na solução do mesmo; b) construção de um módulo aluno que possibilite a carga da especificação do problema proposto pelo professor e conduza o mesmo através de uma série de passos de refinamento de modo a permiti-lo construir um esboço de solução algorítmica para o problema. Quanto aos níveis de dificuldade, quando o exercício for de nível básico, os dados de entrada serão armazenados em variáveis locais de modo que o aluno não poderá qualificar duas ou mais entradas com o mesmo nome, quando o exercício for intermediário as entradas serão armazenadas em vetores e de nível avançado em estruturas do tipo record. |
|
|