Você está na página 1de 6

See discussions, stats, and author profiles for this publication at: https://www.researchgate.

net/publication/277327022

Ensino da Programação através da Linguagem Algorítmica e Fluxográfica. In


TICAI 2009. TIC's para a Aprendizagem da Engenharia (IEEE, Sociedade de
Educação: Capítulos Espanhol e Por...

Chapter · January 2011

CITATIONS READS
0 122

3 authors:

Célio Gonçalo Marques Antonio Manso


Polytechnic Institute of Tomar Polytechnic Institute of Tomar
346 PUBLICATIONS 215 CITATIONS 64 PUBLICATIONS 152 CITATIONS

SEE PROFILE SEE PROFILE

Luis M. L. Oliveira
Polytechnic Institute of Tomar
40 PUBLICATIONS 965 CITATIONS

SEE PROFILE

All content following this page was uploaded by Célio Gonçalo Marques on 08 March 2022.

The user has requested enhancement of the downloaded file.


Ensino da Programação Através da Linguagem Algorítmica e Fluxográfica

Ensino da Programação Através da Linguagem


Algorítmica e Fluxográfica
António Manso, Luís Oliveira, Célio Gonçalo Marques

Tittle— Teaching Programming using Algorithmic Language I. INTRODUÇÃO


and Flowcharts.

Abstract— Teaching of programming is the keystone of every


C ONHECER uma linguagem de programação é diferente de
saber programar. Conhecer uma linguagem de
programação implica conhecer um conjunto de palavras
engineering course and particularly computer science courses.
The failure rates observed in the programming module of the reservadas e uma sintaxe. Saber programar está relacionado
Computer Engineering course offered by the Escola Superior de com a capacidade de resolver problemas cuja solução pode ser
Tecnologia de Tomar of the Instituto Politécnico de Tomar led to encontrada através da execução de um algoritmo
the development of a tool – Portugol IDE – with the propose to computacional. A definição do algoritmo é o primeiro passo
motivating the students and facilitating the learning of
para a construção de um programa. Depois de definido,
programming. This tool allows algorithms to be coded in
algorithmic language or in flowchart language and its automatic testado e optimizado, o algoritmo pode ser codificado numa
execution. This paper presents the rules of translation between linguagem de programação.
both languages and describes the way it is executed. As unidades curriculares de programação de nível
introdutório são caracterizadas por terem taxas elevadas de
Keywords— Programming, Portugol, Flowchart, Algorithms, reprovação [1] [2] [3] e as disciplinas de programação de nível
Teaching and learning. introdutório da Escola Superior de Tecnologia de Tomar
(ESTT) do Instituto Politécnico de Tomar (IPT) não são
Resumo— O ensino da programação é considerado uma pedra
excepção. A causa principal do insucesso está relacionada com
basilar nos cursos de engenharia e em especial dos cursos de
informática. O insucesso demonstrado pelos alunos do curso de a dificuldade sentida pelos alunos em analisar um problema e
Engenharia Informática nas disciplinas de programação de nível definir o algoritmo que o resolve devido ao elevado nível de
introdutório na Escola Superior de Tecnologia de Tomar do abstracção que esta actividade envolve e não com aspectos
Instituto Politécnico de Tomar levou ao desenvolvimento de uma próprios de uma ou outra linguagem de programação.
ferramenta – Portugal IDE – com o objectivo de motivar os Têm sido criadas várias ferramentas com o objectivo de
alunos e facilitar a aprendizagem da programação. Esta
auxiliar os alunos a adquirirem competências na resolução de
ferramenta permite a codificação dos algoritmos em linguagem
algorítmica ou em linguagem fluxográfica e a sua execução problemas através da definição de algoritmos. Segundo [4] e
automática. Neste trabalho são apresentadas as regras de [5] há um conjunto de requisitos que uma boa ferramenta de
tradução entre as duas linguagens e descrita a forma como a sua desenvolvimento de algoritmos deve ter: i) ser interactiva de
execução é feita. forma a que o aluno tenha um papel activo durante o processo
Palavras-chave— Programação, Portugol, Fluxogramas, de aprendizagem; ii) ser configurável, para que possa ser
Algoritmos, Ensino, Aprendizagem. usada na resolução de vários problemas, recorrendo a várias
soluções; iii) permitir representações alternativas, para
estimular o aluno a observar o problema sob diferentes pontos
de vista; iv) ser animada, para possibilitar ao aluno
acompanhar a execução do algoritmo; v) ser simples óbvia e
Este trabalho foi apresentado originalmente em CISTI'2009 - 4ª intuitiva; vi) ser portável, para ser independente do hardware e
Conferência Ibérica de Sistemas e Tecnologias de Informação.
António Manso é professor no Departamento de Engenharia Informática do software onde vai ser executada; e por fim vii) ser
do Instituto Politécnico de Tomar, Quinta do Contador, Estrada da Serra, económica, para alcançar o maior número de alunos. O
2300-313 Tomar, Portugal (telefone: +351 249328100; fax: +351 249328189 Portugol IDE foi especificado para responder a todas as
e-mail: manso@ipt.pt).
L. Oliveira é assistente no Departamento de Engenharia Informática do características anteriormente definidas e assim contribuir para
Instituto Politécnico de Tomar, Quinta do Contador, Estrada da Serra, 2300- a melhoria da aprendizagem de algoritmos nas disciplinas de
313 Tomar, Portugal (telefone: +351 249328100; fax: +351 249328189 e- programação de nível introdutório na ESTT. Este ambiente é
mail: loliveira@ipt.pt).
C. G. Marques é professor do Instituto Politécnico de Tomar, Quinta do
constituído por uma interface que manipula duas linguagens
Contador, Estrada da Serra, 2300-313 Tomar, Portugal (telefone: +351 de programação (linguagem algorítmica e linguagem
249328100; fax: +351 249328136; e-mail: celiomarques@ipt.pt).

105
Ensino da Programação Através da Linguagem Algorítmica e Fluxográfica

fluxográfica), permitindo ao aluno representar e executar os


