Jump to content
  • Revista PROGRAMAR: Já está disponível a edição #60 da revista programar. Faz já o download aqui!

Sign in to follow this  
Jeronimus Linuxius

[Pascal] Roadbook C --> Pascal (com direito a bilhete de regresso, claro)

Recommended Posts

Jeronimus Linuxius

Inventei este tutorial porque, qual vidente, não preciso de confirmar que o Pascal tem o mesmo defeito de todas as linguagens alguma vez utilizadas para ensinar a programar. Esse defeito é: quase todos os tutoriais disponiveis começam por ensinar o básico dos básicos.

Acho que isso é quase um insulto, e por isso, resolvi documentar o meu processo de aprendizagem de Pascal (i.e. neste momento, eu não sei quase nada de Pascal, mas quero aprender, porque é bom conhecer muitas linguagens de programação. :) ). Vou fazer isto por comparação com o C, não só por ser quase a língua franca da programação (ao ponto de toda a gente a conhecer mais ou menos, quer directamente quer por ter aprendido C++), mas também por ser geralmente apresentada como um parente próximo do Pascal, e também porque é a linguagem que eu conheço melhor.

Como vou escrever o tutorial à medida que for aprendendo, é natural que cometa alguns erros, e por isso aceito de bom grado correcções/sugestões. O tutorial começa depois da horizontal rule. Vou editando o post, com o respectivo Changelog de cada vez que o alterar.

* 30/01/2009 -  Adicionadas as secções iniciais (Paladar da sintaxe,

                Terminologia, Comentários e Estrutura do programa).


Paladar da sintaxe

No Pascal, as palavras-chave não são case sensitive. Pessoalmente, ganhei o hábito de as escrever com a primeira letra em maiúscula, e vou seguir essa convenção para o resto do tutorial.

A linguagem também se apoia muito menos em parêntecis e chavetas do que o C, o que dá uma aparência muito mais leve aos programas.

Por exemplo, se no C uma instrução composta tem a forma:

{
    instrução1;
    instrução2;
    instrução3;
    ...
}

No Pascal, ela tem a forma:

Begin
    instrução1;
    instrução2;
    instrução3;
    ...
End

O ponto-e-vírgula não serve para transformar expressões em instruções, ao contrário de no C. Em vez disso, serve para separar as instruções umas das outras. Isto implica que o ponto-e-vírgula não é necessário na última instrução de um bloco.

Em Pascal não há pré-processador. Isso pode parecer, como sempre, uma limitação, no entanto a funcionalidade tradicionalmente desempenhada pelo preprocessador pode ser desempenhada pelo compilador propriamente dito. Por exemplo, a directiva #include do C é, em Pascal, substituida pelo comando "Uses".

Terminologia

Um pormenor importante que é preciso notar ao distinguir o C do Pascal é os dois tipos de funções (i.e. blocos de código executável) que há.

Em Pascal, procedimentos e funções são coisas diferentes. Um procedimento do Pascal é como uma função void em C, ou seja, uma função sem valor de retorno. Uma função do Pascal é como uma função com valor de retorno em C, isto é, qualquer função que não seja void.

O Pascal tem passagens por variável. Uma passagem por variável é uma passagem por referência. Corresponde aos argumentos de saida, que em C são implementados por meio de passagens por apontador.

Comentários

Os comentários têm duas formas clássicas:

(* Comentário 1 *)
{  Comentário 2  }

Estes comentários podem-se expandir por várias linhas. No Delphi, entre outros, também são suportados comentários à lá C++:

// Comentário single-line.

Estrutura do programa

Em Pascal, os programas seguem uma estrutura muito mais rígida do que em C. Mais do que acontecia no C antes do standard C99 (em que as declarações tinham de estar no início das funções e das instruções compostas, não pudendo estar "misturadas" com o código), em Pascal, as declarações têm um lugar reservado na estrutura sintáctica do programa e dos procedimentos/funções (para declarações locais).

A estrutura geral do programa é:

Program <nome do programa>;

// Módulos externos utilizados pelo programa.
Uses <módulo1>;
Uses <módulo2>;
Uses <módulo3>;

Const    // Secção de definição de constantes globais.
    constante1 = "texto";
    constante2 = 1337;
Var     // Secção de declaração de variáveis globais.
    variavel1: string;
    variavel2: integer;

// Definições de funções e procedimentos aqui.

Begin
    // Código aqui
    instrução1;
    instrução2;
    instrução3;  // <--- O ponto-e-vírgula serve para separar instruções,
        // pelo que não é necessário aqui. No entanto, acredito que ajude a tornar o
        // código menos error-prone, para além de não desabituar o veterano do C de
        // colocar os ponto-e-vírgulas nos lugares certos.
End.    // <-- No final do programa, é necessário um ponto final. Faz parte da sintaxe.

A formatação é livre, tal como no C. Por exemplo, o ponto final que termina o programa pode ficar 50 linhas abaixo do End, embora isso provavelmente não ajudasse ninguem.

Share this post


Link to post
Share on other sites
bsntuga

cons    // Secção de definição de constantes globais.

    constante1 = "texto";

    constante2 = 1337;

var    // Secção de declaração de variáveis globais.

é

const    // Secção de definição de constantes globais.
    constante1 = "texto";
    constante2 = 1337;
var     // Secção de declaração de variáveis globais.

Share this post


Link to post
Share on other sites
Jeronimus Linuxius
const    // Secção de definição de constantes globais.

Obrigado. Não me lembrei.

JJ

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.