Buscar

Algoritmos e lógica de programação I

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 148 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 148 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 148 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

ALGORÍTIMO 
E LÓGICA DE 
PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA
Prof. Roque Maitino Neto
ALGORÍTIMO 
E LÓGICA DE 
PROGRAMAÇÃO I
Marília/SP
2023
“A Faculdade Católica Paulista tem por missão exercer uma 
ação integrada de suas atividades educacionais, visando à 
geração, sistematização e disseminação do conhecimento, 
para formar profissionais empreendedores que promovam 
a transformação e o desenvolvimento social, econômico e 
cultural da comunidade em que está inserida.
Missão da Faculdade Católica Paulista
 Av. Cristo Rei, 305 - Banzato, CEP 17515-200 Marília - São Paulo.
 www.uca.edu.br
Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma 
sem autorização. Todos os gráficos, tabelas e elementos são creditados à autoria, 
salvo quando indicada a referência, sendo de inteira responsabilidade da autoria a 
emissão de conceitos.
Diretor Geral | Valdir Carrenho Junior
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 5
SUMÁRIO
CAPÍTULO 01
CAPÍTULO 02
CAPÍTULO 03
CAPÍTULO 04
CAPÍTULO 05
CAPÍTULO 06
CAPÍTULO 07
CAPÍTULO 08
CAPÍTULO 09
CAPÍTULO 10
CAPÍTULO 11
CAPÍTULO 12
09
19
29
38
48
58
70
76
84
93
101
110
INTRODUÇÃO A ALGORITMOS E LÓGICA DE 
PROGRAMAÇÃO
VARIÁVEIS, CONSTANTES E TIPOS DE DADOS
EXPRESSÕES ARITMÉTICAS, LÓGICAS E 
RELACIONAIS
INTRODUÇÃO À ALGORITMOS 
ESTRUTURADOS
FORMAS DE REPRESENTAÇÕES DOS 
ALGORITMOS
ESTRUTURAS CONDICIONAIS
ESTRUTURA DE REPETIÇÃO COM TESTE NO 
INÍCIO
ESTRUTURA DE REPETIÇÃO COM TESTE NO 
FIM
ESTRUTURA DE REPETIÇÃO COM NÚMERO 
DEFINIDO DE REPETIÇÕES
ESTRUTURA DE DADOS HOMOGÊNEA 
UNIDIMENSIONAL: VETORES
ESTRUTURA DE DADOS HOMOGÊNEA 
BIDIMENSIONAL: MATRIZES
ESTRUTURA DE DADOS HETEROGÊNEA: 
REGISTROS
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 6
SUMÁRIO
CAPÍTULO 13
CAPÍTULO 14
CAPÍTULO 15
119
125
134
CONCEITO E UTILIZAÇÃO DE STRINGS
MODULARIZAÇÃO
PARÂMETROS E ARGUMENTOS EM 
SUBPROGRAMAS
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 7
INTRODUÇÃO
No vasto universo da ciência da computação, os algoritmos servem como a espinha 
dorsal que sustenta o desenvolvimento de soluções para os mais diversos tipos de 
problemas. Eles são a chave para as mudanças que temos presenciado em nosso 
cotidiano e o domínio de conceitos e práticas relacionados a eles certamente abrem 
as portas para o sucesso profissional nesta área.
Este material foi planejado e criado para ser um guia que oferecerá a você uma 
sólida compreensão dos fundamentos essenciais da criação de algoritmos através das 
ferramentas oferecidas pela programação estruturada. Neste sentido, cada capítulo 
proporcionará uma imersão progressiva em aspectos distintos destas ferramentas, 
proporcionando uma base sólida para quem dá os passos iniciais nos algoritmos.
Nos dois primeiros capítulos mergulharemos na essência dos algoritmos, explorando 
seu conceito fundamental e suas diversas aplicações. Um breve histórico dos algoritmos 
nos permitirá compreender a evolução dessa disciplina, enquanto uma introdução 
às variáveis estabelecerá a base para a manipulação de dados ao longo do material. 
Ainda nesta parte inicial, expandiremos nosso entendimento sobre as variáveis, 
ao abordarmos tipos de dados, assim como as operações de entrada e saída que 
constituem a interação vital entre o programa e o usuário. Este será um passo crucial 
para a criação de algoritmos dinâmicos e interativos.
No terceiro capítulo, aprofundaremos nosso conhecimento em expressões 
aritméticas, lógicas e relacionais, essenciais para a manipulação e avaliação de dados 
que atuarão em nossos códigos. Esses conceitos formarão a base para a construção 
de algoritmos mais complexos e eficientes.
Os capítulos subsequentes abordarão tópicos cruciais da programação estruturada, 
desde estruturas sequenciais e condicionais até formas distintas de representação 
de algoritmos. Estruturas condicionais e de repetição são discutidas detalhadamente, 
o que fornecerá a você as ferramentas necessárias para criar programas robustos e 
flexíveis.
Nos capítulos 10, 11 e 12 adentramos nas estruturas de dados homogêneas e 
heterogêneas, e teremos oportunidade de explorar conceitos e aplicações de vetores, 
matrizes e registros, enquanto o capítulo treze introduz o fascinante mundo das strings. 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 8
A modularização, discutida no capítulo quatorze, é um conceito fundamental para a 
criação de programas mais legíveis, reutilizáveis e fáceis de manter. Finalmente, o 
capítulo quinze aborda a importância dos parâmetros e argumentos em subprogramas, 
revelando técnicas fundamentais para criar código modular e eficiente.
Este material, enfim, é endereçado a estudantes que, como você, estão dando seus 
primeiros passos na criação de algoritmos. Cada capítulo é estruturado para oferecer 
uma experiência de aprendizado progressiva, construindo uma sólida base para o 
entendimento prático da criação de algoritmos. Sua jornada está prestes a começar 
e, para bem cumpri-la, seu esforço e perseverança serão decisivos. Bons estudos!
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 9
CAPÍTULO 1
INTRODUÇÃO A ALGORITMOS 
E LÓGICA DE PROGRAMAÇÃO
Aqui começa nossa jornada rumo aos saberes e habilidades do que seguramente 
podemos entender como um dos pilares da Computação moderna. O conhecimento 
das estruturas e da lógica próprias de um algoritmo certamente abrirá caminhos para 
seu progresso na Tecnologia da Informação e garantirá bom alicerce para a construção 
do seu sucesso profissional. Para que você se sinta estimulado a prosseguir, cuidamos 
para que o início do nosso estudo seja repleto de descobertas e de fatos interessantes 
a respeito dos algoritmos. Por isso, neste primeiro encontro você terá a oportunidade 
de fazer contato com conceitos e utilizações do nosso objeto de estudo, com alguns 
de seus elementos históricos e, por fim, com os componentes mais básicos de sua 
estrutura. Sigamos adiante!
1.1 Conceito de Algoritmo
Não dá para negar que os algoritmos desempenham papel fundamental em 
nosso mundo e nosso estilo de vida cada vez mais dependente do meio digital. Eles 
constituem a própria essência da resolução de problemas, da tomada de decisões e 
de muitos aspectos do nosso cotidiano que que seriam dificultados – para dizer o 
mínimo – sem a atuação deles. Apenas como exercício, tente imaginar como seria 
uma simples operação bancária sem o controle exercido por um algoritmo. Com 
tamanha utilidade, não é de se estranhar que os algoritmos sejam quase onipresentes 
em nossa vida. Antes de termos contato com a complexidade das suas aplicações, 
vale a pena investirmos tempo na correta conceituação de algoritmos.
De forma simples e prática, um algoritmo é uma sequência de passos finitos 
e ordenados, executados com a finalidade de resolver um problema. Como você 
certamente já imaginou, há uma categoria específica de problemas que podem ser 
resolvidos pelos algoritmos. Não se pode atribuir a eles, portanto, a missão de resolver 
um problema existencial ou comportamental, por exemplo. Embora o tratamento deste 
assunto venha na sequência, é necessário registrar que as tarefas que um algoritmo 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 10
pode resolver são aquelas que podem ser formuladas por meio de uma sequência 
lógica e precisa de comandos.
Para que possa estar apto a desempenhar sua função, um algoritmo deve obedecer 
a algumas regras e a primeira delas está relacionada a sua finitude. Embora esta 
premissa possa parecer bem óbvia, a sequência de passos deve ter início e fim definidos. 
Neste sentido, um bom exemplo vem de problemas cujoresultado compreende uma 
sequência numérica potencialmente infinita. Uma condição de parada deve ser adotada 
de tal modo que, ao ser satisfeita, o processamento do algoritmo seja interrompido.
A segunda regra estabelece que um algoritmo não deve ser ambíguo, ou seja, que 
as instruções não devem ser passíveis de interpretação e/ou de geração de dúvidas. 
Duas situações da vida cotidiana esclarecerão esta ideia: 
1. Imagine que você está diante de um problema cuja resolução inclua o abastecimento 
de um veículo, de modo que, após o procedimento, o indicador aponte que 
exatamente metade do tanque está preenchido com combustível. Neste caso, 
você não deve se dirigir ao atendente do posto pedindo a ele que “coloque meio 
tanque de combustível”, simplesmente porque ele não sabe quanto combustível 
há no tanque. Ao invés disso, um comando preciso e livre de interpretação deve 
ser dado. Neste comando, a quantidade exata de combustível (em litros) seja 
apontada. 
2. Imagine agora uma receita de bolo que contenha a instrução “adicione farinha a 
gosto”. Neste caso, a quantidade de farinha a ser adicionada não está especificada, 
deixando espaço para interpretações variadas. O ponto ideal de farinha pode ser 
(e certamente será!) diferente para pessoas diferentes, o que levará a resultados 
inconsistentes e imprevisíveis relacionados ao bolo. Neste caso, a instrução 
“incluir 200g de farinha” constituirá uma instrução objetiva e sem margem para 
dúvida.
Nos algoritmos que você aprenderá a construir, a clareza e a precisão dos comandos 
serão cruciais. Neste sentido, cada passo da resolução deve ser estabelecido de 
forma inequívoca, a fim de garantir que o algoritmo funcione corretamente e produza 
resultados previsíveis. A ambiguidade em algoritmos pode levar a erros de interpretação 
e, potencialmente, a consequências indesejadas. Por isso, a não ambiguidade é uma 
característica fundamental dos algoritmos eficazes.
Por fim, a terceira regra está relacionada a entrada de dados. Um algoritmo deverá 
dar ao seu usuário a possibilidade de inserção de dados para que sejam processados. 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 11
Além disso, para quaisquer entradas de um certo conjunto de dados, o algoritmo deverá 
ser capaz de fornecer o resultado esperado. Um pouco abstrato, não é mesmo? Um 
exemplo servirá para esclarecer o caso: imagine um algoritmo que realiza a soma de dois 
valores inteiros e fornece outro inteiro como resultado. Usando o conceito de variáveis 
– que logo você aprenderá a usar – podemos expressar assim o processamento 
envolvido:
a + b = c
Para quaisquer valores de a e para quaisquer valores de b, o algoritmo deverá ser 
capaz de realizar a soma e fornecer o resultado esperado. Não se pode admitir que 
o algoritmo seja capaz, por exemplo, de calcular o resultado para os valores 3 e 4, 
mas não seja capaz de fazer o mesmo para 5 e 6.
Conforme já mencionado, um algoritmo serve para resolver um problema que possa 
ser estruturado em uma sequência de passos, o que possibilita a qualquer pessoa 
(ou equipamento computacional) seguir as instruções e obter o resultado desejado. 
Os algoritmos, portanto, podem ser encontrados em todas as áreas da ciência da 
computação, matemática, engenharia e em vários aspectos da nossa vida cotidiana. 
A próxima seção trata das principais aplicações modernas dos algoritmos.
1.2 Principais aplicações dos Algoritmos
Optamos por apresentar essa seção em itens, a fim de que você possa compreender 
por completo a caracterização das aplicações mais interessantes e úteis dos algoritmos, 
desde as mais técnicas até as mais corriqueiras. Temos certeza de que você encontrará 
nesta lista uma ou mais aplicações que fazem parte do seu cotidiano.
1. Ordenação e Pesquisa: algoritmos de ordenação são usados para organizar 
dados em ordem crescente ou decrescente. Já os algoritmos de pesquisa são 
utilizados para encontrar itens em listas ordenadas de maneira eficiente. Como 
exemplo prático de utilização destes algoritmos podemos idealizar a seguinte 
situação: um gerente de agência bancária poderá querer ordenar a lista de seus 
clientes em ordem de saldo para fins de concessão de taxas especiais de juros e, 
em ação posterior, pesquisar todos os clientes que residem em uma determinada 
rua da cidade.
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 12
2. Aprendizado de máquina: algoritmos de aprendizado de máquina são usados 
para treinar modelos que podem fazer previsões, classificações e tomadas de 
decisão com base em dados.
3. Processamento de imagem e de vídeo: sistemas modernos de monitoramento vão 
muito além da mera geração de um vídeo de uma certa localidade. Algoritmos 
de reconhecimento facial, de detecção de presença humana e de classificação 
de objetos conferem a estes sistemas capacidades de observação até então 
exclusivas dos seres humanos.
4. Segurança da Informação: algoritmos criptográficos garantem a segurança de 
dados sensíveis, como nossas senhas de cartão de crédito, quando eles são 
transmitidos e armazenados. Um conjunto de regras matemáticas – expressas 
em um algoritmo – realiza a transformação de um texto que um humano pode 
compreender para um texto cifrado. 
Há, no entanto, uma ampla gama de aplicações de algoritmos que transcendem 
o contexto mais técnico da Computação e se acomodam em nossa utilização diária. 
Vejamos.
5. Redes Sociais: o vídeo ou a foto sobre aquele assunto que tanto provoca seu 
interesse não aparece por acaso em seu feed de notícias nas redes sociais. 
Algoritmos especializados determinam o que você vê com base no seu interesse 
em determinado tema, apurado pelo seu engajamento com o tema. 
6. Navegação por GPS: são algoritmos capazes de calcular a melhor rota entre o 
ponto de origem e o de destino, considerando as condições de tráfego em tempo 
real. Convém registrar que GPS vem de Global Positioning System, ou Sistema 
de Posicionamento Global, e que se tornou recurso indispensável em nossos 
deslocamentos, sobretudo em lugares desconhecidos. Aplicativos como o Waze 
e Google Maps utilizam este tipo de algoritmo para funcionarem. 
7. Assistência Médica: algoritmos são usados na análise de dados médicos 
para auxiliar em diagnósticos, identificação de padrões e desenvolvimento de 
tratamentos personalizados.
Além destas aplicações, há muitas outras que poderiam ser exploradas neste 
contexto, incluindo algoritmos usados para indicar conteúdos personalizados em 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 13
plataformas de streaming, comércio eletrônico e serviços de música. Agora que já 
compreendeu o conceito e as principais aplicações dos algoritmos, você é nosso 
convidado para conhecer um pouco da história e evolução deste tema tão interessante. 
1.3 Breve histórico dos algoritmos
Engana-se quem acha que a ideia de um algoritmo surgiu em nossos dias. A começar 
pela escolha do nome, sua história remonta a séculos atrás. O termo “algoritmo” tem 
sua origem no nome de Muhammad ibn Musa al-Khwarizmi, um matemático persa 
do século IX. Com algum esforço (e muita licença poética), conseguimos associar a 
última parte do nome ao som da palavra algoritmo. Em uma obra chamada “O Livro 
Compendioso sobre Cálculo por Conclusão e Equação”, nosso personagem sistematizou 
os métodos de resolução de equações lineares e quadráticas, fato que impulsionou 
o desenvolvimento da álgebra e da matemática (CITAÇÃO).
A utilização de um algoritmo para a resolução de problemas lógicos e matemáticos, 
contudo, foi verificada em civilizações anteriores ao século IX. Os egípcios, por 
exemplo, desenvolveram métodos para resolver equações lineares e calcular áreas 
usando fórmulas que, essencialmente, constituíam uma sequência de passos que 
levava à resolução de um problema. Em outras palavras, um algoritmo. Como nãopoderia deixar de ser, os gregos antigos - muito bem representados por Euclides 
e Arquimedes - também contribuíram para o desenvolvimento dos algoritmos, ao 
formularem procedimentos para a resolução de problemas geométricos.
Tempos depois, com a invenção da imprensa, o compartilhamento dos algoritmos 
– e de todo conhecimento relacionado a eles – foi bastante facilitado. Os trabalhos 
de matemáticos como Fibonacci e John Napier acrescentaram muito na evolução 
dos algoritmos. A revolução digital que presenciamos no século XX viabilizou 
grandes avanços na utilização dos algoritmos. A criação de uma máquina que 
atende a comandos escritos em linguagem específica constituiu abriu caminho 
para a criação de algoritmos de diferentes complexidades e aptos a resolverem 
uma miríade de problemas, desde cálculos científicos voltados a certos nichos de 
pesquisa até processamento de dados em larga escala. Desta forma, algoritmos de 
classificação, pesquisa, otimização e aprendizado de máquina ajudaram a construir 
a Computação como a conhecemos.
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 14
ANOTE ISSO
O matemático italiano Leonardo Fibonacci foi o criador de uma das sequências 
matemáticas mais intrigantes que conhecemos. Por padrão, ela se inicia com 
os números 0 e 1 e, a partir do terceiro termo, cada número é a soma dos dois 
anteriores. Assim, os primeiros números da sequência são: 0, 1, 1, 2, 3, 5, 8, 13, 
21, 34, e assim por diante, infinitamente. Mais do que uma simples cadeia de 
números, esta criação tem aplicações na ciência e na natureza. Ela está relacionada 
à proporção áurea, uma constante irracional denotada pela letra grega φ (phi), que é 
aproximadamente igual a 1,618033988749895. 
A proporção áurea é famosa por sua presença na arquitetura, arte e natureza, e é 
obtida ao dividir um número da sequência de Fibonacci pelo número anterior na 
mesma sequência. Além disso, a sequência de Fibonacci aparece em fenômenos 
naturais, como o arranjo de sementes em flores, a forma espiralada de conchas de 
moluscos, a disposição de folhas em algumas plantas e até mesmo na reprodução 
de coelhos, inspirando assim o nome “sequência de Fibonacci”.
Em plena era da inteligência artificial e do aprendizado de máquina, os algoritmos 
desempenham papel crucial em tarefas como reconhecimento de fala, visão 
computacional e até mesmo na condução autônoma de veículos. A constante evolução 
deste tema tem ajudado a moldar nosso mundo e a tornar nosso estudo ainda mais 
interessante. Na próxima seção serão abordados os elementos mais básicos dos 
algoritmos, incluindo as ideias de entrada, processamento e saída de dados.
1.4 Elementos fundamentais dos algoritmos
Um dos elementos mais interessantes sobre os algoritmos é a simplicidade 
conceitual que os caracteriza, especialmente quando comparada à sua complexidade 
de aplicações. Na seção 1.1 tivemos oportunidade de fornecer um conceito para 
algoritmo, comparando-o a uma sequência de passos finitos e ordenados, executados 
com a finalidade de resolver um problema. Basta refletir um pouco sobre este conceito 
para que se verifique seu enorme alcance, já que executamos “sequências de passos” 
em muitas das ações que empreendemos diariamente. Pensemos juntos: ao nos 
levantarmos da cama, normalmente seguimos uma rotina definida para estarmos 
aptos ao trabalho ou ao estudo; a criação de um prato segue uma receita igualmente 
definida de ações e o planejamento de uma festa requer o cumprimento de certas 
etapas em ordem definida. Os exemplos, enfim, são muitos.
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 15
1.4.1 Esquema geral de um algoritmo
Uma diferença fundamental entre os “algoritmos” que executamos em nossas ações 
corriqueiras e os algoritmos que compõem o objeto de nosso estudo é a capacidade 
do segundo de receber entradas, realizar processamento e fornecer saídas, em formato 
de expressões, números e/ou textos. Para que esta ideia comece a parecer mais 
familiar a você, observe a figura 1.
Figura 1: Esquema geral dos algoritmos.
Fonte: o autor.
Do algoritmo complexo até o mais simples, o esquema “entrada > processamento 
> saída” comporá sua estrutura, mesmo considerando as inevitáveis variações das 
quais trataremos em encontros futuros. Tomemos uma situação bem simples 
como exemplo: você deseja criar um algoritmo que some dois números e mostre o 
resultado da operação. Neste caso, os dados de entrada serão dois números quaisquer, 
representados por duas variáveis. Neste ponto cabe uma observação e uma lembrança: 
(i) o conceito de varável será introduzido adiante e, (ii) para quaisquer entradas de 
um certo conjunto de dados, o algoritmo deverá ser capaz de fornecer o resultado 
esperado, conforme tratamos na seção 1.1.
Decidimos então que a e b representarão os dois números quaisquer que serão 
processados. Como você pode imaginar, o processamento se dará pela aplicação da 
operação de soma, em a e b. Ao colocarmos a entrada, o processamento e a saída 
em uma sequência de passos, teremos:
1. obter a
2. obter b
3. somar a com b
4. exibir o resultado
Embora a menção seja quase sempre feita no singular, uma entrada pode ser 
efetivada por diversas variáveis, conforme podemos constatar nas linhas 1 e 2 do 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 16
nosso exemplo. A linha 3 corresponde ao processamento do algoritmo e, na linha 4, 
a saída está representada. Parece simples, não é mesmo? Na maioria dos casos, 
uma boa prática para se começar a criar um algoritmo é identificar a(s) entrada(s), 
o processamento e a(s) saídas. Como último ato deste primeiro encontro será 
apresentado o conceito de variáveis, seguido de exemplos e aplicações.
1.4.2 Conceito e aplicações de variáveis
A utilização de entidades literais (ou seja, representadas por letras) para simbolizar 
um valor numérico não é uma “invenção” do mundo dos algoritmos. O uso de letras que 
representam números (e compõem expressões) é prática comum na matemática, desde 
sempre. Embora a ideia que permeia a prática em ambas as áreas seja praticamente 
a mesma, será necessário fazer certas distinções, a fim de que o conceito e aplicação 
das variáveis nos algoritmos sejam livres de dúvidas. 
Em nosso contexto de estudo, as variáveis são como “pequenas caixas” situadas na 
memória, capazes de guardar um ou mais dados, a depender do tipo da variável. Esse 
dado será usado e modificado (daí a denominação de “variável”) durante a execução 
do algoritmo. Pense nas variáveis como contêineres em que será possível armazenar 
dados de diferentes tipos, incluindo número e texto, entre outros.
As variáveis são constituídas por três elementos principais:
Nome: meio pelo qual uma variável é identificada. Trata-se de uma palavra escolhida 
pelo criador do algoritmo para representar o valor armazenado. As condições para 
criação do nome serão abordadas em encontros futuros, mas é importante ressaltar, 
desde já, que o nome dado à variável em sua criação deverá ser reproduzido fielmente 
em qualquer atualização da variável feita posteriormente. 
ISTO ACONTECE NA PRÁTICA
Se você criar uma variável chamada nota1 e, ao fazer alguma atualização, 
referenciá-la como nota_1, por exemplo, seu algoritmo conterá um defeito. Embora 
os ambientes integrados de desenvolvimento que nos ajudam na criação dos 
algoritmos contenham recursos para que esses defeitos sejam rapidamente 
descobertos, esse tipo de distração já tirou o sono de muita gente, principalmente 
quando os recursos de edição de um algoritmo não eram tão sofisticados. 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 17
Tipo do dado que será armazenado: um algoritmo é capaz de armazenar e processar 
vários tipos de dados, incluindo números inteiros (ou seja, sem casas decimais), 
caracteres (dea – z, por exemplo) e textos, entre outros. Por isso, antes de estar 
apta a armazenar e processar valores, a variável deve receber o tipo de dado com 
que lidará.
Valor: por fim, este elemento é aquele que representa o valor real que a variável, 
em dado momento, possui. A utilização da expressão “em dado momento” neste 
contexto sinaliza que uma variável simples poderá conter um – e apenas um – valor 
em um certo momento. Se, durante a execução do algoritmo, uma variável recebe, 
por exemplo, o valor 5, ele substituirá o valor anteriormente guardado. Por fim, o valor 
presente na variável seguirá o critério determinado pelo seu tipo. Uma variável definida 
como inteira não poderá, por exemplo, conter o valor “casa”. A figura 2 exibe uma 
possível representação de variável.
Figura 2: Representação de uma variável.
Fonte: o autor.
Observe que a letra “a”, situada acima do quadrado, representa o nome da variável. 
O número 5, posicionado dentro do quadrado, representa o valor momentâneo da 
variável e, por fim, “inteiro” indica o tipo da variável. Esta representação serve para 
transmitir a ideia de que a função de uma variável se assemelha a de uma caixa que 
contém um nome, e é capaz de guardar um valor de determinado tipo.
Uma aplicação possível para variáveis pode ser resgatada de um contexto bastante 
familiar: o cálculo da média obtida nas provas bimestrais. Imagine que o criador do 
algoritmo tenha declarado cinco variáveis para esta demanda. A declaração é o ato 
de dar nome e tipo a uma variável. Para que coincidam com suas funções, os nomes 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 18
escolhidos para as variáveis foram nota1, nota2, nota3, nota4 e media, todos grafados 
em letras minúsculas e sem acentos. Já a definição dos tipos requer, por assim dizer, 
um certo “conhecimento de mundo” do criador do algoritmo. Em outras palavras, será 
necessário saber que uma nota é muito comumente expressa em valores com casas 
decimais, o que acontece também com a média. Por isso, neste caso, você deverá 
declarar as cinco variáveis com o tipo decimal. 
Finalizamos aqui este primeiro encontro. Procure resolver os exercícios e realizar 
suas leituras a fim de se preparar bem para o que vem por aí. Até breve!
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 19
CAPÍTULO 2
VARIÁVEIS, CONSTANTES 
E TIPOS DE DADOS
Seja bem-vinda e seja bem-vindo ao segundo encontro de Algoritmos e Lógica de 
Programação. No capítulo inicial deste material tratamos dos elementos mais básicos 
do nosso tema, incluindo conceituação, principais aplicações, breve histórico e, por 
fim, uma breve introdução a variáveis. Por causa da importância e da larga extensão 
de aplicações deste último item, retomaremos o estudo justamente por ele. Conforme 
introduzido no capítulo 1, variáveis se assemelham a caixas (ou contêineres) capazes 
de armazenar um dado, cujo valor será alterado durante a execução do algoritmo. 
Mas será que as definições sobre variáveis param por aí? Além disso, teremos a 
oportunidade de entendermos os conceitos relacionados a constantes e a tipos de 
dados, além de desenvolvermos o primeiro exemplo completo de algoritmo. Fique 
conosco!
2.1 Definições sobre variáveis e constantes nos algoritmos
Em nosso contexto, criar um algoritmo é o equivalente a criar uma sequência de 
declarações e de comandos que transformarão dados de entrada em resultados 
disponibilizados ao utilizador do algoritmo, a fim de solucionar um problema. Em 
outras palavras, dados de entrada passarão por transformações (ou processamento) 
e os dados resultantes serão entregues como saída ao usuário.
Este processo, que constitui o esquema geral dos algoritmos, pede a existência de um 
elemento que permita o armazenamento e recuperação dos dados que mencionamos, 
seja durante a entrada, durante o processamento ou durante a saída. A este elemento 
damos no nome de variável. As variáveis, portanto, são os pilares dos algoritmos e, 
sem elas, a resolução de um problema através de uma sequência de passos seria 
inviável. Iniciaremos as nossas definições sobre variáveis pelas regras de constituição 
do nome que as identificam. 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 20
2.1.1 Definição do nome de uma variável
O objetivo final da criação de um algoritmo é a transformação dele em um programa 
de computador, criado em determinada linguagem de programação, de modo que possa 
ser executado pelo computador. Embora devamos retomar este tema em encontros 
futuros, a menção a este fato já faz sentido neste item, posto que os critérios de 
criação de um nome de variável (e de demais identificadores do algoritmo) deverão 
seguir as regras da linguagem de programação adotada para a implementação do 
algoritmo. Sobre esta questão, fixe o seguinte: as regras de composição do nome de 
uma variável aqui apresentadas têm uma origem definida e estão em sintonia com 
nossos objetivos futuros.
Os nomes das nossas variáveis deverão ser iniciados com uma letra, nos intervalos de 
a – z ou de A – Z. Há ainda a possibilidade de se iniciar um nome de variável com um 
sublinhado ( _ ). Depois deste primeiro caractere, você poderá usar combinações de letras, 
números e sublinhados. Além disso, as letras maiúsculas e minúsculas são diferenciadas 
na composição do nome da variável, de modo que nota1 e Nota1 sejam consideradas 
duas variáveis distintas. Por último, o espaço não é admitido no nome da variável. Nomes 
separados por espaço são consideradas duas variáveis, e não apenas uma.
Embora estes apontamentos sejam regras das quais não podemos nos esquivar, 
adotaremos algumas convenções não obrigatórias que nos ajudarão na padronização 
dos nomes. Escreveremos os nomes todos em letras minúsculas e, no caso de haver 
uma composição de termos, eles serão separados por sublinhados. Vejamos alguns 
exemplos de nomes de variáveis, com a indicação de validade ou não.
nota_1: válido
1_nota: inválido
Nota: válido, mas fora do padrão
primeiro_nome: válido
primeiro nome: inválido
Antes de avançarmos, cabe uma última recomendação: é fundamental que você 
escolha o nome da variável de acordo com a função que ela irá exercer em seu algoritmo. 
Por óbvio que pareça, uma variável criada com o nome de “media” não deverá conter 
outro valor que não a média calculada entre números. Além disso, chamar uma variável 
de “arvore_frondosa” em uma operação aritmética, por exemplo, em nada ajudará no 
entendimento do algoritmo, embora ele possa executar exatamente o que se pretendia.
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 21
2.1.2 Definições sobre o tipo de uma variável
Tente imaginar a variedade de dados com os quais lidamos em nosso cotidiano e 
nos formatos que eles assumem: uma data de nascimento tem composição, formato 
e utilização diferentes de um nome próprio, por exemplo. Um número com o qual se 
pretende expressar elementos da física quântica tem forma e função diferentes do 
número que indica uma idade. Os exemplos podem ser variados e numerosos, mas 
um fato já parece claro: para construir um algoritmo, será necessário contar com a 
possibilidade de se criar variáveis de diferentes tipos, a fim de poder contemplar a 
miríade de problemas a serem resolvidos.
Por isso, o tipo da variável será mais um elemento a ser considerado em sua criação. 
Na sequência serão descritos alguns tipos de dados disponíveis para armazenar 
diferentes tipos de dados, a começar pelo mais comum.
1. Inteiro: este tipo de variável é usado para armazenar números inteiros, positivos 
ou negativos. Vale sempre lembrar que um número inteiro não contém a parte decimal, 
ou seja, não contém vírgula em sua composição. Grandezas como idade, quantidade 
de passos e número de repetições de um determinado evento podem ser exemplos 
que demandema criação de variáveis inteiras.
2. Ponto Flutuante: variáveis do tipo ponto flutuante são usadas para armazenar 
números com parte decimal. A altura de uma pessoa, uma nota escolar em formato 
numérico e o peso de um produto são exemplos típicos de grandezas que devem ser 
mantidas em variáveis deste tipo.
3. String: também conhecido como cadeia de caracteres, este tipo é usado para 
armazenar texto, normalmente formado por uma sequência de caracteres alfanuméricos. 
4. Booleano: também conhecido como tipo lógico, um booleano poderá conter 
apenas dois valores possíveis: verdadeiro ou falso.
ISTO ESTÁ NA REDE
A compreensão do nome “booleano” como tipo de dado passa pela descoberta da 
vida e da obra do homem que o inspirou. George Boole foi um matemático inglês, 
criador da Álgebra Booleana, que serve da lógica computacional. Para saber mais, 
consulte https://www.ebiografia.com/george_boole/. Acesso em 26 set. 23.
https://www.ebiografia.com/george_boole/
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 22
5. Lista: as variáveis do tipo “lista” são usadas para armazenar uma coleção ordenada 
de valores, que podem ser de diferentes tipos. Uma lista, portanto, é um tipo de variável 
conhecida como composta, por ser capaz de armazenar mais do que um valor em sua 
estrutura. Um bom exemplo do uso de uma lista pode se efetivar quando o criador 
do algoritmo deseja armazenar todas as idades apuradas a partir de uma amostra de 
eleitores de uma certa região. De modo geral, sempre que você precisar armazenar 
um conjunto de valores – ao invés de apenas um – a utilização de uma lista poderá 
ser uma boa ideia.
Por enquanto, esses são os tipos de variáveis mais comuns que usaremos nos 
algoritmos. A exemplo das regras para composição do nome da variável, os tipos 
aqui descritos seguem padrões provenientes de ferramentas que serão usadas por 
você num futuro próximo.
2.1.3 Definições sobre constantes
Com base no que estudamos até o momento, pudemos entender que a função 
de manter valores – sejam numéricos ou não – tornam as variáveis indispensáveis 
na criação de um algoritmo. O nome de “variável” dado a este elemento reflete seu 
caráter não permanente e justificar a necessidade de sua existência é bem simples: os 
valores por ela mantidos variam de acordo com inúmeros fatores, incluindo a entrada 
feita pelo usuário ou o tipo de transformação aplicada sobre ela. Todos esses fatos, 
contudo, se contrapõem ao nosso próximo objeto de estudo: a constante.
Constantes são elementos que não se modificam durante a execução do algoritmo. 
Embora ocorram com menos frequência na maioria dos algoritmos, uma constante 
tem sua importância resguardada por vários motivos. Imagine que seu algoritmo 
demande a utilização da constante PI em várias ocasiões. A depender da precisão 
numérica necessária, o número que o representa poderá ser extenso e reproduzi-lo 
com frequência certamente aumentará a propensão ao erro. Em casos como este, 
não hesite: declare uma constante e dê a ela o valor desejado, conforme se vê na 
sequência:
PI = 3.141592
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 23
Embora a ideia seja a de manter o valor da constante PI inalterado durante todo 
o algoritmo, seu criador poderá concluir pela necessidade de se acrescentar mais 4 
casas de precisão no número. Ao optar por usar uma constante, ele não precisará 
buscar todas as ocorrências do valor de PI para acrescentar as casas necessárias. Ao 
invés disso, bastará proceder a alteração na constante. Uma outra vantagem desta 
prática é a de aumentar a legibilidade e a clareza do seu algoritmo, já que o nome da 
constante idealmente descreve sua função.
As constantes desempenham um papel importante na clareza e na manutenção de 
um algoritmo, pois ajudam a tornar o código mais compreensível e fácil de gerenciar. 
Lembre-se, então, de usar constantes sempre que for aplicável ao escrever seu algoritmo. 
Como última recomendação, use letras maiúsculas ao declará-las.
2.2 Declaração de variável e operação de atribuição
Existem diversas formas de uma variável ser utilizada durante a execução do algoritmo 
e cada uma destas formas merecerá oportunamente nossa atenção. O que precisa ser 
pontuado desde já é a necessidade de se fazer uma espécie de anúncio da variável ao 
algoritmo que está sendo escrito. A esta operação damos o nome de declaração da 
variável. Declarar uma variável é, portanto, informar ao algoritmo nome e tipo do recurso 
que será usado logo na sequência. Declara-se a variável uma única vez e, depois, usa-se 
a variável quantas vezes forem necessárias. Vamos ao primeiro exemplo:
inteiro idade
Esta simples linha informa que o algoritmo utilizará uma variável chamada idade e que 
seu tipo é inteiro, ou seja, só aceitará números sem a parte decimal. Eventualmente você 
poderá querer declarar uma variável e, na mesma linha, indicar seu valor inicial. Vejamos:
inteiro contador = 0 
ANOTE ISSO
Linguagens de Programação modernas geralmente dispensam a prévia declaração 
de uma variável e a definição do tipo correspondente. O tipo de uma variável é 
determinado automaticamente com base no valor atribuído a ela.
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 24
Embora a atribuição de valor a uma variável possa ser feita no ato da sua declaração, 
é mais comum que ela seja efetivada durante o algoritmo. Realizar uma atribuição 
significa inserir nela um valor, que deve ser coerente com seu tipo. Para nossos 
propósitos, esta operação se faz com o sinal de igual ( = ). Observe que a atribuição 
contador = 0 diferencia-se do exemplo anterior justamente pelo momento em que 
aparece no algoritmo: no primeiro exemplo, temos uma declaração seguida de atribuição 
e, no segundo, temos uma simples atribuição, feita depois de o tipo ter sido associado 
à variável.
A operação de atribuição, no entanto, não é a única forma de se associar um valor 
a uma variável. Sigamos adiante para descobrirmos mais a esse respeito.
2.3 Introdução a comandos de entrada e saída
Como você bem se lembra, o esquema geral de um algoritmo prevê a aquisição de 
dados, o processamento destes dados e, por fim, o fornecimento do resultado obtido 
por meio do processamento. Esquematicamente, temos “entrada > processamento > 
saída” e, nesta seção, trataremos especificamente das formas de entrada e de saída 
de dados em nossos algoritmos. Antes, porém, de nos aventurarmos neste assunto, 
vale a pena tratarmos de um elemento que será praticamente onipresente em nossas 
atividades: o comando.
ANOTE ISSO
Será muito comum você se deparar com o termo “pseudocomando” quando 
estiver buscando referências a respeito de comandos em algoritmos. Os autores 
usam essa denominação para diferenciar uma instrução escrita segundo as regras 
formais de uma linguagem de programação e outra escrita numa linguagem 
meramente algorítmica e que não poderá ser executada por um computador, a não 
ser em ferramentas específicas para criação de algoritmos. Por ora, estaremos 
usando apenas pseudocomandos em nossos estudos.
Outro apontamento importante neste contexto está relacionado aos meios físicos 
de entrada e saída de dados. Conforme já mencionado, entendemos que nossos 
algoritmos poderão, em estágio mais avançado, ser convertidos em comandos de 
linguagem de programação para que possam ser executados por um computador. 
Assumimos, portanto, desde já, que o teclado será nosso meio universal de entrada 
e o monitor de vídeo (também referenciado como tela) será nosso meio de saída. 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 25
Um comando representa uma ordem – ou uma instrução - dada ao algoritmo para 
que uma ação seja tomada. Um comando, portanto, remete a uma ação e inclui uma 
entrada de dado, uma atribuição, uma operação lógica, umaoperação de repetição e 
tantas outras que teremos oportunidade de estudar. 
Entrada de dados: em nossos algoritmos, usaremos o comando leia() para 
realizar as entradas de dados e uma variável deverá ser inserida entre os parênteses do 
comando. Objetivamente, o comando leia()permite que o usuário do algoritmo insira 
um dado pelo teclado, que deve ser do mesmo tipo da variável que ocupa o espaço 
entre parênteses. Após a execução do comando, esta variável conterá o valor digitado. 
Depois de tratarmos da saída de dados, um exemplo completo será desenvolvido.
Saída de dados: usaremos o comando escreva() para indicar ao algoritmo que 
desejamos que um valor ou um conteúdo textual seja enviado a tela, como forma de 
realizar uma saída de dado. As regras para utilização deste comando incluem:
a) Para que um texto seja enviado à tela, ele deve estar entre aspas. 
Exemplo: ao se deparar com a instrução escreva (“Este comando serve 
para enviar texto à tela. “), o algoritmo enviará à tela o exatamente o 
texto situado entre aspas.
b) Para que o conteúdo de uma variável seja enviado a tela, ela deverá ser colocada 
entre os parênteses do comando.
Exemplo: o comando escreva (idade) irá enviar à tela o conteúdo da variável 
idade, que será aquele informado pelo usuário durante a entrada de dados ou será 
resultado de algum processamento previamente realizado.
c) É possível também que o resultado de uma expressão, resolvida pelo próprio 
comando de saída, seja enviada para a tela.
Exemplo: o comando escreva (principal + acrescimo) enviará a tela o 
resultado da soma entre o conteúdo da variável chamada principal e o conteúdo 
da variável chamada acrescimo.
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 26
Postos estes elementos, poderemos então desenvolver nosso primeiro exemplo 
completo de algoritmo. Para que a explicação de cada uma das linhas seja facilitada, 
elas serão numeradas.
1 algoritmo exemplo1_soma_duas_idades
2 //Este algoritmo soma duas idades e mostra o resultado em tela
3 var
4 idade1, idade2, soma_das_idades: inteiro
5 inicio
6 escreva (“Informe a sua idade: “)
7 leia (idade1)
8 escreva (“Informe a idade do seu irmão ou irmã: “)
9 leia (idade2)
10 soma_das_idades = idade1 + idade2
11 escreva (“A soma das idades é “, soma_das_idades)
12 fimAlgoritmo
Linha a linha, este algoritmo realiza o que segue:
Linha 1: aqui o algoritmo simplesmente recebe um nome. A partir desta linha, a forma 
correta de fazer referência a ele será exemplo1_soma_duas_idades. Repare que a 
composição do nome segue uma das regras de composição de nomes de variáveis: 
não pode haver espaço entre as palavras.
Linha 2: esta linha contém um texto inserido como comentário. Ao longo do seu 
algoritmo, você poderá inserir comentários em linhas inteiras (como é o caso deste 
exemplo) ou logo após a inclusão de um comando. Os comentários não compõem 
os elementos de execução de um algoritmo, mas servem para documentá-lo. Neste 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 27
nosso caso, o comentário informa a funcionalidade do algoritmo, em poucas palavras. 
Para distinguir um comentário de uma linha de comando, você deve inserir duas barras 
(//). Durante nossos encontros, trataremos de outra forma de apontar ao algoritmo 
que o texto que segue compõe um comentário.
Linha 3: aqui é indicado o início da área de declarações de variáveis.
Linha 4: nesta linha, três variáveis são declaradas. Como elas são do mesmo tipo, 
foi possível utilizar a mesma linha para declaração das três. Note que o tipo designado 
foi inteiro, pois os números que indicam idades pertencem ao domínio dos inteiros.
Linha 5: aqui é apontado o início da área em que os comandos serão escritos, ou 
seja, nesta linha é que o algoritmo efetivamente tem início. 
Linha 6: o primeiro comando do algoritmo foi colocado na linha 6. Trata-se de uma 
instrução para que o texto situado entre aspas seja colocado em tela. Tenha em mente 
que textos enviados à tela fazem parte da comunicação do algoritmo com a pessoa 
que o utilizará. Por isso, a recomendação é que você seja o mais claro e assertivo 
possível nestas ocasiões. 
Linha 7: o comando leia (idade1) provoca uma interrupção na execução do 
algoritmo, a fim de que o usuário digitar a idade dele. Uma vez digitada, a idade 
informada pelo teclado será atribuída à variável idade1. No momento, não dispomos 
de recursos técnicos para instruir o algoritmo a validar o valor informado pelo usuário. 
Se a digitação tiver sido, por exemplo, 320, o algoritmo assumirá que este é um valor 
coerente com uma idade humana, o que não é verdade. No entanto, em sendo digitado 
um número inteiro, a falta de coerência que apontamos não será impeditivo para a 
correção do algoritmo.
Linha 8: esta linha tem finalidade semelhante a apontada na linha 6, que é a de 
obter uma idade. Neste caso específico, no entanto, o usuário é orientado a informar 
a idade de outra pessoa, qual seja de um irmão ou irmã.
Linha 9: aqui valem os mesmos apontamentos feitos para a linha 7. A variável 
envolvida, no entanto, é outra. Se, por desatenção do criador do algoritmo, a variável 
idade1 for novamente usada, seu valor anteriormente lido será apagado.
Linha 10: esta linha contém uma expressão aritmética e um comando de atribuição. 
A expressão aritmética é efetivada pela operação de adição entre duas variáveis e a 
atribuição é realizada pelo sinal de igual. É necessário observar que as ações ocorrem 
da direita para esquerda: o conteúdo da variável idade1 é somado ao conteúdo da 
variável idade2 e o resultado é atribuído à variável soma_das_idades. Será comum 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 28
você se deparar com o comando de atribuição representado por uma seta orientada 
para a esquerda, justamente para reforçar a direção em que ocorrem as ações.
Linha 11: esta linha realiza a apresentação do resultado em tela, precedido por um 
texto que o apresenta. É necessário novamente pontuar a importância da clareza 
que deve caracterizar este texto, já que dele dependerá boa parte do entendimento 
do usuário sobre a saída exibida. Note que nesta linha o comando de saída contém 
elemento fixo (texto colocado entre aspas) e parte variável, representada por soma_
das_idades.
Linha 12: esta linha simplesmente indica o final do algoritmo.
Bastante informação para um primeiro algoritmo, não é mesmo? Há ainda uma última 
observação a ser feita: da linha 6 até a linha 11 o recuo do comando está diferente 
em relação às demais linhas. Isso se deve ao recurso da indentação, que consiste 
em inserir espaçamento horizontal para que as estruturas dos blocos de comandos 
fiquem aparentes. Embora essa providência não altere a execução do seu algoritmo, 
ela servirá para conferir organização e boa legibilidade ao seu código. 
Até o próximo encontro!
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 29
CAPÍTULO 3
EXPRESSÕES ARITMÉTICAS, 
LÓGICAS E RELACIONAIS
Como você teve a oportunidade de constatar em nosso encontro anterior, a criação 
de um algoritmo está vinculada, principalmente, à escrita de comandos e à realização 
de operações com variáveis. Conforme avançarmos em nossos estudos, trataremos 
de comandos que realizam ações muito além das atribuições, das leituras e das 
escritas em tela. Por ora, no entanto, teremos como objeto de estudo as operações 
com variáveis e as transformações que poderemos aplicar nessas variáveis, por meio 
da utilização de expressões aritméticas e lógicas.
3.1 Operações aritméticas
Como o próprio nome sugere, estas operações envolvem transformações aritméticas 
aplicadas a variáveis e constantes, por meio de expressões. É necessário salientar, 
desde já, que todas as expressões que abordaremos exigem que uma variável receba, 
emforma de atribuição, o valor calculado na expressão. Isso quer dizer que não é 
permitida a escrita, por exemplo, da expressão x + y, sem uma variável à qual seja 
atribuída o resultado da soma. Em outras palavras, nesta expressão faltou a variável que 
deverá receber o resultado da soma entre x e y. Na sequência você terá a oportunidade 
de constatar como essa regra funciona. 
As operações aritméticas mais comuns incluem:
3.1.1 Adição
Operação efetivada pelo sinal de adição ( + ) e apta a somar dois ou mais números, 
sejam eles representados por variáveis ou por constantes. Em nosso contexto, essa 
operação é útil para calcular totais, médias, acumular valores e realizar contagens. 
Na sequência, alguns exemplos de suas aplicações e as respectivas explicações.
a) distancia_total = distancia1 + distancia2
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 30
Supondo que todas as variáveis sejam do tipo inteiro, a expressão começa a 
ser resolvida pela soma entre distancia1 e distancia2. Na sequência, o valor 
resultante é atribuído à variável distancia_total. Caso esta última variável já 
contenha algum valor atribuído, ele será simplesmente sobreposto pelo novo valor.
b) contador = contador + 1
Esta expressão aritmética é certamente um dos componentes mais importantes dos 
algoritmos. De tão utilizada, ela recebeu um nome próprio: contador. Esta denominação 
expressa justamente função que a caracteriza. Um breve olhar sobre essa expressão 
pode levantar uma questão bastante oportuna: numa equação matemática comum 
não é possível que uma variável assuma um valor igual a ele próprio mais um. No 
entanto, a expressão que implementa um contador não é uma equação e seria errado 
tratá-la como tal.
A leitura que devemos fazer da expressão contador = contador + 1 é a 
seguinte: ao valor contido na variável contador deve ser somado 1, e o resultado 
deve ser atribuído à própria variável contador. Desta forma, a execução desta linha 
provoca o incremento da variável que ocupa o lado esquerdo da expressão. Não 
levará muito tempo até desenvolvermos um exemplo completo utilizando este recurso, 
mas é prudente pontuar que o nome da variável que usaremos em nossos futuros 
desenvolvimentos nem sempre será contador. O que caracteriza o funcionamento 
desta expressão não é o nome da variável que a compõe, mas a sua estrutura.
c) acumulador = acumulador + numero
Ainda no escopo das operações aritméticas efetivadas por meio de adição, é 
necessário que você conheça a expressão conhecida por acumulador ou somador. 
A cada execução desta linha, o valor contido na variável numero é somado ao valor já 
existente na variável acumulador, o que faz a expressão operar somas sucessivas. 
Novamente, os nomes das variáveis poderão variar entre exemplos, o que não invalida 
a funcionalidade da expressão.
3.1.2 Subtração
A subtração é usada para o algoritmo possa encontrar a diferença entre dois números 
e efetiva-se por meio da aplicação do sinal - . Ela é útil para calcular variações, saldos, 
e outras quantidades relacionadas à diferença entre valores. A expressão diferenca 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 31
= numero1 - numero2 subtrai o valor contido em numero2 do valor contido 
em numero1, e atribui a diferença à variável diferenca. Assim como as demais 
expressões, a resolução se dá no sentido da direita para a esquerda.
3.1.3 Multiplicação
Esta operação é usada para calcular o produto de dois ou mais números. Ela é essencial 
para calcular áreas, volumes, e para criar repetições controladas por multiplicação. Em 
encontros futuros trataremos de repetições de trechos de algoritmos. A expressão 
produto = numero1 * numero2 multiplica o valor de numero1 por numero2 e 
atribui o produto à variável produto. Observe que operador da multiplicação é um 
asterisco (*) e não a letra x, como na Matemática.
3.1.4 Divisão
Colocado da forma mais simples possível, a divisão é usada para dividir um número 
pelo outro, o que pode ser útil para calcular taxas, médias ponderadas e distribuir 
quantidades. Na expressão quociente = dividendo / divisor, a variável 
divisor jamais deve assumir o valor 0. Por meio da aplicação da correta validação, 
você deve assegurar-se de que este fato não acontecerá durante a execução do seu 
algoritmo. Note que o operador da divisão é a barra (/).
3.1.5 Divisão inteira
Esta operação retorna apenas a parte inteira do resultado da divisão, o que pode 
será quando você deseja calcular quantas vezes um número cabe em outro sem 
considerar os decimais. Este operador é representado pela barra dupla (//) e a expressão 
resultado_inteiro = numero1 // numero2 é um exemplo de sua utilização.
3.1.6 Módulo
O operador de módulo, representado pelo símbolo de porcentagem (%), retorna o 
resto da divisão entre dois números. Isso pode ser útil para verificar se um número 
é divisível por outro ou para determinar se o valor contido em certa variável é par 
ou não. Como exemplo, considere a expressão resto = numero1 % 2. Caso o 
valor resultante em resto seja 0, teremos que o valor contido em numero1 é par. 
Qualquer número que retorne resto 0 quando dividido por 2 é par.
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 32
3.1.7 Potenciação
A operação de potenciação, efetivada pelo operador duplo asterisco (**), eleva um 
número a uma potência específica, e pode ser usada em cálculos exponenciais próprios 
de juros compostos, por exemplo. Um exemplo de expressão para esta operação é 
resultado_potencia = numero_base ** expoente.
No decorrer de nosso estudo poderá ser introduzido um ou outro novo operador, 
conforme necessidade. É importante lembrar que, ao usar operações aritméticas em 
algoritmos, é necessário levar em consideração a precedência dos operadores, do 
mesmo jeito que fazemos na Matemática. Por exemplo, multiplicação e a divisão 
são resolvidas antes da adição e da subtração e os parênteses servem para controlar 
a ordem das operações quando necessário. Em resumo, as operações aritméticas 
serão ferramentas essenciais em nossos algoritmos e permitirão que você resolva 
uma ampla variedade de problemas matemáticos e quantitativos de forma eficaz. Elas 
desempenham um papel fundamental em muitos campos, desde cálculos financeiros 
até simulações científicas.
3.2 Operações lógicas
Assim como as transformações aritméticas, as operações lógicas desempenharão 
papel fundamental na construção dos nossos algoritmos. Em composição com variáveis, 
eles integram ferramental essencial para que comandos específicos sejam capazes 
de tomar decisões com base em certas condições. Para contemplar nossos objetivos 
imediatos, trataremos dos três operadores lógicos principais: e, ou e não. Com 
eles, você será capaz de compor expressões que basearão a lógica necessária para 
a resolução de problemas específicos.
3.2.1 Operador “e”
O operador lógico “e” é parte fundamental dos algoritmos, pois desempenha um 
papel crucial na tomada de decisões com base em múltiplas condições. Ele é usado 
para combinar duas ou mais condições e determinar se todas elas são verdadeiras. A 
utilização deste operador implica que uma expressão resultará em verdadeira somente 
se todas as condições individuais que a compõem também forem verdadeiras. A 
boa notícia em favor do entendimento destas condições (e de outras que integrarão 
outros operadores lógicos) é que as utilizamos constantemente em nosso dia a dia. 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 33
Tomemos como exemplo a seguinte situação: ao abrir o jornal, você se depara com 
uma vaga de emprego cujo preenchimento será feito por (a) pessoas regularmente 
matriculadas em curso relacionado à Tecnologia da Informação e (b) pessoas com 18 
anos ou mais. Observe que o atendimento a apenas uma das condições nãotorna 
alguém apto para a vaga. É necessário que a condição (a) e a condição (b), ambas 
sejam verdadeiras para que tenhamos um candidato apto à vaga. 
Outros exemplos serão desenvolvidos quando estudarmos os comandos condicionais, 
em encontro futuro. Por ora, devemos entender que, dadas duas condições, ambas 
devem ser satisfeitas (ou seja, devem ser verdadeiras) para que a expressão toda que 
compõe uma expressão lógica criada com o operador “e” seja verdadeira. Você terá 
a oportunidade de constatar a grande utilidade deste operador em algoritmos que 
contenham tomadas de decisões com base em múltiplas variáveis ou condições. Ele 
permite que você crie algoritmos dotados de lógica complexa para resolver problemas 
do mundo real de maneira eficaz.
3.2.2 Operador “ou”
O operador que abordaremos nesta seção é igualmente importante na construção 
de algoritmos, pois também desempenha papel fundamental na tomada de decisões 
baseadas em condições múltiplas. Nos algoritmos que construiremos, o operador 
“ou” será usado para combinar duas ou mais condições e determinar se pelo menos 
uma delas é verdadeira. Em outras palavras, a expressão resultará em verdadeira se 
pelo menos uma das condições individuais for verdadeira.
Para ilustrar este conceito, devemos resgatar o exemplo usado no operador “e”: 
imagine que a descrição da vaga, desta vez, indique que quem (a) está matriculado 
em um curso de TI OU quem (b) tem 18 anos ou mais, estará apto a concorrer. 
Observe que bastará que uma das condições seja satisfeita para que o candidato 
possa concorrer à vaga. Neste ponto valem duas observações: a primeira é que o 
operador “ou”, de fato, é menos restritivo que o operador “e”, pois toda a expressão 
será verdadeira se apenas uma condição componente o for. A segunda observação 
será colocada em forma de pergunta: e se o candidato tiver 18 anos ou mais e estiver 
cursando TI? Neste caso, a aplicação do operador “ou” também retornará verdadeiro 
para a expressão. 
Em resumo, o operador “ou” é bastante útil para criar algoritmos flexíveis que podem 
lidar com diferentes cenários. Ele é frequentemente usado em situações em que você 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 34
deseja que pelo menos uma das condições seja satisfeita para prosseguir. Antes de 
avançarmos, vale o registro de que você poderá encontrar uma variação deste operador, 
conhecido com “ou exclusivo”. Neste caso, sua aplicação retornará verdadeiro quando 
uma das condições for verdadeira, mas retornará falso se ambas forem verdadeiras.
3.2.3 Operador “não”
O operador lógico “não” serve para realizar a negação de uma condição lógica. 
Vamos explorar como esse operador funciona e sua importância nos algoritmos. Em 
outras palavras, ele é usado para inverter o valor de uma condição: se uma condição 
for verdadeira, o operador “não” a tornará falsa; se a condição for falsa, o operador 
“não” a tornará verdadeira. Este recurso será fundamental para criar parte da lógica em 
nossos algoritmos, permitindo a alteração do comportamento de variáveis e expressões 
com base em condições negativas. Ele é frequentemente usado em conjunto com os 
operadores “e” e “ou” para criar expressões lógicas mais elaboradas.
3.3 Tabela Verdade
É comum que, ao tomarmos contato com um conhecimento novo, sintamos falta 
de algum artifício ou recurso que possa resumir toda a informação que acabamos de 
receber. Por sorte, o comportamento dos operadores lógicos que abordamos até aqui 
podem ser sintetizados e analisados, em um recurso chamado tabela verdade. Ela 
exerce papel bastante importante na lógica que permeia estes operadores e certamente 
irá nos ajudar a com as condições compostas que deveremos escrever em breve. 
Em uma tabela verdade teremos listadas todas as possíveis combinações de 
condições lógicas aplicadas aos operadores lógicos que conhecemos. Além de exibir 
as mencionadas condições, a tabela verdade exibirá o resultado das combinações 
formadas por essas condições. Utilizando os operadores “e”, “ou” e “não” para condições 
“a” e “b”, a tabela verdade assim será composta conforme exibido na tabela 3.1:
a b a e b a ou b não a não b
V V V V F F
V F F V F V
F V F V V F
F F F F V V
Tabela 3.1 – Tabela Verdade
Fonte: o autor (2023).
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 35
Nesta tabela, “V” representa verdadeiro e “F” representa falso. Ela lista todas as 
combinações possíveis de valores para a e b e mostra o resultado das expressões “a 
e b”, “a ou b”, “não a” e “não b”, considerando todas as combinações possível. Observe 
que, com a utilização do operador “e”, a expressão é verdadeira apenas quando ambas 
as condições a e b são verdadeiras. No caso do operador “ou”, a expressão é verdadeira 
em todos os casos, exceto quando a e b são ambos falsos. Por fim, a aplicação do 
operador “não”, o valor lógico de a e de b são simplesmente invertidos.
Em resumo, as tabelas verdade desempenham um papel importante na análise e 
no desenvolvimento de algoritmos, ajudando a garantir que as expressões lógicas 
funcionem conforme o esperado. No entanto, não só de operações lógicas serão 
construídos nossos algoritmos. Em muitas ocasiões precisaremos comparar valores 
entre variáveis ou entre uma variável e uma constante. Para isso, utilizaremos outro 
recurso muito importante: os operadores relacionais. Sigamos adiante!
3.4 Operações relacionais
Durante a parte introdutória das operações lógicas, em seção anterior a esta, 
foi mencionado que elas compõem parte do conjunto de recursos que permitem 
tomadas de decisões durante a execução dos algoritmos. Com o estudo das operações 
relacionais introduziremos mais um recurso para tornar nossos algoritmos poderosas 
ferramentas de decisão. As operações relacionais são viabilizadas por seis operadores 
relacionais, conhecidos também como operadores de comparação. Não por acaso, 
estes recursos permitem comparar variáveis e expressões, com a obtenção de um 
resultado que varia entre verdadeiro e falso. Na sequência, estas ideias ganharão vida 
pela descrição dos operadores relacionais e pelos respectivos exemplos.
3.4.1 Operador “igual”
Este operador, representado por um duplo igual ( == ) verifica se dois valores são 
iguais e retorna “verdadeiro” se for constatada a igualdade entre eles e “falso” se os 
valores forem diferentes. Vale a menção de que o termo “valores” remete ao conteúdo 
de uma variável ou a uma constante. Faz sentido, portanto, comparar uma variável 
com outra e uma variável com uma constante. Você jamais deve comparar uma 
constante com outra, seja qual for o operador usado.
Imagine x e y como duas variáveis, cujos valores foram informados pelo usuário ou 
atribuídos por operação anterior. Em dado momento, elas contêm os valores de 4 e 5, 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 36
respectivamente. Assim, x contém o valor 4 e y contém o valor 5 e, ao aplicarmos o 
operador de igualdade, teremos que x == y retornará falso, pois os valores contidos 
nas variáveis sob comparação não são iguais.
ANOTE ISSO
No contexto dos algoritmos e da programação de computadores, o termo “retorna” 
indica a obtenção de um resultado por meio da aplicação de uma função ou de um 
operador específico. Já que consideramos a sequência “entrada > processamento 
> saída” como esquema geral dos algoritmos, podemos aproveitar essa ideia 
para representarmos também a atuação de um operador. A comparação de 
igualdade entre duas variáveis, por exemplo, toma as variáveis (entradas), realiza a 
comparação (processamento) e “retorna” verdadeiro ou falso (saída).
3.4.2 Operador “diferente”
Este operador, representado pelo símbolo ( != ) verifica se dois valores são diferentes. 
O resultado, porém, segue comportamento contrário ao operador de igualdade. Aqui, 
a operação retornará “verdadeiro” seos valores forem diferentes e retornará “falso” se 
os valores forem iguais. Ainda considerando os valores de x e y do exemplo anterior, 
teremos que a aplicação de x != y retornará verdadeiro, pois os valores contidos 
nas variáveis sob comparação não são iguais.
3.4.3 Operador “maior que”
Este operador, representado pelo sinal matemático de maior (>), retorna verdadeiro 
quando o valor da esquerda for maior que o valor da direita. Em operações que envolvam 
comparação, o valor da esquerda sempre será uma variável e o valor da direita poderá 
ser uma variável ou uma constante. Em uma situação em que o algoritmo deva apurar 
se uma idade lida é maior do que um certo valor, a expressão idade > 29 retornará 
verdadeiro se o conteúdo de idade for, de fato, maior que 29.
3.4.4 Operador “menor que”
Este operador, representado pelo sinal matemático de menor (<), retorna verdadeiro 
quando o valor da esquerda for menor que o valor da direita. Em uma situação em 
que o algoritmo deva apurar se uma distância lida (ou calculada) é menor do que um 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 37
certo valor, a expressão distancia < 100 retornará verdadeiro se o conteúdo de 
distancia for, de fato, menor que 100.
3.4.5 Operador “maior ou igual”
Este operador, representado pelo sinal de maior ou igual (>=), retorna verdadeiro 
quando o valor da esquerda for maior ou for igual ao valor da direita. É sempre necessário 
frisar que, em operações que envolvam comparação, o valor da esquerda sempre será 
uma variável e o valor da direita poderá ser uma variável ou uma constante. Em uma 
situação em que o algoritmo deva apurar se uma idade lida é maior ou igual a um 
certo valor, a expressão idade >= 29 retornará verdadeiro se o conteúdo de idade 
for maior que 29 ou for igual a 29.
3.4.6 Operador “menor ou igual”
Este operador, representado pelo sinal de menor ou igual (<=), retorna verdadeiro 
quando o valor da esquerda for menor ou for igual ao valor da direita. Em uma situação 
em que o algoritmo deva apurar se uma distância lida (ou calculada) é menor ou 
igual a um certo valor, a expressão distancia <= 100 retornará verdadeiro se o 
conteúdo de distancia for menor ou for igual a 100.
Os operadores relacionais serão amplamente utilizados em estruturas de controle 
condicionais, cujo conhecimento você logo adquirirá. Estes recursos também 
desempenharão papel importante na validação de entrada do usuário em nossos 
algoritmos. Entenda o que abordamos neste encontro como peças de um quebra-
cabeça que logo se unirão a comandos e outras expressões para tornar seus algoritmos 
interessantes e úteis. Até a próxima!
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 38
CAPÍTULO 4
INTRODUÇÃO À ALGORITMOS 
ESTRUTURADOS
Até o momento, o caminho que trilhamos nos mostrou recursos fundamentais 
relacionados aos algoritmos, o que incluiu meios de inserirmos dados para serem 
processados e operadores que serão úteis para a construção do encadeamento lógico 
que resolverá o problema proposto. É bem verdade que nosso percurso ainda está 
no início, mas os elementos que estudaremos neste encontro comporão as bases de 
todos os algoritmos que você escreverá. Um algoritmo estruturado é aquele escrito 
de maneira clara e organizada, de modo a tornar-se facilmente compreensível e cuja 
manutenção é bastante simplificada. Esta abordagem é parte fundamental da nossa 
área e desempenha papel crítico na resolução de problemas por meio da criação de 
algoritmos e posterior uso de linguagem de programação.
A clareza e organização associadas a algoritmos estruturados nascem da utilização 
apenas de estruturas sequenciais, de seleção e de repetição, justamente os temas 
que serão tratados de maneira introdutória neste nosso encontro. Esta abordagem 
é amplamente utilizada durante os passos iniciais do ensino de algoritmos, pois ela 
simplifica o rastreamento do fluxo de execução do algoritmo e a identificação de erros 
cometidos durante a escrita do código. Conforme você terá oportunidade de conferir a 
partir desta aula, os algoritmos estruturados podem ser considerados a pedra angular 
da programação de computadores através da escrita de algoritmos, pois promovem 
clareza, a eficiência e a facilidade de manutenção nos projetos de software, itens 
amplamente valorizados em ambiente acadêmico e profissional. Sigamos adiante, 
pois, com o estudo das estruturas sequenciais, de seleção e repetição.
4.1 Estruturas sequenciais
Começamos nossa abordagem dos algoritmos estruturados pela mais elementar 
das três estruturas: a sequencial. Como a própria denominação sugere, ela se baseia 
na execução linear de um bloco de comandos, uma após o outro, seguindo uma 
sequência sem interrupção. De algum modo, todos os algoritmos que você criar usarão 
ao menos uma estrutura sequencial, o que significa que cada instrução (ou comando) 
será processada após a conclusão da anterior, criando um fluxo de execução claro 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 39
e previsível. Conforme já mencionado, essa abordagem é essencial para resolver 
problemas de forma organizada e eficaz.
A estrutura sequencial é frequentemente usada para executar operações simples, 
incluindo entradas de dados feitas pelo usuário, execução de expressões aritméticas, 
processamentos triviais de dados e apresentação de resultados, nada diferente do 
que já aprendemos até o momento. Um exemplo possível para ilustrar essas ideias 
seria um algoritmo que calcula a média entre dois valores inteiros informados pelo 
usuário. Este algoritmo resolve o problema da seguinte maneira:
1. Receber o primeiro número.
2. Receber o segundo número.
3. Calcular a média entre os dois números.
4. Exibir a média.
Embora seja bem simples, este algoritmo tem ao menos duas coisas a nos dizer:
a) A forma como ele foi escrito difere ligeiramente da forma demonstrada em 
encontro anterior. Na verdade, não há uma maneira apenas de expressar nossos 
algoritmos e este será o tema central da nossa aula número 5. De qualquer 
forma, a sequência de passos, da forma como foi colocada, serve para que o 
problema do cálculo da média seja resolvido.
Uma forma mais bem elaborada e mais próxima da execução por uma linguagem 
de programação é a que segue: 
1 algoritmo calculo_de_media_aritmetica
2 //Este algoritmo recebe dois valores inteiros, calcula a média entre eles e retorna o resultado.
3 var
4 n1, n2: inteiro
5 media: flutuante
5 inicio
6 escreva (“Informe o primeiro valor: “)
7 leia (n1)
8 escreva (“Informe o segundo valor: “)
9 leia (n2)
10 media = n1 + n2
11 escreva (“A média é “, media)
12 fimAlgoritmo
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 40
Note que não há alteração na funcionalidade do algoritmo, apenas na forma de escrevê-
lo. Conforme mencionado, em nosso próximo encontro trataremos detalhadamente 
das formas de se expressar um algoritmo.
b) Este algoritmo é composto por uma única estrutura sequencial. Repare que esta 
estrutura se caracteriza por conter comandos que serão executados linearmente, 
do primeiro ao último, sem desvios condicionais ou repetições, recursos que 
serão tratados ainda nesta aula.
A estrutura sequencial é a base sobre a qual outras estruturas de controle, como 
seleção e repetição, serão construídas. Portanto, dominar essa estrutura é fundamental 
neste contexto e atingiremos ótimo nível de entendimento com o desenvolvimento 
de exemplos.
4.2 Estruturas de repetição
Uma estrutura de repetição é composta por comando (ou comandos) com capacidade 
para repetir um determinado trecho de algoritmo. Embora colocada em termos bem 
simples e objetivos, essa afirmação contém implicações importantes, que serão 
analisadas na sequência.
a) Bloco de comandos: trata-se do conjunto de comandos que serão submetidosà repetição e que estarão subordinados ao comando de repetição escolhido 
para o processamento dos dados. Quando escrevermos nossos algoritmos, 
trataremos de delimitar nossos blocos de comandos com indicações de início 
e fim, nomeadas de acordo com o seguinte padrão: 
inicioNomeDoComando
//neste espaço serão escritos os comandos a serem re-
petidos
fimNomeDoComando
Observe a inclusão de um recuo na área em que os comandos do bloco serão 
escritos. Esta prática é largamente utilizada para fins de organização do código 
e leva o nome de indentação. Por fim, um apontamento necessário: em certas 
ocasiões poderemos dispensar a inclusão da indicação de início do bloco.
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 41
b) Condição de parada: a existência de um trecho de algoritmo que contém 
repetição - da mais simples à mais complexa – implica na existência de um 
recurso algorítmico que interrompe essa repetição. A este recurso damos o 
nome de condição de parada, que geralmente é escrita como uma expressão de 
comparação colocada no comando de repetição. Caso esta expressão contenha 
um determinado defeito lógico, a repetição poderá nunca ser interrompida, fato 
que certamente causará problemas ao usuário do algoritmo. Além disso, a não 
interrupção da execução da repetição causará a negação da parte do conceito 
de algoritmos em que sua finitude é afirmada.
c) Laço de repetição: também conhecido como loop ou iteração o laço de repetição 
refere-se à execução contínua do bloco definido para ser repetido enquanto a 
condição de parada assim o permitir. Um loop, portanto, é o modo como é 
conhecida uma repetição feita no bloco subordinado ao comando de repetição.
Para que o criador do algoritmo possa escolher segundo a conveniência da ocasião, 
os comandos de repetição estão divididos em três modalidades, todas elas essenciais 
para implementação de tarefas repetitivas nos algoritmos.
4.2.1 Teste da condição de parada no início do bloco
Esta modalidade de repetição apresenta a condição de parada no início do bloco 
que será repetido, o que significa que o bloco será executado somente se a condição 
de parada não tiver sido ainda satisfeita. Em outras palavras, a condição de parada 
é verificada no início do bloco e, somente se ainda não tiver sido satisfeita, o código 
dentro do bloco de comandos será executado. Vale o registro de que, durante suas 
pesquisas, você poderá encontrar a expressão “loop pré-testado” como denominação 
alternativa para esta modalidade. 
O comando que utilizaremos nesta modalidade terá o seguinte formato geral: 
Enquanto <aqui vai a condição de parada> faça
<aqui são escritos os comandos que serão executados 
enquanto a condição de parada não for verdadeira>
fimEnquanto
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 42
Além de implementar a condição de parada antes da entrada do fluxo de execução 
no bloco de comandos, esta modalidade de comando de repetição apresenta outra 
característica interessante: normalmente o criador do algoritmo não sabe de antemão 
quantas repetições serão dadas, dada a construção da condição de parada. Para 
ilustrar esta ideia, imagine a seguinte situação: o algoritmo deve permitir a entrada 
das notas dos alunos para fins de cálculo da média, enquanto não for digitado o valor 
-1. Em notação algorítmica, temos:
leia (nota)
Enquanto nota != -1 faça
<aqui será feita a soma das notas lidas, a fim de que 
se possa calcular a média fora do loop.>
fimEnquanto
A satisfação da condição de parada está, portanto, atrelada à digitação do valor -1 
por parte do usuário, o que pode ser feito logo na primeira digitação ou em qualquer 
outra oportunidade. Neste caso específico, a utilização do comando “Enquanto... faça,” 
implica que o algoritmo verificará no início de cada iteração se a comparação nota 
!= -1 é verdadeira, ou seja, se o usuário não digitou -1. Enquanto essa condição 
estiver sendo atendida, as repetições continuarão. 
A definição correta da condição de parada é mandatória para garantir que o programa 
não entre em um loop infinito e que as ações repetidas sejam controladas. Este exemplo 
será desenvolvido por completo quando estudarmos em detalhes os comandos de 
repetição. Por ora, devemos avançar rumo à segunda modalidade de comando de 
repetição.
4.2.2 Teste da condição de parada no final do bloco
Ao contrário da modalidade anterior, a estrutura de repetição com teste no final do 
bloco obrigatoriamente executará ao menos uma vez os comandos do bloco antes de 
realizar o teste expresso na condição de parada. Isso se dá por causa da colocação 
deste teste no fechamento do bloco. Esta modalidade de estrutura de repetição 
é implementada pelo comando “faça... enquanto” que, conforme já mencionado, é 
especialmente útil quando você precisa garantir que um bloco de código seja executado 
pelo menos uma vez, independentemente da condição. Posteriormente, a condição é 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 43
verificada, e se for verdadeira, o bloco é repetido. Caso contrário, a execução continua 
após o bloco.
O comando que utilizaremos nesta modalidade terá o seguinte formato geral:
Faça
<aqui são escritos os comandos que serão executados 
enquanto a condição de parada não for satisfeita.>
Enquanto <teste que expressa a condição de parada>
Além de implementar a condição de parada após a execução no bloco de comandos, 
esta modalidade de comando de repetição é também utilizada em ocasiões em que o 
criador do algoritmo não tem como saber antecipadamente quantas repetições serão 
dadas. Recorreremos ao exemplo anterior para ilustrar esta ideia. Novamente, o 
algoritmo deve permitir a entrada das notas dos alunos para fins de cálculo da média, 
enquanto não for digitado o valor -1. Em notação algorítmica e usando o teste no 
final do bloco, temos:
Faça
leia (nota)
<aqui será feita a soma das notas lidas, a fim de que 
se possa calcular a média fora do loop.>
Enquanto nota != -1
Note que a leitura da nota no exemplo do item 4.2.1 é feita fora do bloco de repetição, 
ao passo que a leitura neste último exemplo é feita no interior do bloco. Para que a 
condição de parada no primeiro exemplo possa ser testada, um valor para a variável 
nota deveria estar carregado. Já para testes no final do bloco, a leitura pode ser feita 
no corpo de comandos que compõem o bloco de repetição. 
Embora extremamente úteis, estas duas modalidades de repetição não permitem 
que o criador do algoritmo conheça a quantidade de repetições que serão feitas, 
exceto pela implementação de uma variável de controle. Há, no entanto, uma terceira 
modalidade, cuja característica principal é a de realizar, nativamente, o controle da 
quantidade de repetições a serem feitas. Vamos conhecê-la? 
ALGORÍTIMO E LÓGICA
DE PROGRAMAÇÃO I
PROF. ROQUE MAITINO NETO
FACULDADE CATÓLICA PAULISTA | 44
4.2.3 Quantidade definida de repetições
É comum que parte do problema a ser resolvido pelo algoritmo inclua uma quantidade 
fixa de repetições de um certo trecho de código. Nestes casos, portanto, o criador 
do algoritmo saberá antecipadamente a quantidade de repetições a serem feitas. O 
cálculo da média entre 10 notas, a busca pelo maior entre 5 números e a soma de 4 
distâncias compõem algumas situações para este caso, cuja implementação se dá por 
meio da estrutura “Para...Faça”. Este comando será usado, então, para criarmos loops 
com um número fixo de iterações e, para que isto seja possível, o próprio comando 
permitirá que especifiquemos um valor inicial, a condição de parada e o valor final da 
variável de controle. 
O comando que utilizaremos nesta modalidade terá o seguinte formato geral: 
Para i de 1 até 8 faça
<aqui são escritos os comandos que serão executados 
enquanto a variável de controle i não tiver atingido 
o valor 8>
fimPara
ISTO ACONTECE NA PRÁTICA

Outros materiais

Outros materiais