Buscar

Métodos de Programação e Evolução dos Paradigmas

Prévia do material em texto

Métodos de programação
APRESENTAÇÃO
Conhecer e entender os métodos e tipos de programação é um desafio instigante e, de certa 
forma, um compromisso de todo profissional de desenvolvimento de software. Ao compreender 
os conceitos que levam ao desenvolvimento de diferentes paradigmas, é possível apresentar 
maior discernimento quanto à adoção de uma linguagem de programação que atenda a uma 
determinada necessidade.
Nesta Unidade de Aprendizagem, você vai conhecer a evolução 
dos principais tipos de métodos de programação e o seu histórico 
de desenvolvimento.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Definir métodos de programação.•
Sintetizar o histórico dos métodos de programação.•
Identificar os tipos de métodos de programação.•
DESAFIO
Os paradigmas de programação são diferentes classificações atribuídas à estruturação de 
linguagens de programação. Ao longo do desenvolvimento da computação, surgiram vários 
paradigmas e, consequentemente, novas linguagens de programação que empregavam seus 
conceitos na forma de se estruturar, o que também impactou os profissionais da área, uma vez 
que é comum um profissional mais novo achar estranho trabalhar com uma linguagem 
embasada em um paradigma de décadas atrás. 
Imagine que você trabalha em uma equipe de desenvolvimento de softwares em uma 
organização que já trabalha há muito tempo com softwares desenvolvidos internamente, com 
linguagens de programação da década de 90, como Visual Basic 5.0 e Delphi 6.0.
Na sua equipe há um programador mais novo que começou a trabalhar com linguagens 
orientadas a objetos, principalmente com Java, e que encontrou uma dificuldade na adaptação ao 
paradigma de linguagens estruturadas. 
Você, como programador mais experiente, deve explicar ao programador:
a) A diferença entre os dois paradigmas.
b) O porquê de, ao contrário do Java, não ser possível desenvolver com as linguagens de 
paradigma estruturado Visual Basic 5.0 e Delphi 6.0. 
INFOGRÁFICO
Aprender sobre a evolução dos paradigmas de programação e entender o caminho percorrido até 
os recursos atuais de programação é, além de instigante, necessário para o profissional de 
programação. 
A seguir, no Infográfico, veja a evolução das linguagens e dos paradigmas de programação e os 
desafios já transpostos ao longo dos anos pelos projetistas, engenheiros de computação 
e comunidade de desenvolvedores.
CONTEÚDO DO LIVRO
Os métodos de programação fazem parte da história da programação, assim como as linguagens 
e tecnologias relacionam-se à arte de programação. Esses paradigmas contam muito da evolução 
e de como a ciência ao longo do tempo desenvolveu meios mais próximos das necessidades de 
programação propostas à comunidade.
Leia o capítulo Métodos de programação, da obra Paradigmas de programação, e conheça um 
pouco mais sobre a evolução dos paradigmas de programação, veja os tipos existentes e entenda 
seus conceitos e sua relação com as linguagens que surgiram ao longo do tempo. 
Boa leitura. 
PARADIGMAS DE 
PROGRAMAÇÃO
Fabricio Machado da Silva
Métodos de programação
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Explicar o que são métodos de programação.
 � Sintetizar o histórico dos métodos de programação.
 � Identificar os tipos de métodos de programação.
Introdução
Em geral, quando se trata do tema paradigmas de programação, não 
se atribui a devida importância para o assunto. Todo o profissional de 
programação de computadores deveria se atentar aos diferentes para-
digmas, pois eles são a base para as diferentes linguagens que existem 
e existiram ao longo da evolução da programação.
É comum pensar, como estudantes ou profissionais, quais os be-
nefícios de entender os conceitos de linguagens de programação em 
uma área com tantos temas muito pertinentes, mas saber como uma 
linguagem funciona para interpretar as instruções e a evolução de lin-
guagens e conceitos ao longo do tempo, sem dúvidas, traz vantagens 
na construção de softwares.
Neste capítulo, você aprenderá o que são os métodos de programa-
ção, quais são os diferentes tipos e como ocorreu a sua evolução.
Paradigmas de programação
Como seres humanos, sentimos necessidade de expressar nossos pensamentos, 
seja de forma verbal, utilizando o nosso poder de comunicação, ou escrita, 
escrevendo textualmente o que estamos pensando. A linguagem de progra-
mação, assim como a nossa linguagem natural, permite nossa comunicação 
com as máquinas. Dessa maneira, podemos instruir, por meio de linhas de 
comandos, as máquinas a executarem determinada instrução.
No entanto, para Tucker e Noonan (2009), as linguagens de programação 
se diferem das linguagens naturais de duas maneiras importantes. Apesar 
de permitirem a comunicação entre humanos e máquinas, elas possuem um 
domínio de expressão mais reduzidos do que as linguagens naturais, pois 
seu objetivo é permitir a compreensão de ideias computacionais, ou seja, se 
propõem a atender diferentes requisitos das linguagens naturais.
Toda a linguagem de programação está construída sobre um paradigma. 
Mas, afinal, o que é um paradigma? Um paradigma representa um padrão de 
pensamento que guia um conjunto de atividades relacionadas, trata-se de um 
padrão que define um modelo para a resolução de problemas e regra, basica-
mente, toda e qualquer linguagem de programação existente. Os paradigmas 
de programação estão classificados em quatro diferentes tipos, que evoluíram 
ao longo das últimas décadas:
 � programação imperativa;
 � programação funcional;
 � programação lógica;
 � programação orientada a objetos.
A Figura 1 ilustra de forma hierárquica os diferentes paradigmas de pro-
gramação atuais e sua derivação dos paradigmas imperativo e declarativo.
Figura 1. Paradigmas de programação.
Fonte: Adaptada de Simão (2018).
Paradigma de programação
Paradigma imperativo Paradigma declarativo
Paradigma
procedimental
Paradigma
funcional
Programação
baseada em
regras
Paradigma
lógico
Paradigma
orientado a
objetos
Programação
orientada a
eventos
Métodos de programação2
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Algumas linguagens de programação foram projetadas para suportar diferentes 
paradigmas. Um exemplo disso, é o da linguagem de programação C++, que foi 
projetada para ser uma linguagem imperativa e orientada a objetos.
No início da programação, o único meio de conseguir programar um 
computador era inserindo um código binário de programas para a sua me-
mória principal, o que representava uma grande probabilidade de erros e uma 
manutenção praticamente impossível. Nessa época, escrevia-se programas 
utilizando linguagens de baixo nível, porém, com a popularidade dos computa-
dores, as demandas por softwares se tornaram enormes. Então, as linguagens 
necessitaram evoluir para um paradigma de nível mais alto, sendo a evolução 
dos métodos e linguagens uma consequência dessa demanda.
Na próxima seção, você verá um pouco da evolução dos paradigmas de 
programação ao longo das décadas e o surgimento de diferentes linguagens 
que possibilitaram o desenvolvimento de softwares com melhor compreensão 
e manutenção do que os existentes no início da programação.
Histórico dos métodos de programação
No início da programação de computadores, as primeiras linguagens disponí-
veis eram as de máquinas e as próprias linguagens de construção (Assembly) 
dos primeiros computadores. A partir delas, muitas linguagens de programa-
ção e dialetos foram desenvolvidos, algumas obtiveram sucesso e inclusive 
influência sobre outras linguagens e, naturalmente, outras tiveram um tempo 
de vida limitado Sebesta (2018).
A programação de computadores não tem uma data correta de início. Na 
década de 1930, surgiram os primeiros computadores elétricos; já em 1948, 
Konrad Zuse publicousua criação, a linguagem de programação Plankalkül. 
Nessa época, ela ainda não tinha muita utilidade, então, foi esquecida. Con-
tudo, antes da programação passar para o computador, eram usados cartões 
de papelão, que eram perfurados, criando códigos.
3Métodos de programação
Os paradigmas da programação foram criados, em sua maioria, na década 
de 1970. Nessa época surgiram as seguintes linguagens:
 � Simula — inventada nos anos de 1960 por Nygaard e Dahl, foi a primeira 
linguagem a suportar o conceito de classes;
 � C — foi uma das primeiras linguagens de programação de sistemas, 
criado por Dennis Ritchie e Ken Thompson, tem uma das maiores 
influências no mundo atual;
 � Prolog — projetada em 1972, foi a primeira linguagem de programação 
com paradigma lógico;
 � Pascal — foi muito importante, mas atualmente está quase sem uso;
 � C++ — criada para ser compatível com C, foi muito importante, pois 
é mais simples e dinâmica;
 � Perl — é uma boa linguagem para trabalhar em níveis de sobrecarga 
