Linguagens e Paradigmas de Programação



Documentos relacionados
Paradigmas de Programação

Montadores e Compiladores

Algoritmos e Programação II

Proporcionar a modelagem de sistemas utilizando todos os conceitos da orientação a objeto;

2. Tipos Abstratos de Dados

Linguagens de Programação. Introdução. Carlos Bazilio

Histórico de Linguagens de Programação

Nº horas ESTRATÉGIAS RECURSOS AVALIAÇÃO

Linguagens de Programação

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Algoritmo e Lógica de Programação. Conceitos de Linguagens de Programação

Paradigmas de Programação

Maratona de Programação - Dicas Para Iniciantes

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação Orientada a Objetos. Professor Leonardo Cabral - Larback

Linguagens de Programação:

Verificação e validação

Programação de Computadores I. Linguagem C Função

Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

Algoritmos e Programação : Conceitos e estruturas básicas. Hudson Victoria Diniz

Engenharia de Software. Ciclos de Vida do Software. 1. Sistemas

- Campus Salto. Disciplina: Sistemas de Arquivos Docente: Fernando Santorsula

Arquitetura e Organização de Computadores

Paradigmas de Programação

1.1. Definição do Problema

Arquiteturas para Sistemas Distribuídos I

Aula 1 Java Prof. Dr. Sylvio Barbon Junior

Metodologias de Programação

Análise Léxica. Sumário

Qualidade de Produto. Maria Cláudia F. P. Emer

Paradigmas de Linguagens de Programação

Requisitos de Software

Programação I Apresentação

1 Introdução à Programação O que é? Para que serve?... 1

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

Organização e Arquitetura de Computadores I

Paradigmas de Linguagens

Introdução. Qualidade de Produto. Introdução. Introdução ISO/IEC Normas

Linguagens e Técnicas de Programação II

Aula 01 Introdução Custo de um algoritmo, Funções de complexidad e Recursão

Linguagens de Programação

Histórico e Evolução da Computação

Paradigmas de Linguagem de Programação. Aspectos Básicos

PHP ORIENTADO A OBJETOS. 2º Encontro PHP MG 16 e 17 de Outubro / Charles Schaefer

Introdução a Funções

Universidade Federal da Paraíba Centro de Informática Departamento de Informática

Introdução. Software Básico Aula 3. Prof. Dr. Rogério Vargas.

Processo de Desenvolvimento de Software

UMA ABORDAGEM SOBRE A EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO COM ÊNFASE EM ORIENTAÇÃO A OBJETO E ORIENTAÇÃO A ASPECTO

Nomes, vinculações e escopos

Introdução à Ciência da Informação

Arquitetura de Computadores Sistemas Operacionais I

7. Defina encapsulamento. R.: Encapsular é ocultar. Criar uma cápsula ao redor da classe, para proteger o que está dentro dela.

Introdução à Programação Aula 03. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Figura 8: modelo de Von Neumann

Introdução a Programação Aula 01

Glossário Versão 1.0 Desenvolvimento do Sistema de Gestão de Documentos Doc Manager Histórico de Revisão

Introdução à Programação. Funções e Procedimentos. Prof. José Honorato F. Nunes honoratonunes@gmail.com

LAPRO I. Pontifícia Universidade Católica do Rio Grande do Sul Faculdade de Informática - FACIN. Prof. Dr. Rafael Garibotti

Paradigmas de Programação

Nomes, vinculações e escopos

Microcontroladores e Microprocessadores. Conversão de Bases Prof. Samuel Cavalcante

Lógica para computação Professor Marlon Marcon

ao paradigma imperativo

Linguagem de Programação I

Fundamentos de Programação 1

Paradigmas de Linguagens

Projetando um Computador

PROGRAMAÇÃO ORIENTADA A OBJETO INTRODUÇÃO

INF1005: Programação I. Algoritmos e Pseudocódigo

BANCO DE DADOS I AULA 2. Willamys Araújo willamysaraujo7@gmail.com

Oganização e Arquitetura de Computadores

Introdução a Banco de Dados. INTRODUÇÃO

Professora Isabel Harb Manssour Paradigmas de Linguagens I 1

Avaliação e Desempenho Aula 1 - Simulação

Introdução à Informática

Revisão: linguagens de programação

Projetando um Computador Parte II Arquitetura do Processador BIP

