Buscar

paradigmas da linguagem de 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 133 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 133 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 133 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

PARADIGMAS DE 
LINGUAGEM DE 
PROGRAMAÇÃO
Professor Esp. Ronie Cesar Tokumoto
GRADUAÇÃO
Unicesumar
C397 CENTRO UNIVERSITÁRIO DE MARINGÁ. Núcleo de Educação a 
Distância; TOKUMOTO, Ronie Cesar. 
 
 Paradigmas de Linguagem de Programação. Ronie Cesar 
Tokumoto. 
 Maringá-Pr.: UniCesumar, 2016. Reimpresso em 2018.
 133 p.
“Graduação - EaD”.
 
 1. Paradigmas. 2. Linguagem de Programação. 3. EaD. I. Título.
ISBN 978-85-459-0360-4
CDD - 22 ed. 005.3
CIP - NBR 12899 - AACR/2
Ficha catalográfica elaborada pelo bibliotecário 
João Vivaldo de Souza - CRB-8 - 6828
Impresso por:
Reitor
Wilson de Matos Silva
Vice-Reitor
Wilson de Matos Silva Filho
Pró-Reitor de Administração
Wilson de Matos Silva Filho
Pró-Reitor de EAD
Willian Victor Kendrick de Matos Silva
Presidente da Mantenedora
Cláudio Ferdinandi
NEAD - Núcleo de Educação a Distância
Direção Operacional de Ensino
Kátia Coelho
Direção de Planejamento de Ensino
Fabrício Lazilha
Direção de Operações
Chrystiano Mincoff
Direção de Mercado
Hilton Pereira
Direção de Polos Próprios
James Prestes
Direção de Desenvolvimento
Dayane Almeida 
Direção de Relacionamento
Alessandra Baron
Head de Produção de Conteúdos
Rodolfo Encinas de Encarnação Pinelli
Gerência de Produção de Conteúdo
Gabriel Araújo
Supervisão do Núcleo de Produção de 
Materiais
Nádila de Almeida Toledo
Supervisão de Projetos Especiais
Daniel F. Hey
Coordenador de Conteúdo
Fabiana de Lima
Design Educacional
Ana Claudia Salvadego
Iconografia
Amanda Peçanha dos Santos, Ana Carolina 
Martins Prado
Projeto Gráfico
Jaime de Marchi Junior, José Jhonny Coelho
Arte Capa
Arthur Cantareli Silva
Editoração
Robson Yuiti Saito
Qualidade Textual
Hellyery Agda 
Pedro Afonso Barth
Ilustração
Marta Sayuri Kakitani
Em um mundo global e dinâmico, nós trabalhamos 
com princípios éticos e profissionalismo, não so-
mente para oferecer uma educação de qualidade, 
mas, acima de tudo, para gerar uma conversão in-
tegral das pessoas ao conhecimento. Baseamo-nos 
em 4 pilares: intelectual, profissional, emocional e 
espiritual.
Iniciamos a Unicesumar em 1990, com dois cursos 
de graduação e 180 alunos. Hoje, temos mais de 
100 mil estudantes espalhados em todo o Brasil: 
nos quatro campi presenciais (Maringá, Curitiba, 
Ponta Grossa e Londrina) e em mais de 300 polos 
EAD no país, com dezenas de cursos de graduação e 
pós-graduação. Produzimos e revisamos 500 livros 
e distribuímos mais de 500 mil exemplares por 
ano. Somos reconhecidos pelo MEC como uma 
instituição de excelência, com IGC 4 em 7 anos 
consecutivos. Estamos entre os 10 maiores grupos 
educacionais do Brasil.
A rapidez do mundo moderno exige dos educa-
dores soluções inteligentes para as necessidades 
de todos. Para continuar relevante, a instituição 
de educação precisa ter pelo menos três virtudes: 
inovação, coragem e compromisso com a quali-
dade. Por isso, desenvolvemos, para os cursos de 
Engenharia, metodologias ativas, as quais visam 
reunir o melhor do ensino presencial e a distância.
Tudo isso para honrarmos a nossa missão que é 
promover a educação de qualidade nas diferentes 
áreas do conhecimento, formando profissionais 
cidadãos que contribuam para o desenvolvimento 
de uma sociedade justa e solidária.
Vamos juntos!
Seja bem-vindo(a), caro(a) acadêmico(a)! Você está 
iniciando um processo de transformação, pois quando 
investimos em nossa formação, seja ela pessoal ou 
profissional, nos transformamos e, consequentemente, 
transformamos também a sociedade na qual estamos 
inseridos. De que forma o fazemos? Criando oportu-
nidades e/ou estabelecendo mudanças capazes de 
alcançar um nível de desenvolvimento compatível com 
os desafios que surgem no mundo contemporâneo. 
O Centro Universitário Cesumar mediante o Núcleo de 
Educação a Distância, o(a) acompanhará durante todo 
este processo, pois conforme Freire (1996): “Os homens 
se educam juntos, na transformação do mundo”.
Os materiais produzidos oferecem linguagem dialógica 
e encontram-se integrados à proposta pedagógica, con-
tribuindo no processo educacional, complementando 
sua formação profissional, desenvolvendo competên-
cias e habilidades, e aplicando conceitos teóricos em 
situação de realidade, de maneira a inseri-lo no mercado 
de trabalho. Ou seja, estes materiais têm como principal 
objetivo “provocar uma aproximação entre você e o 
conteúdo”, desta forma possibilita o desenvolvimento 
da autonomia em busca dos conhecimentos necessá-
rios para a sua formação pessoal e profissional.
Portanto, nossa distância nesse processo de cresci-
mento e construção do conhecimento deve ser apenas 
geográfica. Utilize os diversos recursos pedagógicos 
que o Centro Universitário Cesumar lhe possibilita. 
Ou seja, acesse regularmente o Studeo, que é o seu 
Ambiente Virtual de Aprendizagem, interaja nos fóruns 
e enquetes, assista às aulas ao vivo e participe das dis-
cussões. Além disso, lembre-se que existe uma equipe 
de professores e tutores que se encontra disponível para 
sanar suas dúvidas e auxiliá-lo(a) em seu processo de 
aprendizagem, possibilitando-lhe trilhar com tranqui-
lidade e segurança sua trajetória acadêmica.
A
U
TO
R
Professor Esp. Ronie Cesar Tokumoto
Possui graduação em Bacharelado em Informática pela Universidade 
Federal do Paraná (2001). Pós-Graduações em Docência no Ensino Superior 
pela Unicesumar, Pós-Graduação em Tutoria em Educação à Distância pela 
Faculdade Eficaz, e Pós-Graduação em Gestão Escolar Integrada e Práticas 
Pedagógicas. Experiência na área de educação desde 1993 atuando em 
escolas profissionalizantes e colégios estaduais. Experiência em Coordenação 
de Curso Técnico no ano de 2013 e Participação em Palestras e Eventos 
Organizados para o Curso durante o mesmo ano. Atualmente atuando 
como: Professor Mediador no EAD-Unicesumar no curso de Graduação EAD 
em Engenharia de Software e Gestão em Tecnologia da Informação; como 
professor do Curso Técnico em Informática ofertado pelo programa Pronatec 
na mesma instituição; como Professor na rede Estadual de Ensino do Paraná 
em Maringá-PR, nos Cursos Técnicos Profissionalizantes.
SEJA BEM-VINDO(A)!
Caro(a) acadêmico(a), este livro tem como finalidade principal mostrar como as lingua-
gens de programação utilizadas diferem sob diversos aspectos e em que isso pode in-
fluenciar dentro do tipo de função ao qual se aplica.
Podemos ter linguagens muito específicas para determinadas tarefas diretamente liga-
das a Tecnologia da Informação (TI) ou não, sendo que estas podem ser indicadas para o 
desenvolvimento de software rodando em determinado tipo de hardware.
Sobre hardware, temos a ideia de que representa tudo relacionado à parte física, onde o 
software, que seria a parte lógica, é executado. Ou seja, softwares englobam os progra-
mas de forma geral enquanto hardwares englobam os equipamentos.
Assim, temos que toda linguagem de programação é usada para criar e gerir processos 
executados em máquinas para que estas sejam capazes de executar suas tarefas.
O ponto em que os estudos levarão indicará, dentre as diferentes opções de linguagens 
existentes, aquelas que seriam mais adequadas para determinadas tarefas.
Linguagens mais recentes têm estrutura diferente em sua programação, agregando 
conceitos inovadores, capazes de reduzir codificação ou permitir a criação de progra-
mas que contemplem um estado tecnológico mais atual.
A própria programação chamada de Orientada a Objeto é muito utilizada e domina o 
mercado de novos produtos de software, mas existem tendências que podem mudar 
toda a forma de se programar com o tempo.
Diferenças de plataformas para as quais se programa, contemplando as particularidades 
de cada sistema operacional, também podem ser características que influenciam a esco-
lhaentre uma linguagem e outra.
Durante as unidades do livro, aspectos relevantes serão detalhados para fornecer fer-
ramentas para que programadores experientes ou pessoas que tenham interesse em 
escolher uma linguagem para aprender possam optar com mais segurança dentre alter-
nativas disponíveis por aquela que mais se adeque a suas necessidades.
Portanto, não basta conhecer as funções e a sintaxe dos comandos de uma linguagem, 
mas poder escolher aprender uma linguagem de programação pelas necessidades reais 
envolvidas.
APRESENTAÇÃO
PARADIGMAS DE LINGUAGEM DE 
PROGRAMAÇÃO
SUMÁRIO
09
UNIDADE I
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, 
SEMÂNTICA E ANÁLISE LÉXICA
15 Introdução
16 Avaliação de Linguagens e Categorias de Linguagens 
19 Métodos de Implementação 
21 Evolução das Linguagens de Programação 
33 Orientação a Objetos 
37 Linguagens para Internet 
44 Considerações Finais 
48 Referências 
49 Gabarito 
UNIDADE II
NOMES, TIPOS DE DADOS, OPERADORES, EXPRESSÕES E 
ESTRUTURAS
53 Introdução
54 Sintaxe e Semântica 
61 Análise Sintática e Léxica 
62 Nomes e Tipos de Dados 
65 Operadores e Expressões 
67 Estruturas de Controle 
SUMÁRIO
10
69 Considerações Finais 
74 Referências 
75 Gabarito 
UNIDADE III
SUB-ROTINAS E FUNÇÕES
79 Introdução
80 Sub-Rotinas 
81 Implementando Sub-Rotinas 
83 Funções 
84 Passagem de Parâmetros 
86 Bibliotecas 
88 Considerações Finais 
92 Referências 
93 Gabarito 
UNIDADE IV
TIPOS ABSTRATOS DE DADOS, ORIENTAÇÃO A OBJETO
97 Introdução
98 Abstração de Dados 
99 Encapsulamento 
SUMÁRIO
11
100 Programação Orientada a Objeto 
101 Estrutura de Programas Orientados a Objeto 
104 Estudo de Caso 
107 Considerações Finais 
112 Referências 
113 Gabarito 
UNIDADE V
CONCORRÊNCIA, TRATAMENTO DE EXCEÇÕES, PROGRAMAÇÃO 
FUNCIONAL E PROGRAMAÇÃO LÓGICA
117 Introdução
118 Concorrência 
120 Tratamento de Exceções 
122 Programação Funcional 
123 Programação Lógica 
126 Considerações Finais 
130 Referências 
131 Gabarito 
133 CONCLUSÃO
U
N
ID
A
D
E I
Professor Esp. Ronie Cesar Tokumoto
EVOLUÇÃO DAS LINGUAGENS 
DE PROGRAMAÇÃO, SINTAXE, 
SEMÂNTICA E ANÁLISE LÉXICA
Objetivos de Aprendizagem
 ■ Compreender algumas diferentes linguagens e suas aplicações.
 ■ Conhecer formas de implementação de programas.
 ■ Compreender sintaxe, semântica e análise sintática.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
 ■ Avaliação de linguagens e categorias de linguagens
 ■ Métodos de implementação
 ■ Evolução das linguagens de programação
 ■ O início
 ■ Orientação a objetos
 ■ Linguagens para internet