grandes.
Nos anos de 1990, a internet surgiu como um furacão, mudando totalmente 
o rumo da programação. As linguagens Java e JavaScript foram criadas nessa 
época, ambas relacionadas à internet. Na mesma época, surgiram a Visual 
Basic e o Object Pascal.
Java é uma linguagem relativamente simples, orientada a objetos, criada com 
o intuito de revolucionar as linguagens de programação. Já PHP (acrônimo para 
“pré-processador de hipertexto”) é muito importante para o desenvolvimento 
de aplicativos para Web, é a linguagem que, cada vez mais, toma conta dos 
websites (MILETTO; BERTAGNOLLI, 2014).
Na Figura 2, você verá um breve resumo histórico da evolução e da in-
fluência de algumas linguagens de programação sobre outras. Apesar desse 
histórico não ser completo, é possível perceber alguns eventos e tendências 
mais influentes.
Métodos de programação4
Figura 2. Resumo da história das linguagens de programação.
Fonte: Tucker e Noonan (2009, p. 7).
A década de 1950 marcou a chegada das linguagens de alto nível. Essas 
linguagens se diferenciavam das linguagens de máquina por não estarem dire-
tamente dependentes de uma arquitetura específica. As primeiras linguagens 
que chegaram com essa característica foram Fortran, Cobol, Algol e Lisp.
Fortran e Cobol foram linguagens que alcançaram um grande sucesso e 
possuem, até hoje, um grande legado de sistemas escritos que atuam inclusive 
em grandes organizações, como segmento financeiro. Já Lisp foi caindo em 
desuso e Algol praticamente sumiu (MILETTO; BERTAGNOLLI, 2014).
5Métodos de programação
Certamente, o maior motivador para o desenvolvimento das linguagens 
e métodos de programação nas últimas décadas tem sido o rápido desenvol-
vimento dos recursos computacionais e o surgimento de novas e emergentes 
tecnologias, entre as quais podemos destacar as seguintes áreas: 
 � inteligência artificial;
 � World Wide Web ;
 � sistemas e redes;
 � dispositivos móveis.
Ao contrário do que costumamos imaginar, a programação funcional não é o oposto 
de programação orientada a objetos. São tipos diferentes de programação, mas 
podem, inclusive, ser usadas em uma mesma aplicação, principalmente em linguagens 
multiparadigmas, como o JavaScript. 
O projeto de uma nova linguagem de programação é algo bem complexo, 
o projetista deve se preocupar com inúmeros desafios e adotar soluções es-
pecíficas, que se proponham a atender esses desafios. Os principais desafios 
envolvidos no projeto de uma nova linguagem de programação são:
 � arquitetura;
 � requisitos técnicos;
 � padrões.
Entre os desafios propostos aos projetistas, vamos destacar os padrões. 
Sempre que uma linguagem de programação tem um amplo uso entre os 
desenvolvedores, é natural que novo processo de padronização surja, ou 
seja, a comunidade define um padrão de construção independentemente da 
máquina da linguagem e que todos os seus programadores devem aderir. Isso 
é importante porque o método de padronização, entre outras vantagens, busca 
a estabilização em diferentes plataformas, possibilitando a portabilidade dos 
programas construídos a partir dela.
Métodos de programação6
Se observarmos essa evolução, é possível perceber que algumas lingua-
gens que obtiveram sucesso foram projetadas por comunidades ou grupos de 
desenvolvedores, exigindo uma certa padronização quanto aos programas 
construídos.
Tipos de programação
Os tipos de programação estão diretamente relacionados ao conceito do para-
digma no qual a linguagem foi concebida, por exemplo é impossível utilizar 
uma linguagem linear como Ada ou Assembly e tentarmos construir um 
programa com blocos de funções. Isso acontece porque o paradigma desse 
tipo de linguagem não provê recursos que o paradigma procedural possibilita, 
permitindo o reuso de código por meio de funções (blocos que executam uma 
determinada funcionalidade).
Portanto, é importante entender e conhecer bem os tipos de paradigmas de 
programação e seus conceitos, para que ao utilizar uma linguagem se saiba 
como, de acordo com o tipo de paradigma em que ela foi concebida, devem 
ser estruturados os códigos. A seguir você verá os tipos de paradigmas que 
surgiram ao longo da evolução da programação.
Paradigma imperativo
Após a geração de programação linear com linguagens de máquina, houve 
um grande avanço com o advento das linguagens procedurais. Esse tipo de 
paradigma foi o primeiro que apresentou as linguagens de alto nível, que 
permitiam a utilização de um vocabulário mais próximo ao natural para 
construção de programas. Esse paradigma recebe o nome de imperativo pela 
forma como as instruções nos códigos são repassadas para o compilador:
 � Faça isso.
 � Depois faça aquilo.
7Métodos de programação
Halissa Franco
Halissa Franco
Halissa Franco
É uma forma imperativa de dar ordens para que a máquina execute as 
instruções dadas, e ela executará cada uma, passo a passo, com o propósito 
de chegar no resultado esperado. Uma linguagem imperativa suporta algumas 
características comuns:
 � atribuições, declarações e expressões;
 � estruturas de controle;
 � abstração procedural.
Basicamente, os códigos são construídos obedecendo a estrutura de de-
clarações e as instruções. A linguagem mais popular desse paradigma é a 
linguagem C (MILETTO; BERTAGNOLLI, 2014).
Paradigma declarativo
A principal característica das linguagens com programação declarativa é o 
foco não estar em como uma execução vai ocorrer, mas sim no resultado a 
ser atingido. Um dos melhores exemplos para entender esse paradigma são 
as instruções structured query language (SQL), pois nela são passados para 
o banco de dados apenas o que se pretende, sem a preocupação sobre como 
o banco de dados vai executar a instrução, o foco é somente o retorno ou 
resultado da consulta.
Atualmente, uma das principais linguagens de programação utilizada, o 
framework JavaScript Angular, é um exemplo de implementação desse para-
digma, que, aliás, é muito utilizado em razão do advento dos sistemas Web, 
no qual o código submete uma execução e espera o retorno.
Paradigma estruturado
No sentido mais restrito, o conceito de programação estruturada se refere à 
forma do programa e do processo de codificação. É um conjunto de convenções 
que o programador pode seguir para produzir o código estruturado, e suas 
regras de codificação impõem limitações sobre o uso das estruturas básicas 
de controle, estruturas de composição modular e documentação.
Métodos de programação8
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
As características do paradigma estruturado são: 
 � programação sem GOTO (eliminação completa ou parcial do comando 
GOTO, que significa “ir para”);
 � programação com apenas três estruturas básicas de controle — sequên-
cia, seleção e iteração;� forma de um programa estruturado;
 � aplicação de convenções de codificação estruturada a uma linguagem 
de programação específica.
Algumas linguagens com esse paradigma são Pascal e C.
Paradigma orientado a objetos
O paradigma de orientação a objetos surge como o advento da reutilização de 
código e a facilidade na manutenção. No paradigma de orientação a objetos, 
o princípio é a construção de código, implementando as entidades do mundo 
real por meio do conceito de classes que possuem relação entre si. 
Como o desempenho das aplicações não é uma das grandes preocupações 
na maioria delas (devido ao poder de processamento dos computadores atuais), 
a programação orientada a objetos se tornou muito difundida. A programação 
orientada a objetos está embasada em quatro pilares.
 � Abstração: como estamos lidando com objetos do mundo real, por exem-
plo, carro, casa, pessoa etc.), precisamos imaginar como esses objetos 
vão se integrar dentro do nosso sistema e modelar seu comportamento 
abstraindo comportamento e características específicas de cada um.
 � Encapsulamento: não importa para um código que invoca um método 
saber como outro vai ser executado, trata-se de uma característica que 
traz principalmente segurança ao código.
 � Herança: assim como no mundo real, a herança em programação orientada 
a objetos seria a capacidade de uma classe herdar de outra métodos e atri-
butos, sendo, portanto, uma característica relacionada ao reuso de código.
 � Polimorfismo: existem animais capazes de se adaptar a algumas ne-
cessidades do mundo real e se comportar de forma diferenciada em 
alguns casos, essa particularidade também é possível no paradigma 
de orientação a objetos. Mesmo herdando o comportamento de outra 
classe, a classe herdeira pode modificar o seu comportamento em de-
terminadas situações.
9Métodos de programação
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
1. Encapsulamento:
 Colocar algo dentro de uma capsula, para deixar visível apenas o necessário para que o user/class funcione corretamente.
A capsula é o objeto, que é agrupador dos membros do objeto [atributos, métodos]
Modificadores de acesso:
• Public: Visível em todo o sistema
• Protected: Visível em todas as classes do mesmo pacote e é transmitidos por herança.
• Package(default): Visível em todas as classes do mesmo pacote
•Private: Visível somente na class
Halissa Franco
2. Herança: 
Quando se tem relação de classes que compõe outro, você tem uma composição. Diferente da composição na Herança uma classe descende de outras herdando, portanto, as classes filhas o comportamento e características das classes mães.
Exemplo:
Dada uma classe mãe Animal todas as suas classes filhas (ex: cão, lobo urso) herdarão da classe mãe:
Atributos:
tamanho, peso, idade
Métodos:
fazer barulho, comer, dormir e vaguear.
Halissa Franco
3. Polimorfismo
 
a. Estático (sobrecarga): Mesmo método escrito com parâmetros diferentes, múltiplas formas. É estático pois está escrito de forma estática no código, não muda dinamicamente. Várias funções (mesmo nome) escritas de formas diferentes.
b. Dinâmico: Precisa ter herança. A partir do tipo mais genérico, você consegue receber objetos instanciados a partir dos tipos mais específicos, então um tipo mais genérico consegue se comportar igual a todos os outros tipos mais específicos e consegue ter também múltiplas formas
Halissa Franco
4. Abstração:
 Pegar o conceito do mundo real e simplificar para o software.
