Buscar

Linguagens e Paradigmas da Programação

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 90 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 90 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 9, do total de 90 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

Prévia do material em texto

Código Logístico
58843
Fundação Biblioteca Nacional
ISBN 978-85-387-6523-3
9 7 8 8 5 3 8 7 6 5 2 3 3
LIN
G
U
A
G
EN
S E PA
R
A
D
IG
M
A
S D
E P
R
O
G
R
A
M
A
Ç
Ã
O
VA
LD
IN
EI J. SA
U
G
O
Linguagens e 
paradigmas de 
programação
IESDE
2020
Valdinei J. Saugo
© 2020 – IESDE BRASIL S/A.
É proibida a reprodução, mesmo parcial, por qualquer processo, sem autorização por escrito do autor e do detentor dos 
direitos autorais.
Projeto de capa: IESDE BRASIL S/A. Imagem da capa: whiteMocca/Shutterstock
Todos os direitos reservados.
IESDE BRASIL S/A.
Al. Dr. Carlos de Carvalho, 1.482. CEP: 80730-200
Batel – Curitiba – PR
0800 708 88 88 – www.iesde.com.br
CIP-BRASIL. CATALOGAÇÃO NA PUBLICAÇÃO
SINDICATO NACIONAL DOS EDITORES DE LIVROS, RJ
S273L
Saugo, Valdinei J.
Linguagens e paradigmas de programação / Valdinei J. Saugo. - 1. ed. - Curitiba 
[PR] : IESDE, 2020.
86 p. : il.
Inclui bibliografia
ISBN 978-85-387-6523-3
 1. Linguagem de programação (Computadores). I. Título.
