AULA 1: PARADIGMAS DE PROGRAMAÇÃO

Documentos relacionados
Paradigmas de Linguagens de Programação

Paradigmas de Programação

LINGUAGENS E PARADIGMAS DE PROGRAMAÇÃO. Ciência da Computação IFSC Lages. Prof. Wilson Castello Branco Neto

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

Fonte (livro-texto): Conceitos de Linguagens de Programação, 4ed. Robert W. Sebesta

Paradigmas de Linguagens de Programação. Aspectos Preliminares

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

INF1621 Linguagens de Programação I

PROGRAMA DE DISCIPLINA

1 INTRODUÇÃO 1.1 CONCEITO DE PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO PARADIGMAS DE LINGUAGEM DE PROGRAMAÇÃO

Expressões. Prof. Alberto Costa Neto Linguagens de Programação. Departamento de Computação Universidade Federal de Sergipe

PROGRAMA DE DISCIPLINA

Carga horária : 4 aulas semanais (laboratório) Professores: Custódio, Daniel, Julio foco: introdução a uma linguagem de programação Linguagem Java

LP II Estrutura de Dados. Introdução e Linguagem C. Prof. José Honorato F. Nunes honorato.nunes@ifbaiano.bonfim.edu.br

Conceitos de Linguagens de Programação

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Linguagens de Programação Aula 10

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Implementando uma Classe e Criando Objetos a partir dela

Análise e Projeto Orientados por Objetos

Computador E/S, Memória, Barramento do sistema e CPU Onde a CPU Registradores, ULA, Interconexão interna da CPU e Unidade de controle.

Programação Engenharia Informática (11543) 1º ano, 1º semestre Tecnologias e Sistemas de Informação (6619) 1º ano, 1º semestre

Organização de Computadores Software

Computação II Orientação a Objetos

Programando em C++ Histórico da Linguagem C

Regras Métodos Identificadores Variáveis Constantes Tipos de dados Comandos de atribuição Operadores aritméticos, relacionais e lógicos

Linguagem de Programação I. Orientação a Objetos em Java

O COMPUTADOR. Introdução à Computação

E/S CPU. Memória (Instruções e dados) 2 PARADIGMA IMPERATIVO. Instruções e dados. Resultados das operações. Unidade lógica e aritmética

Computador Digital Circuitos de um computador (Hardware)

5 Apresentando a linguagem C

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Algoritmos e Programação Parte Teórica

Plano de Aula. if(condição) { bloco de comandos; } else { bloco de comandos2; }

Introdução a Computação

Introdução à Programação. Armazenamento de Grande Quantidade de Informação Usando Vetores

Sistemas Operacionais. Prof. André Y. Kusumoto

OFICINA DA PESQUISA PROGRAMAÇÃO APLICADA À CIÊNCIA DA COMPUTAÇÃO

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01

Linguagens de. Aula 01. Profa Cristiane Koehler

Convertendo Algoritmos para a Linguagem C

c. Técnica de Estrutura de Controle Teste do Caminho Básico

Representação de Algoritmos - Linguagens de Programação

Plano de Ensino. Conteúdo Programático

Introdução às Linguagens de Programação

Linguagem de Programação

Introdução ao Paradigma Orientado a Objetos. Principais conceitos

Programação Orientada a Objeto

Prof. Antonio Almeida de Barros Jr. Prof. Antonio Almeida de Barros Junior

Algoritmos e Programação Aula 01 Introdução a Computação

UNIVERSIDADE FEDERAL DE UBERLÂNDIA FACULDADE DE ENGENHARIA ELÉTRICA COLEGIADO DO CURSO DE GRADUAÇÃO EM ENGENHARIA ELÉTRICA/ENG.

1. SINTAXE DA LINGUAGEM ASSEMBLY

Eduardo Bezerra. Editora Campus/Elsevier. Princípios de Análise e Projeto de Sistemas com UML - 2ª edição