Por ser algo muito abstrato, a programação orientada a objetos é difícil de aprender. 
Vários conceitos são artificiais e isso torna o aprendizado bastante complicado. O 
resultado que se vê é muito código não orientado ao objeto, mas escrito em linguagens 
orientadas a objetos.
Para atender a diversidade e complexidade do universo da programação 
é que os paradigmas são divididos. É importante salientar que não existe um 
paradigma vinculado à determinada linguagem de programação, o paradigma 
tem que ser independente de linguagem. Por exemplo, a orientação a objetos 
é um paradigma criado para a solução de problemas de desenvolvedores e 
não tem uma ligação de necessidade com nenhuma linguagem, quem aborda 
esses paradigmas são as linguagens de programação. Você pode observar 
que várias linguagens de programação abordam vários tipos de paradigma 
de programação.
A escolha do melhor paradigma é necessariamente relacionada ao tipo de 
problema que precisa ser solucionado.
Veja no link a seguir um site sobre os pilares e conceitos do paradigma de programação 
orientada a objetos.
https://qrgo.page.link/JBCZA
MILETTO, E. M.; BERTAGNOLLI, S. C. Desenvolvimento de software II: introdução ao de-
senvolvimento web com HTML, CSS, JavaScript e PHP. Porto Alegre: Bookman, 2014. 
276 p. (Série Tekne; Eixo Informação e Comunicação).
SEBESTA, R. W. Conceitos de linguagem de programação. 11. ed. Porto Alegre: Bookman, 
2018. 758 p.
Métodos de programação10
Halissa Franco
Halissa Franco
SIMÃO, J. M. Orientação a objetos: programação em C++. Curitiba: Departamento Acadê-
mico de Eletrotécnica, Universidade Federal Tecnológica do Paraná, 2018. 26 p. (Notas 
de aula). Disponível em: http://www.dainf.ct.utfpr.edu.br/~jeansimao/Fundamentos1/
LinguagemC++/Fundamentos1-2-SlidesC++1-A-2018-08-01.pdf. Acesso em: 25 ago. 2019.
TUCKER, A. B.; NOONAN, R. E Linguagens de programação: princípios e paradigmas. 
2. ed. Porto Alegre: AMGH, 2009. 630 p.
Leituras recomendadas
EDELWEISS, N.; LIVI, M. A. C. Algoritmos e programação: com exemplos em Pascal e C. 
Porto Alegre: Bookman, 2014. 476 p. (Série Livros Didáticos Informática UFRGS).
LEDUR, C. L. Desenvolvimento de sistemas com C#. Porto Alegre: SAGAH, 2018. 268 p.
MACHADO, R. P.; FRANCO, M. H. I.; BERTAGNOLLI, S. C. Desenvolvimento de software III: 
programação de sistemas web orientada a objetos em Java. Porto Alegre: Bookman, 
2016. 220 p. (Série Tekne; Eixo Informação e Comunicação). 
NEGRESIOLO, L. Tudo o que você precisa (e deveria) saber sobre Programação Orien-
tada a Objetos. Gizmodo Brasil, São Paulo, 22 jan. 2019. Disponível em: https://gizmodo.
uol.com.br/tudo-sobre-programacao-orientada-a-objetos/. Acesso em: 25 ago. 2019.
OKUYAMA, F. Y.; MILETTO, E. M.; NICOLAO, M. Desenvolvimento de software I: conceitos bá-
sicos. Porto Alegre: Bookman, 2014. 236 p. (Série Tekne; Eixo Informação e Comunicação).
PINHEIRO, F. A. C. Elementos de programação em C: em conformidade com o padrão 
ISO / IEC 9899. Porto Alegre: Bookman, 2012. 548 p.
11Métodos de programação
DICA DO PROFESSOR
Para desenvolver uma solução é necessário que se conheça tanto o problema quanto os tipos de 
paradigmas de programação existentes. Apenas assim, pode ser entregue um produto que atenda 
aos objetivos determinados. 
A seguir, na Dica do Professor, saiba um pouco mais sobre a importância dos paradigmas de 
programação.
Conteúdo interativo disponível na plataforma de ensino!
 
EXERCÍCIOS
1) É natural que estudantes da área de computação questionem o porque de se estudar 
os conceitos e a história das linguagens de programação, no entanto, adquirir esse 
conhecimento proporciona ao aluno e futuro profissional diversas vantagens. 
Assinale a alternativa que expresse algumas dessas vantagens:
A) Embasamento para escolha de linguagens adequadas e melhor entendimento da 
importância da implementação.
B) Facilidade de comunicação com outros desenvolvedores e reúso de componentes.
C) Preparação para certificações e reúso de componentes.
D) Aumento da capacidade de raciocínio lógico e conhecimento geral.
E) Delegação de responsabilidades e reaproveitamento de códigos.
2) 
Computadores têm sidoutilizados para uma infinidade de áreas que, por sua vez, 
resultam no desenvolvimento de novos conceitos e linguagens que demandam novos 
paradigmas e métodos de programação. Assinale a alternativa correta sobre algumas 
das áreas que impulsionaram esse desenvolvimento:
A) Indústria Automobilística e Comércio Eletrônico.
B) Medicina e Inteligência Artificial.
C) Inteligência Artificial e World Wide Web.
D) Dispositivos Móveis e Governo.
E) Inteligência Artificial e Governo.
3) As linguagens de programação podem apresentar características e comportamentos 
definidos de acordo com o paradigma que a construiu. No entanto, uma linguagem 
pode apresentar características provenientes de diferentes paradigmas. Dessa forma, 
assinale a alternativa verdadeira:
A) Os paradigmas não estão vinculados à linguagem de programação.
B) As linguagens de programação são as responsáveis na definição de um paradigma.
C) O paradigma de orientação a objetos foi o precursor do conceito de reusabilidade de 
código.
D) No paradigma estrutural, não importa o COMO e sim O QUE se pretende alcançar com o 
código do programa.
E) Para escolher o melhor paradigma, deve-se levar em consideração a tecnologia e não o 
contexto do problema que se deseja resolver.
4) O paradigma de programação imperativo tem como principal característica a 
declaração comandos, que descreve uma sequência de instruções para alcançar um 
objetivo. Sobre os conceitos do paradigma imperativo, assinale a alternativa correta:
A) A programação imperativa não possibilita trabalhar com reúso de código.
B) A programação imperativa é um paradigma ultrapassado que não tem mais uso.
C) A programação imperativa não foca na resolução do problema, nem nas instruções.
D) A programação imperativa apresenta linguagens amplamente utilizadas, como a linguagem 
C, por exemplo.
E) A programação imperativa tem o foco em entender os comandos sem seguir uma lógica.
5) O paradigma de programação estruturada surgiu com a ideia da criação de 
estruturas e blocos de execução de rotinas e foi amplamente utilizado, dando ênfase 
para o surgimento do paradigma orientado a objeto. Assinale a alternativa correta 
sobre o paradigma de programação estruturada:
A) O paradigma estruturado foi substituído pelo orientado a objetos. 
B) O paradigma estruturado não permite a reutilização de código. 
C) O paradigma estruturado permite recursos como herança e polimorfismo.
D) O paradigma estruturado trabalha com conceito de classes e funções.
E) O paradigma estruturado permite a organização do código em estruturas funcionais.
NA PRÁTICA
Ao iniciar o aprendizado em uma nova linguagem de programação, é importante conhecer, 
além dos recursos e e da sintaxe, a sua arquitetura e suas vantagens ou desvantagens. Neste 
contexto, conhecer o paradigma em que a linguagem foi construída torna-se um atalho para a 
tarefa.
A seguir, no Na Prática, veja as características e vantagens da utilização do paradigma orientado 
a objetos.
SAIBA +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do 
professor:
Informações sobre paradigmas de programação
No vídeo a seguir, você vai encontrar de forma resumida e didática algumas informações 
relacionadas aos paradigmas de programação.
Conteúdo interativo disponível na plataforma de ensino!
Definições de programação imperativa, declarativa e reativa
Neste artigo, você vai encontrar uma definição sucinta de programação imperativa, programação 
declarativa e de programação reativa, um paradigma relativamente novo.
Conteúdo interativo disponível na plataforma de ensino!
História da programação
Neste artigo, você vai conhecer um pouco da história da programação, passando por décadas de 
evolução, diferentes paradigmas e linguagens.
Conteúdo interativo disponível na plataforma de ensino!
Programação declarativa
APRESENTAÇÃO
A programação declarativa tem como principal característica a possibilidade de programar de 
acordo com o objetivo a ser atingido. Assim, a programação acontece a partir do resultado que 
se deseja obter com o programa e não com foco no que será executado, para atingir o resultado 
esperado. É um tipo de programação em que o programa deve declarar os objetivos da sua 
execução.
Nesta Unidade de Aprendizagem, você vair definir conceitualmente 
o que é programação declarativa, identificar algumas linguagens 
de programação declarativa e verificar algumas aplicações 
desse paradigma.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Definir programação declarativa.•
Identificar as linguagens de programação declarativa.•
Aplicar a programação declarativa.•
DESAFIO
A programação declarativa é um paradigma de programação que possibilita desenvolvimento 
mais objetivo, pois o desenvolvedor precisa especificar apenas o que deseja obter de resultado 
com o programa. Dentro desse contexto, aplicações clientes servidor, como, por exemplo, 
WebService, têm ampla adesão.
Você, como desenvolvedor da equipe de desenvolvimento da companhia, tem como desafio um 
novo projeto de integração entre dois sistemas.
O seu sistema deve se integrar com um WebService responsável por fazer o cálculo e a geração 
da folha de pagamento. Sendo assim, o sistema deverá enviar um arquivo XML com os dados 
dos funcionários, como ponto e férias, e receber outro aquivo XML de retorno com os dados da 
folha de pagamento gerada.
Diante desse cenário, como a programação declarativa pode atender essa necessidade? Justifique 
a adequação realizada para o escopo do projeto.
INFOGRÁFICO
A programação declarativa surgiu como uma forma de construção de código focado em 
especificar o que você deseja alcançar e não em como. Oriunda de estudos matemáticos de 
alguns pesquisadores e com o objetivo de atender demandas mais específicas, como a 
Inteligência Artificial, ela vem sendo utilizada desde então. E, ao longo do tempo, algumas 
linguagens surgiram como expoentes nesse paradigma.
Confira, no Infográfico, um pouco mais sobre os conceitos desse paradigma e algumas 
linguagens que se aplicam aos tipos funcional e lógico.
Halissa Franco
Halissa Franco
Halissa Franco
CONTEÚDO DO LIVRO
As linguagens de programação que seguem o paradigma declarativo têm como característica a 
construção dos programas orientados para a meta que devem alcançar e não como executarão o 
passo a passo para alcançarem essas metas. Por isso, são linguagens que se tornam mais fáceis 
de aprender, além de serem amplamente utilizadas no mercado, como SQL, por exemplo.
No capítulo Programação declarativa, da obra Paradigmas de Programação, você 
vai compreender o significado do paradigma de programação declarativa, identificando 
as linguagens de programação mais utilizadas e suas respectivas aplicações.
Boa leitura.
PARADIGMAS DE 
PROGRAMAÇÃO 
Fabricio Machado da Silva 
Programação declarativa
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Definir programação declarativa.
 � Identificar as linguagens de programação declarativa.
 � Aplicar a programação declarativa.
Introdução
Na década de 1970, a programação declarativa surgiu como um novo 
paradigma para a área da programação, diferente dos já existentes, pois 
exigia que o programador informasse quais os objetivos pretendidos 
com a computação. Essa ação era contrária a apenas escrever algoritmos 
detalhados descrevendo como os objetivos poderiam ser alcançados. 
Dessa forma, a programação declarativa se constituiu como um para-
digma em que as linguagens de programação mantêm a característica de 
aprendizagem mais fácil do que a linguagem de programação imperativa. 
Neste capítulo, você entenderá melhor as características da progra-
mação declarativa e identificará algumas linguagens declarativas e sua 
aplicação.
Programação declarativa
A linguagem de programação declarativa surgiu como um novoparadigma 
de construção de programas, diferente da linguagem de programação impe-
rativa, na qual a construção de um programa ocorre por meio da construção 
de algoritmos complexos que descrevem passo a passo como um determinado 
resultado é alcançado, nesse paradigma, o foco está em descrever quais os 
resultados devem ser alcançados. Segundo SEBESTA (2018), a programação 
declarativa requer que o programador foque nos objetivos da computação, e 
não em como esses objetivos serão alcançados.
Halissa Franco
Halissa Franco
Halissa Franco
As aplicações construídas seguindo o paradigma da linguagem declarativa 
são classificadas em dois domínios principais, conforme descrito a seguir.
 � Aplicações de inteligência artificial: no campo da inteligência artificial é 
fácil imaginar porque esse paradigma se adapta bem, pois são aplicações 
que se preocupam com os objetivos, utilizando regras e lógicas. Nesse 
domínio a linguagem Prolog tem sido um destaque.
 � Aplicações de acesso de informações em banco de dados: os maiores 
usos de linguagens de programação declarativa estão concentrados no 
domínio de consultas e manipulação de dados em sistemas de gestão 
de base de dados (SGBD), a structured query language (SQL), por 
exemplo, se tornou o expoente desse uso.
Na programação declarativa, podemos dizer que um programa é um con-
junto de declarações, por exemplo, verdade, falso, satisfaz restrição etc. O 
conceito fundamental e o foco devem estar sempre na declaração, mas a sequ-
ência não importa. Além disso, é comum dizer que a programação declarativa 
se distingue da programação imperativa no sentido de apenas especificar o 
que, ao contrário de especificar o como.
As linguagens de programação declarativas ainda podem ser subdividas em 
funcional e lógica. O Prolog se destaca como um exemplo de linguagem decla-
rativa e lógica no paradigma de linguagem declarativa e funcional. Linguagens 
de cálculos, como o LISP é um exemplo disso (TUCKER; NOONAN, 2009).
A Figura 1 ilustra os diferentes tipos de programação declarativa.
Figura 1. Diferentes tipos de programação declarativa.
Fonte: Adaptada de Botelho (2015).
Programação declarativa2
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Ainda no escopo de programação lógica, que é um dos tipos de programa-
ção declarativa, um programa é um conjunto de afirmações sobre as várias 
entidades do domínio da aplicação. Já na programação funcional pura, um 
programa é constituído por apenas um conjunto de definições de funções, e 
cada função é definida sempre em razão de outras funções.
Linguagens de programação declarativa
A primeira linguagem de programação funcional a surgir foi inventada para 
fornecer recursos para o processamento de listas, uma necessidade impulsionada 
pelo surgimento das primeiras aplicações na área de inteligência artificial. A 
programação lógica é caracterizada pelo uso de uma notação lógica formal para 
comunicar processos computacionais para um computador. O cálculo de predi-
cados é, atualmente, a notação utilizada nas linguagens de programação lógica.
As linguagens de programação funcionais e lógicas são tipos de linguagens 
de programação. A seguir vamos detalhar mais as linguagens funcionais LISP 
e lógica Prolog, que são as principais nos seus respectivos tipos.
Linguagem de programação LISP
O interesse na área de inteligência artificial no início dos anos de 1950 fomentou 
a necessidade do processamento de listas, provindas a partir da linguística, da 
psicologia e da matemática (SEBESTA, 2018). Cada área tinha seu interesse 
específico, os linguistas estavam interessados no processamento da linguagem 
natural, os psicólogos em modelar o comportamento e os matemáticos em 
mapear processos de raciocínio mental. Todos chegaram a uma conclusão em 
comum: era necessário criar uma forma de permitir o processamento dados 
simbólicos em listas encadeadas pelo computador. Na época, a maior lista da 
computação era constituída por dados numéricos armazenados em vetores.
A linguagem de programação LISP surgiu dos estudos realizados por John 
McCarthy no Massachusetts Institute of Technology (MIT). Sua primeira 
versão foi chamada de LIST puro, por ser uma linguagem puramente funcional. 
Essa versão do LIPS trabalhava com apenas três tipos de dados:
 � Átomos, que são símbolos com a forma de identificadores ou literais 
numéricos.
3Programação declarativa
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
 � Listas, que são especificadas com a delimitação de seus elementos 
com parênteses, nos quais os elementos são restritos a átomos, tendo 
o seguinte formato: (A B C D).
 � Estruturas de listas aninhadas, também especificadas com parênteses, 
por exemplo, (A (B C) D (E (F G))), que é composta de quatro elemen-
tos. O primeiro elemento é o átomo A; o segundo, é a sub lista (B C); 
o terceiro, é o átomo D; e o quarto, é a sub lista (E (F G)), que tem como 
seu segundo elemento a sub lista (F G).
Como LISP foi projetada no conceito de programação funcional, todas as 
computações são realizadas por meio da aplicação de função a argumentos. A 
sintaxe do LISP é, portanto, muito diferente de linguagens imperativas, como 
C++ ou Java. Por exemplo, em Java, a sintaxe é uma mistura de inglês e álgebra, 
ao passo que em LISP, a sintaxe é um modelo simplista, o código e os dados 
dos programas têm exatamente a mesma forma: listas dentro de parênteses. 
Considere mais uma vez a lista (A B C D). Quando interpretada como dados, 
ela é uma lista de quatro elementos, mas se vista como código, é a aplicação 
da função chamada A para os três parâmetros B, C e D.
A Figura 2 demonstra a representação interna de duas listas em LISP.
Figura 2. Representação interna de duas listas em LISP.
Fonte: Adaptada de Sebesta (2018).
Programação declarativa4
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Veja a seguinte função de exemplo em LISP. O código a seguir define 
uma função de predicado em LISP que recebe duas listas como argumentos 
e retorna True, se as duas listas forem iguais, ou NIL (false) caso contrário. 
(DEFUN equal _ lists (lis1 lis2)
(COND
 ((ATOM lis1) (EQ lis1 lis2))
 ((ATOM lis2) NIL)
 ((equal _ lists (CAR lis1) (CAR lis2))
 (equal _ lists (CDR lis1) (CDR lis2)))
 (T NIL)
 )
)
Linguagem de programação Prolog
O Prolog é baseado em cláusulas de Horn (um subconjunto da lógica de primeira 
ordem), e é provavelmente a linguagem mais famosa na família de programação 
lógica. Foi um projeto colaborativo de Alain Colmerauer, Phillipe Roussel 
(ambos da Universidade de Aix-Marselha) e Robert Kowalski (Universidade 
de Edimburgo). Sua primeira versão apareceu, como Smalltalk e C, em 1972. 
Seu nome é uma abreviatura de programmation en logique (francês para 
programação em lógica).
Para Nicoletti (2003, p. 35), o Prolog tem sido muito influente nos domínios 
das provas de teoremas, sistemas especialistas, processamento de linguagem 
natural e no campo da inteligência artificial (notavelmente o IBM Watson2) 
em geral. Além disso, influenciou de forma significativa o desenvolvimento 
da linguagem de programação Erlang.
Para Sebesta (2018), o Prolog é uma linguagem de programação de alto 
nível baseada em lógica formal. Ao contrário das linguagens de programação 
tradicionais, baseadas na execução de sequências de comandos, o Prolog é 
baseado na definição e na solução de fórmulas lógicas. Por vezes, é chamado 
de linguagem declarativa ou baseada em regras, porque seusprogramas con-
sistem em uma lista de fatos e regras. É, também, amplamente utilizado para 
aplicações de inteligência artificial, em particular para sistemas especialistas.
5Programação declarativa
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
O Prolog possui quatro blocos de construção:
 � lógico or; 
 � lógico and;
 � reescrita de termos; 
 � unificação. 
Combinando esses quatro blocos, é possível executar qualquer computação. 
O Prolog, assim como o SQL, tem dois aspectos principais, um para expressar 
os dados e outro para consultá-los. As construções básicas da programação 
lógica, termos e declarações são herdadas da lógica. Existem três declarações 
básicas:
 � fatos, que são afirmações fundamentais sobre o domínio do problema 
(por exemplo, “Sócrates é um homem.”);
 � regras, que são inferências sobre fatos no domínio (por exemplo, “Todos 
os homens são mortais.”);
 � consultas, que são perguntas sobre esse domínio (por exemplo, 
“É Sócrates mortal?”).
Fatos e regras são armazenados em uma base de conhecimento que o 
compilador Prolog transporta para uma forma mais eficiente para consulta. 
Quando “fazemos” uma pergunta, o Prolog faz uma pesquisa exaustiva por 
meio do banco de dados de fatos e regras até encontrar um resultado, usando 
o backtracking internamente. 
Aprenda pelo menos uma nova linguagem de programação a cada ano. Diferentes 
linguagens resolvem os mesmos problemas de maneiras diferentes, ao aprender várias 
abordagens, você amplia seu pensamento e evita “ficar preso” em uma mesma rotina. 
Além disso, aprender linguagens de programação é muito mais fácil atualmente, pois 
há muitos softwares disponíveis gratuitamente na Internet. 
Programação declarativa6
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
A escolha de linguagens declarativas, seja do tipo lógica ou funcional, 
é sempre uma questão ligada ao contexto da solução que se deseja atender. 
Linguagens declarativas são de excelente aplicação em contextos mais abs-
tratos, como consultas a banco de dados e questões que envolvam áreas da 
inteligência artificial.
Para conhecer os pilares e conceitos do paradigma de programação orientada a 
objetos acesse o link a seguir.
https://qrgo.page.link/JBCZA
BOTELHO, L. M. Inteligência artificial: apontamentos para as aulas. Lisboa: Departamento 
de Ciências e Tecnologias da Informação, Instituto Superior de Ciências do Trabalho 
e da Empresa, 2015. 10 p. Disponível em: http://home.iscte-iul.pt/~luis/aulas/ia/Co-
nhecimento%20declarativo%20em%20programacao%20em%20logica.pdf. Acesso 
em: 21 ago. 2019.
NICOLETTI, M. C. A cartilha Prolog. São Carlos: Edufscar, 2003. 124 p. (Série Apontamentos).
SEBESTA, R. W. Conceitos de linguagem de programação. 11. ed. Porto Alegre: Bookman, 
2018. 758 p.
TUCKER, A. B.; NOONAN, R. E. Linguagens de programação: princípios e paradigmas. 2. 
ed. Porto Alegre: AMGH, 2009. 630 p.
Leituras recomendadas 
EDELWEISS, N.; LIVI, M. A. C. Algoritmos e programação: com exemplos em Pascal e C. 
Porto Alegre: Bookman, 2014. 476 p. (Série Livros Didáticos Informática UFRGS).
LEDUR, C. L. Desenvolvimento de sistemas com C#. Porto Alegre: SAGAH, 2018. 268 p.
MACHADO, R. P.; FRANCO, M. H. I.; BERTAGNOLLI, S. C. Desenvolvimento de software III: 
programação de sistemas web orientada a objetos em Java. Porto Alegre: Bookman, 
2016. 220 p. (Série Tekne; Eixo Informação e Comunicação). 
7Programação declarativa
MILETTO, E. M.; BERTAGNOLLI, S. C. Desenvolvimento de software II: introdução ao de-
senvolvimento web com HTML, CSS, JavaScript e PHP. Porto Alegre: Bookman, 2014. 
276 p. (Série Tekne; Eixo Informação e Comunicação).
OKUYAMA, F. Y.; MILETTO, E. M.; NICOLAO, M. Desenvolvimento de software I: conceitos bá-
sicos. Porto Alegre: Bookman, 2014. 236 p. (Série Tekne; Eixo Informação e Comunicação).
PINHEIRO, F. A. C. Elementos de programação em C: em conformidade com o padrão 
ISO / IEC 9899. Porto Alegre: Bookman, 2012. 548 p.
Programação declarativa8
DICA DO PROFESSOR
A programação funcional é uma maneira de pensar sobre a construção de software, criando 
funções puras. As linguagens funcionais são declarativas, pois usam expressões e declarações, 
em vez de execução de instruções. São, portanto, linguagens que apresentam características de 
abstração e previsibilidade, entre outras vantagens.
Na Dica do Professor, você verá um pouco mais sobre as características da linguagem funcional 
e por que ela se enquadra como um dos tipos de linguagem declarativa.
Conteúdo interativo disponível na plataforma de ensino!
EXERCÍCIOS
1) As linguagens de programação declarativas têm como principal característica lógica 
do programa estarem orientadas para o resultado a ser obtido e não para o modo 
como será alcançado. Ou seja, têm foco no quê e não no como. Assinale a alternativa 
que descreva outra característica também associada a esse paradigma:
A) Modelagem de entidades do mundo real.
B) Facilidade de aprendizagem.
C) Comandos e instruções passo a passo.
D) Facilidade de integração com outras linguagens.
E) Criação de códigos enxutos.
2) 
As linguagens de programação declarativa, assim como linguagens em outros 
paradigmas, são indicadas para programas em algumas áreas do conhecimento. 
Assinale a alternativa que identifica as áreas do conhecimento em que mais se 
aplicam as linguagens de programação declarativa:
A) Processamento de Imagem e Banco de Dados.
B) Sistemas Estruturados e Processamento de Imagem.
C) Jogos e Banco de Dados.
D) Inteligência Artificial e Banco de Dados.
E) Móbile e Sistemas Web.
3) As linguagens de programação lógica, como o Prolog, têm grande embasamento na 
lógica matemática, fazendo uso de símbolos na declaração pela lógica de predicados. 
Assinale a alternativa correta acerca de algumas características da programação 
lógica:
A) Processamento simbólico e fácil modificação.
B) Processamento simbólico e soluções algorítmicas.
C) Difícil modificação e respostas parcialmente corretas.
D) Soluções heuríticas e soluções algorítmicas.
E) Estruturas de controle e de conhecimento integradas.
4) O paradigma de programação funcional é uma forma de programação declarativa, 
criado explicitamente para dar suporte a uma abordagem funcional pura, para a 
solução de problemas. Para atingir esse objetivo, são características desse paradigma:
A) Alta importância da ordem de execução dos passos.
B) Controle de fluxo, utilizando loops e condições.
C) Alterações no programa são mais complexas.
D) Foco em como controlar tarefas.
E) Foco em funções com objetos de primeira classe e coleção de dados.
5) As linguagens de programação por restrições são uma complementação ao padrão 
lógico e se referem à implementação de restrições na relação entre variáveis, 
especificando soluções e critérios a serem cumpridos, atuando sobre domínios. As 
linguagens de programação por restrições atuam sobre alguns domínios. Assinale a 
alternativa abaixo que apresenta alguns domínios onde esse tipo de linguagem atua:
A) Estrutural e condicional.
B) Matemático e funções.
C) Booleano e finito.
D) Estrutural e orientado a objetos.
E) Imperativo e funcional.
NA PRÁTICA
A linguagem LISP é um exemplo de linguagem declarativa funcional muito utilizada em 
aplicações que necessitam resolver questões matemáticas mais complexas, como em um jogo de 
xadrez.
O jogo de xadrez exige raciocínio lógico e capacidade de realizar cálculos probalísticos 
matemáticos, por isso, a criação de um programa em LISP que utiliza os recursos da 
programação declarativa é um bom exemplo de uso desse paradigma.
Confira, Na Prática, a criação de um programa em LISP básico que possibilita um jogo de 
xadrez entre o usuário e o computador e compreendacomo a linguagem declarativa se adapta a 
esses casos. 
Conteúdo interativo disponível na plataforma de ensino!
SAIBA +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do 
professor:
Imperativo ou Declarativo?
Confira, neste artigo, uma comparação didática sobre as diferenças entre os Paradigmas 
Declarativo e Imperativo.
Conteúdo interativo disponível na plataforma de ensino!
A linguagem SQL
Este artigo apresenta uma introdução sobre a linguagem declarativa SQL. Confira essa descrição 
e por que essa linguagem se tornou a mais explícita do paradigma declarativo.
Conteúdo interativo disponível na plataforma de ensino!
Introdução à Linguagem de Programação PROLOG
Confira, no vídeo, uma breve apresentação sobre a linguagem declarativa PROLOG, uma das 
primeiras linguagens de programação declarativa que surgiu.
Conteúdo interativo disponível na plataforma de ensino!
Programação imperativa
APRESENTAÇÃO
O imperativo é o mais antigo dos paradigmas da computação e se consagrou como o mais 
utilizado e de maior sucesso, visto que a maioria das linguagens de programação implementam-
no, mesmo que também implementem outros paradigmas como o orientado a objetos ou o 
estruturado, por exemplo. O paradigma imperativo alcançou sucesso também pelo fato de se 
adaptar ao modelo clássico de Von Neumann, em que o programa e seus dados são alocados na 
mesma memória, o que facilita o processamento das instruções pelo compilador.
Nesta Unidade de Aprendizagem, você irá conhecer o que é a programação imperativa, como 
distinguir as linguagens de programação imperativa e exemplos de sua aplicação.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Explicar o que é a programação imperativa.•
Distinguir as linguagens de programação imperativa.•
Aplicar a programação imperativa.•
DESAFIO
O paradigma imperativo é o mais antigo dos paradigmas da computação e o que obteve, até 
então, o maior sucesso. Esse sucesso pode ser relacionado à própria arquitetura de 
processamento dos computadores. Conhecê-lo e saber como aplicá-lo é fundamental.
Veja a seguinte situação:
Você foi contratado como desenvolvedor em uma equipe de desenvolvimento para um novo 
projeto. Nesse projeto, o seu desafio será construir um sistema responsável por automatizar as 
rotinas de planejamento e controle da programação da linha de produção. As características do 
ambiente exigem que o programa execute rotinas de reprogramação da linha de produção, sem 
grande necessidade de interface gráfica, nem preocupações com integrações, por exemplo, e que 
rode em computadores cujos recursos de hardware são poucos, como memória e CPU.
Então você sugere a implementação em uma determinada linguagem, após analisar as 
características do software e os requisitos de ambiente.
a) Qual linguagem você sugere?
b) Como você utilizaria a programação imperativa por meio dessa linguagem para atender a esse 
cenário? Lembre-se de justificar sua escolha.
INFOGRÁFICO
O paradigma de programação imperativo é o mais estabilizado e utilizado pela maioria das 
linguagens de programação. Ele se baseia no modo de funcionamento do computador, ou seja, é 
influenciado por sua arquitetura. Consequentemente, isso se reflete na execução sequencial 
baseada em comandos e no armazenamento de dados alteráveis, conceitos que são baseados na 
maneira pela qual computadores executam os programas em nível de linguagem de máquina. O 
termo “imperare”, do Latim, significa “comandar”.
O paradigma imperativo foi predominante nas linguagens de programação, pois estas são mais 
fáceis de traduzir para uma forma adequada de execução na máquina. 
No Infográfico a seguir, você irá conhecer os principais conceitos que caracterizam uma 
linguagem de programação imperativa e as primeiras linguagens que implementaram esse 
paradigma.
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
CONTEÚDO DO LIVRO
O paradigma de programação caracteriza-se por se basear no próprio funcionamento do 
computador, que, por sua vez, baseia-se no modelo de Von Neumman. Essa característica é 
perceptível no modo de instrução sequencial e alteração do estado de variáveis, conceitos 
fundados na forma como os computadores executam programas em nível de linguagem de 
máquina. Isso justifica certamente o grande sucesso desse paradigma e o grande número de 
linguagens de programação que implementam suas características.
Na obra Paradigmas de programação, base teórica para essa Unidade de Aprendizagem, leia o 
capítulo Programação Imperativa e conheça um pouco mais sobre o paradigma imperativo, as 
principais características de linguagens de programação que implementam esse paradigma e 
alguns exemplos de aplicação.
Boa Leitura.
PARADIGMAS DE 
PROGRAMAÇÃO 
Fabricio Machado da Silva 
Programação imperativa
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Explicar o que é a programação imperativa.
 � Distinguir as linguagens de programação imperativa.
 � Aplicar a programação imperativa.