Compiladores II. Fabio Mascarenhas

Introdução à Algoritmos. Aula 11

Construção de uma via de dados, abordagem monociclo, multiciclo e pipeline

Aplicações Informáticas A

Arquitetura de Computadores Moderna

LINGUAGENS DE PROGRAMAÇÃO

03. [Sebesta, 2000] Descreva a operação de um gerador de linguagem geral.

Engenharia de Software

Fundamentos de Arquitetura e Organização de Computadores

Aula 01. Breve História dos Computadores Informatiquês O Computador Software vs. Hardware. Introdução à Informática. Prof. Fábio Nelson.

Transcrição:

Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Linguagens e Paradigmas de Programação Professor: César Melo Slides baseados em materiais preparados pelo Prof. Horacio Fernades, Prof. João Marcos e pela Profa. Rosiane Freitas.

Fatos das nossas vidas... Cite algumas Linguagens de Programação C, C++, Java, Perl, Python, Bash, Prolog, Pascal, Basic, Fortran, COBOL, ASM, Lisp, Haskell, Modula-2, Oberon, C#, PL/1, Ada, Smalltalk, Símula, Algol, Eiffel, Scheme,CLOS, Maude, Glass, Holo,... Mas porque tantas linguagens? Propósitos diferentes Avanços tecnológicos Interesses comerciais Cultura e background científico

Linguagens de Programação E o que é uma Linguagem de Programação? Sintática: Uma linguagem de programação é uma notação utilizada pelo programador para especificar ações a serem executadas por um computador. Semântica: Uma linguagem de programação compreende um conjunto de conceitos que um programador usa para resolver problemas de programação.

Linguagens de Programação Critérios de Avaliação de uma LP Legibilidade Simplicidade Expressividade Ortogonalidade Confiabilidade Portabilidade

Critério: Legibilidade Facilidade de ler e escrever programas Legibilidade influi: desenvolvimento e depuração de programas manutenção de programas desempenho de equipes de programação Fatores que melhoram a legibilidade: abstração de dados comandos de controle modularização de programas documentação convenções léxicas, sintaxe e semântica exemplo em Java: nomes de classes iniciam por letra maiúscula, nomes de atributos usam letras minúsculas

Critério: Simplicidade Representação de cada conceito seja simples de aprender e dominar Simplicidade sintática exige que a representação seja feita de modo preciso, sem ambigüidades contra-exemplo: A++; A=A+1; A+=1; ++A. Simplicidade semântica exige que a representação possua um significado independente de contexto contra-exemplo: private: B b; class B: private A

Critério: Expressividade Representação clara e simples de dados e procedimentos a serem executados pelo programa Exemplo: tipos de dados em Pascal Expressividade x concisão Muito concisa: falta expressividade? Muito extensa: falta simplicidade? Linguagens mais modernas Incorporam apenas um conjunto básico de representações de tipos de dados e comandos Aumentam o poder de expressividade com bibliotecas de componentes Exemplos: Pascal, C++ e Java

Critério: Ortogonalidade Possibilidade de combinar entre si, sem restrições, os componentes básicos da LP Exemplo: permitir combinações de estruturas de dados, como arrays de registros Contra exemplo: não permitir que um array seja usado como parâmetro de um procedimento Componente de primeira ordem: pode ser livremente usado em expressões, atribuições, como argumento e retorno de procedimentos

Critério: Portabilidade Multiplataforma Capacidade de um software executar em diferentes plataformas sem a necessidade de maiores adaptações Sem exigências especiais de hardware/software Exemplo: aplicação compatível com sistemas Unix e Windows Longevidade ciclo de vida útil do software e o do hardware não precisam ser síncronos; ou seja, é possível usar o mesmo software após uma mudança de hardware

Critério: Confiabilidade Mecanismos que facilitem a produção de programas que atendam às sua especificações Tipagem forte: o processador da linguagem deve assegurar que a utilização dos diferentes tipos de dados seja compatível com a sua definição evitar que operações perigosas, tal como aritmética de ponteiros, seja permitida Tratamento de exceções: sistemas de tratamento de exceções permitem construir programas que possuam definições de como proceder em caso de comportamento não usual possibilitem tanto o diagnóstico quanto o tratamento de erros em tempo de execução