Introdução. Paradigmas de Linguagens de Programação. Heloisa de Arruda Camargo. Motivos para estudar os conceitos de linguagens de programação

Allisson Barros 12/ Daniel Luz 13/ Leandro Bergmann 14/ Luiz Fernando Vieira 13/ Uriel Silva 12/

Organização de Computadores 1

5 - Vetores e Matrizes Linguagem C CAPÍTULO 5 VETORES E MATRIZES

TÉCNICAS DE PROGRAMAÇÃO

Engenharia de Software III

Programação. MEAer. Bertinho Andrade da Costa. Instituto Superior Técnico. Introdução ao Pré-Processador. 2011/2012 1º Semestre

Linguagens de Programação

Conceitos básicos da linguagem C

1 Funções básicas de implementação de arquivos

Métodos de Construção de Software: Orientação a Objetos. Mestrado em Ciência da Computação 2008 Profa. Itana Gimenes

Introdução à Programação Aula 2 Introdução à linguagem Python

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

Nesta aula... Analisamos na ultima aula a evolução e caraterísticas de computadores e linguagens de programação. Nesta aula iremos ver:

Linguagem C: variáveis, operadores, entrada/saída. Prof. Críston Algoritmos e Programação

Introdução à Computação: Sistemas de Computação

Introdução à Programação

Programação I. Departamento de Engenharia Rural Centro de Ciências Agrárias

Capítulo 4 Gerenciamento de Memória

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

UNIP - UNIVERSIDADE PAULISTA. Arquitetura de computadores

Linguagem de Montagem

INTRODUÇÃO À PROGRAMAÇÃO

Linguagens de programação

Game Programming Basic

Algoritmos e Técnicas de

1. DADOS DE IDENTIFICAÇÃO

Informática I. Aula 6. Aula 6-12/09/2007 1

Introdução. Hardware X Software. Corpo Humano Parte Física. Capacidade de utilizar o corpo em atividades especificas explorando seus componentes

Planificação de. Aplicações Informáticas B

JSP - ORIENTADO A OBJETOS

Programação de Computadores III

Construção de Compiladores. Construção de Compiladores. Motivação. Motivação. Contexto Histórico. Classificações: Gerações 09/03/2010

Prof. Esp. Adriano Carvalho

Programação Estruturada e Orientada a Objetos. Fundamentos Orientação a Objetos

Gerenciamento de Projetos Modulo II Clico de Vida e Organização

BREVE HISTÓRIA DA LINGUAGEM FORTRAN

Algoritmos e Programação. Curso de Engenharia de Produção Prof. Ms. Rogério Cardoso rogerio.cardoso@aedu.com professor@rogeriocardoso.com.

2 Ferramentas Utilizadas

Estrutura de Dados Básica

VIII. VARIÁVEIS. Tabela I ARQUITETURA DA MEMÓRIA. 0x0000 0x34 0x0001 0xB0 0x0002 0x23. 0xFFFF 0x00

1. Fazer um programa em C que pergunta um valor em metros e imprime o correspondente em decímetros, centímetros e milímetros.

15 a Aula Subprogramação /Subalgoritmos Função e Procedimento

UNIVERSIDADE FEDERAL DE MINAS GERAIS GRADUAÇÃO EM ESTATÍSTICA BÁRBARA BORGES SILVA PROGRAMAÇÃO DE COMPUTADORES E A ESTATÍSTICA

Transcrição:

1 AULA 1: PARADIGMAS DE PROGRAMAÇÃO Curso: Ciência da Computação Profª.: Luciana Balieiro Cosme

Ementa 2 Programação Imperativa. Programação Paralela e Concorrente. Programação Lógica. Programação Funcional. Programação Orientada a Objetos. Comparativo entre os diversos paradigmas da programação.

Referências bibliográficas 3 SEBESTA, R. W. Conceitos de Linguagens de Programação. 9ª ED. BOOKMAN, 2011. TUCKER, A. B.; NOONAN, R. E. Linguagens de Programação: Princípios e Paradigmas. 2ª Edição. McGraw-Hill, 2009. David A. Watt. Programming Language Design Concepts. Wiley, 2004.

Avaliação 4 1º Seminário: 15 pontos 12/03/2015 1ª Avaliação: 25 pontos Data: 03/04/2015 2ª Avaliação: 30 pontos Data: 07/05/2015 2º Seminário: 15 pontos Data: 12/06/2015 Trabalho final: 15 pontos Data: 26/06/2015

Algumas perguntas 5 1. Quais características de uma linguagem de programação são importantes? 2. Como comparar estas características? 3. Qual linguagem de programação usar? 4. Como estudar novas linguagens? 5. Qual a melhor linguagem para uma determinada aplicação?

Objetivos da disciplina 6 Análise crítica de paradigmas e linguagens de programação Estudo dos conceitos gerais de linguagens de programação Visão geral dos paradigmas

Razões para estudar conceitos de linguagens de programação 7 1. Capacidade aumentada para expressar ideias A linguagem adotada impõe limitações Conhecer uma variedade de recursos Aprender novas construções E se o programador for obrigado a usar uma determinada linguagem? Simular construções de outras linguagens Exemplo: tipo booleano em C

Razões para estudar conceitos de linguagens de programação 8 2. Embasamento para escolher linguagens adequadas Como escolher a linguagem de um novo projeto? Linguagens surgem ao longo do tempo Ex.: C# (2000) Simulação de recursos

Razões para estudar conceitos de linguagens de programação 9 3. Habilidade aumentada para aprender novas linguagens Em constante evolução Exige apredizado contínuo É essencial conhecer vocabulário e conceitos para ler, entender e avaliar Indicador de popularidade das linguagens http://www.tiobe.com/index.php/content/paperinfo/tpci/in dex.html

10

Razões para estudar conceitos de linguagens de programação 11 4. Melhor entendimento da importância da implementação Aspectos de implementação que afetam esses conceitos Pode levar a habilidade de usar de maneira mais eficiente Entender as escolhas entre as construções e as consequências

Razões para estudar conceitos de linguagens de programação 12 5. Melhor uso das linguagens já conhecidas Muitas linguagens são grandes e complexas e é incomum conhecer todos os recursos 6. Avanço geral da computação Muitos acreditam que as linguagens mais populares nem sempre são as melhores disponíveis Ao menos em parte, por não estarem familiarizados com os conceitos Se quem escolhem fosse mais bem informados, talvez linguagens melhores ganhassem de outras.

Domínios de programação 13 De controlar usinas a jogos eletrônicos em celulares Aplicações científicas Aritmética e ponto flutuante, vetores e matrizes Aplicações empresariais Relatórios Inteligência artificial Programação de sistemas Sistema operacional e ferramentas de suporte. Eficiência Softwares para web Marcação, conteúdo dinâmico

Critérios de avaliação de linguagens 14 Examinar os conceitos das construções e capacidades das linguagens São quatro critérios, conforme Sebesta (2011): Legibilidade Facilidade de escrita Confiabilidade Custo Algumas características que influenciam esses critérios

1. Legibilidade 15 Facilidade com a qual os programas podem ser lidos e entendidos Antes de 1970: eficiência e legibilidade de máquina Após, facilidade de manutenção

1. Legibilidade 16 1.1 Simplicidade geral Uma linguagem com muitas construções é difícil de aprender Multiplicidade de recursos Ex.: count = count + 1 count += 1 count++ ++count Sobrecarga de operadores Apesar de útil, pode não fazer sentido para quem ler Ex.: operador + para vetores

1. Legibilidade 17 1.2 Ortogonalidade Conjunto pequeno de construções que podem ser combinado a um número pequeno de formas Cada combinação é legal e significativa Um recurso é independente do contexto A falta de ortogonalidade leva a exceções Ex. Na linguagem C: Vetores não podem ser retornados por funções e registros sim. Um membro de uma estrutura pode ser de qualquer tipo, exceto void Vetores podem ser qualquer tipo exceto void Parâmetros são passados por valor, exceto vetores

