Paradigmas de Programação
6 de outubro de 2009Introdução
Um paradigma se define na forma como o programador lida com um determinado problema.
Muitos pensam que as linguagens de programação surgiram em uma escala linear, ou seja, que na primeira geração delas o homem se adaptava às máquinas e, depois de várias outras gerações, as linguagens evoluiram umas das outras e capacitaram as máquinas a fazer as necessidades humanas. Na verdade, as linguagens surgiram em diferentes trajetórias, cada uma seguindo um determinado paradigma. Além disso, não é verdadeira a proposição que diz que uma linguagem qualquer é, sem exceção, a evolução da linguagem anterior (historicamente).
As linguagens existentes hoje foram se adaptando a uma única forma de programação e às linguagens inseridas no mesmo paradigma. Dentre esses paradigmas, vou conceituar quatro, que são considerados os principais: paradigma imperativo, declarativo, funcional e orientado a objetos.
1. Paradigma imperativo
“Primeiro faça isso e depois faça aquilo.”
A frase acima resume o paradigma imperativo, também conhecido como paradigma procedural. O problema é analisado até que se encontre uma solução. Basicamente, é uma sequência de comandos que o computador executará, passo-a-passo, modificando dados e variáveis a fim de chegar ao resultado esperado. Algol, Basic, C e Pascal são algumas das linguagens de programação que seguem esse paradigma.
Exemplo em C do algoritmo de ordenação por inserção:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | int InsertionSort(int *vetor, int tam){ int i, j, elemento; for (i=1; i<tam; i++){ elemento=vetor[i]; j=i-1; while ((j >= 0) && (vetor[j] > elemento)){ vetor[j+1] = vetor[j]; j--; } vetor[j+1] = elemento; } return 0; } |
2. Paradigma declarativo
“Qual é o problema?”
O paradigma declarativo caracteriza-se pelo método preciso de descrever um problema, sem se preocupar com qual algoritmo será utilizado para resolvê-lo. A idéia é criar um algoritmo “universal”, capaz de solucionar qualquer problema. O problema se adapta a esse algoritmo, e não o contrário. É baseado em axiomas (verdades universais) e regras de inferência. Prolog é uma linguagem lógica que ilustra essa definição.
Exemplo na linguagem PROLOG:
1 2 3 4 5 6 | fatorial(0, 1). fatorial(N, F) :- N>0, Nmenos1 is N-1, fatorial(Nmenos1, X), F is X * N. |
3. Paradigma funcional
Subdividir o problema em outras funções e resolver cada uma separadamente, pois os resultados encontrados serão utilizados posteriormente.
Sobre o paradigma funcional, é fácil ilustrar através de um fluxograma. Cada bloco recebe no topo uma entrada de dados e retorna, na base, os dados de saída. A solução geral é dividida em várias funções que, no final, se associam para mostrar o resultado na tela.
Um exemplo na linguagem Haskell:
1 2 3 4 5 | pertence :: Eq t => t -> [t] -> Bool pertence x (c:r) | x == c = True | otherwise = pertence x r pertence x [] = False |
Vários autores definem Programação Funcional dentro de Programação Descritiva, que é uma divisão bastante válida.
4. Paradigma orientado a objetos
Um conjunto de classes faz a interação entre objetos (instâncias) e, com a troca de mensagens entre eles, forma-se o software como um todo.
Praticamente tudo é objeto, cada qual com estrutura e comportamento próprios. Esses objetos são classificados em classes e comunicam entre si. Cada uma dessas representa um determinado fenômeno e seus objetos são organizados hierarquicamente. O conjunto de classes faz a interação entre objetos e a troca de mensagens entre eles forma o software como um todo.
Exemplo de código orientado a objetos em Java:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | public class Caminhao extends Veiculo { private double capacidade; private int numEixos; public Caminhao(double capacidade, int numEixos) { this.capacidade = capacidade; this.numEixos = numEixos; } public double calcularIPVA() { return 0.05 * this.getValor(); } } |
Esse paradigma vem ganhando cada vez mais popularidade. Isso se dá devido ao grande número de vantagens em trabalhar com orientação a objeto, como a manutenção e flexibilidade do código quando se trabalha em sistemas de grande porte e com uma maior equipe de programadores.
Referência
BROOKSHEAR, J. Glenn. Ciência da Computação: uma visão abrangente . 5. ed
Descer
Ir para o topo
Sou estudante do curso de análise e desenvolvimento de Sistemas do Sistema de Ensino a distância, moro em Belém do Pará, gostei muito da forma simples, clara e objetiva que você abordou e explicou o assunto.
Espero no futuro poder contar com explicações, definições e conceitos sobre outros assuntos relativos a Linguagem de Programação de Computadores.
Muito Obrigado e fique com Deus.
JÂNIO MARQUES
BELÉM-PA
Sou Estudante do Curso de Sistemas de Informação, gostei muito das definições.
Espero que sempre atualizem essa paginas para posteriores esclarecimentos.
SDS
Orientação a objetos: Conjuto de bibliotecas as famosas dlls, que se relacionam entri si, por referência, habilitando ou não suas classes, conforme a assinatura dessas classes.
bom galera da info sou estudante e vou me especializar em programaçao e estava com umas duvidas dessa materia e voce me ajudou essas frases ai resumem tudo e e facil de aprender para passar no periodo valeu
ABRAÇO PRA GALERA DA ANALISE DE SISTEMAS
FAÇO NA CATOLICA DO TOCANTINS
Boa tarde!
Sou estudando do curso de Sistemas de Informação e estou com o seguinte trabalho pra ser entregue:
Preciso de um mesmo algoritmo escreto em tres paradigmas diferentes. Pode ser um algoritmo bem simples tipo um fatorial com tres linhas de instrução, o importante é esse MESMO ALGORITMO estar escrito em tres paradigmas diferentes. Ah! podem estar em linguagem diferentes desde que eu consiga explicar no algoritmo o conceito do seu paradigma. Alguem pode me ajudar? sergiothu@hotmail.com (msn). Desde de já agradeço por toda e qualquer ajuda.
É isso aí! Gosto de gente que vai direto ao ponto! Um dia serei eu a explicar o que é paradigmas de programação.
Sou estudade da universidade pedagogica e presidentente da associacao de estudantes delegacao de manica,cusro de matematica e informatica, gostei da maneira como voce abordou resumidamente este grande tema,foi trabalho do segundo grupo da minha turma e k foi facil trabalhar com este tema devido sua abordagem . Valeu meu irmao.