Portugol Online - Software livre para facilitar o estudo de algoritmos

Este artigo apresenta um interpretador online para a linguagem Portugol, desenvolvido com o intuito de facilitar o processo de ensino-aprendizagem de programação de computadores.

[ Hits: 58.936 ]

Por: Antônio Vinícius Menezes Medeiros em 17/03/2015 | Blog: http://www.vinyanalista.com.br/


Apresentação



Oi pessoal. Meu nome é Antônio.

Sou graduando do curso de Ciência da Computação da Universidade Federal de Sergipe (UFS) e estou aqui para apresentar pra vocês um pouco do meu "Trabalho de Conclusão de Curso" (TCC). Eu desenvolvi um interpretador online para a linguagem Portugol, proposta no livro Fundamentos da Programação de Computadores [1]. Quem já fez um curso de programação, muito provavelmente, deve ter começado com essa linguagem ou alguma semelhante.

Como o Viva o Linux é a maior comunidade sobre software livre do Brasil e da América Latina, imaginei que iniciar a divulgação dele por aqui seria uma excelente escolha. :)

O interpretador se chama Portugol Online e pode ser encontrado nessa página:

Motivação e alguns conceitos básicos

Os computadores são máquinas bastante versáteis. Hoje, eles não apenas realizam cálculos, sua finalidade original, eles são capazes de fazer quase tudo que se possa imaginar: textos, imagens, vídeos, músicas, jogos, aplicações multimídia, pesquisas, comunicação instantânea com qualquer lugar do mundo a qualquer dia e qualquer hora.

O que conferiu ao computador tamanha versatilidade, foi o programa armazenado em memória, introduzido pela arquitetura proposta por John von Neumann, em 1945. O computador trabalha conforme as instruções contidas no programa [2]. Quando um usuário de computador deseja que ele realize uma computação, deve, portanto, fornecer-lhe um programa.

Um programa contém uma sequência de instruções ordenadas de maneira lógica, que o computador deve executar para cumprir uma tarefa específica. Elaborar um programa consiste em representar a solução de uma tarefa por meio de operações que a máquina possa realizar. O raciocínio embutido na sequência de instruções, é conhecido por algoritmo [1, 2, 3].

Um algoritmo pode ser tão simples quanto o apresentado a seguir, para somar dois números:
  • Início
  • Obter do usuário, através do teclado numérico, o valor do primeiro operando
  • Obter do usuário, através do teclado numérico, o valor do segundo operando
  • Somar os dois operandos
  • Informar ao usuário, através da tela, o resultado da operação
  • Fim

Qualquer ser humano que compreenda a língua portuguesa, é capaz de compreender esse algoritmo. No entanto, para que o computador o compreenda e execute, o usuário deve escrevê-lo em uma linguagem que tanto o computador quanto o usuário entendam. Essa linguagem é chamada de linguagem de programação [1].

O algoritmo anterior pode ser escrito usando, por exemplo, a linguagem de programação Pascal:

program soma;
var x, y, z: integer;
begin
   write('Digite dois números: ');
   read(x, y);
   z := x + y;
   write('Soma = ', z);
end

A linguagem Pascal foi desenvolvida em 1968 por Niklaus Wirth, na Suíça, como ferramenta de ensino. Por ser uma linguagem de fácil compreensão, ela é muito utilizada nos cursos técnicos de nível médio e nos cursos superiores de áreas tecnológicas para ensinar programação [1, 3].

As disciplinas de programação normalmente são consideradas desafiadoras para alunos e professores [3, 4, 5, 6, 7]. As dificuldades podem ocasionar desinteresse e aversão a essas disciplinas e acarretam uma quantidade expressiva de reprovações e evasões ao final de cada semestre [5].

Uma das dificuldades enfrentadas pelos programadores iniciantes, são os formalismos das linguagens de programação profissionais, que podem desviar sua atenção do principal objetivo das disciplinas de programação, que é desenvolver soluções para os problemas propostos em sala [3, 7].