INTRODUÇÃO
Estudar conceitos a respeito de linguagens de programação traz benefícios que 
podem melhorar o trabalho de desenvolvimento e a forma como se pensa a pro-
gramação em si.
Conhecer uma linguagem e a que tipo de atividades ela é mais indicada per-
mite que um programador saiba explorar melhor a potencialidade da linguagem 
e tire dela códigos mais precisos e otimizados.
Um analista envolvido com projetos pode alocar profissionais com conhe-
cimento em determinada linguagem de acordo com as necessidades de cada 
projeto, de acordo com a linguagem que mais se adeque ao propósito do projeto.
Uma melhor compreensão de linguagens de programação em geral permite 
uma melhora na capacidade de expressar ideias, tendo como base a dificuldade 
em conceituar estruturas que não se possa descrever ou verbalizar, por exemplo.
Também melhora naturalmente, com o conhecimento mais aprofundado das 
características de linguagens diversas, a capacidade de escolha daquela linguagem 
que melhor atenda ao tipo de programação desejada para o desenvolvimento.
Isso ocorre também pelo fato de que, com a evolução das linguagens e dos 
métodos de programação, o conhecimento que um programador possui em rela-
ção a uma linguagem, aos poucos vai ficando obsoleto e, assim, precisam aprender 
novas linguagens para se manterem no mercado de trabalho.
Conhecer os motivos de cada linguagem ser implementada da forma como 
foi permite que o programador possa utilizá-la de forma mais consciente e inte-
ligente, aumentando as chances de se obter códigos mais otimizados.
Assim, além de terem melhores condições de usar uma linguagem de forma 
adequada, conhecendo suas características, é possível explorar seus recursos e 
utilizar ferramentas antes desconhecidas.
Conhecendo as linguagens de programação, o programador tem maior capa-
cidade de escolher uma linguagem não apenas por sua popularidade no meio 
profissional ou acadêmico, mas saber qual linguagem possui as características 
adequadas a determinada área do desenvolvimento de programas.
Introdução
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
15
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E16
AVALIAÇÃO DE LINGUAGENS E CATEGORIAS DE 
LINGUAGENS
Linguagens de programação podem ser organizadas de diversas formas, de acordo 
com critérios técnicos ou não.
Uma forma de distingui-las é por meio da finalidade ao qual se destinam, 
podendo ter uma diversidade de usos computacionais de complexidades distin-
tas e com graus de complexidade também distintos.
Existem linguagens com fins científicos, em que aplicações de dados são 
simples, mas que manipulam valores extremamente precisos e com grande quan-
tidade de casas decimais, utilizando a totalidade dos recursos de hardware, de 
máquinas simples a supercomputadores.
Há também aplicações comerciais que exigem menos capacidade computa-
cional, mas que demandam estruturas de dados mais complexas, com necessidade 
muito maior de armazenamento para estes dados, normalmente.
Projetos que envolvam o desenvolvimento de sistemas operacionais tam-
bém necessitam de linguagens diferenciadas, capazes de manipular o hardware 
a fim de que possam, com isso, garantir o controle necessário do sistema opera-
cional criado ao hardware onde quer que seja utilizado.
A inteligência artificial necessita de menor processamento matemático, mas 
maior capacidade de análise simbólica e flexibilidade no uso de dados, pois é 
uma área que trabalha com situações menos exatas e lida com probabilidades.
Finalmente, temos as aplicações para web, mais recentes e contemplando parte 
dos conceitos das aplicações comerciais no uso de dados, mas podendo também 
utilizar conceitos das demais áreas, constituindo o que há de mais recente entre as 
alternativas citadas até o momento. Algumas características também diferenciam 
linguagens de acordo com a forma com que seus programas são escritos e seu 
código compreendido. A facilidade de leitura e compreensão de um programa é 
um fator muito importante na popularização de uma linguagem de programação, 
pois afeta muito o tempo necessário para que se possa iniciar o desenvolvimento 
de programas e a facilidade com que estes são compreendidos por quem precise 
Avaliação de Linguagens e Categorias de Linguagens
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
17
realizar manutenções em programas já escritos. Com isto, uma linguagem mais 
simples pode ter a leitura e interpretação das funções implementadas pelo seu 
código, devido à menor variedade de comandos para uma mesma tarefa.
Linguagensmais complexas tendem a possibilitar variações muito gran-
des de soluções para um mesmo problema, por mais simples que sejam, e, com 
isso, diferentes programadores podem enxergar formas totalmente distintas para 
resolver problemas.
Algumas destas soluções podem ser de fácil leitura e compreensão, mas podem 
também ter um nível de raciocínio lógico muito complexo e que demande um 
esforço lógico maior para compreender o que foi feito pelo programador que 
criou o código.
Problemas diversos envolvem linguagens complexas, desde sintaxes que per-
mitam muitas variações e operadores que possam sofrer sobrecargas com valores 
não esperados, gerando problemas em tempo de execução.
Podemos então observar que linguagens mais limitadas e que tenham recur-
sos para reduzir a quantidade de erros em tempo de execução que possam ocorrer 
são mais simples de se entender e aprender.
Tendo em mente essas ideias, temos que uma linguagem simples permite 
maior facilidade no aprendizado e compreensão de seus códigos implementa-
dos. É muito provável que se tenha, com isso, maiores limitações em relação 
à quantidade de soluções que possam ser implementadas em linguagens que 
sejam mais simples e que aceitem menos variações de sintaxe e combinações 
entre seus comandos.
Um conceito chamado ortogonalidade traz esta ideia, pois representa que 
uma linguagem de programação com fraca ortogonalidade tem comandos que 
aceitam maior variedade de usos e interpretações, mas uma linguagem com 
forte ortogonalidade é mais restrita e com menor variação em sua programação.
Uma fraca ortogonalidade faz com que a programação, numa linguagem 
assim, permita que exceções indevidas ocorram mais facilmente e limitem as 
possibilidades de desenvolvimento de soluções e diferentes combinações entre 
comandos, tipos de dados ou estruturas.
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E18
Tipos de dados influenciam essa ideia, pois quando temos em uma lingua-
gem a definição precisa para o uso de cada tipo de dado, as exceções também 
diminuem, mas no caso da linguagem C que, por exemplo, não possui um tipo 
para Verdadeiro e Falso definido, é preciso improvisar, usando um tipo numérico.
A sintaxe afeta diretamente a leitura e compreensão de programas devido ao 
uso de símbolos para finalizar blocos de comandos, ao invés de palavras reser-
vadas próprias que indiquem a qual comando se referem como SE e FIMSE.
A facilidade de codificação de uma linguagem é afetada por aspectos como 
sua facilidade na leitura e compreensão dos códigos escritos, quantidade de 
comandos e tipos de dados possíveis, afetando sua ortogonalidade.
A implementação da abstração de dados em uma linguagem permite que 
recursos como trechos de código sejam representados por funções, chamadas 
por vezes em diversos trechos do programa, evitando a replicação sem necessi-
dade de código repetitivo.
Checagem de tipos de dados em tempo de execução também são muito 
inconvenientes e linguagens que o fazem durante a compilação tendem a ser 
muito menos custosas para manutenção e leitura do código.
Tratamentos de erros e exceções durante a execução também são recursos 
muito bem-vindos, sendo algo que diferencia as linguagens C e C++, pois C pre-
cisa do tratamento manual de erros sem recursos automatizados disponíveis.
A referência a variáveis por meio de ponteiros também é perigosa pelo fato de 
ser possível a atribuição de mais de um ponteiro a uma variável ao mesmo tempo, 
podendo provocar confusão em relação a valores que uma variável possa conter.
Existe um custo quando se usa uma linguagem de programação que envolve, 
além das características citadas anteriormente, as características de cada progra-
mador e as técnicas de codificação que cada um adota.
Isso inclui uma série de elementos envolvidos como treinamento de novos 
programadores em função da facilidade do aprendizado da linguagem e leitura 
de seus códigos, seu tempo de compilação e execução.
O hardware (parte física) onde é executado o programa e os demais softwa-
res (programas) que funcionam em paralelo ao programa desenvolvido como 
sistemas operacionais e softwares de proteção interfere diretamente na veloci-
dade de execução e compatibilidade do software com o equipamento.
Métodos de Implementação
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
19
MÉTODOS DE IMPLEMENTAÇÃO
As linguagens de programação são divididas em quatro categorias principais, 
sendo elas de linguagens imperativas, funcionais, lógicas e orientadas a objeto.
Essas categorias de linguagens podem ter ramificações, como no caso das 
linguagens imperativas que podem ser visuais ou não (.NET), linguagens de 
scripts como Javascript, ou que aceitam a orientação a objetos como C++, sem 
deixarem de ter como base a programação imperativa.
Numa linguagem imperativa, o código que representa um algoritmo é muito 
detalhado e a ordem de execução é bem definida. Já numa linguagem lógica, esta 
se baseia em regras sem uma ordem pré-definida, ficando a critério de o sistema 
definir a ordem adequada de execução do código.
Linguagens de marcação como HTML fazem parte de uma onda mais recente 
de linguagens de programação desenvolvidas com o propósito de desenvolver 
aplicações web, podendo ser consideradas como uma categoria a parte.
Sabe-se que a memória armazena temporariamente os dados e o programa 
propriamente dito em tempo de execução, e o processador realiza as operações 
básicas lógicas e aritméticas.
Assim, para haver o correto funcionamento, as linguagens em geral possuem 
um conjunto de macroinstruções que são implementadas por outro conjunto de 
microinstruções que lidam mais diretamente com sistema operacional e hardware.
O processo de execução de programas codificados em diferentes linguagens 
de programação pode ocorrer diretamente na máquina, no caso de linguagens de 
máquina, ou em passos, como ocorre com compiladores que convertem lingua-
gem de alto nível com comandos na sintaxe da linguagem não compreensíveis 
pelo hardware para linguagem de máquina compreensível pelo hardware.
Esse método de compilação permite uma execução rápida de programas, 
pois gera um aplicativo independente do compilador depois de terminado o 
processo como na linguagem C.
O processo parece simples, mas envolve etapas que serão detalhadas no 
decorrer do livro, que lidam diretamente com conjuntos de regras para análise 
de códigos escritos em determinada linguagem.
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E20
Outro processo bastante comum é a interpretação pura, em que um sof-
tware interpretador compreende a codificação da linguagem sem necessidade 
de compilação e executa seus comandos de acordo com a ordem indicada do 
fluxo da execução.
Essa interpretação tem a vantagem de poder indicar com maior exatidão 
onde um erro ocorreu e facilitar a solução de problemas ocorridos em run-time 
(tempo de execução).
Por outro lado, pelo fato da interpretação ser feita em tempo real, o tempo 
de execução aumenta e maior poder de processamento é necessário no equipa-
mento, ou maior simplicidade nas tarefas executadas pelo código.
Uma forma híbrida de implementação consiste em compilar uma lingua-
gem de alto nível em outra intermediária, mas de interpretação bem mais rápida 
para garantir melhores resultados em tempo de execução.
Algumas versões de Java são híbridas, pois convertem o código Java em 
uma forma intermediária compatível com qualquerplataforma chamada byte 
code que roda na Java Virtual Machine específica de cada plataforma, mas há 
versões que convertem byte code em linguagem de máquina para maior veloci-
dade de execução.
Just-in-Time (JIT) também funciona de forma híbrida, sendo que o sistema 
traduz a linguagem inicial em Java, por exemplo, em linguagem intermediária 
para ser interpretada em tempo de execução, mas o código interpretado é man-
tido para as execuções seguintes.
O pré-processador é um software que faz a primeira preparação antes da 
compilação, para preparar tipos definidos pelo programador e carregar o código 
de bibliotecas para dentro do código original.
Evolução das Linguagens de Programação
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
21
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO
Figura 1 – Genealogia das principais linguagens de programação
Prolog
Lua
APL
Fortran I
Fortran II
Fortran IV
Fortran 77
Fortran 90
MODULA
MODULA 2
Oberon
Ada 2005
Ada 95
Ada 83
PHP
Ei�el
Perl
awk
C++
C99
C# 2.0 Python 3.0
Python 2.0
C# 3.0
C# 4.0
C#
PL/I
ML
Scheme
Miranda
ICON
COMMON LISP
Ansi C (C89)
Haskell
Python 
Java
Java 5.0
Java 6.0
Java 7.0
Javascript
Ruby
Ruby 1.8
Visual Basic.NET
Visual Basic
QuickBasic
Ruby 1.9
Pascal
ALGOL W
ALGOL 58
ALGOL 60
ALGOL 68
BASIC
CPL
BCPL
B
C
USP
SNOBOL
COBOL
FLOW-MATIC
SIMULA I
SIMULA 67
Fortran 95
Fortran 2003
Fortran 2008
Smalltalk 80
Fonte: Sebesta (2012 - p. 37).
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E22
O INÍCIO
Konrad Zuse provavelmente tenha sido o criador da primeira linguagem chamada 
Plankalkül na década de 1940 para equipamentos desenvolvidos por ele mesmo.
Uma linguagem que já continha tipos de dados baseados em bits, estruturas 
de dados como vetores e registros, além de laços de repetição e uso de variáveis 
em expressões matemáticas.
Os computadores desta época eram grandes, caros, lentos e sua programa-
ção era bem específica, em linguagem de máquina para otimizar os escassos 
recursos que possuíam.
Ainda no final da década de 1940, o UNIVAC I (primeiro computador ven-
dido nos Estados Unidos com fins comerciais) utilizava uma linguagem chamada 
Short Code, que trabalhava dentro das especificações da arquitetura diferenciada 
do hardware do UNIVAC I.
Anos depois, a IBM conseguiu criar uma das mais importantes linguagens da 
história, chamada Fortran (The IBM Mathematical Formula Translating System), 
na década de 1950, para ser utilizada com o IBM 704 como, provavelmente, a 
primeira linguagem compilada de alto nível.
A linguagem era baseada nas instruções do IBM 704 e continha certas regras 
em sua sintaxe que padronizavam regras como a que variáveis iniciadas com as 
letras I, J, K, L, M e N seriam do tipo inteiro, e as demais para valores de ponto 
flutuante.
Mudanças foram ocorrendo com o passar dos anos e a linguagem Fortran 
sofreu modificações, como suporte a orientação a objetos, até a versão 2008 
(ISO/IEC 1539-1, 2010).
Evolução das Linguagens de Programação
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
23
Figura 2 – Exemplo de código Fortran
Fonte: Sebesta (2012 - p. 46-47).
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E24
A linguagem LISP também surgiu no final dos anos 1950 como exemplo 
de linguagem de programação funcional, baseada em suas predecessoras IPL-I, 
IPL-II e FLPL que eram mais limitadas.
A linguagem LISP trabalha apenas com átomos e listas representando símbo-
los literais simples ou agrupados (delimitados entre parênteses) respectivamente, 
sendo ideal para uso na área de inteligência artificial (IA) e de codificação sim-
ples devido a pouca variação de comandos em seu código.
Figura 3 – Exemplo de código LISP
Fonte: Sebesta (2012 - p. 50-51).
ALGOL (Algorithmic Language) foi uma linguagem com fins científicos que ser-
viu de base para muitas outras e teve base na linguagem Fortran, modificando 
diversos conceitos para torná-la universal e sem ligação com algum hardware 
específico.
Sua versão 58 ficou mundialmente conhecida e, com o tempo, sugestões de 
mudanças foram debatidas para que sua versão 60 fosse implementada, incluindo 
conceitos como passagem de parâmetros para sub-rotinas e recursividade.
Evolução das Linguagens de Programação
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
25
Figura 4 – Exemplo de código ALGOL
Fonte: Sebesta (2012 - p. 57-58).
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E26
A linguagem COBOL é uma das mais usadas na história e pode ter influen-
ciado algumas outras linguagens que vieram depois dela, pois era fortemente 
voltada ao desenvolvimento de aplicações comerciais.
Implementada no final dos anos de 1950, assim como a linguagem FLOW-
MATIC para UNIVACs, COMTRAN, implementada pela IBM, e a linguagem 
AIMACO usada pela Força Aérea Norte Americana.
A linguagem COBOL teve modificações padronizadas pelo padrão ANSI 
até o início dos anos 2000 e continua em uso em softwares específicos e main-
frames. O aumento da capacidade de hardware contribuiu para que a linguagem 
sobrevivesse, pois, com baixa performance, seu custo e benefício se tornaram 
menos atrativos.
Figura 5 - Exemplo de código COBOL
Evolução das Linguagens de Programação
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
27
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E28
Fonte: Sebesta (2012 - p. 61-63).
A linguagem BASIC (Beginner’s All-purpose Symbolic Instruction Code), criada na 
década de 1970, foi muito popular pela facilidade de aprendizado e pela popu-
larização dos microcomputadores na década de 1980.
Seu código era bastante simples, mas limitado, e até o surgimento da versão 
Visual BASIC, seu uso foi sendo reduzido continuamente.
Evolução das Linguagens de Programação
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
29
Figura 6 - Exemplo de código BASIC
Fonte: Sebesta (2012 - p. 65).
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E30
A linguagem PL/I foi a primeira linguagem desenvolvida para ser genérica, 
atendendo a qualquer tipo de aplicação e sem vínculo a algum hardware mais 
específico da época.
Uniu qualidades das demais linguagens citadas como recursividade, estruturas 
de dados e qualidade na entrada e saída de dados, combinadas com novosconcei-
tos para criar uma linguagem complexa e que acabou não se firmando por isso.
Outras linguagens que também não seguiram por muito tempo foram as lin-
guagens APL, SNOBOL, SIMULA 67, e ALGOL 68, mas todas puderam trazer 
algum acréscimo para as linguagens desenvolvidas posteriormente.
Na década de 1970, quando surgiu a linguagem Pascal, que teve sua base ins-
pirada em linguagens como o ALGOL 60, sua popularidade foi tremenda devido 
ao seu uso no meio acadêmico para o aprendizado de programação.
Uma linguagem ideal para a época, por ter códigos de fácil leitura e ser 
capaz de implementar códigos para diversos tipos de aplicações diferentes. Foi 
amplamente usada até a década de 1990, quando começou a perder espaço para 
linguagens como C++.
No início dos anos 2000, a linguagem Delphi, híbrida de imperativa com 
orientação a objetos, utilizou a linguagem Pascal como base, incluindo compo-
nentes para desenvolvimento em plataforma visual.
Figura 7 - Exemplo de código Pascal
Evolução das Linguagens de Programação
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
31
Fonte: Sebesta (2012 - p. 76 a 77).
No início dos anos de 1970, a linguagem C foi implementada por Dennis Ritchie 
baseando-se nos conceitos de linguagens como B, BCPL e CPL, que foram desen-
volvidas anteriormente, partindo do início dos anos de 1960.
Essa linguagem é utilizada em larga escala, sendo uma das três linguagens 
mais utilizadas no mundo por servir de base para uma quantidade enorme de 
softwares que interajam diretamente com hardware e sirvam de base para outros 
softwares como sistemas operacionais ou sistemas embarcados.
Tem uma leitura um pouco mais difícil por permitir maior variação nos coman-
dos e ser menos ortogonal que muitas outras linguagens, mas como serviu de 
base para a elaboração de quase todas as linguagens que vieram após ela, direta 
ou indiretamente, segue sendo uma referência no desenvolvimento de softwares e 
aprendizado de programação.
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E32
Figura 8 - Exemplo de código C
#include <stdio.h>
int main () {
 float notas [3][2];
 int i, j;
 float media[3];
 for (i=0; i<3; i++) {
 for (j=0; j<2; j++) {
 printf (“Aluno %d - nota %d: “, i+1, j+1);
 scanf (“%f ”, &notas [i][j]);
 }
 }
 for (i=0; i<3; i++) {
 printf (“\n\nNota do aluno %d”, i+1);
 for (j=0; j<2; j++) {
 printf (“\n%f . nota: “, notas [i][j]);
 media[i] = media[i] + notas [i][j];
 }
 printf (“\nMedia: %f ”, media[i]/2);
 }
}
Fonte: O autor.
Orientação a Objetos
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
33
A linguagem Prolog é baseada em programação lógica não procedural que 
poderia ser uma alternativa à programação imperativa, mas mostrou ser menos 
eficiente e muito específica em termos de área de aplicação.
Outra linguagem bastante conhecida foi Ada, desenvolvida pelo Departamento 
de Defesa dos Estados Unidos, que usava seus códigos em sistemas embarca-
dos. Era capaz de trabalhar encapsulamento, muitas facilidades para tratamento 
de exceções.
Esta linguagem Ada teve evoluções nos e anos de 1990 e 2000, foi melho-
rando sua programação orientada a objetos, incluindo melhorias como herança, 
mas seu uso pode ter declinado quando o Departamento de Defesa dos Estados 
Unidos deixou de solicitar programas na linguagem Ada.
ORIENTAÇÃO A OBJETOS
Smalltalk foi a primeira linguagem realmente implementada para programação 
orientada a objetos, e foi desenvolvida por Alan Kay que, na década de 1960, já 
imaginava que um dia computadores de menor porte poderiam ser utilizados 
por pessoas sem conhecimentos em programação.
A linguagem Smalltalk se baseia no conceito do envio de mensagens a um 
objeto para ativar seus métodos e este retornar nova mensagem ao objeto que 
o chamou.
Outro ponto fundamental da linguagem Smalltalk foi o uso de interface 
gráfica no desenvolvimento de aplicações que se tornou o ambiente padrão de 
desenvolvimento das posteriores linguagens de programação criadas.
Figura 9 - Exemplo de código Smalltalk
Fonte: Sebesta (2012 - p. 87).
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E34
A combinação entre diferentes tipos de categorias de linguagens de progra-
mação é algo que ocorre com frequência cada vez maior ao longo da evolução 
das ferramentas de programação.
Uma evolução muito importante que ocorreu foi a união entre a programa-
ção imperativa e a orientada a objeto, permitindo o surgimento de evoluções 
como a linguagem C++, que adicionou à linguagem original C toda a parte de 
programação orientada a objeto.
Importante ressaltar que esta evolução não trouxe prejuízos significativos 
quanto a performance, e manteve total compatibilidade com códigos feitos em 
linguagem C, mostrando que não houve necessidade de remover componentes 
da implementação original.
No início dos anos 2000, com o surgimento da plataforma Microsoft para 
desenvolvimento. NET, que trouxe a linguagem C++ para o ambiente web, e que 
após uma versão chamada MC++, evoluiu para a atual C#.
Outra implementação muito importante surgida no final dos anos 2000, 
chamada Objective-C, que combinava a base da linguagem C com a sintaxe da 
linguagem Smalltalk utilizada em larga escala pela Apple, após o fracasso da 
empresa NeXT de Steve Jobs, que permitiu seu uso como padrão para o desen-
volvimento dos aplicativos para iPhone.
No final dos anos 2000 ainda, outra linguagem baseada em C implementada 
foi a linguagem Go dentro da Google, permitindo que códigos extensos em C++ 
que demoravam a serem compilados pudessem ser mais rapidamente compila-
dos na nova linguagem.
Algumas das principais características era que funções podem retornar múl-
tiplos valores e a declaração de variáveis é feita de maneira diferente de C. Go 
não implementa a orientação a objetos tradicional e os comandos em si são os 
mesmos da linguagem C com algumas diferenças e inclusões.
A linguagem Java baseou-se em C++, modificando alguns conceitos, mas 
tendo uma sintaxe em sua construção de código bastante semelhante, mais oti-
mizada e segura.
Orientação a Objetos
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
35
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E36
Durante a década de 1990, quando a Internet se tornou uma realidade em 
escala mundial, a linguagem Java encontrou seu propósito maior e popularizou-
-se rapidamente nos anos seguintes, tornando-se a maior rival da linguagem C 
e C++ em termos de linguagem mais utilizada.
Algumas diferenças conceituais como a inexistência de ponteiros, substituí-
veis por outros tipos de dados capazes de referenciar classes, por exemplo. Tipo 
booleano também inexistente em C para uso em estruturas de decisão, mas assim 
como em C e C++, não se pode utilizar expressões em estruturas de decisão.
Figura 10 - Exemplo de código Java
Com tantas opçõesde linguagens de programação no mercado, é preciso 
conhecer várias ou ser especialista em uma ou duas? A área de atuação é 
importante e ajuda na escolha.
Linguagens para Internet
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
37
Fonte: Sebesta (2012 - p. 94).
LINGUAGENS PARA INTERNET
Linguagens de scripts são mais recentes e também se desenvolveram com a evo-
lução da Internet, a partir da década de 1990, e mantêm um ritmo de evolução 
constante e com novas ideias surgindo de tempos em tempos.
Uma delas, chamada Perl, semelhante a linguagens imperativas, têm parti-
cularidades como uma compilação de código, variáveis com indicação de suas 
estruturas de dados por meio de caracteres como “@”, “$” e “%”.
Matrizes dinâmicas e controladas de formas diferentes de acordo com a 
necessidade por meio de cadeias de caracteres ou com lacunas entre as célu-
las da matriz, permitindo, por exemplo, o aumento de tamanho de estruturas 
quando necessário.
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E38
Figura 11 - Exemplo de código Perl
Fonte: Sebesta (2012 - p. 96-97).
Javascript, uma linguagem que surgiu no início dos anos 2000, baseou-se na lin-
guagem LiveScript de 1995 e teve sucessivas evoluções que adicionam recursos 
a esta poderosa linguagem a cada nova implementação.
A linguagem Javascript pode ter seu interpretador adequado para ser embu-
tido em aplicações e navegadores web, tendo seu código incluído dentro do 
código HTML, neste caso.
Linguagens para Internet
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
39
Sua forma de codificação similar a Java, mas com conceitos diferentes, per-
mite tipos definidos em tempo de execução e estruturas de dados dinâmicas, 
além de orientação a objetos sem recursos como herança.
Figura 12 - Exemplo de código Javascript
Fonte: Sebesta (2012, p. 98).
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E40
A linguagem de scripts PHP (Personal Home Page) também surgiu em meados 
da década de 1990. É uma linguagem que teve um crescimento enorme devido 
a sua capacidade de trabalhar com dados.
Servidores web em geral continham websites que gerenciavam dados, e 
esta linguagem PHP pode embutir seu código dentro de códigos HTML, assim 
como Javascript, para aumentar as potencialidades da linguagem de marcação 
para páginas web HTML.
Similar à linguagem Perl, Python é uma linguagem para propósitos diver-
sos, criada durante a década de 2000. Tem uma estrutura de código diferente e 
se baseia em três tipos de dados (listas, tuplas e dicionários),
É uma linguagem orientada a objetos como Perl e contém tratamento de 
exceções, controle de objetos descartados, computação gráfica e acesso a dados 
pelo navegador.
Ruby, uma linguagem implementada nos anos 1990, continua em uso e seu 
código é todo voltado para orientação a objetos, assim como Smalltalk. Classes 
e objetos podem ter métodos adicionados dinamicamente e isso faz com que, a 
cada execução, classes e objetos possam ser diferentes.
A linguagem Lua, desenvolvida no Brasil durante a década de 1990 por 
Roberto Ierusalimschy, Waldemar Celes e Luis Henrique de Figueiredo na 
Pontifícia Universidade do Rio de Janeiro, suporta programação procedural e 
funcional.
É uma linguagem não orientada a objetos, mas segue os conceitos desta cate-
goria de linguagens de programação, sendo uma linguagem simples com poucas 
palavras reservadas e costumando servir de complemento para outras linguagens.
A linguagem C#, desenvolvida na década de 2000 pela Microsoft, mescla 
conceitos de várias linguagens como C++, Java e Delphi, trabalhando com pro-
gramação visual e desenvolvimento .NET no pacote de desenvolvimento criado 
pela própria Microsoft chamado Visual Studio.
C# é uma linguagem poderosa e segue em evolução para, assim como Java, 
ser uma referência na programação .NET, tendo as qualidades essenciais de C++ 
e podendo adicionar as evoluções advindas da programação web.
Linguagens para Internet
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
41
Figura 13 - Exemplo de código C#
Fonte: Sebesta (2012 - p. 103-104).
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E42
Finalmente, as linguagens de marcação como XML e HTML formam a base do 
desenvolvimento de páginas web e são simples, sem conceitos avançados como 
orientação a objetos, pois têm uma função única de estruturar e elementos a 
serem dispostos em páginas.
São linguagens que aceitam o acréscimo de códigos de outras linguagens 
Linguagens de programação podem ser utilizadas por muito tempo, como a 
linguagem COBOL, que até hoje existente em sistemas legados de grandes 
mainframes.
Algumas não sofrem modificações, mas outras vão sendo adaptadas para 
gerarem novas implementações que evoluem e se adaptam às necessida-
des do mercado.
A linguagem C continua em uso por diversos motivos citados ao longo do 
livro, mas também teve novas implementações que permitiram o surgimen-
to de novas versões que também seguem fazendo sucesso no mercado do 
desenvolvimento de aplicações.
A mais importante foi a linguagem C++, que permitiu um avanço enorme 
na programação e afastou um pouco o programador do baixo nível de pro-
gramação.
Outra implementação com base na linguagem C foi a linguagem Java e sua 
variante Javascript, com seu foco voltado para o desenvolvimento web.
C# e Objective-C foram desenvolvidas para criação de aplicações web, sendo 
que C# permite programação para várias plataformas e a outra é mais espe-
cífica para a Apple.
Fonte: VEJA quais são as 20 linguagens de programação mais populares. Olhar Di-
gital, 2015. Disponível em: <http://olhardigital.uol.com.br/noticia/veja-quais-sao-as-
-20-linguagens-de-programacao-mais-populares/46271>. Acesso em: 29 mar. 2016.
Considerações Finais
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
43
como Javascript e PHP, que contribuem com a qualidade dos resultados obtidos 
e agregam muitas funcionalidades a estas linguagens de marcação.
Uma linguagem desenvolvida para auxiliar a produção de código em lingua-
gens de marcação foi a linguagem CSS, que sofre evoluções para agregar novas 
funcionalidades. É uma linguagem simples, agregada ao HTML para padroni-
zação de formato dos elementos das páginas como texto e imagem.
Figura 14: Exemplo de código HTML
Fonte: O Autor. 
CONSIDERAÇÕES FINAIS
Um paradigma de programação se refere diretamente ao método de desenvol-
vimento de código por parte do programador, sabendo que cada linguagem 
tem em seus paradigmas, os limites que suas técnicas de programação impõem.
Desta forma, a escolha de uma linguagem adequada a cada caso envolve tais 
paradigmas, pois a escolha de uma opção equivocada pode prejudicar a quali-
dade, o tempo de desenvolvimento ou até impossibilitar a produção do código 
capaz de atender às necessidades do projeto,devido às limitações da linguagem.
Num paradigma estruturado ou procedural, é possível resolver problemas 
EVOLUÇÃO DAS LINGUAGENS DE PROGRAMAÇÃO, SINTAXE, SEMÂNTICA E ANÁLISE LÉXICA
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IU N I D A D E44
dividindo-os em partes de forma a tratar frações do problema, simplificando a 
codificação, e podendo tratar em funções ou procedimentos interligados por 
parâmetros para, no conjunto, chegar a uma solução ideal para problema.
Já no paradigma orientado a objetos, ao invés de funções e procedimentos, 
objetos são instanciados a partir de classes criadas para que a forma como cada 
objeto trabalhe seja encapsulada e independente do resto do código, de certa 
forma, e possa ser facilmente reaproveitado em códigos futuros.
Existe alguma similaridade nas formas de programação, pois partem de cer-
tos princípios lógicos comuns a todas as linguagens, mas a forma como estes 
princípios são utilizados e quais técnicas mais específicas são implementadas 
representam as diferenças entre as linguagens.
Independente de quais sejam os paradigmas de cada linguagem, cabe ao pro-
gramador identificar aqueles relacionados à sua forma de produzir código e de 
que forma as especificidades técnicas de cada linguagem afetam seu trabalho.
Se a aplicação a ser desenvolvida envolver programação orientada a objetos 
ou programação estrutural, por exemplo, isso pode ser um critério para a deci-
são em relação à linguagem a ser utilizada na implementação.
45 
1. Existem diversas linguagens diferentes de programação. Quais 
as diferenças entre as linguagens Smalltalk e HTML?
2. A linguagem C é uma das linguagens antigas que sobreviveram 
até os dias atuais. Ela sofreu evoluções e modificações. Quais 
linguagens que evoluíram de C, contendo características perti-
nentes a essa evolução.
3. Existem linguagens voltadas para a criação de softwares para 
uso em desktops isolados ou em rede. Existem também lingua-
gens para desenvolvimento de produtos para web. Cite as lin-
guagens populares para desenvolvimento desktop e web.
4. Algumas linguagens, com o passar dos anos, sofreram altera-
ções ou novas aplicações para continuarem ativas e se adap-
tar às novas tecnologias e funcionalidades nos computadores. 
Surgiram alternativas de desenvolvimento tais como Delphi 
e Visual Studio. Quais linguagens serviram de base para estas 
tecnologias que surgiram muitos anos depois das linguagens 
utilizadas por elas?
a) C e Java
b) HTML E CSS
c) Pascal e C++
d) PHP e Javascript
5. Algumas linguagens, além de usar letras em seus comandos, 
utilizam outros símbolos para sua codificação. O símbolo $ é 
usado em qual linguagem, por exemplo?
46 
Classificação das Linguagens de Programação quanto à Geração
Alguns autores dividem as linguagens de programação de acordo com a época em que 
surgiram, e, segundo Maclennan, temos cinco gerações distintas, tendo elas detalhes 
fundamentais que contribuíram para a divisão das categorias.
Uma primeira geração seria representada por linguagens que contém instruções que 
trabalham em nível de hardware e instruções de controle mais simples, sem muitos re-
cursos.
A segunda geração poderia ser representada por linguagens com estruturas de controle 
mais elaboradas, permitindo aninhamento entre estruturas e não lidando tão direta-
mente com a máquina.
Numa terceira geração temos linguagens de alto nível, distantes do hardware e conten-
do instruções já bem avançadas e com grande capacidade de variação nas aplicações 
possíveis, utilizando estruturas de dados mais complexas.
A quarta geração representava linguagens orientadas a objeto com abstração de dados 
e demais conceitos relativos a esta forma de programação.
Na quinta geração, ocorre a união das diferentes categorias de paradigmas de progra-
mação como orientação a objetos e programação funcional.
Assim, pode-se observar que linguagens de programação com finalidades muito distin-
tas podem ser agrupadas, mas não existe um critério único para isto, pois mudanças de 
paradigma ou de formas de programação influenciam toda uma geração de linguagens 
criadas com propósitos coerentes com os tipos de aplicação comuns em determinada 
época.
De qualquer maneira, uma linguagem pode ser classificada de acordo com a finalidade 
profissional a qual se destina, seja ela de manipulação de hardware puro em dispositivos 
com tecnologias embarcadas ou linguagens para aplicações comerciais de alto nível.
Linguagens de programação são ferramentas muito poderosas e variadas em sua capa-
cidade técnica e utilizações, mas certos conceitos são fundamentais para que se possa 
situar uma linguagem em relação à outra.
Conhecer os fundamentos da programação é muito importante para o aprendizado de 
qualquer linguagem específica e, após o aprendizado de uma linguagem, outras são 
mais facilmente aprendidas.
Fonte: Sebesta (2012).
Material Complementar
MATERIAL COMPLEMENTAR
Título: Linguagens de Programação - Princípios e Paradigmas – 2ª ed. 
Autor: Allen B Tucker; Robert Nooman
Editora: Amgh Editora
Sinopse: Livro bastante conceituado sobre o projeto de linguagens 
de programação com exemplos práticos comentados de forma a 
facilitar a compreensão de instruções e como funcionam linguagens de 
programação em geral.
REFERÊNCIAS
REFERÊNCIA LIVROS
ASCENCIO, A. F. G. Fundamentos da programação de computadores: algoritmos 
PASCAL, C/C++ (padrão ANSI) e JAVA. 3. São paulo: Ed. Pearson Education do Brasil, 
2012.
MACLENNAN, B. J. Principles of Programming Languages: Design, Evaluation and 
Implementation (em inglês). 3ª ed. Oxford: Oxford University Press, 1999. 
SEBESTA, R. W. Concepts of programming languages.10ª ed. New Jersey: Pd. Pear-
son EducationInc., 2012.
REFERÊNCIA LINKS
VEJA quais são as 20 linguagens de programação mais populares. Olhar Digital, 
2015. Disponível em: <http://olhardigital.uol.com.br/noticia/veja-quais-sao-as-
-20-linguagens-de-programacao-mais-populares/46271>. Acesso em: 29 mar. 2016.
GABARITO
49
1. Smalltalk é uma linguagem totalmente voltada à programação orientada a obje-
tos, compilada e capaz de criar programas, e HTML é uma linguagem de marca-
ção para web, sem recurso algum de orientação a objetos, interpretada e neces-
sita de um navegador para que seus códigos funcionem.
2. A linguagem C++, evolução da linguagem C, evolui com a principal aquisição 
da programação orientada a objetos em sua definição. Alterações na sintaxe e 
funcionalidade de alguns comandos, novos tipos, e estruturas de dados foram 
implementadas. C# que foi modificada para WEB, e Objective-C para desenvolvi-
mento de aplicações Apple.
3. C, Pascal, Basic, Java e Smalltalk para programação desktop, e Javascript, HTML, 
Perl, PHP e CSS para programação web.
4. C - Pascal e C++.
5. Perl e PHP.
U
N
ID
A
D
E II
Professor Esp. Ronie Cesar Tokumoto
NOMES, TIPOS DE DADOS, 
OPERADORES, EXPRESSÕES 
E ESTRUTURAS
Objetivos de Aprendizagem
 ■ Conhecer regras para definição de nomes utilizados em linguagens.
 ■ Conhecer os tipos de dados aceitos.
 ■ Saber os tipos de operadores aceitos.
 ■ Compreender a estrutura de expressões lógicas e matemáticas.
 ■ Ser capaz de elaborar estruturas compostas de dados.
Plano de Estudo
A seguir, apresentam-se os tópicos que você estudará nesta unidade:
 ■ Sintaxe e semântica
 ■ Análise sintática e léxica
 ■ Nomes e tipos de dados
 ■ Operadores e expressões
 ■ Estruturas de controle
Introdução
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
53
INTRODUÇÃO
Uma linguagem de programação, independenteda época em que tenha sur-
gido, deve possuir regras bem definidas para que códigos gerados nela possam 
realmente ser efetivos e cumprir seu papel no desenvolvimento de aplicações.
O programador deve conhecer uma linguagem para poder programar nela, 
mas não é obrigado a saber exatamente tudo que uma linguagem pode ofere-
cer, e tende a descobrir aos poucos os limites da linguagem com a qual trabalha.
Independente do quanto conheça de uma linguagem, uma certeza que possui 
é que, provavelmente, errará muitas vezes ao desenvolver programas na mesma, 
e tais erros devem ser encontrados pelo responsável pela verificação do código 
antes de seu uso como produto executável.
Analisadores de códigos embutidos em compiladores ou interpretadores 
devem ser capazes de ler um código criado e vasculhar sua estrutura para iden-
tificar todos os possíveis erros que possam prejudicar seu funcionamento, de 
preferência antes do mesmo ser executado e gerar erros em tempo de execução.
Tais erros em tempo de execução são piores, pois podem prejudicar gran-
des operações dependendo de onde estiverem inseridos e sua função, podendo 
ser algo simples ou extremamente complexo.
A sintaxe e a semântica são duas áreas da verificação de códigos que preci-
sam ser muito bem definidas para reduzir a ocorrência de exceções e efetuar as 
devidas ligações entre as partes de um programa.
A forma como essas análises são realizadas é o foco desta unidade, que se 
preocupa em mostrar um pouco da análise que é feita em um código para veri-
ficar sua validade e acerto.
Estruturas em forma de árvore são úteis para ilustrar como instruções de 
um código são construídas e compreendidas, separando em ramificações os ele-
mentos que compõem estas instruções.
A simbologia, operadores e demais elementos que podem compor instru-
ções são estudados para que sejam compreensíveis as regras que definem como 
uma linguagem se comporta e quais suas limitações.
NOMES, TIPOS DE DADOS, OPERADORES, EXPRESSÕES E ESTRUTURAS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IIU N I D A D E54
SINTAXE E SEMÂNTICA
Toda linguagem de programação é composta por comandos organizados den-
tro de certa lógica e seguindo a mesma no desenvolvimento de seus códigos, de 
acordo com sua finalidade e forma como se implementam os programas.
Descrever uma linguagem é um processo complicado, pois precisa ser feito 
de forma completa e levando em consideração as diferentes interpretações que 
um texto pode receber.
Toda linguagem, enquanto implementada, precisa ser testada para que possa 
ser avaliada por possíveis usuários e tenha, por meio dos retornos (feedback), 
trazidos por estes, a possibilidade de ser ajustada até que possa ser oficialmente 
lançada no mercado e utilizada profissionalmente no desenvolvimento de soluções.
Guias de referência, livros e cursos precisam ser ofertados para capacitar 
todos os interessados na ferramenta para que sejam capacitados a explorar as 
potencialidades da linguagem.
Neste contexto, o termo sintaxe se refere a como são construídos os coman-
dos de uma linguagem de programação, indicando, para cada palavra reservada, 
parâmetros aceitos e a forma correta de usá-los.
Complementarmente, a semântica avalia a correta colocação dos comandos 
que podem conter ou não blocos com outros comandos associados a estes blo-
cos, e sua colocação dentro de subprogramas ou do programa como um todo.
Em geral, uma linguagem é formada por caracteres de um alfabeto agrupados 
em cadeias que formam sentenças. O termo comando será utilizado para deno-
minar estas sentenças aceitas por uma linguagem de programação, mesmo que, 
em diversas linguagens, se utilize outras nomenclaturas, como TAG ou seletor.
 Uma análise de sintaxe parte do princípio que determinada linguagem con-
tenha palavras reservadas formadas por símbolos de um alfabeto definido. O 
processo lê uma cadeia de símbolos contidos em uma linha até que se encontre 
um símbolo marcador de final de comando.
Todas as sequências menores de símbolos são analisadas separadamente para 
serem validadas em relação às regras de construção de comandos na linguagem 
em termos de palavras reservadas e parâmetros.
Sintaxe e Semântica
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
55
Existem geradores de código capazes de construir, com limitações, progra-
mas inteiros para atender demandas, mas, pela limitação que o gerador possui 
de criação de variações de comandos, o programa tende a ser mais limitado e 
padronizado.
Um termo muito utilizado nesta área de estudos é metalinguagem, que repre-
senta uma linguagem utilizada para representar outra, em que a BNF (Backus-Naur 
form) é uma metalinguagem para programação.
Pelas regras da BNF, a associação, por exemplo, se baseia no conceito de que 
uma variável recebe um valor ou expressão, sendo o símbolo de igualdade (=), 
responsável por separar as duas partes do comando.
Listas de identificadores são separadas pelo símbolo de vírgula (,), lem-
brando que estes identificadores podem ser valores ou expressões, por exemplo.
Operadores também têm seus símbolos definidos no caso de operadores 
matemáticos, como soma (+), subtração (-), operadores lógicos como E(&), OU 
(|), e operadores relacionais como maior (>) e menor (<).
A escolha das palavras-chave, regras de construção de comandos e expressões 
válidas é implementada de forma particular em cada linguagem, e as limitações 
e exceções que influenciam diretamente a ortogonalidade da linguagem estão 
diretamente ligadas ao uso de metalinguagens como a BNF.
A Figura 1 contém um exemplo de código gerado utilizando apenas os ele-
mentos definidos até o momento, seguindo a simbologia definida como padrão 
e utilizando os conceitos básicos de estruturação de algoritmos para a constru-
ção dos comandos.
Figura 1 - Exemplo de código em metalinguagem
Fonte: O Autor.
Toda metalinguagem segue um raciocínio semelhante na estruturação de suas 
sentenças que pode ser organizado em partes que podem formar uma árvore 
que define todos os componentes de cada comando.
NOMES, TIPOS DE DADOS, OPERADORES, EXPRESSÕES E ESTRUTURAS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IIU N I D A D E56
A figura 2 mostra como poderia ser a árvore de um dos comandos mostra-
dos na figura 1, separando todos os elementos do comando dentro da estrutura.
Figura 2 - Exemplo de árvore de sintaxe de um comando
<atribuição>
<atribuição> <expressão>
Var3 +Var1 Var2
=
Fonte: O Autor.
Pode acontecer de expressões diferentes em sua estrutura terem resultados iguais, 
devido à equivalência de alguns operadores, e gerarem árvores diferentes, mas 
com interpretações iguais, gerando ambiguidade.
Neste caso há ambiguidade, pois, tendo o mesmo resultado, duas expressões 
podem, então, resolver um mesmo problema.
Existem casos onde esta mudança gera problemas com resultados, e estas 
exceções precisam ser tratadas utilizando outros símbolos adicionais como 
parênteses ou regras de formação de expressões que reduzam as possibilidades 
de ocorrência de situações inesperadas, como expressões não desejadas.
Uma regra importante para estabelecer a forma como são interpretadas 
expressões em determinada metalinguagem são as precedências entre opera-
dores que indicam quais tem prioridade sobre outros na ordem dos cálculos.
Outro ponto importante sobre o uso de operadores é a ordem em que estes 
são utilizados em expressões e sua prioridade nos cálculos, pois é preciso regras 
para garantir que os cálculos sigam regras matemáticas tradicionais.
Operadores como a adição não sofrem influência na ordem com queduas 
somas são realizadas, pois o resultado será sempre o mesmo, mas operadores 
como a divisão geram resultados diferentes quando a ordem correta para as divi-
sões que foram calculadas não é respeitada.
Além dos operadores e expressões, temos diversas outras estruturas como 
variáveis, comandos e estruturas de dados que precisam ter regras cuidadosa-
mente estabelecidas para que a metalinguagem seja funcional.
Sintaxe e Semântica
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
57
Estruturas como laços de repetição, por exemplo, precisam ser implemen-
tadas de forma que sua sintaxe seja clara e exceções que possam gerar erros de 
execução sejam evitadas, como repetições em quantidade errada ou contado-
res de tipos indevidos.
Como um laço de repetição gera uma quantidade de repetições de outros 
comandos, estes precisam de delimitadores claros para que o processo de aná-
lise sintática seja eficiente, podendo avaliar comandos aceitos ou não dentro de 
um laço e a sintaxe de cada um destes comandos embutidos.
Figura 3 - Exemplo de Laço de repetição
Fonte: O Autor.
O exemplo da Figura 3 mostra um comando que define um laço de repetição 
simples, em que temos a definição do número de repetições, o conteúdo a ser 
executado nas repetições e o fechamento do bloco de operações a serem reali-
zadas durante o laço.
Observando a Figura 4, é perceptível a divisão do comando em diversos ele-
mentos para definir o laço de repetição e a forma como sua sintaxe é estruturada.
Figura 4 - Exemplo de árvore de sintaxe de um laço de repetição
<laço>
para <identi�cador> <identi�cador> <identi�cador>de ate faça
<valor> <valor>Var3
Fonte: O Autor.
A semântica é outro ponto fundamental para a definição de uma metalingua-
gem e um código gerado por essa linguagem precisa ser analisado tanto em sua 
sintaxe quanto em sua semântica.
NOMES, TIPOS DE DADOS, OPERADORES, EXPRESSÕES E ESTRUTURAS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IIU N I D A D E58
A semântica analisa questões estruturais mais complexas à correta coloca-
ção dos comandos de acordo com a ordem em que devem estar dispostos em 
um código e detalhes como declarações de variáveis que podem ser necessárias 
antes do uso das mesmas, dependendo de como se queira implementar uma 
metalinguagem.
Uma gramática é composta de símbolos que formam seu vocabulário, sendo 
que esses símbolos são formados por elementos pertencentes a um alfabeto defi-
nido para delimitar a quantidade possível de símbolos.
Cada símbolo tem uma interpretação diferente e possui uma lista de proprieda-
des válidas que ampliam o uso de cada símbolo na construção da metalinguagem.
Esses atributos podem ser sintetizados para passar informações sobre o 
símbolo para níveis superiores da árvore de análise semântica ou herdados que 
passam informações para níveis inferiores da árvore de análise semântica.
Além destes dois tipos de atributos, existe um terceiro que é gerado quando 
se declaram variáveis e estruturas de dados, por exemplo, que criam novos símbo-
los que passam a ser aceitos dentro da análise semântica como válidos, contendo 
a forma de uso já previamente determinada na metalinguagem.
Uma variável em diversas linguagens de programação é declarada com um 
nome com regras de uso de caracteres restrita, um tipo válido dentre os acei-
tos e, em alguns casos, um símbolo terminal para indicar o fim da declaração.
Com isto, antes deste símbolo terminal, pode-se utilizar outro símbolo sepa-
rador para que mais de uma variável de mesmo tipo seja declarada num mesmo 
comando a ser analisado sintática e semanticamente.
Um exemplo pode ser visto na Figura 5, em que é mostrada a mesma situ-
ação de associação de valor a uma variável pelo ponto de vista sintático e, em 
seguida, semântico, para que se perceba a diferença na estruturação do comando.
Figura 5 - Exemplo de atribuição de valor à variável
Fonte: O Autor.
Sintaxe e Semântica
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
59
A semântica de uma linguagem de programação é complexa e exige uma 
definição muito clara de seus elementos, sendo interessante a descrição de uma lin-
guagem base, sem ambiguidades e simplificada para ser facilmente compreendida.
Assim, poderia ser considerada uma linguagem intermediária entre o que 
seria uma linguagem de baixo nível, muito simples, mas desnecessariamente 
preocupada com o uso do hardware normalmente. Estaria num nível abaixo de 
uma linguagem completa de alto nível, por possuir uma complexidade muito 
elevada e ambígua.
A partir da definição desta linguagem intermediária, é preciso que um inter-
pretador seja desenvolvido para verificar códigos criados nesta linguagem e sua 
estrutura, lógica e comandos.
A semântica é mais complexa que a sintaxe, e descrever o significado de suas 
expressões em uma linguagem é uma tarefa difícil, mas importante para que os 
profissionais que programarem na linguagem conheçam as instruções e suas 
funções dentro de um código.
A chamada Semântica Operacional lida com programas em execução, inter-
pretando o que ocorre com cada instrução e alterações que possam ocorrer com 
valores utilizados pelo hardware durante o processo.
Na Figura 6, temos um exemplo em que um comando de decisão do tipo 
“se” é interpretado de forma a deixar bem claro como os desvios do fluxo ocor-
rem e a condição para que estes desvios sejam feitos.
Figura 6 - Exemplo de análise semântica operacional
Fonte: O Autor.
Toda linguagem precisa que as expressões construídas em seu código sejam 
validadas e, para isto, é preciso provas algébricas para demonstrar as regras que 
tratam da validade de operadores e expressões.
NOMES, TIPOS DE DADOS, OPERADORES, EXPRESSÕES E ESTRUTURAS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IIU N I D A D E60
Isso pode ser feito por meio de outra semântica chamada axiomática, que 
se baseia em lógica matemática e trabalha com expressões lógicas antes e depois 
de cada instrução do código para garantir que as condições para execução das 
instruções ocorra adequadamente.
Outro método bastante importante, chamado de Semântica Denotacional, 
se baseia na teoria da recursividade para descrever uma linguagem de progra-
mação. Ela, com objetos matemáticos e funções para descrever o significado de 
programas, sendo que objetos matemáticos são precisos e bem definidos, ao 
passo que instruções de linguagem, não.
Assim, é preciso trabalhar para conseguir definir os objetos para a lingua-
gem e associar estas funções ligadas a estes objetos para definir os elementos da 
sintaxe da linguagem.
Um exemplo de relação denotacional poderia ser utilizado para analisar a 
Figura 4, em que poderíamos ter uma função como a da Figura 7 em que letras 
maiúsculas com índices indicam as funções associadas ao conceito de pré-con-
dição de uma estrutura de decisão.
Figura 7 - Exemplo de semântica denotacional para estrutura de decisão
Fonte: O Autor.
Temos na Figura 7 diversos símbolos que representam regras da semântica deno-
tacional, como Δ que indica a descrição de uma função matemática; M1, Mb e 
Ms que indicam os nomes das funções utilizadas na análise; A e B que repre-
sentam expressões válidas ou não; e s o estado relativo aos dados da instrução.
Análise Sintática e Léxica
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
reiro
 d
