  | 
      
      
      Aula 4: Introdução ao PASCAL
      
       | 
      
      
       | 
    
  
PASCAL
Pascal é a sigla utilizada para "Program Appliqué
à
la Selection et la Compilation Automatique de la Literature", é
uma linguagem de programação de alto nível. Criada
por Niklaus Wirth  no ano de 1960 com o objectivo de auxiliar o
ensino
de programação computacional. Ainda hoje continua a ser
utilizada
em universidades e não só,  sendo esta uma linguagem
bastante apropriada para ensinar. Muitos dos programadores
profissionais,
utilizam hoje em dia linguagens tais como C ou C++.
Pascal era o nome dum importante matemático francês do
século XVII - Blaise Pascal.
 
 
  
    
        | 
      
       
      Blaise Pascal (1623-1662)
      Filósofo e matemático Françês.
Contribuiu
para o desenvolvimento na área de hidráulica,
cálculo
e teoria matemática de probabilidade. A sua maior
invenção
foi provavelmente o "Triângulo de Pascal":
       
      Cada número é a soma dos dois números
imediatamte
em cima de si, esquerda e direita tal como ilustra a figura:
       
             1
       
            1 1
       
           1 2 1
       
          1 3 3 1
       
         1 4 6 4 1
       
  
       | 
    
  
Início
Um programa é uma sequência de instruções,
que informam o computador sobre uma tarefa específica que se
quer
concretizar. A maioria das linguagens de programação
modernas
apresentam um formato bastante legivel de fácil
percepção,
assemelhando-se ao Inglês corrente, facilitanto aos humanos a
leitura
dos programas assim como a sua escrita, contrastando com as primeiras
linguagens
de programação, que se apresentavam como um tipo de
linguagem
próxima da linguagem máquina, tal como ilustra o
exemplo 
em linguagem assembler  (aula 2). PASCAL
é
a linguagem que mais se assemelha com a linguagem natural humana o que
a torna uma linguagem de eleição no ensino da arte de
programação.
Todos os programas em PASCAL têm o mesmo formato, tal como
é
mostrado em seguida:
PROGRAM Title;
begin
  program_statement_1;
  program_statement_2;
        
|
  program_statement_n;
end.
Vamos dar uma vista de olhos neste programa.
  - 
Todos os porgramas são iniciados com a palavra PROGRAM seguida
pelo título do programa
 
  - 
    begin define o ponto de iníciuo do programa
 
  - 
    end. define o fim dum ficheiro e por sua vez o fim do
programa.É
de notar o ponto final "." no fim.O mesmo só é utilizado
para o comando "end" do final do programa.Todos os outros comandos
são
finalizados com ponto e vírgula ";".
 
  - 
Entre os comandos "begin" e "end" serão colocadas as
intruções
que formam um bloco.Todas as intruções entre estes dois
comandos
são tratados posteriormente pelo compilador como uma
instrução
só.
 
  - 
Entre "begin " e "end " podemos colocar as nossas próprias 
instruções. Estas intruções podem ser
intruções
que o PASCAL já conhece, ou intruções que
nós
iremos definir (chamam-se procedimentos e funções, o que
será discutido mais tarde).
 
  - 
 PASCAL não é um caso sensitivo: "Program",
"PROGRAM",
"program", etc, são interpretadas da mesma forma , ou seja o
PASCAL
não diferencia letras maiúsculas e minúsculas.
 
  
 
Identificadores
Identificadores, tal como o nome indica, servem para identificar
algo. Podem ser o nome de programas, nome de procedimentos
,
funções e nomes de variáveis e constantes.
Mais
tarde será visto nas aulas.Tal como na maioria das linguagens,
nomes
de identificadores têm algumas restrições:
 
  - 
Deverão começar por uma letra. "PROGRAM 20hours;"
não
é permitido
 
  - 
Seguido por qualquer combinação de letras, dígitos
ou caractér underscore "_".
 
  - 
