Portugol++

Ultimas alterações:
Para futuras adaptações a outros IDE mantendo a mesma sintaxe, A estrutura básica agora é:

[code]#include <portugol++>
Algoritmo(“Nome”)

Fim
[/code]
Para facilitar o tipo char[], cujo declaração era literal agora é texto

#include <portugol++> Algoritmo("Nome") texto x = "Alguma Coisa"; Fim
Foi adaptado o Code::Blocks 10.05

Link padrão: http://sourceforge.net/projects/marcelojunior/files/Portugol++_v1_0_1.zip/download

Na página do SourceForge mostra Whoops, we can’t find that page. :wink:

corrigi o link. Agora vai. Vlw por avisar

Achei sensacional o projeto. Sou professor e estaria até disposto a usa-lo.

Entretanto, só não entendendo porque em 2012, a apostila ainda ensina a integrar com o Dev C++.
Já perdi as contas de quanto tempo tive que gastar ensinando os desenvolvedores C++ mais novos a se livrarem dessa IDE antiga, com um compilador pré-histórico.
A IDE apresenta vários problemas, desde a ausência de um bom depurador, até cortar parte de mensagens de erros. Cansei de ver gente perdendo horas para resolver bugs, que a simples troca do compilador dava mensagens mais claras e levavam o cara direto à solução.

É um mal hábito que poderia já ser cortado pela raiz.

Todavia, uma série de professores ainda insistem nessa peça de museu, sendo que alternativas igualmente pequenas, leves, multiplataforma, fáceis, modernas e baseadas no compilador GNU existem, como o Code::Blocks.
Existe razão para isso, quando já está surgindo a nova especificação? Creio que não.

Faço um apelo para você e para todos os demais colegas de profissão:
ATUALIZEM-SE.

Não há desculpas para usar o DevCpp 4.0 em 2012.
É como recomendar que seus alunos instalem o Eclipse 1.0.

Parabéns marcelojunior ficou excelente o projeto: facilita o trabalho de professores/alunos e a apostila é inteiramente detalhada.

A observação do ViniGodoy sobre o Dev C++ é válida, entretanto, levando pelo lado positivo (ou não) os demais colegas de profissão, que ainda não se atualizaram, podem utilizar seu interpretador.

Para os atualizados Visual C++ está de bom tamanho por enquanto. Em futuras versões a interação com outras IDE será interessante.

Parabéns :thumbup:

:lol: Deixou de ser um sonho o projeto, é uma realidade.

O que é que faz um <strike>Deputado Federal</strike> Interpretador :?: Na verdade eu não sei. Mas <strike>vote em mim</strike> inclua em uma IDE que eu te conto!

RESPOSTA:

É isso aí, estou adaptando para usar no meu Code::Blocks.

:thumbup:

O problema não é ter a macro para o Dev, até porque, o MINGW tem mesmo que ser suportado. É usado no QT Creator e no Code::Blocks, em versões mais novas.

O problema é a apostila ter um tutorial inteiro para DevCpp, e estimular seu uso, dando a entender que ele é uma boa opção de IDE hoje em dia.
No mínimo, eu colocaria um texto ali dizendo que essa é uma opção de compatibilidade, recomendando fortemente não utilizar, e acrescentaria um tutorial de configuração no Code::Blocks ou no QT Creator (se quiser, posso escrever esse tutorial para você no final de semana).

O DevCpp não só é pobre em termos de recursos, como vem com uma versão do MinGW que não deveria mais ser usada por ninguém.

Tenho muitos problemas com programadores C++ acostumados a essa IDE.
Seria muito bom que as faculdades parassem de jogar esse tipo de profissional no mercado.

Vlw, depois avisa se funcionou…[/quote]

Segue :arrow:


    #include <fstream>
    #include <iostream>
    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    using namespace std;
    typedef int inteiro;
    typedef double real;
    typedef bool booleano;
    typedef char caractere;
    typedef char literal[160];

    #define inicioAlgoritmo(x) inteiro main()
    #define fimAlgoritmo volte 0
    #define limpaTela system("cls")
    #define algoritmo(x) nada main()
    #define pause system("pause")
    #define escreva(x) cout << x
    #define VERDADEIRO true
    #define FALSO false

    #define se if
    #define senao else
    #define caso switch
    #define seja case
    #define naoseja default
    #define para for
    #define enquanto while
    #define faca do
    #define saia break
    #define pule continue
    #define volte return
    #define NULO NULL
    #define nada void

    #define tipo typedef
    #define registro typedef struct

    #define libera delete
    #define novo new

    typedef FILE ARQ;
    #define carregaArq fopen
    #define fechaArq fclose
    #define erroArq ferror
    #define escrevaCArq fputc
    #define leiaCArq fgetc
    #define escrevaLArq fputs
    #define leiaLArq fgets
    #define escrevaArq fwrite
    #define leiaArq fread
    #define finalArq feof
    #define movaInicioArq rewind
    #define movaArq fseek
    #define DO_INICIO SEEK_SET
    #define DAQUI SEEK_CUR
    #define DO_FINAL SEEK_END
    #define excluaArq remove
    #define renomeiaArq rename

    #define ABRE_TEXTO_LEITURA "r"
    #define CRIA_TEXTO_ESCRITA "w"
    #define ANEXA_TEXTO "a"
    #define ABRE_BINARIO_LEITURA "rb"
    #define CRIA_BINARIO_ESCRITA "wb"
    #define ANEXA_BINARIO "ab"
    #define ABRE_TEXTO_LEITURA_ESCRITA "r+"
    #define CRIA_TEXTO_LEITURA_ESCRITA "w+"
    #define ANEXA_TEXTO_LEITURA_ESCRITA "a+"
    #define ABRE_BINARIO_LEITURA_ESCRITA "rb+"
    #define CRIA_BINARIO_LEITURA_ESCRITA "wb+"
    #define ANEXA_BINARIO_LEITURA_ESCRITA "ab+"
    #define bytes sizeof


    nada leia(inteiro &valor)
    {
        cin >> valor;
    }
    nada leia(real &valor)
    {
        cin >> valor;
    }
    nada leia(caractere &valor)
    {
        literal x;
        cin >> valor;
        gets(x);
    }
    nada leia(literal &valor)
    {
        caractere c;

        cin >> c;
        gets(valor);

        inteiro fim = strlen(valor);
        se(fim >= 160)
        {
            fim = 159;
        }

        valor[fim+1] = '\0';
        enquanto(fim >= 1)
        {
            valor[fim] = valor[fim-1];
            fim--;
        }
        valor[0] = c;
    }

As alterações foram:
:arrow: inclusão de algumas bibliotecas;
:arrow: definição de inicioAlgoritmo(x) / fimAlgoritmo para funcionar no Code::Blocks
:arrow: inclusão de limpaTela que estava faltando

Exemplo:

#include "include/portugol++"

inicioAlgoritmo("Nome e idade")
{
    literal nome;
    inteiro idade;

    escreva("Digite seu nome: ");
    leia(nome);
    limpaTela;

    escreva("Digite sua idade: ");
    leia(idade);
    limpaTela;

    escreva("Ola " << nome << " voce tem " << idade << " anos." <<endl);
    pause;

    fimAlgoritmo;
}

Utilizei:

IDE Code::Blocks 10.05 http://www.codeblocks.org/downloads/26
Compilador MinGW http://sourceforge.net/projects/mingw/files/Installer/mingw-get-inst/mingw-get-inst-20111118/

Adicionado o Code::Blocks e outras alterações

Muito bom :smiley:

:thumbup: