SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
Prof. Adriano Teixeira de Souza
   Programação em Bloco Monolítico

    ◦ Inviabiliza grandes sistemas
    ◦ Um único programador, pois não há divisão do
      programa
    ◦ Indução a erros por causa da visibilidade de
      variáveis e fluxo de controle irrestrito
    ◦ Dificulta a reutilização do código
    ◦ Ineficiência de programação




                          Prof. Adriano Teixeira de Souza
   Resolução de vários problemas menos
    complexos
   Aumento das possibilidades de reutilização
   Facilita o entendimento do programa
   Segmentação do programa
   Encapsulamento dos dados: agrupamento de
    dados e processos logicamente relacionados

   Dividir para conquistar....


                          Prof. Adriano Teixeira de Souza
   Características

    ◦ Grande número de entidades de computação e
      linhas de código
    ◦ Equipe de programadores
    ◦ Código distribuído em vários arquivos fonte
    ◦ Conveniente não recompilar partes não alteradas
      do programa




                           Prof. Adriano Teixeira de Souza
   Subdivisão em Módulos

    ◦ Unidade que pode ser compilada separadamente
    ◦ Propósito único
    ◦ Interface apropriada com outros módulos
    ◦ Reutilizáveis e Modificáveis
    ◦ Pode conter um ou mais tipos, variáveis,
      constantes, funções, procedimentos
    ◦ Deve identificar claramente seu objetivo e como o
      atinge




                            Prof. Adriano Teixeira de Souza
   Fundamental para a Modularização
   Seleção do que deve ser representado
   Possibilita a divisão do trabalho em níveis
   Exemplos de uso na computação
    ◦ Comandos do SO
    ◦ Linguagens de Programação
      LP é abstração sobre o hardware
      LP oferece mecanismos para criar abstrações




                             Prof. Adriano Teixeira de Souza
   Foco na distinção entre

    ◦ O que uma parte do programa faz

      foco do programador que usa a abstração

    ◦ Como isso é implementado

      Foco do programador que implementa a abstração




                            Prof. Adriano Teixeira de Souza
   Abstrações de Processos
    ◦ Abstrações sobre o fluxo de controle do programa
    ◦ Suprogramas – funções da biblioteca padrão do Java

   Abstrações de Dados
    ◦ Abstrações sobre as estruturas de dados do
      programa
    ◦ Tipos de Dados – tipos da biblioteca padrão do Java




                            Prof. Adriano Teixeira de Souza
   Subprogramas

    ◦ Permitem segmentar o programa em vários blocos
      logicamente relacionados
    ◦ Servem para reusar trechos de código que operam
      sobre dados diferenciados
    ◦ Modularizações efetuadas com base no tamanho do
      código possuem baixa qualidade
    ◦ Propósito único e claro facilita legibilidade,
      depuração, manutenção e reutilização



                          Prof. Adriano Teixeira de Souza
   Usuário
    ◦ Interessa o que o subprograma faz
    ◦ Interessa como se usa o subprograma
    ◦ Como faz é pouco importante ou não é importante

   Implementador
    ◦ O que realmente importa é como implementar a
      funcionalidade exigida pelo subprograma




                           Prof. Adriano Teixeira de Souza
int fatorial(int n) {
       if (n<2) {
               return 1;
       } else {
               return n * fatorial (n – 1);
       }
}

   Usuário
    ◦ Função fatorial é mapeamento de n para n!
   Implementador
    ◦ Uso de algoritmo recursivo


                                   Prof. Adriano Teixeira de Souza
   A ausência reduz:

    ◦ A Legibilidada: pois os valores devem ser passados
      através de variáveis globais

    ◦ A Redigibilidade: torna-se é necessário incluir
      operações para atribuir os valores desejados às
      variáveis globais

    ◦ A Confiabilidade: pois é preciso atribuir valores as
      variáveis globais a cada chamada ao procedimento

                             Prof. Adriano Teixeira de Souza
