You are on page 1of 12

Universidade Federal do Piauí – UFPI

Universidade Aberta do Piauí – UAPI


Bacharelado em Sistemas de Informação
Professor: Antonio Oseas
Disciplina: Linguagens de Programação

Linguagem de programação em Ada


2019

Estanislau Castelo Branco de Sousa

Polo: Campo Maior

Março de 2019
Linguagem de programação em Ada Pág. 1

Índice
ÍNDICE ...................................................................................................................................................... 1

1. INTRODUÇÃO ...................................................................................................................................... 2

2. TIPOS DE DADOS ................................................................................................................................. 3

3. ATRIBUTOS ........................................................................................................................................... 4

4. OPERADORES ....................................................................................................................................... 5

5. PONTOS POSITIVOS E NEGATIVOS ................................................................................................... 6

6. APLICABILIDADE DA LINGUAGEM ADA ......................................................................................... 6

7. DECISÕES .............................................................................................................................................. 7

8. CONCORRÊNCIA ................................................................................................................................ 11

9. RELÓGIOS E TEMPORIZADORES ................................................................................................ 12

10. CONCLUSÃO ..................................................................................................................................... 13

11. BIBLIOGRAFIA E RECURSOS ONLINE ...................................................................................... 14

Estanislau Castelo Branco de Sousa


Linguagem de programação em Ada Pág. 2

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

Estanislau Castelo Branco de Sousa


Linguagem de programação em Ada Pág. 3

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.

2.3 Tipos Compostos


2.3.1 Arrays
• String;
• type Matrix;

Estanislau Castelo Branco de Sousa


Linguagem de programação em Ada Pág. 4

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 (‘).

3.1 Atributos existentes que podem ser aplicados a tipos e variáveis.

• Size (tamanho do tipo em bits)


• Length (tamanho do tipo em elementos - só para arrays)
• Range (gama - só para tipos discretos, reais e arrays)

3.2 Atributos existentes que apenas podem ser aplicados ao tipo


• First(primeiro elemento - só para tipos discretos, reais e arrays)
• Last (último elemento - só para tipos discretos, reais e arrays)
• Pred (elemento anterior - só para enumerações)
• Succ (próximo elemento - só para enumerações)
• Val (Valor numa determinada posição - só para enumerações)
• Pos (Posição de um determinado valor - só para enumerações)

Estanislau Castelo Branco de Sousa


Linguagem de programação em Ada Pág. 5

4. Operadores

Nome Símbolo Exemplo


Atribuição := A := B
Aritméticos
Módulo Divisão mod B := A mod 2
Resto Divisão rem B := A rem 2
Valor absoluto abs B := abs A
Exponenciação ** A := 2**8
Multiplicação * B := A * 2
Divisão / B := A / 2
Soma + B := A + 2
Subtracção - B := A – 2
Sinal positivo + A := + B
Sinal negativo - A := - B;
Relacionais
Igualdade = if A = 3
Diferença /= if A /= 3
Maior > if A > 3
Menor < if A < 3
Maior ou Igual >= if A >= 3
Menor ou Igual <= if A <= 3
Lógicos
E lógico and if A>1 and B<2
and then if A>1 and then B<2
Ou lógico or if A>1 or B<2
or else if A>1 or else B<2
Ou lógico exclusivo xor if A>1 xor B<2
Negação not if A and not B
Outros
Pertença in if A in 1 .. 20
Concatenação & S := “A” & “BCD”
Gama de valores .. 1 .. 10

Estanislau Castelo Branco de Sousa


Linguagem de programação em Ada Pág. 6

5. Pontos positivos e Negativos


5.1 Pontos Positivos.

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.

5.2 Pontos negativos:

• Era uma linguagem muito "grande" para a época que nasceu;


• Era considerada "à frente do seu tempo";
• Complicada e com compiladores eram muito caros;
• Exigia linguagem seja de qualidade evitando custo de esforço humano para encontrar e
consertar erros;
• O mercado ainda preferia compiladores com maior disponibilidade e menor custo.

6. Aplicabilidade da linguagem Ada


E o principal é que existem quatro domínios de destino para aplicações de computação:
• Programação casual;
• software corporativo;
• sistemas de missão crítica;
• aplicativos móveis de todos os tipos.
Uma linguagem de programação não pode ser bem-sucedida em todos esses domínios.
Ada é uma linguagem complicada e foi projetada para sistemas industriais de missão
crítica. Dessa forma, ela não é muito adequada e usual para os mercados em alta
atualmente, como programação mobile e web por exemplo.
Atributos como performance, confiabilidade e segurança são importantes e dão uma
maior qualidade aos equipamentos das indústrias aeronáuticas, aeroespaciais,
nucleares, médicas

Estanislau Castelo Branco de Sousa


Introdução à programação em Ada 2005 Pág. 10

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;

7.2 Decisão caso


decisão-case ::=
case expressão-discreta is
alternativa
{alternativa}
end case;

alternativa ::= when lista => înstruções;


lista ::= opção {| opção}
opção::= expressão | intervalo | others

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;

when Terça .. Quinta => Continuar_Trabalho;


when Sexta => Fim_Trabalho
when others => casa;

end case;

Estanislau Castelo Branco de Sousa


Introdução à programação em Ada 2005 Pág. 11

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

8.5 Interacção com recursos


• Podemos especificar como se comporta a interacção entre as tarefas e os recursos partilhados.
• O anexo de sistemas de tempo-real especifica que tem que existir pelo menos Ceiling_Locking

8.6 Filas de espera no acesso a recursos


• O anexo de sistemas de tempo-real especifica que têm que existir duas formas possíveis de
espera no acesso a recursos

Estanislau Castelo Branco de Sousa


Introdução à programação em Ada 2005 Pág. 12

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.

9.2 Existem dois tipos de temporizadores


9.2.1 Temporizadores de tempo de execução (Ada.Execution_Time)
• Permitem contabilizar o tempo de execução de uma tarefa;
• Alarme no caso de “overrun”;
• Disponíveis para uma tarefa ou grupo de tarefas (Ada.Execution_Time.Timers e
Ada.Execution_Time.Group_Budgets).

9.2.1Alarmes de tempo real (Ada.Real_Time.Timing_Events)


• Permite “disparar” eventos em tempos específicos
• Não utiliza tarefas
• Tempo é dado pelo Time de Ada.Real_Time

Estanislau Castelo Branco de Sousa


Introdução à programação em Ada 2005 Pág. 13

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.

Estanislau Castelo Branco de Sousa


Introdução à programação em Ada 2005 Pág. 14

11. Bibliografia e recursos online

Bibliografia e recursos online

1. Burns & Wellings, “Concurrency in Ada 95”, Cambridge Press, 1998;

2. Programming in Ada 2005, John Barnes, Addison Wesley, 2006;

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

Estanislau Castelo Branco de Sousa