Concepts & Trends

Ambiente Web para Execução e Acompanhamento de Exercícios de Programação

Description
Ambiente Web para Execução e Acompanhamento de Exercícios de Programação Adilson Vahldick 1, Silvano Lohn 1 1 Departamento de Sistemas e Computação Universidade Regional de Blumenau (FURB) Blumenau, SC
Published
of 10
All materials on our website are shared by users. If you have any questions about copyright issues, please report us to resolve them. We are always happy to assist you.
Related Documents
Share
Transcript
Ambiente Web para Execução e Acompanhamento de Exercícios de Programação Adilson Vahldick 1, Silvano Lohn 1 1 Departamento de Sistemas e Computação Universidade Regional de Blumenau (FURB) Blumenau, SC Abstract. This work presents the resources and the process of using a Web environment where students programming algorithms with Java syntax. The student develops programs based on the exercises listed also available in this environment. In addition to publishing, the environment also provides resources for compiling, debugging and implementation of these programs. The exercises are considered solved by teachers and/or monitors, who returned to the student evaluation of its resolution and, while it is not correct, he has the opportunity to correct it. At the end of the article is presented an experiment conducted in the classroom. Resumo. Este artigo apresenta os recursos e o processo na utilização de um ambiente na Web onde os alunos programam algoritmos com sintaxe Java. O aluno desenvolve os programas baseando-se nos enunciados dos exercícios também disponíveis nesse ambiente. Além da edição, o ambiente também oferece recursos de compilação, execução e depuração desses programas. Os exercícios resolvidos são examinados pelos professores e/ou monitores, que retornam ao aluno a avaliação de sua resolução e, enquanto ela não estiver correta, ele tem a oportunidade de corrigir o exercício. Ao final do artigo é apresentado um experimento realizado em sala. Palavras-chave: Aprendizado de programação; Ambiente de programação; Acompanhamento no ensino de Java. 1. Introdução As disciplinas de algoritmos e programação de computadores nos primeiros semestres apresentam alto grau de reprovação. Inúmeras causas são apontadas por pesquisadores para os elevados índices de reprovação nessas disciplinas como, hábitos de estudo centrados em memorização, falta de pré-requisitos em conteúdos correlatos principalmente nos conteúdos de matemática seqüência didática desmotivadora, dificuldades na compreensão do enunciado dos problemas, forte carga de conceitos abstratos, cultura instrucionista e prática pedagógica desmotivadora (Xavier, 2004). Para o sucesso no aprendizado de algoritmos, exige-se um forte comprometimento por parte dos alunos em praticar os exercícios fornecidos pelo professor, assim como outras tarefas extras. Porém, exige-se também do professor uma atenção personalizada ao aluno para respeitar seu ritmo individual de aprendizado, seja corrigindo vários exercícios como complementando com seus comentários. Os Sistemas Tutores Inteligentes (STI) podem ajudar os professores nesse processo, pois, segundo Moreira (2007), eles conseguem proporcionar o ensino individualizado criando caminhos para o aprendizado de acordo com as necessidades do estudante. Esse tipo de sistema consegue automatizar a tarefa do professor ao corrigir as atividades dos alunos e indicar o próximo passo que o aluno deve seguir. Porém, como no campo das artes não é possível tal tipo de automatização, a construção de algoritmos sofre de limitação similar. O aluno desenvolve o algoritmo, que pode devolver a resposta desejada, mas a sua estrutura pode não ser a melhor para alcançar o resultado. Por conseqüência, tal tipo de avaliação ainda precisa ser efetuada por pessoas experientes. Em sua pesquisa, Pimentel (2003) destaca que diversos tipos de ferramentas e ambientes têm sido propostos com o objetivo de facilitar o aprendizado de lógica e linguagens de programação. Porém, ele aponta que não existem indicações de uma vasta utilização destas ferramentas. Atualmente, para citar alguns ambientes, entre aqueles voltados para o ensino de programação, destacam-se VisuAlg (Apoio, 2008), BlueJ (Kölling, 2008), Alice (Carnegie, 2008) e outros com recursos profissionais (Eclipse, 2008 e Netbeans, 2008). Entretanto, o processo de avaliação desses exercícios é moroso e desmotivador: o aluno resolve o exercício no ambiente (por exemplo, Eclipse ou Netbeans) combinado pelo professor, compacta e submete o projeto por ou em algum Ambiente Virtual de Aprendizagem (AVA); o professor recebe, baixa, descompacta, abre no seu editor, avalia e devolve por a resposta ao aluno; e o aluno, através da avaliação do professor, corrige e recomeça o processo. Ainda precisa se considerar, a manutenção do histórico de avaliação dos exercícios de cada aluno. Com o intuito de melhorar esse processo, este artigo apresenta um ambiente web desenvolvido para o aluno resolver os exercícios, acessando os enunciados no próprio ambiente, e o professor acompanhar e comentar a resolução nesse mesmo ambiente. O aluno resolve o exercício editando, compilando, executando e depurando nesse ambiente web. O professor (ou monitores) avalia o programa, com as mesmas possibilidades de compilação e execução, e devolve ao aluno o resultado da avaliação. Esse ciclo se repete até o aluno alcançar o objetivo do exercício. Devido a este ambiente estar disponível na web, os usuários interagem com ele através de navegadores, dispensando instalação de softwares, e desvinculando fisicamente onde o aluno resolve seus exercícios: em casa, no trabalho ou na escola. O ambiente foi batizado como WebIDE. Como a linguagem Java é a oficial da instituição de ensino onde foi produzido este ambiente, determinou-se que seria adotado um subconjunto dessa linguagem, provendo recursos para solicitar e apresentar dados pelo programa desenvolvido pelo aluno. O artigo está organizado da seguinte forma: na seção 2, são relacionados os recursos da linguagem Java disponíveis no ambiente; na seção 3, é apresentado o ambiente; na seção 4 é descrita a arquitetura do ambiente; na seção 5, é descrito um experimento realizado em sala; e na seção 6, são apresentados os resultados do experimento e as direções que a instituição está tomando para aplicação desse ambiente. 2. Linguagem de Programação no Ambiente Essa seção apresenta os recursos de linguagem de programação disponíveis no WebIDE. Primeiramente, são delimitados os recursos da linguagem Java que o sistema aceita e, depois relacionados os recursos desenvolvidos para entrada e saída de dados. O aprendizado na disciplina de programação no primeiro semestre é focado nas estruturas básicas de programas, como as condicionais e de repetição, utilização de variáveis e algoritmos essenciais, por exemplo, definir o maior, o menor, a média, soma, e ordenar um conjunto de dados. A linguagem Java é orientada a objetos e existiria uma sobrecarga cognitiva considerável aos alunos iniciantes aprenderem todos esses assuntos junto da orientação a objetos. Por essa razão, se limitou as possibilidades dos alunos programarem somente utilizando objetos instanciados automaticamente pelo ambiente e não criarem suas próprias classes e objetos. Com isso, os alunos precisam conhecer a API que o ambiente disponibiliza, ou seja, chamar os métodos oferecidos pelo ambiente. Os programas devem ser focados em realizar algoritmos. Por exemplo, para o cálculo do fatorial de um número o aluno precisa codificar as linhas apresentadas na Figura 1a. Quando o aluno dispara no ambiente a ação de compilar, executar ou depurar esse programa, o sistema se encarrega de encapsular esse código em uma classe como ilustrado na Figura 1b. int base = 10; // calcular 10! int resultado = 1; for (int x=2;x =base;x++){ resultado += resultado*x; } public class Cod1 { private static WebE web; } public static void main(string[] args) { int base = 10; // calcular 10! int resultado = 1; for (int x=2;x =base;x++){ resultado += resultado*x; } } Figura 1. a) Exemplo de código digitado pelo aluno; b) Transformação pelo WebIDE desse mesmo código Não existem analisadores léxicos, sintáticos ou semânticos implementados no ambiente. Ele utiliza os programas disponibilizados na distribuição do Java: javac para compilar; java para executar; e jdb para depurar. A fonte para esses programas é o código ilustrado na Figura 1b. O código exemplificado na Figura 1a não solicita e nem apresenta dados ao usuário. Um programa sem esses recursos dificulta em muito os testes, pois o aluno não sabe se o resultado do programa apresentou o esperado. Por essa razão, foi criado um conjunto de métodos para entrada e saída de dados. A Figura 2 apresenta o código da Figura 1a com os métodos de entrada e saída. int base = web.leint( Número a fatorar : ); int resultado = 1; for (int x=2;x =base;x++){ resultado += resultado*x; } web.escrevervalor( Fatorial de + base + é, resultado); Figura 2. Exemplo de código com entrada e saída de dados O objeto web é provedor dos métodos de leitura e escrita. Esses métodos abrem uma janela (como exemplificado na Figura 3) imprimindo e solicitando os dados ao usuário. Os métodos de leitura mostram na janela um campo seguido de um botão para submeter o valor digitado. Todos os métodos de leitura seguem a nomenclatura lexxx(string):xxx, onde xxx representa o tipo do dado a ser lido, e o parâmetro é um texto localizado antes do campo. Os tipos aceitos são boolean, char, double, float, int, long e String. Além disso, existe um método com a assinatura leopcao(string, String[]):String que apresenta uma caixa de seleção contendo os itens passados no segundo parâmetro. Para imprimir dados se utiliza o método escrevervalor(string, xxx):void, onde o primeiro parâmetro é o título da linha, e o segundo é um valor de acordo com os tipos aceitos. A Figura 3 mostra a aparência de uma janela que solicitou e imprimiu um valor int, e está em espera para selecionar uma opção. Figura 3. Aparência da execução de um programa que solicita dados ao usuário 3. Descrição do Ambiente No WebIDE existem três categorias de usuários: os alunos, os professores e os monitores. Na Figura 4 estão apresentadas as tarefas primárias que cada papel desempenha no sistema. Figura 4. Diagrama de Casos de Uso Primários do WebIDE O processo de registro do aluno no ambiente implica nele se cadastrar e o professor liberar o usuário. Nessa liberação o professor aproveita para atribuir um papel ao novo usuário: professor, aluno ou monitor. Os exercícios são cadastrados pelo professor bastando informar um título e o enunciado. A Figura 5 apresenta as páginas de administração do cadastro de exercícios: na Figura 5a é o cadastro do exercício e na Figura 5b é a página que lista os exercícios cadastrados. Para esses exercícios existem quatro ações possíveis, enumeradas e destacadas na imagem com retângulos coloridos: (1) excluir o exercício; (2) editar o enunciado; (3) visualizar os alunos que realizaram ou estão realizando o exercício; e (4) finalizá-lo. A finalização implica em impossibilitar os alunos de continuarem acessando o exercício. A exclusão elimina fisicamente o exercício, e a finalização desabilita o seu acesso pelos alunos. (a) (b) Figura 5. Cadastro de Exercícios A página da Figura 6 ilustra a área de programação, que é exibida quando o aluno entra no WebIDE. No centro da página é a área de edição do código, na parte inferior é a console do ambiente, onde são apresentadas as mensagens ao usuário, e na parte superior encontra-se o menu de ações do aluno. O editor de código é simples, não possuindo realce de sintaxe ou recursos de auto-completar. O console apresenta as mensagens do compilador, identificando os erros de compilação. Figura 6. Área de Programação Para o aluno resolver um exercício, ele precisa acessar o menu [Exercícios], que abre uma janela (Figura 7) contendo a lista de exercícios disponíveis, apresentando o título de cada um. Figura 7. Janela de Exercícios Disponíveis Nessa janela existem cinco ações possíveis para cada exercício: 1. finalizar o exercício: quando o aluno executa essa ação, ele está indicando que o exercício está resolvido, e o professor/monitor pode corrigí-lo. Enquanto isso, o exercício não pode mais ser alterado; 2. abrir o exercício: carrega na área de programação o código fonte produzido pelo aluno, ou indica que vai resolver o exercício da linha corrente; 3. salvar o exercício: o aluno precisa usar essa ação para salvar o código fonte digitado na área de programação. O código é salvo no servidor; 4. visualizar o enunciado do exercício: abre uma janela apresentando ao usuário o enunciado do exercício; 5. acessar os comentários: quando o professor/monitor corrigem o exercício, eles devem inserir instruções ao aluno sobre o seu erro. Essa opção do menu permite que o aluno visualize o histórico de instruções do exercício. Após o exercício carregado, o aluno digita o código fonte e utiliza os menus na parte superior da área de programação. A compilação, execução e depuração do código é efetuada com as opções [Compilar], [Executar] e [Depurar], respectivamente. Ao compilar o código, o ambiente mostra os erros na console, ou caso não houverem erros, é apresentada a mensagem Programa compilado com sucesso na console. A execução do programa mostra uma janela solicitando dados, quando usado o método lexxx(), ou imprimindo os dados, quando usado o método escrevervalor(). Um exemplo da execução está na Figura 3. Quando o usuário clica em [Depurar], o ambiente assume outro aspecto, como exemplificado na Figura 8. Na parte central da janela está o código fonte sendo depurado. A linha atual do programa está destacado em azul. O botão [Passo-a-passo] executa cada linha do programa, e apresenta as variáveis, com seus valores, no lado direito da janela. Inclusive o usuário consegue alterar os valores dessas variáveis, permitindo, por exemplo, que ele realize experimentos com novos valores das variáveis que receberam seus dados da janela de entrada de dados. Na Figura 8 existe uma variável de nome numero com valor 20. O botão que fica ao lado do campo pode ser clicado depois que o usuário digitar um novo valor. Os campos para digitação quando da execução dos métodos lexxx() são apresentados na parte inferior da janela, na área de respostas. Nessa área também são apresentados os resultados da execução do método escrevervalor(). Figura 8. Janela de Depuração de Exercícios Quando o aluno tiver concluída a solução, ele pode tanto clicar na opção [Finalizar] da área de programação, quanto da lista de exercícios (Figura 7). Nesse instante ele não pode mais alterar o código fonte. O professor, ou monitores, quando acessam o ambiente são apresentados a uma página similar daquela ilustrada na Figura 6. Porém, não existem as opções [Depurar] e nem [Salvar], e é adicionada uma nova opção [Comentário]. Quando o professor/monitor acessa a opção [Exercícios] o sistema lista todos os exercícios finalizados e não corrigidos. O usuário pode então clicar em um dos exercícios para carregá-lo na área de programação e fazer sua devida avaliação. Ele pode [Finalizar] o exercício, indicando que foi concluído, ou digitar comentários, pois é preciso melhorar a solução. A Figura 9 apresenta a janela onde o professor/monitor digita seus comentários. Ao enviar o comentário, o exercício sai do estado de finalizado, e retorna a possibilidade do aluno editá-lo. Figura 9. Janela de Edição de Comentários O aluno consegue visualizar o comentário do professor acionando o quinto botão representado na Figura 7. Nessa janela é apresentado o histórico de comentários e o nome dos autores deles. 4. Arquitetura do Ambiente Essa seção apresenta as características técnicas do ambiente: como ele gerencia os dados e desempenha as tarefas de compilação, execução e depuração. Todos os dados são armazenados no banco de dados MySQL. A Figura 11 apresenta o modelo entidade-relacionamento desses dados. O código fonte dos alunos é armazenado na tabela exercicio_usuario. Cada comentário registrado pelo professor (ou monitor) adiciona uma linha na tabela comentario. Para melhorar a usabilidade do ambiente, foi utilizado o modelo AJAX, que garante atualizações incrementais na página sem necessidade de recarregá-la. Os comandos do ambiente de programação apresentados na Figura 7 fazem requisições nesse modelo. Com isso, a página da área de programação não é recarregada, e o usuário recebe mensagens de sucesso na execução dessas ações, ou mudanças na interface (como a janela de entrada de dados apresentada na Figura 3 ou de depuração como na Figura 8). O modelo AJAX foi implementado utilizando o framework DWR (GetAhead, 2004) que mapeia os métodos de classes Java para funções assíncronas do lado do navegador. Figura 10. Modelo Entidade-Relacionamento do WebIde A aplicação do lado servidor foi implantada no Apache Tomcat. Para localizar os programas do Java (javac, java e jdb), a aplicação utiliza um arquivo de configuração, onde são definidos os locais desses programas. Quando um usuário solicita ao ambiente para compilar o seu código, é transferido do navegador para o servidor o código digitado, e encapsulado em uma classe Java como apresentado na Figura 1b e o arquivo gravado numa pasta temporária. O nome da classe é batizado como Codnn, onde nn é o código do usuário na tabela usuario. Nessa figura também pode ser observado um atributo estático chamado web. A partir dessa declaração é permitido do código do aluno o acesso dos recursos de apresentação e solicitação de dados ao usuário. A compilação é executada no servidor, e a saída dessa execução é bufferizada e transferida como resposta da requisição AJAX. Quanto à execução, passa inicialmente pelo processo de compilação, e na utilização dos métodos do objeto web existe uma comunicação entre servidor e navegador. Esse objeto envia ao navegador instruções de desenho, que devolve ao servidor os valores digitados pelo usuário. A depuração acontece de forma semelhante com a execução. O programa jdb consegue fornecer as variáveis e seus valores. A aplicação envia ao navegador essas saídas, para serem renderizadas na página, como demonstrado na Figura 8. Quando o usuário decide alterar o valor de uma variável, o navegador envia essa ação para a aplicação, que solicita ao jdb para alterar o valor da variável. 5. Experimento em Sala Esse ambiente foi desenvolvido como Trabalho de Conclusão de Curso, e para a fase de avaliação, foi alocada uma aula no final do primeiro semestre de 2008 com uma turma da disciplina de Programação de Computadores, oferecida no primeiro semestre do curso de Ciências da Computação. O professor da disciplina, e orientador do trabalho, montou dois exercícios com os enunciados apresentados na Figura 11. Faça um programa que solicite ao usuário o seu nome (como String), sua idade (como int), sua renda (como double), se mora sozinho (como boolean) e estado civil (solteiro, casado, divorciado ou viúvo). Faça um programa que solicite 4 números inteiros e no final apresente a média deles. Em seguida apresente esses dados. Figura 11. Exercícios aplicados em sala A aula contou com a presença de 28 alunos. Primeiramente foi solicitado para que todos se cadastrassem no sistema. O professor e o orientando liberavam o registro dos alunos no ambiente. Em seguida, foram demonstrados os recursos do sistema, e os métodos de leitura e gravação. É importante ressaltar que os alunos conheciam as estruturas de programação em Java, pois a aula aconteceu no final do semestre. O trabalho dos alunos era resolver os dois exercícios. O professor corrigia os exercícios, comentando alguns deles e o orientando ficava a disposição como suporte a dúvidas do ambiente. Os alunos ficavam ansiosos pela avaliação e tratavam de resolver os problemas assim que o exercício voltava a ser disponível. No final da aula foi aplicado um questionário com cinco perguntas. O resultado do questionário está na Tabela 1. Tabela 1. Resultado do questionário de avaliação do WebIDE Questões (quanto ao sistema) Ótimo Bom Regular Ruim É fácil de usar? 50% 41% 9% 0% Apresenta um desempenho 18% 63% 14% 5% apropriado? Permite um bom gerenciamento dos 41% 45% 9% 5% exercícios? Possui os recursos suficientes para a 32% 49% 14% 5% realização dos exercícios? É adequado para o aprendizado da programação? 18% 59% 18% 5% 6. Considerações Finais O ambiente apresentado neste artigo integra o processo de resol
Search
Related Search
We Need Your Support
Thank you for visiting our website and your interest in our free products and services. We are nonprofit website to share and download documents. To the running of this website, we need your help to support us.

Thanks to everyone for your continued support.

No, Thanks
SAVE OUR EARTH

We need your sign to support Project to invent "SMART AND CONTROLLABLE REFLECTIVE BALLOONS" to cover the Sun and Save Our Earth.

More details...

Sign Now!

We are very appreciated for your Prompt Action!

x