int a, l, c;
                             int volume (int a, int l, int c) {
int volume () {                return a * l * c;
  return a * l * c;          }
}                            main() {
main() {                       int v1, v2;
  a = 1, l = 2, c = 3;         v1 = volume(1, 2, 3);
  int v1, v2;                  v2 = volume(4, 5, 6);
  v1 = volume(a, l, c);      }
  a2 = 4, c2 = 5, l2 = 6
  v2 = volume(a, l, c);
}




                           Prof. Adriano Teixeira de Souza
   Parâmetro formal
    ◦ Identificadores listados no cabeçalho do
      subprograma e usados no seu corpo

   Parâmetro real
    ◦ Valores, identificadores ou expressões utilizados na
      chamada do subprograma

   Argumento
    ◦ Valor passado do parâmetro real para o parâmetro
      formal



                            Prof. Adriano Teixeira de Souza
float area (float r) {
  return 3.1416 * r * r;
}
main() {
  float diametro, resultado;
  diametro = 2.8;
  resultado = area (diametro/2);
}


   Parâmetro Formal: r

   Parâmetro Real: diametro/Argumento: 1.4


                              Prof. Adriano Teixeira de Souza
int soma (int a[], int inicio = 0, int fim = 7, int incr = 1){
  int soma = 0;
  for (int i = inicio; i < fim; i+=incr) soma+=a[i];
  return soma;
}
main() {
  int [] pontuacao = { 9, 4, 8, 9, 5, 6, 2};
  int ptotal, pQuaSab, pTerQui, pSegQuaSex;
  ptotal = soma(pontuacao);
  pQuaSab = soma(pontuacao, 3);
  ...
}




                                  Prof. Adriano Teixeira de Souza
   Só subprogramas e tipos não são suficientes
    para sistemas de grande porte

    ◦ Código com baixa granularidade
    ◦ Possibilidade de conflito entre fontes de código

   Fontes de código são coleções de entidades
    reutilizáveis de computação

    ◦ Bibliotecas ou Frameworks
    ◦ Aplicações utilitárias
    ◦ Aplicações completas



                             Prof. Adriano Teixeira de Souza
   Pacotes agrupam entidades de computação
    (exportáveis ou não)

   Usados para organizar as fontes de
    informação e para resolver os conflitos de
    nomes

   Por exemplo, o Java possui packages
    (geralmente contém um conjunto de
    componentes)


                         Prof. Adriano Teixeira de Souza
   Uso de arquivo único causa problemas
    ◦ Redação e modificação se tornam mais difíceis
    ◦ Reutilização apenas com processo de copiar e colar

   Divisão do código em arquivos separados
    com entidades relacionadas
    ◦   Biblioteca de arquivos .c
    ◦   Arquivos funcionam como índices
    ◦   Reutilização através de inclusão
    ◦   Necessidade de recompilação de todo o código


                             Prof. Adriano Teixeira de Souza
   Melhoria da legibilidade
    ◦ Divisão lógica do programa em unidades funcionais
    ◦ Separação do código de implementação do código
      de uso da abstração

   Aprimoramento da redigibilidade
    ◦ Mais fácil escrever código em vários módulos do
      que em um módulo único

   Aumento da modificabilidade
    ◦ Alteração no módulo é localizada e não impacta
      código usuário


                            Prof. Adriano Teixeira de Souza
   Incremento da reusabilidade
    ◦ Módulo pode ser usado sempre que sua
      funcionalidade é requerida

   Aumento da produtividade de programação
    ◦ Compilação separada
    ◦ Divisão em equipes

   Maior confiabilidade
    ◦ Verificação independente e extensiva dos módulos
      antes do uso



                            Prof. Adriano Teixeira de Souza
   Suporte a técnicas de desenvolvimento de
    Software

    ◦ Orientadas a funcionalidades (Feature Driven
      Design / FDD)
      Uso de subprogramas

    ◦ Orientadas a dados ( Domain Driven Design / DDD)
      Uso de tipos




                             Prof. Adriano Teixeira de Souza

Contenu connexe

Tendances

Tendances (20)

SubProgramas
SubProgramasSubProgramas
SubProgramas
 
Oficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvROficina de Lógica de Programação - Uso do Scratch e do GvR
Oficina de Lógica de Programação - Uso do Scratch e do GvR
 
5. introducao a linguagem c
5. introducao a linguagem c5. introducao a linguagem c
5. introducao a linguagem c
 
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
14. Interfaces; Listas e cadeias ligadas; Iteradores – Fundamentos de Program...
 
Semana 3: Introdução à linguagem de programação Java
Semana  3: Introdução à linguagem de programação Java Semana  3: Introdução à linguagem de programação Java
Semana 3: Introdução à linguagem de programação Java
 
E:\Plp 2009 2\Plp Aula11
E:\Plp 2009 2\Plp Aula11E:\Plp 2009 2\Plp Aula11
E:\Plp 2009 2\Plp Aula11
 
Algoritmos e Lógica de Programação
Algoritmos e Lógica de ProgramaçãoAlgoritmos e Lógica de Programação
Algoritmos e Lógica de Programação
 
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
5. Atribuições especiais; Arrays; Tipos de ciclos; Classes-pacote – Fundament...
 
Aula c++ estruturas de dados
Aula c++   estruturas de dadosAula c++   estruturas de dados
Aula c++ estruturas de dados
 
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
Open4Education | MC59 - Aprendendo a programar de forma divertida e eficiente...
 
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana  4: Atribuições especiais, matrizes, ciclos, classes pacoteSemana  4: Atribuições especiais, matrizes, ciclos, classes pacote
Semana 4: Atribuições especiais, matrizes, ciclos, classes pacote
 
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
3. Funções/repórteres e listas em Snap!; Utilização de variáveis – Fundamento...
 
Trabalho sobre a linguagem Python
Trabalho sobre a linguagem PythonTrabalho sobre a linguagem Python
Trabalho sobre a linguagem Python
 
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
TechEd Brasil 2011: WEB 302 - Presente e futuro da linguagem de programação J...
 
Linguagem C - Funções
Linguagem C - FunçõesLinguagem C - Funções
Linguagem C - Funções
 
Java1
Java1Java1
Java1
 
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃOCURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
CURSO JAVA - AULA 1 - INTRODUÇÃO LÓGICA DE PROGRAMAÇÃO
 
4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação4. Introdução à linguagem de programação Java – Fundamentos de Programação
4. Introdução à linguagem de programação Java – Fundamentos de Programação
 
Funções e procedimentos
Funções e procedimentosFunções e procedimentos
Funções e procedimentos
 
Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos Módulo 9 - Introdução à Programação Orientada a Objectos
Módulo 9 - Introdução à Programação Orientada a Objectos
 

Similaire à Paradigmas de Linguagens de Programação - Estruturas de Controle

Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - Introdução
Adriano Teixeira de Souza
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
Grupo Treinar
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
Wagner Zaparoli
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
André Borgonovo
 
Programação avançada
Programação avançada Programação avançada
Programação avançada
Ilídio Costa
 

Similaire à Paradigmas de Linguagens de Programação - Estruturas de Controle (20)

Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
Paradigmas de Linguagens de Programação - Quatro Paradigmas + Ambientes de Pr...
 
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...Paradigmas de Linguagens de Programação - Modularização, componentização e re...
Paradigmas de Linguagens de Programação - Modularização, componentização e re...
 
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
Boas Práticas em Aplicações na Nuvem: Twelve-Factor App | MVPConf Latam 2021
 
Paradigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - IntroduçãoParadigmas de Linguagens de Programação - Introdução
Paradigmas de Linguagens de Programação - Introdução
 
Domain-Driven Design
Domain-Driven DesignDomain-Driven Design
Domain-Driven Design
 
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO) CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
CURSO DELPHI FUND. CLIENT SERVER (DIURNO)
 
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016Behavior-Driven Development (BDD) - QA Ninja Conf 2016
Behavior-Driven Development (BDD) - QA Ninja Conf 2016
 
Gt 2 – ferramentas
Gt 2 – ferramentasGt 2 – ferramentas
Gt 2 – ferramentas
 
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
BDD (Behavior-Driven Development) - GDG-SP - Julho/2016
 