19-60714 CDD: 005.13
CDU: 004.43
Valdinei J. Saugo
Especialista em Engenharia de Software pela Pontifícia Universidade Católica do Paraná 
(PUCPR) e em Sistemas Embarcados pela Universidade Positivo. Bacharel em Sistemas da 
Informação pela Unibrasil. Profissional de Tecnologia da Informação com experiência em 
consultoria e desenvolvimento de projetos de software e hardware para metrologia industrial, 
automação industrial e controle de acesso com tecnologia RFID. Professor no ensino de 
desenvolvimento de software na área de Tecnologia da Informação e Internet das Coisas. 
Sumário
Apresentação 7
1 Linguagens de programação 9
1.1 Surgimento das linguagens de programação 9
1.2 Definição das linguagens de programação 11
1.3 Aplicações das linguagens de programação 14
2 Tipos de linguagens de programação 19
2.1 Classificação das linguagens de programação 19
2.2 Linguagens de programação estruturadas 20
2.3 Linguagens de programação orientadas a objetos 21
2.4 Linguagens de programação funcionais 24
3 Tipos de dados em linguagens de programação 29
3.1 Definição de dados em linguagens de programação 29
3.2 Dados primitivos em linguagens de programação 30
3.3 Criação de dados em linguagens de programação 34
4 Introdução à linguagem de programação Java 39
4.1 Surgimento da linguagem Java e suas aplicações 39
4.2 Tipos de dados e sintaxe da linguagem Java 41
4.3 Programação em linguagem Java e exemplos de aplicação 43
5 Estruturas de dados com linguagem de programação Java 49
5.1 O que são estruturas de dados 49
5.2 Definição de vetores, matrizes, filas e pilhas em linguagem Java 50
5.3 Algoritmos de estruturas de dados em linguagem Java 52
6 Paradigmas de programação 59
6.1 Paradigmas de programação funcional, imperativo e lógico 59
6.2 Exemplos de aplicação 64
7 Paradigma de programação orientada a objetos 67
7.1 O que é programação orientada a objetos? 67
7.2 Definição de classes e objetos 68
7.3 Exemplos de aplicação de orientação a objetos 71
8 Tendências em linguagens de programação 75
8.1 Futuro das linguagens de programação 75
8.2 Linguagens de programação mais promissoras 79
Gabarito 83
Apresentação
As tecnologias modernas estão em constante evolução e são aplicadas nos mais diversos 
segmentos de mercado, especialmente no desenvolvimento de sistemas ou de software para 
empresas. Para que muitos equipamentos utilizados no nosso cotidiano operem, é necessário um 
sistema – o software –, responsável por dar “vida e sentido” a muitas máquinas, de modo que 
cumpram o papel para o qual foram destinadas.
O software, atualmente, está embutido em diversos produtos eletrônicos de uso diário, tais 
como: televisores, celulares, veículos, eletrodomésticos e equipamentos de internet. Se um produto 
eletrônico realiza algum cálculo ou processamento, certamente parte dele é constituído de um 
software. No dia a dia estão presentes, também, sistemas em vários segmentos, como a internet, 
com suas páginas web e serviços que não seriam possíveis sem um conjunto de tecnologias que 
permitam a troca de informações entre pessoas e computadores.
Para que toda essa tecnologia seja operacional e ajude as pessoas em suas tarefas, é preciso 
estudá-la, projetá-la e, em algum momento, inseri-la nesses produtos tecnológicos. A presente obra, 
nesse sentido, visa colaborar com uma apresentação introdutória sobre linguagens e paradigmas de 
programação. Cada tipo de aplicação e sistema tem uma metodologia de desenvolvimento, na qual 
as linguagens de programação entram em cena.
Existem paradigmas e linguagens de programação adequados para cada necessidade do 
mercado – sistemas eletrônicos e de internet, por exemplo, utilizam metodologias distintas. Dessa 
forma, esta obra destina-se não apenas a informar os leitores sobre o que é tecnologia e software, 
mas também visa orientá-los nas diferentes aplicações de sistemas e de linguagens de programação 
para reconhecer quais as tecnologias mais adequadas a cada situação.
O livro está estruturado em oito capítulos e aborda, inicialmente, conceitos inerentes às 
linguagens e paradigmas de programação e, na sequência, as metodologias de programação 
orientada a objetos, programação funcional e programação lógica. Por fim, conclui o conteúdo 
com uma apresentação de tendências de mercado para linguagens de programação e sistemas.
Bons estudos!
1
Linguagens de programação
A tecnologia da informação apresenta uma infinidade de segmentos, cada um com suas 
particularidades e usabilidades. O profissional do setor, portanto, sempre contará com um grande 
volume de conteúdo a ser explorado. Nesse sentido, um dos diferenciais mais importantes a quem 
trabalha na área é adquirir conhecimentos em programação de computadores.
O contínuo avanço desse mercado, nas últimas décadas, levou a Central de Processamento 
de Dados (CPD), como era chamado o departamento de informática das organizações, a superar 
sua restrição apenas às tarefas técnicas de operação e manutenção de sistemas para ocupar 
posições estratégicas.
A evolução da internet, somada aos serviços e dispositivos cada vez mais integrados na 
rede, em todos os níveis da sociedade, torna hoje imprescindível a presença de um profissional de 
tecnologia da informação. Nesse cenário em que a tecnologia está presente em nossas residências 
e em nosso cotidiano por meio de computadores, eletrônicos, eletrodomésticos, smartphones e 
smart TVs, por exemplo, é necessário um corpo técnico de engenheiros e de desenvolvedores 
de sistemas para projetar e programar equipamentos funcionais às nossas necessidades. Assim, 
quando falamos de linguagens de programação, nós as reconhecemos capazes de atender às mais 
variadas demandas, nos mais diversos segmentos do mercado.
Neste capítulo, trataremos dos assuntos que introduzem os conceitos das linguagens de 
programação, como surgiram e suas principais características, aplicações e utilidades para o 
profissional moderno de tecnologia da informação.
1.1 Surgimento das linguagens de programação
Linguagens de programação são linguagens técnicas, utilizadas para 
desenvolver sistemas e comunicação com o computador. Em sua totalidade, são 
constituídas de comandos que, quando utilizados de forma adequada, executam 
uma ou mais ações. Assim, podemos afirmar que um software em utilização no 
computador é um conjunto predefinido de comandos e sentenças lógicas que 
realizam as ações para as quais aquele sistema foi desenvolvido. Os próprios sistemas operacionais 
que utilizamos nos computadores ou celulares, por exemplo, foram escritos com base em uma ou 
mais linguagens de programação.
O surgimento dos primeiros computadores elétricos aconteceu na década de 1930 e veio 
em substituição a equipamentos mecânicos utilizados na época. Apenas em 1948, Konrad Zuse 
publicou seu estudo para uma nova linguagem de programação, chamada Plankalkül. Entretanto, 
naquele tempo, seu feito ainda não tinha muita utilidade e acabou sendo esquecido (COMPUTERHISTORY MUSEUM, 2019).
Vídeo
Linguagens e paradigmas de programação10
A partir do início da década de 1950, surgiram as primeiras linguagens de programação até 
então modernas, destacando-se Fortran (Formula Translation) e Cobol (Common Business-Oriented 
Language), hoje consideradas clássicas. A linguagem de programação Fortran foi desenvolvida 
pela empresa americana International Business Machines (IBM) para ser utilizada em projetos 
científicos e de engenharia, os quais demandavam complexidade em cálculo matemático, sendo 
que, inicialmente, foi amplamente utilizada por matemáticos e cientistas. À época, as instruções 
para programas de computador eram uma tarefa trabalhosa; depois, no entanto, 1.000 instruções 
de códigos foram facilmente traduzidas para 47 instruções em Fortran, por exemplo (IBM, 2019).
Já a linguagem de programação Cobol foi desenvolvida no final da década de 1950 por 
fabricantes e usuários de computadores do governo norte-americano. Sua aplicação era voltada 
ao desenvolvimento de sistemas comerciais que exigiam manipulação precisa e eficiente de um 
grande volume de dados. Vale ressaltar que boa parte das aplicações de empresas varejistas ainda é 
desenvolvida em linguagem Cobol.
Durante a década de 1960, uma pesquisa foi conduzida em Dartmouth College e resultou na 
evolução da programação estruturada que, naquele momento, foi considerada uma opção para a 
escrita mais clara dos programas de computador, fácil de testar e de modificar. Um dos resultados 
mais importantes da pesquisa foi o desenvolvimento da linguagem de programação Pascal, pelo 
professor Niklaus Wirth1, em 1971 – batizada, assim, para homenagear o matemático e filósofo Blaise 
Pascal2. Essa linguagem acabou sendo adotada no ensino de programação estruturada em ambientes 
acadêmicos e logo se tornou a preferida na maioria das universidades (DEITEL, P.; DEITEL, H., 2010).
Os paradigmas da programação começaram a despontar na década de 1960 e foram, em 
grande parte, elaborados na década de 1970, momento em que surgiram importantes linguagens 
na área, como:
• Simula: foi a primeira linguagem de programação que deu suporte ao conceito de classes.
• C: uma das primeiras linguagens de programação aplicada a sistemas e que, atualmente, 
tem uma grande influência.
• Basic: desenvolvida com o objetivo de escrever programas simples, sendo seu principal 
propósito familiarizar os iniciantes com as técnicas de programação.
• Prolog: foi elaborada em 1972 e considerada a primeira com paradigma lógico; é uma das 
linguagens utilizadas no desenvolvimento e ensino de técnicas de inteligência artificial.
1 Niklaus Wirth nasceu em 1934, é suíço e engenheiro eletrônico. Projetou algumas linguagens de programação, 
incluindo a Pascal e escreveu livros nas áreas de engenharia de software e programação estruturada. Em 1984, recebeu o 
Prêmio ACM Turing, atribuído em reconhecimento ao desenvolvimento de uma sequência inovadora de linguagens, e, em 
2004, foi nomeado membro do Museu de História da Computação.
2 Autor da célebre frase “O coração tem razões que a própria razão desconhece”, o gênio da ciência e da literatura 
universal, Blaise Pascal, nasceu na França, em 1623, e acumula os títulos de físico, matemático, filósofo, teólogo, pai da 
computação digital, da probabilidade, da física experimental, da hidráulica, do cálculo integral e diferencial, e da geometria 
projetiva. Aos 16 anos, iniciou suas pesquisas voltadas para a física e inventou, na época, uma pequena calculadora. 
Em 1647, fez experimentos sobre a pressão atmosférica, redigiu um tratado sobre o vácuo, aperfeiçoou o barômetro 
de Torricelli e concebeu dois inventos: a prensa hidráulica e a seringa. Seus trabalhos foram de grande valor para o 
desenvolvimento da estatística e, no campo da matemática, teve reconhecimento por meio da teoria da probabilidade e 
do tratado do triângulo aritmético.
Linguagens de programação 11
Na década de 1990, algumas linguagens de programação foram aprimoradas e outras 
surgiram com o foco redirecionado para um novo modelo de sistemas, agora integrado à rede 
e permeado por diversas outras interações que a evolução da internet começou a oferecer. Aqui, 
estamos falando de linguagens como Java, JavaScript e PHP, mais completas e modernas que as 
existentes na época, trazendo melhorias aos processos de desenvolvimento de sistemas – todas 
relacionadas com a internet –, e também Visual Basic e Object Pascal, bastante utilizadas em 
aplicações corporativas (DEITEL, P.; DEITEL, H., 2010).
Quando tratamos de linguagens de programação, é difícil afirmar se uma é melhor que a 
outra. O que pode existir são vantagens e desvantagens ao compará-las, portanto, é importante 
que o profissional de tecnologia possua conhecimento sobre as especificidades de cada uma delas 
para utilizar a mais apropriada em cada situação. A linguagem Java, por exemplo, é considerada 
robusta e possibilita desenvolver aplicações web de grande porte, aplicativos móveis e aplicações 
para Windows, Linux e macOS. Já a linguagem PHP, que é destinada a sistemas web, não possibilita 
desenvolver um aplicativo para smartphones.
As linguagens de programação fazem parte do cotidiano do profissional de tecnologia da 
informação e estão presentes em todos os equipamentos eletrônicos atuais (dispositivos móveis, 
sistemas operacionais, sistemas corporativos e sistemas em nuvem). Direta ou indiretamente, o 
profissional dessa área terá contato com tais tecnologias, tanto para manutenção e desenvolvimento 
de sistemas como para especificação de projetos ou suporte técnico.
Por fim, podemos observar que as linguagens de programação vêm evoluindo, tornando-se 
mais robustas, acessíveis e com novas funcionalidades, além de mais adaptáveis e compatíveis com 
as atuais demandas do mercado e dos sistemas informatizados modernos.
1.2 Definição das linguagens de programação
Os primeiros computadores que surgiram eram programados em linguagem 
de máquina, ou seja, as instruções eram definidas utilizando-se sequências de 
números zero e um, que diziam exatamente o que a máquina deveria realizar. Esses 
programas iniciais realizavam operações chamadas de nível baixo, pois consistiam 
em mover dados de um lugar para outro ou realizar comparação entre registradores 
de memória. Porém, essas tarefas eram demoradas e cansativas de se preparar e, após finalizadas 
essas instruções, sua leitura e modificações, quando necessárias, eram complexas (AHO et al., 
2008).
As linguagens de programação possuem propriedades que podem ser classificadas quanto 
às suas características, às suas funcionalidades e ao seu paradigma de programação. Quanto ao 
seu tipo, as linguagens de programação podem ser organizadas em três grupos básicos: linguagem 
de máquina, linguagem de montagem (assembly) e linguagem de alto nível. Vejamos a seguir as 
especificidades de cada uma delas.
Vídeo
Linguagens e paradigmas de programação12
1.2.1 Linguagem de máquina
Um programa construído em linguagem de máquina é escrito em formato legível apenas 
para os computadores, ou seja, é uma sequência de bytes com as instruções que serão executadas 
pelo processador, sendo cada uma delas uma tarefa que o processador realizará de modo sequencial.
Para escrever um programa com essa linguagem, é necessário ter em mãos os códigos de 
instruções do processador e possuir conhecimentos acerca de sua arquitetura, porém, obter esses 
códigos e gerenciá-los é uma tarefa árdua.
O desenvolvimento de um software com linguagem de máquina é algo aplicado em situações 
muito específicas, sendo raramente utilizado em sistemas direcionados aos usuários finais. Devido 
a sua complexidade, foi criada a linguagem chamada assembly, composta por códigos e siglas que 
representam as mesmas instruções do processador e facilitam o desenvolvimento de códigos de 
baixo nível, quando houver essa necessidade (SILVA, 2015).
1.2.2 Linguagem assembly
Utiliza a língua inglesa para representar as operações básicas de um programaescrito em 
assembly. Existem os programas chamados assemblers, que realizam a conversão de um programa 
escrito nessa linguagem para a linguagem de máquina, que, por sua vez, é legível pelo processador. 
Vejamos a figura a seguir:
Figura 1 – Exemplo de código em assembly
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
#include <iostream>
using namespace std;
int main()
{
 int a, b, c;
 cin >> a;
 cin >> b;
 
 _asm
 {
 mov eax, a
 add eax, b
 mov c, eax
 };
 
 cout << c << endl;
 cin.get();
 return 0;
}
Fonte: Elaborada pelo autor.
Linguagens de programação 13
Podemos observar que a Figura 1 demonstra um exemplo de código em linguagem C++, que 
é uma evolução da linguagem C, no qual foram adicionados recursos do paradigma de programação 
orientada a objetos. No código exemplificado, há um trecho que realiza uma operação de soma 
entre dois números inteiros. Um programa, quando escrito totalmente ou quando contém partes 
em assembly, está preparado em um formato que pode ser lido pelas pessoas, mas que é ilegível ao 
processador até que seja convertido para linguagem de máquina por meio de um programa assembler.
1.2.3 Linguagem de alto nível
Linguagens de alto nível são as mais utilizadas, pela maioria dos profissionais de tecnologia, 
no desenvolvimento de sistemas e serão o nosso principal objeto de estudos. Elas consistem em 
uma sintaxe que se assemelha à nossa escrita e, normalmente, a língua inglesa é escolhida para 
registrar as instruções.
No alto nível, toda a complexidade da assembly e da linguagem de máquina ficam a cargo 
de um compilador, que será o responsável por converter as instruções legíveis para os humanos 
em um programa com instruções para o computador. Na Figura 2, podemos observar as etapas da 
construção de um programa usando linguagem de alto nível.
Figura 2 – Etapas de produção com linguagem de alto nível
Escrita do programa
Compilador
Código-fonte
Compilação
Carregador
Código-objeto
Execução
Código executável 
em memória
Código executável
Fonte: Elaborada pelo autor.
Com a utilização de linguagens de alto nível, o desenvolvedor não precisa se preocupar com 
os níveis mais baixos de hardware, como instruções do processador, endereços de memória ou 
tipos de processador; tarefa a cargo do compilador. Essa característica das linguagens de alto nível é 
conhecida por abstração e, em geral, desenvolver sistemas com linguagens de programação de alto 
nível é mais fácil e produtivo, em comparação à linguagem de máquina e à assembly.
A performance do software desenvolvido em linguagem de alto nível não é mesma de um 
programa escrito em assembly ou na linguagem de máquina. Entretanto, devido à sua complexidade, 
essas linguagens são utilizadas quando não é possível resolver determinado problema ou algum 
fator externo com linguagem de alto nível, como ocorre nas limitações de hardware. Na Figura 3, 
podemos ver um exemplo de linguagem de alto nível cujo código foi escrito em linguagem Python, 
que é derivada da linguagem C e surgiu na década de 1990, sendo aplicada basicamente em sistemas 
de internet. Devido à sua estrutura simplificada e otimizada para operar cálculos matemáticos, teve 
boa aceitação no meio científico e recentemente vem ganhando espaço em sistemas que processam 
grandes volumes de informação.
sintaxe: em 
linguagem de 
programação, 
é a estrutura de 
escrita de códigos 
e comandos 
utilizados.
Linguagens e paradigmas de programação14
Figura 3 – Exemplo de código em linguagem de alto nível
>>> numero1 = 20
>>> numero2 = 30
>>> soma = numero1 + numero2
>>> print(‘Resultado: ’, soma)
Resultado: 50
Fonte: Elaborada pelo autor.
Ao longo dos anos, os compiladores modernos passaram por diversas melhorias e 
aperfeiçoamentos. Atualmente, existem também otimizadores para aprimorar a performance do 
software gerado em linguagem de alto nível (AHO et al., 2008).
Na maioria dos sistemas que usamos diariamente, essa diferença na performance é quase 
imperceptível. Porém, existem aplicações críticas voltadas para áreas de saúde, aviação e sistemas 
industriais, por exemplo, que dependem de alto desempenho e de respostas instantâneas na 
resolução de cálculos e de diversas outras atividades. No caso desses produtos, as partes que 
compõem o software são desenvolvidas em linguagem de baixo nível a fim de obter o máximo 
desempenho e, assim, atender aos requisitos de resposta imediata, quando solicitado.
1.3 Aplicações das linguagens de programação
As linguagens de programação, desde seu surgimento, sempre tiveram o 
objetivo de auxiliar na escrita de programas para a realização de tarefas em um 
computador. Porém, em seus primórdios, as aplicações desenvolvidas eram 
voltadas à realização de cálculos para o meio científico e de engenharia.
Se comparadas aos computadores atuais, as primeiras máquinas eram grandes, 
de pouco desempenho e custavam muito caro – apenas órgãos governamentais e universidades de 
prestígio tinham funcionários qualificados e condições financeiras para mantê-las em operação. Na 
Figura 4, podemos ver o Eniac (Electronic Numerical Integrator and Computer), considerado o 
primeiro computador digital 
do mundo que, com seus 
componentes e interfaces 
para operação, ocupava o 
tamanho de uma sala. Sua 
capacidade resumia-se a realizar 
cálculos matemáticos, o que 
era considerado uma grande 
evolução para a época.
Com o passar dos anos 
e com a evolução da indústria 
eletrônica, existem processadores 
em miniatura que em alguns 
casos chegam a ser menores do 
Vídeo
Ev
er
et
t H
is
to
ric
al
/S
hu
tte
rs
to
ck
Figura 4 – Eniac, computador da década de 1940
Linguagens de programação 15
que uma unha. Na Figura 5, é possível conferir o grau de miniaturização com o exemplo de um 
microprocessador moderno.
Em comparação aos primeiros computadores, as máquinas atuais são milhares de vezes 
menores. A redução no tamanho dos processadores permitiu que fossem colocados dentro dos 
aparelhos, possibilitando, assim, a criação de diversos novos equipamentos. Além disso, essa 
evolução abriu caminho para o desenvolvimento de novas aplicações e sistemas, e influenciou a 
criação de outras linguagens de programação e o aperfeiçoamento das já existentes.
Figura 5 – Exemplo de um microprocessador de uso geral
IM
_V
IS
UA
LS
/S
hu
tte
rs
to
ck
Muitos equipamentos de uso doméstico, industrial, médico, militar, aeroespacial etc., 
que contêm um microcontrolador ou microprocessador e realizam algum processamento, têm 
programas em execução em sua parte interna. Alguns desses equipamentos resolvem problemas ou 
executam tarefas por conta própria, enquanto outros interagem em nossas atividades, fornecendo 
informações com entrada de dados das mais variadas maneiras.
Independentemente da forma de funcionamento, dentro desses equipamentos existem 
um ou mais programas em operação, que foram desenvolvidos com base em linguagens de 
programação. Se tomarmos como exemplo um relógio digital de pulso, veremos que, para 
mostrar as horas em seu visor, ele possui um processador interno cujo programa pode ser escrito 
em linguagem assembler ou linguagem C.
A evolução para a chamada computação pessoal, na qual as pessoas, de um modo geral, 
começaram a ter acesso aos computadores, ocorreu na década de 1970. Foi em 1977 que a Apple 
Computer começou a popularizar os computadores em ambientes domésticos e corporativos. Em 
1981, por sua vez, a IBM era a maior fornecedora de computadores do mundo e lançou sua versão de 
computador pessoal conhecido como IBM Personal Computer, consolidando o termo PC (personal 
computer), usado até hoje para designar computador. A partir desse momento, a computação 
pessoal chegou às residências, às empresas, aos órgãos governamentais e às indústrias, abrindo um 
leque de oportunidades para o desenvolvimento de softwares a fim de atender às carências desses 
segmentos (DEITEL, P.; DEITEL, H., 2010).
Linguagens e paradigmas de programação16Alguns anos mais tarde, com a chegada da internet, tanto as empresas quanto as pessoas 
começam a ter mais necessidade de trocar informações via rede, entre diferentes plataformas e 
sistemas, com a finalidade de reduzir as distâncias e o tempo nas comunicações. Isso gerou demandas 
para novas funcionalidades e adequações das linguagens de programação, de modo a dar suporte de 
comunicação via internet nos chamados sistemas distribuídos (DEITEL, P.; DEITEL, H., 2010).
Assim, diversos websites e sistemas de web, utilizados pelas pessoas e empresas, foram 
desenvolvidos com linguagem PHP, e muitos dos aplicativos que rodam hoje em smartphones ou 
smart TVs são desenvolvidos em linguagem Java.
Considerações finais
As linguagens de programação fazem parte de muitas das nossas tarefas, e até mesmo quem 
não é profissional da área e não mantém contado direto com esse meio está ligado a elas. Vários 
produtos e serviços que utilizamos em nossas vidas possuem tecnologias e sistemas que os tornam 
capazes de executar tarefas, tendo sido construídos com linguagens de programação.
Algumas das linguagens de programação clássicas mais conhecidas e ainda utilizadas 
são Cobol, Fortran, Pascal e Basic. Dentre as outras linguagens modernas mais conhecidas e 
amplamente aplicadas estão C++, C# (C Sharp), C, Java, PHP, JavaScript, Visual Basic e Python 
(TIOBE Software BV, 2020).
Os recursos atuais vêm sendo cada vez mais difundidos e integrados, bem como suas 
aplicações executadas em ambientes diversificados, como dispositivos móveis, computação em 
nuvem, relógios inteligentes, computadores e notebooks, servidores, sistemas eletrônicos, veículos, 
entre outros. Com as melhorias e os aperfeiçoamentos realizados nas redes de comunicação durante 
os últimos anos, a integração de diferentes plataformas vem crescendo, assim como acontece com o 
volume de dados operacionalizados diariamente.
O profissional de tecnologia da informação, como mencionado no início deste capítulo, tem 
uma ampla gama de áreas de atuação à sua escolha. Vimos também que a grande integração de 
sistemas e tecnologias faz com que as linguagens de programação estejam direta e indiretamente 
atreladas às tarefas cotidianas. Assim, o profissional que mais se destaca é aquele que está atualizado 
frente à tecnologia e sabe aproveitar o potencial dessas linguagens, aplicando-as de forma eficiente 
na construção de sistemas e no tratamento de dados.
Ampliando seus conhecimentos
• TIOBE Software BV. Tiobe Index for January 2020: January Headline – Programming Language 
C awarded Programming Language of the Year 2019. Disponível em: https://www.tiobe.com/
tiobe-index/. Acesso em: 06 jan. 2020.
Tiobe Index, como é conhecida, é uma pesquisa realizada pela empresa de consultoria 
em software Tiobe. Essa pesquisa apresenta um índice que produz um ranking com as 
linguagens de programação mais utilizadas no mercado.
Linguagens de programação 17
• PIRATAS do Vale do Silício. Direção: Martyn Burke. Produção: Steven Haft; Nick 
Lombardo; Leanne Moore; Joseph Dougherty. Roteiro: Paul Freiberger; Michael Swaine; 
Martyn Burke. Estados Unidos: Haft Entertainment, St. Nick Productions; TN, 1999. (95 
min.), son., color., 35 mm.
O filme Piratas do Vale do Silício mostra como a linguagem Basic esteve presente na 
ascensão da Microsoft, no ramo de softwares e sistemas operacionais.
Atividades
1. As linguagens de programação são ferramentas essenciais para o desenvolvimento de novas 
tecnologias e sistemas de informação. Dentro do setor de tecnologia da informação, a 
computação em nuvem vem ganhando destaque. Diante dessas informações, realize uma 
pesquisa e identifique as linguagens de programação mais utilizadas para o desenvolvimento 
de sistemas de computação em nuvem.
2. Sistema embarcado é um termo utilizado para o software executado em dispositivos específicos 
e normalmente aplicados a situações particulares, ao contrário dos computadores, que têm seu 
uso bem amplo. O software de controle de uma câmera fotográfica, por exemplo, pode ser 
classificado dessa forma, pois sua finalidade é somente gerenciar as funcionalidades da câmera; 
não é possível desenvolver outra atividade com a câmera a não ser fotografar ou gravar vídeos. 
A maioria dos softwares para sistemas embarcados é desenvolvida em linguagem C, pois suas 
características fazem com que ela seja umas das preferidas para essa finalidade.
Considere as informações expostas e realize uma pesquisa para identificar quais são as 
qualidades que caracterizam a linguagem C como sendo ótima para sistemas embarcados.
3. A linguagem HTML (hyper text markup language) é amplamente utilizada para o 
desenvolvimento de websites e, em muitos momentos, é confundida com linguagem de 
programação, sendo que sua definição correta é linguagem de marcação de texto. Nesse 
sentido, pesquise e apresente as diferenças entre linguagens de programação e linguagem de 
marcação de texto.
Referências
AHO, A. V. et al. Compiladores: princípios, técnicas e ferramentas. 2. ed. São Paulo: Pearson, 2008. p. 1-16.
COMPUTER HISTORY MUSEUM. Konrad Zuse. Disponível em: https://www.computerhistory.org/
fellowawards/hall/konrad-zuse/. Acesso em: 07 out. 2019.
DEITEL, P.; DEITEL, H. Java: como programar. 8. ed. São Paulo: Pearson, 2010. p. 3-7.
IBM. Fortran: the pioneering programming language. Disponível em: https://www.ibm.com/ibm/history/
ibm100/us/en/icons/fortran/. Acesso em: 10 out. 2019.
SILVA, E. L. da (org.). Programação de computadores. São Paulo: Pearson, 2015. p. 36-38.
TIOBE Software BV. Tiobe Index for January 2020: January Headline – Programming Language C awarded 
Programming Language of the Year 2019. Disponível em: https://www.tiobe.com/tiobe-index/. Acesso em: 
06 jan. 2020.
2
Tipos de linguagens de programação
Há diferentes paradigmas de linguagens de programação que são amplamente utilizados e estão 
relacionados com os domínios de aplicação desejados e com os métodos para a resolução de problemas.
Nesse contexto, podemos perceber que as próprias metodologias de desenvolvimento 
de sistemas computacionais estão em constante evolução e que novos recursos são 
permanentemente incorporados às linguagens da área, de modo a suprir as características 
emergentes de tais metodologias. Ademais, junto com as mudanças nas metodologias, surgem 
novas formas de implementação de elementos das linguagens.
Tendo em vista a relevância de conhecer as linguagens de programação, portanto, neste 
capítulo, estudaremos os principais paradigmas de programação e abordaremos de maneira mais 
aprofundada os conceitos relacionados às linguagens orientadas a objetos, estruturadas e funcionais.
2.1 Classificação das linguagens de programação
É importante ressaltar que cada linguagem de programação deve prover 
mecanismos que permitam a representação e a manipulação naturais dos elementos 
básicos pelos quais se orientam os problemas tratados.
A verificação de tipos, por exemplo, que é realizada no momento da compilação 
das linguagens tradicionais, é feita durante a execução em linguagens modernas. Ela se 
dá em decorrência do requisito existente nas metodologias de desenvolvimento mais atuais, as quais estão 
voltadas à flexibilidade e à representação de dados, objetos e relações (MELO; SILVA, 2014).
As linguagens de programação podem ser organizadas em dois grandes grupos: assertivas e 
declarativas. São, ainda, subdividas em outras categorias, conforme apresenta a Figura 1.
Figura 1 – Classificação das linguagens de programação
Declarativas 
Imperativas
C
Pascal
Fortran 
Orientada a objetos
C++
Java
C#
Funcionais
Lisp
Miranda 
Haskell
Declarativas
Prolog
Gödel 
Satisfação de 
restrições
Mozart/OZ
Alice
Linguagens de programação
Assertivas
Fonte: Elaborada pelo autor.
Vídeo
Linguagens e paradigmas de programação20
As linguagens assertivas baseiam-se em expressões que modificam valores de entidades 
(dados ou objetos), e as linguagens declarativas têm base em expressões que verificamou induzem 
relações entre as declarações.
Quanto às subdivisões das linguagens de programação assertivas, temos:
• Orientadas a objetos: podem ser vistas como ferramentas para construir soluções de 
problemas, organizando seus elementos com representações de coisas do mundo real.
• Imperativas: também conhecidas como estruturadas, são orientadas por dados e podem 
ser consideradas instrumentos para a resolução de problemas.
As linguagens declarativas podem ser como ferramentas para a construção de soluções de 
problemas orientados por relações entre declarações – nesse caso, os elementos representados são, 
respectivamente, objetos, dados e relações.
Cada parte dessa metodologia apresenta características que a tornam mais apropriada para 
certos problemas. Ainda, essas características determinam os recursos e as propriedades sintáticas 
e semânticas desejáveis nas linguagens de programação correspondentes.
Por fim, podemos considerar que um paradigma de programação está diretamente relacio-
nado à forma de pensar do desenvolvedor e ao modo como ele busca a solução para um problema. 
É esse paradigma que permite ou não a utilização de determinadas técnicas de programação.
2.2 Linguagens de programação estruturadas
O paradigma de programação estruturada é fundamentado no conceito da 
Máquina de Turing. Na década de 1930, o pesquisador Alan Turing1, razão do nome 
dessa programação, elaborou uma abstração matemática para um conjunto de 
funções computáveis. Essa caracterização das funções computáveis foi aproximada 
por John von Neumann2 a uma arquitetura de computadores que se tornou a base 
para o que até hoje é utilizado.
A programação estruturada obedece a uma sequência de comandos pré-determinados 
e organizados para resolver um problema de forma sequencial, ou seja, instruções de código 
preparadas linha por linha. Isso ocorre porque a programação estruturada tem suas origens 
relacionadas à arquitetura de computadores, que inicialmente eram programados em sequências 
ordenadas de códigos e instruções de máquina.
Segundo o paradigma estruturado, qualquer problema pode ser resolvido utilizando três 
estruturas: sequencial, condicional e iterativa. Vale ressaltar que esse paradigma procura encontrar 
uma forma de quebrar qualquer problema complexo em partes menores e mais simples, de modo 
que, trabalhando em conjunto, pode-se solucioná-lo (ASCENCIO; CAMPOS, 2007).
1 Alan Turing (1912-1954) foi um matemático e criptoanalista que, por meio da Máquina de Turing, sua invenção, 
influenciou o desenvolvimento da ciência da computação e a formalização do conceito de algoritmo.
2 John von Neumann (1903-1957) foi um matemático que, entre importantes contribuições, sugeriu armazenar 
instruções na memória do computador para serem executadas mais rapidamente. Com isso, formalizou o primeiro projeto 
lógico de um computador.
Vídeo
Tipos de linguagens de programação 21
A programação estruturada é baseada em três conceitos para a resolução de problemas:
• Variáveis: recursos utilizados para armazenamento de dados em memória. 
• Estados: resultados de operações lógicas, de decisão ou cálculos realizados com os 
conteúdos armazenados em variáveis.
• Comandos: utilizados para atribuir valor a variáveis e controlar as ações e instruções em 
execução dentro de um programa.
A correta utilização dessas estruturas resulta em soluções modularizadas, que conseguem 
usar uma quantidade menor de linhas de código otimizando o desempenho do sistema.
As linguagens de programação estruturadas têm sido aplicadas em várias áreas do mercado. 
Grande parte dos sistemas bancários e dos projetos científicos de universidades e órgãos de 
pesquisas é desenvolvida a partir de linguagens estruturadas.
Um dos motivos de sua grande aplicação é de caráter histórico: os primeiros projetos de 
linguagens de programação utilizados comercialmente foram baseados no paradigma estruturado. 
Outro motivo de sua grande aplicabilidade é a proximidade dessas linguagens com a máquina, 
o que faz com que sejam implementadas de maneira mais eficiente que algumas linguagens em 
outros paradigmas de programação.
2.3 Linguagens de programação orientadas a objetos
O paradigma de programação orientada a objetos tem como objetivo 
principal solucionar problemas pela colaboração de vários elementos, similar à 
forma como usamos a prestação de serviços de outras pessoas para resolver vários 
problemas do cotidiano.
A ideia da prestação de serviços pode ser exemplificada pelas situações 
diárias. Imagine que precisamos realizar uma viagem e reservar um quarto de hotel, então, podemos 
acessar um sistema web, escolher o hotel desejado e proceder com a reserva. Quando requisitamos 
um serviço como no exemplo, não precisamos saber como o site de reservas faz para contatar o 
hotel e garantir o quarto; precisamos apenas acessar o serviço on-line e realizar o processo pelo 
sistema, sem a necessidade de participar ou interferir diretamente na negociação.
Perceba que na situação descrita nos abstraímos da forma como o serviço foi realizado, 
interagindo apenas com o serviço on-line (objeto) de reserva de quartos e esperando pelo 
resultado. Esse modelo de prestação de serviços por agentes apropriados é a base para o paradigma 
de programação orientada a objetos, e a metodologia que se aplica a esse paradigma tem como 
princípio a distribuição de serviços e responsabilidades para reduzir a complexidade de um dos 
colaboradores.
Nos últimos anos, as áreas de aplicação das linguagens de programação orientadas a objetos 
têm expandido. Essas linguagens foram criadas, juntamente com seus ambientes, para dar suporte 
ao desenvolvimento de sistemas mais complexos e, por esse motivo, são aplicadas a novos sistemas 
comerciais. O crescente uso dessas linguagens ocorre principalmente pelo desenvolvimento 
de novas metodologias de sistemas que empregam o paradigma de orientação a objetos. Nesse 
Vídeo
Linguagens e paradigmas de programação22
contexto, podemos observar que a maioria dos sistemas web são construídos com base na 
orientação a objetos.
Com o aumento da complexidade dos problemas computacionais que precisam ser 
solucionados, surgiu a necessidade de se dividir um programa em partes menores. A fim de 
resolver problemas pela colaboração entre vários agentes – por sua vez responsáveis apenas por seus 
serviços –, passou-se também a prover recursos às linguagens de programação para dar suporte a 
essa ideia.
O conceito da programação orientada a objetos teve início com a linguagem Simula 673, mas 
foi com a linguagem Smalltalk4, na década de 1980, que obteve um melhor alcance. Vale salientar 
que a Smalltalk até hoje é considerada, por alguns autores, como a única linguagem de programação 
puramente orientada a objetos (MELO; SILVA, 2014).
Sob o ponto de vista computacional, devemos ter objetos capazes de prover serviços sob a 
sua própria responsabilidade – isso requer que os objetos sejam proprietários dos seus estados e que 
possam dar soluções próprias aos serviços requisitados. As linguagens de programação orientadas 
a objetos permitem a criação de objetos considerados entidades computacionalmente ativas, que 
armazenam um conjunto de dados (atributos) e os serviços (métodos) que esse objeto pode prover.
Para permitir a colaboração computacional dos objetos, também é preciso possuir os meios 
para realizar a comunicação entre eles (mensagens). Assim, uma vez que o objeto tem um serviço 
requisitado, por meio da mensagem recebida, sua responsabilidade é processar a mensagem e, 
dentro do seu contexto, realizar esse serviço.
Ao usuário, os passos necessários para a execução do serviço não são relevantes, porém, os 
resultados sim. Nas linguagens orientadas a objetos, existe o conceito de classes cuja finalidade é 
agrupar objetos que possuam um mesmo comportamento, definido por meio de abstrações. Para 
fornecer um sistema de classificação, é necessário que tenhamos a relação entre as classes segundo 
a noção de hierarquiaorganizada pelo mecanismo de herança, sendo esta compreendida como 
uma forma de organizar diferentes objetos com atributos iguais sob um mesmo nome de classe.
O funcionamento de um programa orientado a objetos pode ser visto como a ativação de 
objetos, mediante sua criação e colaboração entre objetos ativos. Como cada objeto é responsável 
pelos seus próprios dados (estado) e transformações (métodos), o estado do programa é assumido 
como um conjunto de estados dos objetos ativos.
3 “Dois noruegueses, Kristen Nygaard e Ole-Johan Dahl, desenvolveram a linguagem Simula I entre 1962 e 1964, no 
Centro de Computação Norueguês (NCC), em Oslo. Eles estavam inicialmente interessados em usar computadores 
para simulação, mas também trabalhavam em pesquisa operacional. [...] Quando a implementação de Simula I estava 
concluída, Nygaard e Dahl começaram os esforços para estender a linguagem, adicionando novos recursos e modificando 
algumas das construções existentes para torná-la útil para aplicações de propósito geral. O resultado desse trabalho foi 
Simula 67, cujo projeto foi apresentado publicamente pela primeira vez em março de 1967” (DAHL; NYGAARD, 1967 apud 
SEBESTA, 2018, p. 70). 
4 “Muitos acreditam que Smalltalk é a linguagem de programação orientada a objetos definitiva. Ela foi a primeira a 
incluir suporte completo para esse paradigma. [...] é uma linguagem pequena, apesar de o sistema Smalltalk ser grande. 
A sintaxe da linguagem é simples e altamente regular” (SEBESTA, 2018, p. 499-500). 
Tipos de linguagens de programação 23
A solução computacional de um problema no paradigma orientado a objetos, portanto, é 
entendida a partir de quais objetos são necessários e como irão cooperar entre si. Dessa forma, os 
objetos tornam-se entidades computacionais independentes e resolver o problema significa fazê-lo 
com cada uma dessas unidades, incluindo a comunicação entre elas.
Conforme vimos anteriormente, classes são uma maneira de identificar tipos abstratos, 
ou seja, os dados que o objeto deve conter são identificados pelos seus atributos, os quais 
têm a função de guardar os valores necessários ao estado do objeto. O comportamento que 
uma classe assume é identificado por entidades, denominadas métodos, que, por sua vez, são 
utilizadas para realizar ações, responder a chamadas e colaborar com outros objetos em um 
programa. De acordo com a Figura 2, é possível verificar um exemplo de classe para abstrair a 
representação de um carro e suas funcionalidades dentro de um programa orientado a objetos, 
usando a linguagem de programação Java.
Figura 2 – Exemplo de classe em linguagem Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
public class Carro
{
 //Atributos para identificar e armazenar dados
 int ano;
 String modelo;
 String marca;
 String chassi;
 double valor;
 //Métodos que representam as funcionalidades do carro
 public void ligar() {
 
 }
 public void acelerar() {
 }
 public void frear() {
 }
 public void desligar() {
 }
}
Fonte: Elaborada pelo autor.
Dentro do paradigma de programação orientada a objetos, as classes podem ser representadas 
graficamente. Dessa forma, projetos de maior complexidade podem ser modelados, ilustrando 
seus atributos e métodos e, de maneira mais clara, verificando as relações entre os diversos objetos 
de um projeto de software. Na Figura 3, observamos um exemplo de modelagem da classe carro, 
apresentada anteriormente.
Linguagens e paradigmas de programação24
Figura 3 – Exemplo de uma classe
Carro
 ano: Integer
 marca: String
 modelo: String
 chassi: String
 valor: Double
 void ligar ( )
 acelerar ( )
 frear ( )
 desligar ( )
