PARADIGMAS DE LINGUAGENS
Prof. Paulo Malcher
prcmalcher@gmail.com
https://sites.google.com/site/professorpaulomalcher/
Sumário
•
Apresentação do Professor
Apresentação do Professor
•
Prof. Paulo Malcher
• Bacharel em Ciência da Computação – UFPA
• Mestre em Ciência da Computação – PPGCC-UFPA • Pesquisador Laboratório Spider-UFPA
Apresentação da Disciplina
•
OBJETIVO GERAL
• Estudo dos principais paradigmas de programação e sua influência na solução de problemas.
Apresentação da Disciplina
•
OBJETIVOS ESPECÍFICOS
• Estudo dos principais paradigmas de programação e sua influência na solução de problemas.
Apresentação da Disciplina
•
EMENTA
• Evolução das linguagens de programação. Paradigmas de programação. Noções sobre linguagens: estruturada, orientada a eventos e orientada a objetos. Estudo comparativo de linguagens: variáveis, expressões, escopo, comandos, tipagem, procedimentos, tipos de dados, abstração e controle. Estudo de casos.
Apresentação da Disciplina
•
CONTEÚDO PROGRAMÁTICO
• Unidade 1: Introdução 1. 1. Motivação
1. 2. Conceito de linguagem de programação (LP) 1. 3. Escolha de uma LP
1. 4. Classes e gerações
1. 5. Elementos sintáticos e semânticos 1. 5. 1. Sintaxe x semântica
1. 5. 2. Abstração e amarração 1. 5. 2. 2. Tipos de dados
Apresentação da Disciplina
•
CONTEÚDO PROGRAMÁTICO
• Unidade 2: Paradigma Imperativo 2.1. Introdução
2.2. Programação imperativa
2.1.1. Variáveis, atribuição e repetição 2.1.2. Comandos
Apresentação da Disciplina
•
CONTEÚDO PROGRAMÁTICO
• Unidade 3: Paradigma Orientado a Objeto 3.1. Introdução
3.2. Classe e objeto
3.3. Hierarquia de classes: herança e reusabilidade 3.4. Programação orientada a objetos
3.4.1. Método e mensagem 3.4.2. Polimorfismo
Apresentação da Disciplina
•
CONTEÚDO PROGRAMÁTICO
• Unidade 4: Paradigma Funcional 4.1. Introdução
4.2. Funções matemáticas e funções em LPs 4.3. Programação funcional
4.3.1. "Pattern-matching" 4.3.2. Avaliação postergada
4.3.3. Funções de mais alta ordem 4.4. Estudo de caso
Apresentação da Disciplina
•
CONTEÚDO PROGRAMÁTICO
• Unidade 5: Paradigma Lógico 5.1. Introdução
5.2. Programação Lógica 5.3. Estudo de caso
Apresentação da Disciplina
•
METODOLOGIA
• Aulas teóricas expositivas.
• Aulas de exercícios com a participação dos alunos e com a orientação do professor.
• Recursos audiovisuais. • Aulas em laboratório.
Apresentação da Disciplina
•
MEIOS DE COMUNICAÇÃO
• Contato direto:
prcmalcher@gmail.com
• Disponibilização de Materiais e Fóruns:
Apresentação da Disciplina
•
AVALIAÇÃO
• Duas Avaliações (N1 e N2).
• NP1 = Prova + Listas de Exercícios (+ Ponto Extra)
• NP2 = Seminário + Prova + Exercícios (+ Ponto Extra)
Média = (N1 + N2)/2
Se média >= 7,0 e frequência >= 75% Aprovado. Se média < 7,0 e frequência < 75% Reprovado.
Se média < 7,0 e frequência > 75% Exame.
• O aluno submetido ao Exame será considerado aprovado se obtiver Nota Final >= 5,0.
Apresentação da Disciplina
•
BIBLIOGRAFIA BÁSICA
• SEBESTA, R. W. Conceitos de Linguagens de
Programação. 5a. Edição. São Paulo: Bookman, 2003.
• MELO, Ana Cristina Vieira de. SILVA, Flavio Soares
Correa da. Princípios de Linguagens de Programação. Edgard Blucher, 2003.
• VAREJÃO, Flavio. Linguagens de Programação.
Apresentação da Disciplina
Apresentação da Disciplina
•
BIBLIOGRAFIA COMPLEMENTAR
• NOONAN, Robert. TUCKER, Allen. Linguagens de
Programação. Mcgraw Hill Brasil, 2009.
• SCOTT, M.L. Programming Language Pragmatics. Second
Edition. Morgan Kaufmann, 2005.
• VILLAS, Marcos Vianna. VILLASBOAS, Luiz Felipe.
Programação - Conceitos, Técnicas e Linguagens. Ed. Campus.
• PRATT, T. W. ZELKOVIT, M. Programming languages: design
& implementation. Englewood Cliffs, N.J.: Prentice-Hall, 1995.
• PRICE, Ana Maria de Alencar. TOSCANI, Simão Sirineo.
Implementação de Linguagens de Programação. Série Livros didáticos 9. Bookman Companhia Ed., 2008.
Apresentação da Disciplina
•
Procurar estar presente na maioria das aulas
• Lembre-se: Alguns exercícios poderão compor a nota de alguma prova!
•
Se faltou, checar material no site e/ou com os
colegas de sala;
•
Dúvida em algum assunto ou aula? Pergunte
ao professor durante as aulas ou envie um
• Sempre checo e-mails e procuro respondê-los o mais breve possível
PARADIGMAS DE LINGUAGENS
Prof. Paulo Malcher
prcmalcher@gmail.com
LP
INTRODUÇÃO
•
Na programação de computadores, uma
linguagem de programação (LP) serve como
meio de comunicação entre o indivíduo que
deseja resolver um determinado problema e o
computador escolhido para ajudá-lo na solução.
LP
INTRODUÇÃO
•
A LP deve fazer a
ligação entre o
pensamento humano
(muitas vezes de
natureza não estruturada) e a
precisão
requerida para o
processamento pela
máquina.
OBJETIVOS DE UMA LP
•
Auxiliar o programador no processo de
desenvolvimento de software. Isso inclui auxílio
no:
• Projeto • Implementação • Teste • Verificação e • Manutenção do softwareDEFINIÇÃO
•
Uma LP é uma linguagem destinada para
ser usada por uma
pessoa
para expressar
um
processo
através do qual um
computador
possa resolver um
problema
.
•
Os
quatro
modelos
(paradigmas:
Imperativo
,
Orientado a Objeto
,
Funcional
e
Lógico
) de LP correspondem aos pontos
de vista dos quatro componentes citados.
A eficiência na construção e execução de programas depende da combinação dos quatro pontos de vista.
•
Para que se tornem operacionais, os
programas escritos em
linguagens de alto
nível
devem
ser
traduzidos
para
DEFINIÇÃO
•
Linguagem alto nível para linguagem de
máquina: Essa conversão é realizada
através de sistemas especializados -
compiladores ou interpretadores
-que aceitam (como entrada) uma
representação textual da solução de um
problema, expresso em uma
linguagem
fonte
, e produzem uma representação
do mesmo algoritmo expresso em outra
linguagem, dita
linguagem objeto.
RAZÕES PARA ESTUDAR OS CONCEITOS
DE
LINGUAGENS DE PROGRAMAÇÃO
• Aumento da capacidade de expressar ideias.
• Maior conhecimento para escolha de
linguagens apropriadas.
• Entender melhor a importância da
implementação.
• Maior capacidade para aprender novas
linguagens.
• Aumento da capacidade de projetar novas
linguagens
RAZÕES PARA ESTUDAR OS CONCEITOS DE
LINGUAGENS DE PROGRAMAÇÃO
•
Aumento da capacidade de expressar
ideias:
• A Capacidade intelectual pode ser influenciada pelo poder expressivo da linguagem.
• Uma maior compreensão de uma LP pode aumentar nossa habilidade em pensar em como atacar os problemas.
RAZÕES PARA ESTUDAR OS CONCEITOS DE
LINGUAGENS DE PROGRAMAÇÃO
•
Aumento da capacidade de expressar
ideias:
• Conhecimento amplo dos recursos de linguagem reduz as limitações no desenvolvimento de softwares
• Melhor compreensão das funções e implementação das estruturas de uma LP nos leva a usar a LP de modo a extrair o máximo de sua funcionalidade e eficiência.
RAZÕES PARA ESTUDAR OS CONCEITOS DE
LINGUAGENS DE PROGRAMAÇÃO
•
Maior Conhecimento da Escolha da LP
apropriada:
• Escolher a melhor linguagem para um problema específico devido ao conhecimento de novos recursos é difícil para:
• Programadores antigos
RAZÕES PARA ESTUDAR OS CONCEITOS DE
LINGUAGENS DE PROGRAMAÇÃO
•
Entender melhor a importância da
implementação:
• Leva um entendimento do PORQUÊ das linguagens serem projetadas de determinada maneira.
• Ajuda no desenvolvimento de sistemas complexos.
• Melhora as escolhas que podemos fazer entre as construções de LP e as consequências das opções.
RAZÕES PARA ESTUDAR OS CONCEITOS DE
LINGUAGENS DE PROGRAMAÇÃO
•
Maior capacidade para aprender novas
linguagens:
• Aprendizado contínuo é fundamental, a computação é uma ciência nova.
• Compreender os conceitos gerais das linguagens torna mais fácil entender como eles são incorporados na linguagem que está sendo aprendida.
RAZÕES PARA ESTUDAR OS CONCEITOS DE
LINGUAGENS DE PROGRAMAÇÃO
•
Aumento da capacidade de projetar novas
linguagens:
• Indicador de popularidade das LP - Tiobes (www.tiobe.com)
RAZÕES PARA ESTUDAR OS CONCEITOS DE
LINGUAGENS DE PROGRAMAÇÃO
•
Avanço global da comunicação:
• Nem sempre as linguagens mais populares
são melhores, por quê? • Imposição!!
• Por que existem várias linguagens de
programação?
ENUNCIADO
TRABALHO PRÁTICO DE PL
•
Objetivo:
estudo
mais
aprofundado
de
linguagens
de
programação
e
seus
paradigmas.
•
Realização em dupla ou trio (Depende do
número de alunos na turma)
ETAPA 1 – 25/08/2015
•
Formalização das Equipes
TEMAS
1.
Haskell
2.
Scheme
3.
APL – Funcional
4.
LISP
5.
Ada95
6.
SmallTalk -
7.
FORTRAN
8.
C#
9.
Visual Basic
10.
PHP
ETAPA II
•
Entrega de relatório técnico
• Cada equipe deve preparar um relatório técnico no formato de artigos da SBC contendo as seguintes informações (não necessariamente nesta ordem):
• Descrição da linguagem: histórico, classes de problemas indicados para uso, introdução geral à sintaxe e semântica dos comandos principais.
• Descrição de um pequeno exemplo introdutório (obtido de referência)
• Descrição das ferramentas (compiladores e/ou interpretadores e/ou IDEs – o que haver) para a linguagem.
• Visão Geral do Material Disponível sobre a Linguagem na World Wide Web
ETAPA II (CONTINUAÇÃO)
•
Entrega de relatório técnico
• Cada equipe deve preparar um relatório técnico no formato de artigos da SBC contendo as seguintes informações (não necessariamente nesta ordem):
• Exemplo: apresentação de um exemplo original escrito na linguagem e executado em ambiente real – descrição, telas que evidenciem a compilação (se aplicável) e execução, análise crítica sobre o exemplo.
• Análise critica sobre a linguagem.
ETAPA II (CONTINUAÇÃO)
•
Critérios para avaliação:
• Entrega fora do prazo: penalidade de 20%.
• Qualidade e correção da descrição da linguagem de programação: 30%
• Qualidade do exemplo original fornecido: complexidade, uso adequado das características da linguagem, qualidade da descrição, qualidade da análise crítica – 50%.
ETAPA III
•
Apresentação
• No período de 1, 3, 8 e 10 de ... serão realizadas as apresentações das linguagens de programação estudadas, conforme a ordem da distribuição das linguagens.
• Todas as equipes devem preparar apresentações sobre a linguagem com um exemplo simples da linguagem e descrições das ferramentas existentes. Além disso, deve ser preparada uma apresentação do exemplo original da equipe.
ETAPA III
•
Apresentação
• Duração máxima da apresentação básica: 30 minutos com exemplo.
• Critérios para avaliação (a média será obtida por observação do professor considerando todos os membros da equipe):
• Cumprimento do prazo de apresentação.
• Qualidade / legibilidade dos slides e material apresentado.
• Qualidade da demonstração do exemplo.