SlideShare ist ein Scribd-Unternehmen logo
1 von 23
#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
Objetivo 
• Compreender linguagens imperativas e declarativas e 
suas diferenças estruturais
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
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
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
Linguagens Imperativas 
Entrada Processo Saída 
Estado
Linguagens Imperativas 
• Elementos obrigatórios: 
• Expressões e atribuições 
• Estruturas de controle de fluxo 
• Definição de sub-rotinas
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
Linguagens Imperativas 
• Como se guarda o estado de uma variável? 
Int32 numero = 2; 
l-value r-value 
Exemplo de l-value: 0x9FFF
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
• 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
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?
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
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 
• ...
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
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
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
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
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
Linguagens Declarativas 
• No paradigma funcional (exemplo/Haskell): 
quadrado x = x * x // Sem inferência de tipo 
> quadrado 2 
> 4 
> quadrado 3.0 
> 9.0
Linguagens Declarativas 
• No paradigma funcional (exemplo/Haskell): 
hipotenusa :: Double -> Double -> Double 
hipotenusa c1 c2 = sqrt(c1^2 + c2^2) 
> hipotenusa 3 4 
> 5
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
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?

Weitere ähnliche Inhalte

Was ist angesagt?

Segurança de Dados e Informações - Aula 1 - Introdução à Segurança da Informação
Segurança de Dados e Informações - Aula 1 - Introdução à Segurança da InformaçãoSegurança de Dados e Informações - Aula 1 - Introdução à Segurança da Informação
Segurança de Dados e Informações - Aula 1 - Introdução à Segurança da InformaçãoMinistério Público da Paraíba
 
Gerencia e Administração de Redes
Gerencia e Administração de RedesGerencia e Administração de Redes
Gerencia e Administração de RedesAllan Piter Pressi
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketAdriano Teixeira de Souza
 
VLAN - Conceitos Básicos
VLAN - Conceitos BásicosVLAN - Conceitos Básicos
VLAN - Conceitos BásicosAnderson Zardo
 
Redes 2 Cabo de par trançado
Redes 2 Cabo de par trançadoRedes 2 Cabo de par trançado
Redes 2 Cabo de par trançadoCicero Roniel
 
Modelos de estruturação de sistemas distribuídos
Modelos de estruturação de sistemas distribuídosModelos de estruturação de sistemas distribuídos
Modelos de estruturação de sistemas distribuídosPortal_do_Estudante_SD
 
Redes de comunicação mod 1
Redes de comunicação   mod 1Redes de comunicação   mod 1
Redes de comunicação mod 1João Faria
 
Segurança de redes - Conceitos de firewall
Segurança de redes - Conceitos de firewall Segurança de redes - Conceitos de firewall
Segurança de redes - Conceitos de firewall Cleber Ramos
 
Endereços IP
Endereços IPEndereços IP
Endereços IPIvo Cuco
 

Was ist angesagt? (20)

Segurança de Dados e Informações - Aula 1 - Introdução à Segurança da Informação
Segurança de Dados e Informações - Aula 1 - Introdução à Segurança da InformaçãoSegurança de Dados e Informações - Aula 1 - Introdução à Segurança da Informação
Segurança de Dados e Informações - Aula 1 - Introdução à Segurança da Informação
 
Gerencia e Administração de Redes
Gerencia e Administração de RedesGerencia e Administração de Redes
Gerencia e Administração de Redes
 
Arquitetura de sistemas web
Arquitetura de sistemas webArquitetura de sistemas web
Arquitetura de sistemas web
 
Topologia de Redes
Topologia de RedesTopologia de Redes
Topologia de Redes
 
Aula 12 - Processador
Aula 12 - ProcessadorAula 12 - Processador
Aula 12 - Processador
 
Protocolo TCP/IP
Protocolo TCP/IPProtocolo TCP/IP
Protocolo TCP/IP
 
Sistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - SocketSistemas Distribuídos - Comunicação Distribuída - Socket
Sistemas Distribuídos - Comunicação Distribuída - Socket
 
Processador intel 4040
Processador intel 4040Processador intel 4040
Processador intel 4040
 
CON08 - VLAN.pdf
CON08 - VLAN.pdfCON08 - VLAN.pdf
CON08 - VLAN.pdf
 
Protocolos de Redes
Protocolos de RedesProtocolos de Redes
Protocolos de Redes
 
