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: 92.432 ]

Por: Antônio Vinícius Menezes Medeiros em 17/03/2015 | Blog: https://antoniomedeiros.dev/


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

Incrementando o visual do KDE 4

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

Exibindo um splash durante o boot com Splashy

Desmistificando a instalação do Dazuko

Criando um LiveCD a partir de uma instalação do Debian Lenny

Leitura recomendada

Programando em Java para Console

Desenvolvendo aplicações em J2ME no Linux

Lançamento do GFP 0.1.4.5 - Gerenciador Financeiro Pessoal

Gerando arquivos PDF com Java e iText

Transforme seu celular em terminal sem fio SSH/Telnet

  
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




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts