Buscar

Classificação de Paradigmas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 6 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 6 páginas

Prévia do material em texto

1 
 
Classificações de paradigmas de linguagens de programação 
 
Paradigma Imperativo Ou Procedural 
Visão: “ O computador é uma calculadora programável” 
 
A maioria das linguagens, de alto nível, existentes até a década de 80 seguiam o 
paradigma imperativo, caracterizado basicamente por seguir as características da 
arquitetura de Von Neumann , que tem formado a base para o projeto de muitas 
linguagens de programação. Tais linguagens têm um forte compromisso com a eficiência. 
As LPs incluídas nesse paradigma especificam como a computação é realizada por 
uma sequencia de alterações no estado da memória do computador. 
Os conceitos fundamentais são: Variável, valor e atribuição, ou seja o tempo todo 
atribui-se valor a variáveis. 
Essa classe de LPs é caracterizada pelo desenvolvimento do programa através de 
refinamentos sucessivos (top down), incentivando a organização do programa em 
subprogramas (partes), construídos com 3 tipos de processamento: sequencial, 
condicional e iterativo (repetitivo). Ou seja o paradigma imperativo esta intimamente 
relacionado com as técnicas e linguagens estruturadas. 
Esta classe de linguagens contendo membros tão díspares como FORTRAN, 
COBOL, PASCAL, CLU e ADA, deve seu nome ao papel dominante desempenhado pelos 
comandos ou instruções iterativas. Nestas linguagens a unidade de trabalho é o 
comando. Os efeitos de comandos individuais são combinados para a obtenção dos 
resultados desejados em um programa. 
Com forte influência da arquitetura de Von Neumann , 3 características permeiam 
tal classe de linguagens : 
 Variáveis – a memória é um componente vital de tal arquitetura sistêmica, 
sendo composta por um conjunto de unidades, denominadas células, onde os 
dados ficam armazenados. Para acessar tais dados na memória necessitamos 
saber o endereço de cada célula. Como programar, referenciando os endereços 
físicos de memória é uma tarefa extremamente complexa, as linguagens de 
programação dispuseram aos programadores o conceito de variável, permitindo 
a eles abstraírem-se do conhecimento de que dado estaria armazenado em que 
célula (com endereço específico) de memória. Assim uma variável é em última 
análise, uma célula de memória, onde se armazenam dados, e que possuem 
um nome (identificador). 
 
 
2 
 
 Operação de Atribuição – cada dado que precisa ser processado deve estar 
previamente armazenado na memória, isto é seu valor deve ser atribuído a 
uma célula de memória. O comando de atribuição tem alto grau de importância 
nas linguagens imperativas, forçando ao programador a um estilo de 
pensamento que é moldado pela arquitetura de Von Neumann. 
 Repetição (iteração) – um programa, nesta classe de linguagens, geralmente 
cumpre seu objetivo, executando repetidamente uma seqüência de passos 
(comandos) elementares. Isto é uma conseqüência da arquitetura de Von 
Neumann, posto que as instruções também precisam estar previamente 
armazenadas na memória antes de sua execução. A única maneira de fazer 
algo mais complexo é repetindo uma seqüência de instruções. 
 
 
As linguagens imperativas permitem descrever a resolução de problemas através 
de uma série de tarefas elementares (comandos) que o computador pode executar. A 
seqüência de comandos define o procedimento 
A fim de ilustrar a interação destas características e seus efeitos, consideremos o 
programa abaixo, escrito em PASCAL, que mostra os números primos compreendidos 
entre 2 e Num, sendo Num um valor lido do dispositivo de entrada DEFAULT (teclado). 
 
Program Primo; 
Var Num,I,J : Integer; Primo : Boolean; 
Begin 
 Readln (Num); 
 For I:=2 to Num do 
 Begin 
 J:=2; Primo:=True; 
 While (Primo) and (J <= I div 2) do 
If (I mod J) <> 0 Then J:=J+1 
 Else Primo:=False; 
 If Primo Then writeln (´O número ´, I , ´e primo´) 
End; 
End. 
 
Considerações sobre o programa : 
 Baseia-se em duas malhas de repetição, uma dentro da outra. A repetição 
mais externa(For I:=1 to Num) percorre os valores no intervalo de interesse 
 
 
3 
 
(2 a Num), ao passo que a mais interna (While...) testa cada um destes 
números quanto a ser primo ou não. 
 A malha mais interna depende – de maneira não tão simples – da malha mais 
externa. 
 A malha mais externa também depende – na instrução If Primo Then..... – da 
atribuição feita na malha mais interna (primo:=false). 
 O programa não é hierárquico no sentido de cada componente ser composto 
de outros componentes (de nível mais baixo). Ao contrário cada componente 
usa efeito dos outros. 
 Um componente é usado não para produzir (calcular) um valor, mas para 
produzir um efeito, especificamente o efeito de atribuir valores a variáveis. 
 As estruturas de controle são usadas para ordenar as instruções de maneira 
que os efeitos combinados atinjam o fim desejado 
 
Vantegens das LPs Imperativas Desvantagens das LPs Imperativas 
 Os programas tendem a ser 
eficientes, pois essas LPs simulam 
o funcionamento da arquitetura do 
hardware 
 Inadequado a computação em 
paralelo 
  Dificulta a escrita de programas 
complexos, pelas características 
das linguagens no que se refere a 
seguir a Maquina de Von Neumann. 
  Dificuldade em corrigir programas, 
já que essa atividade decorre da 
dependência do conteúdo de cada 
célula de memória. 
 Requer acompanhamento passo a 
passo do estado de cada variável. 
 
Paradigma Orientado a Objetos 
Na medida em que os programas tornam-se maiores e mais complexos, cresce a 
dificuldade não só em desenvolvê-los, mas sobretudo mantê-los ao longo do tempo. As 
LPs desse paradigma oferecem recursos para tornar o desenvolvimento de software mais 
rápido e confiável. 
A diferença básica entre as LPs desse paradigma e das LPs do paradigma 
estruturado é que enquanto essas focam nas abstrações de controle de execução dos 
programas, aquelas estão fundamentadas nas abstrações de dados 
 
 
4 
 
Classes, nesse paradigma, são abstrações que definem uma estrutura de dados e 
um conjunto de operações, os chamados métodos, que podem ser realizadas sobre elas. 
Na implementação dos métodos das classes são usados os conceitos do 
paradigma estruturado, daí dizermos que o paradigma OO é uma evolução do paradigma 
estruturado. 
Uma linguagem é dita orientada à objetos quando ela dá suporte lingüístico para 
objetos, e requer que estes objetos sejam instâncias de classes e um mecanismo de 
herança deve ser permitido. 
 Linguagens Orientada a Objetos = Objetos + Classes + herança 
 
Podemos identificar similaridades entre o paradigma imperativo (ou procedural) 
com o paradigma da orientação a objetos. A Tabela abaixo , traça um paralelo entre 
estas abordagens. 
 
 
 
 
 
 
 
 
Paradigma Concorrente 
O paradigma concorrente engloba LPs que oferecem recursos para o 
desenvolvimento de sistemas concorrentes, cada vez mais usados. A programação 
concorrente existe quando vários processos executam simultaneamente e concorrem por 
recursos, o que pode acontecer quando há uma ou mais unidades de processamento. 
As principais linguagens para essa finalidade são: ADA e JAVA. 
Paradigma Declarativo 
Em contrates com o paradigma interativo, onde os programas especificam 
exatamente como o computador deve realizar a tarefa, nesse paradigma declara-se 
(descrição) o que é a tarefa, de forma abstrata. 
Essas LPs especificam as relações ou funções, não tendo atribuição de valores a 
posições de memória. As variáveis são incógnitas e não células de memória. 
Paradigma Imperativo 
Paradigma de Objetos 
Tipos de dados Classes / Tipos abstratos de dados 
VariávelObjeto / Instância 
Função / Procedimento Operação / Serviços 
Chamada de procedimento / 
função 
Envio de mensagens 
 
 
5 
 
O paradigma declarativo é subdividido em: Paradigma funcional é lógico, que são 
abaixo descritos. 
Paradigma Funcional 
Visão : “ O computador calcula funções matemáticas complexasl” 
O paradigma funcional contemplam linguagens que basicamente operam funções 
ou seja recebem um conjunto de valores e retornam um valor, como resposta ao 
problema. Exemplos dessas LPs são: LISP e HASKELL. 
O paradigma funcional focaliza o processo de resolução de problemas. A visão 
funcional resulta num programa que descreve as operações que devem ser efetuadas 
para resolver o problema. O programa é uma função, ou grupo de funções composto por 
funções simples. A relação entre as funções é simples : uma função pode chamar outra, 
ou o resultado de uma função pode ser utilizado como argumento para outra função. 
A tendência são programas menores, com menos código, nas linguagens 
funcionais. 
Exemplo: Considere a seguinte função para calcular o fatorial de um número, 
dada em uma linguagem imperativa C. 
 
Int Fatorial (int n) 
{ 
 Int Fat=1; 
 While (n > 0) 
{ 
 fat=fat*n 
 n— 
} 
return fat 
} 
 
Podemos usar a mesma função sem utilizar a variável local fat para armazenar os 
valores. Para tal faremos uso da recursividade: 
 
 
Int Fatorial (int n, inf f) 
{ 
 If (n > 0) 
 Factorial (n-1,f*n) 
Else 
 Return f; 
} 
 Se quisermos calcular o fatorial de 5, basta chamar Fatorial (5,1). 
 
 
 
6 
 
A linguagem funcional mais conhecida é LISP, muito usada na área de Inteligência 
Artificial (especificamente para a construção de sistemas especialistas, processamento de 
linguagem natural e representação do conhecimento), devido a facilidade de 
interpretação recursiva. 
A linguagem APL embora tenha comando de atribuição (por atender ao paradigma 
imperativo) também é considerada uma linguagem funcional e pode ser usada para 
vários tipos de aplicações, desde controle de hardware e dispositivos até sistemas de 
informação gerencial. 
 
Paradigma Lógico 
Visão : “ O computador entende a lógica formal (fatos e regras)” 
A mais conhecida linguagem desse paradigma chama-se Prolog e como as demais 
LPs desse grupo estão baseadas em um conjunto de predicados. Um predicado define 
uma relação entre constantes ou variáveis. 
No paradigma lógico, os programas são declarativos: declara-se os resultados e 
não os procedimentos e à partir daí o programa encontra o caminho. 
O paradigma lógico está relacionado à perspectiva da pessoa: ele encara o 
problema de uma perspectiva lógica. Um programa lógico é equivalente à descrição do 
problema expresso de maneira formal, similar à maneira como o ser humano raciocina 
sobre ele : de posse de vários fatos, derivam-se conclusões e novos fatos. Assim quando 
uma questão é formulada, um mecanismo de inferência tenta deduzir novos fatos a partir 
dos existentes para verificar a veracidade da questão. 
A principal característica do paradigma lógico é que a execução dos programas 
corresponde a um processo de dedução automática. 
A linguagem lógica mais conhecida é PROLOG. Tal paradigma é bastante utilizado 
na construção de linguagens de acesso a banco de dados, sistemas especialistas (IA), 
tutores inteligentes e etc.

Outros materiais