Aula1 historia das redes
Aula1   historia das redesAula1   historia das redes
Aula1 historia das redes
 
Firewall
FirewallFirewall
Firewall
 
VLAN - Conceitos Básicos
VLAN - Conceitos BásicosVLAN - Conceitos Básicos
VLAN - Conceitos Básicos
 
Redes 2 Cabo de par trançado
Redes 2 Cabo de par trançadoRedes 2 Cabo de par trançado
Redes 2 Cabo de par trançado
 
POO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em JavaPOO - 22 - Tratamento de Exceções em Java
POO - 22 - Tratamento de Exceções em Java
 
Modelos de estruturação de sistemas distribuídos
Modelos de estruturação de sistemas distribuídosModelos de estruturação de sistemas distribuídos
Modelos de estruturação de sistemas distribuídos
 
Comandos basicos linux
Comandos basicos linuxComandos basicos linux
Comandos basicos linux
 
Redes de comunicação mod 1
Redes de comunicação   mod 1Redes de comunicação   mod 1
Redes de comunicação mod 1
 
Segurança de redes - Conceitos de firewall
Segurança de redes - Conceitos de firewall Segurança de redes - Conceitos de firewall
Segurança de redes - Conceitos de firewall
 
Endereços IP
Endereços IPEndereços IP
Endereços IP
 

Andere mochten auch

Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...Natanael Simões
 
Processo de Desenvolvimento de Software - Prototipação
Processo de Desenvolvimento de Software - PrototipaçãoProcesso de Desenvolvimento de Software - Prototipação
Processo de Desenvolvimento de Software - PrototipaçãoNatanael Simões
 
Processo de Desenvolvimento de Software - Programação
Processo de Desenvolvimento de Software - ProgramaçãoProcesso de Desenvolvimento de Software - Programação
Processo de Desenvolvimento de Software - ProgramaçãoNatanael Simões
 
Eletroeletrônica Básica - A estrutura do átomo
Eletroeletrônica Básica - A estrutura do átomoEletroeletrônica Básica - A estrutura do átomo
Eletroeletrônica Básica - A estrutura do átomoNatanael Simões
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Natanael Simões
 
Paradigma de Lenguaje de Programaciòn
Paradigma de Lenguaje de ProgramaciònParadigma de Lenguaje de Programaciòn
Paradigma de Lenguaje de ProgramaciònEriick Leon
 
PROGRAMAÇÃO DECLARATIVA COM JAVAFX: UM PARADIGMA NA CONSTRUÇÃO DE INTERFACES ...
PROGRAMAÇÃO DECLARATIVA COM JAVAFX: UM PARADIGMA NA CONSTRUÇÃO DE INTERFACES ...PROGRAMAÇÃO DECLARATIVA COM JAVAFX: UM PARADIGMA NA CONSTRUÇÃO DE INTERFACES ...
PROGRAMAÇÃO DECLARATIVA COM JAVAFX: UM PARADIGMA NA CONSTRUÇÃO DE INTERFACES ...Eder Nogueira
 
Componentes passivos e eletromecânicos
Componentes passivos e eletromecânicosComponentes passivos e eletromecânicos
Componentes passivos e eletromecânicosNatanael Simões
 
3 paradigmas
3 paradigmas3 paradigmas
3 paradigmasalithu1
 
Apresentação da Disciplina de Eletroeletrônica Básica
Apresentação da Disciplina de Eletroeletrônica BásicaApresentação da Disciplina de Eletroeletrônica Básica
Apresentação da Disciplina de Eletroeletrônica BásicaNatanael Simões
 
Processo de Desenvolvimento de Software - Fase de Definição
Processo de Desenvolvimento de Software - Fase de DefiniçãoProcesso de Desenvolvimento de Software - Fase de Definição
Processo de Desenvolvimento de Software - Fase de DefiniçãoNatanael Simões
 
POO – Aula 01 – Plano de Ensino e Revisão de Programação Imperativa
POO – Aula 01 – Plano de Ensino e Revisão de Programação ImperativaPOO – Aula 01 – Plano de Ensino e Revisão de Programação Imperativa
POO – Aula 01 – Plano de Ensino e Revisão de Programação ImperativaFelipe J. R. Vieira
 
Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas
Processo de Desenvolvimento de Software - Linguagens Compiladas x InterpretadasProcesso de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas
Processo de Desenvolvimento de Software - Linguagens Compiladas x InterpretadasNatanael Simões
 
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareAplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareNatanael Simões
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de ProgramaçãoNatanael Simões
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLNatanael Simões
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosNatanael Simões
 

