Escolar Documentos
Profissional Documentos
Cultura Documentos
Março de 2019
Linguagem de programação em Ada Pág. 1
Índice
ÍNDICE ...................................................................................................................................................... 1
1. INTRODUÇÃO ...................................................................................................................................... 2
3. ATRIBUTOS ........................................................................................................................................... 4
4. OPERADORES ....................................................................................................................................... 5
7. DECISÕES .............................................................................................................................................. 7
8. CONCORRÊNCIA ................................................................................................................................ 11
1. Introdução
Ada é uma Linguagem de programação estruturada, de tipagem estática, é uma
linguagem imperativa, orientada a objetos e é uma linguagem de alto nível, originada
de Pascal, Simula e outras linguagens. Foi originalmente produzida por uma equipe
liderada por Jean Ichbiah da CII Honeywell Bull, contratados pelo Departamento de
Defesa dos Estados Unidos durante a década de 70, com o intuito de substituir as
centenas de linguagem de programação usadas pelo DoD. Ada é uma aplicação com
compiladores validados para uso confiável em missões criticas, tais como softwares
de aviação. Normatizada internacionalmente pela ISO, sua versão mais atual é de
2012. Em 1973 o Departamento de Defesa Norte-Americano (DoD), recenseou 450
linguagens diferentes e das linguagens existentes em 1976 contra um conjunto de
requisitos que resultou que nenhuma cumpriria os requisitos fornecendo, assim uma
única linguagem era desejável.
O desenvolvimento era possível e devia começar de uma linguagem existente, sendo
recomendadas as linguagens Pascal, PL/I e ALGOL 68 com ausência do C e ente elas
foi escolhida a linguagem Pascal. Em 1983 nasceu a linguagem Ada aparecendo
algumas problemas com o seu suporte a Sistemas de Tempo Real. E alguns desses
problemas que se mostrava foram que a linguagem não incorporava alguns dos
avanços da altura em termos de escalonamento de Sistemas de Tempo Real, portanto,
em 1995 a primeira revisão da linguagem foi ao encontro com as dificuldades e foi
instituída a linguagem Ada 95, sendo assim, criada a primeira linguagem normalizada
com suporte a orientado a objectos e sistemas de tempo-real. Em 2000 projetaram uma
nova revisão da linguagem para incorporar aos avanços em diversas áreas
principalmente OO e STR.
O nome da linguagem é uma homenagem a Ada Lovelace (filha de Lord Byron), que
foi assistente de Charles Babbage, o homem que inventou o primeiro computador.
Existe dúvida se foi Ada Lovelace ou Charles Babbage a primeira pessoa
programadora da história. No entanto, Ada Lovelace foi a primeira mulher
programadora da história. Então a partir deste momento a palavra Ada será utilizada
para referir-se à norma de 1995
2. Tipo de dados
Um tipo de dados é um conjunto de valores com um conjunto de operações primitivas
associadas e que pode criar um novo tipo derivado de outro que herda as operações
do outro completamente independentes, não podendo comparar varáveis de um com
variáveis do outro.
2.1 Tipos discretos
2.1.1 Enumerados:
• Boolean;
• Character -> não é um inteiro;
• type All_Days;
• subtype;
• type Modo, Manual, Automatico.
2.1.2 Inteiros com sinal
• type Index;
• Integer
2.1.3 Inteiros modulares
• Ada não tem inteiros sem sinal, pois facilmente se pode criar um com o range;
• Ada tem os chamados tipos modulares em que se especifica o valor máximo, e
que fazem “wrap” automaticamente;
• type Byte is mod 256.
2.2 Tipos Reais
2.2.1 Vírgula flutuante
• Float;
• type Length.
2.2.2 Vírgula Fixa
• type Voltage;
• type Money.
3. Atributos
Certos tipos têm atributos que podem ser utilizados para obter informação sobre o tipo,
os atributos são referenciados através do caracter plica (‘).
4. Operadores
Ada é uma linguagem que oferece várias vantagens que a torna apropriada para
diversas necessidades, tais como:
• Código seguro e confiável;
• Reduz custo de desenvolvimento;;
• Suporta as novas tecnologias;
• Facilidades para o desenvolvimento de programas complexos;
• Código legível e portátil;
• Reduz os custos de certificação para software de missão crítica.
7. Decisões
7.1 Decisão se
Decisão-if ::=
if expressão-booleana then
instruções;
{elsif expressão-booleana then
instruções;}
[else
instruções;]
end if;
Assim, não se podem fazer atribuições dentro dos testes, só se pode ter expressões
que dêem true ou false.
estudei : Integer := 1;
if estudei and then exame = facil then -- errado, estudei não é booleano Passei;
Festejar; else
Estou_ca_para_o_ano;
end if;
Assim, tem que se prever todos os valores possíveis da variável. Ou então usar a
alternativa others. Se não dá erro de compilação.
case Dia is
when Segunda => Levantar_mal_disposto;
Inicio_Trabalho;
end case;
8. Concorrência
A linguagem Ada permite a especificação de tipo de tarefas, as quais iniciam execução
sem necessidade de ativação explícita.
8.1 Para comunicação / sincronização entre tarefas temos disponíveis vários
mecanismos:
• Rendezvous (Comunicação síncrona);
• Objectos protegidos (Recursos partilhados - mecanismo de alto nível);
• Objectos de sincronização (mecanismo de baixo nível.)
8.2 Relógio
No Ada, além de um relógio normal (Calendar) existe um relógio de tempo-real,
com precisão mínima de 1µS, com um mecanismo de suspensão de uma tarefa
por um tempo determinado:
• Atraso relativo (delay);
• Atraso absoluto (delay until).
8.3 Prioridades
• Em Ada podemos especificar prioridades para tarefas, e para o tecto de prioridades de
objectos protegidos
• As prioridades podem ser dinâmicas
8.4 Despacho das tarefas
• Podemos especificar a forma pretendida para o despacho das tarefas.
• O anexo de sistemas de tempo-real especifica que tem que existir pelo menos
FIFO_Within_Priorities (despacho por prioridades, com FIFO na mesma prioridade
9. Relógios e Temporizadores
9.1 Existem dois tipos de relógios
• Um relógio normal (Ada.Calendar.Clock), como se fosse um relógio de parede
• Um relógio de tempo real (Ada.Real_Time.Clock)
• Geralmente são o mesmo relógio de hardware, mas são utilizados de forma diferente
9.1.1 Ada.Calendar
• O tipo Time pode representar qualquer coisa (geralmente representa segundos desde
as 0 horas do dia 1/1/70, como em Unix, mas não se pode garantir;
• A função Clock retorna o Time actual;
• O tipo Duration representa uma diferença de instantes. Não pertence à package
Ada.Calendar, mas existe globalmente (package Standard);
• Existem funções para retirar Ano/Mês/Dia a partir do Time.
9.1.2 Ada.Real_Time
• O tipo Time pode representar qualquer coisa (geralmente é o mesmo de Calendar, mas
não se pode garantir);
• A função Clock retorna o Time actual;
• O tipo Time_Span representa uma diferença de instantes;
• Existem funções para converter ms/µs/ns em Time_Span.
10.Conclusão
Este documento é importante para perceber os objectivos, utilizações e aplicações da
linguagem Ada. A linguagem que recebeu grandes investimentos e foi criada com
objetivos definidos e organizados, destinada principalmente, conforme seus
idealizadores, para sistemas distribuídos, embutidos e de tempo real.
O processo de desenvolvimento do Ada 2005 tem muitos objetivos. Uma das metas e
remover limitações e aumentar a usabilidade dos recursos existentes. Outros objetivos
são de aumentar a capacidade da orientação à objetos e de se adequar as necessidades
das comunidades de programação real-time e high-integrity. Existe também uma avidez
de padronizar certas extensões de implementação comum e de expandir um conjunto de
bibliotecas pré-definidas. Aumentar a compatibilidade certamente é uma importante
necessidade.
3. https://pt.wikipedia.org/wiki/Ada_(linguagem_de_programação);
4. http://www.adacore.com/adaanswers/about/ada;
5. http://www.adapower.com/index.php?ClassID=Advocacy&Command=Class&CID=39 ;
6. http://www.ada2012.org/files/Thoughts_on_Ada.pdf;
7. http://www.inf.ufg.br/~eduardo/lp/alunos/ada/hist.htm