As professoras Ascencio e Campos, propõem em seu livro Fundamentos da Programação de Computadores [1], uma linguagem acadêmica para a escrita de algoritmos que elas chamam de pseudocódigo ou Portugol. Assim como a linguagem Pascal é próxima da língua inglesa, a linguagem Portugol é próxima da língua portuguesa, o que a torna vantajosa no ensino de programação a estudantes brasileiros.

Veja agora o mesmo algoritmo para somar dois números escrito usando a linguagem Portugol:

ALGORITMO
DECLARE x, y, z NUMERICO
ESCREVA "Digite dois números:"
LEIA x, y
z <- x + y
ESCREVA "Soma = ", z
FIM_ALGORITMO

Os conceitos básicos de programação, apreendidos mais facilmente com o uso de uma linguagem como o Portugol, podem ser transpostos posteriormente para linguagens profissionais [7]. A passagem do algoritmo escrito em Portugol para qualquer linguagem de programação é quase imediata, bastando conhecer as regras da linguagem que será utilizada [1].

No meu TCC, analisei e formalizei a linguagem Portugol, como proposta por Ascencio e Campos em seu livro, e desenvolvi um pequeno ambiente de desenvolvimento online para a escrita e execução de programas em Portugol, com foco nos estudantes iniciantes na programação e seus professores.

Vale observar que a linguagem Portugol já é utilizada, com variações, em muitos cursos brasileiros de computação [7]. A ferramenta apresentada aqui suporta uma linguagem bastante próxima (o mais que consegui) daquela apresentada no livro Fundamentos da Programação de Computadores [1].

    Próxima página

Páginas do artigo
   1. Apresentação
   2. Do que preciso para usar o Portugol Online?
   3. Iniciando o Portugol Online
   4. Um pequeno problema
   5. Meu primeiro programa
   6. Próximos passos
Outros artigos deste autor

Instalação do MediaWiki em uma Project web do SourceForge

Guia de referência do ISOLINUX (parte 2)

Instalação do ClamAV com DazukoFS

Conheça o OpenOffice.org e o BrOffice.org

Incrementando o visual do KDE 4

Leitura recomendada

As novidades do Java 1.5

Entendendo orientação a objetos na prática (parte 1)

Introdução ao Desenvolvimento Android

Introdução ao framework Mentawai

Programando em Java para Console

  
Comentários
[1] Comentário enviado por fabio em 17/03/2015 - 14:54h

Excelente projeto! Meus parabéns pelo trabalho.

[2] Comentário enviado por mcnd2 em 17/03/2015 - 20:17h

10!

Comecei a estudar algoritmo e esse seu projeto com certeza me ajudará.

Parabéns pelo ótimo trabalho.

[3] Comentário enviado por hrcerq em 17/03/2015 - 21:30h

Olá, Antônio.

Gostei muito do seu artigo, primeiramente porque está muito bem escrito, de forma clara, bem estruturado e com as devidas referências. "Segundamente" eu também gostei porque o seu projeto ficou bem bacana. A primeira linguagem de programação com que tive contato foi o Portugol e ela me ajudou muito a entender como funcionam os algoritmos.

A maioria das linguagens de programação usam a língua inglesa como base e para algumas pessoas isso pode até ser uma barreira. O Portugol, além de quebrar essa barreira é uma linguagem bem simples e fácil de escrever, com um mínimo de burocracia para facilitar o aprendizado. Dessa forma, separa-se a preocupação de conhecer a sintaxe da linguagem da preocupação de entender a lógica do programa.

Iniciativas como essa são sempre louváveis porque fomentam o aprendizado da programação por mais e mais brasileiros. Enfim, parabéns pelo artigo e pelo projeto.
---

Atenciosamente,
Hugo Cerqueira

[4] Comentário enviado por danniel-lara em 18/03/2015 - 08:25h


Parabéns ótimo artigo

[5] Comentário enviado por mathiasaulo em 24/03/2015 - 00:01h