Fonte: Elaborada pelo autor.
2.4 Linguagens de programação funcionais
O paradigma de programação funcional surgiu no início da década de 1960, 
a partir da necessidade dos pesquisadores no desenvolvimento de inteligência 
artificial, computação simbólica, prova de teoremas, sistemas baseados em regras e 
processamento de linguagem natural. Naquela época, as linguagens de programação 
estruturadas disponíveis não supriam satisfatoriamente essas necessidades.
Uma das primeiras linguagens de programação funcional foi a Lisp, desenvolvida por John 
McCarthy5, em 1960. Essa linguagem serve basicamente para o processamento simbólico de 
dados, sendo aplicada em cálculos diferenciais e integrais, projetos de circuitos elétricos, lógica 
matemática, jogos e alguns campos da inteligência artificial (TUCKER; NOONAN, 2010).
A característica fundamental das linguagens de programação funcionais é a computação vista 
como uma função matemática mapeando entradas e saídas, diferente do paradigma estruturado no 
qual não existe uma noção de estado, não sendo, assim, preciso instruções de atribuição. Dessa forma, 
o efeito de um laço é obtido via repetição, pois não há um modo de incrementar ou decrementar 
o valor de uma variável no estado, já que não há variáveis. Embora algumas linguagens funcionais 
suportem as noções de variáveis, atribuição e laço, é importante destacar que esses elementos não 
fazem parte do modelo puro de programação funcional (TUCKER; NOONAN, 2010).
A programação funcional resolve problemas computacionais a partir da avaliação de 
funções matemáticas, evitando alteração de estados e geração de dados que se modificam ao longo 
da execução de um programa, como acontece na programação estruturada. Como o paradigma 
funcional é regido por funções, estas, quando definidas dentro de um sistema, devem retornar 
como um dado ou até mesmo uma outra função durante sua execução.
5 John McCarhy (1927-2011) foi um cientista da computação com importantes estudos no campo da inteligência 
artificial, responsável por criar a linguagem de programação Lisp.
Vídeo
Tipos de linguagens de programação 25
Um programa funcional envolve um processo computacional, portanto, que ocorre por 
meio de transformações, conhecidas como reduções, embora a redução de uma expressão funcional 
não a torne, necessariamente, mais simples. Vejamos o exemplo:
Sem fazer uso de uma notação específica para programas funcionais, 
podemos considerar a função f(x) = xx. Se x = 4, a expressão inicial 44 é 
reduzida para o valor 256, embora 44 tenha somente dois dígitos e 256 
tenha três.
Um programa funcional é composto por uma única expressão, a qual descreve em detalhes 
uma função e um elemento de domínio dessa mesma função. A redução de um programa consiste 
na substituição de uma parte da expressão original obedecendo a certas regras de reescrita. As 
regras de reescrita são organizadas geralmente em três propriedades: correção, confluência e 
terminação.
A correção é uma propriedade semântica e, para que seja válida em qualquer expressão, é 
imprescindível que alguma convenção para codificar funções e seus parâmetros seja obedecida. 
Já a confluência e a terminação são propriedades sintáticas, pois independem de como os 
símbolos no programa são interpretados. A combinação dessas duas propriedades permite que 
sejam construídas estratégias genéricas para reduzir a expressão, as quais são computacionalmente 
eficientes e capazes de resolver qualquer problema cotidiano como um programa funcional.
A base formal para construir um conjunto de regras de reescrita, conforme explanado, que 
seja conveniente para a programação puramente funcional, chama-se lambda e consiste em um 
cálculo desenvolvido em 1930 pelo matemático Alonzo Church. Esse cálculo possui três operações 
básicas: substituição, aplicação e abstração (MELO; SILVA, 2014). Vejamos:
• Substituição: troca textual de todas as ocorrências de uma variável em uma expressão por 
outra expressão. Se F e G são expressões, a substituição F [X ← G] denota a expressão F 
com todas as ocorrências da variável X trocadas por G.
• Aplicação: avaliação de uma função para um dado elemento de seu domínio. Se F é a 
expressão que codifica uma função e A é um elemento de seu domínio, a aplicação (F)A 
denota o valor de F em A.
• Abstração: recurso básico paracodificar funções, indicando quais símbolos em uma 
expressão são variáveis. Se F é uma expressão, então λX.F é o mapeamento de todos os 
valores que a variável X pode assumir para as substituições das ocorrências de X em F por 
aqueles valores.
Entre as opções das linguagens de paradigma funcional existe a linguagem Haskell, que é 
amplamente utilizada para fins científicos. Na Figura 4, podemos ver um exemplo de aplicação de 
linguagem Haskell para a resolução do cálculo do fatorial de um número.
Linguagens e paradigmas de programação26
Figura 4 – Exemplo de código em linguagem Haskell
1
2
3
4
5
6
7
module Main where
fatorial n = if n = = 0 then 1 else n * fatorial (n – 1)
main = do putStrLn "Quanto é 5! ?"
 x <- readLn
 if x = = fatorial 5
 then putStrLn “Você acertou!”
 else putStrLn “Você errou!” 