Andere mochten auch (20)

Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
Processo de Desenvolvimento de Software - Programação e Linguagens Fortemente...
 
Processo de Desenvolvimento de Software - Prototipação
Processo de Desenvolvimento de Software - PrototipaçãoProcesso de Desenvolvimento de Software - Prototipação
Processo de Desenvolvimento de Software - Prototipação
 
Processo de Desenvolvimento de Software - Programação
Processo de Desenvolvimento de Software - ProgramaçãoProcesso de Desenvolvimento de Software - Programação
Processo de Desenvolvimento de Software - Programação
 
Eletroeletrônica Básica - A estrutura do átomo
Eletroeletrônica Básica - A estrutura do átomoEletroeletrônica Básica - A estrutura do átomo
Eletroeletrônica Básica - A estrutura do átomo
 
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
Processo de Desenvolvimento de Software - Design de Software, Interface, Arqu...
 
Paradigma de Lenguaje de Programaciòn
Paradigma de Lenguaje de ProgramaciònParadigma de Lenguaje de Programaciòn
Paradigma de Lenguaje de Programaciòn
 
PROGRAMAÇÃO DECLARATIVA COM JAVAFX: UM PARADIGMA NA CONSTRUÇÃO DE INTERFACES ...
PROGRAMAÇÃO DECLARATIVA COM JAVAFX: UM PARADIGMA NA CONSTRUÇÃO DE INTERFACES ...PROGRAMAÇÃO DECLARATIVA COM JAVAFX: UM PARADIGMA NA CONSTRUÇÃO DE INTERFACES ...
PROGRAMAÇÃO DECLARATIVA COM JAVAFX: UM PARADIGMA NA CONSTRUÇÃO DE INTERFACES ...
 
Componentes passivos e eletromecânicos
Componentes passivos e eletromecânicosComponentes passivos e eletromecânicos
Componentes passivos e eletromecânicos
 
3 paradigmas
3 paradigmas3 paradigmas
3 paradigmas
 
O que são resistores
O que são resistoresO que são resistores
O que são resistores
 
Apresentação da Disciplina de Eletroeletrônica Básica
Apresentação da Disciplina de Eletroeletrônica BásicaApresentação da Disciplina de Eletroeletrônica Básica
Apresentação da Disciplina de Eletroeletrônica Básica
 
Processo de Desenvolvimento de Software - Fase de Definição
Processo de Desenvolvimento de Software - Fase de DefiniçãoProcesso de Desenvolvimento de Software - Fase de Definição
Processo de Desenvolvimento de Software - Fase de Definição
 
POO – Aula 01 – Plano de Ensino e Revisão de Programação Imperativa
POO – Aula 01 – Plano de Ensino e Revisão de Programação ImperativaPOO – Aula 01 – Plano de Ensino e Revisão de Programação Imperativa
POO – Aula 01 – Plano de Ensino e Revisão de Programação Imperativa
 
Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas
Processo de Desenvolvimento de Software - Linguagens Compiladas x InterpretadasProcesso de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas
Processo de Desenvolvimento de Software - Linguagens Compiladas x Interpretadas
 
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de softwareAplicando conceitos gerais de gerenciamento de projetos à engenharia de software
Aplicando conceitos gerais de gerenciamento de projetos à engenharia de software
 
Paradigmas de Programação
Paradigmas de ProgramaçãoParadigmas de Programação
Paradigmas de Programação
 
Introdução à Engenharia de Software e UML
Introdução à Engenharia de Software e UMLIntrodução à Engenharia de Software e UML
Introdução à Engenharia de Software e UML
 
Banco de Dados - Tipos de Dados
Banco de Dados - Tipos de DadosBanco de Dados - Tipos de Dados
Banco de Dados - Tipos de Dados
 
Aula Tratamento de Exceções
Aula Tratamento de ExceçõesAula Tratamento de Exceções
Aula Tratamento de Exceções
 
Paradigmas de programação
Paradigmas de programaçãoParadigmas de programação
Paradigmas de programação
 