Meus parabéns Antônio, iniciativa muito boa e sem contar que já podemos introduzir um ambiente linux nas instituições de ensino, visando o aprendizado da lógica de programação com base no Portugol.

Meus parabéns!!

"Ninguém além de nós mesmos pode libertar nossa mente." - Bob Marley

[6] Comentário enviado por luisroo em 25/03/2015 - 13:49h

Parabéns Vínicius, muito bom o software, ajuda bastante, porém alguns 'alunos' vão se aproveitar para fins não didáticos kkkk ... mas faz parte.
Vou baixar o fonte e dar uma estuda para ver como foi o desenvolvimento, curti muito.

[7] Comentário enviado por pherde em 28/03/2015 - 11:17h

Parabéns!! Funciona perfeitamente e é muito bom!!!

[8] Comentário enviado por pherde em 31/03/2015 - 00:09h

Viny,

Estou tentando executar o .jar num notebook com processador arm, a versão do java é a seguinte:
java version "1.7.0_75"
OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~precise1)
OpenJDK Zero VM (build 24.75-b04, mixed mode)

Quando eu executo: java -jar portugol.jar
aparece o seguinte erro:
(precise)fernando@localhost:~/Downloads$ java -jar portugol.jar
Exception in thread "main" java.lang.ExceptionInInitializerError
at org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaUI.<clinit>(RSyntaxTextAreaUI.java:37)
at org.fife.ui.rsyntaxtextarea.RSyntaxTextArea.createRTextAreaUI(RSyntaxTextArea.java:740)
at org.fife.ui.rtextarea.RTextAreaBase.init(RTextAreaBase.java:647)
at org.fife.ui.rtextarea.RTextArea.init(RTextArea.java:854)
at org.fife.ui.rsyntaxtextarea.RSyntaxTextArea.init(RSyntaxTextArea.java:1838)
at org.fife.ui.rtextarea.RTextAreaBase.<init>(RTextAreaBase.java:118)
at org.fife.ui.rtextarea.RTextArea.<init>(RTextArea.java:215)
at org.fife.ui.rsyntaxtextarea.RSyntaxTextArea.<init>(RSyntaxTextArea.java:372)
at br.com.vinyanalista.portugol.ide.TelaPrincipalMinima.<init>(TelaPrincipalMinima.java:129)
at br.com.vinyanalista.portugol.ide.TelaPrincipalCompleta.<init>(TelaPrincipalCompleta.java:38)
at br.com.vinyanalista.portugol.ide.TelaPrincipalCompletaDesktop.<init>(TelaPrincipalCompletaDesktop.java:14)
at br.com.vinyanalista.portugol.ide.Aplicativo.<init>(Aplicativo.java:21)
at br.com.vinyanalista.portugol.ide.Aplicativo.main(Aplicativo.java:47)
Caused by: java.util.MissingResourceException: Can't find bundle for base name org.fife.ui.rsyntaxtextarea.RSyntaxTextArea, locale en_US
at java.util.ResourceBundle.throwMissingResourceException(ResourceBundle.java:1499)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1322)
at java.util.ResourceBundle.getBundle(ResourceBundle.java:721)
at org.fife.ui.rsyntaxtextarea.RSyntaxTextAreaEditorKit.<clinit>(RSyntaxTextAreaEditorKit.java:76)
... 13 more
Caused by: java.lang.ClassCastException: org.fife.ui.rsyntaxtextarea.RSyntaxTextArea cannot be cast to ResourceBundle
at java.util.ResourceBundle$Control.newBundle(ResourceBundle.java:2574)
at java.util.ResourceBundle.loadBundle(ResourceBundle.java:1436)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1400)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1354)
at java.util.ResourceBundle.findBundle(ResourceBundle.java:1354)
at java.util.ResourceBundle.getBundleImpl(ResourceBundle.java:1296)
... 15 more

Alguma orientação do que pode estar ocorrendo errado!?


Contribuir com comentário