A linguagem Pascal é uma linguagem estruturada, isto é, permite-nos uma melhor organização na maneira de trabalhar e criar nossos programas. Ela foi criada por um grupo de estudantes no intuito de facilitar a programação de computadores.
O que vem a ser uma linguagem estruturada?
Em uma linguagem estruturada, as rotinas são separadas em blocos visivelmente identificados. Dessa forma, o programa fica mais legível, mais fácil de organizar e gerenciar. Já no caso do Basic, que não é uma linguagem estruturada, o código fica disposto em linhas sequenciais, sem qualquer tipo de separação, tornando-o mais complexo de utilizar.
Como na maioria das linguagens de alto nível, o código de um programa em Pascal é compilado para a linguagem de máquina e então executado. Já a linguagem Basic é interpretada.
Afinal, o que vem a ser uma linguagem compilada ou interpretada?
Um programa é compilado quando todo o código é convertido em linguagem de máquina antes da execução, gerando um novo arquivo chamado de arquivo executável. No caso do Pascal, um arquivo com extensão ".com" é gerado para ser posteriormente executado.
Um programa interpretado leva mais tempo para executar do que um traduzido, visto que é necessário fazer a tradução para a linguagem de máquina linha a linha, enquanto que no programa compilado o código executável já está em linguagem de máquina.
O compilador de Pascal para o MSX é o Turbo Pascal, no qual possui duas versões: 2 e 3.
O Turbo Pascal do MSX é perfeitamente compatível com os compiladores Pascal do PC, desde que utilizada a linguagem padrão Pascal, isto é, sem as rotinas específicas do sistema MSX. Desse modo, se você fizer um programa em Pascal em um computador e levar os fontes para compilar no outro, vai funcionar. O que não se pode fazer é levar a versão compilada de um sistema para outro.
O PC conta ainda com as versões do Turbo Pascal 4, 5, 6 e 7, que possuem alguns recursos não disponíveis para MSX como os "units" e orientação a objeto.
Este curso tem como finalidade familiarizar você à linguagem Pascal, saber como compilar no MSX e como utilizar a bliblioteca de rotinas criadas por Kari Lammassaari para o MSX.
Primeiros passos
Há três maneiras diferentes de se compilar um programa em Pascal para utilizar no MSX:
Após inserir o disco com o Pascal e com o MSX-DOS, tecle TURBO e enter. Ele irá perguntar se você quer que inclua as mensagens de erro. Sim, tecle Y. | |
Agora estamos na tela principal do Pascal. Teclando:
E - Edita arquivo. C - Compila arquivo. R - Executa arquivo em uso (Work file). S - Salva arquivo. X - Executa. D - Mostra diretório. Q - Sai do Pascal. O - Opções de compilação: M - Compila o programa na memória. C - Compila no disco em formato .com. H - Compila em formato Chain. Q - Sai deste menu. Uma outra tecla que pode ser pressionada, que não aparece no menu é a tecla W. Ela altera o arquivo ativo. |
|
Se nenhum arquivo estiver ativo, ao editarmos (E) um arquivo ele pedira a você um nome de arquivo (Work file). Escreva o nome desejado, sem colocar a extensão .PAS. Se o arquivo já existir, ele será aberto, senão um novo arquivo será criado. Vamos criar um novo arquivo. Digite: prog1. Ele criará um novo arquivo chamado prog1.pas. Agora, digite o programa da imagem ao lado. begin write('O MSX vive'); end.Dicas: A combinação de teclas CTRL+Y apaga uma linha. Já CTRL+K e depois D sai da edição. |
|
Ao teclar CTRL+K e depois D para terminar a edição, o propt reaparece. Se desejar, tecle uma das setas para voltar a mostrar o menu.
Agora, podemos fazer duas coisas:
Para salvar o arquivo fonte, tecle S. Este arquivo é salvo em formato texto e pode ser lido no Pascal do PC e também no Edit, Word etc. Se quisermos criar um arquivo que rode fora do Pascal, teremos que compilá-lo em um arquivo no formato .COM. Tecle O e em seguida C. Pressione Q e em seguida C. Dessa forma, sempre que rodarmos ou compilarmos um programa ele irá gravar um arquivo executável no formato .COM. |
Abra o editor Mac Program Writer. | |
Agora estamos no editor MPW. Principais comandos:
F1 - Ajuda. F2 - Salva texto. F3 - Abre texto. F5 - Preferências. F6 - Exibe diretório. F8 - Divide a tela em duas para abrir dois textos ao mesmo tempo. F9 - Troca texto ativo. F10 - Sai do editor e volta para o DOS. |
|
Escrever o mesmo programa do exemplo do Turbo Pascal 2. Dicas: O comando control + K + B marca o inicio de um bloco. O comando control + K + K marca o fim do bloco. O comando control + K + C copia o bloco selecionado para a linha atual. |
|
Tecle F2 para salvar o programa. Nome do arquivo: "hello.pas". Quando a pergunta sobre trocar tabulações por espaços surgir, escolha N. Saia do editor teclando F10 (shift + F5). |
|
Para compilar o programa é fácil. Digite no DOS: "turbo hello". A extensão ".pas" deverá ser omitida. |
|
Para executar, basta digitar "hello". |
O Turbo Pascal 2 pode tanto compilar na memória, como salvar em disco no formato ".com". Para escolher a opção, entre no menu de compilação. Já o Turbo Pascal 3 somente pode compilar para arquivo ".com".
Meus primeiros programas em Pascal
Como boa parte dos usuários de MSX possuem conhecimentos sobre a linguagem Basic, os primeiros programas em Pascal aparecem juntamente com seu equivalente em Basic para comparação dos códigos. Algumas estruturas como IF-THEN-ELSE e FOR são similares ao Basic. Entretanto, se você não conhece nada sobre programação, não se preocupe. As seções seguintes explicam em detalhes essas estruturas.
Algumas dicas para principiantes:
Basic | Pascal |
10 print"O MSX vive!" | begin
write('O MSX vive!'); end. |
Basic | Pascal |
10 for
f=1 to 10
20 print "O MSX vive!" 30 next f |
var f
: integer;
begin
|
nome_variavel : tipoAs variáveis podem ser dos seguintes tipos:
Tipo | No Pascal | Tamanho |
Inteira | integer | 2 bytes (-32768 a 32767) |
Short | shortint | 1 byte (-128 a 127) |
Longa | longint | 4 bytes (-2147483648 a 21...) |
Byte | byte | 1 byte (0 a 255) |
Word | word | 2 bytes (0 a 65535) |
Booleana | boolean | 1 byte (0 ou 1) |
Caracter | char | 1 byte (valor ascii) |
String | string[n] | n bytes |
Basic | Pascal |
10 input"Escreva
MSX para sair";n$
20 if n$ <> "MSX" then 10 |
var n
: string[255];
begin
|
Basic | Pascal |
10 input"Escreva
seu nome";n$
20 if n$="MSX" then ?"Fala xará" else ? " Seu nome é ";n$ |
var n
: string[255];
begin
|
IF <condição> código, se condição for verdadeira. ELSE código, se condição for falsa.
if a=4 then writeln('Valor correto');
if nome='MSX' then writeln('Fala xará!') else writeln('Seu nome é ',n);
if idade >= 65 then begin writeln('O senhor já chegou à "melhoridade"'); writeln('O senhor tem direito à prioridade em filas'); end else writeln('Entre na fila comum.');
if idade < 65 then writeln('Entre na fila comum.') else begin writeln('O senhor já chegou à "melhoridade"'); writeln('O senhor tem direito à prioridade em filas'); end;
O Pascal não possui linhas numeradas como o Basic, mas também executa o programa linha a linha, instrução a instrução. Ele começa pelo corpo principal do programa, pelas linhas de cima e caminha no sentido para baixo baixo, sempre em linhas consecutivas, salvo encontre alguma chamada de função ou procedimento (desvio).
O corpo principal do programa é o "begin" e "end" que normalmente estão localizados ao final do código do programa e não estão ligados a qualquer outra estrutura, como uma função, procedimento, for, if, while etc. Sua sintaxe é:
begin
código
end.
No Pascal é obrigatória a declaração de variáveis que serão utilizadas no programa, bem como a indicação do tipo da variável. As variáveis declaradas se localizam no topo do programa. As declarações de variáveis ou tipos não fazem parte da execução do programa, onde o que executa é o corpo principal e as sub-rotinas como procedimentos e funções.
A execução do programa começa no corpo principal do programa através da primeira linha de instrução depois do "begin" e vai descendo linha a linha até a última instrução antes do "end.".
var a : integer;
begin
linha_1 |
linha_2 |
linha_3 |
... V
end.
Quando há um chamada de uma sub-rotina, o programa pára naquela linha e passa a executar as linhas da sub-rotina até terminar, sempre começando de cima para baixo. Ao retornar, começa a executar a linha seguinte.
Os exemplos a seguir contêm o número da ordem de execução das instruções do programa em Pascal.
begin
01 writeln('Olá');
end.
Saída:
Olá
Vamos ver um exemplo com um procedimento (procedure). O procedimento em Pascal é uma função que não retorna valor.
procedure proc1;
begin
03 writeln('proc1'); +---+
end; | |
| |
begin | |
01 writeln('Olá'); | | |
02 proc1; +---+ |
04 writeln('Tchau'); V
end.
Saída:
Olá
proc1
Tchau
Se omitirmos a chamada ao procedimento, ele não será executado:
procedure proc1;
begin
writeln('proc1');
end;
begin
01 writeln('Olá');
end.
Saída:
Olá
Controle do cursor
Teclas
Opcional
Caracter à esquerda
CTRL-S
Seta à esquerda
Caracter à direita
CTRL-D
Seta à direita
Linha para cima
CTRL-E
Seta para cima
Linha para baixo
CTRL-X
Seta para baixo
Tela para cima
CTRL-R
Tela para baixo
CTRL-C
Palavra à esquerda
CTRL-A
Palavra à direita
CTRL-F
Scroll para cima
CTRL-W
Scroll para baixo
CTRL-Z
Começo da linha à esquerda
CTRL-QS
Fim da linha à direita
CTRL-QD
Topo da tela
CTRL-QE
Fim da tela
CTRL-QX
Topo do arquivo
CTRL-QR
Fim do arquivo
CTRL-QC
Começo do bloco
CTRL-QB
Fim do bloco
CTRL-QK
Posição anterior
CTRL-QP
Tabulação
CTRL-I
Tab
Tabulação automática (S/N)
CTRL-QI
Inserção ou deleção
Teclas
Opcional
Inserção
CTRL-V
Ins
Apaga caracter à esquerda
BS
Apaga caracter sob cursor
CTRL-G
Del
Apaga palavra à direita
CTRL-T
Insere linha
CTRL-N
Apaga linha
CTRL-Y
Apaga até o fim da linha
CTRL-QY
Manuseio de blocos
Teclas
Opcional
Marcar começo de bloco
CTRL-KB
Marcar fim de bloco
CTRL-KK
Marcar uma palavra
CTRL-KT
Mostar / esconder bloco
CTRL-KH
Copiar bloco marcado
CTRL-KC
Mover bloco marcado
CTRL-KV
Ler bloco de um arquivo
CTRL-KR
Escrever bloco num arquivo
CTRL-KW
Procura e troca
Teclas
Opcional
Procurar string
CTRL-QF
Procurar/trocar string
CTRL-QA
Repetir procura/troca
CTRL-L
Outros comandos
Teclas
Opcional
Inserir caracter de controle
CTRL-P, CTRL-X
Abandonar
CTRL-U
Restaurar linha
CTRL-QL
Terminar Edição
CTRL-KD
O programador Kari Lammassaari criou algumas rotinas escritas em Assembly para o uso no Pascal do MSX, que fazem acesso a alguns recursos do MSX como tela gráfica, sons, variáveis de sistema e relógio, bem como acesso a recursos do MSX-DOS 1 e 2.
Uma biblioteca é uma coleção de programas prontos que realizam determinadas tarefas. A vantagem disso é que não é necessário criar novamente uma solução para um mesmo problema já solucionado.
No caso das bibliotecas do Lammassaari, são rotinas que acessam recursos do MSX e que não existem no Turbo Pascal nativo, tais como desenhar um círculo na tela e tocar uma música.
Uma vez que o Pascal não tem acesso aos recursos do MSX, faz-se necessário escrever programas na linguagem Assembly para resolver tal questão. Dado que o Pascal permite a inserção de código de máquina no programa, fica fácil solucionar esse problema.
Observe mais uma vantagem de se incluir programas prontos: um programador experiente fez rotinas em Assembly para resolver um determinado problema que necessita de acesso a um recurso específico do MSX. Meu trabalho é apenas incorpar tal rotina ao meu programa e chamar pela função que eu desejo executar, passando os parâmetros necessários para ela. Assim, não preciso saber programar Assembly para resolver meu problema. Somente tenho que chamar a rotina criada. Ex:
circle(100,100,50,15);
As rotinas do Lammassaari foram criadas em arquivos separados, que são anexadas ao programa principal através do comando "include".
Os arquivos de inclusão são arquivos com extensão ".inc" e devem ser chamados dentro do programa em pascal da segunte maneira:
{$i arquivo.inc}
Exemplo de um programa que inclui um outro arquivo.
{$i date.inc}
var hora : integer;
begin
gettime := hora;
end.
Note que o comando "gettime" não existe no Pascal. Entretanto, o arquivo de inclusão "date.inc" possui uma rotina de acesso ao relógio do MSX, no qual disponibiliza esse recurso através da função "gettime". Repare que a inclusão do arquivo deve ser a primeira coisa a ser feita.
Na seção programming/pascal da Funet (atual msxarchive) estão todos os arquivos ".inc" da biblioteca do Lammassaari.
Obs:
<< Anterior
Pascal
Próxima >>