1. Legibilidade 18 1.3 Tipos de dados Presença de mecanismos para definir tipos de dados O que é mais claro? flag=1 ou flag=true 1.4 Projeto da sintaxe Formato dos identificadores: Fortran 77 permite 6 caracteres Palavras especiais (while, for, if) { } ou end if / end loop

2. Facilidade de escrita 19 A capacidade de criar programas para um domínio 2.1 Simplicidade e ortogonalidade Número menor de construções 2.2 Suporte à abstração Habilidade de definir estruturas complicadas ignorando alguns detalhes Subprogramas Abstração de estruturas de dados 2.3 Expressividade cont++ ou for

3. Confiabilidade 20 3.1 Verificação de tipos Detectar erros de tipos (compilador e durante a execução) Ex.: void verifica_tipo(int a){ printf("%d",a); } void main(){ float a = 2; verifica_tipo(a); }

3. Confiabilidade 21 3.2 Tratamento de exceções Interceptar erros em tempo de excecução 3.3 Utilização de apelidos Ponteiro 3.4 Legibilidade e facilidade de escrita Programas difícieis de ler são também dificies de escrever e modificar

4. Custo 22 Treinamento Escrita Compilação Execução Sistema de implantação Confiabilidade baixa Manutenção

Outros critérios 23 Portabilidade Generalidade

Influências no projeto de linguagens 24 Arquitetura de computadores Von Neumann Memória e CPU separadas (transmissão é necessária) Variáveis, sentenças de atribuição, repetição iterativa Metodologias de projeto de programas Mudança de maior custo de hardware para softwares Modelar sistemas complexos Suporte às abstrações de dados Orientação a objetos

Categorias 25 Definição: Modelo, padrão ou estilo de programação suportado por determinado grupo de linguagens Classificação: Paradigma Imperativo Paradigma Funcional Paradigma Lógico Paradigma Orientado por Objetos Paradigma Paralela e Concorrente

Implementação 26 Compilação, Interpretação Pura, Hibridos Ambientes de programação

Paradigma Imperativo 27 Baseado no conceito de variáveis e operações Sequência de comandos Primeiro paradigma a surgir e ainda é o dominante Vantagens: Eficiência (arquiteturas von Neumann) Modelagem natural de aplicações do mundo real Paradigma fortemente estabelecido Desvantagens: Implementações demasiadamente operacionais definem como fazer e não o que fazer privilegiam as operações (processos) às estruturas de dados

Paradigma Funcional 28 Toda computação em um programa funcional é realizada por meio da aplicação de funções a argumentos Mapeamento muito próximo do modelo matemático de funções Vantagens: Concorrência é explorada de forma natural Desvantagem: Implementações em geral são ineficientes

Paradigma funcional 29 Ex.: Em Haskell let x = 8 * 10 in x + x R.:160 'a' : 'b' : [] R.: ab map (*99) [1..10] R.:[99,198,297,396,495,594,693,792,891,990]

Paradigma lógico 30 Linguagens cujos programas são relações entre entrada e saída (E/S) Estilo declarativo, notação lógica formal Ex.: Prolog Fatos: pai(joana, jake) pai(jose,joana) Regras: avo(x, Z) :-pai(x,y), pai(y,z) Consultas: pai(bob, darcie) R.: true ou false

Paradigma orientado a objetos 31 Classes com atributos e métodos Instância de objetos, herança, encapsulamento Reutilização de código Ex.:

Paradigma orientado a objetos 32 public class Pessoa { private string nome; private string endereco; private DateTime datanasc; public int Idade() { //cálculos return idade; } }

Leitura complementar 33 Capítulo 1 Aspectos preliminares SEBESTA, R. W. Conceitos de Linguagens de Programação. 9ª ED. BOOKMAN, 2011. http://book.realworldhaskell.org/read/ http://www.haskell.org/haskellwiki/introduction

Contato 34 luciana.balieiro@ifnmg.edu.br