Introdução
O paradigma imperativo na computação tem em seu nome a semelhança 
com o padrão imperativo das linguagens naturais que expressam ordens. 
Portanto, linguagens de programação (LP), que implementam esse padrão, 
são caracterizadas por programas construídos a partir de algoritmos 
que expressam uma sequência de comandos a serem executados pelo 
computador para alcançar determinado resultado.
O paradigma imperativo é o mais antigo dos paradigmas da com-
putação e o que obteve, até então, o maior sucesso. Esse sucesso 
pode ser relacionado à própria arquitetura de processamento dos 
computadores.
Neste capítulo, você entenderá do que se trata o paradigma im-
perativo, algumas das linguagens mais utilizadas e um pouco da sua 
aplicação.
Halissa Franco
Paradigma imperativo
O paradigma de programação imperativo surgiu na década de 1940, quando 
John von Neumann e colaboradores percebem que tanto um programa de 
computador como seus dados poderiam compartilhar a memória principal. 
Essa descoberta foi um conceito inovador, devido ao fato de que os primeiros 
computadores armazenavam seus programas fora da memória. Com a pos-
sibilidade de armazenar um programa na memória, foi possível alcançar um 
novo patamar de versatilidade e computação.
A arquitetura do modelo de von Neumann se tornou, então, a base do 
conceito do paradigma de programação imperativa, na qual a memória da 
máquina contém tanto as instruções do programa que está executando como 
os valores dos dados (armazenamento dos dados). Além disso, no centro dessa 
arquitetura, encontra-se outra característica clássica do paradigma imperativo: 
alterar o valor de um local de memória e destruir o seu valor anterior, ou seja, 
o conceito de atribuição.
Segundo Tucker e Noonan (2009, p. 277):
Já que elas surgiram do modelo de von Neumann-Eckert, todas as linguagens 
imperativas incluem a atribuição como um elemento central. Além disso, elas 
suportam declarações de variáveis, expressões, comandos condicionais, laços 
e abstração procedural. 
Em LP imperativas, as expressões são interpretadas conforme a recuperação 
de valores correntes de variáveis por meio de nomes que referenciam seus 
respectivos endereços na memória.
A Figura 1 ilustra o exemplo clássico da estrutura do modelo de von 
Neumman e como programas em linguagens imperativas são executados 
pelo computador.
Programação imperativa2
Halissa Franco
Halissa Franco
Figura 1. Arquitetura de von Neumann e o paradigma de LP imperativa.
Fonte: Linguagem... (2018, documento on-line).
Ainda utilizando como base a arquitetura de von Neumman, programas 
construídos em linguagens imperativas tem seus comandos executados na 
ordem em que aparecem na memória, embora os comandos condicionais e as 
ramificações possam alterar um pouco esse fluxo de execução.No início, os 
comandos de uma linguagem imperativa eram apenas abstrações simplifica-
das de instruções em máquinas de von Neumman, padrão que englobavam 
comandos de atribuição, condicionais e ramificações. 
Boa parte dos computadores mais populares nos últimos anos foi projetada com base 
na arquitetura proposta por von Neumann. Nela, dados e programas são armazenados 
na mesma memória. A unidade central de processamento (UCP), que executa realmente 
as instruções, é separada da memória. 
3Programação imperativa
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Dessa forma, podemos sintetizar que a fundamentação da programação 
imperativa se resume a três conceitos:
 � Estado de uma máquina, relacionado aos valores de um conjunto de 
variáveis.
 � Expressões, compostas pela relação entre esses valores ou o resultado 
de operações entre esses valores.
 � Comandos de atribuição e controle, que manipulam esses estados das 
variáveis.
Em outras palavras, um programa escrito em uma linguagem imperativa 
é representado por um conjunto de dados que determinam o seu estado e, por 
meio da manipulação desses dados (leitura, criação de expressões e geração 
de novos valores), o seu estado vai sendo alterado até o resultado esperado 
ser alcançado.
Linguagens de programação imperativas
Agora, você verá um pouco mais sobre as características que definem se uma 
linguagem se enquadra no paradigma de programação imperativa e alguns 
exemplos de linguagens imperativas. Além das características já comentadas 
em relação à implementação de instruções e comandos que um programa em 
linguagem imperativa especifica para que o computador alcance determinado 
resultado, uma linguagem imperativa é classificada completa quanto a Turing 
quando possibilita a implementação de qualquer algoritmo que possa ser 
projetado (TUCKER; NOONAN, 2009).
Ser completa quanto a Turing é uma característica que permite mensurar se 
uma linguagem consegue implementar qualquer situação, incluindo situações 
comuns que envolvam:
 � estruturas de controle;
 � entrada e saída de dados;
 � manipulação de exceções e erros;
 � abstração procedural;
 � expressões e atribuição;
 � suporte de bibliotecas para estrutura de dados.
Programação imperativa4
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Para definir melhor este conceito, vamos analisar a implementação dessas 
características do ponto de vista de duas linguagens imperativas, a linguagem 
C e a linguagem Ada. A linguagem C foi projetada inicialmente para ser 
implementada no sistema operacional UNIX, nos laboratórios Bell, por Ken 
Thompson e Dennis Ritchie, que participavam ativamente do desenvolvimento 
de um avançado sistema operacional que, ao contrário dos sistemas operacionais 
criados, estava sendo escrito em programming language one (PL/I) em vez 
de assembly (OKUYAMA; MILETTO; NICOLAO, 2014).
Após o laboratório Bell desistir do projeto do sistema operacional, Thomp-
son e Ritchie continuaram o desenvolvimento de um sistema de documentação, 
que seria independente de máquina e possibilitava a execução em minicompu-
tadores baratos do final de 1960, nascia assim o sistema operacional UNIX. 
A linguagem C foi utilizada na construção desse sistema operacional, incial-
mente baseada na linguagem basic combined programming language (BCPL) 
que não possuía tipo (OKUYAMA; MILETTO; NICOLAO, 2014).
A partir disso, a linguagem C foi amplamente utilizada, principalmente 
em ambientes acadêmicos, tendo, inclusive, impacto no surgimento de inú-
meras outras linguagens conhecidas atualmente, como Java, Python e C++ 
(PINHEIRO, 2012).
A linguagem C possui comandos de atribuição, sequência e os condicionais 
if e switch, laços while, for e do e chamadas a funções. Com relação à estrutura 
de dados, a linguagem C permite trabalhar com matrizes, ponteiros, estrutu-
ras (registros) e tipos de dados de união. Como uma linguagem imperativa, 
o C não possui:
 � iteradores;
 � manipulação de exceções;
 � sobrecarga;
 � genéricos.
