Portugol Challenges2009
Portugol Challenges2009
Portugol Challenges2009
Abstract
Computer programming is a complex activity involving high level of abstraction, which is usually
taught resorting to programming languages and development environments directed towards
the context of industrial software production. This paper presents a tool called Portugol IDE
designed to teach introductory programming courses. Portugol IDE is an environment for the
development of algorithms where special emphasis is given to the development of algorithmic
reasoning as it has tools that favour algorithm coding, execution and depuration. This
environment has a portuguese coding language, which is based on structured portuguese, and
a graphic language based on flowcharts. This paper describes the learning environment for
Portugol IDE and the student’s opinion of its application in the programming courses of the
Higher School of Technology, Tomar (ESTT).
keywords
Portugol IDE, learn to program, algorithms animation and simulation, program visualization, flowchart
Resumo
Palavras-chave
Portugol IDE, ensino da programação, animação e simulação de algoritmos, visualização de
programas, fluxograma.
1. Introdução
Com vista a dar resposta a estes problemas foi desenvolvido um ambiente de aprendizagem de
algoritmos que designámos de Portugol IDE.
São várias as ferramentas, propostas pela comunidade académica que se destinam ao auxílio
da aprendizagem da programação. Segundo Mendes (2001) e Marcelino et al. (2008) as
ferramentas podem ser classificadas de acordo com o âmbito de aplicação, da estratégia que
utilizam e do tipo de actividade que suportam. Estes autores classificam as ferramentas em:
3. Portugol IDE
Esta linguagem algorítmica, que serve de suporte à definição de dados e aos algoritmos
que os manipulam é inspirada no português estruturado, também conhecido por pseudo-
código ou portugol, e permite representar de forma clara e inequívoca as instruções a
serem executadas pelo computador.
A linguagem algorítmica foi definida de forma a cumprir dois objectivos: o primeiro, e sem
dúvida o mais importante, o desenvolvimento do raciocínio algorítmico numa linguagem
formal simples; e o segundo, a modernização das linguagens que lhe serviram de
inspiração de forma a incorporar características das mais recentes linguagens de
programação. Esta representação foca o interesse do aluno no desenvolvimento do
algoritmo e proporciona uma melhor transição para os ambientes de programação
tradicionais.
Os tipos de dados definidos como básicos são aqueles que consideramos como
fundamentais para a representação da informação e sobre os quais é possível a
aplicação de operadores matemáticos, lógicos e relacionais. Os tipos básicos da
linguagem estão definidos na tabela 1.
A escolha do tipo de texto como um tipo básico prende-se com a aplicação do operador
de concatenação, uma das características que se vem tornando um padrão nas
linguagens mais recentes como, por exemplo, o java ou o c#.
A escolha dos termos foi feita tendo em conta que se trata de uma linguagem imperativa
e com objectivo de tornar os programas próximos da linguagem portuguesa corrente.
Como instruções executáveis foram definidas as instruções para ler (ler); escrever na
consola (escrever); estruturas de decisão condicional (se-então-senão) e selectiva
(escolhe-caso); e estruturas de iteração (repete-até, faz-equanto, para-próximo e
enquanto-faz).
Este conjunto de instruções aliado aos tipos de dados definidos permite codificar um
conjunto alargado de algoritmos. O conjunto de instruções anteriormente definido facilita
a aprendizagem e a orientação do esforço para o desenvolvimento do raciocínio
algorítmico que é a pedra basilar da programação.
Tal como acontece com o português estruturado não existe um conjunto de símbolos fixo
para a definição do fluxograma o que levou à tomada de decisões acerca da grafia dos
símbolos, tendo em conta a sua execução computacional e a sua funcionalidade. A
execução computacional levou ao desdobramento do símbolo de entrada/saída em dois
símbolos distintos; e por questões funcionais existe apenas um símbolo de decisão que
serve para codificar todas as estruturas de decisão e de iteração.
Início / Fim
Ler
Escrever
Processo
Decisão condicional
Fluxo de execução
Conector de Fluxo
Devido ao número limitado de símbolos e à necessidade de execução automática do
fluxograma, existem símbolos que desempenham várias funções.
Foi realizado um estudo com o objectivo de atentar nas reacções dos alunos à aprendizagem
de programação através da ferramenta Portugol IDE. Começamos por caracterizar a amostra
atendendo ao sexo, idade, número de linguagens de programação dominadas, experiência em
programação e o número de horas dedicadas por semana à programação. Segue-se a
descrição do estudo e a indicação dos instrumentos utilizados. Finalmente são apresentados
os resultados do estudo.
A amostra deste estudo foi constituída por 32 alunos do 1.º ano do curso de Engenharia
Informática da Escola Superior de Tecnologia de Tomar do Instituto Politécnico de Tomar.
F 14 9 4 4 0 1 0
Média 2,1
Na tabela 7 verificamos que a maioria dos sujeitos considerou a estrutura dos menus
adequada, sendo a média 2,0. Existem, no entanto, três sujeitos que nem a
consideraram adequada nem inadequada.
F 12 12 5 3 0 0 0
Média 2,0
F 18 6 5 3 0 0 0
% 56,3 18,8 15,6 9,3 0,0 0,0 0,0
Média 1,8
Na tabela 9 constatamos que os sujeitos consideraram os ícones sugestivos, sendo a
média 2,0. Todavia, existem dois sujeitos que nem os consideraram sugestivos, nem
nada sugestivos.
F 13 9 8 2 0 0 0
Média 2,0
A maioria dos sujeitos considerou que o módulo de execução do fluxograma é útil, sendo
a média 2,0 (tabela 10). Existe apenas um sujeito que nem o considerou útil nem inútil.
f 15 14 2 1 0 0 0
% 46,9 43,8 6,3 3,0 0,0 0,0 0,0
Média 1,7
Os sujeitos têm uma opinião idêntica à anterior no que se refere à escrita em forma de
fluxograma. A média é igual e também só houve um sujeito que não a considerou útil
nem inútil (tabela 11).
f 15 12 4 1 0 0 0
Média 1,7
A visualização do estado das variáveis é outro aspecto que os sujeitos consideram útil. A
média é 1,6 e apenas um sujeito referiu que não é útil nem inútil (tabela 12).
Tabela 12: Classificação da visualização do estado das variáveis (útil – inútil), n=32.
Diferencial Útil Inútil
semântico
Estatística
Descritiva 1 2 3 4 5 6 7
f 18 10 3 1 0 0 0
% 56,3 31,3 9,4 3,0 0,0 0,0 0,0
Média 1,6
Na tabela 13, também verificamos que os sujeitos consideram a ajuda útil na correcção
dos erros. A média é 1,7.
Tabela 13: Classificação da utilidade da ajuda na correcção de erros (útil - inútil), n=32.
Diferencial Útil Inútil
semântico
Estatística
Descritiva 1 2 3 4 5 6 7
f 15 11 6 0 0 0 0
% 46,9 34,4 18,7 0,0 0,0 0,0 0,0
Média 1,7
Tabela 14: Classificação do auxílio dos modos de execução na compreensão dos algoritmos
(muito - nenhum), n=32.
Diferencial Muito Nenhum
semântico
Estatística
Descritiva 1 2 3 4 5 6 7
f 15 13 3 1 0 0 0
% 46,9 40,6 9,4 3,1 0,0 0,0 0,0
Média 1,7
Os sujeitos têm uma opinião idêntica no que se refere à ajuda para encontrar erros da
execução em modo passo-a-passo, como se pode observar na tabela 15. A média é 1,6.
Tabela 15: Classificação do auxílio da execução em modo passo-a-passo para encontrar erros
(muito - nenhum), n=32.
Diferencial Muito Nenhum
semântico
Estatística
Descritiva 1 2 3 4 5 6 7
f 17 12 3 0 0 0 0
Média 1,6
f 14 13 3 2 0 0 0
Média 1,8
f 17 12 3 0 0 0 0
Média 1,6
Através do questionário de ícones constatámos que os sujeitos identificaram facilmente
os ícones, o que é um bom indicador de que o sistema é fácil de lembrar. Como se pode
verificar na tabela 18, a percentagem de respostas correctas é superior a 90% em todos
os ícones, alcançando os 100% no ícone “executa algoritmo”.
5. Conclusão
6. Bibliografia
Butler, M., & Morgan, M. (2007). Learning challenges faced by novice programming students
studying high level and low feedback concepts. In ASCILATE 2007 Singapore, 99-107.
Giangrande, E. (2007). CS1 Programming Language Options, Journal of Computing Sciences
in Colleges, 22 (3), 153-160.
Gomes, A., & Mendes, A. (2000). Suporte à aprendizagem da programação com o ambiente
SICAS. Actas do V Congresso ibero-americano de informática educativa, Viña del Mar, Chile.
Jenkins, T. (2002). On the difficulty of learning to program. In Proc. of the 3rd Annual
Conference of the LTSN Centre for Information and Computer Science, 27-29.
Kolling, M., & Rosenberg, J. (2001). Guidelines for teaching object orientation with Java. In
Proceedings of the 6th Annual Conference on Innovation and Technology in Computer Science
Education, 70–74.
Lahtinen, E., Mutka, K., & Jarvinen, H. (2005). A Study of the difficulties of novice programmers.
th
In Proc. of the 10 Annual SIGCSE Conference on Innovation and Technology in Computer
ITiCSE’05, 14-18.
Lister, R., Berglund, A., Clear, T., Bergin, J., Garvin-Doxas, K., Hanks, B., Hitchner, L., Luxton-
Reilly, A., Sanders, K.,Schulte, C. & Whalley, J. L. (2006). Research perspectives on the
objects-early debate, Annual Joint Conference Integrating, 146–165.
Marcelino, M; Mihaylov, T., & Mendes, A. (2008). H-SICAS, a Handheld Algorithm Animation
th
and Simulation Tool To Support Initial Programming Learning. In 38 ASEE/IEEE Frontiers in
Education Conference. Saratoga Springs, NY.
Pattis, R. (1981). Karel the robot: A gentle introduction to the art of programming. John Wiley &
Sons.
Ramani, K. V., & Rao, T. P. (1994). A graphics based computer-aided learning package for
integer programming: the branch and bound algorithm, Computers & Education, 23.
nd
Roberts, E. (2001). An overview of MiniJava. In Proceedings of the 32 SIGCSE Technical
Symposium on Computer Science Education, 1–5.