Esta aula tem como objetivo mostrar como se diferem estruturalmente as linguagens imperativas das linguagens declarativas e como identificar suas características básicas
Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas
1. #PDS
Prof. Natanael Simões
facebook.com/natanaelsimoes
Desenvolvimento: Programação
Linguagens Imperativas x Declarativas
@natanaelsimoes
natanael.simoes@ifro.edu.br
steamcommunity.com/id/natanaesimoes
2. Objetivo
• Compreender linguagens imperativas e declarativas e
suas diferenças estruturais
3. Linguagens Imperativas
• Imperativas por denotar ORDEM
• Fundamentado na máquina de Turing e Von Neuman
(arquitetura dos computadores)
• Possui as seguintes características básicas:
• Descrição de estados
// variáveis
• Reconhecedores de estados
// expressões
• Comandos de atribuição e controle
// manipulam o estado
4. Linguagens Imperativas
Exemplo de programação imperativa em linguagem natural
SE [condição] FAÇA // if-then-else
ISSO AQUI
SENÃO FAÇA
ISSO AQUI
PARA [VALOR INICIAL] ATÉ [VALOR FINAL] FAÇA // for
ISSO AQUI
PARA CADA [ITEM NO VETOR] FAÇA // foreach
ISSO AQUI
ENQUANTO [condição] FAÇA // while
ISSO AQUI
5. Linguagens Imperativas
Exemplo de programação imperativa em BASIC (FRANGO, 2009)
10 REM RESOLVE EQUACAO DO SEGUNDO GRAU
20 READ A,B,C
25 IF A=0 THEN GOTO 410
30 LET D = B * B - 4 * A * C
40 IF D < 0 THEN GOTO 430
50 PRINT "SOLUCAO"
60 IF D = 0 THEN GOTO 100
70 PRINT "PRIMEIRA SOLUCAO", (-B + SQR(D))/(2*A)
80 PRINT "SEGUNDA SOLUCAO", (-B - SQR(D))/(2*A)
90 GOTO 20
100 PRINT "SOLUCAO UNICA"
200 GOTO 20
410 PRINT "A DEVE SER DIFERENTE DE ZERO"
420 GOTO 20
430 PRINT "NAO HA SOLUCOES REAIS"
440 GOTO 20
490 DATA 10,20,1241,123,22,-1
500 END
7. Linguagens Imperativas
• Elementos obrigatórios:
• Expressões e atribuições
• Estruturas de controle de fluxo
• Definição de sub-rotinas
8. Linguagens Imperativas
• Vantagens
• Eficiente
• Modelo é uma abstração do mundo
• Desvantagens
• Difícil de ler
• Difícil de interpretar
• Foca COMO se deve fazer e não O QUE
9. Linguagens Imperativas
• Como se guarda o estado de uma variável?
Int32 numero = 2;
l-value r-value
Exemplo de l-value: 0x9FFF
10. Linguagens Imperativas
•O que acontece quando declaramos uma variável?
• Reserva do espaço em memória l-value
• *Restringe o tipo de valor que l-value pode receber
• *Restringe o tipo de operação em que l-value pode se
envolver
*apenas em linguagens fortemente tipadas
11. • O que acontece quando atribuímos valor a uma variável?
• A (target) = B (expression)
Sobrescreve a localização identificada por A
com o valor da expressão B
• X = X + 1
“Pegue o r-value de X, adicione 1,
armazene o resultado no l-value de X”
(FRANGO, 2009)
Linguagens Imperativas
12. Linguagens Imperativas
• Ponteiros: referências de endereço de memória
• Seu r-value é o l-value da variável
• X retorna o r-value da memória (ex.: 2)
• &X retorna o l-value da memória (ex.: 0x9FFF)
• Vamos testar isso?
13. Linguagens Imperativas
• Sub-rotinas (funções e procedimentos)
• Possuem l-value que é o retorno da função
• Possuem r-value que são blocos de código
• Contêm variáveis LOCAIS e instruções
• Pode ser referenciado e sobrecarregado
• Argumentos podem ser passados ao escopo
14. Linguagens Declarativas
• Ao invés de especificar COMO fazer, diz ao computador O
QUE precisa ser feito
• O computador decide a melhor forma
• Não são consideradas linguagens de programação:
• XML
• SQL
• ...
15. Linguagens Declarativas
• No paradigma lógico:
• Descreve as propriedades da solução desejada
• Programador escreve definições que permitam a dedução da
solução através de proposições
• Proposições lógicas formam uma base de fatos conhecidos
• Regras que definem como deduzir novas proposições a partir da base
• Consultas são realizadas na base
16. Linguagens Declarativas
• No paradigma lógico (exemplo):
• Proposição (fato): Pidgey é uma ave.
• Regra de inferência: Toda ave é um pokémon
• Consulta: Pidgey é um pokémon?
• Resposta: Sim
17. Linguagens Declarativas
• No paradigma lógico (exemplo):
• Proposições (fatos):
Anderson é pai de Alexandre.
Anderson é pai de Gisele.
• Consulta: Anderson é pai de quem?
• Resposta:
Alexandre
Gisele
18. Linguagens Declarativas
• No paradigma lógico (exemplo):
• Proposições (fatos): O fatorial de 0 é 1.
• Regra de inferência:
O fatorial de um número N (N > 0) é igual a N*fatorial(N-1).
• Consulta: O fatorial de 2 é 200?
• Resposta: Não
• Consulta: Quanto é o fatorial de 3?
• Resposta: 6
19. Linguagens Declarativas
• No paradigma funcional:
• Descreve funções matemáticas apenas
• É um processo que determina a correspondência de
elementos da imagem da função com o domínio
3
4
7
8
f(x) = x + 4
f(3) = 7
f(3) = 8
20. Linguagens Declarativas
• No paradigma funcional (exemplo/Haskell):
quadrado x = x * x // Sem inferência de tipo
> quadrado 2
> 4
> quadrado 3.0
> 9.0
22. Linguagens Declarativas
• Vantagens:
• Facilidade de acesso a banco de dados
• Fica mais claro compreender O QUE deve ser feito
• Cumpre perfeitamente segundo o propósito da linguagem
• Desvantagens:
• Aplicações muito específicas
• Precisa ser especialista no propósito do software para
conseguir desenvolver
23. Exercícios
1) Qual diferença existe entra as características de linguagens
imperativas das linguagens declarativas?
2) Quais vantagens e desvantagens há nas linguagens
imperativas?
3) Quais vantagens e desvantagens há nas linguagens
declarativas?
4) Ao utilizar uma variável, que diferença há entre seu l-value e
ponteiro?