Veja um exemplo de código em C que define uma estrutura com nome, ano 
de matrícula, curso e média de entrada de um aluno e, logo após, implementa 
uma função de receber como parâmetro um apontador para uma estrutura do 
tipo definido, criando dinamicamente uma estrutura. Para a nova estrutura, 
devem ser copiados os dados da estrutura recebida. A função retorna o apon-
tador para a nova estrutura ou NULL, caso não consiga reservar memória.
5Programação imperativa
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
typedef struct aluno {
 char nome[40];
 int ano;
 char curso[40];
 float media;
} aluno;
aluno * copia _ aluno( aluno * a) 
{
 aluno *t;
 t=(aluno *)malloc(sizeof(aluno));
 if (t==NULL)
 return t;
 *t = *a;
 /* ou:
 strcpy(t->nome,a->nome);
 t->ano = a->ano;
 strcpy(t->curso,a->curso);
 t->media = a->media;
 */
 return t;
}
Outro bom exemplo de linguagem imperativa, é a linguagem Ada. Ela foi 
desenvolvida no final da década de 1970 pelo departamento de defesa norte-
-americano para ser usada em grandes sistemas de controle e comando e em 
sistemas embarcados em tempo real. Caracteriza-se por ser uma LP imperativa 
de alto nível e baseada em Pascal.
Seu principal projetista foi o francês Jean Ichbiah. A linguagem foi pa-
dronizada pela American National Standards Institute (ANSI) em 1983 e, 
em 1985, pela International Organization for Standardization (ISO). Um fato 
curioso acerca da linguagem Ada é que, em 1995, a ISO padronizou uma 
versão melhorada chamada de Ada 95, que se tornou a primeira LP orientada 
a objeto (OO) padronizada internacionalmente (TUCKER; NOONAN, 2009).
Programação imperativa6
A estrutura básica de um programa em Ada é a seguinte:
-- Declarações de bibliotecas
Procedures nome _ do _ programa is
-- Declarações de variáveis
begin
-- Corpo do programa
end nome _ do _ programa;
Pela estrutura demonstrada, você pode perceber as características do 
paradigma imperativo na linguagem. Vamos analisar o seguinte:
 � Linguagens imperativas permitem a troca de valor de variáveis no 
trecho do código do programa, logo após a sua criação é designado um 
espaço para a declaração das variáveis.
 � Linguagens imperativas permitem que as variáveis sejam manipuladas 
e as instruções e os comandos sejam repassados para o computador, 
explicando como fazer para chegar a um determinado resultado, logo 
após o comando begin é necessário especificar o que o programa 
deverá fazer.
Desenvolvendo e aplicando programação 
imperativa
Para ajudar a elucidar o conceito de programação imperativa, analise o código 
em Ada, apresentado na Figura 2. Esse exemplo demonstra a aplicação do 
paradigma imperativo por meio da criação de um algoritmo que escreve a 
tabuada.
7Programação imperativa
Halissa Franco
Halissa Franco
Figura 2. Algoritmo em Ada que escreve a tabuada.
Fonte: Leal (2012, documento on-line).
No algoritmo apresentado na Figura 2, você pode perceber que a linguagem 
Ada possibilita outros recursos de linguagens imperativas, como os comandos 
interativos, nesse caso representados pelo comando FOR.
Segundo Tucker e Noonan (2009), as linguagens com a maior influência 
sobre Ada foram Algol e Pascal. Exemplos dessa influência abundam: desde 
o uso do símbolo := para atribuição até o uso de begin-end para blocos. 
Sintaticamente, as duas maiores diferenças dessas linguagens predecessoras 
foram o uso desímbolos de término únicos para estruturas compostas; e o 
uso do ponto e vírgula como um símbolo de término de comando, em vez de 
um separador de comandos.
Podemos também perceber que a sintaxe da linguagem Ada exige bem mais 
comandos do que a linguagem C. O exemplo da escrita da média demanda 
bem mais comandos em Ada do que seria necessário na linguagem C.
Programação imperativa8
Vamos, agora, comparar por meio do exemplo demonstrado na Figura 3, 
a sintaxe de um algoritmo em linguagem C, que consiste em ler números, um 
de cada vez, e, então, contar e somar. Por último, o algoritmo verifica se o 
número analisado é o novo número mínimo ou máximo da lista. Perceba que 
a sintaxe usa comandos imperativos e uso de variáveis.
Figura 3. Algoritmo em C que faz contagem, soma e análise de números em sequência.
Fonte: Tucker e Noonan (2009, p. 288).
O programa usa uma declaração de atribuição múltipla para inicializar sum 
e ct e, posteriormente, min e max. Atribuições condicionais são usadas para 
atualizar min e max. A entrada e a saída que utilizam códigos de formatos 
também são utilizadas.
Para finalizar, analise um exemplo em outra linguagem imperativa, o Perl. 
Segundo Tucker e Noonan (2009, p. 296), “Perl é uma linguagem de scripting 
amplamente usada, que é uma linguagem de alto nível interpretada em tempo 
de execução em vez de compilada em linguagem de máquina”.
9Programação imperativa
O exemplo da Figura 4 é um script em Perl que envia as notas de alunos 
por e-mail; esse é um bom exemplo de casos em que linguagem de scripting 
imperativa Perl é empregada. Perceba, também a utilização das características 
imperativas no código.
Figura 4. Script em Perl que envia por e-mail as notas de alunos.
Fonte: Tucker e Noonan (2009, p. 304).
Em todos os exemplos, é perceptível, apesar das diferenças e aplicações 
das linguagens, que todas seguem os princípios do paradigma imperativo, 
deixando clara a sua importância para a computação.
Programação imperativa10
Veja, no link a seguir, alguns vídeos nos quais são feitas comparações entre os para-
digmas imperativo, funcional e OO. 
https://qrgo.page.link/jtDar
LEAL, C. Linguagem de Programação Ada. Mostre ao Mundo, Campinas, 19 out. 2012. 
Disponível em: http://www.mostreaomundo.com.br/2012/10/linguagem-de-progra-
macao-ada.html. Acesso em: 28 ago. 2019.
LINGUAGEM de programação: classificações. Universidade da Tecnologia, [S. l.], 16 fev. 
2018. Disponível em: https://universidadedatecnologia.com.br/linguagem-de-progra-
macao-classificacoes/. Acesso em: 28 ago. 2019.
OKUYAMA, F. Y.; MILETTO, E. M.; NICOLAO, M. Desenvolvimento de software I: conceitos bá-
sicos. Porto Alegre: Bookman, 2014. 236 p. (Série Tekne; Eixo Informação e Comunicação).
PINHEIRO, F. A. C. Elementos de programação em C: em conformidade com o padrão 
ISO / IEC 9899. Porto Alegre: Bookman, 2012. 548 p.
TUCKER, A. B.; NOONAN, R. E. Linguagens de programação: princípios e paradigmas. 
2. ed. Porto Alegre: AMGH, 2009. 630 p.
Leituras recomendadas
EDELWEISS, N.; LIVI, M. A. C. Algoritmos e programação: com exemplos em Pascal e C. 
Porto Alegre: Bookman, 2014. 476 p. (Série Livros Didáticos Informática UFRGS).
LEDUR, C. L. Desenvolvimento de sistemas com C#. Porto Alegre: SAGAH, 2018. 268 p.
MACHADO, R. P.; FRANCO, M. H. I.; BERTAGNOLLI, S. C. Desenvolvimento de software III: 
programação de sistemas web orientada a objetos em Java. Porto Alegre: Bookman, 
2016. 220 p. (Série Tekne; Eixo Informação e Comunicação). 
MILETTO, E. M.; BERTAGNOLLI, S. C. Desenvolvimento de software II: introdução ao de-
senvolvimento web com HTML, CSS, JavaScript e PHP. Porto Alegre: Bookman, 2014. 
276 p. (Série Tekne; Eixo Informação e Comunicação).
NICOLETTI, M. C. A cartilha Prolog. São Carlos: Edufscar, 2003. 124 p. (Série Apontamentos).
SEBESTA, R. W. Conceitos de linguagem de programação. 11. ed. Porto Alegre: Bookman, 
2018. 758 p.
11Programação imperativa
DICA DO PROFESSOR
Certamente você já desenvolveu, em alguma linguagem de programação que implementou, o 
paradigma imperativo, ou, então, se ainda não implementou, certamente 
irá implementar. Apesar de seu grande sucesso e das características que o tornam um paradigma 
estável, existem vantagens e desvantagens que todo profissional precisa conhecer.
Na Dica do Professor de hoje, conheça as principais características do paradigma imperativo e 
suas principais vantagens e desvantagens.
Conteúdo interativo disponível na plataforma de ensino!
 