e 
19
98
.
61
ANÁLISE SINTÁTICA E LÉXICA
A análise léxica é a busca por padrões em cadeias de símbolos que sejam aceitos 
em uma linguagem de programação. Esta análise é feita antes da análise sintá-
tica, pois verifica, um a um, todos os símbolos e sua validade, uma vez que, em 
caso de falha, a análise sintática nem precisa ocorrer para aquela instrução.
Um exemplo simples é mostrado na Figura 8, em que é ilustrada a análise 
léxica da primeira linha da estrutura de decisão baseada na estrutura mostrada 
na Figura 6 que representa a parte fundamental da estrutura em si.
Figura 8 - Exemplo de análise léxica em estrutura de decisão
Fonte: O autor.
Os compiladores utilizam a análise léxica para gerar os lexemas já analisados e 
extraídos do código e passa-los ao analisador sintático para efetuar sua etapa de 
verificação do código, podendo assim ter apenas a função de verificar a sintaxe, 
sem se preocupar com a identificação de símbolos incompreensíveis já verifica-
dos pelo analisador léxico.
A análise sintática é realizada para verificar um código criado para uma 
determinada linguagem de programação e conferir se está sintaticamente cor-
reto, fornecendo mensagens de feedback em caso de erros, além de produzir 
uma estrutura contendo a análise realizada, para servir de base para sequência 
do processo de compilação do código.
A estrutura sintática pode ser obtida através de um processo que inicia pela 
parte superior da possível estrutura (cima-baixo) ou pela parte inferior até sua 
extremidade superior (baixo-cima), ambas complexas e lentas, pois o processo 
de análise se baseia na ideia da leitura de visualizar apenas um próximo símbolo.
NOMES, TIPOS DE DADOS, OPERADORES, EXPRESSÕES E ESTRUTURAS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IIU N I D A D E62
A análise recursiva descendente trabalha com a regra cima-baixo para utili-
zar subprogramas de forma recursiva para analisar códigos contendo blocos de 
instruções e estruturas aninhadas.
Segundo uma norma adequada para este caso, chamada BNF estendida, 
pode-se usar colchetes para representar elementos que são opcionais em uma 
instrução e usar chaves para representar elementos que podem se repetir uma 
ou mais vezes.
Na Figura 9 temos um exemplo em notação BNF estendida utilizando uma 
instrução de atribuição para oferecer mais de uma alternativa possível e ilustrar 
como estruturar a análise descendente recursiva.
Figura 9 - Exemplo de BNF estendida e subprograma para análise recursiva
Fonte: O Autor.
NOMES E TIPOS DE DADOS
O uso de nomes é utilizado em programação para definir elementos que comple-
mentam instruções baseadas no uso de palavras-chave, e seguem certas regras 
definidas por cada linguagem para que seus analisadores léxicos e sintáticos con-
sigam interpretar cada instrução codificada.
Nomes e Tipos de Dados
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
. 1
84
 d