Evolução de Linguagens de Programação Década de 70: Programação Estruturada Abstração de dados: definição de tipos Abstração de controle: comandos, procedimentos Inicia preocupação com programação em larga escala: módulos e programação estruturada Exemplos de linguagens populares: Uso acadêmico: Algol (algoritmos), Pascal (tipos de dados) Uso comercial: Cobol (arquivos), PL/I (uso amplo)

Evolução de Linguagens de Programação Década de 80: modularização Ênfase em mecanismos de LP e abstrações Correção de programas: verificação de tipos, exceções Programação baseada em TADs; Exemplos de linguagens Uso acadêmico: Pascal / Modula-2 Programação de tempo real: Ada 83

Evolução de Linguagens de Programação Década de 90: base na estrutura Estruturação de dados: encapsulamento Estruturação da computação: classe Estruturação do programa: classes e objetos Programação para Internet: plataforma neutra Exemplos de linguagens Pascal / Delphi C / C++ Ada83 / Ada95 Java

Paradigmas de Programação O que é um Paradigma de Programação Modelo, padrão ou estilo de programação suportado por linguagens que agrupam certas características comuns. Diferem nos seguintes aspectos: Conceitos e abstrações usados para representar os elementos de um programa; A forma como a computação é realizada;

Paradigmas Paradigmas de Linguagens de Programação Imperativos; Declarativos; Orientada a Agentes; Baseada em Componentes; Programação paralela ; Orientada a funcionalidades(features); Funcional; Baseado em lógica; Baseado em aspectos; Outros...

Caracterizando Paradigmas Paradigmas imperativo (Como Fazer) Linguagens expressam sequências de comandos que realizam transformações sobre dados; Exemplos de linguagens: orientadas a procedimentos orientadas a objetos Baseado fortemente na arquitetura de Von Neuman (1947): memória; processador; dispositivos de entrada e saída. Primeiro paradigma a surgir e até hoje é o dominante.

O Paradigma Imperativo Um programa neste paradigma é uma seqüência finita de instruções (ou comandos) de três tipos: atribuição, controle de fluxo, ou entrada/saída de dados. Comandos de atribuição alteram o estado do programa.

O Paradigma Imperativo Exemplo: function fatorial (n: integer):integer; var fat: integer; begin fat := 1; while (n>1) do begin fat := fat * n; n := n 1; end; fatorial := fat; end;

O Paradigma Imperativo Exemplo:

O Paradigma Imperativo Vantagens Eficiência Paradigma dominante e bem estabelecido Método receita de bolo Desvantagens descrições demasiadamente operacionais focalizam o como e não o quê

Aperfeiçoando o Imperativo: TAD O que são Tipos Abstratos de Dados (TADs)? Conceito matemático que diz respeito a determinada entidade e às funções aplicadas sobre ela. Um TAD é definido pela sua funcionalidade: o que se pode fazer com ele, e não como ele está de fato implementado. Exemplo uma fila é um tipo abstrato de dados: pode-se inserir e retirar elementos de uma fila, verificar se a fila está cheia ou vazia, ou ainda contar quantos elementos estão nesta fila. A utilização da fila (por uma aplicação) através destas funções independe de como a fila está de fato implementado.

Aperfeiçoando o Imperativo: Programação Modular A programação modular implementa a noção de tipo abstrato de dados Implementação: encapsulamento de dados e funções na mesma unidade sintática o módulo A principal estrutura é um módulo, constituído de uma interface e de uma implementação A interface contém todos os elementos visíveis (importáveis) por outros módulos A implementação contém os elementos que devem ficar invisíveis e as implementações das funções e procedimentos do módulo Exemplos de linguagens: Ada (DoD-USA), Modula-2 (Nicklaus Wirth).

Aperfeiçoando o Imperativo: Programação Modular Exemplo: Fila

Aperfeiçoando o Imperativo: Programação Modular Exemplo: Fila

Programação Modular Principais características Encapsulamento de dados e de funções Restrições à visibilidade de constantes, variáveis e funções de um módulo Interface visível contém apenas a funcionalidade do módulo Separação do o que é feito do como é feito

Encapsulamento Encapsulamento é o agrupamento de idéias relacionadas em uma única unidade de programação Encapsulamento de código Funções e procedimentos (functions, procedures, routines) Encapsulamento de dados Vetores (arrays), registros (records, structs) Encapsulamento de dados + código Módulos (modules, packages), em programação modular Classes, em programação OO