EXERCÍCIOS
1) O paradigma de programação imperativa é largamente caracterizado pelo fato de 
seus programas expressarem instruções e comandos que o computador deve executar 
para alcançar os objetivos. Outra característica importante do paradigma de 
programção imperativa é: 
A) Mutação de estado (alterar os valores das variáveis).
B) Costuma expressar o código principalmente por meio de funções.
C) Implementa recursos de herança e polimorfismo entre as classes.
D) As expressões são compostas por símbolos e letras.
E) Caracteriza-se pela implementação de subprogramas ou modularização de programas.
As linguagens de programação imperativa podem ser classificadas como completas 2) 
quanto a Turing. Analise as questões e assinale a que representa uma síntese do que 
significa ser completa quanto a Turing.
A) Possibilitar a implementação de recursos de reutilização de código.
B) Apresentar sintaxe semelhante a linguagens de baixo nível.
C) Apresentar recursos que permitem expressar qualquer algoritmo computacional.
D) Possibilitar que os dados de um programa fiquem fora da memória do computador.
E) Permitir tratar todas as exceções de código em um algoritmo.
3) As linguagens de programação imperativa são também chamadas de linguagens 
procedurais devido ao fato de permitirem uma certa estruturação do código 
construído. Acerca desse conceito, assinale a alternativa que apresenta uma 
desvantagem dessa característica:
A) Falta de recursos de implementação de código recursivo.
B) Dificuldade em legibilidade do código.
C) Falta de recursos de comandos interativos.
D) Falta de flexibilidade dado o caráter sequencial das instruções.
E) Dificuldade de disponibilidade de linguagens de programação no mercado.
A programação em linguagem imperativa se caracteriza por expressar a chegada a 
um resultado e não como. Analise o código abaixo, acerca de um o trecho do código 
4) 
de um programa em linguagem C, e assinale a alternativa correta sobre a 
característica do paradigma imperativo que é possível perceber.
function join(array) { var text = ""; for (var i = 0; i < array.length; i++) {
 text += array[i];
 }
return text;
}
A) Uso de função.
B) Instruções explícitas.
C) Comando incremental.
D) Reuso código.
E) Código enxuto.
5) Uma linguagem de programação pode dar suporte a mais do que um só paradigma 
de programação. Nesse contexto, analise as alternativas a seguir e assinale a que 
apresenta as características que justifiquem que uma linguagem forneça suporte à 
implementação do paradigma imperativo.
A) Funções, estruturas de controle e abstração procedimentos.
B) Variáveis, implementação lógica e abstração de procedimentos.
C) Variáveis, atribuição e execução sequencial de procedimentos.
D) Alto nível de abstração e implementação sequencial de instruções.
E) Variáveis, estruturas de controle e alta abstração.
NA PRÁTICA
A linguagem de programação PASCAL é um bom exemplo de linguagem imperativa, muito 
utilizada, na década de 1990, em aplicações comerciais e também em ambientes acadêmicos, 
sendo inclusive, em muitos casos, juntamente com o C, a linguagem de introdução aos 
estudantes ao ambiente de programação.
A utilização da linguagem PASCAL para soluções que necessitam de instruções sequenciais 
para se chegar a um determinado resultado, ou seja, soluções que necessitam de uma 
implementação em linguagem imperativa, é uma boa alternativa. Veja, Na Prática, um exemplo 
de como ocorre a criação de um programaem PASCAL que identifica se um número informado 
é um número primo.
Conteúdo interativo disponível na plataforma de ensino!
SAIBA +
Para ampliar o seu conhecimento a respeito desse assunto, veja abaixo as sugestões do 
professor:
Diferença entre as programações Orientação-objetos, Imperativa e Funcional
Neste site, leia este excelente material que faz um comparativo da programação imperativa com 
outros paradigmas de programação.
Conteúdo interativo disponível na plataforma de ensino!
Introdução à lógica de programação imperativa
Para saber mais, assista a esse vídeo, que mostra uma introdução à lógica de programação 
imperativa.
Conteúdo interativo disponível na plataforma de ensino!
Introdução a Lógica de programação Imperativa
Conteúdo interativo disponível na plataforma de ensino!
Programação estruturada
APRESENTAÇÃO
A programação estruturada é um paradigma de programação cujo princípio é a construção de 
códigos legíveis, de fácil entendimento e manutenção. É um paradigma independente de 
linguagem de programação que fez grande sucesso entre os desenvolvedores por estabelecer 
uma disciplina rígida de padronização e construção de programas.
Nesta Unidade de Aprendizagem, você vai compreender os princípios e fundamentos da 
programação estruturada, vai ainda conhecer algumas linguagens de programação que 
implementam esse paradigma e a sua aplicação em casos reais.
Bons estudos.
Ao final desta Unidade de Aprendizagem, você deve apresentar os seguintes aprendizados:
Reconhecer a programação estruturada.•
Descrever as linguagens de programação estruturada.•
Aplicar a programação estruturada.•
DESAFIO
As linguagens de programação estruturada surgiram como uma nova proposta às antigas 
linguagens, as quais demandavam desvio de fluxo em um código com a utilização dos 
comandos GOTO, constituindo casos em que o fluxo às vezes tornava complexa a análise de 
código. Esse tipo de comando era muito utilizado para resolver situações de desvio de fluxo em 
linguagens como BASIC, por exemplo. 
Assim, considere a seguinte situação:
Você trabalha em uma equipe de desenvolvimento e recebeu da sua gerência o desafio de 
reescrever um sistema atual em BASIC para a linguagem C. Ao analisar o código atual, você 
percebe problemas característicos da implementação que justificam a migração para uma nova 
linguagem, uma vez que eles tornam o código difícil de manter e interpretar. A seguir, veja o 
código:
Considerando a situação apresentada:
a) Identifique problemas no código.
b) Justifique como a implementação estruturada em C conseguiria solucionar esses problemas.
INFOGRÁFICO
Nos anos 70, em decorrência da crise do software das décadas antecessoras, surgiram avanços 
na linguagem de programação, como a programação estruturada. A programação estruturada, 
portanto, foi a consequência de melhorias no padrão de desenvolvimento de software.
A seguir, no Infográfico, veja, de forma sintetizada, alguns eventos de melhoria nas linguagens 
que surgiram nessa época e que estão relacionados com a programação estruturada.
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
CONTEÚDO DO LIVRO
A crise do software, cujo ápice foi na década de 60, fez com que a indústria do ramo 
desenvolvesse novas formas de construção de software voltadas a uma fácil manutenção e 
entendimento dos programas de computadores. Neste cenário, surgem novas formas de se 
estruturar o código e outras linguagens para suportar novas estruturas de programação. Assim, 
surgem os conceitos que formariam os fundamentos do paradigma de programação estruturada.
Leia o capítulo Programação estruturada, da obra Paradigmas da Programação, e aprenda o 
significado de programação estruturada, vendo também algumas linguagens percursoras 
do paradigma e como são implementados programas com os conceitos de programação 
estruturada.
Boa leitura.
PARADIGMAS DE 
PROGRAMAÇÃO 
Fabricio Machado da Silva
Programação estruturada
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes aprendizados:
 � Reconhecer a programação estruturada.
 � Descrever as linguagens de programação estruturada.
 � Aplicar a programação estruturada.
Introdução
O paradigma de programação estruturada se refere a construção de 
programas que permitem uma clareza lógica na implementação de seu 
código. Esse paradigma, implementado por muitas linguagens, como 
Pascal, C, Fortran e Cobol, foi muito utilizado em programas nas décadas 
de 1970 e 1980. 
A programação estruturada tem como princípio a estruturação do 
código por intermédio de apenas três estruturas de controle básicas. 
Neste capítulo, você entenderá melhor os conceitos da programação 
estruturada, a sintaxe de algumas das linguagens que utilizam esse tipo 
de programação e a sua aplicação em alguns programas.
Programação estruturada
Para entender a motivação que originou a programação estruturada, é funda-
mental lembrar que tudo começou com a famosa crise do software na década de 
1960. Nessa época, Edsger W. Dijkstra, por meio do seu artigo A Case against 
the GO TO Statement, criticou o uso excessivo desse comando na programação. 
O comando GO TO, amplamente utilizado pelas linguagens de programação da 
época, trata-se de uma estrutura de controle para permitir saltos de instruções. 
Sua ampla utilização pelos programadores gerava um número considerável de 
programas praticamente impossíveis de serem entendidos, e a consequência 
disso era a dificuldade de manutenção dos programas.
Halissa Franco
Halissa Franco
Halissa Franco
Essa declaração foi originalmente essencial para a programação no Basic, 
pois os intérpretes mais antigos apenas permitiam que as instruções if fossem 
executadas em uma linha e não tinham manipulação mais avançada dos loops 
for ou while. Nas versões modernas do Basic, você verá o GOTO, grafado 
como uma única palavra, usado apenas para retornar ao topo de um loop 
principal (SEBESTA, 2018, p. 267). No exemplo a seguir, você pode observar 
a implementação do comando GOTO no Basic, que fica lendo um valor na tela 
e retornando à instrução para ler o novo número.
10 READ R
20 PRINT "R ="; R;
30 A = 3.14*R^2
40 PRINT "AREA ="; A
50 GOTO 10
Segundo Tucker e Noonan (2009, p. 168), “A controvérsia do comando 
Go To começou com uma nova carta de Dijkstra, desta vez para o editor da 
Communications of the ACM, intitulada Go To Statement Considered Harmful 
(Declaração Go To considerada prejudicial). Com essa carta, a revolução da 
programação estruturada estava lançada.
A partir de então, inicia-se uma revolução na forma de construção de 
códigos para programas, que seria a base para o surgimento da programação 
estruturada. De modo geral, esse paradigma de programação, com o objetivo 
de corrigir os problemas citados, embasava o projeto de programas com prin-
cípios básicos por meio da utilização de apenas três estruturas de controle:
 � Sequência — implementa os passos de processamento necessários 
para a descrição de qualquer programa, por exemplo, um segmento 
de código em que é enviado o comando ''faça tarefa 1'' e, 
logo após, o comando ''faça tarefa 2'', pode ser representado 
com a sequência de dois retângulos, ou em um pseudocódigo que seria 
denotado pela expressão das duas tarefas uma após a outra.
 � Seleção — possibilita que o fluxo de processamento seja selecionado 
com base em sentenças lógicas, para isso são usadas duas formas de 
condicional; a primeira seria o uso da condicional if then, e a 
segunda, switch.
 � Iteração — possibilita que segmentos do programa tenham a sua exe-
cução repetida até que uma determinada cláusula seja satisfeita. São 
implementados por comandos while ou for, por exemplo.
Programação estruturada2
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco
Halissa Franco

Outros materiais