Coral 66
Foram assinalados vários problemas nesta página ou se(c)ção: |
| Coral 66 | |
|---|---|
| Paradigma | estruturada, imperativa, procedural |
| Surgido em | 1964 |
| Criado por | Royal Radar Establishment |
| Influenciada por | ALGOL, JOVIAL, Coral 64, Fortran |
Coral 66 é uma linguagem de programação para fins gerais baseada em ALGOL 60, com alguns recursos das linguagens de programação Coral 64, Jovial e Fortran. Originalmente projetada em 1966 na Royal Radar Establishment (RRE), na cidade de Malvern, Reino Unido, em resposta a necessidade de um compilador em um computador de ponto fixo e em um ambiente de controle.
História
A linguagem foi um padrão interserviços de um programa militar, e também largamente utilizada para propósitos civis do controle Britânico e na automação industrial. Ela foi utilizada para escrever software para computadores Ferranti e GEC de 1971 em diante.
Uma variante da linguagem foi desenvolvida durante o final dos anos 70 e inicio dos anos 80, para o uso sobre o System X de computadores de controle de cambio de telefones digitais, conhecido como PO CORAL. Mais tarde foi renomeado para BT-CORAL quando a British Telecom foi desmembrada dos correios. As únicas caracteristicas desta linguagem eram o foco sobre a execução em tempo real, o processamento de mensagens, limites de execução de instrução entre a espera para entrada, e a proibição de recursão para eliminar a necessidade de uma pilha.
Visão Geral
A linguagem inclui tipos de registro estruturado (assim como em Pascal) e suporta o empacotamento de dados para armazenamento limitado, e oferece boa verificação e diagnóstico em tempo de execução. Ela é destinada especificamente para aplicações de tempo real e para o uso em computadores com limitado poder de processamento, incluindo aqueles que são limitados a aritmética de ponto fixo e os que não tem suporte de alocação de armazenamento dinâmico.
Expressões
Como não há variáveis boleanas, as expressões depois de IF são conhecidas como condições. A sintaxe é:
Expressão ::=
Expressão incondicional
Expressão condicional
Expressão incondicional ::=
Expressão simples
String
Expressões Simples
| Operador | Função |
|---|---|
| + | Adição |
| - | Subtração |
| * | Multiplicação |
| / | Divisão |
Não há operador de exponenciação. A sintaxe para a expressão simples começa como se segue:
Expressão simples ::=
Termo
Operação de adição Termo
Simples Expressão Operação de adição Termo
Termo ::=
Fator
Termo Operação de multiplicação Fator
Operador de adição ::=
+
-
Operador de multiplicação ::=
*
/
Tipos de Dados
Tipos numéricos
No Coral 66 há três tipos de dados numéricos. São eles: inteiros, ponto-flutuante e ponto-fixo. A sintaxe de declarações para estes tipos seguem a seguinte forma:
Numbertype ::=
FLOATING
FIXED Scale
INTEGER
Scale ::= (Totalbits , Fractionbits)
Totalbits ::= Integer
Fractionbits ::= Signedinteger
Onde para a declaração de uma variável do tipo FIXED, devemos informar a quantidade de algarismos da parte fracionária.
FIXED(13,5)
(Neste exemplo é declarada uma variável de no máximo 13 algarismos, sendo 5 algarismos a parte fracionária.)
Vetores
A declaração de vetores no Coral 66 é muito semelhante a outras linguagens imperativas. Abaixo segue um exemplo de declaração de arrays.
FIXED(13,5) ARRAY b[0:19]; FLOATING ARRAY c[1:3,1:3];
Note que nesta linguagem, para vetores que seja necessário conter mais de um array para a mesma variável, por via de regra, a linha inferior nunca poderá conter um vetor maior do que a linha superior. Além disso, para separ as linhas de arrays multidimensionais, é necessário colocar uma vírgula (,), para informar o fim da linha e assim, colocando o tamanho de outra. Também é possivel declarar arryas e tipos simples na mesma linha, contanto que sejam do mesmo tipo. Vide exemplo:
INTEGER ARRAY p, q, r[1:3], s[1:4], t, u[1:2, 1:3];
Tabelas
Para a declaração de tabelas, é utilizada a seguinte sintaxe:
TABLE April[3,30]
Na declaração acima é declarada uma tabela de 30 posições, com tamanho de 3 palavras. Ou seja, esta tabela totaliza uma alocação de 90 palavras.
Tabledec ::=
TABLE Id [ Width , Length ]
[Elementdeclist Elementpresetlist ] Presetlist
Elementdeclist ::=
Elementdec Elementdec ; Elementdeclist
Width ::= Integer
Length ::= Integer
Tabelas de elementos
Exemplo de Código
Abaixo, um exemplo simples de uma implementação em Coral 66.
'external' (
'procedure' write (
'value''integer', 'byte''array', 'value''integer');
)
'begin'
'byte''array' Buf [1:12] := "Hello world", 10;
write (1, Buf, 12);
'end'
Para compilar este arquivo, primeiramente devemos salvar com a extensão .cor ou .c66.
No prompt de comando, você deve executar a seguinte instrução:
$ m68k-coff-gcc hello.cor -o hello
O comando m68k-coff-gcc é utilizado para a chamada do compilador do Coral 66, o qual também compila códigos em C e Assembly. Para executar o arquivo já compilado, o comando $ m68k-coff-run é quem realiza a execução. No caso do exemplo acima, você terá uma a frase “Hello world” impressa na tela.
$ m68k-coff-gcc hello
Ferramentas de Programação
O compilador XGC da linguagem Coral 66 está de acordo com a definição oficial da linguagem, BSI Standard 5905, e suporta vários conjuntos de extensões de padrões industriais. Ele é portanto, bem posicionado como uma implementação moderna da linguagem.
O XGC está disponível como compilador nativo no Sun SPARC Solaris e no IBM PC Linux, e como um compilador hibrido, cria plataformas padrões para qualquer alvo suportado. Alvos imediatamente disponíveis são: Familia Motorola M68000, Familia Intel 386, SPARC, MIL-STD-1750 e Power PC.
O XGC tem a tecnologia plenamente desenvolvida, incorporando um novo front end do compilador para suportar a linguagem Coral 66. Este front end está além do front end das linguagens C, C++ e Ada95, e nos permite construir compiladores personalizados para qualquer mistura destas linguagens.
O diagrama a seguir, nos mostra um compilador que suporta as 3 linguagens:
Segmentos do programa escrito em Coral 66 têm pleno acesso às bibliotecas padrão. Em especial, um programa escrito em Coral 66, pode utilizar a biblioteca ANSI C para executar comandos I/O, operações com string, alocação de memória e assim por diante.
Segmentos de um programa em Coral 66 podem ser ligados à um programa em Ada, e chamadas podem ser feitas a partir de código-fonte Ada para código-fonte Coral, ou vice-versa.
Bibliografia
- Coral 66 Language Reference Manual - XGC
- XGC Software
- Coral 66 Pocket Handbook
- Coral 66
- Getting Started with M68K Coral 66
Ligações externas
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.