Você está na página 1de 29

Programação Funcional

Prof. Félix Singo


4/10/2024
4/10/2024 1 1
Xingombela

Sessão III
da 1ª Sessão

Cortesia: SPizura

4/10/2024
4/10/2024 2 2
Porquê estudar Linguagens de Programação?....

4/10/2024
4/10/2024 3 3
4/10/2024
4/10/2024 4 4
Melhoria na capacidade
de escolher linguagens
Melhoria na capacidade
apropriadas
de expressar ideias.

Melhor entendimento da
Mais habilidade para dificuldade de
aprender novas implementação das
construções das LPs
linguagens

Melhor entendimento da Avanço da área de


dificuldade de computação de um Melhor uso das
implementação das linguagens conhecidas
modo geral.
construções das LPs

4/10/2024
4/10/2024 5 5
Programação é
Linguagens de central para a
descrição de hardware computação
têm muito dos
conceitos de LP
Processamento de
linguagem natural é
Não só! relacionado a
processamento de LP.
Linguagens de
comandos de sistemas Linguagens de
operativos têm muito consultas a Base de
dos conceitos de LP dados têm muito dos
conceitos de LP

4/10/2024
4/10/2024 6 6
Melhoria na capacidade de expressar ideias!

• Existe uma relação entre os pensamentos e a linguagem utilizada


para comunicar esses pensamentos.

• É difícil para as pessoas conceitualizarem estruturas que elas não


podem descrever verbalmente ou na forma escrita
• Particularmente em termos das abstrações que podem

4/10/2024
4/10/2024 manipular 7 7
Motivos para estudar os conceitos de LP

O estudo das LP é valioso por uma série de importantes


razões:
• Aumenta nossa capacidade de usar diferentes
construções para escrever programas,
• Possibilita-nos escolher linguagens para projectos de
maneira mais inteligente e
• Torna mais fácil a aprendizagem de novas linguagens.

4/10/2024
4/10/2024 8 8
Conclusão

• Sem as linguagens de programação, a programação seria


impossível porque não haveria regras (semânticas e sintáticas),
expressões (como a estrutura e o significado de todos os elementos
que as compõem) ou uma maneira estabelecida de como programador
e máquina deveriam “falar” entre si.

4/10/2024
4/10/2024 9 9
Paradigmas de Programação
Imperativo – Funcional – Lógico – Orientado a Objectos

4/10/2024
4/10/2024 10 10
Classificação de Linguagens de Programação
Linguagens de
Programação

Paradigmas
Estrutura de Grau de Geração
Tipos Abstração
Imperativo Declarativo Fracamente
Primeira
tipada Máquina
Procedural Fortemente Segunda
Funcional
tipada Baixo nível
Estrutura de blocos Programação Terceira
Dinamicamente
lógica tipada Alto nível
Orientação a Objectos Quarta
Estaticamente
Computação distribuida tipada Quinta

4/10/2024
4/10/2024 11 11
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;

Assim temos que por detrás de uma linguagem de programação está


sempre um paradigma representado.
4/10/2024
4/10/2024 12 12
1. O Paradigma Imperativo

• Programas centrados no conceito de um estado (modelado por


variáveis) e acções (comandos) que manipulam o estado;

• Paradigma também denominado de procedural, por incluir


subrotinas ou procedimentos como mecanismo de estruturação;

• Primeiro paradigma a surgir e ainda é o dominante.

4/10/2024
4/10/2024 13 13
1. O Paradigma Imperativo
Modelo computacional do paradigma imperativo

PROGRAMA OUTPUT
INPUT

ESTADO
Exemplos
• Pascal
• ALGOL
• FORTRAN
• C
• BASIC
• MODULA
4/10/2024
4/10/2024 14 14
1. O Paradigma Imperativo
Visão crítica do modelo imperativo
Vantagens
Eficiência (embute modelo de Von Neumann)
Modelagem "natural" de aplicações do mundo real
Paradigma dominante e bem estabelecido

Problemas
Relacionamento indirecto entre E/S resulta em:

 difícil legibilidade;
 erros introduzidos durante manutenção;
 descrições demasiadamente operacionais focalizam o como e não o quê
4/10/2024
4/10/2024 15 15
2. O Paradigma Lógico

• A Programação em Lógica tem como mais notório representante a


linguagem PROLOG.

• A programação Lógica é um paradigma de programação fortemente


baseado na lógica formal.

• Qualquer programa escrito em uma linguagem de programação lógica é


um conjunto de sentenças em uma forma lógica que expressa factos e
regras sobre uma determinada área do problema.

4/10/2024
4/10/2024 16 16
2. O Paradigma Lógico

• Portanto, as declarações básicas da programação lógica são as seguintes:


