Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas

781 visualizações

Publicada em

Esta aula tem como objetivo mostrar como se diferem estruturalmente as linguagens imperativas das linguagens declarativas e como identificar suas características básicas

Publicada em: Tecnologia
0 comentários
1 gostou
Estatísticas
Notas
  • Seja o primeiro a comentar

Sem downloads
Visualizações
Visualizações totais
781
No SlideShare
0
A partir de incorporações
0
Número de incorporações
98
Ações
Compartilhamentos
0
Downloads
25
Comentários
0
Gostaram
1
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas

  1. 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. 2. Objetivo • Compreender linguagens imperativas e declarativas e suas diferenças estruturais
  3. 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. 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. 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
  6. 6. Linguagens Imperativas Entrada Processo Saída Estado
  7. 7. Linguagens Imperativas • Elementos obrigatórios: • Expressões e atribuições • Estruturas de controle de fluxo • Definição de sub-rotinas
  8. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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. 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
  21. 21. Linguagens Declarativas • No paradigma funcional (exemplo/Haskell): hipotenusa :: Double -> Double -> Double hipotenusa c1 c2 = sqrt(c1^2 + c2^2) > hipotenusa 3 4 > 5
  22. 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. 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?

×