Espaços não são permitidos, tal como caracteres
como
"(", "{", "[", "%", "#", "?", etc, excepto "_", isto porque estes
caractéres
são utilizados em PASCAL para outro tipo de coisas. São
chamados
caracteres reservados.
 
  
  
    
      
        | { } [ ] ( ) - = + / ? < > . , ; : ' " ! @ # $ % ^
& * ~
` \ | | 
      
    
  
  
  - 
Identificadores não podem ser igual ás palavras
reservadas
do PASCAL, tal como "program",  "begin", "end". Notar que 
identificadores
tais como "program1", ou "program_" são permitidos, sendo que o
seu uso é desaconselhado para prevenir confusão que
possa 
vir a ser gerada nos nomes. Nota: em muitos ambientes de
programação
(tal como Turbo Pascal 7), o uso de palavras reservadas é
anunciado
porque estas mesma palavras, quando são escritas  aparecem
com cor diferente.
 
  - 
Escolha bem os seus identificadores. Quando um programa serve para
calcular
taxas, chame-o por exemplo"PROGRAM  Taxas;" e não "PROGRAM
program1;". Apesar de não ser errado usar este nome a sua
escolha
não é muito inteligente, pois desta forma não
é
identificado aquilo que o programa faz. Usando identificadores
indicados 
ajuda outras pessoas a entederem o seu programa, ou voçê
mesmo
quando passou muito tempo sem mexer nesse programa.
 
  - 
O comprimento minimo do identificador é 1, o máximo
comprimento
é 255. Faça uso da possibilidade de
utilização
de nomes extensos, mas lembre-se também que nomes muito grande
poderão
tornar o programa pouco perceptível. Tal como o provérbio
diz nem 8 nem 80, logo tente ser claro e sucinto nos nomes escolhidos.
Qual dos seguintes nomes voçê acha mais adequado:
 
  
   r := r + a;
  
   money := money + interest;
  
   themoneyintheaccountofpersonwithnameJohnson
:= themoneyintheaccountofpersonwithnameJohnson +
thecurrentinterestrateatthetimeofthiswriting;
  
  - They are not case sensitive, "i" is equal to "I", etc. To make
programs
more readable, follow a convention all through your program(s). The
most
often used convention is lowercase for variables and UPPERCASE for
CONSTANTS.
 
  Programação estruturada
  
    
        | 
      A coisa mais importante na
programação é escrever
duma forma clara, lógica e programas estruturados. Aqui
vêem
alguns avisos:
       
 
      
        - Utilize nomes significativos para as variáveis,
procedimentos e
funções
 
        - Utilize  identação. Compare os programas
a seguir ilustrados: 
 
         
       
       | 
    
  
  
    
      | PROGRAM
Myprogram;begin writeln("Hello world!");end. | 
    
  
            e
  
    
      | 
         PROGRAM MyProgram;
       
        begin
       
          writeln("Hello
world!");
       
        end.
       
       | 
    
  
  Ambos os programas fazem exactamente o mesmo, mas o segundo
é
muito mais legível. A diferença é:
 
  
  
    - 
Apenas utiliza uma instrução por linha
 
    - 
Usa identação: Coloca 2 espaços extras no
início
da linha todas as vezes que estamos num nível abaixo na
estructura.
 
    - 
Separação de blocos de texto (funções e
procedimentos)
com linhas em branco.
 
  
  - 
Evitar o uso de intruções "goto label". Com estas
instruções,
o programa rapidamente começará a parecer-se com
esparguete.
 
  
 
   
  
 
  
 
  
 
  
 
  
  Comentário: Sendo  o PASCAL muito próximo da
língua
inglesa, o programa por si só deverá auto- explicar-se.
Em
zonas onde a ideia do programa não é muito clara para o
programador,
deverá recorrer á utilização de
comentários.
Em PASCAL os comentários são colocados entre chavetas "{
}". O compilador não interpreta a informação
contida
a seguir à primeira chaveta "{" até à chaveta
seguinte
"}".Logo qualquer texto poderá ser inserido entre estas
chavetas.Em
algums compiladores tais como o "Turbo Pascal" os comentários
são
inseridos entre "(*"e"*)".
  
  Utilize procedimentos e funções de forma a fazer com
que
o texto se torne mais organizado. Se em vários sitios do
programa
terá de ser repetida a mesma acção (por exemplo a
leitura duma linha de texto de um ficheiro),considere a hipótese
de criar um procedimento ou função para a
execução
desta mesma tarefa (por exemplo PROCEDURE  le_linh_fich). Isto
tornará
o programa mais claro, mais eficiente e mais pequeno.
  
 
  
 
Palavras reservadas em Turbo Pascal
As palavras seguinte não podem ser  utilizadas para
identificadores.
A maioria destas palavras chave são explicadas  nas aulas
nos
capítulos descritos na segunda coluna.
 
  
    
      
      
        
          
            | 
            keyword
             | 
            
            subject
             | 
           
          
            |  and | 
            boolean algebra  | 
           
          
            |  asm | 
              | 
           
          
            |  array | 
             arrays | 
           
          
            |  begin | 
             introduction | 
           
          
            |  case | 
             if .. then | 
           
          
            |  const | 
             variables and constants | 
           
          
            |  constructor | 
              | 
           
          
            |  destructor | 
              | 
           
          
            |  div | 
             algebra | 
           
          
            |  do | 
             loops | 
           
          
            |  downto | 
             loops | 
           
          
            |  else | 
             if .. then | 
           
          
            |  end | 
             introduction | 
           
          
            |  exports | 
              | 
           
          
            |  file | 
              | 
           
          
            |  for | 
             loops | 
           
          
            |  function | 
             procedures and functions | 
           
        
       
       | 
      
      
        
          
            | 
            keyword
             | 
            
            subject
             | 
           
          
            |  goto | 
              | 
           
          
            |  if | 
             if .. then | 
           
          
            |  implementation | 
              | 
           
          
            |  in | 
              | 
           
          
            |  inherited | 
              | 
           
          
            |  inline | 
              | 
           
          
            |  interface | 
              | 
           
          
            |  label | 
              | 
           
          
            |  library | 
              | 
           
          
            |  mod | 
             algebra | 
           
          
            |  nil | 
             pointers | 
           
          
            |  not | 
             boolean algebra | 
           
          
            |  object | 
              | 
           
          
            |  of | 
             if .. then | 
           
          
            |  or | 
             boolean algebra | 
           
          
            |  packed | 
              | 
           
          
            |  procedure | 
             procedures and fucntions | 
           
        
       
       | 
      
      
        
          
            | 
            keyword
             | 
            
            subject
             | 
           
          
            |  program | 
             introduction | 
           
          
            |  record | 
             records | 
           
          
            |  repeat | 
             loops | 
           
          
            |  set | 
              | 
           
          
            |  shl | 
              | 
           
          
            |  shr | 
              | 
           
          
            |  string | 
             variables | 
           
          
            |  then | 
             if .. then | 
           
          
            |  to | 
             loops | 
           
          
            |  type | 
             variables | 
           
          
            |  unit | 
              | 
           
          
            |  until | 
             loops | 
           
          
            |  uses | 
              | 
           
          
            |  var | 
             variables | 
           
          
            |  while | 
             loops | 
           
          
            |  with | 
             records | 
           
          
            |  xor | 
             boolean algebra | 
           
        
       
       | 
    
  
As palavras seguinte estão relacionadas com variáveis
e constantes. A utilização destas palavras em
identificadores
é desaconselhável.
 
  
    
      |  boolean  | 
    
    
      |  byte  | 
    
    
      |  char  | 
    
    
      |  double  | 
    
    
      |  integer  | 
    
    
      |  real  | 
    
    
      |  string | 
    
    
      |  text  | 
    
    
      |  word | 
    
    
      |   | 
    
    
      |   | 
    
  
Teste rápido:
Para testar o  conhecimento que tem adquiriu nesta
lição
click
aqui para fazer um teste on-line. Note
que este não tem a mesma forma que a frequência final.
Peter Stallinga. Universidade do Algarve, 17 fevereiro 2002