• Factos são afirmações fundamentais sobre o domínio do problema, como
"Sócrates é um homem".
• As regras permitem fazer inferências sobre os factos do domínio ("Todos os
homens são mortais.")
• As consultas são questões sobre esse domínio ("Sócrates é mortal?")

• Em geral, a tarefa aqui é encontrar a resposta para a consulta com base em


factos e regras.
4/10/2024
4/10/2024 17 17
2. O Paradigma Lógico

Modelo computacional do paradigma Lógico

Programa saída
Entrada

Exemplos
• PROLOG (PROgramming in LOGic)
• CLP
• QLISP
• Popler
• Planner
• Mercury
• OZ
4/10/2024
4/10/2024 18 18
3. Paradigma Orientado a Objectos

• Não é um paradigma no sentido estrito: é uma subclassificação do imperativo;

• A diferença é mais de metodologia quanto à concepção e modelagem do


sistema;

• A grosso modo, uma aplicação é estruturada em módulos (classes) que


agrupam um estado e operações (métodos) sobre este;

• Classes podem ser estendidas e/ou usadas como tipos (cujos elementos são
objectos)

4/10/2024
4/10/2024 19 19
3. Paradigma Orientado a Objectos

• O ancestral comum de praticamente todas as linguagens Orientadas a Objectos


(LOO) é Simula, desenvolvida nos anos 60 por Dahl, Myhraug e Nygard.

• Simula foi criada sobre as ideias do ALGOL, mas adicionou os conceitos de


Encapsulamento e Herança

• Hoje, já são mais de 2000 as linguagens de programação de alto nível diferentes

• Dessas, cerca de cem são orientadas a Objecto ou baseadas em objectos (uma


linguagem é considerada orientada a objectos quando não só incorpora os conceitos
de objectos como também suporta Polimorfismo e Herança).

4/10/2024
4/10/2024 20 20
3. Paradigma Orientado a Objectos

• SmallTalk: criado pelos membros do Xerox Palo Alto Research Center Learning Group como
o Software Dynabook, um projecto visionário de Alan Kay

• Eiffel: criado pela ISE, é tratado como uma linguagem totalmente orientada a objectos,
procurando adequar todos os conceitos OO em uma linguagem de código eficiente.

• Object Pascal: criado pelos desenvolvedores da Apple Computer, em conjunto com Niklaus
Wirth, o designer do Pascal. Seu ancestral imediato é o Clascal, uma versão orientada a
objectos do Pascal para o Lisa.

4/10/2024
4/10/2024 21 21
3. Paradigma Orientado a Objectos

• Delphi: é um ambiente de desenvolvimento de aplicações para WindowsTM


criado pela Borland, e baseado no conceito de componentes, classes pré-
fabricadas e, em boa parte das vezes, visuais

• C++: Criado por Bjarne Stroustrup da AT & T Bell Laboratories. Seu


ancestral imediato era o C with Classes, desenvolvido também por
Stroustrup em 1980, e que por sua vez era baseado no C e no Simula.

• Java: Pode-se dizer que Java é a linguagem que revolucionou a Internet,


trazendo para o ambiente Web capacidade de processamento distribuído,
segurança, portabilidade e transformando a internet num ambiente de alta
produtividade capaz de suportar o processamento de aplicações críticas, sob
4/10/2024
4/10/2024 22 22
3. Paradigma Orientado a Objectos

Modelo computacional do paradigma orientado a objectos

Entrada Programa
saída
Estado

Programa Programa
Entrada saída Entrada saída

Estado Estad o

4/10/2024
4/10/2024 23 23
3. Paradigma Orientado a Objectos
Visão crítica do paradigma orientado a objectos
Vantagens

• Todas as do estilo imperativo

• Classes estimulam projecto centrado em dados: Modularidade,


Reusabilidade e Extensibilidade e Aceitação comercial crescente
Problemas
• Semelhantes às do paradigma imperativo, mas amenizadas pelas
facilidades de estruturação
4/10/2024
4/10/2024 24 24
4/10/2024
4/10/2024 25 25
1. No que se refere a classificação de linguagens de programação por nível e gerações, avalie as
assertivas a seguir
I. As linguagens de 1ª e 2ª gerações, são classificadas como baixo nível
II. As linguagens de 3ª geração são classificadas como alto nível
III. As linguagens de 1ª e 2ª gerações são, respectivamente, Assembly e linguagem de maquina
IV. SQL é uma linguagem de 4ª geração
• Com base em sua analise assinale a opção que apresenta APENAS as assertivas correctas
a) I e II
b) I, II e IV
c) II, III e IV
d) II e IV
e) I

4/10/2024
4/10/2024 26 26
2. Assinale o grupo de linguagens que são de alto nível e atendem as características do paradigma
Orientado a objecto
I. Java e Fortran

II. Java, C++, Python e Smalltalk

III. Python, Java e Assembly

IV. Java, C++ e HTML

V. Phyton, Java, C++ e Delpi

3. Qual é o paradigma de Linguagem de Programação, cuja estrutura é fortemente determinada pela


arquitectura de John von Neumann.

4/10/2024
4/10/2024 27 27
BIBLIOGRAFIA BÁSICA

 SEBESTA, R. Conceitos de Linguagens de Programação . 4.


ed.Bookman, 2000.
 GUIMARÃES, Ângelo de Moura. Algoritmos e estruturas de
dados. LTC, 1985.
 ORTH, A.I.: Algoritmos e Programação com resumos das
Linguagens Pascal e C. Editora AIO, 2001
 TREMBLAY, Jean-Paul; BUNT, Richard B. Ciência dos
computadores: uma abordagem algorítmica. Mcgraw- Hill, 1983.
 WIRTH, Niklaus. Programação Sistemática em Pascal. Campus,
1989.

4/10/2024
4/10/2024 28 28
Obrigado pela partilha!

Medir é saber!

4/10/2024
4/10/2024 29 29

Você também pode gostar