FDD
FDDFDD
FDD
 
Plano de Projeto de Software do​ Residents Control
Plano de Projeto de Software do​ Residents ControlPlano de Projeto de Software do​ Residents Control
Plano de Projeto de Software do​ Residents Control
 
Logica de Programação Vitor Jose de Souza.pptx
Logica de Programação Vitor Jose de Souza.pptxLogica de Programação Vitor Jose de Souza.pptx
Logica de Programação Vitor Jose de Souza.pptx
 
Reuso desw
Reuso deswReuso desw
Reuso desw
 
Técnicas_Implementação
Técnicas_ImplementaçãoTécnicas_Implementação
Técnicas_Implementação
 
Tees Final
Tees FinalTees Final
Tees Final
 
Introdução ao Domain-Driven Design
Introdução ao Domain-Driven DesignIntrodução ao Domain-Driven Design
Introdução ao Domain-Driven Design
 
Developer Experience no Nubank
Developer Experience no NubankDeveloper Experience no Nubank
Developer Experience no Nubank
 
Reutilização
ReutilizaçãoReutilização
Reutilização
 
Apresentação final
Apresentação finalApresentação final
Apresentação final
 
Programação avançada
Programação avançada Programação avançada
Programação avançada
 

Plus de Adriano Teixeira de Souza

Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
Adriano Teixeira de Souza
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
Adriano Teixeira de Souza
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Adriano Teixeira de Souza
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Adriano Teixeira de Souza
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Adriano Teixeira de Souza
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Adriano Teixeira de Souza
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Adriano Teixeira de Souza
 

Plus de Adriano Teixeira de Souza (20)

Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
Aplicação de Integração Contínua para viabilizar a rastreabilidade de artefat...
 
Estrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores BináriasEstrutura de dados em Java - Árvores Binárias
Estrutura de dados em Java - Árvores Binárias
 
Estrutura de dados em Java - Pilhas
Estrutura de dados em Java - PilhasEstrutura de dados em Java - Pilhas
Estrutura de dados em Java - Pilhas
 
Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada Estrutura de dados em Java - Filas com lista encadeada
Estrutura de dados em Java - Filas com lista encadeada
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - FilasEstrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória Estrutura de dados em Java - Ponteiros e Alocação de Memória
Estrutura de dados em Java - Ponteiros e Alocação de Memória
 
Estrutura de dados em Java - Recursividade
Estrutura de dados em Java - RecursividadeEstrutura de dados em Java - Recursividade
Estrutura de dados em Java - Recursividade
 
Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas Estrutura de dados em Java - Filas
Estrutura de dados em Java - Filas
 
Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)Estrutura de Dados em Java (Funções e Procedimentos)
Estrutura de Dados em Java (Funções e Procedimentos)
 
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
 
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
Estrutura de Dados em Java (Variáveis Compostas - Vetores e Matrizes)
 
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)Estrutura de Dados em Java (Revisão de Algoritimos em Java)
Estrutura de Dados em Java (Revisão de Algoritimos em Java)
 
Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)Estrutura de Dados em Java (Introdução)
Estrutura de Dados em Java (Introdução)
 
Responsive web design
Responsive web designResponsive web design
Responsive web design
 
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMSSistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
Sistemas Distribuídos - Comunicacao Distribuida - Middleware - JMS
 
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
Sistemas Distribuídos - Comunicação Distribuída - EJB (JBoss 7)
 
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em JavaParadigmas de Linguagens de Programação - Gerenciamento de Memória em Java
Paradigmas de Linguagens de Programação - Gerenciamento de Memória em Java
 
Estrutura de dados - Árvores Binárias
Estrutura de dados - Árvores BináriasEstrutura de dados - Árvores Binárias
Estrutura de dados - Árvores Binárias
 
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
Ferramentas para desenvolvimento web com produtividade - Artigo Final - Pos-G...
 
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)Ferramentas para desenvolvimento web com produtividade -  Slide Artigo (2009)
Ferramentas para desenvolvimento web com produtividade - Slide Artigo (2009)
 

Dernier