algoritmos nas duas linguagens. O Portugol IDE distingue-se TABELA I
SÍMBOLOS E SINTAXE DA LINGUAGEM FLUXOGRÁFICA
das ferramentas analisadas: SICAS [5] [6], MiniJava [7],
BlueJ [8], Karel the Robot [9], Jeliot [10], Ambap [11]; por Simbolo Descrição
possuir uma linguagem fluxográfica que se aproxima da
Terminal – Marca o início/fim do algoritmo.
execução computacional do algoritmo e uma linguagem de
programação que se aproxima das linguagens de programação
Ler – Lê uma variável da consola.
de alto nível. Esta característica permite fazer a ponte entre a
execução computacional dos algoritmos e a expressão textual
dos programas. Escrever - Escreve a expressão na consola.

II. LINGUAGEM ALGORÍTMICA Processo - calcula o valor de uma expressão.


A linguagem algorítmica é inspirada na linguagem de
especificação de algoritmos conhecida como português Decisão - Desvia a fluxo através do valor da
estruturado ou portugol. condição
A linguagem algorítmica suporta um conjunto de operações
que permitem que seja utilizada para aprender as técnicas Conector - Unificação de Fluxo
básicas da construção de algoritmos computacionais de entre
as quais salientamos a:
prototipagem rápida de um algoritmo sendo as variáveis
• Definição de tipos de dados;
implicitamente definidas pelos símbolos de “ler” e de
• Entrada e saída de dados; “processo”. Quando é executada uma leitura ou um
• Estruturas de decisão condicional; processamento o sistema verifica se já existe uma variável
• Estruturas de iteração. com o mesmo nome no programa; caso não exista, o sistema
A linguagem tem definido como básicos os tipos inteiros, define a variável e deduz o tipo através do tipo de dados
real, lógico, carácter e texto. Sobre estes tipos de dados estão resultante da leitura ou do cálculo da expressão.
definidos um conjunto de operadores e funções que permitem
a construção de expressões computacionais. O tipo texto foi Entrada e saída de dados
definido como básico para poder ser manipulado com os A simbologia dos fluxogramas prevê apenas um símbolo
operadores relacionais e o operador de concatenação (+), tal para a entrada e saída de dados e o utilizador decide em cada
como acontece nas linguagens mais recentes (C# e Java), bem caso qual o tipo de operação a executar. Para tornar a
como ser lido e escrito directamente na consola. A linguagem execução automática procedeu-se à introdução de dois
permite ainda a definição e a manipulação de estruturas símbolos distintos para cada uma das operações: “ler” e
homogéneas multidimensionais de dados através do operador “escrever”.
de indexação ([ ]). As estruturas para a manipulação de dados
são as definidas no portugol e podem ser consultadas em [12].
Estruturas de decisão
III. LINGUAGEM FLUXOGRÁFICA A linguagem algorítmica tem duas estruturas de decisão: a
decisão simples (se-então-senão) [tabela II], e a decisão em
A linguagem fluxográfica foi especificada com dois alternativa (escolhe-caso) [tabela III].
objectivos muito concretos: fazer a prototipagem rápida de
algoritmos nas primeiras etapas do ensino da programação e
fazer a representação e execução visual da linguagem A decisão simples tem uma transcrição imediata para a
algorítmica. linguagem fluxográfica através de um símbolo de “decisão”
A grafia da linguagem fluxográfica foi inspirada nos que desvia o fluxo para a esquerda caso a condição seja falsa
fluxogramas, depois de feitas as devidas adaptações para a ou para a direita caso a condição seja verdadeira. O símbolo
tornar computacionalmente executável. Os símbolos definidos TABELA II
na linguagem e a sua sintaxe estão especificados na tabela I. ESTRUTURA SE-ENTÃO-SENÃO
Através destes símbolos é possível descrever os blocos Linguagem Algorítmica Linguagem Fluxográfica
básicos dos algoritmos computacionais, e o seu reduzido
número possibilita uma fácil compreensão das suas Se <condição> então
funcionalidades para o desenho de algoritmos. Instruções1
Senão
Definição de tipos de dados Instruções2
A linguagem fluxográfica não possui nenhum símbolo Fim se
gráfico que permita fazer implicitamente a declaração de
variáveis. Esta característica permite que se faça uma “conector” unifica o fluxo ramificado pela decisão.

106
Ensino da Programação Através da Linguagem Algorítmica e Fluxográfica

desta comunicação.
A decisão em alternativa é transposta para a linguagem Nas estruturas de decisão com controlo final o bloco
fluxográfica através de decisões condicionais encadeadas na começa com um símbolo de conexão de fluxo seguido do
parte esquerda (Falso) dos símbolos de “decisão”. bloco de iteração e do símbolo de “decisão”. Se o fluxo
regressa ao símbolo de conexão através do fluxo gerado pelo
TABELA III
valor verdadeiro da condição estamos na presença de uma
ESTRUTURA ESCOLHE-CASO estrutura faz-enquanto caso contrário estamos na presença de
Linguagem Algorítmica Linguagem Fluxográfica uma estrutura do tipo repete-até.

Escolhe <var> IV. CONVERSÃO ENTRE AS LINGUAGENS


caso valor1:
TABELA V
Instruções1 ESTRUTURA PARA-PRÓXIMO COM INCREMENTOS POSITIVOS.

caso valor2: Linguagem Algorítmica Linguagem Fluxográfica

Instruções2
Defeito:
Instruções3 Para var de v1 ate v2
Fim escolhe
Instruções
Estruturas de iteração próximo

As estruturas de iteração são um conjunto de instruções que


formam ciclos controlados por símbolos de “decisão”. A
linguagem algorítmica tem dois tipos de estruturas de iteração: ALGORÍTMICA E FLUXOGRÁFICA
as estruturas de iteração com controlo inicial (enquanto-faz e
Através das regras enunciadas no ponto anterior, a
para-próximo) [tabela IV] e [tabela V], e as estruturas com
linguagem algorítmica pode ser traduzida pelo Portugol IDE
controlo final (faz-enquanto e repete-até) [tabela VI].
TABELA VI
ESTRUTURA REPETE-ATÉ E FAZ-ENQUANTO.
Linguagem Algorítmica Linguagem Fluxográfica
A estrutura enquanto-faz é traduzida para fluxograma
utilizando um símbolo de “decisão” para o controlo da
iteração, em que a parte direita aponta paro o bloco a iterar e
recebe o fluxo que sai do último símbolo.
TABELA IV Repete
ESTRUTURA ENQUANTO-FAZ.
Instruções
Linguagem Algorítmica Linguagem Fluxográfica Até <condição>

Enquanto <condição> faz


Instruções
Fim enquanto

A codificação fluxográfica da estrutura para-próximo é feita


através da sua transcrição para a estrutura enquanto-faz. O Faz
bloco começa com um símbolo de “processo” que inicializa a Instruções
variável de iteração seguido de um símbolo de decisão
Enquanto <condição>
condicional com a expressão lógica de término da iteração. O
fluxo originado pela “condição” com o valor verdadeiro
aponta para a bloco a iterar que por sua vez aponta para um
bloco de “processo” que actualiza a variável de iteração e
regressa ao símbolo de “decisão”. em linguagem fluxográfica de uma forma simples e directa.
Na tabela V é apresentada a tradução de uma estrutura A conversão da linguagem fluxográfica para a linguagem
para-próximo com incrementos de uma unidade à variável de algorítmica é um processo mais complexo devido a não haver
iteração. A tradução completa desta estrutura para linguagem uma correspondência unívoca entre símbolos e instruções. Os
fluxográfica é composta de várias excepções devido ao facto símbolos adquirem um significado na linguagem algorítmica
da estrutura iterar com incrementos positivos e negativos não através do contexto do fluxograma. Por exemplo, o símbolo de
unitários, e a sua explicação pormenorizada escapa ao âmbito “decisão” pode corresponder a uma estrutura enquanto-faz ou

107
Ensino da Programação Através da Linguagem Algorítmica e Fluxográfica

se-então-senão.
Por outro lado a estrutura em grafo do fluxograma dificulta
o processamento das estruturas computacionais uma vez que é
necessário identificar onde as estruturas começam e terminam.
Para a resolução deste problema utilizaram-se agentes
inteligentes que navegam no fluxograma e que identificam as
estruturas e o significado de cada símbolo no fluxograma.
Após a identificação do significado de cada símbolo a
tradução para a linguagem algorítmica baseia-se nas regras
definidas no ponto anterior.
A linguagem algorítmica obriga à definição explícita dos
dados antes da sua utilização e esta norma não se aplica á
linguagem fluxográfica pois os dados são deduzidos
implicitamente. Quando o utilizador executa o fluxograma os
tipos de dados são deduzidos e a conversão para a linguagem
algorítmica gera um algoritmo executável. Caso contrário, o Fig. 2. Execução do algoritmo com a visualização da linguagem fluxográfica,
sistema identifica as variáveis mas não consegue deduzir o seu o estado da memória e a consola.
tipo e a definição destas variáveis fica com um tipo de dados disponível para download em [12] [fig. 3].
indefinido, o que obriga o aluno a definir o tipo de dados na
Desde que a ferramenta foi disponibilizada foram chegando
várias reacções da comunidade que se podem enquadrar em
dois campos: desenvolvimento e utilização.

No campo do desenvolvimento temos assistido à criação de


projectos paralelos (é usado o núcleo do portugol, mas são
adicionadas outras funcionalidades), temos recebido pedidos
de ajuda para a criação de projectos similares e temos ainda

Fig. 1. Execução do algoritmo com a visualização da linguagem algorítmica,


as instruções executadas e a consola.

linguagem algorítmica. Fig. 3. Web site do Portugol.


tido diversas ofertas de colaboração no projecto.
V. EXECUÇÃO DO ALGORITMO No campo da utilização temos recebido críticas muito
O Portugol IDE permite que a execução do algoritmo seja positivas, pedidos de ajuda para codificação de algoritmos em
independente da linguagem onde o algoritmo foi Portugol, bem como pistas para a evolução do Portugol.
escrito/desenhado. Actualmente o Portugol está a ser utilizado nas unidades
A execução do algoritmo na linguagem algorítmica permite curriculares de Introdução à programação nos cursos de
ao aluno visualizar a sequência de instruções executadas pelo engenharia da ESTT, nos Cursos de Especialização
algoritmo, [fig. 1] enquanto que a execução em forma gráfica Tecnológica de Desenvolvimento de Produtos Multimédia e
permite que o aluno siga o fluxo de execução do algoritmo e Tecnologias de Programação e Sistemas de Informação do
veja graficamente as estruturas de decisão e execução [fig. 2]. Instituto Politécnico de Tomar e em várias instituições de
A execução do algoritmo em modo de depuração permite a Ensino Superior no Brasil, entre elas, o UDF - Centro
visualização do estado da memória do algoritmo e a forma Universitário.
como as instruções/símbolos afectam o seu estado. Num estudo realizado em 2009 com 32 alunos do 1.º ano do
curso de Engenharia Informática da ESGT constatou-se que a
VI. UTILIZAÇÃO DO PORTUGOL NO ENSINO ferramenta Portugol é fácil e agradável de utilizar, é eficiente e
SUPERIOR fácil de lembrar. Na opinião dos alunos o módulo de escrita e
execução em fluxograma, a visualização do estado das
O Portugol é freeware e open source estando a versão 2.3

108
Ensino da Programação Através da Linguagem Algorítmica e Fluxográfica

variáveis a ajuda na correcção de erros são úteis. Os alunos [12] Manso, A. & Oliveira , L. . Portugol IDE (2009). Portugol IDE,
http://orion.ipt.pt/~manso/Portugol/ (Março 2009)
referem ser fácil codificar algoritmos e corrigir erros quando é
usada esta ferramenta.
António Manso Nasceu em Frieira (Portugal) a
13/07/1971. Possui um mestrado em Inteligência
VII. CONCLUSÃO
Artificial Aplicada, pela Universidade Nova de
Programar é uma tarefa difícil que é aprendida Lisboa (2002) e uma licenciatura em Engenharia
Informática pelo Instituto Politécnico da
gradualmente através da introdução de novos conceitos e
Guarda(1996) e aluno do doutoramento em
técnicas. Nesta aprendizagem consideramos que o passo mais informática na Faculdade de Ciências da
difícil é o desenvolvimento do raciocínio algorítmico, o Universidade de Lisboa. A sua área de investigação
primeiro passo da programação e a base de todos os conceitos. centra-se na computação evolutiva e no ensino de
programação. É professor do departamento de Engenharia Informática do
A linguagem fluxográfica é uma linguagem simples de Instituto Politécnico de Tomar, onde lecciona disciplinas de programação,
aprender devido ao seu pequeno número de símbolos e engenharia de software e inteligência artificial. É membro do LabMag -
permite a criação de algoritmos de uma forma simples e Laboratório de Modelação de Agentes desde 2005 e membro do IEEE desde
2010.
imediata o que a torna adequada à iniciação do estudo da
programação. Com base nestes pressupostos foi desenvolvido Luís M. L. Oliveira nasceu em Torres Novas
o Portugol IDE, com o objectivo de melhor a aprendizagem da (Portugal) a 05/10/1973. É mestre em Engenharia
Electrónica e de Telecomunicações pela
programação. Esta ferramenta utiliza duas linguagens de Universidade de Aveiro (2004) e é aluno do
programação: a algorítmica e a fluxográfica. Através de doutoramento em engenharia informática na
agentes inteligentes, permite a execução dos algoritmos em Universidade da Beira Interior. É membro do
grupo de redes e multimedia no Instituto de
linguagem fluxográfica e a sua tradução para uma linguagem Telecomunicações desde 2001. A sua area de
próxima das linguagens de programação tradicionais com a investigação está relacionada com as rede de
grande vantagem de utilizar a língua materna dos alunos. sensores em malha e com o multicast e a
moblidade em redes IPv6. Está envolvido quer em
O suporte da ferramenta em ambiente Web é um dos parcerias públicas, quer em parcerias com a indústria, salientando-se a
principais aspectos que se encontram em desenvolvimento. participação em projectos europeus relacionados com a temática da "Future
Através da Web pretende-se disponibilizar dois serviços: i) um Internet", nomeadamente: EU ICT FP7 NoE Euro-NF. É assistente no
repositório de problemas e ii) um avaliador automático que Departamento de Engenharia Informática da Escola Superior de Tecnologia
de Tomar, onde lecciona as unidades curriculares de Redes de Dados, Gestão
permite validar, quase de imediato, os algoritmos submetidos e Segurança de Redes de Computadores, de Projecto de Redes e de Introdução
pelos alunos. Estes dois serviços têm como principal objectivo à Programação.
fomentar o trabalho autónomo dos alunos.
Célio G. Marques nasceu em Tomar (Portugal)
a 24/06/1975. Possui uma Licenciatura em
BIBLIOGRAFIA Informática e Gestão na Escola Superior de
[1] [1] Butler, M., & Morgan, M., Learning challenges faced by novice Gestão de Santarém, Portugal (1999), um
programming students studying high level and low feedback concepts. In Mestrado em Comunicação Educacional
ASCILATE 2007 Singapore. 2007, p. 99-107. Multimédia na Universidade Aberta em Lisboa,
[2] [2] Lahtinen, E., Mutka, K., & Jarvinen, H.. A Study of the difficulties of Portugal (2003), uma Pós-Graduação em
novice programmers. In Proc. of the 10th Annual SIGCSE Conference Técnicas e Contextos de e-Learning na
on Innovation and Technology in Computer ITiCSE’05, 2005, p. 14-18. Universidade de Coimbra, Portugal (2003) e
[3] [3] Jenkins, T. On the difficulty of learning to program. In Proc. of the encontra-se a fazer Doutoramento em Ciências
3rd Annual Conference of the LTSN Centre for Information and da Educação, Área de TECNOLOGIA
Computer Science, 2002, p. 27-29. EDUCATIVA na Universidade do Minho em
[4] [4] Mendes, A. J, Software Educativo para apoio à aprendizagem de Braga, Portugal.
programação. In J. Sánchez (Ed.), Taller Internacional de Software Ele é PROFESSOR da Área de Tecnologias de Informação e Comunicação
Educativo. Universidad de Chile: Santiago, 2001. da Escola Superior de Gestão do Instituto Politécnico de Tomar. Esteve
[5] [5] Marcelino, M; Mihaylov, T., & Mendes, A.. H-SICAS, a Handheld envolvido em projectos relacionados com a informática na educação, entre
Algorithm Animation and Simulation Tool To Support Initial eles, o Programa “Internet na Escola” e prestou consultoria informática a
Programming Learning. In 38th ASEE/IEEE Frontiers in Education várias empresas. É autor de diversas publicações, entre elas, o livro “Os
Conference. Saratoga Springs, NY, 2008. Hipermédia no Ensino Superior” (Cartaxo: T-Media, 2005), o software
[6] Gomes, A., & Mendes, A. Suporte à aprendizagem da programação “Arquitectura de Computadores” (Cartaxo: T-Media, 2005), e o capítulo “e-
com o ambiente SICAS. Actas do V Congresso ibero-americano de QUAL: A Proposal to Measure the Quality of e-Learning Courses” do livro
informática educativa, Viña del Mar, Chile, 2000. “Advances in e-Learning: Experiences and Methodologies” (Hershey, New
[7] Roberts, E. An overview of MiniJava. In Proceedings of the 32nd York: Information Science Reference, 2008). A sua investigação tem-se
SIGCSE Technical Symposium on Computer Science Education, 2001, centrado na concepção, desenvolvimento e avaliação de ambientes de
p. 1–5. aprendizagem interactivos; concepção, desenvolvimento e avaliação de
[8] Kolling, M., & Rosenberg, J., Guidelines for teaching object orientation objectos de aprendizagem; utilização da Web 2.0 em contexto educativo; e
with Java, In Proceedings of the 6th Annual Conference on Innovation ensino a distância (e-Learning e b-Learning).
and Technology in Computer Science Education, 2001, p. 70–74.
[9] Pattis, R., Karel the robot: A gentle introduction to the art of
programming. John Wiley & Sons, 1981.

[10] Haajanen, J., Pesonius, M., Sutinen, E., Tarhio, J., Teräsvirta, T., &
Vanninen, P., Animation of user algorithms on the Web. In: Proc. VL
'97, IEEE Symposium on Visual Languages, IEEE 1997, p. 360-367.
[11] Ambiente de Aprendizado de Programação,
http://www.ufal.br/tci/ambap/ (Março de 2009)

109

View publication stats

Você também pode gostar