Oscar Luiz Monteiro de Farias, D.Sc. 1 2011-01 Características das Linguagens de Programação.

Slides:



Advertisements
Apresentações semelhantes
Estruturação de Linguagens (Pascal e C++)
Advertisements

Programação em Java Prof. Maurício Braga
Software Básico Silvio Fernandes
Paulo Marques Hernâni Pedroso
Curso: Banco de Dados I Análise de Sistemas PUC Campinas
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INTRODUÇÃO AOS APLICATIVOS JAVA Prof. Thiago Pereira Rique
Ciclos, Vectores e Gráficos Simulação da Queda de Corpos II
Software Básico Silvio Fernandes
Orientação a Objetos: Encapsulamento e Classificação
Prof. Heloise Manica Paris Teixeira
Análise de Requisitos Use Case Renata Araujo Ricardo Storino
Rafael Pinto Frederico Corrêa
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Curso Sistemas de Informação I Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
Curso Sistemas de Informação Disciplina: Arquitetura de Software
01(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
04(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
9 Controle de fluxo Seqüenciadores. Jumps. Escapes. Exceções.
Construção de Compiladores
Introdução ao -calculus
7 Abstração Genérica Unidades genéricas e instanciação.
00(c) 2007 Gustavo Motta1 Introdução ao -calculus Prof. Gustavo Motta Departamento de Informática/UFPB.
Aula 3 Evolução da Principais Linguagens
Aula 4 Nomes, Vinculações, Tipos e Escopos
1 Aula 7 ImplementandoSubprogramas Universidade do Vale do Rio dos Sinos
Laboratório de Programação de Computadores I
Robson Godoi / Sandra Siebra
Classes e objetos P. O. O. Prof. Grace.
Introdução a Programação Orientada a Objetos
Conceitos Básicos.
Universidade do Vale do Rio dos Sinos
Paradigmas de programação
Semana 03: Comandos de desvio de fluxo. Expressões lógicas.
JAVA: Conceitos Iniciais
José Roberto Blaschek Gerência do Escopo José Roberto Blaschek.
DSC/CCT/UFCG Profs.: José Eustáquio Rangel de Queiroz Roberto Medeiros de Faria Ulrich Schiel José Eustáquio Rangel de Queiroz Roberto.
1 - Lafayette B. Melo – Análise e Projeto de Sistemas para a Internet – COINFO – CEFET-PB 12. Estados Objetivo: compreender a notação do diagrama de estados.
Estrutura de dados, pseudocódigo
Linguagem de programação I A
Gramáticas Livres de Contexto
Entendendo as definições de classe
Semana 03 Comandos de desvio de fluxo. Expressões lógicas.
Conjuntos (continuação)
Teoria e Implementação de Linguagens Computacionais – IF688
Tipos Abstratos de Dados
Paradigmas de Linguagens de Programação Linguagem Imperativa 2
Expressões e Instrução de Atribuição
Paradigmas de Linguagens de Programação Linguagem Imperativa 1
Programação Orientada à Objetos
Banco de Dados Parte 04 Ceça. Ceça Moraes 2 Conteúdo  Os três níveis da arquitetura  Mapeamentos  Arquitetura cliente-servidor.
Linguagem Pascal Prof. Sérgio Rodrigues.
Paradigma funcional.
Paradigmas de Linguagens de Programação Aula 2
Paradigmas de Linguagens de Programação
Laboratório de Programação I Carlos Oberdan Rolim Ciência da Computação Sistemas de Informação.
INTRODUÇÃO À PROGRAMAÇÃO EM LÓGICA Profa. Joseluce de Farias Cunha
Conversão de Tipos Exemplo: x + i, onde x é do tipo real e i é do tipo integer. A especificação da linguagem deve indicar se a linguagem suporta este tipo.
Aula 1 – Profª Danielle Costa
Lambda Cálculo & Programação Funcional
Linguagens de Programação Introdução Prof. Renato Melo.
Programação Lógica com Prolog
Semântica de Linguagens de Programação
2003/02 PGEC/UERJ Oscar Luiz Monteiro de Farias, D. Sc.1 Características das Linguagens de Programação.
Métodos Formais Juan Andrés Mussini.
Paradigmas de Linguagens de Programação Conceitos da Linguagem Imperativa 1 Augusto Sampaio e Paulo Borba Centro de Informática Universidade Federal de.
Módulo II Capítulo 1: Orientação a Objetos
Influencias sobre o Projeto da Linguagem
SEMÂNTICA DENOTACIONAL Alexandre Mota
Transcrição da apresentação:

Oscar Luiz Monteiro de Farias, D.Sc Características das Linguagens de Programação

Oscar Luiz Monteiro de Farias, D.Sc Exemplos de Linguagens de Programação (LPs) C++ (C), C#, Visual C Algol, Pascal, Delphi, Modula II, HPFortran ( Ada Smalltalk, Simula, Java, Java ME Scheme, Lisp, Haskell, Erlang Prolog Perl, PHP, Phyton, Ruby, Groovy, etc...

Oscar Luiz Monteiro de Farias, D.Sc Linguagens de Programação (LPs)... Evolução das LPs Paradigma de programação Sintaxe e Semântica Variáveis, Expressões e Comandos Tipos de dados Escopo e Extent Procedures Abstração de Dados Tratamento de Exceções (Exception Handling) Concorrência

Oscar Luiz Monteiro de Farias, D.Sc Linguagens de Programação (LPs) Input/Output Programação em Rede (Networking Programming) Acesso a Banco de Dados Outras características/features

Oscar Luiz Monteiro de Farias, D.Sc Ambiente de evolução da LP Situar a LP em questão no seu contexto histórico Linguagens de que sofreu influência Suporte institucional Audiência/faixas de uso intencionadas

Oscar Luiz Monteiro de Farias, D.Sc Paradigma de Programação É um modelo (ou estilo) de programação. Existem diferentes paradigmas de programação. Os paradigmas diferem segundo os conceitos ou abstrações usados para representar os elementos de um programa (objetos, funções, variáveis, restrições, etc.) e as etapas que compõem uma computação (atribuição, avaliação, fluxo de dados, message passing, etc.).

Oscar Luiz Monteiro de Farias, D.Sc Paradigma Imperativo Fundamenta-se em comandos que atualizam o estado de variáveis. (em latim imperare= comandar). A linguagem de programação provê comandos, tais como os comandos de atribuição, que explicitamente alteram o estado da memória do computador. Este paradigma está intimamente associado à arquitetura de von Neumann. Muitos acham o paradigma imperativo o meio mais fácil de se expressar. Adicionado-se subprogramas ou procedures à lp tem-se o paradigma procedural.

Oscar Luiz Monteiro de Farias, D.Sc Paradigma Funcional A computação é expressa como a avaliação de funções matemáticas. Evita alterações de estado e dados mutáveis. Tem suas raízes no lambda calculus. Lambda Calculus: sistema formal desenvolvido por Alonso Church (1930's), para investigar a definição de funções, aplicação de funções e recursividade. O paradigma funcional trata valores como entidades singulares. Valores nunca são modificados, mas sim dão origem a novos valores. A computação nas linguagens funcionais é realizada através da aplicação de funções a valores. Ex.: (+ 6 8).

Oscar Luiz Monteiro de Farias, D.Sc Exemplo: ALGOL60 Cálculo do produto interno de dois vetores a[] e b[] c = 0; for i := 1 step 1 until n do c := c + a[i] x b[i];

Oscar Luiz Monteiro de Farias, D.Sc Observações Primeiramente devemos mentalmente executar o programa antes de compreendê- lo. A maior parte do programa refere-se a comandos necessários ao controle da ordem na qual o valor é computado, embora qualquer ordem de avaliação da soma seja aceitável. Requer que o tamanho exato dos argumentos seja passado como o valor de n. Só funciona para arrays de nome a[] eb[]. (ou deve-se acrescentar os conceitos de passagem de parâmetros/procedures).

Oscar Luiz Monteiro de Farias, D.Sc Exemplo em pf Variante de lisp com as operações: - NULL, tal que NULL (lista vazia) = true - FIRST (x1, x2, …, xn) = x1 - REST (x1, x2, …, xn) = (x2, …, xn) - assumindo a existência de expressões condicionais recursivas function INNERP(X, Y) if NULL(X) then 0 else FIRST(X)*FIRST(Y)+ INNERP(REST(X), REST(Y))

Oscar Luiz Monteiro de Farias, D.Sc Outros Paradigmas Orientado a Objetos Declarativo Orientado a Lógica Orientado a Eventos Data Flow Etc.

Oscar Luiz Monteiro de Farias, D.Sc Sintaxe & Semântica A sintaxe de uma lp está relacionada à forma assumida pelos seus diversos comandos. Ex.: diversas lps possuem comandos iterativos (loop) que variam em sua forma, mas são, de certo modo, equivalentes. Em uma lp seqüências de palavras podem ser combinadas em sentenças, que formam os programas. A sintaxe de uma linguagem é o conjunto de regras que determinam se uma sentença é bem formada (well-formed) ou não. A notação BNF (Backus-Naur form) é utilizada para definir a sintaxe. Alternativa para definir sintaxe: Context-Free Grammars (Noam Chomsky).

Oscar Luiz Monteiro de Farias, D.Sc Semântica Está relacionada com o significado dos comandos. Existem diversos frameworks para se descrever a semântica de uma lp. Classificam-se em: operacional, denotacional e axiomático.

Oscar Luiz Monteiro de Farias, D.Sc Semântica: frameworks Operational: a semântica é especificada como uma máquina abstrata ou sistema de transição, cuja computação representa uma possível execução de um programa. Denotational: existem funções definidas indutivamente mapeando cada programa em uma entidade abstrata representando o seu comportamentoobservável e cada parte do programa a uma entidade abstrata representando sua contribuição para aquele comportamento. Axiomático: compreende regras para deduzir assertivas sobre a correção ou equivalência do programa e suas partes. Os projetistas raramente usam descrições formais da semântica (frameworks) durante o processo de criação de uma linguagem.

Oscar Luiz Monteiro de Farias, D.Sc Tipos de Dados Um tipo de dado (data type) representa um conjunto de elementos (objetos) que possuem características pré-definidas, bem como um conjunto das operações que podem ser aplicadas sobre estes elementos.

Oscar Luiz Monteiro de Farias, D.Sc Abstração Uma abstração surge do reconhecimento das semelhanças entre certos objetos, situações ou processos no mundo real, e da decisão de se concentrar nestas semelhanças e ignorar, naquele momento, as diferenças. Ex.: árvores, rios, cavalos, carros, etc … Uma abstração denota as características essenciais de um objeto, que o distingüe de todos os outros tipos de objetos e, assim, fornece fronteiras conceituais bem definidas, relativas à perspectiva do observador (Booch).

Oscar Luiz Monteiro de Farias, D.Sc Abstração de Dados Trata-se de um mecanismo que encapsula a representação e as operações relativas a um tipo de dados (data type).

Oscar Luiz Monteiro de Farias, D.Sc Tipos de Dados Abstratos Um tipo de dados abstrato (abstract data type) é um tipo de dados com as suas respectivas operações, mas cuja representação é oculta ao usuário.

Oscar Luiz Monteiro de Farias, D.Sc Escopo e Extent Escopo refere-se ao modo pelo qual entidades nomeadas (eg. variáveis, labels, tipos e procedures) são controladas relativamente à sua capacidade de ter um efeito em um programa. Escopo representa um contexto ao qual valores e expressões estão associadas

Oscar Luiz Monteiro de Farias, D.Sc Static scoping [1] Free-variable - trata-se de uma variável que não é declarada no bloco begin.. end em que é usada. Escopo em ALGOL60 i i i i i

Oscar Luiz Monteiro de Farias, D.Sc Static scoping [2] O escopo mais interno contendo o comando no qual a variável é utilizada é pesquisado para ver se a variável foi aí declarada. Se tal não aconteceu a busca continua no escopo que engloba o escopo anterior e assim sucessivamente, até que o escopo mais externo seja alcançado. Se a variável não foi aí declarada, ocorre um erro.

Oscar Luiz Monteiro de Farias, D.Sc Dynamic scoping Em tempo de execução (run-time) verifica-se aquelas procedures e blocos que ainda não terminaram, tentando-se encontrar a primeira ocorrência do nome em uma declaração. As procedures e blocos são examinados na ordem reversa de sua invocação. Se o identificador não é encontrado ocorre um erro. Em caso contrário, a primeira ocorrência do identificador faz com que os atributos sejam associados ao nome.

Oscar Luiz Monteiro de Farias, D.Sc Exemplo begin boolean b := true; procedure P; print(b) end; begin boolean b := false; P end Qual é o valor que é impresso? static scoping: true dynamic scoping: false

Oscar Luiz Monteiro de Farias, D.Sc Referências Internet sites confiáveis (organizações, universidades, empresas, institutos de pesquisa, especialistas de renome...) Utilizar o padrão UERJ para dissertações/teses Sempre que incluir em sua monografia algo que se encontra em outro trabalho deve-se obrigatoriamente citar a fonte