Ähnlich wie Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas

Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para phpFabio B. Silva
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação FuncionalNatan Mai
 
Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3klaussilveira
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012Luís Cobucci
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Luís Cobucci
 
Linguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaLinguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaSérgio Souza Costa
 
Introdução a lógica de Programação Aula-01
Introdução a lógica de Programação Aula-01Introdução a lógica de Programação Aula-01
Introdução a lógica de Programação Aula-01EdsonEmanoel
 

Ähnlich wie Processo de Desenvolvimento de Software - Linguagens Imperativas x Declarativas (20)

Oz
OzOz
Oz
 
Doctrine 2 camada de persistência para php
Doctrine 2   camada de persistência para phpDoctrine 2   camada de persistência para php
Doctrine 2 camada de persistência para php
 
Introdução Programação Funcional
Introdução Programação FuncionalIntrodução Programação Funcional
Introdução Programação Funcional
 
Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3Preparando-se para a prova da Certificação Zend PHP 5.3
Preparando-se para a prova da Certificação Zend PHP 5.3
 
Functional Programming - Scala
Functional Programming - ScalaFunctional Programming - Scala
Functional Programming - Scala
 
01-Paradigmas.pdf
01-Paradigmas.pdf01-Paradigmas.pdf
01-Paradigmas.pdf
 
Clean code
Clean codeClean code
Clean code
 
PHP - Introdução
PHP - IntroduçãoPHP - Introdução
PHP - Introdução
 