o 
Có
di
go
 P
en
al
 e
 L
ei
 9
.6
10
 d
e 
19
 d
e 
fe
ve
re
iro
 d
e 
19
98
.
63
A linguagem FORTRAN foi a primeira a permitir nomes com mais de um 
caractere, permitindo até seis caracteres em sua implementação inicial, abrindo 
as portas para que novas regras com maior quantidade de caracteres aceitos fos-
sem surgindo.
Algumas linguagens exigem nomes contendo apenas letras do alfabeto, 
podendo ser maiúsculas ou minúsculas apenas, ou ambas as opções em con-
junto, além de caracteres como “_”.
Palavras reservadas também têm suas regras em cada linguagem de pro-
gramação, e estas regras podem até ser diferentes das utilizadas na composição 
dos demais tipos de nomes permitidos numa linguagem, como nomes de vari-
áveis e constantes.
Variáveis que representam endereços de memória associados a nomes em 
programas para armazenamento de dados são comuns em todas as linguagens, 
assim como constantes que apenas se diferenciam pela não alteração dos valo-
res armazenados em memória durante a execução do programa.
Toda variável ou constante tem um tipo de dado associado que indica o 
tipo de valor aceito para armazenamento em memória e o quanto de espaço na 
memória do hardware é reservado para este armazenamento, podendo este ser 
temporário na memória RAM ou permanente em disco, no caso de alguns tipos 
de dados para manipulação de arquivos.
Entende-se por valor para uma variável ou constante o tipo de dado que é 
permitido e a faixa de valores aceitos pela definição do tipo de dado na lingua-
gem e o limite aceito pelo espaço reservado para o armazenamento em memória.
Vincular um tipo a uma variável é uma associação que ocorre durante a codi-
ficação, usando elementos aceitos em uma linguagem de programação ou espaços 
de memória reservados para tipos variáveis em tempo de execução.
Esta vinculação permite que compiladores façam as ligações necessárias 
entre sub-rotinas e elementos de ligação no código e que realizem chamadas a 
estas sub-rotinas durante a execução.
Os vínculos que ocorrem dinamicamente em tempo de execução, por exem-
plo, possuem tempo de vida associado ao quanto são utilizados em tempo de 
execução de um programa e perdem seus vínculos no momento em que dei-
xam de ser utilizados.
NOMES, TIPOS DE DADOS, OPERADORES, EXPRESSÕES E ESTRUTURAS
Reprodução proibida. A
rt. 184 do Código Penal e Lei 9.610 de 19 de fevereiro de 1998.
IIU N I D A D E64
Uma variável local pertencente a uma sub-rotina, com escopo apenas para 
uso durante a execução da mesma. Esta sub-rotina é liberada da memória assim 
que é finalizada, assim como ocorre com objetos que sejam finalizados por méto-
dos destrutores em linguagens orientadas a objeto.
Dentro da declaração de tipos, uma linguagem que seja do tipo fortemente 
tipada tem bem estabelecido o tipo de dado aceito por variáveis e constantes, 
tendo então a reserva de memória já padronizada em termos de espaço a ocupar.
Uma linguagem fracamente tipada já permite que a reserva de espaço em 
memória seja menos padronizada e ocorra de forma bem dinâmica durante a 
execução, associando a quantidade de memória para armazenamento de valo-
res de acordo com o dado recebido, por exemplo.
É preciso ter regras bem definidas numa linguagem em relação à compatibili-
dade entre tipos de dados e conversões possíveis para evitar exceções indesejadas 
em tempo de execução.
O chamado escopo citado a pouco define se variáveis têm uso permitido ape-
nas dentro de sub-rotinas quando chamadas (variáveis locais) ou em outras áreas 
do código (variáveis globais), mas existe outra categoria de escopo que permite 
que uma variável seja visível dentro da sub-rotina em que foi declarada, assim 
como em outras sub-rotinas chamadas por ela, utilizando o conceito de herança 
da programação orientada a objetos.
Os tipos de dados definem com quais valores um programa desenvolvido em 
determinada linguagem pode trabalhar em tempo de execução, podendo mani-
pular desde tipos simples até estruturas de dados mais complexas.
Tipos primitivos representam a categoria básica de valores aceitos na lingua-
gem e contemplam, em geral, valores numéricos inteiros ou de ponto flutuante 
(números com casas decimais), tipos caractere (texto em geral), booleanos (ver-
dadeiro ou falso), e cadeias de valores ou caracteres.
Tipos podem ser definidos pelo usuário como listas de valores chamadas 
tipos enumerados, restringindo a faixa de valores de aceitos de um tipo primi-
tivo, ou matrizes e registros que representam coleções de outros tipos agrupados 
em uma estrutura com uma ou mais dimensões.
Registros são mais comumente usados para armazenamento de tipos varia-
dos em uma mesma estrutura e matrizes para dados de mesmo tipo de dado, 
Operadores e Expressões
Re
pr
od
uç
ão
 p
ro
ib
id
a.
 A
rt
.

Continue navegando