Dernier (6)

ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docxATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
ATIVIDADE 1 - LOGÍSTICA EMPRESARIAL - 52_2024.docx
 
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docxATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
ATIVIDADE 1 - CUSTOS DE PRODUÇÃO - 52_2024.docx
 
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docxATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
ATIVIDADE 1 - GCOM - GESTÃO DA INFORMAÇÃO - 54_2024.docx
 
Boas práticas de programação com Object Calisthenics
Boas práticas de programação com Object CalisthenicsBoas práticas de programação com Object Calisthenics
Boas práticas de programação com Object Calisthenics
 
Padrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemploPadrões de Projeto: Proxy e Command com exemplo
Padrões de Projeto: Proxy e Command com exemplo
 
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docxATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
ATIVIDADE 1 - ESTRUTURA DE DADOS II - 52_2024.docx
 

Paradigmas de Linguagens de Programação - Estruturas de Controle

  • 2. Programação em Bloco Monolítico ◦ Inviabiliza grandes sistemas ◦ Um único programador, pois não há divisão do programa ◦ Indução a erros por causa da visibilidade de variáveis e fluxo de controle irrestrito ◦ Dificulta a reutilização do código ◦ Ineficiência de programação Prof. Adriano Teixeira de Souza
  • 3. Resolução de vários problemas menos complexos  Aumento das possibilidades de reutilização  Facilita o entendimento do programa  Segmentação do programa  Encapsulamento dos dados: agrupamento de dados e processos logicamente relacionados  Dividir para conquistar.... Prof. Adriano Teixeira de Souza
  • 4. Características ◦ Grande número de entidades de computação e linhas de código ◦ Equipe de programadores ◦ Código distribuído em vários arquivos fonte ◦ Conveniente não recompilar partes não alteradas do programa Prof. Adriano Teixeira de Souza
  • 5. Subdivisão em Módulos ◦ Unidade que pode ser compilada separadamente ◦ Propósito único ◦ Interface apropriada com outros módulos ◦ Reutilizáveis e Modificáveis ◦ Pode conter um ou mais tipos, variáveis, constantes, funções, procedimentos ◦ Deve identificar claramente seu objetivo e como o atinge Prof. Adriano Teixeira de Souza
  • 6. Fundamental para a Modularização  Seleção do que deve ser representado  Possibilita a divisão do trabalho em níveis  Exemplos de uso na computação ◦ Comandos do SO ◦ Linguagens de Programação  LP é abstração sobre o hardware  LP oferece mecanismos para criar abstrações Prof. Adriano Teixeira de Souza
  • 7. Foco na distinção entre ◦ O que uma parte do programa faz  foco do programador que usa a abstração ◦ Como isso é implementado  Foco do programador que implementa a abstração Prof. Adriano Teixeira de Souza
  • 8. Abstrações de Processos ◦ Abstrações sobre o fluxo de controle do programa ◦ Suprogramas – funções da biblioteca padrão do Java  Abstrações de Dados ◦ Abstrações sobre as estruturas de dados do programa ◦ Tipos de Dados – tipos da biblioteca padrão do Java Prof. Adriano Teixeira de Souza
  • 9. Subprogramas ◦ Permitem segmentar o programa em vários blocos logicamente relacionados ◦ Servem para reusar trechos de código que operam sobre dados diferenciados ◦ Modularizações efetuadas com base no tamanho do código possuem baixa qualidade ◦ Propósito único e claro facilita legibilidade, depuração, manutenção e reutilização Prof. Adriano Teixeira de Souza
  • 10. Usuário ◦ Interessa o que o subprograma faz ◦ Interessa como se usa o subprograma ◦ Como faz é pouco importante ou não é importante  Implementador ◦ O que realmente importa é como implementar a funcionalidade exigida pelo subprograma Prof. Adriano Teixeira de Souza
  • 11. int fatorial(int n) { if (n<2) { return 1; } else { return n * fatorial (n – 1); } }  Usuário ◦ Função fatorial é mapeamento de n para n!  Implementador ◦ Uso de algoritmo recursivo Prof. Adriano Teixeira de Souza
  • 12. A ausência reduz: ◦ A Legibilidada: pois os valores devem ser passados através de variáveis globais ◦ A Redigibilidade: torna-se é necessário incluir operações para atribuir os valores desejados às variáveis globais ◦ A Confiabilidade: pois é preciso atribuir valores as variáveis globais a cada chamada ao procedimento Prof. Adriano Teixeira de Souza
  • 13. int a, l, c; int volume (int a, int l, int c) { int volume () { return a * l * c; return a * l * c; } } main() { main() { int v1, v2; a = 1, l = 2, c = 3; v1 = volume(1, 2, 3); int v1, v2; v2 = volume(4, 5, 6); v1 = volume(a, l, c); } a2 = 4, c2 = 5, l2 = 6 v2 = volume(a, l, c); } Prof. Adriano Teixeira de Souza
  • 14. Parâmetro formal ◦ Identificadores listados no cabeçalho do subprograma e usados no seu corpo  Parâmetro real ◦ Valores, identificadores ou expressões utilizados na chamada do subprograma  Argumento ◦ Valor passado do parâmetro real para o parâmetro formal Prof. Adriano Teixeira de Souza
  • 15. float area (float r) { return 3.1416 * r * r; } main() { float diametro, resultado; diametro = 2.8; resultado = area (diametro/2); }  Parâmetro Formal: r  Parâmetro Real: diametro/Argumento: 1.4 Prof. Adriano Teixeira de Souza
  • 16. int soma (int a[], int inicio = 0, int fim = 7, int incr = 1){ int soma = 0; for (int i = inicio; i < fim; i+=incr) soma+=a[i]; return soma; } main() { int [] pontuacao = { 9, 4, 8, 9, 5, 6, 2}; int ptotal, pQuaSab, pTerQui, pSegQuaSex; ptotal = soma(pontuacao); pQuaSab = soma(pontuacao, 3); ... } Prof. Adriano Teixeira de Souza
  • 17. Só subprogramas e tipos não são suficientes para sistemas de grande porte ◦ Código com baixa granularidade ◦ Possibilidade de conflito entre fontes de código  Fontes de código são coleções de entidades reutilizáveis de computação ◦ Bibliotecas ou Frameworks ◦ Aplicações utilitárias ◦ Aplicações completas Prof. Adriano Teixeira de Souza
  • 18. Pacotes agrupam entidades de computação (exportáveis ou não)  Usados para organizar as fontes de informação e para resolver os conflitos de nomes  Por exemplo, o Java possui packages (geralmente contém um conjunto de componentes) Prof. Adriano Teixeira de Souza
  • 19. Uso de arquivo único causa problemas ◦ Redação e modificação se tornam mais difíceis ◦ Reutilização apenas com processo de copiar e colar  Divisão do código em arquivos separados com entidades relacionadas ◦ Biblioteca de arquivos .c ◦ Arquivos funcionam como índices ◦ Reutilização através de inclusão ◦ Necessidade de recompilação de todo o código Prof. Adriano Teixeira de Souza
  • 20. Melhoria da legibilidade ◦ Divisão lógica do programa em unidades funcionais ◦ Separação do código de implementação do código de uso da abstração  Aprimoramento da redigibilidade ◦ Mais fácil escrever código em vários módulos do que em um módulo único  Aumento da modificabilidade ◦ Alteração no módulo é localizada e não impacta código usuário Prof. Adriano Teixeira de Souza
  • 21. Incremento da reusabilidade ◦ Módulo pode ser usado sempre que sua funcionalidade é requerida  Aumento da produtividade de programação ◦ Compilação separada ◦ Divisão em equipes  Maior confiabilidade ◦ Verificação independente e extensiva dos módulos antes do uso Prof. Adriano Teixeira de Souza
  • 22. Suporte a técnicas de desenvolvimento de Software ◦ Orientadas a funcionalidades (Feature Driven Design / FDD)  Uso de subprogramas ◦ Orientadas a dados ( Domain Driven Design / DDD)  Uso de tipos Prof. Adriano Teixeira de Souza