(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012(Re)pensando a OOP - TDC 2012
(Re)pensando a OOP - TDC 2012
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
A Arte do Código Limpo
A Arte do Código LimpoA Arte do Código Limpo
A Arte do Código Limpo
 
Linguagem Python
Linguagem PythonLinguagem Python
Linguagem Python
 
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011Removendo o cheiro ruim do seu código - PHPSC Conf 2011
Removendo o cheiro ruim do seu código - PHPSC Conf 2011
 
Compiladores
CompiladoresCompiladores
Compiladores
 
PHP(I-Bim).ppt
PHP(I-Bim).pptPHP(I-Bim).ppt
PHP(I-Bim).ppt
 
11-codigo-limpo-parte-4.pdf
11-codigo-limpo-parte-4.pdf11-codigo-limpo-parte-4.pdf
11-codigo-limpo-parte-4.pdf
 
Funções em C
Funções em CFunções em C
Funções em C
 
Linguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo LuaLinguagens de Script: Caso de Estudo Lua
Linguagens de Script: Caso de Estudo Lua
 
Introdução a lógica de Programação Aula-01
Introdução a lógica de Programação Aula-01Introdução a lógica de Programação Aula-01
Introdução a lógica de Programação Aula-01
 
424928
424928424928
424928
 

Mehr von Natanael Simões

Criação de Material Didático EAD como Ferramenta no Ensino Presencial
Criação de Material Didático EAD como Ferramenta no Ensino PresencialCriação de Material Didático EAD como Ferramenta no Ensino Presencial
Criação de Material Didático EAD como Ferramenta no Ensino PresencialNatanael Simões
 
Apresentação da Disciplina de Segurança da Informação
Apresentação da Disciplina de Segurança da InformaçãoApresentação da Disciplina de Segurança da Informação
Apresentação da Disciplina de Segurança da InformaçãoNatanael Simões
 
Apresentação da Disciplina de Software Livre
Apresentação da Disciplina de Software LivreApresentação da Disciplina de Software Livre
Apresentação da Disciplina de Software LivreNatanael Simões
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosNatanael Simões
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraNatanael Simões
 
Banco de Dados - Dado, Informação e Abstração
Banco de Dados - Dado, Informação e AbstraçãoBanco de Dados - Dado, Informação e Abstração
Banco de Dados - Dado, Informação e AbstraçãoNatanael Simões
 
Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...
Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...
Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...Natanael Simões
 
Instalação e Manutenção: Introdução a Arquitetura de Computadores
Instalação e Manutenção: Introdução a Arquitetura de ComputadoresInstalação e Manutenção: Introdução a Arquitetura de Computadores
Instalação e Manutenção: Introdução a Arquitetura de ComputadoresNatanael Simões
 
Quanto vale a informação? Fundamentos de Segurança da Informação
Quanto vale a informação? Fundamentos de Segurança da InformaçãoQuanto vale a informação? Fundamentos de Segurança da Informação
Quanto vale a informação? Fundamentos de Segurança da InformaçãoNatanael Simões
 
Segurança da Informação - Ataques de Rede
Segurança da Informação - Ataques de RedeSegurança da Informação - Ataques de Rede
Segurança da Informação - Ataques de RedeNatanael Simões
 
Serviços de Rede - Telnet e SSH
Serviços de Rede - Telnet e SSHServiços de Rede - Telnet e SSH
Serviços de Rede - Telnet e SSHNatanael Simões
 
Serviços de Rede - SMTP, POP3 e IMAP
Serviços de Rede - SMTP, POP3 e IMAPServiços de Rede - SMTP, POP3 e IMAP
Serviços de Rede - SMTP, POP3 e IMAPNatanael Simões
 
Como recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com BacktrackComo recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com BacktrackNatanael Simões
 
Segurança da Informação - Políticas de Segurança
Segurança da Informação - Políticas de SegurançaSegurança da Informação - Políticas de Segurança
Segurança da Informação - Políticas de SegurançaNatanael Simões
 

Mehr von Natanael Simões (16)

Criação de Material Didático EAD como Ferramenta no Ensino Presencial
Criação de Material Didático EAD como Ferramenta no Ensino PresencialCriação de Material Didático EAD como Ferramenta no Ensino Presencial
Criação de Material Didático EAD como Ferramenta no Ensino Presencial
 
Apresentação da Disciplina de Segurança da Informação
Apresentação da Disciplina de Segurança da InformaçãoApresentação da Disciplina de Segurança da Informação
Apresentação da Disciplina de Segurança da Informação
 
Apresentação da Disciplina de Software Livre
Apresentação da Disciplina de Software LivreApresentação da Disciplina de Software Livre
Apresentação da Disciplina de Software Livre
 
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de DadosBanco de Dados - Sistemas de Gerenciamento de Banco de Dados
Banco de Dados - Sistemas de Gerenciamento de Banco de Dados
 
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeiraBanco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
Banco de Dados - Modelo Lógico, Chave primária e Chave estrangeira
 
Banco de Dados - Entidade
Banco de Dados - EntidadeBanco de Dados - Entidade
Banco de Dados - Entidade
 
Banco de Dados - Dado, Informação e Abstração
Banco de Dados - Dado, Informação e AbstraçãoBanco de Dados - Dado, Informação e Abstração
Banco de Dados - Dado, Informação e Abstração
 
Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...
Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...
Banco de Dados - Introdução: Participação dos bancos de dados no desenvolvime...
 
Instalação e Manutenção: Introdução a Arquitetura de Computadores
Instalação e Manutenção: Introdução a Arquitetura de ComputadoresInstalação e Manutenção: Introdução a Arquitetura de Computadores
Instalação e Manutenção: Introdução a Arquitetura de Computadores
 
Quanto vale a informação? Fundamentos de Segurança da Informação
Quanto vale a informação? Fundamentos de Segurança da InformaçãoQuanto vale a informação? Fundamentos de Segurança da Informação
Quanto vale a informação? Fundamentos de Segurança da Informação
 
Segurança da Informação - Ataques de Rede
Segurança da Informação - Ataques de RedeSegurança da Informação - Ataques de Rede
Segurança da Informação - Ataques de Rede
 
Serviços de Rede - Telnet e SSH
Serviços de Rede - Telnet e SSHServiços de Rede - Telnet e SSH
Serviços de Rede - Telnet e SSH
 
Serviços de Rede - SMTP, POP3 e IMAP
Serviços de Rede - SMTP, POP3 e IMAPServiços de Rede - SMTP, POP3 e IMAP
Serviços de Rede - SMTP, POP3 e IMAP
 
Serviços de Rede - VNC
Serviços de Rede - VNCServiços de Rede - VNC
Serviços de Rede - VNC
 
Como recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com BacktrackComo recuperar senhas WEP de redes wireless com Backtrack
Como recuperar senhas WEP de redes wireless com Backtrack
 
Segurança da Informação - Políticas de Segurança
Segurança da Informação - Políticas de SegurançaSegurança da Informação - Políticas de Segurança
Segurança da Informação - Políticas de Segurança
 

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
  • 6. Linguagens Imperativas Entrada Processo Saída Estado
  • 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
  • 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. 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?