Fonte: Elaborada pelo autor.
Algumas linguagens de programação mais modernas conseguem operar de maneira mista, 
como é o caso da linguagem Python, que consegue implementar o paradigma orientado a objetos 
e também permite aos desenvolvedores construírem soluções com códigos escritos em paradigma 
funcional.
Considerações finais
Em comparação com os tradicionais paradigmas de programação imperativo (estruturado) 
e programação orientada a objetos, o paradigma de programação funcional vem ganhando a 
atenção de grandes empresas nos últimos anos. Sites respeitados, como GitHub6 e Stack OverFlow7, 
mostram que as linguagens funcionais estão aumentando gradativamente sua presença no mercado. 
Isso não significa que os paradigmas estruturados ou a orientação a objetos serão substituídos pela 
linguagem funcional, mas, sim, que cada paradigma tem a sua aplicação e a forma de resolução de 
problemas pode ser mais bem desenvolvida com a utilização de um paradigma de programação 
adequado.
O mundo da tecnologia está em constante evolução, e o crescente volume de dados abre 
espaço para a exploração de novas linguagens de programação, além da experimentação dos 
paradigmas. Áreas de machine learning, mineração de dados e inteligência artificial, por exemplo, 
conseguem obter resultados mais expressivos com linguagens de programação funcionais. Já as 
linguagens imperativas, como a linguagem C, têm grande mercado em sistemas eletrônicos e 
programação de baixo nível.
No mercado atual, as tecnologias e os sistemas trabalham de modo mais integrado devido 
às constantes melhorias em hardware e redes de comunicação, por isso, atualmente temos outros 
exemplos de serviços e aplicações que são compostos por softwares desenvolvidos em mais de 
um paradigma de programação. Problemas complexos exigem, em muitos casos, integração com 
diferentes sistemas e cada ponto de processamento e/ou coleta de informação pode se beneficiar 
de uma correta aplicação de paradigmas de programação, visando a sistemas mais eficientes que 
sejam capazes de entregar resultados de relevância para seus usuários.
6 Site de hospedagem de projetos git, disponível em: https://github.com/.
7 Site de perguntas e respostas, disponível em: https://pt.stackoverflow.com/. 
Tipos de linguagens de programação 27
Ampliando seus conhecimentos
• PARADIGMAS de programação. 2016. 1 vídeo (7min13s). Publicado pelo canal Código 
Fonte TV. Disponível em: https://www.youtube.com/watch?v=EefVmQ2wPlM. Acesso 
em: 1 out. 2019.
PROGRAMAÇÃO orientada a objetos (POO): dicionário do programador. 2018. 1 vídeo 
(9min56s). Publicado pelo canal Código Fonte TV. Disponível em: https://www.youtube.
com/watch?v=QY0Kdg83orY. Acesso em: 1 out. 2019.
• PROGRAMAÇÃO funcional: dicionário do programador. 2019. 1 vídeo (8min15s). 
Publicado pelo canal Código Fonte TV. Disponível em: https://www.youtube.com/
watch?v=BxbHGPivjdc. Acesso em: 1 out. 2019.
O canal de vídeos Código Fonte TV apresenta conteúdo relevante dentro da área de 
tecnologia da informação e de linguagens de programação. Os vídeos selecionados trazem 
explicações acerca do contexto geral dos paradigmas de programação e abordam detalhes 
das linguagens de programação funcionais e orientadas a objetos.
Atividades
1. O paradigma de programação orientada a objetos é muito difundido atualmente no mercado 
para o desenvolvimento de aplicações comerciais, industriais, financeiras, sistemas na 
internet, dentre outros. Considerando as mais variadas aplicações de orientação a objetos, 
realize uma pesquisa e apresente três linguagens de programação orientada a objetos:
a) Uma utilizada em sistemas web.
b) Uma aplicada em sistemas bancários/financeiros.
c) Uma usada em sistemas de gestão empresarial.
2. O paradigma estruturado, também conhecido como imperativo, tem muita relevância em 
projetos de sistemas embarcados (hardware). Uma das principais linguagens para esse 
mercado é a linguagem C que, apesar de ter mais de três décadas, ainda é amplamente 
utilizada. Considerando isso, explique o que justifica sua enorme aplicação.
3. Nos últimos anos, o paradigma de programação funcional vem ganhando um espaço 
significativo no mercado. Dentre suas mais variadas aplicações, cite duas linguagens 
funcionais de relevância em aplicações para internet.
Linguagens e paradigmas de programação28
Referências
ASCENCIO, A. F. G.; CAMPOS, E. A. V. de. Fundamentos da programação de computadores. 2. ed. São Paulo: 
Pearson, 2007.
MELO, A. C. V. de; SILVA, F. S. C. da. Princípios de linguagens de programação. São Paulo: Blucher, 2014.
SEBESTA, R. W. Conceitos de linguagens de programação. 11. ed. Porto Alegre: Bookman, 2018.
TUCKER, A. B.; NOONAN, R. E. Linguagens de programação: princípios e paradigmas. 2. ed. São Paulo: Mc 
Graw Hill, 2010.
3
Tipos de dados em linguagens de programação
Antes de iniciarmos os estudos dos tipos de dados utilizados em programação, precisamos 
entender não apenas os conceitos de variáveis e constantes, mas também como se dá a sua utilização 
em algoritmos desenvolvidos nas mais variadas linguagens. Dados e variáveis são recursos de 
extrema importância em um sistema computacional, pois todas as informações nele tratadas 
necessitam ser armazenadas em memória. Além de armazenar dados, os sistemas precisam 
identificar com que tipo de informação estão trabalhando. Dentro de um software, existem dados 
numéricos, lógicos, textuais e outros. Por esse motivo, veremos neste capítulo o que são dados em 
linguagens de programação e como criá-los em seus diferentes tipos.
3.1 Definição de dados em linguagens de programação
Um programa de computador recebe e processa dados, que precisam ser 
armazenados no computador para serem utilizados no processamento. Esse 
armazenamento, por sua vez, é feito na memória do computador, e, quanto maior 
a memória, mais dados poderão ser armazenados para que o programa realize o 
tratamento deles.
Todo o trabalho feito por um computador se baseia na manipulação dos dados contidos em 
sua memória. Segundo Ascencio e Campos (2007), os tipos de dados mais comuns, denominados 
primitivos, são:
• números inteiros;
• números reais;
• caracteres;
• valores lógicos.
As linguagens de programação sempre proverão um conjunto básico de tipos de dados para 
o desenvolvimento de algoritmos, baseado nesses tipos primitivos que serão estudados em detalhes 
nas próximas seções.
O funcionamento de um programa de computador é baseado no sistema numérico binário. 
Nele, os dados são transformados em sequências de zero e um (0 e 1) para serem armazenados em 
memória. Os conjuntos de dados organizados pelos dígitos binários (0 e 1) são chamados bits e 
ocupam porções de memória denominadas bytes, que estão agrupadas em conjunto de 8 bits. Cada 
byte em memória é identificado por meio de um endereço (TUCKER; NOONAN, 2009).
Vídeo
Linguagens e paradigmas de programação30
Variável é um nome para fazer referência a um endereço de memória. Esse endereço é onde 
será armazenado um tipo de dado, que pode ser lógico, numérico ou em caracteres. Toda vez que 
o programa fizer uma referência a uma variável, será lido ou registrado um conteúdono endereço 
de memória correspondente.
Todo computador possui uma tabela de alocação que contém o nome da variável, seu tipo 
(para determinar quantos bytes serão necessários) e o seu endereço inicial de armazenamento. 
Assim, quando um algoritmo necessita buscar alguma informação em memória, basta saber o nome 
da variável para que o computador, por meio da tabela de alocação, possa buscá-la automaticamente 
(TUCKER; NOONAN, 2009).
As variáveis, como mencionado, são nomes que fazem referência a um endereço de memória 
e armazenam dados utilizados pelo programa. Elas estão sujeitas a modificações de conteúdo ao 
longo da execução de um programa. Mesmo que a variável assuma valores diferentes, ela tem a 
capacidade de armazenar apenas um valor a cada instante.
Em complemento ao uso de variáveis, existem as constantes, que são dados com valores fixos 
e que não se alteram ao longo da execução de um algoritmo. Da mesma forma que as variáveis, as 
constantes ocupam espaço em memória e possuem uma tabela de alocação com seus endereços de 
início, apenas com a diferença de não sofrerem alteração no conteúdo armazenado.
Independentemente da linguagem de programação utilizada, a lógica de aplicação de 
variáveis é a mesma, ocorrendo variações apenas na sintaxe (forma de escrita do código). 
Representando recursos importantes ao desenvolvimento de programas de computadores, 
uma vez que por meio delas um algoritmo armazena os dados do problema, as variáveis e 
constantes são consideradas os elementos básicos que um programa manipula. Isso implica 
dizer que as variáveis e as constantes armazenam dados em memória durante o funcionamento 
de um programa de computador.
“As expressões fazem a combinação entre as variáveis e as constantes para calcular novos 
valores” (ALMEIDA, 2008, p. 26). As expressões lógicas e matemáticas desenvolvidas em um 
programa de computador são responsáveis por combinar variáveis e constantes, para acessar seus 
valores realizando leitura ou modificação dos valores contidos em memória.
3.2 Dados primitivos em linguagens de programação
As linguagens de programação proveem um conjunto básico de dados para 
a elaboração de algoritmos, e a esse conjunto comumente chamamos de dados 
primitivos, que são tipos de dados utilizados na ciência para a representação de 
informações elementares. São, normalmente, números inteiros, números reais 
(com casas decimais, fracionários), caracteres (letras, números) e valores lógicos 
(booleanos, verdadeiro ou falso) (ASCENCIO; CAMPOS, 2007).
Vídeo
Tipos de dados em linguagens de programação 31
Os números inteiros são os dados numéricos positivos ou negativos, eliminando desses 
qualquer parte fracionária, incluindo o número zero. Nas Figuras 1 e 2, a seguir, podemos verificar 
um exemplo de cálculo de soma com números inteiros na linguagem de programação Java e na 
linguagem C++, respectivamente.
Figura 1 – Exemplo com números inteiros em linguagem Java
1
2
3
4
5
6
7
8
9
public class Main
{
 public static void main(String[] args) {
 int numero01 = 12;
 int numero02 = 25;
 int soma = numero01 + numero02;
 System.out.println("O valor da soma é:" + soma);
 }
}
Fonte: Elaborada pelo autor.
Figura 2 – Exemplo com números inteiros em linguagem C++
1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main()
{
 int numero01 = 12;
 int numero02 = 25;
 int soma = numero01 + numero02;
 printf("O valor da soma é: %d", soma);
 return 0;
}
Fonte: Elaborada pelo autor.
Já os números reais são os dados numéricos, positivos e negativos, que possuem parte 
decimal. Em linguagens de programação, também são conhecidos como números de ponto 
flutuante, pois a parte decimal é separada da parte inteira com um ponto que pode “flutuar” 
tanto para a direita como para a esquerda. Nas Figuras 3 e 4, a seguir, podemos ver exemplos 
de algoritmos realizando operações com números reais nas linguagens C++ e Python, 
respectivamente.
Linguagens e paradigmas de programação32
Figura 3 – Exemplo com números reais em linguagem C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#include <stdio.h>
int main()
{
 float numero01;
 float numero02;
 float resultado;
 printf("Digite o número 1: \n");
 scanf("%f", &numero01);
 printf("Digite o número 2: \n");
 scanf("%f", &numero02);
 resultado = numero 01 + numero 02;
 printf("O resultado da soma é: %.2f", resultado);
 return 0;
}
Digite o número 1:
12.45
Digite o número 2:
45.89
O resultado da soma é: 58.34
Fonte: Elaborada pelo autor.
Figura 4 – Exemplo com números reais em linguagem Python
>>> numero01: float
>>> numero02: float
>>> resultado: float
>>> print('Digite o número 1')
Digite o número 1
>>> numero01: float(input())
12.89
>>> print('Digite o número 2:')
Digite o número 2:
>>> numero02: float(input())
45.56
>>> resultado = numero01 + numero02
>>> print('o resultado da soma é:', resultado)
o resultado da soma é: 58.45
Fonte: Elaborada pelo autor.
Os caracteres são sequências compostas por uma letra e um sinal de mais ( + ), podendo ser 
agrupados dados numéricos com letras, formando, assim, sequências alfanuméricas. Os caracteres 
Tipos de dados em linguagens de programação 33
são mostrados entre aspas e conhecidos, também, como tipo string, literal ou cadeia. As Figuras 5 e 
6, a seguir, exemplificam o uso de caracteres em linguagens Java e C++, respectivamente. Algumas 
linguagens de programação fazem uma diferenciação, utilizando aspas duplas para identificar 
sequência de caracteres e aspas simples para indicar apenas um caractere.
Figura 5 – Exemplo com caracteres em linguagem Java
1
2
3
4
5
6
7
8
9
public class Main
{
 public static void main(String[] args) {;
 char letra = 'a';
 String palavra = "Linguagem de Programação Java";
 System.out.println("A variável letra contém: "+ letra);
 System.out.println("A variável palavra contém: "+ palavra);
 }
}
A variável letra contém: a
A variável palavra contém: Linguagem de Programação Java
Fonte: Elaborada pelo autor.
Figura 6 – Exemplo com caracteres em linguagem C++
1
2
3
4
5
6
7
8
#include <stdio.h>
int main()
{
 char letra = 'a';
 char *palavra = "Linguagem de Programação C++";
 printf("A variável letra contém: %c\n", letra);
 printf("A variável palavra contém: %s", palavra);
}
A variável letra contém: a
A variável palavra contém: Linguagem de Programação C++
Fonte: Elaborada pelo autor.
Por fim, os valores lógicos são os dados com valor verdadeiro ou falso; ou, dependendo 
da linguagem de programação, podem ser representados pelos números zero e um, sendo que 
apenas esses dois valores são suportados. O tipo lógico também é chamado de booleano devido à 
contribuição do filósofo e matemático inglês George Boole1 à área da lógica matemática. As Figuras 
7 e 8, a seguir, apresentam exemplos de aplicação do tipo booleano nas linguagens de programação 
Java e C++, respectivamente.
1 Geroge Boole (1815-1864) foi um matemático e filósofo britânico que criou a álgebra booleana, trabalho fundamental 
para o posterior desenvolvimento da programação e da computação moderna.
Linguagens e paradigmas de programação34
Figura 7 – Exemplo com valores lógicos em linguagem Java
1
2
3
4
5
6
7
8
9
public class Main
{
 public static void main(String[] args) {;
 boolean opcao01 = true;
 boolean opcao02 = false;
 System.out.println("O status da opção 01 é: "+ opcao01);
 System.out.println("O status da opção 02 é: "+ opcao02);
 }
}
O status da opção 01 é: true
O status da opção 02 é: false
Fonte: Elaborada pelo autor.
Figura 8 – Exemplo com valores lógicos em linguagem C++
1
2
3
4
5
6
7
8
9
#include <stdio.h>
int main()
{
 bool opcao01 = true;
 bool opcao02 = false;
 printf("O status da opção 01 é: %d/n", opcao01);
 printf("O status da opção 02 é: %d/n", opcao02);
}
O status da opção 01 é : 1
O status da opção 02 é : 0
Fonte: Elaborada pelo autor.
3.3 Criação de dados em linguagensde programação
No processo de desenvolvimento de determinados algoritmos e programas de 
computador, é necessário criar tipos de dados quando os primitivos não satisfazem 
às necessidades de uma aplicação de software. Normalmente, a criação de dados 
específicos em um sistema se torna útil quando é necessário agrupar mais de um tipo 
de dado para identificar objetos ou coisas do mundo real. Esses objetos, em sua maioria, 
são compostos por mais de um tipo de dados de diferentes valores (DEITEL, P.; DEITEL, H., 2010).
Vamos imaginar que estamos desenvolvendo um algoritmo para gerenciar informações de 
veículos com o valor, modelo, ano, proprietário e placa. As informações descritas são de tipos 
diferentes e podem ser classificadas da seguinte forma:
• Valor = número real.
• Modelo = sequência de caracteres.
• Ano = número inteiro.
• Proprietário = sequência de caracteres.
• Placa = sequência de caracteres.
Vídeo
Tipos de dados em linguagens de programação 35
Os dados necessários para identificar não podem ser agrupados em uma variável, pois são 
de tipos diferentes. Porém, as linguagens de programação dão suporte à criação de estruturas 
específicas para agrupar tipos de dados diferentes sob um mesmo nome de variável. As linguagens 
de programação orientadas a objetos, por sua vez, dão suporte à solução desse problema por meio 
da criação de classes, nas quais são agrupados os tipos de dados necessários; outras linguagens de 
programação dão suporte usando o conceito de estruturas.
Agora, analisaremos a criação de tipos em linguagem C com a utilização de estruturas 
(structs) e de objetos em linguagem Java.
As structs são as variáveis de tipo simples e armazenam apenas valores básicos, ou seja, números 
inteiros, números reais ou caracteres. Para armazenar valores mais elaborados em linguagem C, podem 
ser criadas estruturas (structs) que definem tipos novos de variáveis a partir dos tipos básicos existentes 
(int, char, float, double, bool). As estruturas são utilizadas em casos nos quais é necessário agrupar em 
um local de memória dados que sejam de tipos diferentes, porém atribuídos e acessíveis por um único 
nome de variável. Dessa forma, é possível definir elementos em um sistema de computador que sejam 
mais aproximados ao modo como os seres humanos os identificam.
O exemplo que citamos (gerenciamento de informações de veículos) pode ser elaborado em 
linguagem C++. Vejamos a Figura 9:
Figura 9 – Criação de estruturas em linguagem C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <stdio.h>
struct veiculo
{
 int ano;
 float valor;
 char *modelo;
 char *proprietário;
 char *placa;
};
int main()
{
 veiculo v1; //declaração de uma variável do tipo veículo
 v1.ano = 2015;
 v1.valor = 21590.0;
 v1.modelo = "Fusca";
 v1.proprietario = "Ana Maria";
 v1.placa = "XYZ-4567";
 printf("O valor do carro %s é: R$ %.2f/n", v1.modelo, v1.valor);
 return 0;
}
O valor do carro Fusca é: R$ 21590.00
Fonte: Elaborada pelo autor.
Linguagens e paradigmas de programação36
A palavra struct, na linguagem C, refere-se à criação de estruturas (no exemplo, à identificação 
de veículos) e permite criar um tipo de dado próprio.
Nos programas de computador, é comum os desenvolvedores criarem seus próprios tipos 
de dados, pois os dados primitivos fornecidos pelas linguagens suprem somente as necessidades 
básicas dos algoritmos, deixando o desenvolvedor livre para criar. Na Figura 10, a seguir, podemos 
observar o exemplo da criação de um tipo veículo, de acordo com o que vimos a respeito da 
identificação de veículos, na linguagem Java. Essa linguagem, diferentemente da linguagem C, não 
possui o recurso de estruturas, mas a criação de novos tipos é suportada pelo conceito de classes e, 
posteriormente, com a instanciação de objetos.
Figura 10 – Criação de objetos em Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Main
{
 public static class Veiculo
 {
 int ano;
 double valor;
 String modelo;
 String proprietário;
 String placa;
 }
 public static void main(String[] args)
 {
 Veiculo v1 = new Veiculo90;//Criação de um objeto do tipo carro
 v1.ano = 2015;
 v1.valor = 21590.0;
 v1.modelo = "Fusca";
 v1.proprietario = "Ana Maria";
 v1.placa = "XYZ-4567";
 System.out.println(v1.roprietario "possui um" v1.modelo);
 }
}
Ana Maria possui um Fusca
Fonte: Elaborada pelo autor.
Na sequência, dada a sua relevância, serão trabalhados os conceitos do paradigma de 
programação orientada a objetos com a utilização da linguagem de programação Java, além de 
diversos exemplos de aplicação da sintaxe de escrita de algoritmos com essa linguagem.
É válido ressaltar, ainda, que as variáveis de tipo primitivo podem armazenar exatamente 
um valor por vez do seu tipo declarado. Uma variável de tipo lógico, em determinado momento, 
pode armazenar um valor false. Porém, se em outro momento de execução do código o valor true 
for atribuído a essa variável, seu valor inicial será substituído. Ao contrário do que ocorre com as 
variáveis – que mudam de valor durante a execução de um código –, as constantes possuem um valor 
fixo, que é determinado no início do programa e permanece intacto até o término do algoritmo.
instanciação: 
processo por 
meio do qual 
se faz a cópia 
de um objeto 
existente.
Tipos de dados em linguagens de programação 37
Considerações finais
O desenvolvimento de programas de computador sempre estará atrelado à identificação de 
entidades do mundo real, que podem ser pessoas, objetos, ações, entre outros elementos. Vale 
destacar que a transcrição dessas entidades se dá em linhas de código.
Os tipos de dados primitivos das linguagens de programação suprem as necessidades mais 
básicas de criação de variáveis. No entanto, para que os sistemas possam atender às necessidades de 
modelagem dos elementos do mundo real, em vários momentos é necessário criar tipos próprios 
contendo um ou mais tipos de dados para sua identificação.
O paradigma de programação orientado a objetos pode ser utilizado como uma das 
alternativas para essa modelagem e para a criação de tipos de dados, e os desenvolvedores têm total 
liberdade para criar tipos de dados na resolução de problemas em seus algoritmos.
Ampliando seus conhecimentos
• OnlineGDB. Disponível em: https://www.onlinegdb.com/. Acesso em: 8 jan. 2020.
OnlineGDB é um ambiente virtual de criação, testes e execução de algoritmos em várias 
linguagens de programação. O usuário pode utilizá-lo em qualquer lugar, por meio de 
um navegador web. Sugerimos acessar o serviço e testar os algoritmos que usamos como 
exemplos ao longo deste capítulo.
• SOLOLEARN. Learn Java. Aplicativo. Disponível em: https://www.sololearn.com/
Course/Java/. Acesso em: 8 jan. 2019.
Há diversos aplicativos para aprendizagem de linguagens de programação. Uma boa 
opção é o Learn Java, que pode ser obtido gratuitamente para utilização em celulares ou 
tablets. Instale o aplicativo em um dispositivo móvel e teste seus conhecimentos.
Atividades
1. Explique as diferenças entre variáveis e constantes.
2. Como as estruturas podem ser úteis em um sistema de computador?
3. O que são os dados primitivos de uma linguagem de programação?
Referências
ALMEIDA, M. Curso de lógica de programação. São Paulo: Digerati Books, 2008.
ASCENCIO, A. F. G.; CAMPOS, E. A. V. de. Fundamentos da programação de computadores. 2. ed. São Paulo: 
Pearson, 2007.
DEITEL, P.; DEITEL, H. Java: como programar. 8. ed. São Paulo: Pearson, 2010.
TUCKER, A. B.; NOONAN, R. E. Linguagens de programação: princípios e paradigmas. 2. ed. São Paulo: 
McGraw-Hill, 2009.
4
Introdução à linguagem 
de programação Java
Neste capítulo, serão tratados aspectos formais e técnicos sobre o tema “linguagens de 
programação e o paradigma de programação orientado a objetos”. Iniciaremos os estudos da 
linguagem de programação Java, passando pelo seu surgimentoe evolução, com exemplos de 
aplicação e de códigos. 
A linguagem Java é uma das mais utilizadas mundialmente, e sua relevância é dada pela 
presença em diversos equipamentos e compatibilidade com sistemas operacionais, tornando-a 
umas das mais versáteis. Java é utilizada desde em pequenas aplicações na internet até em sistemas 
corporativos de grande porte, em empresas multinacionais. Por isso também abordaremos o 
potencial de mercado para essa que é uma das principais linguagens de programação da atualidade.
4.1 Surgimento da linguagem Java e suas aplicações
A linguagem Java surgiu na década de 1990, mais precisamente em 1991, ano em 
que a empresa Sun Microsystems financiou internamente um projeto de pesquisa, que 
resultou em uma linguagem de programação baseada na linguagem C++. Seu criador, 
James Gosling (1955-), a nomeou inicialmente como Oak, em homenagem a uma 
árvore de carvalho vista da janela do seu escritório na Sun, mas logo se descobriu que 
esse nome já havia sido atribuído a uma linguagem de programação. Algum tempo depois, uma equipe 
da Sun visitou uma cafeteria onde havia um café importado de um local chamado Java, cujo nome foi 
sugerido e acabou sendo aceito. Com isso, a logomarca da linguagem passou a ser uma xícara de café, 
como podemos observar na Figura 1 (DEITEL, P.; DEITEL, H., 2010).
Figura 1 – Logomarca da linguagem Java
Tr
is
m
eg
is
t s
an
/S
hu
tte
rs
to
ck
Vídeo
Linguagens e paradigmas de programação40
No período inicial de desenvolvimento, o projeto passou por algumas dificuldades. A 
linguagem Java surgiu com a intenção de ser aplicada em dispositivos eletrônicos inteligentes 
e, naquela época, a evolução desses equipamentos não se deu na velocidade prevista pela 
empresa Sun.
No início da década de 1990, com o crescente aumento no uso da internet, a Sun percebeu 
que o Java tinha potencial para adicionar conteúdos dinâmicos e animações às páginas web que 
surgiam, determinando novos rumos para a linguagem. Seu lançamento oficial, então, ocorreu 
em maio de 1995, durante uma conferência de tecnologia. Posteriormente, o feito acabou gerando 
interesse na comunidade de negócios devido à atenção dedicada à web durante a década de 1990 
(DEITEL, P.; DEITEL, H., 2010).
É importante ressaltar que a linguagem Java exibe importantes características, as quais, em 
conjunto, a diferenciam de outras linguagens de programação. Segundo Jandl Jr. (1999, p. 10-11), 
essas características são:
• Orientação a objetos: tudo em Java são classes ou instâncias de uma classe. Com a 
exceção de seus tipos primitivos de dados, essa linguagem é puramente orientada a objetos 
e atende a todos os requisitos para tal, uma vez que oferece mecanismos de abstração, 
encapsulamento e hereditariedade.
• Multiplataforma: independe de plataforma, uma vez que os programas escritos a partir 
da linguagem são compilados para uma forma intermediária de código denominada 
bytecodes, que utiliza instruções e tipos primitivos de tamanho fixo, ordenação big-endian 
e uma biblioteca de classes padronizada. Os bytecodes são como uma linguagem de 
máquina destinada a uma única plataforma, a Java Virtual Machine (JVM), que por sua 
vez interpreta os bytecodes e pode ser implementada em qualquer sistema operacional. 
Assim teremos um mesmo programa Java passível de execução em qualquer arquitetura 
que disponha de uma JVM.
• Ausência de ponteiros: a linguagem Java não permite a manipulação direta de 
endereços de memória e não exige que os objetos criados sejam destruídos, liberando 
os desenvolvedores de uma tarefa complexa. Além disso, a JVM possui um mecanismo 
automático de gerenciamento de memória conhecido como garbage collector (coletor de 
lixo), que recupera a memória alocada para objetos não mais referenciados pelo programa.
• Performance: foi projetada para ser compacta, para atuar independentemente da 
plataforma e para ser utilizada em rede, o que levou à decisão de ser interpretada por meio 
dos esquemas de bytecodes. Como uma linguagem interpretada tem seu desempenho 
razoável, a Java não pode ser comparada à velocidade de execução de código nativo. 
Para superar essa limitação, várias JVM dispõem de compiladores just in time (JIT) que 
compilam os bytecodes para códigos nativos durante a execução, otimizando a mesma e 
resultando em uma melhora significativa na performance de programas Java.
• Segurança: considerando a possibilidade de aplicações executadas por meio de uma rede, 
a linguagem Java possui mecanismos de segurança que podem evitar qualquer operação 
no sistema de arquivos da máquina-alvo, minimizando problemas de segurança. Tal 
Introdução à linguagem de programação Java 41
mecanismo é flexível o suficiente para determinar se um programa Java é considerado 
seguro, especificando nesta situação diferentes níveis de acesso ao sistema-alvo. A 
linguagem Java continua posicionada como uma das plataformas mais seguras do mundo, 
sendo utilizada em sistemas que exigem altíssima segurança, como os de governos de 
países e de importantes empresas listadas na bolsa, incluindo bancos públicos e privados.
• Multithreading: o Java oferece recursos para o desenvolvimento de aplicações, os quais são 
capazes de executar múltiplas atividades de modo concorrente, e dispõe de elementos para 
a sincronização dessas várias rotinas. Cada um desses fluxos de execução é denominado 
thread, um importante recurso de programação de aplicações mais sofisticadas. Além 
disso, a linguagem é bastante robusta, oferece tipos inteiros e ponto flutuante compatíveis 
com as especificações do Institute of Electrical and Electronic Engineers (IEEE) para 
suporte para caracteres Unicode.
A linguagem Java é umas das mais utilizadas no desenvolvimento de sistemas, tendo suas 
aplicações voltadas para uso geral em computadores, dispositivos móveis, banda de dados e web. 
De acordo com a Tiobe Software BV (2020) – instituição que realiza levantamentos no mercado 
e na comunidade global de desenvolvedores de software –, o Java figurou entre a primeira e a 
segunda posição no renomado ranking de linguagens de programação da companhia, no período 
compreendido entre 2004 e 2019. Além disso, foi classificado por essa mesma entidade como a 
linguagem dos anos de 2005 e 2015.
Apesar de ter bastante tempo de uso se comparada às linguagens que vêm ganhando 
popularidade e adesão pela comunidade de desenvolvedores, o Java possui grande relevância 
devido ao seu potencial de desenvolvimento de sistemas multiplataforma e aplicabilidade em 
praticamente qualquer solução de sistema informatizado. Além disso, tem forte presença em 
sistemas web de pequeno a grande porte, sendo utilizado por empresas multinacionais em diversos 
tipos de sistemas e plataformas.
O mercado de desenvolvimento de sistemas possui muitas oportunidades para as linguagens 
de programação. A linguagem Java, por ser considerada uma das mais importantes e utilizadas na 
atualidade, abre muitas opções para profissionais – seja para a concepção de novos produtos ou 
para a adequação e manutenção de sistemas em operação nas grandes corporações e na internet.
4.2 Tipos de dados e sintaxe da linguagem Java
As linguagens de programação sempre proveem um conjunto básico de tipos 
de dados para o desenvolvimento de programas. Esse conjunto é conhecido como 
primitivo, e nesta seção veremos os tipos de dados primitivos da linguagem Java, 
sua forma de escrita e como se dá a declaração de suas variáveis.
Todo programa Java é um sistema computacional completo e, como tal, é 
feito de entrada de dados, processamento e saída de informações. Esses dados geralmente são 
armazenados para processamento e transporte pela memória do computador em estruturas 
denominadas variáveis, que representam o menor elemento de um programa de computador.
Vídeo
Linguagens e paradigmas de programação42
“Uma variável é um nome definido pelo programador, ao qual pode ser associado um valor 
pertencente a um certo tipo de dados” (JANDL JR., 1999, p. 17).

Outros materiais