Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

ACESSE AQUI ESTE 
MATERIAL DIGITAL!
RICARDO MACEDO BAUDEL
LÓGICA E 
TÉCNICAS DE 
PROGRAMAÇÃO
Bibliotecária: Leila Regina do Nascimento - CRB- 9/1722.
Ficha catalográfica elaborada de acordo com os dados fornecidos pelo(a) autor(a).
Núcleo de Educação a Distância. BAUDEL, Ricardo Macedo.
Lógica e técnicas de programação / Ricardo Macedo Baudel - 
Florianópolis, SC: Arqué, 2025.
244 p.
ISBN papel 978-65-279-1158-6
ISBN digital 978-65-279-1126-5
1. Lógica 2. Técnica 3. Programação 4. EaD. I. Título. 
CDD - 005.13 
EXPEDIENTE
Ano de impressão:
Impresso por: 
Coordenador(a) de Conteúdo 
Greisse Moser Badalotti
Projeto Gráfico e Capa
Arthur Cantareli Silva
Editoração
Camila Luiza Nardelli
Design Educacional
Hari Hauck
Revisão Textual
Janicéia Pereira da Silva
Ilustração
André Azevedo
Bruno Pardinho
Geison Odlevati Ferreira
Welington Vainer S. Oliveira
Fotos
Shutterstock e Envato
FICHA CATALOGRÁFICA
N964
03507596
https://apigame.unicesumar.edu.br/qrcode/20897
RECURSOS DE IMERSÃO
Utilizado para temas, assuntos ou con-
ceitos avançados, levando ao aprofun-
damento do que está sendo trabalhado 
naquele momento do texto. 
APROFUNDANDO
Utilizado para desmistificar pontos 
que possam gerar confusão sobre o 
tema. Após o texto trazer a explicação, 
essa interlocução pode trazer pontos 
adicionais que contribuam para que 
o estudante não fique com dúvidas 
sobre o tema. 
ZOOM NO CONHECIMENTO
Este item corresponde a uma proposta 
de reflexão que pode ser apresentada por 
meio de uma frase, um trecho breve ou 
uma pergunta. 
PENSANDO JUNTOS
Utilizado para aprofundar o 
conhecimento em conteúdos 
relevantes utilizando uma lingua-
gem audiovisual.
EM FOCO
Utilizado para agregar um con-
teúdo externo.
EU INDICO
Professores especialistas e con-
vidados, ampliando as discus-
sões sobre os temas por meio de 
fantásticos podcasts.
PLAY NO CONHECIMENTO
PRODUTOS AUDIOVISUAIS
Os elementos abaixo possuem recursos 
audiovisuais. Recursos de mídia dispo-
níveis no conteúdo digital do ambiente 
virtual de aprendizagem.
Uma dose extra de 
conhecimento é sempre 
bem-vinda. Aqui você 
terá indicações de filmes 
que se conectam com o 
tema do conteúdo.
INDICAÇÃO DE FILME
Uma dose extra de 
conhecimento é sempre 
bem-vinda. Aqui você terá 
indicações de livros que 
agregarão muito na sua 
vida profissional.
INDICAÇÃO DE LIVRO
4
169U N I D A D E 3 
COMANDOS DE CONTROLE DE FLUXO 170
LAÇOS DE REPETIÇÃO 196
CRIAÇÃO DE SUBPROGRAMAS: PROCEDIMENTOS E FUNÇÕES 222
7U N I D A D E 1 
INTRODUÇÃO E CONCEITOS DE ALGORITMOS 8
LINGUAGEM DE PROGRAMAÇÃO PYTHON 36
CONCEITOS BÁSICOS DE LÓGICA, DADOS E INSTRUÇÕES PRIMITIVAS 58
87U N I D A D E 2 
CONCEITOS E PRÁTICAS COM VARIÁVEIS, CONSTANTES 
E ESTRUTURAS DE DADOS 88
TIPOS DE VARIÁVEIS — ARRAYS E COLLECTIONS (ARRAYLIST, LIST, SET E MAP) 116
OPERADORES, EXPRESSÕES ARITMÉTICAS, RELACIONAIS E LÓGICAS 146
5
SUMÁRIO
UNIDADE 1
MINHAS METAS
INTRODUÇÃO E CONCEITOS
DE ALGORITMOS
Entender o conceito de algoritmos.
Conhecer as etapas da construção de um algoritmo.
Conhecer exemplos básicos de algoritmos.
Conhecer a estrutura e as características dos algoritmos computacionais.
Conhecer regras e formas de apresentação de algoritmos.
Identificar algumas linguagens de programação utilizadas atualmente.
Conhecer o ambiente de desenvolvimento do VisuAlg.
T E M A D E A P R E N D I Z A G E M 1
8
INICIE SUA JORNADA
Olá, estudante! Você já parou para pensar como os aplicativos que usamos diaria-
mente são desenvolvidos? Como funcionam plataformas como as das redes sociais 
e dos serviços de streaming e de transporte? Por trás de tudo isso, há uma estrutura 
lógica bem planejada: os algoritmos e as linguagens de programação.
A programação está transformando a forma como você interage com o mun-
do. Aprender a criar códigos não é apenas uma habilidade técnica, mas uma 
forma de entender e participar dessa evolução. Ao dominar a lógica dos algo-
ritmos, você terá a capacidade de construir soluções, automatizar tarefas e até 
desenvolver seus próprios aplicativos.
VOCÊ SABE RESPONDER?
Observe os aplicativos do seu dia a dia: como você acha que eles foram construídos? 
Quais problemas eles resolvem?
Essas perguntas fazem parte do pensamento computacional, elementar para 
qualquer profissional que deseja atuar na era digital. Nesse sentido, imagine que 
você trabalha para uma grande empresa de tecnologia e precisa criar um apli-
cativo. Por onde você começaria? Anote, em poucas linhas, o que você faria e, 
ao final deste tema, compare seus conhecimentos prévios com os que adquiriu 
com esta leitura.
Aprender a programar não é apenas sobre escrever códigos, mas sobre de-
senvolver um novo olhar para a tecnologia. Este tema de aprendizagem visa pro-
porcionar conhecimentos que vão além da tela do computador, abrindo possibi-
lidades para inovação e impacto real no mundo, com base na compreensão dos 
conceitos de algoritmos. 
UNIASSELVI
9
TEMA DE APRENDIZAGEM 1
DESENVOLVA SEU POTENCIAL
A transformação digital está em pleno andamento, numa evolução cada vez 
mais rápida, não é mesmo? Atualmente, o uso de aplicativos (programas) é muito 
comum nos mais diversos dispositivos — provavelmente, você utiliza aplicativos 
em notebooks, smartphones e, até mesmo, em smart TVs. O desenvolvimento 
desses programas é feito em linguagens como C, Java ou Python, que possuem fi-
nalidades diversas. Para programar nessas e em outras linguagens, existem vários 
ambientes de desenvolvimento, voltados para dispositivos móveis, computadores 
de mesa ou equipamentos digitais em geral. 
VAMOS RECORDAR?
Antes de avançar no estudo dos algoritmos e das 
linguagens de programação, é importante recordarmos 
de uma figura essencial para a história da computação: 
Ada Lovelace, que foi responsável por escrever o 
primeiro algoritmo da história, ainda no século XIX, e, por 
isso, é considerada a “mãe da programação”. Conhecer 
a contribuição de Lovelace nos ajuda a entender como 
os conceitos de lógica e estrutura computacional 
vêm sendo desenvolvidos ao longo do tempo. Vamos 
relembrar quem foi e como o trabalho dela influenciou 
tudo o que estudaremos a seguir?
Você sabia que existem várias linguagens de programação? Que 
tal conhecer algumas delas e para que tipo de sistema são mais 
utilizadas? Então, acesse o nosso podcast!
PLAY N O CONHECIMENTO
1
1
As linguagens de programação seguem princípios básicos, utilizando comandos 
de entrada e saída de dados, estruturas de repetição, estruturas de decisão, além 
de diferentes tipos e estruturas de dados. Podemos exemplificar citando softwares 
como iFood, Uber, AliExpress, Shopee e muitos outros, que são desenvolvidos a 
partir desses fundamentos. De modo geral, os programas 
de computador constituem a base de todos os softwares.
Ao longo deste tema de aprendizagem, você vai perce-
ber que programar é uma forma de traduzir, em coman-
dos de computador, passos que, mais tarde, se transforma-
rão em um software. Para que essa construção seja feita de 
maneira adequada, alguns parâmetros devem ser seguidos.
As linguagens de programação possuem características próprias, que as tor-
nam únicas. Ao longo deste tema de aprendizagem, exploraremos essas diferen-
ças e entenderemos melhor como elas funcionam. 
ALGORITMOS
Os algoritmos fazem parte do nosso cotidiano e são utilizados em diversas ativi-
dades, mesmo aquelas que não envolvem diretamente a computação. 
Castilho, Silva e Weingaertner (2020) afirmam que o algoritmo é uma sequência 
extremamente precisa de instruções, que, quando lida e executada porisso em valores lógicos (booleanos).
GABARITO
1
1
MINHAS ANOTAÇÕES
1
1
MINHAS METAS
CONCEITOS BÁSICOS DE LÓGICA, 
TABELA-VERDADE, DADOS E 
INSTRUÇÕES PRIMITIVAS
Conhecer conceitos básicos de lógica.
Conhecer os tipos de lógica.
Construir tabelas-verdade.
Reconhecer dados e instruções primitivas. 
Compreender a sintaxe básica. 
Identificar as estruturas de controle.
Entender como é estruturado o fluxo de execução.
T E M A D E A P R E N D I Z A G E M 1
1
8
INICIE SUA JORNADA
Olá, estudante! Iniciamos mais essa jornada fascinante no universo da compu-
tação, no qual algoritmos, linguagens e programas dão vida a máquinas que, de 
certa forma, “pensam”. 
VOCÊ SABE RESPONDER?
Você já se perguntou como o computador decide o que fazer? Será que ele sempre 
segue a mesma ordem ou pode mudar a sequência dos comandos? Como ele 
“entende” conceitos como “sim” e “não” ou “verdadeiro” e “falso”? E mais: será que 
ele repete tarefas ou executa cada comando apenas uma vez? 
Essas perguntas mostram que o funcionamento dos programas não é tão simples 
quanto, à primeira vista, parece. Essa lógica de programação está presente no 
seu dia a dia, mesmo que você não perceba — em aplicativos de celular, jogos, 
sistemas de segurança e até em equipamentos médicos. Entender como o com-
putador “pensa” ajuda você a se conectar com o mundo digital que transforma 
diversas profissões, inclusive a sua futura área. 
Agora, imagine que você está explorando um programa simples em Python. 
Que tal testar dois comandos diferentes? 
• Primeiro, escreva um comando para exibir uma mensagem na tela, como 
imprimir a frase: “Olá, mundo!”. 
• Depois, experimente um comando que faça uma verificação simples. Por 
exemplo, defina um número e faça uma condição para verificar se ele é 
maior que 5:
 o se for maior, o programa deverá mostrar a mensagem: “O número é 
maior que 5”; 
 o e, se for menor, exibirá: “O número não é maior que 5”. 
Ao realizar esses testes, você perceberá como o computador responde de ma-
neiras diferentes, conforme a instrução e a condição. Essa prática, mesmo que 
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 3
simples, aproxima você da experiência real da programação, pois demonstra 
como podemos controlar e orientar o comportamento das máquinas. 
A capacidade dos computadores de tomar decisões rápidas impacta profun-
damente a sociedade e a nossa atuação profissional. Entender as diferenças entre 
pensamento humano e computacional é essencial para usarmos a tecnologia 
de forma crítica. Neste tema de aprendizagem, exploraremos a lógica de pro-
gramação, o funcionamento dos computadores e o fluxo de comandos de um 
programa, percebendo como tudo isso pode ser mais simples do que parece. 
VAMOS RECORDAR?
Você já sabe que os algoritmos existiam antes mesmo do 
surgimento dos computadores e que eles servem para 
diversas finalidades, computacionais ou não. Mas, qual a 
origem dos algoritmos? Quem os criou? Para conhecer 
essas e outras curiosidades interessantes, acesse o QR code.
DESENVOLVA SEU POTENCIAL
Atualmente, nesse mundo digitalizado em que vivemos, os computadores são 
quase onipresentes. Vemos dispositivos em todo lugar, aplicativos com as mais 
diversas finalidades e todos eles se comportam de forma bastante previsível, ou 
seja, de uma forma bastante lógica. Nesse sentido, fica a pergunta: o que é lógica? 
Quais os seus conceitos básicos? É isso que veremos a seguir. 
Você sabia que as fábricas inteligentes (ou a indústria 4.0) utili-
zam equipamentos que tomam decisões sobre como deve se 
comportar a própria linha de produção? Que tal ouvir um pod-
cast sobre esse tema? Aperte o play!
PLAY N O CONHECIMENTO
1
1
CONCEITOS BÁSICOS DE LÓGICA
A lógica é a parte mais importante do pensamento, seja ele computacional ou 
não. De acordo com Forbellone e Eberspächer (2005, p. 1), “a lógica nos ensina 
a usar corretamente as leis do pensamento”; é dela que seres humanos e compu-
tadores se utilizam para realizar atividades, quer sejam simples ou complexas. 
Podemos pensar em uma situação simples do dia a dia, em que você pretende 
sair de casa para ir a uma loja no shopping center. Antes mesmo de sair, foi neces-
sário decidir sobre diversas possibilidades, como: se estiver chovendo, você deve 
levar uma sombrinha ou guarda-chuva; se não estiver de carro, você precisará 
utilizar outro meio de transporte. Para qualquer dos casos, será necessário tomar 
uma decisão — que, para cada situação, pode ser sim ou não. Se o tempo estiver 
bom, a resposta para a dúvida sobre levar um guarda-chuva provavelmente será 
“não”. Esse tipo de situação ocorre, também, nos programas de computador, ou 
seja, os programas também tomam decisões com base em condições específicas.
É fundamental, portanto, compreender essa forma de “pensar” que os com-
putadores utilizam. Para conseguir entender como o computador “pensa”, come-
çaremos conhecendo os tipos de lógica existentes. Por isso, é importante saber 
distinguir cada tipo de lógica e entender quais são aplicados na programação de 
computadores. E é isso que você irá conhecer agora.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 3
TIPOS DE LÓGICA
Você pode se perguntar: “o que é que a lógica tem a ver com a programação de 
computadores?”. A resposta é simples: tudo o que se faz em um computador 
tem relação com a lógica. Na prática, a lógica é usada, na computação, em três 
aplicações básicas: 
CRIAR CIRCUITOS LÓGICOS
Os circuitos lógicos estão presentes em vários dispositivos, controlando o seu compor-
tamento. Por exemplo: um painel de geladeira possui circuitos que permitem controlar 
o seu funcionamento.
REPRESENTAÇÃO DE CONHECIMENTO
Utilizando expressões lógicas, é possível representar o raciocínio humano em um com-
putador.
VALIDAÇÃO DE ALGORITMOS
Na programação, usamos expressões lógicas para avaliar se um programa de compu-
tador está se comportando da forma prevista pelo seu criador.
Agora que conhecemos as aplicações da lógica, estudaremos os tipos existentes.
Lógica formal e informal
É possível perceber que, no dia a dia, as pessoas conversam usando linguagem 
natural. Em uma conversa ou uma discussão sobre um determinado tema, al-
guém defende uma ideia (ou uma afirmação) que, provavelmente, será contestada 
por outra pessoa. A questão principal, nessas situações, é que as pessoas usam 
argumentos para convencer outras de que estão certas. Por não ser algo estrita-
mente definido por regras, essa lógica de pensamento é considerada informal.
No entanto, o computador não pode funcionar assim. Do mesmo jeito que, 
para programar, é necessário que a linguagem tenha regras definidas, para o 
1
1
computador, as regras lógicas também têm que ser claras e bem definidas, ou seja, 
formais. A lógica formal é baseada na estrutura dos argumentos e na validade 
dos resultados utilizando sistemas formais e simbólicos. Parece difícil? Em um 
primeiro momento, sim, mas conheceremos a lógica formal usando exemplos 
simples, que, depois, levaremos para os computadores. 
Na prática, o que acontece é o seguinte: o computador trabalha com os con-
ceitos de verdadeiro ou falso. 
Vamos a um exemplo:
Exemplo 1: a variável “X” tem o valor 10. 
• Se você perguntar ao computador: “X é maior do que zero?”, ele responderá que 
isso é verdadeiro. 
• Se você perguntar se X é maior do que 100, ele responderá que isso é falso. 
A PR OFUNDANDO
Esse exemplo é bem simples, então, vamos complicá-lo um pouquinho: suponha 
que a variável X tenha o valor 10, e a variável Y tenha o valor 20, ou seja: 
X = 10 e Y = 20
Se você perguntar ao computador: “X é maior do que Y?”, ele retornará “falso”. 
Agora, e se você perguntar: “X é menor que 20 e Y é maior que 100?” tudo ao 
mesmo tempo? 
Na prática, teríamos duas afirmações lógicas usadas em um computador, 
representadas pelas letras P e Q, que são chamadas de proposições:
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 3
P: X é menor que 20.
Q: Y é maior que 100.
A pergunta feita — “X é menor que 20 e Y émaior que 100?” — pode ser repre-
sentada da seguinte forma:
P e Q resulta em verdade? 
É verdade que P e Q (significando a pergunta “é verdade que X é menor que 20 
e Y é maior que 100)? 
Nesse tipo de situação, só existem dois possíveis resultados: verdadeiro ou falso 
No exemplo citado, o resultado é falso. E por quê? Porque a proposição P é 
verdadeira — de fato, X é menor que 20. Entretanto, a proposição Q é falsa — já que 
Y não é maior que 100.
Esse tipo de raciocínio, totalmente conectado à programação de computadores 
e também presente em muitas decisões do dia a dia, faz parte de uma área muito 
especial: a Lógica Booleana (também chamada de lógica binária).
Para construir e analisar esse tipo de situação, usamos um recurso fundamen-
tal: as tabelas-verdade. É sobre elas que falaremos a seguir.
LÓGICA BOOLEANA
A lógica Booleana, também conhecida como lógica binária, criada por George 
Boole (1854), no seu já clássico livro An Investigation of the Laws of Thought, 
traduzido como As Leis do Pensamento, é um sistema lógico baseado em apenas 
dois valores: 
• Verdadeiro (que também pode ser representado pelo número 1). 
• Falso (que também pode ser representado pelo número zero). 
Dessa forma, qualquer expressão avaliada, seja ela simples ou complexa, só tem 
duas possibilidades: verdadeiro ou falso.
1
1
Seria maravilhoso se a vida fosse tão simples a ponto de avaliarmos apenas uma 
proposição e dizermos se ela é verdadeira ou falsa, mas não é assim que ocorrem 
as situações diárias. 
Vamos ver um exemplo prático. Suponha que temos a seguinte proposição P:
P: a terra é plana
Se avaliarmos essa expressão, veremos, de forma óbvia, que ela não é verdadeira, ou 
seja, se um computador avaliasse isso, ele responderia que essa proposição é falsa.
Vejamos agora outra proposição:
Q: a terra é habitada
Avaliando essa proposição, veremos que ela resulta em verdadeiro. É, assim, que 
funciona a lógica binária.
A PR OFUNDANDO
Para pensarmos em um caso concreto, suponha a seguinte situação: você quer 
instalar um aplicativo, mas são exigidos três requisitos indispensáveis:
• O sistema operacional deve ser o Windows.
• A memória mínima deve ser 8 GB.
• A capacidade mínima do HD deve ser 240 GB.
Agora, a pergunta é: será possível instalar esse aplicativo? Para isso, precisamos 
responder a cada um desses requisitos. O primeiro passo é transformá-los em 
proposições. Nesse caso, faremos da seguinte forma:
• Proposição X: o sistema operacional é Windows.
• Proposição Y: a memória é maior ou igual a 8 GB.
• Proposição Z: o HD tem capacidade igual ou maior que 240 GB.
Dessa forma, para atender aos requisitos, o computador tem que atender a X, Y e 
Z, ou seja, tem que atender a X e, ao mesmo tempo, a Y e a Z. Na linguagem da 
lógica booleana, tem que ser: X .e. Y .e. Z. 
Logo, se o computador não usa Windows, então, X é falso. Só isso seria suficiente 
para dizer que esse computador não conseguirá instalar o aplicativo.
A PROFUNDANDO
Conforme foi possível observar no exemplo, existem situações em que precisamos 
tratar de várias condições ou requisitos. Esse tipo de situação é conhecido como 
problema com proposições compostas, ou seja, existe mais de uma proposição.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 3
No caso do exemplo apresentado, vimos que todas as condições deveriam ser 
satisfeitas. E como seria uma situação em que existe a possibilidade de atender 
apenas a alguns requisitos ou a todos eles? 
Suponha uma situação em que você vai para algum lugar. Existem três pos-
sibilidades: 
• ir de carro;
• ir a pé; e
• ir de ônibus.
Perceba que, nesse caso, é diferente: você pode ir de carro ou ir a pé ou ir de 
ônibus, ou ir um trecho a pé, outro de carro e outro de ônibus. A situação não é 
a mesma que o exemplo do aplicativo anterior. Você pode conseguir fazer o que 
quer mesmo se algumas das condições forem falsas — por exemplo, se você não 
tiver carro, então, a opção “ir de carro” resulta em falso.
Para qualquer caso, é fundamental avaliar todas essas situações, dependendo 
de como são os dados existentes. Na programação, essas operações podem ser 
analisadas usando um instrumento extremamente importante: as tabelas-ver-
dade — é delas que falaremos agora.
TABELAS-VERDADE
Tabela-verdade é uma ferramenta que contém todos os valores possíveis para 
o resultado de uma proposição composta. E o que é uma proposição composta? 
É uma expressão que tem mais de uma proposição.
1
1
Temos quatro possibilidades:
X é verdadeiro e Y é verdadeiro.
X é verdadeiro e Y é falso.
X é falso e Y é verdadeiro.
X é falso e Y é falso.
Perceba que são quatro possibilidades, e a melhor forma de representar isso não 
é por texto ou frases, mas usar a representação visual que conheceremos agora: 
a tabela-verdade.
Vejamos a representação dessas possibilidades no Quadro 1.
X Y
Verdadeiro Verdadeiro
Verdadeiro Falso
Falso Verdadeiro
Falso Falso
Quadro 1 – Tabela-verdade com duas colunas denominadas de X e Y
Fonte: o autor.
A proposição X é “José gosta de futebol”. A proposição Y é “José gosta de carros”. 
A proposição “X e Y” significa “José gosta de futebol e José gosta de carros”. A pro-
posição que junta X e Y é uma proposição composta.
Nesse caso, temos as seguintes possibilidades:
• José gosta de futebol. Então, X é verdade.
• José NÃO gosta de futebol. Então X é falso.
• José gosta de carros. Então, Y é verdade.
• José NÃO gosta de carros. Então Y é falso.
A PR OFUNDANDO
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 3
Agora, veremos uma tabela-verdade com essas possibilidades conjuntas: 
X Y X e Y
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Falso
Falso Verdadeiro Falso
Falso Falso Falso
Quadro 1 – Tabela-verdade com três colunas denominadas de X, Y e conjunção X e Y
Fonte: o autor.
Você pode se perguntar: “como é que se chega a esse resultado de X e Y? O que 
significa essa letra “e” que junta X com Y e também dá um resultado? A letra “e” 
é um conector lógico, que é o assunto que iremos tratar a seguir.
Conectores lógicos: conceito e aplicação
Conforme Araújo (2020), os conectores lógicos — também chamados de ope-
radores lógicos — são símbolos ou letras utilizados para ligar sentenças ou pro-
posições. Quando combinadas, essas proposições formam sentenças compostas, 
cujo significado resulta da relação entre as partes.
Esses conectores são fundamentais em áreas como lógica, programação e 
matemática, pois permitem expressar, de forma clara, as relações entre ideias e 
condições.
Ainda segundo Araújo (2020), os operadores — ou conectores — lógicos 
atuam sobre valores lógicos (verdadeiro ou falso) e retornam um novo valor 
lógico como resultado. A seguir, veremos quais são os principais tipos de conec-
tores lógicos.
Na programação, como aponta Araújo (2020), há basicamente três opera-
dores lógicos principais, amplamente utilizados para estruturar condições e 
tomadas de decisão nos algoritmos:
1
8
É com base nesse tipo de lógica que os computadores “pensam”. Novamente, 
daremos uma olhada na tabela-verdade que vimos anteriormente, que é do tipo 
“conjunção”, ou seja, para o resultado ser verdadeiro, as duas condições têm que 
ser verdadeiras. Observe no Quadro 3:
X Y X e Y
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Falso
Falso Verdadeiro Falso
Falso Falso Falso
Quadro 1 – Tabela-verdade com três colunas denominadas de X, Y e conjunção X e Y
Fonte: o autor.
CONJUNÇÃO (E)
Indica que duas ou mais condições precisam ser verdadeiras para a afirmação ser ver-
dadeira. Por exemplo: “José gosta de futebol e José gosta de carros”.
DISJUNÇÃO (OU)
Indica que, pelo menos, uma das condições precisa ser verdadeira para a afirmação 
ser verdadeira. Pode ser inclusiva (“ou A ou B”) ou exclusiva (“A ou B, mas não ambos”). 
Nesse caso, a disjunção inclusiva seria “José gosta de futebol ou José gosta de carros” 
(podendo ser ambos). E a disjunção exclusiva diria “ou José gosta de futebol, ou José 
gosta de carros, mas não ambos”.
NEGAÇÃO (NÃO)
Inverte o valorlógico de uma proposição. Por exemplo: “José não gosta de carros”. 
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 3
Note que estamos usando o conector “e”, que só é verdadeira se ambas as condições 
forem verdadeiras. Se qualquer uma delas for falsa, então, o resultado será falso.
Que tal vermos agora a tabela da disjunção “ou”? Conforme podemos ob-
servar, na disjunção inclusiva “ou”, pelo menos, uma das condições precisa ser 
verdadeira para a afirmação ser verdadeira:
X Y X ou Y
Verdadeiro Verdadeiro Verdadeiro
Verdadeiro Falso Verdadeiro
Falso Verdadeiro Verdadeiro
Falso Falso Falso
Quadro 1 – Tabela-verdade com três colunas denominadas X, Y e disjunção X ou Y
Fonte: o autor.
As tabelas-verdade são bastante úteis em programação e na criação de condições 
em aplicativos e sistemas computacionais, uma vez que permitem a tomada de 
decisão a partir de dados lógicos.
As linguagens de programação utilizam comandos lógicos que 
implementam, de maneira formal, as tabelas-verdade. Que tal co-
nhecermos um pouco mais sobre as origens da tabela-verdade?
E U I N DI CO
É possível perceber que utilizamos, no nosso dia a dia, diversos tipos de dados, 
além do tipo lógico que vimos agora. Que tal conhecermos outros tipos de dados 
primitivos? É disso que falaremos a seguir.
1
1
TIPOS PRIMITIVOS DE DADOS
No nosso dia a dia, trabalhamos com vários tipos de dados. Normalmente, quan-
do uma pessoa, que tem 22 anos, fala a sua idade, ela diz que tem “22 anos”, e 
não “22 anos e sete décimos”. Não é comum tratar a idade como um número 
real – normalmente, é um número inteiro. 
Por outro lado, o preço das coisas é exibido com centavos – trata-se, portanto, 
de números reais. Um exemplo típico, também, é o salário, pois, mesmo quando 
os centavos não são significativos, é comum serem citados. Esse tipo de dado é 
o real. Em linguagens de programação, eles são representados por real, double 
ou float. E os textos existem em qualquer linguagem, seja de programação ou 
não. Na maioria das linguagens, são chamados de “string”. 
A seguir, podemos ver, de forma resumida, esses tipos primitivos: 
int, inteiro ou integer: armazena valores numéricos inteiros;
real, float ou double: armazena valores numéricos com ponto flutuante;
lógico ou booleano: conforme definido na álgebra de Boole, no seu clássico livro de 
1854, o tipo lógico ou booleano armazena valores lógicos (True ou False). O valor True 
pode ser representado por 1 e o False por 0 e, por isso, alguns autores consideram 
valores do tipo bool como sendo do tipo inteiro;
caractere, texto ou string: armazena cadeias de caracteres, que podem ser textos 
ou mesmo uma mistura de textos, números e caracteres especiais.
Que tal ver um pouco mais sobre álgebra de Boole?
E U I N DI CO
Agora que você já sabe os tipos primitivos de dados ou básicos, que tal conhecer 
o que é a sintaxe básica de linguagens de programação? 
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 3
INSTRUÇÕES PRIMITIVAS DE 
LINGUAGENS DE PROGRAMAÇÃO
Todas as linguagens de programação possuem diversos comandos, chamados 
de instruções primitivas, e possuem suas regras para escrever os comandos 
utilizados. Essas regras, que dizem como os comandos são escritos, são chamadas 
de “sintaxe da linguagem”. Nessa sintaxe, são definidas as regras para a criação e 
o uso das seguintes instruções primitivas: 
• declaração de variáveis;
• comandos de entrada;
• comandos de saída;
• estruturas de seleção; e
• estruturas de repetição.
Esses são os componentes fundamentais de qualquer linguagem de programação. 
A falta de um deles inviabiliza qualquer linguagem, ou seja, todos são necessários 
e absolutamente fundamentais para que o programa permita que os dados sejam 
lidos e processados, bem como sejam exibidos os resultados apropriados. Por 
isso, conheceremos cada um deles a seguir.
1
1
Assim, cada linguagem faz de sua forma, mas todas elas fazem basicamente a 
mesma coisa quando criam uma variável: reservam um espaço na memória e 
atribuem um valor. Algumas linguagens, como Java, apenas reservam o espaço 
na memória. Portanto, tenha cuidado para não usar uma variável que não tenha 
um valor atribuído. Agora, veremos mais uma característica existente nas lin-
guagens: a entrada de dados.
Sintaxe de comandos de entrada de dados
Toda linguagem trabalha com entrada (leitura de dados pelo teclado ou outra 
fonte), processamento de dados e saída desses dados processados. Portanto, é 
natural que existam comandos para ler dados do teclado ou de outros dispositivos. 
Conforme Forbellone e Eberspächer (2005), para que um algoritmo possa 
receber um dado, ele pode usar um comando como o do Portugol, ou seja, você 
pode usar o comando “leia”. Vejamos alguns exemplos a seguir.
No VisuAlg, que usa a linguagem Portugol, poderíamos declarar uma variável Ida-
de da seguinte forma: 
Var 
 idade: inteiro
Já em Python, bastaria realizar o seguinte comando:
idade = 0
A PR OFUNDANDO
Declaração de variáveis
A declaração de variáveis está presente em todas as linguagens de programação, 
obviamente tendo formas diferentes em cada uma delas, ou seja, em sua forma 
de escrever. Algumas linguagens são bastante semelhantes, como a linguagem C, 
que surgiu antes de C++, C#, Java, PHP… Não seria diferente na declaração de 
variáveis. A seguir, podemos ver exemplos em mais de uma linguagem.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 3
Para ler a idade de um usuário, por exemplo, seria suficiente o comando:
leia(idade)
Já em Python, seria assim:
idade = int(input(‘informe a sua idade’))
No caso anterior, você notou esta diferença: enquanto o VisuAlg recebe valores 
inteiros diretamente, no Python, é necessário fazer uma conversão de string para 
inteiro e, em seguida, é feita a atribuição para a variável idade.
Você já viu como receber dados. E como seria para exibi-los? É o que veremos 
a seguir.
Sintaxe de comandos de saída de dados
Para exibir um dado no Portugol, você pode usar o comando “escreva”. Para 
exibir a idade de um usuário, por exemplo, seria suficiente o seguinte comando:
escreva(idade)
Já em Python, seria assim:
print(idade)
Você já deve ter percebido que, mesmo diferentes na escrita, os comandos, nas di-
versas linguagens, fazem a mesma coisa, ou seja, a forma de escrever os comandos 
pode ser diferente, mas a finalidade é idêntica, com os mesmos resultados finais.
1
1
Agora que entendemos como ler e exibir dados, veremos mais algumas catego-
rias de comandos com a sintaxe de cada linguagem. Dessa vez, conheceremos as 
estruturas de seleção e, em seguida, as estruturas de repetição.
Sintaxe de comandos de seleção
Uma das mais importantes características dos computadores é que eles podem 
tomar decisões, a partir de comandos escritos por programadores. Na maioria dos 
casos, é bem simples: se uma dada condição é satisfeita, então, o computador realiza 
um conjunto de comandos; se não for satisfeita, ou seja, se o teste der resultado 
falso, outro conjunto de comandos pode ser executado. Vejamos, novamente, um 
exemplo em Portugol (usando a sintaxe do VisuAlg) e outro em Python.
Suponha a seguinte situação: se uma pessoa tem 18 anos ou mais, ela é maior de 
idade; se não, é considerada menor de idade.
No Portugol do VisuAlg, ficaria assim:
Se idade := 18, então
escreval(“Você é maior de idade”)
senão
escreval(“Você é menor de idade.”)
fimse
Conforme Cruz (2015), o Python tem operações booleanas usadas com o comando 
If, conforme podemos ver a seguir, e, no Python, ficaria assim:
if idade >= 18:
 print("Você é maior de idade.")
else:
 print("Você é menor de idade.")
A PR OFUNDANDO
Interessante, não é mesmo? Duas linguagens diferentes geram o mesmo resulta-
do. A sintaxe (forma de escrever) é diferente, mas o resultado é o mesmo. Esse é 
o grande barato das linguagens de programação.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 3
Você já sabe que os computadores podem realizar repetidamente operações 
definidas pelo usuário. Essa funcionalidade é chamada de “Estrutura de repeti-
ção”,que são as instruções primitivas que veremos agora.
Sintaxe de comandos de desvio de fluxo
Ao executar um programa, o seu fluxo natural é sempre de cima para baixo. 
Contudo, existem situações nas quais o programa pode voltar para as linhas 
superiores, para executar novamente um conjunto de comandos.
Conforme Guedes (2014), as estruturas de repetição são utilizadas para 
realizar, repetidamente, uma instrução ou um bloco de instrução, enquanto de-
terminada condição estiver sendo satisfeita.
Esses comandos podem implementar uma repetição determinada ou uma 
repetição indeterminada. Na repetição determinada, é usada uma estrutura do 
tipo “PARA … Faça … FIMPARA”, que equivale ao comando For em diversas 
linguagens. Vejamos um exemplo no qual um texto “teste” é exibido três vezes, 
usando a linguagem Portugol do VisuAlg.
Var
contador: inteiro
INICIO
PARA contador de 1 ate 3 faça
escreval(“teste”)
FIMPARA
Em Python, o mesmo código ficaria assim: 
for contador in range(1, 4):
 print(“teste”)
Um detalhe importante: range(1, 4) em Python vai de 1 até 3, pois o último número 
é exclusivo.
A PR OFUN DANDO
Nesse comando, o fluxo desce e sobe três vezes, até o programa terminar. Fun-
ciona da seguinte maneira: a variável “contador” varia seu valor de 1 até 3, um de 
cada vez. Ela assume o valor 1 e executa o comando “escreval(“teste”)”. Chega até o 
1
1
comando FIMPARA e retorna no-
vamente ao início do PARA, com 
a variável contador assumindo o 
valor 2 e exibindo novamente a 
palavra “teste”. Por fim, sobe nova-
mente e executa o comando “escre-
val(“teste”)” pela terceira vez. Logo 
depois, chega ao FIMPARA e sai 
da repetição. Você encontrará os 
nomes “loop” e “laço” significando 
o mesmo que repetição.
Esse comando PARA é um co-
mando de repetição determinada, 
que desvia o fluxo para cima sem-
pre que a condição for satisfeita. 
Ele é considerado uma repetição 
determinada, porque o número é 
fixo, e, no caso do exemplo citado, 
a repetição ocorre três vezes.
É fácil perceber que nem 
sempre podemos saber anteci-
padamente quantas vezes uma 
determinada situação ocorrerá 
— chamamos isso de “repetição 
indeterminada”, cujo funciona-
mento é um pouco diferente da 
repetição determinada. Para com-
preender melhor, podemos usar 
o seguinte exemplo: um sistema 
recebe um conjunto indefinido 
de nomes, até que o usuário digite 
“fim”, momento em que a execu-
ção terminará. Vejamos, a seguir, 
como ficaria esse exemplo na lin-
guagem Portugol do VisuAlg.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 3
Var
nome: caracter
INICIO
escreval(“informe nome ou fim para encerrar”)
leia(nome)
enquanto nome “fim” faça
escreval(“informe nome ou fim para encerrar”)
leia(nome)
Fimenquanto
Para entendermos como é o funcionamento dessa sequência de comandos, pri-
meiro, é criada a variável “nome”. Depois, é exibida uma mensagem e, em seguida, 
seu conteúdo é lido do teclado. Se o usuário digitar “fim”, o programa acaba aí, 
mas, se ele colocar um nome diferente de fim (o sinal diferente, em VisuAlg, é 
representado por “”), ele exibe novamente a mensagem e recebe outro nome. 
É possível perceber que não há como saber, de imediato, se o usuário vai digitar 
um, dois ou dez nomes. Por isso, chamamos essa estrutura de “repetição indeter-
minada”.
Em Python, ficaria assim: 
nome = input(“Informe nome ou ‘fim’ para encerrar: “)
while nome.lower() != “fim”:
 nome = input(“Informe nome ou ‘fim’ para encerrar: “)
Perceba que a forma de escrever, em Python, é bem mais enxuta, ou seja, essa é 
uma linguagem bastante simples.
A PR OFUN DANDO
Esse exemplo mostra como os computadores se comportam quando é necessário 
que alguns comandos sejam repetidos, seja um número determinado ou indefini-
do de vezes. Esse tipo de comando existe em todas as linguagens de programação, 
cada uma de determinada maneira.
Quer conhecer mais exemplos do uso de estruturas de repeti-
ção no VisuAlg?
E U I N DI CO
1
8
Que tal conhecer um filme que fala sobre programação de computadores?
Você conheceu as estruturas primitivas de programação. Deixo agora uma pro-
posta de pensamento: você acha que a maioria das linguagens possui comandos 
parecidos ou muito diferentes? 
A resposta é: na sua maioria, os comandos são parecidos. Existem pequenas dife-
renças de uma para outra linguagem, mas, em geral, elas são semelhantes — até 
porque têm finalidades parecidas.
PE N SA N DO JUNTOS
2001: uma odisseia no espaço
Esse filme absolutamente maravilhoso foi o precursor de mui-
tos outros, pois já abordava questões sobre programação de 
computadores e inteligência artificial (IA). No decorrer da his-
tória, um computador chamado HAL-9000, que era inteligente, 
começa a mostrar comportamentos estranhos. Esse computa-
dor foi programado de uma forma totalmente diferente e era 
uma inovação para a época. Assista. Vale a pena!
I N DI CAÇÃO DE FILME
Python Games: introdução à programação com Python e jogos
Você gosta de jogar? Que tal conhecer um livro que ensina a 
criar games em Python? De João Rotta, esta obra possui uma 
abordagem lúdica com desenvolvimento de jogos. Possui uma 
introdução à linguagem e aborda variáveis, strings, listas, loops, 
funções, operadores e objetos e jogos diversos. Aprenda pro-
gramando e jogando!
I N DI CAÇÃO DE L IVRO
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 3
NOVOS DESAFIOS
Finalizamos este tema de aprendizagem, em que vimos conceitos básicos de ló-
gica, os tipos de lógica e as tabelas-verdade. Em seguida, vimos os dados e as 
instruções primitivas, além da sintaxe básica e as estruturas de controle, além de 
entendermos como é estruturado o fluxo de execução. Tudo isso é muito impor-
tante para quem quer se desenvolver na área de programação. 
Estudante, esses conhecimentos o capacitam a compreender, de forma bem mais 
rápida, como é a estrutura das linguagens de programação atuais e, até mesmo, as 
que surgirem no futuro. 
Comandos de entrada de dados, de saída, declaração de variáveis, estruturas 
de seleção e de repetição existem em todas as linguagens de programação e, 
por isso, é fundamental para qualquer profissional da área compreender essas 
estruturas. É com esses comandos, por exemplo, que você pode desenvolver 
programas do sistema bancário ou para indústrias — há uma vasta área de apli-
cação profissional para esse conhecimento adquirido (como desenvolvimento 
web, automação, ciência de dados etc.). Você pode usar esses conhecimentos 
como programador, analista de sistemas, administrador de banco de dados e 
várias profissões na área de informática.
Estudante, para expandir seus conhecimentos sobre o assunto 
abordado, gostaríamos de lhe indicar a aula que preparamos espe-
cialmente para você. Acreditamos que essa aula irá complementar 
e aprofundar ainda mais o seu entendimento sobre o tema.
E M FOCO
8
1
Por esse motivo, encorajo-o a seguir aprofundando seus conhecimentos, pes-
quisar novas linguagens e assistir a vídeos, seja no YouTube ou em outras fontes, 
que mostrem exemplos práticos da construção de algoritmos em mais de uma 
linguagem. Conhecer mais de uma linguagem ajuda a comparar, compreender 
e se preparar para os novos desafios de aprendizagem que sempre surgem. Es-
tamos passando por uma grande revolução digital, que demanda cada vez mais 
conhecimento técnico e prático sobre programação e as tecnologias associadas. 
Siga estudando e busque se aperfeiçoar sempre! Bons estudos e até mais!
UNIASSELVI
8
1
1. No caso do computador, as sentenças lógicas são lidas e resolvidas de acordo com os 
valores das variáveis. Se uma determinada condição é satisfeita, o sistema dá um retorno. 
Caso não seja, é dado outro tipo de retorno. Um aspecto importante é que isso vale para 
qualquer linguagem, ou seja, não importando como foi escrito, a linguagem deve imple-
mentar essa capacidade.
As aplicações de lógica são variadas e, inclusive, é muito comum que dispositivos como 
painéis de máquinas diversas, como máquinas de lavar, implementem comportamentos 
que as tornam mais eficientese responsivas. Em vez de botões simples, temos dispositivos 
que podem, ainda, ser programados. Essa aplicação se relaciona com:
a) Representação de conhecimento.
b) Validação de algoritmos.
c) Criação de circuitos lógicos.
d) Definição de sintaxes.
e) Estruturação de algoritmos.
2. Para construir um algoritmo, é necessário identificar, de forma clara, o que são as entradas, 
o processamento e as saídas. As entradas são inseridas em variáveis, que são processa-
das, e, ao final, depois de percorrer várias instruções e estruturas de decisão e cálculos, é 
exibido o resultado. 
Após a construção do programa, não é recomendável colocá-lo imediatamente em funcio-
namento real, já como um sistema definitivo. É necessário fazer testes atribuindo valores 
arbitrários aos dados, para que a entrada e o processamento resultem em uma saída espe-
rada. Essa atividade é conhecida como:
a) Representação de conhecimento.
b) Criação de circuitos lógicos.
c) Validação de algoritmos.
d) Estruturação de comandos.
e) Descrição de entradas.
AUTOATIVIDADE
8
1
3. O uso e a declaração de variáveis são feitos, de formas diferentes, nas mais diversas lin-
guagens. Declarar explicitamente uma variável dá mais trabalho, mas, também, torna a 
linguagem mais formal e previsível. Por outro lado, a possibilidade de mudar o tipo de uma 
variável ajuda na flexibilidade do programa.
Com base nas informações apresentadas, avalie as asserções, a seguir, e a relação proposta 
entre elas:
I - No Python a declaração de variáveis é simplificada, bastando atribuir um valor
PORQUE
II - A declaração formal de variáveis torna a linguagem mais lenta.
A respeito dessas asserções, assinale a alternativa correta:
a) As asserções I e II são verdadeiras, e a II é uma justificativa correta da I.
b) As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.
c) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
d) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
e) As asserções I e II são falsas.
AUTOATIVIDADE
8
1
REFERÊNCIAS
ARAÚJO, S. de. Lógica de programação e algoritmos. Curitiba: Contentus, 2020.
BOOLE, G. An investigation of the laws of thought on which are founded the mathematical 
theories of logic and probabilities. London: Walton & Maberley, 1854.
CRUZ, F. Python, escreva seus primeiros programas. São Paulo: Casa do Código, 2015.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação: a construção de algorit-
mos e estruturas de dados. 3. ed. São Paulo: Prentice Hall, 2005.
GUEDES, S. Lógica de Programação Algorítmica. São Paulo: Pearson, 2014.
8
1
1. Alternativa C. Os dispositivos eletrônicos, que usam lógica, são associados à criação de 
circuitos lógicos.
A alternativa A está errada, porque, no exemplo de máquinas, o uso de lógica se refere à 
criação de circuitos lógicos, e ela cita representação de conhecimento. 
A alternativa B está errada, porque, no exemplo de máquinas, o uso de lógica se refere à 
criação de circuitos lógicos, e ela cita validação de algoritmos.
A alternativa D está errada, porque, no exemplo de máquinas, o uso de lógica se refere à 
criação de circuitos lógicos, e ela fala em definição de sintaxes.
A alternativa E está errada, porque, no exemplo de máquinas, o uso de lógica se refere à 
criação de circuitos lógicos.
2. Alternativa C. No exemplo dos testes, o uso de lógica se refere à validação de algoritmos.
A alternativa A está errada, porque, no exemplo dos testes, o uso de lógica se refere à vali-
dação de algoritmos, e a alternativa cita a representação de conhecimento. 
A alternativa B está errada, porque, no exemplo dos testes, o uso de lógica se refere à vali-
dação de algoritmos, e a alternativa cita a criação de circuitos lógicos.
A alternativa D está errada, porque, no exemplo dos testes, o uso de lógica se refere à vali-
dação de algoritmos, e a alternativa fala em estruturação de comandos.
A alternativa E está errada, porque, no exemplo dos testes, o uso de lógica se refere à vali-
dação de algoritmos, e a alternativa cita a descrição de entradas.
3. Alternativa C.
Não é verdade que a declaração formal de variáveis torna a linguagem mais lenta; portanto, 
a proposição II é falsa. Por outro lado, no Python, a declaração de variáveis é simplificada, 
bastando atribuir um valor. Por esse motivo, a asserção I é verdadeira e a II é falsa.
GABARITO
8
1
UNIDADE 2
MINHAS METAS
CONCEITOS E PRÁTICAS COM 
VARIÁVEIS, CONSTANTES E 
ESTRUTURAS DE DADOS
Compreender os princípios fundamentais da lógica de programação.
Conhecer os conceitos de constantes e variáveis.
Realizar práticas com constantes e variáveis.
Compreender as estruturas de dados.
Utilizar estruturas de dados homogêneas. 
Utilizar estruturas de dados heterogêneas. 
Aplicar a manipulação de dados no desenvolvimento de algoritmos.
T E M A D E A P R E N D I Z A G E M 1
8
8
INICIE SUA JORNADA
Olá, estudante! Vamos percorrer uma incrível jornada na computação, esse fan-
tástico mundo de algoritmos, linguagens e programas de computador. 
Imagine a seguinte situação: você utiliza diariamente aplicativos no celular, 
acessa plataformas de vídeo, redes sociais ou até sistemas da sua instituição 
de ensino. 
VOCÊ SABE RESPONDER?
Você já parou para pensar como essas tecnologias sabem tanto sobre você? Como 
elas conseguem armazenar, processar e responder a tantas informações?
Você acessa o código de alguns programas e fica admirado em ver como os 
computadores podem “guardar dados” — não apenas no sentido estrito, 
mas, principalmente, no comportamento demonstrado no gerenciamento de 
dados, informação e conhecimento. Percebe-se que os aplicativos respondem 
aos comandos dos usuários, armazenando dados que podem ser utilizados e 
processados. Esses dados, após interpretados, se transformam em informação, 
servindo como base para decisões institucionais importantes.
A informática existe justamente com essa finalidade. Os dispositivos di-
gitais interagem conosco, recebem e processam dados e emitem resultados, 
que podem ser em texto, voz, imagem ou qualquer outro tipo de resultado. 
É possível perceber que os próprios programas de computador tomam 
decisões a partir de dados armazenados, muitas vezes, bem diferentes entre 
si. Esses dados podem aparecer de forma separada, mas, também, podem ser 
agrupados em estruturas apropriadas. Os programas fazem cálculos rápidos, 
baseados no conteúdo desses dados, e reagem de forma imediata, trazendo 
resultados a serem utilizados para a tomada de decisão. O mais importante é 
que o computador varia a decisão de acordo com os dados que são inseridos, 
armazenados e exibidos em estruturas de armazenamento, as quais podem 
ser simples ou complexas, homogêneas ou heterogêneas.
UNIASSELVI
8
9
TEMA DE APRENDIZAGEM 4
Você pode se perguntar como isso funciona na prática. Uma forma de 
entender é experimentando! Que tal criar um programa que receba a nota de 
um aluno e diga se ele está aprovado (nota maior que 7) ou se precisará fazer 
uma prova final? A partir disso, você verá como o computador recebe dados, 
analisa com base em uma regra e retorna um resultado.
Essa experiência simples mostra o básico de um programa: entrada, pro-
cessamento e saída de dados. Além disso, você começará a perceber que os 
dados podem ser variados, manipulados individualmente ou em grupos, e 
que o programa muda seu comportamento conforme esses dados. Isso é o 
que chamamos de estruturas de dados, conforme veremos mais a fundo ao 
longo deste tema de aprendizagem.
VAMOS RECORDAR?
A linguagem Python, na sua instalação padrão, usa o 
editor IDLE. Que tal relembrarmos como ele funciona e 
suas principais características? Acesse o QR Code: 
Com o surgimento da Inteligência Artificial (IA), o mundo tomou 
novos rumos. Você sabia que é possível criar aplicativos extre-
mamente complexos de IA usando o Python e outras lingua-
gens? Que tal ouvir um podcast sobre isso? Aperte o play! 
PLAY N O CONHECIMENTO9
1
DESENVOLVA SEU POTENCIAL
PRINCÍPIOS FUNDAMENTAIS DA LÓGICA DE PROGRAMAÇÃO
Todas as áreas de conhecimentos são baseadas em princípios, e isso não é 
diferente na lógica de programação. A criação de programas obedece a deter-
minadas regras, que definem como o programa deve ser criado, como é a sua 
execução, a entrada de dados, o processamento e a saída. Quando observamos 
linguagens como Portugol ou Python, é fácil perceber que um código deve 
ser organizado para ser de fácil compreensão e para que atinja os objetivos 
pretendidos. É justamente sobre isso que trataremos agora. 
De forma simplificada, podemos considerar que os princípios fundamen-
tais da lógica de programação formam a base que permite construir algorit-
mos e programas que atinjam a finalidade desejada, desde que escritos de 
forma coesa, coerente, eficiente e compreensível. 
UNIASSELVI
9
1
TEMA DE APRENDIZAGEM 4
É importante ressaltar que esses princípios se aplicam a qualquer linguagem, 
não somente a Portugol e Python. Se, no futuro, surgirem novas linguagens, 
provavelmente, elas seguirão esses princípios. 
Manzano e Oliveira (2019), do ponto de vista prático, os princípios são:
• Sequencialidade.
• Capacidade de seleção (ou decisão).
• Repetibilidade de código.
• Armazenamento de dados em variáveis ou constantes.
• Entrada de dados.
• Saída de dados.
• Modularização.
A seguir, conheceremos cada um desses princípios, apresentando exemplos em 
Portugol (que é utilizado no VisuAlg) ou Python.
Sequencialidade
No dia a dia, as pessoas realizam tarefas de forma sequencial. Um exemplo sim-
ples é: se você quer somar os dois números, tem de realizar os seguintes passos: 
• Passo 1: definir o primeiro número.
• Passo 2: definir o segundo número.
• Passo 3: executar a soma 
• Passo 4: dizer o resultado. 
Tais passos devem ser realizados um após o outro, em uma ordem sequencial. 
Essa sequencialidade também existe nos programas de computador e em qual-
quer linguagem. 
Cada linha de um programa é escrita abaixo da outra, e, ao executar o 
programa, elas são executadas uma a uma, na ordem definida. O programa é 
executado de cima para baixo, e os comandos realizam ações específicas. Isso 
facilita a compreensão, a clareza e padroniza a forma com que os comandos 
são executados — se cada linguagem fizesse de um jeito próprio, isso seria o 
caos. Conforme afirmam Castilho, Silva e Weingaertner (2020, p. 24), “Um 
algoritmo feito para um computador executar deve tornar explícitas todas 
9
1
as informações implícitas”, e isso interfere diretamente na forma com que o 
algoritmo funciona, inclusive selecionando dados. 
Veremos, a seguir, outra característica básica das linguagens de programa-
ção que permite variar o resultado dos programas, de acordo com os dados: 
a capacidade de seleção.
Capacidade de seleção
No dia a dia, as pessoas tomam decisões – no sentido de decidir qual atitude 
tomar quando existe alguma situação que demanda uma solução. Nesse caso, 
a pessoa tem que selecionar o que fazer. Segundo o dicionário, selecionar é 
“fazer a seleção de algo escolhendo dentre várias opções; escolher tendo em 
conta suas próprias preferências; escolher” (Selecionar, 2025, on-line). 
Vejamos um exemplo prático: uma pessoa está prestes a sair de casa e perce-
be que o tempo está levemente nublado. Ela tem algumas possibilidades: levar 
um guarda-chuva ou não. Ela deve escolher como resolver essa situação, pois, 
se estivesse chovendo, seria fácil escolher a opção de usar um guarda-chuva, 
mas, se não é o caso, pode não o levar. Então, é natural que também seja assim 
nas linguagens de programação — o programa deve executar um comando de 
acordo com a situação. Vamos a um novo exemplo: quando uma pessoa deve 
informar sua idade em um programa no VisuAlg, o programa pode emitir uma 
mensagem “de menor”, caso a idade dela seja menor que 18 anos, ou “de maior”, 
caso seja maior ou igual a 18 anos. O programa terá que selecionar o que fazer, 
dependendo da entrada do dado. O código (resumido) ficaria assim: 
Var
idade: inteiro
INICIO
Escreval(“informe idade”)
leia(idade)
se idade >= 18 entao
 escreval(“a pessoa é maior de idade”)
UNIASSELVI
9
1
TEMA DE APRENDIZAGEM 4
senao
 escreval(“a pessoa é menor de idade”)
fimse
Experimente inserir esse código no VisuAlg e teste-o. Você perceberá que o pro-
grama varia o comportamento de acordo com a informação inserida.
Agora vejamos o mesmo exemplo na linguagem Python: 
idade = int(input(“Informe a idade: “)) 
if idade >= 18:
 print(“A pessoa é maior de idade.”)
else:
 print(“A pessoa é menor de idade.”)
As linguagens de programação utilizam comandos como “If” 
para implementar estruturas de seleção. Que tal ver como isso é 
feito na linguagem Python? 
E U I N DI CO
Agora, conheceremos uma importante capacidade das linguagens de progra-
mação: repetir comandos e instruções de acordo com a necessidade do usuário.
Repetibilidade de código
Em muitas situações do dia a dia, precisamos fazer algumas ações de forma re-
petida. Por exemplo: contar de 1 a 10 é, na verdade, contar números dizendo um 
9
1
por vez, por dez vezes. Fazer dez voltas em torno de uma quadra é igual a fazer 
uma volta repetida por dez vezes. 
Segundo o dicionário, repetir significa “tornar a fazer ou a realizar uma 
ação; refazer” (Repetir, 2025, on-line). 
Nas linguagens de computador, acontece o mesmo: um comando pode ser 
executado repetidas vezes. As linguagens implementam essa repetibilidade 
com as chamadas “estruturas de repetição”, as quais permitem, ao computador, 
repetir vários comandos, como veremos a seguir.
Vejamos um exemplo em Portugol, em que o programa faz uma contagem 
de 1 a 10:
Algoritmo “contagem”
Var
 contador: inteiro
INICIO
 Para contador de 1 ate 10 faca
 escreval(contador)
Fimpara
Agora, temos o mesmo algoritmo escrito na linguagem Python: 
 for contador in range(1, 11):
 print(contador)
 print(contador)
É possível perceber uma diferença: enquanto o Portugol termina a repetição com 
o número 10, no Python, a função “Range” termina com 11. O motivo disso é 
que a função “range(1, 11)” gera uma sequência de números de 1 até 10, pois o 
número 11 não é incluído, uma vez que o final do range é exclusivo.
Essa estrutura é chamada de “repetição determinada”, pois a repetição 
é executada em uma quantidade previamente definida. No caso, a expressão 
UNIASSELVI
9
1
TEMA DE APRENDIZAGEM 4
escreval(contador) é repetida 10 vezes, com uma característica interessante: 
a cada vez que ela é executada, o contador muda de valor. Assim, o programa 
exibirá, verticalmente, a contagem de 1 a 10. Esse comportamento é natural 
nas linguagens de computador. No entanto, não existem somente situações 
que se repetem por um número determinado — às vezes, não sabemos quando 
uma determinada situação vai se encerrar. Há situações em que uma deter-
minada ação precisa ser repetida até que as condições sejam atendidas — nas 
linguagens de programação, chamamos isso de “estrutura de repetição”. 
Segundo Forbellone e Eberspächer (2005), uma estrutura de repetição é 
aquela de controle de fluxo, que possibilita a repetição de um mesmo trecho 
do algoritmo várias vezes. Vejamos um exemplo na prática: quando um algo-
ritmo solicita a idade de uma pessoa, sabemos que não é razoável aceitar uma 
idade menor que zero e, para evitar isso, usamos uma estrutura de repetição 
indeterminada, ou seja, um conjunto de comandos que irá se repetir até que 
uma determinada situação seja resolvida. Observe o algoritmo a seguir: 
Algoritmo “repetição indeterminada”
VAR 
 idade: inteiro
INICIO
escreval(“informe sua idade”)
leia(idade)
enquanto idadeválida. Se ele não inserir, o programa solicitará novamente e 
repetirá esse comportamento até que o usuário insira uma idade que esteja no 
intervalo desejado, ou seja, maior ou igual a zero.
9
1
Vejamos esse mesmo algoritmo escrito na linguagem Python:
idade = int(input(“Informe sua idade: ”))
 while idadeem um módulo para cancelar a matrícula de um sócio desistente.
CONSULTAR DADOS DE SÓCIO 
Consiste em um módulo que serve para exibir os dados de um sócio.
Esse exemplo mostra apenas algumas das funcionalidades que poderiam ser 
tratadas de forma modularizada. No dia a dia, existem vários outros módulos 
que poderiam ser implementados. 
Você pode se perguntar: como isso pode ser feito em programação? A 
resposta é simples: usando procedimentos e funções. 
Por exemplo, no caso citado, poderíamos ter os procedimentos “cadastrar”, 
“alterar”, “cancelar”, e assim por diante. Também poderíamos ter uma função 
que responde se o sócio está em dia com a mensalidade ou não. 
Na prática, faz-se a divisão do programa em pedaços, que chamamos de 
“módulos”, sendo que cada módulo tem sua responsabilidade. Essa é uma 
característica fundamental em várias linguagens, que faz muita diferença na 
hora de realizar a construção de sistemas, pois, nesse caso, é possível delegar 
a construção de um módulo a um programador, passar outro módulo a um 
segundo programador e, dessa forma, agilizar a construção do sistema. 
Que tal ver um pouco mais sobre modularização em Python? 
E U I N DI CO
1
1
1
Agora que já vimos conceitos muito importantes sobre as características das lin-
guagens de programação, conheceremos um conceito extremamente importante 
em programação: as estruturas de dados, que possibilitam manipular dados de 
forma eficiente e simplificada. 
ESTRUTURAS DE DADOS
É fácil perceber que os dados são a parte mais importante da programação de 
computadores. Sem dados, não há informação, e a informática computacional 
nem sequer existiria. Portanto, o seu uso é fundamental. Os dados são represen-
tados de várias formas nas linguagens de programação, embora sejam os mesmos 
– o que difere são os comandos utilizados. 
Segundo Forbellone e Eberspächer (2005), a quantidade de tipos atual-
mente disponíveis não é suficiente para representar toda e qualquer informa-
ção que surgir. Para solucionar isso, são utilizadas estruturas de dados, que, 
ainda conforme os autores, permitem organizar os itens de forma estruturada.
E qual seria o motivo principal para usarmos estruturas de dados? Existindo 
em praticamente todas as linguagens de programação, as estruturas de da-
dos servem, conforme Forbellone e Eberspächer (2005), para organizar as 
informações armazenadas na memória do computador, garantindo que elas 
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 4
possam ser utilizadas de forma segura, eficaz e eficiente. Sua finalidade é es-
truturar os dados, de modo que o acesso fique mais simples e organizado. Elas 
são usadas em diversas aplicações, seja no desenvolvimento de sistemas, nos 
bancos de dados, no armazenamento de informações para IA e aprendizagem 
de máquina, por exemplo. São dezenas de aplicações. Agora, conheceremos 
cada uma dessas estruturas, começando pelas mais simples: os vetores (tam-
bém conhecidos como arrays).
Vetores
Os vetores são caracterizados por uma estrutura que agrupa vários dados, 
que podem ser do mesmo tipo ou mesmo tipos variados. Eles também são 
conhecidos como Arrays, e tanto faz chamar por um nome ou por outro. Con-
forme Feollo (2009, p. 27, grifo nosso), “um vetor é uma estrutura de dados 
que armazena uma sequência de objetos, todos do mesmo tipo, em posições 
consecutivas da memória”. A seguir, temos um exemplo do nosso dia a dia e, 
depois, trataremos de vetores em linguagens de programação.
Se você possui cinco livros, com os seguintes títulos: Programando em Python, Co-
nhecendo o VisuAlg, Diários de Viagem, Videogames Famosos e Jogos para Video-
game. Na prática, você teria o seguinte vetor LIVROS, que poderia ser declarado 
da seguinte forma: 
LIVROS = [“Programando em Python”, “Conhecendo o VisuAlg”, “Diários de viagem”, 
“Videogames famosos” e “Jogos para videogame”].
A PROFUN DANDO
No exemplo apresentado, qual seria o resultado do seguinte comando do VisuAlg: 
escreval(LIVROS[3])
Observando o nosso vetor, seria exibido o valor “Diários de viagem”. En-
tão, quais seriam as principais características dos vetores? Vejamos a seguir:
1
1
1
GUARDAM ELEMENTOS QUE PODEM SER DO MESMO TIPO 
No caso do VisuAlg, os elementos devem ser obrigatoriamente do mesmo tipo. Já o 
Python é mais flexível. Quando um vetor tem elementos do mesmo tipo, é considerado 
homogêneo. Senão, é heterogêneo.
COSTUMAM TER TAMANHO FIXO 
Na maioria das linguagens, o tamanho é fixo, como C e Java, enquanto, no Python, o 
tamanho pode variar.
POSSUEM ACESSO RÁPIDO AOS DADOS 
Os vetores, por ficarem na memória, possuem acesso muito mais rápido que os dados 
que ficam em bancos de dados.
PODEM TER ELEMENTOS ACESSADOS DIRETAMENTE 
É possível referenciar isoladamente um ou muitos elementos de um vetor.
PODEM SER UTILIZADOS COMO MATRIZES
Se um vetor possui linhas e colunas, pode ser considerado uma matriz.
O uso de vetores é largamente difundido na programação e, por isso, eles estão 
presentes em praticamente todas as linguagens. 
A seguir, conheceremos uma importante estrutura de dados: as listas. 
Listas
Todos nós utilizamos listas no nosso dia a dia. Uma lista de compras, uma lista de 
medicamentos, uma lista de nomes — nelas, você insere vários itens correlacionados. 
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 4
Nesse contexto, é importante compreendermos o que são listas. Em pro-
gramação, uma lista é uma estrutura de dados que agrupa diversos valores 
em uma mesma variável, organizados de maneira sequencial, o que facilita o 
acesso, a modificação e o uso desses elementos no desenvolvimento de algo-
ritmos (Forbellone; Eberspächer, 2005).
É natural, portanto, que as linguagens de programação tenham desenvolvido 
formas de implementar as listas nos programas de computador. São algumas 
das características das listas em computadores:
MAIOR FLEXIBILIDADE 
Enquanto, em algumas linguagens de programação, os vetores têm tamanho fixo, a 
lista pode ter tamanho variável.
ENCADEAMENTO 
As listas podem ser encadeadas ou ligadas, sendo que o último elemento pode ser 
seguido do primeiro, em uma estrutura circular.
HETEROGENEIDADE 
As listas podem guardar dados de diferentes tipos, sendo consideradas 
heterogêneas. 
MÚLTIPLAS APLICAÇÕES 
As listas podem ser utilizadas para diversas aplicações, como índices em bancos de 
dados, matrizes esparsas e diversas outras estruturas de representação.
COMBINAÇÕES COM OUTRAS ESTRUTURAS 
É possível combinar listas com arrays, pilhas ou filas, criando uma vasta possibilidade 
de combinação de estruturas homogêneas e heterogêneas.
A fila, conforme Forbellone e Eberspächer (2005), é uma lista que tem uma ca-
racterística de acesso que a diferencia de outras: ela se comporta como uma fila 
comum, ou seja, o primeiro que chega é o primeiro a ser atendido — e quem 
chega depois segue para o fim da fila. 
Vejamos um exemplo de filas em Python:
1
1
1
Nesse exemplo, a lista tem três animais, que são a vaca, o cachorro e o gato, e a 
estrutura de repetição “For” percorre essa lista, exibindo de um em um. A grande 
vantagem de usar listas é que elas podem ter tamanho variado, e isso é um im-
portante diferencial que ajuda na flexibilidade do programa em si.
animais = [“vaca”, “cachorro”, “gato”]
for animal in animais:
 print(animal)
A PR OFUNDANDO
Como você utilizaria esses conceitos no seu dia a dia? Pense em exemplos co-
muns, que não estão ligados somente à informática. 
PE N SA N DO JUNTOS
Agora que vimos o quanto as listas podem ser aplicadas no dia a dia, precisamos 
falar de um tipo de lista que é considerado especial: a fila.
Filas
Conforme Cortés (2015), as filas são listas que possuem algumas restrições 
específicas para a execução das operações de inserção e remoção, na qual 
existem algumas características importantes.
Mesmo se você nunca programou na vida, com certeza já teve contato com 
filas no seu dia a dia - na prática, um conjunto de itens que ficam um atrás 
do outro, como nas filas de supermercado, de farmácia,de atendimento em 
consultório… quem nunca enfrentou? Com certeza todos nós já enfrentamos 
esse tipo de situação. Observe a seguir.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 4
A ORDEM DE ENTRADA IMPORTA
Em uma fila, o primeiro a entrar é o primeiro a sair. 
ENCADEAMENTO 
As filas podem ser encadeadas ou ligadas, onde o último elemento de uma fila pode 
ser seguido do primeiro de outra fila, numa estrutura contínua
HETEROGENEIDADE 
As filas podem guardar dados de tipos diferentes, sendo consideradas heterogêneas. 
MÚLTIPLAS APLICAÇÕES 
As filas podem ser utilizadas para diversas aplicações, como ordem de processamento 
de programas, ordem de atendimento de pacientes e representações de filas em 
geral
COMBINAÇÕES COM OUTRAS ESTRUTURAS 
É possível combinar filas com arrays, pilhas ou outras listas, criando uma vasta 
possibilidade de combinação de estruturas homogêneas e heterogêneas
Por fim, veremos um importante tipo de lista, que se comporta de forma oposta 
à fila: as pilhas. É o que conheceremos agora. 
Pilhas
Conforme Cortés (2015), as pilhas, também conhecidas como stacks, são 
estruturas de dados lineares, baseadas no conceito LIFO (last in, first out), 
que significa “o último a entrar é o primeiro a sair”, como em uma pilha de 
livros: o último livro a entrar é o primeiro a sair, já que ele está no topo. É 
o mesmo quando armazenamos produtos em um caminhão: o que entrou 
primeiro é distribuído no fundo e, portanto, é o último a sair; já o que entrou 
por último é o primeiro a sair. A fila, que já vimos anteriormente, segue o 
princípio FIFO (first in, first out), como uma fila de banco, ou seja, o primeiro 
que chega é o primeiro a ser atendido. Essas estruturas são muito utilizadas 
no gerenciamento de tarefas, em processamento bancário e vários outros ti-
pos, como cronometragem de corridas de automóveis. São bastante versáteis 
e muito eficientes.
1
1
8
Após vermos conceitos tão importantes, que tal conhecermos um pouco, tam-
bém, dos problemas na programação em IA? 
Quer conhecer mais exemplos do uso de estruturas de listas, 
pilhas e filas?
E U I N DI CO
2010: o ano em que faremos contato
Esse filme fantástico é a continuação de 2001: uma odisseia no 
espaço, que foi um filme precursor para muitos outros por já 
abordar questões sobre programação de computadores e IA. 
Agora, a nova história conclui, de modo magistral, o que acon-
teceu com o computador HAL 9000, que passou a se compor-
tar de forma estranha. Assista. Vale a pena!
I N DI CAÇÃO DE FILME
2001: uma odisseia no espaço 
Esse livro possui uma abordagem extremamente detalhada da 
forma com que o computador HAL 9000 foi programado, os 
seus problemas e as consequências. Já falava em IA bem antes 
de chegar ao estado de desenvolvimento da atualidade. Trata-
-se de uma obra-prima que merece a sua leitura!
I N DI CAÇÃO DE L IVRO
Até aqui, vimos vários conceitos fundamentais para o desenvolvimento de sis-
temas, as características das linguagens e, principalmente, a aplicação desses 
conceitos no dia a dia. Estudante, é importante salientarmos que esses conhe-
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 4
cimentos são o ponto de partida para sua carreira na área de tecnologia, no de-
senvolvimento de sistemas computacionais, como sistemas bancários, aplicativos 
diversos e todo tipo de programa de computador. 
Agora que você já conheceu tantos conceitos importantes, finalizamos revisando 
tudo o que aprendemos e nos preparando para novos desafios.
NOVOS DESAFIOS
Chegamos ao fim deste tema de aprendizagem. Nele, vimos os princípios fun-
damentais da lógica de programação, como a sequencialidade, a repetibilidade, 
a entrada, a saída e a manipulação de dados. Conhecemos importantes conceitos 
de constantes e variáveis, e realizamos simulações práticas com eles. Em seguida, 
aprendemos conceitos relacionados a estruturas de dados, tanto as homogêneas 
quanto as heterogêneas, e vimos como manipular dados em VisuAlg e em Python. 
A razão de termos estudado conceitos tão relevantes é que eles são utilizados no 
dia a dia das pessoas, tanto fora quanto dentro do mundo da informática. 
Portanto, conhecer esses conceitos é fundamental para você poder 
programar em qualquer linguagem de programação. Daqui a 10, 20 ou 
50 anos, esses conceitos continuarão válidos, mesmo se as linguagens 
mudarem — por exemplo, você pode utilizar esses conceitos ao atuar como 
programador, analista de sistemas ou desenvolvedor mobile, em um sistema 
de controle de agendamentos de consultas ou em um sistema de controle de 
Estudante, para expandir seus conhecimentos sobre o assunto 
abordado, gostaríamos de lhe indicar a aula que preparamos espe-
cialmente para você. Acreditamos que essa aula irá complementar 
e aprofundar ainda mais o seu entendimento sobre o tema.
E M FOCO
1
1
1
uma lanchonete. No mundo da informática, as linguagens de programação 
costumam ser duradouras — o Cobol, por exemplo, existe há mais de 60 anos, 
continua sendo usado nos dias atuais e ainda o será por várias décadas. Da 
mesma forma, Python está em franco crescimento e, também, será utilizada 
por várias décadas, nas mais diversas aplicações, tanto tradicionais quanto 
avançadas. Você, como programador em formação, com certeza, utilizará 
esses conceitos nas mais diversas aplicações que desenvolverá ao longo da 
sua trajetória profissional. 
No cenário atual, profissionais que dominam lógica e algoritmos são requi-
sitados em áreas como desenvolvimento de softwares, automação de processos, 
análise de dados e, também, em setores como saúde, comércio e educação. Ao 
compreender como manipular dados, aplicar estruturas lógicas e transformar 
problemas em soluções computacionais, você dá um passo importante rumo a 
uma das competências mais valorizadas no mundo digital: resolver problemas 
reais por meio da programação. Tudo o que foi visto até aqui — da teoria à 
prática — é voltado para o preparar para atuar com segurança na construção 
de sistemas simples e eficientes, alinhados às demandas do mercado.
Por isso, encorajo-o a seguir estudando e se aprimorando, aumentando o 
seu conhecimento na área e buscando aprender, cada vez mais, para desenvolver 
a sua carreira profissional, que, sem dúvida, será brilhante e muito promissora.
Siga em frente: estude, aprenda e se dedique! O mundo maravilhoso da 
informática espera por você! Um abraço e até a próxima!
UNIASSELVI
1
1
1
1. O uso de variáveis e constantes depende, fundamentalmente, do problema a ser resolvido. 
As constantes podem manter o mesmo valor, enquanto as variáveis podem variar de valor. 
A decisão de quem será constante ou variável depende do programador, mas, também, 
depende do dado que será representado no programa. Assim, essa escolha depende do 
cenário utilizado e dos dados que se pretende representar no programa a ser escrito.
Com base nas informações apresentadas, avalie as asserções, a seguir, e a relação proposta 
entre elas:
I - O uso de constantes é pouco comum na programação, embora exista.
PORQUE
II - Armazenar constantes diminui a performance do programa.
A respeito dessas asserções, assinale a alternativa correta:
a) As asserções I e II são verdadeiras, e a II é uma justificativa correta da I.
b) As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.
c) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
d) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
e) As asserções I e II são falsas.
2. Os programas de computador, na sua maioria, possuem alto grau de complexidade. Essa 
complexidade acaba por fazer com que haja uma necessidade de dividir os programas em 
partes, que correspondem a cada funcionalidade. Essa divisão em partes ocorre, principal-
mente, em aplicativos com um grande número de funcionalidades, que podem ser divididos 
em partes para que elas sejam construídas paralelamente, se for o caso.
A divisão de programas em partes está relacionada com a necessidade de otimizara cons-
trução e a execução de sistemas, o que faz com que o desenvolvimento seja feito de forma 
eficiente e eficaz. Assinale a alternativa que corresponde ao princípio que trata dessa divisão 
em partes:
a) Capacidade de seleção.
b) Modularização.
c) Armazenamento de dados. 
d) Sequencialidade.
e) Repetibilidade.
AUTOATIVIDADE
1
1
1
3. Os programas de computador têm, por característica, permitir variar a decisão de acordo 
com os dados de entrada. Essa característica garante uma alta flexibilidade no comporta-
mento dos programas. Tal flexibilidade é desejável, uma vez que os programas são feitos 
para diversas finalidades, com técnicas e linguagens apropriadas a cada caso em específico.
A variação comportamental dos programas é absolutamente fundamental para que eles 
reajam da forma adequada aos dados de entrada. Assinale a alternativa que corresponde a 
essa característica que está presente nos programas de computador:
a) Armazenamento de dados.
b) Sequencialidade.
c) Repetibilidade.
d) Uso de estruturas homogêneas.
e) Capacidade de seleção.
AUTOATIVIDADE
1
1
1
REFERÊNCIAS
CASTILHO, M. A.; SILVA, F.; WEINGAERTNER, D. Algoritmos e estruturas de dados 1. Curitiba: 
UFPR, 2020. Disponível em: https://www.inf.ufpr.br/marcos/livro_alg1/livro_alg1.pdf. Acesso 
em: 10 set. 2025.
CORMEN, T. H. et al. Algoritmos: teoria e prática. Rio de Janeiro: Elsevier, 2002.
CORTÉS, M. Estrutura de Dados. 3. ed. Ceará: Editora da UECE, 2015. Disponível em: https://
www.uece.br/cct/wp-content/uploads/sites/28/2021/07/Estrutura-de-Dados-2014.pdf. 
Acesso em: 10 set. 2025.
FEOLLO, P. Algoritmos. Rio de Janeiro: Elsevier, 2009.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de Programação: a construção de algorit-
mos e estruturas de dados. 2. ed. São Paulo: Prentice Hall, 2005.
MANZANO, J. A. N. G. Algoritmos: lógica para desenvolvimento de programação de computa-
dores. São Paulo: Érica, 2019.
REPETIR. In: MICHAELIS Moderno Dicionário Brasileiro da Língua Portuguesa. São Paulo: 
Melhoramentos, c2025. Disponível em: https://michaelis.uol.com.br/moderno-portugues/
busca/portugues-brasileiro/repetir/. Acesso em: 10 set. 2025.
SELECIONAR. In: DICIO, Dicionário Online de Português. Porto: 7Graus, c2025. Disponível em: 
https://www.dicio.com.br/selecionar/. Acesso em: 10 set. 2025.
1
1
1
1. Alternativa E. As asserções I e II são falsas.
A asserção I é falsa, pois, na verdade, o uso de constantes na programação é bastante comum.
A asserção II é falsa, pois o uso de constantes não interfere significativamente na performance. 
2. Alternativa B, pois trata de modularização, que é a divisão do programa em partes.
A alternativa A está errada, pois trata de capacidade de seleção, que é a capacidade de 
executar os comandos corretos, de acordo com os dados de entrada.
A alternativa C está errada, pois trata de armazenamento de dados.
A alternativa D está errada, pois trata de sequencialidade.
A alternativa E está errada, pois trata de repetibilidade, que é a repetição de comandos.
3. Alternativa E, pois se refere à capacidade de seleção, isto é, de executar os comandos cor-
retos de acordo com os dados de entrada. 
A alternativa A está errada, pois se refere ao armazenamento de dados, que é a capacidade 
de guardar dados.
A alternativa B está errada, porque trata da sequencialidade, que é exatamente a ordem em 
que os comandos são executados.
A alternativa C está incorreta, porque trata da repetibilidade, que é a capacidade de os co-
mandos serem executados repetidamente.
A alternativa D está errada, porque se refere ao armazenamento de dados, que é a capaci-
dade de guardar dados
GABARITO
1
1
1
MINHAS METAS
TIPOS DE VARIÁVEIS — ARRAYS E 
COLLECTIONS (ARRAYLIST, LIST, SET 
E MAP)
Conhecer os tipos de variáveis.
Realizar a declaração e a inicialização de variáveis.
Compreender escopo e ciclo de vida das variáveis.
Determinar arrays e matrizes.
Utilizar Collections, dicionários (mapas) e listas (ArrayList e list).
Descrever os conjuntos (set).
Diferenciar os conjuntos (set) e as listas (ArrayList e list).
T E M A D E A P R E N D I Z A G E M 1
1
1
1
INICIE SUA JORNADA
Olá, estudante! Neste tema de aprendizagem, conheceremos conceitos importantes 
de variáveis, escopo de programação, listas, dicionários, conjuntos e Collections, 
estruturas que são utilizadas em diversas linguagens de programação (às vezes, com 
nomes diferentes, mas equivalentes) e aplicadas, de forma específica, em Python.
Imagine a seguinte situação: você precisa criar um programa que implemente 
o controle de contas em um condomínio de apartamentos de um prédio com 16 
andares e 1 apartamento por andar. Nessa estrutura, deverá armazenar dados 
como o número do apartamento e o valor do condomínio.
VOCÊ SABE RESPONDER?
Você pode se perguntar: como o computador poderia guardar esses dados de 
forma simples, organizada e que permita fácil acesso? 
Uma das formas é utilizar estruturas como listas ou matrizes, em linguagens 
de programação como Java, Python e outras que implementem essas facilidades.
Esse tipo de estrutura é muito utilizado na programação de computadores, e 
a finalidade é representar as informações de forma simples e, ao mesmo tempo, 
intuitiva, para que o programa funcione de maneira eficiente e útil, com aces-
so rápido aos dados, que, normalmente, estão presentes na memória principal. 
Uma forma de conhecer esses conceitos na prática seria você criar um pequeno 
programa, em Python, que armazene essas informações em uma estrutura que 
possa representar esses dados de forma semelhante àquela que vemos no dia a 
dia. Por exemplo: “apto 101, 1500”, e assim por diante. 
Construindo esse código e testando, fica mais fácil contextualizar e ver, na prática, os 
conceitos que aprenderemos a seguir. É muito importante que você procure aplicar 
os conceitos e aprender como usar cada uma das estruturas que conheceremos aqui.
Abordaremos todos esses conceitos daqui em diante. Sigamos aprendendo novos 
conhecimentos que enriquecerão ainda mais a sua aprendizagem em programação. 
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
Inicialmente, precisamos conhecer cada um deles, de uma forma indepen-
dente da linguagem de programação, para que você aprenda a usá-los na prática, 
além de apresentar exemplos que poderão ser desenvolvidos em Python. Com 
isso, ficará mais fácil compreender em qual tipo de problema computacional 
essas estruturas poderão ser utilizadas para solucionar a situação exemplificada, 
utilizando recursos de programação de computadores. 
Será uma incrível aventura pelo conhecimento em programação que co-
meça agora!
VAMOS RECORDAR?
O Python é uma linguagem flexível, que usa 
vários editores, como o IDLE e o PyCharm. Que tal 
relembrarmos como o PyCharm funciona e as suas 
principais características?
DESENVOLVA SEU POTENCIAL
VARIÁVEIS: DECLARAÇÃO, TIPOS, ESCOPO E CICLO DE VIDA
No nosso cotidiano, lidamos com diferentes tipos de dados: nomes de pessoa, 
alturas, pesos ou mesmo o valor de uma fatura de cartão de crédito. Esses dados, 
Você sabia que é possível criar aplicativos para automação usan-
do o Python e outras linguagens? Esses aplicativos automatizam 
vários processos, que, antes, demandavam vários cliques dos 
usuários, e, quando utilizados, simplificam muito a vida de quem 
os usa. Que tal ouvir um podcast sobre isso? Aperte o play!
PLAY N O CONHECIMENTO
1
1
8
quando processados, se transformam em informações úteis para a tomada de 
decisões e a resolução de problemas do dia a dia.
Nos programas de computador, os dados podem ser armazenados em variá-
veis, responsáveis por guardar informações que se alteram ao longo do tempo, ou 
em constantes, que mantêm um valor fixo durante toda a execução do programa. 
Essas estruturas são essenciais para a organização e a automação de tarefas com-
putacionais (Paiva et al., 2020).
Por exemplo, em um sistema de compras on-line, a taxa de entrega fixa (por 
exemplo, R$ 7,00) pode ser armazenada como uma constante. Já o valoruma outra 
pessoa, produz o resultado esperado, isto é, a solução de um problema. Por outro lado, 
Forbellone e Eberspächer (2005) apontam que um algoritmo pode ser definido como 
uma sequência de passos que visam atingir um objetivo bem definido.
Os programas 
de computador 
constituem a 
base de todos 
os softwares
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
De toda forma, ambas as definições enfatizam que todo algoritmo é com-
posto por uma sequência de etapas. Para que você possa compreender melhor, 
ilustraremos esse conceito com um exemplo simples de como fazer um sanduíche 
no Quadro 1. 
EXEMPLO DE ALGORITMO: PREPARANDO UM SANDUÍCHE
ETAPA AÇÃO
1 Separar duas fatias de pão.
2 Separar uma fatia de presunto.
3 Separar uma fatia de queijo.
4 Colocar o presunto sobre uma fatia de pão.
5 Colocar o queijo sobre o presunto.
6 Cobrir com a outra fatia de pão.
7 Colocar o sanduíche em um prato.
8 Levar ao micro-ondas.
9 Ligar o micro-ondas por 1 minuto.
10 Retirar o prato com o sanduíche.
11 Colocar o prato sobre a mesa.
Quadro 1 – Exemplo de algoritmo: preparando um sanduíche
Fonte: o autor.
1
1
Após observar esse exemplo, é possível perceber algumas características im-
portantes dos algoritmos:
• O número de etapas é finito, pois o exemplo tem 11 etapas. Todo algo-
ritmo tem que ter fim.
• A linguagem utilizada é o português, que é simples e acessível a quem 
ainda não tem familiaridade com linguagens de programação — isso 
facilita a compreensão e a execução do algoritmo.
• As instruções — comandos — são formuladas de maneira clara e objetiva, 
para facilitar o entendimento e a execução dos passos.
• A alteração na sequência dos comandos pode comprometer o resultado 
final — isso ocorre em qualquer algoritmo, a ordem é muito importante.
• O nível de detalhamento deve ser suficiente para que qualquer pessoa 
compreenda, com clareza, o que deve ser executado. Os algoritmos de-
vem ser simples e fáceis de entender.
Esses princípios são aplicáveis tanto em atividades do dia a dia quanto em 
algoritmos usados em computadores.
O exemplo do Quadro 1 ilustra os passos que qualquer pessoa pode seguir 
para preparar um sanduíche, seja em casa, no trabalho ou em qualquer outro 
ambiente. Esse tipo de sequência é chamado de algoritmo não computacional, 
pois é executado por seres humanos, utiliza uma linguagem comum e permite 
certa flexibilidade na interpretação. 
Por outro lado, os algoritmos de computador precisam ser ainda mais rigo-
rosos: são instruções organizadas de maneira precisa, para que o computador 
consiga entender e executar as tarefas automaticamente, sem margem para dú-
vidas ou interpretações. Eles são escritos em linguagens específicas e exigem um 
nível de detalhamento maior, garantindo que o computador realize exatamente 
o que foi planejado.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
Da mesma forma que existem algoritmos para as mais diversas atividades, há 
aqueles que funcionam em computadores. Esses algoritmos, escritos em lingua-
gens de programação, também implementam e executam ações que possuem ca-
racterísticas como as que vimos anteriormente, ou seja, têm ordem de execução, 
são finitos, entre outras características. Mais adiante, conheceremos os primei-
ros algoritmos executados em computadores. Antes disso, precisamos entender 
como é a estrutura desses algoritmos, utilizando um ambiente de aprendizagem 
de programação, que é o VisuAlg.
Você sabia que as redes sociais usam algoritmos para selecionar 
os vídeos que você irá assistir? Assista ao vídeo para aprender 
mais.
E U I N DI CO
Algoritmos usados em computadores são realmente muito diferentes daqueles 
que seguimos no dia a dia, sem o uso de máquinas? Ou será que, apesar das dife-
renças, eles compartilham princípios semelhantes?
PE N SA N DO JUNTOS
Ao desenvolver programas, os profissionais que trabalham com algoritmos preci-
sam seguir as principais características destes: precisão, clareza e sequência ló-
gica. Programar é, antes de tudo, uma atividade que exige cuidado e formalismo, 
para garantir que tudo funcione corretamente. Por isso, é fundamental conhecer 
as características dos algoritmos e aprender como elaborá-los de forma simples, 
eficiente e adequada, para uso em computadores.
1
1
ESTRUTURA E CARACTERÍSTICAS 
DOS ALGORITMOS COMPUTACIONAIS
No algoritmo não computacional (Quadro 1), vimos o passo a passo para se 
fazer um sanduíche. Também foi possível percebermos características como or-
dem de execução e quantidade finita de passos, além de clareza e simplicidade. 
Com o intuito de conhecermos os algoritmos construídos em computadores, 
estudaremos, agora, um algoritmo que recebe e exibe o nome de uma pessoa. 
Utilizaremos uma linguagem chamada “Portugol”, também conhecida como 
pseudocódigo. Com esse e outros exemplos, será possível entendermos a estru-
tura básica e as características dos algoritmos computacionais. 
O português estruturado, ou Portugol, ou pseudocódigo, é uma forma de lingua-
gem, com significados bem definidos de termos utilizados nas instruções do al-
goritmo, que usa palavras e estruturas com significado predefinido em um padrão 
a ser seguido (Forbellone; Eberspächer, 2005). Como o próprio nome sugere, no 
Portugol, todo programa é feito em português, sendo usado, basicamente, para 
aprendizagem, e não para fins comerciais. 
A PROFUNDANDO
Vamos a um pequeno exemplo de algoritmo computacional? Leia o código a 
seguir:
Algoritmo “Exemplo1”
Var 
 nome: caracter
inicio
 escreval(“informe o seu nome”)
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
 leia(nome)
 escreval(“o nome informado foi”, nome)
fimalgoritmo.
Os algoritmos têm uma estrutura bastante clara: início, área de variáveis, área 
de comandos e finalização. Entre as principais características, estão: possuir 
passos estruturados, utilizar comandos predefinidos, não possuir ambiguidade, 
ter tamanho finito, possuir regras claras de construção e ser construídos em 
ambientes apropriados.
Agora, compreenderemos o que cada um desses comandos faz: 
• O primeiro é algoritmo “Exemplo1”, que dá nome ao algoritmo e marca 
o seu começo. Todo algoritmo tem começo e fim, e, por isso, ao final, 
temos o comando: “fimalgoritmo”.
• Em seguida, temos Var, que marca o início da área de declaração das 
variáveis usadas no programa. Essa área de declaração de variáveis 
é fundamental para dizer ao programa quais variáveis, ou áreas de 
armazenamento, ele irá usar. 
As variáveis são necessárias porque, nos programas, é preciso reservar um espaço 
para guardar valores, que, normalmente, são do tipo texto (caractere), inteiro, real 
ou lógico — mas falaremos disso mais adiante. 
A PR OFUN DANDO
• Na linha seguinte, observamos o comando inicio, que define que é ali que 
começarão as linhas do programa, sendo que cada linha tem a sua função. 
• Depois, temos escreval (“informe o seu nome”), que faz com que o 
computador exiba, na tela, a mensagem “informe o seu nome”. Trata-se de 
um comando de saída, ou seja, exibe, na tela, mensagens para o usuário 
1
1
saber o que deve fazer, ou seja, o que o algoritmo espera dele. 
• A seguir, temos leia (nome), um comando de entrada que espera que 
o usuário digite um nome e, em seguida, tecle “enter”. Com isso, o valor 
digitado no teclado será armazenado na variável nome. 
• Por fim, escreval(“o nome informado foi”, nome), um comando de 
saída que informa para o usuário que o nome informado foi aquele que 
está armazenado na variável nome. 
Analisando esse programa, podemos perceber que a programação é simples e 
composta por alguns passos importantes:
DECLARAÇÃO DAS VARIÁVEIS
É o momento em que reservamos um espaço para armazenar dados no computador, 
que podem ser de diferentes tipos, como texto, números ou valores lógicos. Por exem-
plo, no nosso programa, a variável nome é declarada para armazenar o nome do usuá-
rio. Sem declarar as variáveis, o computador não saberia onde armazenar essas infor-
mações. Vale lembrar que cada linguagem de programaçãototal 
do pedido, que varia conforme os itens selecionados, é representado por uma 
variável. Como esses valores geralmente apresentam parte fracionária, são clas-
sificados como números reais.
Em contrapartida, alguns dados são naturalmente representados por nú-
meros inteiros, pois não admitem frações. É o caso da quantidade de itens em 
estoque, da idade de uma pessoa ou do número de participantes em uma reunião 
— situações nas quais valores como “3,5 pessoas” não fazem sentido.
Além disso, em cenários cujas informações se alteram dinamicamente, as variá-
veis permitem registrar essas mudanças. Por exemplo, ao inserir sucessivamente as 
idades “12”, “17” e “25” em um sistema, o valor da variável será atualizado conforme 
os dados forem sendo informados, refletindo a variação contínua desses dados.
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 5
Da mesma forma, precisamos armazenar textos que contenham letras e/ou núme-
ros, mas esses números não podem ser usados para realizar operações matemáticas. 
Um exemplo é uma variável que guarda uma senha, que contém letras e números, 
como “Python123”. Nesse caso, não é possível somar ou realizar outra operação 
matemática com esses números, pois eles se comportam como texto. Esse tipo de 
dado é conhecido como literal ou caractere — que, nas linguagens de programa-
ção mais usadas, é definido como string — e armazena letras e números. Outro 
tipo de dado é o lógico, que representa valores verdadeiros ou falsos. 
Esses tipos de dados, considerados básicos, estão presentes na maioria das lingua-
gens de computador, e a forma adequada de manipulá-los é utilizando as variáveis. 
Variáveis são espaços na memória do computador, identificados por um nome, 
que armazenam valores que podem mudar durante a execução do programa. Esse 
conceito é parecido com o que você viu no Ensino Médio, quando se estuda que 
uma variável representa um valor que poderia variar, como x ou y em uma equação 
matemática. A diferença é que, na programação, essas variáveis estão representadas 
na memória do computador, permitindo que os programas manipulem e processem 
dados de forma dinâmica. 
Com base nos exemplos citados, os principais tipos de variáveis, segundo 
Manzano e Oliveira (2019), são:
TIPO DE VARIÁVEL DESCRIÇÃO EXEMPLO
INTEIRO
Armazena valores inteiros, sem 
casas decimais. 
10, -5, 42
REAL
Armazena números com casas 
decimais.
3,14; 0.5; -7.89
STRING, CARACTERE 
OU LITERAL
Armazena textos, que podem 
conter letras, números ou símbolos.
João123
LÓGICO
Armazena apenas os valores ver-
dadeiro ou falso.
Usuário fez login? 
Verdadeiro ou falso
Quadro 1 – Principais tipos de variáveis / Fonte: o autor.
1
1
1
Existem diversas formas de declarar variáveis em um programa. Declarar uma 
variável significa informar ao programa que ele deve reservar um espaço na me-
mória para armazenar um dado associado a um nome específico. A sintaxe para 
essa declaração varia conforme a linguagem de programação utilizada. A seguir, 
exploraremos esses diferentes formatos.
Como declarar variáveis em linguagens de programação
O uso de dados, na programação de computadores, é feito de acordo com o 
problema apresentado. Dessa forma, precisamos guardar esses dados, preferen-
cialmente em variáveis. Para que as variáveis sejam representadas no computador, 
elas precisam ser declaradas, ou seja, seu nome deve ser associado a uma área de 
memória, que possa receber um conteúdo. Existem várias formas dessas variáveis 
serem declaradas em um programa de computador. 
A forma de declarar variáveis varia de uma linguagem para outra. Em lin-
guagens como Python e JavaScript, a declaração costuma ser mais simples, sem a 
necessidade de informar o tipo da variável. Já em linguagens como Java e Delphi, 
é necessário indicar o tipo de dado a ser armazenado. A seguir, apresentaremos 
exemplos para ajudar a visualizar melhor essas diferenças. 
Vejamos alguns exemplos práticos de declaração de variáveis em linguagens 
de programação:
Uma variável chamada “idade”, do tipo inteiro, pode ser declarada em várias lin-
guagens (Manzano; Oliveira, 2019; Sebesta, 2018; Forbellone; Eberspächer, 2005; 
Paiva et al., 2020):
• Em Java: int idade = 0.
• Em PHP: $idade = 0.
• Em Delphi: idade: integer.
• Em Python: idade= 0.
• Em JavaScript: let idade = 0.
A PR OFUNDANDO
É possível perceber que as linguagens podem até declarar as variáveis de formas 
diferentes, mas, na prática, o efeito é o mesmo.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
Vejamos uma outra declaração de variáveis, agora no VisuAlg: 
Var 
 nome: caracter
Essa variável armazenará o nome de uma pessoa.
Um aspecto primordial, no uso das variáveis, é conhecer dois conceitos ex-
tremamente importantes: escopo e visibilidade, cujas características veremos 
a seguir.
Escopo de uma variável
Conforme afirma Sebesta (2018), o escopo de uma variável está relacionado aos 
pontos em que ela pode ficar acessível ou visível no programa, ou seja, se ela pode 
ser usada em todo o programa ou apenas em uma parte dele. Para implementar 
esse comportamento, existem os seguintes escopos (Manzano; Oliveira, 2019):
• Escopo global – a variável é declarada em locais que fazem com que ela pos-
sa ser acessada (ou seja, o seu valor possa ser utilizado) em qualquer ponto 
do programa.
• Escopo local – nesse tipo de situação, a variável é declarada dentro de um 
bloco, como uma função, procedimento ou método, tendo seu conteúdo 
acessível apenas dentro daquele bloco. 
Z OOM N O CONHECIMENTO
Entender o conceito de escopo (ou visibilidade de variável dentro do programa) 
é muito importante. Vejamos um exemplo na prática — a variável, a seguir, é 
global, ou seja, pode ser acessada de qualquer lugar do programa:
1
1
1
Se tentarmos acessar a variável “mensagem” fora do escopo da função, não conse-
guiremos. Ela não estará visível em escopo global, mas apenas dentro da função 
em que foi criada.
Vejamos, agora, outro conceito fundamental: o ciclo de vida de uma variável.
# Variável global
mensagem = “Olá, mundo!”
print(mensagem)
Mas, se essa mesma variável fosse criada em uma função “exibir_mensagem”, só 
seria acessível dentro dela. Para que possamos compreender melhor, faremos a 
seguinte alteração no nosso código:
# Variável global
mensagem = “Olá, mundo!”
def exibir_mensagem():
 # Variável local, só existe dentro da função
 mensagem = “Olá, função!”
 print(mensagem)
exibir_mensagem()
print(mensagem)
A PR OFUNDANDO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
Ciclo de vida de uma variável
O ciclo de vida de uma variável, segundo Sebesta (2018), está diretamente 
relacionado ao tempo em que a variável ficará armazenada na memória do dispo-
sitivo digital. Esse processo vai desde o momento em que é declarada, passando 
ser alocada em um local da memória, quando recebe dados e, por fim, quando 
é extinta, ou seja, é retirada (desalocada) da memória. 
De maneira informal, poderíamos dizer que uma variável é criada, é usada e de-
pois “morre”, ou seja, seu espaço de memória é liberado e o seu conteúdo é apagado. 
Você pode se perguntar: por que variáveis “morrem”? Por que é necessário que as 
variáveis “morram”? 
PE N SA N DO JUNTOS
Segundo Sebesta (2018), isso acontece por um motivo simples: a memória de 
um computador é finita. Se toda variável criada ficar lá para sempre, em algum 
momento, a memória ficará lotada e não permitirá o funcionamento de outros 
programas. Essa alocação e desalocação de variáveis na memória pode tanto ser 
feita de forma “manual”, pelo próprio programador, como pela própria lingua-
gem, com um mecanismo chamado “garbage collector”, ou “coletor de lixo”, em 
português. Ele libera espaços de memória não utilizados para que possam ser 
utilizados novamente. Que tal sabermos um pouco mais sobre ele? 
Algumas linguagens de programação utilizam o chamado 
garbage collector. Que tal assistir a um vídeo sobre o assunto e 
ver como isso é feito na linguagem Python? 
E U I N DI CO
1
1
1
Agora que já vimos conceitosde va-
riáveis, é fundamental conhecermos 
uma estrutura extremamente impor-
tante, usada nas linguagens de pro-
gramação: os arrays.
ARRAYS
Existe uma estrutura, vinda da ma-
temática, que foi absorvida pela pro-
gramação de computadores, sendo 
um recurso fundamental na constru-
ção de programas eficientes, rápidos 
e bem organizados: os arrays. 
Conforme explicam Paiva et al. (2020), um array é 
uma estrutura de dados que armazena uma sequência 
de elementos acessados por meio de um índice. Se você 
já conhece as listas em Python, notará que o funciona-
mento é bastante semelhante. Cada item em um array 
possui dois elementos: o conteúdo é o valor armaze-
nado e o índice, a posição em que está armazenado. 
Por meio desse índice, conseguimos acessar o valor correspondente. Por exemplo: 
em Nome[1], o número 1 indica a posição do elemento na estrutura.
Assim, os arrays funcionam como listas organizadas, que facilitam a manipu-
lação de dados por posição (Paiva et al., 2020). É hora de vermos como declarar 
um array na linguagem VisuAlg e, em seguida, o mesmo exemplo adaptado para 
Python. No VisuAlg, os arrays são chamados de vetores. Supondo que deseja-
mos armazenar nomes de pessoas em um vetor. A declaração dessa estrutura é 
simples e muito semelhante à criação de uma lista: vetor e array, nesse caso, são 
conceitos equivalentes.
Vejamos como fazer no VisuAlg:
Conteúdo 
(o valor 
armazenado) e o 
índice (a posição 
em que está 
armazenado)
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
Var
Nomes: vetor[1..5] de caracter
Já em Python, a declaração é um pouco diferente:
nome = [“joão”, “José”, “Maria”]
No caso do Python, a declaração é feita diretamente atribuindo valores. Já no 
VisuAlg, apenas é reservado espaço de memória. Um ponto importante a salien-
tar é a afirmação de que os dados são acessíveis pelo índice (Paiva et al., 2020). 
Isso significa que podemos referenciar diretamente uma dada posição de forma 
simples. 
No caso desse exemplo, se quisermos exibir o elemento da posição 1 no vetor 
“nome”, bastaria usar o seguinte comando Python:
Print(nome[0])
Quer conhecer mais exemplos do uso de arrays e vetores em 
Python?
E U I N DI CO
É importante salientar que o índice no Python começa com 0 (zero), não com 
1. No dia a dia da programação, é bastante comum ser necessário percorrer um 
vetor inteiro. E para percorrer um vetor? Como poderíamos fazer? É o que ve-
remos a seguir.
Percorrendo vetores (arrays) com o comando “For”
Por serem estruturas com vários elementos, uma vez que guardam diversos ele-
mentos acessíveis pelo índice, os vetores (arrays) podem ter seus itens lidos um 
1
1
1
a um. Chamamos essa leitura, informalmente, de “percorrer o vetor”. A seguir, 
veremos como fazer isso no vetor do exemplo anterior.
for nome in nomes:
 print(nome)
A saída ficará assim:
João
José
Maria
A PR OFUNDANDO
Outra forma é utilizar o tamanho do vetor como uma informação. Para saber o 
tamanho de um vetor (que no nosso exemplo é 3), usamos a função “len”. Esse nome 
é uma abreviatura de length, que significa “tamanho”. Vejamos agora como fazer:
for i in range(len(nomes)):
 print(f”Índice {i}: {nomes[i]}”)
A saída ficará assim:
Índice 0: João
Índice 1: José
Índice 2: Maria
A PR OFUNDANDO
Vimos, portanto, que os arrays são estruturas fundamentais para organizar 
dados de forma eficiente. A seguir, conheceremos uma variação mais complexa 
e poderosa dessas estruturas.
Matrizes: vetores (arrays) com mais de uma dimensão
No dia a dia, o uso de vetores em programação é muito comum, pois são estru-
turas comumente utilizadas para armazenar dados de forma sequencial, Também 
existem as matrizes, que são vetores mais sofisticados. Enquanto um vetor sim-
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
ples possui apenas uma dimensão, a matriz pode ter quantas dimensões forem 
necessárias. Na prática, a matriz é uma lista de listas, ou seja, uma lista em que 
cada elemento é, por sua vez, outro vetor. É como se fosse um grupo de vetores 
empilhados verticalmente (Paiva et al., 2020).
O vetor simples só costuma ter uma linha, e isso pode trazer limitações. Por 
exemplo: com um vetor, não daria para representar um prédio de apartamentos 
de forma simples. Já uma matriz faria isso de forma muito mais fácil — e o Python 
permite utilizar matrizes.
Declarar uma matriz em Python é até mais simples do que o próprio VisuAlg, 
que já é uma linguagem fácil. A seguir, declaramos uma matriz com 3 linhas e 
3 colunas, totalizando 9 elementos inteiros:
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
1
1
8
Como uma matriz é uma lista de listas, os elementos são organizados por 
índices de linha e coluna. O número de elementos de uma matriz é sempre 
igual ao produto do seu número de linhas pelo número de colunas. Em Python, 
os índices começam a ser contados a partir do zero. 
Conforme citado acima, temos: 
• Linhas: vão de 0 a 2 (3 no total)
• Colunas: também vão de 0 a 2 (3 no total).
Em outras palavras, temos 3 × 3 = 9 elementos. Veja como eles estão distribuídos:
matriz[0,0] = 1 , matriz[0,1] = 2 ,matriz[0,2] = 3
matriz[1,0] = 4 , matriz[1,1] = 5 ,matriz[1,2] = 6
matriz[2,0] = 7 , matriz[2,1] = 8 ,matriz[2,2] = 9 
Agora que você já sabe como declaramos a matriz e como seus dados são orga-
nizados, uma próxima etapa importante é aprender a acessar e percorrer seus 
elementos para processar ou exibir essas informações.
Para isso, usaremos o comando “For” na linguagem Python, que permite 
iterar sobre as linhas e as colunas da matriz. Veja o exemplo a seguir:
for linha in matriz:
 for elemento in linha:
 print(elemento, end=' ')
 print()
A PR OFUNDANDO
Esse comando funciona da seguinte maneira: para cada linha da matriz, ele vai 
pegar o elemento daquela linha e listar, até que cada linha tenha sido finalizada. 
Detalhe: depois de exibir o elemento, é colocado um espaço em branco (repre-
sentado por end=’ ‘), que evita que os elementos sejam exibidos um do lado 
do outro, sem espaço. Se não fosse assim, a exibição ficaria da seguinte forma:
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 5
123
456
789
Utilizando o espaço em branco, a exibição fica assim:
1 2 3
4 5 6
7 8 9
Bem mais organizado, não é mesmo? Agora que já aprendemos a declarar e usar 
matrizes e vetores, podemos conhecer outro item muito interessante usado na 
linguagem Python: o módulo Collections.
COLLECTIONS
As listas, por terem múltiplos usos, podem ser aplicadas a várias situações, já que 
podem ser lidas, alteradas, apagadas, exibidas e, também, podem ser ordenadas 
e combinadas com outras listas. 
Essas são operações repetitivas e muito usadas, e ficaria muito trabalhoso ter 
que definir várias operações todas as vezes que usarmos listas. Dessa forma, seria 
ideal que já tivéssemos isso pronto em uma biblioteca que agrupasse essas funções.
O nome dessa biblioteca é “Collections”, e ela já vem no Python por padrão 
(Paiva et al., 2020). Do ponto de vista prático, é uma espécie de módulo que for-
nece tipos de dados otimizados para armazenar e manipular listas (em Python 
ou ArrayList em Java) de elementos.
Utilizar o módulo Collections é uma forma mais prática e eficiente de traba-
lhar com listas, em vez de depender apenas das estruturas básicas, pois ele oferece 
diversas vantagens, como:
• Trazer estruturas prontas para o uso, como contadores, tuplas e filas.
• Permitir programar usando menos código.
• Tornar os programas mais claros, mais fáceis de entender.
1
1
1
• Fazer com que as tarefas específicas fiquem bem mais eficientes, pois 
economiza trabalho e tempo.
O módulo Collections é uma ferramenta poderosa e muito flexível para quem 
trabalha com estruturas de dados em Python. Sua principal característica é per-
mitir que as tarefas fiquem mais rápidas, mais fáceis e mais organizadas, sem que 
o programador precise criar rotinas que façam algumas atividades básicas, como 
ordenar listas, entre outras. 
É importante vermos as suas principais características. Os recursos,chamados, 
em alguns casos, de “tipos”, são os seguintes (Paiva et al., 2020):
DEFAULTDICT
Cria valores-padrão automaticamente em dicionários.
ORDEREDDICT
Garante a ordem de inserção (menos usado no Python 3.7+).
CHAINMAP
Combina vários dicionários.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
Explicaremos cada um deles a seguir. Começaremos com o Counter, pois os 
demais necessitam do conhecimento do conceito de dicionários no Python, que 
será abordado posteriormente.
Vejamos um exemplo de uso do Counter. Conforme Paiva et al. (2020), o 
Counter, da biblioteca Collections, é um recurso da linguagem Python, que per-
mite contar quantas vezes cada item aparece em uma lista, string ou outra coleção 
de dados.
Precisamos reforçar que, para usar algum recurso do módulo Collections, 
ele deve ser importado antes de ser usado. A importação, feita com um coman-
do simples, permite que o Python use aquele recurso. Vejamos um exemplo na 
linguagem Python.
Conforme podemos observar, o Counter contou quantas vezes cada cidade apa-
receu na lista. Ele mostrou que Recife apareceu 3 vezes, Salvador apareceu 2 vezes, 
João Pessoa apareceu uma vez.
Seu uso é muito simples e extremamente útil quando é necessário fazer bus-
cas nos dados. O Counter é muito útil, pois pode, por exemplo, contar palavras 
em um texto, ver qual item aparece mais vezes em uma lista ou obter estatísticas 
simples a partir de dados repetidos, como comentários de usuários na rede social, 
contando palavras de elogio.
from collections import Counter
cidades = [‘Recife’, ‘Salvador’, ‘Recife’, ‘João Pessoa’, ‘Recife’, ‘Salvador’]
contagem = Counter(cidades)
print(contagem)
saída:Counter({‘Recife’: 3, ‘Salvador’: 2, ‘João Pessoa’: 1})
A PR OFUN DANDO
COUNTER
Conta elementos rapidamente.
1
1
1
Quer saber mais sobre os recursos do módulo Collections? 
E U I N DI CO
O recurso Collections atua sobre vários tipos de dados. Para compreender os 
conceitos restantes que vimos anteriormente, veremos um importante conceito 
em Python: o dicionário.
Dicionário (mapa)
Antes de sabermos mais sobre o dicionário (também conhecido como mapa em 
Python), vejamos um exemplo do seu dia a dia, a partir dos dados da pessoa a seguir: 
Nome: Ricardo
CPF: 123.456.789-10
Nesse exemplo, vemos que “nome” está associado a “Ricardo”, e que “CPF” está 
associado ao valor “123.456.789-10”. Nesse caso, dizemos que “nome” é uma 
chave e que “Ricardo” é o valor associado a essa chave. 
As chaves, conforme Silberschatz (2012), existem para que se possa acessar 
dados que dela dependem. No caso do exemplo citado, a chave “nome” acessa o 
valor “Ricardo e a chave “CPF” acessa o valor “123.456.789-10”.
Paiva et al. (2020, p. 141) afirmam que “diferentemente das listas, que utilizam 
índices para acessar os seus elementos, os dicionários utilizam chaves”. A lingua-
gem Python permite utilizar dicionários exatamente como vimos anteriormente.
Vejamos um exemplo na prática.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
É possível verificar, nesse exemplo, que um dicionário em Python é uma estrutura 
de dados que armazena os pares “chave:valor”.
No exemplo, “nome”, “idade” e “cidade” são as chaves. “José Silva”, “20” e 
“Recife” são os valores correspondentes.
Esse tipo de representação é muito comum no dia a dia, mesmo se não pen-
sarmos em termos de programação de computadores. Quando alguém pede o 
número do seu smartphone, na verdade, está perguntando qual o valor da chave 
“smartphone” — e o valor associado é exatamente o número do smartphone. 
Simples, não é mesmo? 
Imagine a seguinte situação: cada estudante em uma faculdade possui um nú-
mero de matrícula, que é único. A partir desse número, é possível obter todos os 
dados cadastrados de qualquer aluno. Suponha que o aluno José Silva tem a ma-
trícula 123. Num dicionário, ficaria assim:
aluno = {
“matrícula”: 123,
“nome”: “José Silva”,
“idade”: 20,
“cidade”: “Recife”
}
#Acessando os dados do dicionário
print(“Nome:”, aluno[“nome”])
print(“Idade:”, aluno[“idade”])
print(“Cidade:”, aluno[“cidade”])
A PR OFUN DANDO
1
1
1
Agora que você já conhece o funcionamento do dicionário, precisamos relembrar 
algumas das operações disponíveis para eles no módulo Collections:
Existem diversos recursos que podem ser usados com muita flexibilidade.
DEFAULTDICT
Cria valores-padrão automaticamente em dicionários, ou seja, impede que o acesso a 
uma chave que ainda não foi criada gere um erro.
ORDEREDDICT
Garante a ordem de inserção, ou seja, os elementos são exibidos na mesma ordem em 
que foram adicionados.
CHAINMAP
Combina vários dicionários em um só.
Para aprofundar esses conceitos, no site da Python Academy, 
que é uma referência fundamental para conhecer os recursos 
do Python, você pode conhecer exemplos excelentes sobre o 
uso de dicionários. 
E U I N DI CO
Agora, vejamos um exemplo simplificado do uso de cada um deles. O 
“defaultdict” cria valores-padrão automaticamente em dicionários, ou seja, 
impede que o acesso a uma chave ainda não criada resulte em erro. 
Atenção: enquanto as classes em Python começam com maiúsculas, 
“defaultdict” não obedece a essa regra por questões históricas, pois, antes do 
Python 2.5, não havia a convenção de que classes começam com maiúsculas.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
Lembrando que, para usar qualquer classe em Python, você tem que importá-la e, 
por isso, a necessidade do from collections import defaultdict, no exemplo anterior.
Vejamos um exemplo de OrderedDict.
Para criar a lista vazia com “defaultdict”, é simples (use o nome que quiser em 
“meu_dicionario”, que é só para exemplificar):
from collections import defaultdict
# criando um dicionário onde o valor-padrão é uma lista vazia
meu_dicionario = defaultdict(list)
A PR OFUN DANDO
Por fim, o comando ChainMap é bem simples: permite juntar dicionários. Por 
exemplo:
Usaremos uma lista de compras, como exemplo, mantendo os itens exatamente 
na ordem em que foram anotados.
No Python, usamos o dicionário (ou “dict”) para guardar informações em pares: 
chave e valor.
Então, teremos os seguintes pares: 
chave: “maçã” → valor: 1 (quantidade)
chave: “banana” → valor: 5
chave: “leite” → valor: 2.
Um OrderedDict guarda esses pares de forma ordenada, ou seja, ele lembra a 
ordem em que você colocou cada coisa. Vejamos isso em Python:
from collections import OrderedDict
compras = OrderedDict()
compras[“maçã”] = 3
compras[“banana”] = 5
compras[“leite”] = 2
print(compras)
O comando print(compras) exibirá dados na ordem exata de inserção.
A PR OFUN DANDO
1
1
1
É possível notar que o uso, em si, é bastante simples.
from collections import ChainMap
# Dois dicionários diferentes
defaults = {‘cor’: ‘azul’, ‘tamanho’: ‘M’}
usuario = {‘cor’: ‘vermelho’}
# Criando um ChainMap que junta os dois
config = ChainMap(usuario, defaults)
# Mostrando o novo dicionário criado
print(dict(config))
A PROFUNDANDO
A seguir, conheceremos um tipo de lista simplificada, que são os sets, compa-
rando-os com os arrays. Os sets, de forma simplificada, são os conjuntos que 
usamos no dia a dia. 
Quer saber mais sobre os dicionários em Python e suas opera-
ções? 
E U I N DI CO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 5
Sets
Os sets, também conhecidos como conjuntos em Python, são listas simplificadas, 
diferentes dos arrays (Silva, 2019). Na prática, servem para implementar, via pro-
gramação, os conjuntos que conhecemos e usamos no dia a dia. Ainda segundo 
Silva (2019), eles têm as seguintes características:
Vejamos um exemplo de utilização de um set em Python.
NÃO SÃO ORDENADOS
Os elementos não têm uma posição fixa.
SEM POSSUEM REPETIÇÃO 
Não permitem elementos repetidos.
NÃO SÃO ACESSÍVEIS POR ÍNDICE
Ao contrário dos vetores, não é possível fazer, por exemplo, print(Conjunto[6]). Os ele-
mentos não são ordenados.
# Criando um set
frutas = {‘maçã’, ‘banana’, ‘laranja’}
# Adicionando um item
frutas.add(‘uva’)
# Removendo um item
frutas.remove(‘banana’)
# Verificando se um item está no set
if ‘maçã’in frutas:
 print(‘A maçã está no conjunto.’)
# Mostrando o set
print(frutas)
A PR OFUN DANDO
1
1
8
Bastante simples, não é mesmo? Na prática, é uma simplificação dos conceitos 
que já conhecemos neste tema. 
Code: debugging the gender gap 
Esse filme fantástico aborda um tema polêmico, mas muito 
atual no mundo da tecnologia e da programação — e que tam-
bém ocorre nos projetos feitos em Python. A história fala sobre 
a sub-representação de mulheres e minorias em computação, 
por meio de entrevistas com programadoras renomadas, mos-
trando que ainda há um longo caminho no sentido de resolver 
essa questão. O filme tem aproximadamente 80 minutos, e é 
no formato de documentário. Imperdível!
I N DI CAÇÃO DE FILME
As Mulheres na Ciência e Tecnologia:
uma história a ser escrita
Não é de hoje que a participação feminina vem sendo avalia-
da e estimulada nas áreas de tecnologia. O livro, de Raquel da 
Silva Guedes, escrito sob licença CC – BY 4.0, ou seja, pode ser 
lido e distribuído gratuitamente, trata dessa questão extrema-
mente importante que é a inclusão das mulheres no mundo da 
tecnologia. É um livro espetacular, que merece ser lido!
I N DI CAÇÃO DE L IVRO
Estudante, para expandir seus conhecimentos sobre o assunto 
abordado, gostaríamos de lhe indicar a aula que preparamos espe-
cialmente para você. Acreditamos que essa aula irá complementar 
e aprofundar ainda mais o seu entendimento sobre o tema. Apro-
veite! 
E M FOCO
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 5
Agora que você já conheceu tantos conceitos importantes, finalizamos revisando 
tudo o que aprendemos e nos preparando para novos desafios.
NOVOS DESAFIOS
Chegamos ao fim deste tema de aprendizagem. Nele, vimos importantes concei-
tos acerca das técnicas de programação. A razão de termos abordado assuntos 
tão importantes é que eles são utilizados no dia a dia das pessoas, tanto fora 
quanto dentro do mundo da informática. Conhecemos os tipos de variáveis, 
declaração e inicialização de variáveis, além de escopo e ciclo de vida. 
Vimos, também, as características de arrays e matrizes, e aprendemos a uti-
lizar Collections, dicionários (mapas) e listas (ArrayList e List). Ainda, estuda-
mos os conjuntos (sets) e aprendemos a diferenciar os conjuntos (sets) e as listas 
(ArrayList e List). 
No mercado de trabalho, seja como programador, analista de sistemas, 
testador de software ou desenvolvedor de IA ou ciência de dados, é fundamental 
entender o uso de cada uma dessas estruturas, seja em qual linguagem for, para 
desenvolver aplicativos móveis, de IA ou ciência de dados, além de diversas ou-
tras aplicações que podem ser desenvolvidas com as mais diversas finalidades 
— não somente em Python, até porque as linguagens evoluem e mudam. 
O uso desses conhecimentos será constante durante toda a sua atuação 
profissional. Por isso, encorajo-o a seguir estudando e se aprimorando, 
aumentando o seu conhecimento na área e buscando aprender cada vez mais, 
para desenvolver a sua carreira profissional, que, sem dúvida, será brilhante 
e muito promissora. Siga em frente: estude, aprenda e se dedique. O mundo 
maravilhoso da informática espera por você.
Um abraço e até a próxima!
1
1
1
1. A programação de computadores depende totalmente do uso de variáveis, pois são elas 
que armazenam valores de vários tipos e permitem que seja feito um processamento que, 
a partir da entrada dos dados, exibe resultados de saída, usados pelos gestores no dia a 
dia das instituições. As variáveis são declaradas de acordo com a necessidade e devem 
espelhar, de forma adequada, os dados a serem processados. 
Toda variável tem um ciclo de vida bem definido. Isso decorre da necessidade de gerenciar 
o espaço de memória de um computador, que não é infinito. O uso de uma variável tem um 
período específico e termina em um dado momento. Assinale a alternativa que descreve o 
momento em que esse ciclo é finalizado:
a) Alocação do espaço de memória.
b) Recebimento de valor.
c) Liberação do espaço de memória.
d) Alteração de valor.
e) Consulta de valor.
2. Os vetores (também chamados de arrays) são muito flexíveis e úteis. Por serem estruturas 
com vários dados, os vetores podem ter seus elementos internos lidos um a um. Chamamos 
essa leitura, informalmente, de “percorrer o vetor”. Em Python, o comando “For” é utilizado 
para realizar essa operação.
Todo vetor usa índices para acessar os elementos. Seja acessando diretamente ou com o 
comando “For”, essa operação tanto pode ser feita do início para o fim quanto do fim para o 
início. No caso de a operação ser feita do início, ela precisa começar exatamente do primeiro 
elemento. No caso do Python, qual é o índice desse primeiro elemento? 
a) -1.
b) 0.
c) 1.
d) 10.
e) 20.
AUTOATIVIDADE
1
1
1
3. O uso do módulo Collections é bastante comum em Python, por vários motivos. Esse módulo 
surgiu da necessidade de simplificar diversas operações que precisariam ser codificadas 
pelos programadores sempre que fossem necessárias. Com o uso de Collections, tudo fica 
mais simples. Esse tipo de recurso facilita a programação, trazendo rapidez e precisão.
Sobre o módulo Collections, analise as afirmativas a seguir:
I - O módulo Collections traz estruturas prontas para o uso, como contadores, tuplas e filas.
II - O módulo Collections permite programar usando menos código.
III - O módulo Collections torna os programas mais claros, mais fáceis de entender.
IV - O módulo Collections faz com que as tarefas específicas fiquem bem mais eficientes.
É correto o que se afirma em:
a) I, apenas.
b) II e IV, apenas.
c) III e IV, apenas.
d) I, II e III, apenas.
e) I, II, III e IV.
AUTOATIVIDADE
1
1
1
REFERÊNCIAS
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de Programação: a construção de algorit-
mos e estruturas de dados. 2. ed. São Paulo: Prentice Hall, 2005.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos: lógica para desenvolvimento de programa-
ção de computadores. 29. ed. São Paulo: Érica, 2019.
PAIVA, F. et al. Introdução a Python com aplicações de sistemas operacionais. Rio Grande do 
Norte: IFRN, 2020. Disponível em: https://memoria.ifrn.edu.br/bitstream/handle/1044/2090/
EBOOK%20-%20INTRODUÇÃO%20A%20PYTHON%20%28EDITORA%20IFRN%29.pdf?sequen-
ce=1&isAllowed=y. Acesso em: 10 set. 2025.
SEBESTA, R. W. Conceitos de Linguagens de Programação. 11. ed. Porto Alegre: Bookman, 2018.
SILBERSCHATZ, A. Sistema de banco de dados. 6. ed. São Paulo: LTC, 2012.
SILVA, T. Python de A a Z. São Paulo: Clube de Autores, 2019.
1
1
1
1. Alternativa C: o ciclo de vida de uma variável termina com a liberação (ou desalocação) do 
espaço de memória previamente reservado para ela.
Alternativa A – incorreta: a alocação do espaço de memória representa o início do ciclo de 
vida de uma variável, e não o seu fim.
Alternativa B – incorreta: o recebimento (ou atribuição) de um valor é uma etapa que ocorre 
durante o uso da variável, sem encerrar seu ciclo.
Alternativa D – incorreta: a alteração de valor indica apenas uma mudança de conteúdo da 
variável enquanto ela está ativa; não representa seu fim.
Alternativa E – incorreta: a consulta de valor é uma operação de leitura que ocorre enquanto 
a variável está em uso; não marca o encerramento do ciclo.
2. Alternativa B: o índice inicial de vetores em Python é 0 (zero). Esse é o padrão da linguagem 
para estruturas indexadas.
A alternativa A está incorreta, pois, em Python, o índice -1 é utilizado para acessar o último 
elemento de um vetor, e não o primeiro.
A alternativa C está incorreta, pois, embora algumas linguagens utilizem o índice 1 como 
ponto de partida, em Python, os índices começam obrigatoriamente em 0.
A alternativa D está incorreta, pois o valor 10 não tem relação com a indexação padrão em 
Python. Esse valor poderia ser um índice válido apenas se o vetor tivesse, ao menos, 11 
elementos.
A alternativa E está incorreta, pois o índice 20 é arbitrário e não representa o início da estrutura. 
Ele somente seria válido se o vetor tivesse, pelo menos,21 elementos, o que não é garantido.
3. Alternativa E. 
A afirmativa I está correta, pois o módulo Collections traz estruturas prontas, como Counter, 
deque e namedtuple, que já são otimizadas para tarefas específicas, evitando que o pro-
gramador precise criar essas funcionalidades do zero.
A afirmativa II está correta, pois o uso dessas estruturas reduz a quantidade de código 
necessário, já que muitas operações comuns já vêm implementadas e prontas para uso, 
simplificando o desenvolvimento.
A afirmativa III está correta, pois o uso dessas estruturas especializadas torna o código mais 
claro e legível, facilitando o entendimento e a manutenção por outros desenvolvedores.
A afirmativa IV está correta, pois as implementações do módulo são eficientes e otimizadas 
para tarefas específicas, garantindo maior desempenho em comparação a soluções caseiras 
ou genéricas.
GABARITO
1
1
1
MINHAS ANOTAÇÕES
1
1
1
MINHAS METAS
OPERADORES, EXPRESSÕES 
ARITMÉTICAS, RELACIONAIS
E LÓGICAS
Conhecer os tipos de operadores.
Utilizar operadores aritméticos.
Compreender as expressões relacionais.
Conhecer os operadores lógicos.
Compreender a ordem de precedência de operadores.
Construir expressões relacionais, lógicas e matemáticas.
Compreender a importância dos operadores lógicos nos programas de computador.
T E M A D E A P R E N D I Z A G E M 1
1
1
1
INICIE SUA JORNADA
Olá, estudante! Neste tema de aprendizagem, exploraremos conceitos impor-
tantes sobre os operadores utilizados na programação de computadores. Você 
entenderá como eles funcionam no dia a dia do desenvolvimento de sistemas e 
por que são tão essenciais. Além disso, veremos que esses operadores seguem 
uma hierarquia, chamada de ordem de precedência, a qual define como as 
expressões são avaliadas. Com eles, podemos realizar operações matemáticas, 
relacionais e lógicas, construindo instruções que tornam nossos programas mais 
inteligentes e funcionais.
Imagine a seguinte situação: você precisa criar um programa para controlar 
suas finanças pessoais, a fim de ajudar a organizar suas contas e seus investimen-
tos. Para investir em uma caderneta de poupança, por exemplo, é necessário que 
o valor disponível seja maior que o total gasto para pagar as contas. 
Se o valor que você tiver for maior do que o que precisa pagar, sobrará dinheiro para 
investir. Contudo, se for o contrário, ou seja, as contas forem maiores que o valor 
disponível, será necessário definir prioridades: quais contas pagar primeiro?
Nesse tipo de programa, é necessário implementar, em uma linguagem como 
Python, por exemplo, estruturas de decisão que possuam expressões lógicas do 
tipo “se saldo maior que as contas, então invista a sobra”. 
Esse tipo de operador é muito utilizado na programação de computadores, 
cuja finalidade é representar as operações lógicas de forma simples e, ao mesmo 
tempo, intuitiva, a fim de que o programa funcione de maneira eficiente e útil, 
gerando dados úteis para que sejam tomadas as decisões adequadas.
Conheceremos todos esses conceitos ao longo deste tema de aprendizagem, 
visando adquirir novos conhecimentos que enriquecerão ainda mais os seus es-
tudos sobre a programação. Inicialmente, veremos cada um deles de uma forma 
independente da linguagem de programação e, para que você aprenda a usá-los, 
na prática, veremos exemplos que poderão ser desenvolvidos em Python, pos-
sibilitando a compreensão sobre quando usar esses operadores para solucionar 
situação/problema, utilizando recursos de programação de computadores. 
Essa incrível aventura pelo conhecimento começa agora!
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 6
DESENVOLVA SEU POTENCIAL
OPERADORES
Os operadores estão presentes no nosso dia a dia (por exemplo, em uma compra 
com vários itens em um supermercado). Conforme afirmam Manzano e Oliveira 
(2019), operadores são símbolos utilizados para realizar operações sobre dados, 
como em uma soma, que utiliza o operador “+”. Já em uma comparação, pode-se 
usar o operador de igualdade “=“, por exemplo. 
Nessas situações, para realizar a compra, é comum haver um sistema com-
putacional que some os valores dos itens até chegar ao total que o consumidor 
deverá pagar. Imagine que esse consumidor tem um valor fixo para gastar:
• Primeiro, ele irá comparar esse valor com o total da compra para saber 
se é possível pagá-la. 
• Se o valor disponível for maior ou igual ao total, não há problemas, pois 
ele conseguirá arcar com o custo da compra. 
VAMOS RECORDAR?
Compreender a tabela-verdade é muito importante 
para entender o resultado de expressões lógicas mais 
complexas. Que tal recordarmos esse assunto? Acesse:
É muito comum perguntarem o que é necessário para come-
çar a programar. Quanto conhecimento em matemática, lógica 
e inglês é necessário, ou qual seria a linguagem apropriada para 
começar? É comum ouvir questionamentos como “estou velho 
pra começar a programar?”. Que tal ouvir um podcast sobre isso? 
PLAY N O CONHECIMENTO
1
1
8
• Se o valor for menor, não será possível concluir a compra, pois ele não 
terá recursos suficientes para quitá-la.
Para fazer essa análise, é necessário realizar uma comparação entre o que se tem 
e o valor total a pagar. 
Conforme afirmam Paiva et al. (2020), é nesse momento que surgem os ope-
radores de comparação (também chamados de relacionais) e os operadores 
lógicos, fundamentais para que o sistema possa “entender” e decidir, por exem-
plo, se deve autorizar ou bloquear uma transação.
Uma dúvida comum é: por qual motivo um programador deve aprender sobre 
operadores para poder programar? De acordo com Paiva et al. (2020), os opera-
dores comparativos (ou relacionais) e os operadores lógicos estão diretamente 
ligados ao uso de estruturas condicionais em programas de computador. 
Quando comparamos valores — como no exemplo da compra –-, um teste 
é realizado com a utilização de operadores. Portanto, é possível dizer que o co-
nhecimento sobre os operadores não é opcional: é obrigatório para quem pre-
tende criar programas de computador eficientes e eficazes. Por isso, conhecere-
mos esses operadores em detalhes mais à frente deste tema de aprendizagem. Já 
que falamos sobre a comparação entre o valor disponível e o valor da compra, 
começaremos justamente pelos operadores de comparação, também conhecidos 
como operadores relacionais.
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 6
OPERADORES RELACIONAIS
De acordo com Paiva et al. (2020, p. 60), “os operadores de comparação, também 
chamados de operadores relacionais, como o próprio nome sugere, comparam ou 
relacionam valores”. Em outras palavras, esses operadores são responsáveis por 
verificar se um valor é igual, diferente, maior ou menor do que outro.
Esse tipo de comparação é fundamental para que um sistema tome decisões 
automáticas com base em condições reais. Afinal, todo programa que interage 
com o mundo — seja para liberar um acesso, validar uma senha ou processar um 
pagamento — precisa comparar dados antes de agir. Sem isso, o sistema seria 
incapaz de responder a diferentes situações.
As comparações fazem parte de praticamente tudo o que fazemos em nosso 
cotidiano. Quando estamos dirigindo e olhamos para um semáforo, por exemplo, 
comparamos a cor vista com alguns padrões previamente conhecidos: 
• Verde: siga em frente.
• Amarelo: perigo, reduza a velocidade.
• Vermelho: pare.
Assim como no trânsito, a decisão que tomamos depende do resultado da com-
paração realizada. Isso se repete em diversas outras situações do dia a dia. Um 
exemplo já conhecido é o da compra de um produto, cuja decisão pela compra 
depende de quanto em dinheiro você tem. 
1
1
1
Vejamos como um sistema de pagamento se comporta, de acordo com a 
disponibilidade financeira do comprador:
• Valor disponível superior ao preço: compra autorizada.
• Valor disponível igual ao preço: compra autorizada.
• Valor disponível menor do que o preço: compra não autorizada.
Para que os programas possam realizar esse tipo de decisão— como autorizar ou 
não uma compra —, é necessário utilizar operadores específicos de comparação. 
Conforme Forbellone e Eberspächer (2005), utilizamos os operadores relacionais 
para realizar comparações entre dois valores de mesmo tipo primitivo (por 
exemplo: números inteiros com números inteiros; textos com textos etc.). 
A linguagem Python, por exemplo, possui diversos desses operadores, como 
veremos a seguir:
OPERADOR DESCRIÇÃO EXEMPLO DE USO
 == Igual if a == b :
 !=
Diferente (a exclamação significa 
negação)
if a != b :
 > Maior if a > b :
= Maior ou igual if a >= b :
= 7:
 print(“Aprovado por média”)
else:
 print(“Recuperação”)
A PR OFUN DANDO
nota1 = float(input(“Informe a primeira nota: “))
nota2 = float(input(“Informe a segunda nota: “))
media = (nota1 + nota2) / 2
print(f”Média do aluno: {media:.2f}”)
match media:
 case valor if valor >= 7:
 print(“Aprovado por média”)
 case _:
 print(“Recuperação”)
A PR OFUN DANDO
No código apresentado, a decisão principal, que determina o comportamento 
do programa, é a instrução “if media>= 7:”. O operador “>=”, portanto, é um 
elemento fundamental na construção desse programa.
É necessário ter muito cuidado na elaboração das sentenças lógicas, pois 
um pequeno erro em uma sentença dessas faz com que o programa funcione de 
maneira incorreta, podendo causar sérios problemas.
No exemplo em Python, é usada a estrutura de seleção “If”, que está presente 
na maioria das linguagens. Entretanto, também existe uma outra estrutura que 
usa sentenças lógicas. Que tal aprofundarmos um pouco mais esse assunto?
1
1
1
Nos nossos exemplos, vimos situações em que a condição é simples, ou seja, “se a > 
b”, por exemplo. No entanto, existem situações em que temos que testar mais de uma 
condição ao mesmo tempo. Esse tipo de situação demanda o uso dos chamados 
conectores lógicos ou “operadores lógicos” — esse é o tema que veremos a seguir.
OPERADORES LÓGICOS
Conforme Manzano e Oliveira (2019), os operadores lógicos são utilizados para 
combinar expressões booleanas em decisões múltiplas. Eles permitem que 
o programa analise mais de uma condição ao mesmo tempo, algo essencial em 
situações em que a decisão depende de dois ou mais fatores.
Essas condições — também chamadas de expressões lógicas ou booleanas — 
são implementadas por meio de operadores específicos, como mostra o Quadro 2.
OPERADOR DESCRIÇÃO FORMATO DE USO
AND
Conjunção: retorna “verdadeiro” se ambas as 
condições forem verdadeiras.
A and B
OR
Disjunção: retorna verdadeiro se, ao menos, 
uma das condições for verdadeira.
A or B
NOT Negação: retorna o valor inverso. Not A
Quadro 1 – Operadores lógicos / Fonte: o autor.
Algumas linguagens de programação utilizam, além do “If”, es-
truturas de decisão “CASE”, nas quais existem expressões lógi-
cas que são avaliadas. Que tal assistir a um vídeo sobre o assun-
to? Veja como isso é feito na linguagem Python acessando:
E U I N DI CO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 6
Segundo Araújo (2020), os chamados conectores lógicos operam sobre valores 
booleanos — verdadeiro ou falso — e sempre retornam um resultado do mesmo 
tipo: um ou outro, nunca ambos ao mesmo tempo.
A seguir, veremos exemplos em Python para cada um deles.
Operador and
Esse operador combina duas sentenças lógicas, sendo que uma ocorre simul-
taneamente com a outra (Manzano; Oliveira, 2019). Por exemplo: vejamos o 
programa, a seguir, que analisa se uma pessoa pode dirigir ou não. As condições 
são: a pessoa tem que ter 18 anos ou mais e também ter a carteira de habilitação, 
ou seja, ela precisa atender a ambas as condições. 
idade = int(input(“Informe sua idade: “))
tem_carteira = input(“Possui carteira de motorista (S/N)?))
if idade >= 18 and tem_carteira == “s”:
 print(“Pode dirigir.”)
else:
 print(“Não pode dirigir.”)
A PR OFUN DANDO
Agora, conheceremos o papel do operador or.
Operador or
Há situações em que basta atender ao menos uma condição para que o resulta-
do seja obtido. Um exemplo seria a forma de pagamento em um site de comércio 
eletrônico. O cliente pode pagar com cartão de crédito ou débito. 
Vejamos como ficaria esse tratamento em um programa em Python: 
1
1
1
É possível perceber que a pessoa pode ter os dois tipos de cartão (crédito ou dé-
bito), mas basta ter um deles e o pagamento será realizado. Pode atender a uma 
OU a outra condição, no mínimo, podendo, inclusive, atender a ambas. 
Por fim, vejamos um exemplo com “not”.
Operador not
Esse operador inverte o valor lógico da condição. Por exemplo: uma pessoa deseja 
solicitar um empréstimo no caixa eletrônico de um banco. Esse empréstimo só 
será concedido se a pessoa não tiver dívida. 
Vejamos como seria esse código em Python:
# entrada de dados. O comando lê a entrada e compara com “s”. Se for “s”, resulta 
true. Caso contrário, resulta false.
cartao_credito= input(“Pagamento com cartão de crédito? (s/n): “).lower() == “s”
cartao_debito = input(“Pagamento com cartão de débito? (s/n): “).lower() == “s”
# Verifica se alguma forma de pagamento foi aceita, ou seja, se é true
if cartao_credito == True or cartao_debito == True:
 print(“Pagamento autorizado.”)
else:
 print(“Forma de pagamento não aceita.”)
A PR OFUNDANDO
if tem_divida == false:
 print(“Empréstimo aprovado.”)
else:
 print(“Empréstimo negado.”)
A PR OFUNDANDO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 6
Nesse caso, para o empréstimo ser aprovado, 
a variável “tem_divida” deve ter valor falso. 
Nesse caso, para que o empréstimo seja con-
cedido, é necessário que o valor retornado 
seja verdadeiro. Por isso, é usado o not. Nes-
sa situação, not (falso) resulta verdadeiro, e, 
dessa forma, o empréstimo será concedido.
Observação: na programação, é impor-
tante utilizar comentários para entender me-
lhor o código. No Python, os trechos com 
“#” são comentários, que não são avaliados 
pelo programa. 
Foi possível ver, no exemplo anterior, que 
usamos operadores matemáticos ou aritmé-
ticos. Eles são absolutamente necessários em 
qualquer programa de computador e, por 
isso, conhecer o seu funcionamento e suas 
particularidades é absolutamente funda-
mental para quem desenvolve programas de 
computador. É deles que falaremos a seguir.
OPERADORES ARITMÉTICOS
Os operadores matemáticos são aprendidos 
desde cedo, nas primeiras aulas de matemáti-
ca, ainda no ensino fundamental. Por isso, dei-
xamos para mostrá-los depois dos operadores 
relacionais e lógicos. No entanto, existem di-
ferenças no uso desses operadores em progra-
mas de computadores e, por isso, é importante 
revisar e aprofundar esse conhecimento. 
Segundo Manzano e Oliveira (2019), os 
operadores aritméticos são usados para 
1
1
1
realizar operações matemáticas no computador. Na prática, são as mesmas ope-
rações que usamos no dia a dia, como soma, subtração, multiplicação e divisão, 
adaptadas para funcionar dentro dos programas. 
No Quadro 3, temos os operadores utilizados na linguagem Python:
OPERADOR DESCRIÇÃO EXEMPLO DE USO
+ Soma A + B
- Subtração A - B
 * Multiplicação A * B
** Exponenciação A ** B
/ Divisão A / B
// Divisão inteira A//B
% Resto da divisão inteira A%B
Quadro 1 – Quadro de operadores aritméticos:
Fonte: autor
É possível notar que temos semelhanças e, também, diferenças em relação aos 
símbolos matemáticoscomumente utilizados no dia a dia. No caso dos operado-
res “+” e “-”, nada muda. Entretanto, existem diferenças importantes:
• A primeira delas começa com o símbolo da multiplicação, que é “X” na 
matemática comum e é representado por um “*” (asterisco) nos progra-
mas de computador. Isso acontece por um motivo: para o computador, 
“X” é uma letra, e não um operador. 
• O símbolo de potenciação, em vez de ser um número sobrescrito, como 
em A elevado ao quadrado , usamos “**” (duplo asterisco), ou seja, A**A.
• Outra diferença importante acontece na divisão: no lugar de uma barra 
horizontal, ela é representada por “/”.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 6
• Além disso, temos duas novidades: “//”, que é divisão inteira, e “%”, que 
é o resto da divisão inteira. Eles são muito úteis em operações como 
validação de CPF, por exemplo.
Para entendermos melhor o uso desse tipo de divisão, recorreremos a exemplos. 
Uma divisão inteira de 16 por 3 em Python retorna apenas a parte inteira, despre-
zando o resto. Vejamos o exemplo a seguir, no qual a variável resultado receberá 
o valor da divisão inteira citada anteriormente:
resultado = 16 // 3
print(resultado)
O resultado exibido será 5, que é o valor inteiro dessa divisão. Nela, o resto é 1. 
No caso da variável resto, vejamos a seguir:
resto = 16%3
print(resto)
A variável resto ficará com o valor 1.
É importante lembrar que existe uma ordem nas operações matemáticas. 
A divisão e a multiplicação são avaliadas antes que a soma e a subtração, por 
exemplo. Além disso, o uso de mais de um operador, seja relacional, aritméti-
co ou lógico, obedece a regras importantes de funcionamento, principalmente 
na ordem de avaliação chamada de “ordem de precedência” ou “precedência de 
operadores”. Estudaremos isso mais detidamente agora.
PRECEDÊNCIA DE OPERADORES
Todos os operadores utilizados em linguagens de programação devem obedecer 
a regras. Por esse motivo, operadores aritméticos e relacionais possuem uma 
1
1
8
ordem de execução, que deve ser observada para que o programa funcione corre-
tamente. Isso garante que os cálculos sejam feitos de forma apropriada. A seguir, 
conheceremos essa ordem, começando pelos operadores matemáticos.
Ordem de avaliação de operadores matemáticos
Conforme falamos anteriormente, existe uma ordem clara de avaliação, que chama-
mos de “precedência”, para operadores matemáticos. A Tabela 1 mostra essa ordem.
ORDEM OPERADOR DESCRIÇÃO EXEMPLO
1 () Parênteses (agrupamento) (2 + 3) * 4 = 20
2 ** Exponenciação 2 ** 3 = 8
3 +x,-x Sinais unários (positivo, negativo) -5, +3
4 *, /, //, %
Multiplicação, divisão, divisão inteira, 
módulo
10 // 3 = 3
5 +, - Soma e subtração 7 - 2 = 5
Tabela 1 – Precedência de operadores aritméticos
Fonte: o autor.
Podemos analisar algumas expressões nos exemplos a seguir:
2 + 3 * 5 dá o resultado 17.
Nessa operação, efetuamos a multiplicação (representada por asterisco) e, depois, 
a soma, ou seja, 3*5 dá 15 e depois é somado com 2. 
Se colocarmos parênteses em locais diferentes, o resultado irá mudar. Observe:
(2 + 3) * 5 dá o resultado 25, pois o parêntese é avaliado primeiro.
Para simplificar, podemos agrupar isso em uma tabela.
A PROFUNDANDO
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 6
Bem simples de entender, não é? 
Para conhecer mais exemplos do uso de operadores matemá-
ticos em Python.
E U I N DI CO
Agora conheceremos essa mesma regra de precedência, só que aplicada aos ope-
radores lógicos.
Ordem de avaliação de operadores lógicos
Os operadores lógicos também precisam se submeter a regras de precedência, 
ou seja, obedecem a uma ordem de avaliação. Observe a Tabela 2:
ORDEM OPERADOR NOME DESCRIÇÃO EXEMPLO RESULTADO
1 not Negação
Inverte o 
valor lógico.
Not true False
2 and Conjunção
Retorna True 
se ambos 
forem True.
True or 
false
False
3 or Disjunção
Retorna true 
se ao menos 
um for true.
True or 
false
True
Tabela 1 – Precedência de operadores lógicos
Fonte: o autor.
Ou seja: o “not” é avaliado antes dos outros. E o “and” é avaliado antes do “or”.
Vejamos um exemplo prático em Python aplicado a uma situação do Brasil: 
a votação, em que a pessoa pode votar se tiver idade maior ou igual a 16. O voto 
1
1
1
é obrigatório entre 18 e 70 anos, mas é facultativo (opcional) para quem tem: 16 
ou 17 anos; e mais de 70 anos.
Escrevendo isso em Python, teríamos o seguinte código:
idade = int(input(“Informe a idade da pessoa: “))
if idade = 18 and idadecada vez mais, para progredir, na sua carreira profissional, como um 
excelente profissional de informática. Siga em frente: estude, aprenda e se dedi-
que! O mundo maravilhoso da informática está em constante mudança, e esta-
mos aqui para o ajudar a desvendar essa área maravilhosa!
UNIASSELVI
1
1
1
1. Quando usamos linguagens de programação para construir programas, é natural que sejam 
utilizados operadores lógicos. Eles costumam ser usados para combinar duas ou mais con-
dições, que retornam valores booleanos (verdadeiro ou falso). Também são muito utilizados 
em estruturas de decisão, como o comando “If”, permitindo que o programa tome decisões 
com base em múltiplas verificações.
Suponha a seguinte situação: para ir a um show, uma pessoa tem que ter o ingresso e tam-
bém o dinheiro para o transporte (seja carro, Uber, táxi ou qualquer outro tipo). Considerando 
essas condições, assinale a alternativa que possui a expressão correta, em Python, que pode 
ser utilizada para testar essa condição:
a) if tem_ingresso = false and tem_transporte = false.
b) if tem_ingresso = true and tem_transporte = true.
c) if tem_ingresso = false and tem_transporte = true.
d) if tem_ingresso = false and not(tem_transporte = false).
e) if not(tem_ingresso = true) and tem_transporte = false.
2. O uso de operadores lógicos depende do problema que se pretende resolver. A construção 
do programa depende diretamente do universo a ser modelado, ou seja, os parâmetros 
que irão definir a forma com que os comandos, normalmente do tipo “If”, serão construídos.
Suponha a seguinte situação: para entrar em um prédio, é necessário estar previamente 
cadastrado ou ser morador, bastando uma coisa ou outra, pois o morador também é cadas-
trado, o que pode fazer com que ele satisfaça uma ou outra condição. Assinale a alternativa 
que tem a condição apropriada para realizar esse teste:
a) if cadastrado= false and mora_no_predio= true.
b) if cadastrado= true or mora_no_predio= true.
c) if cadastrado= true and mora_no_predio= false.
d) if cadastrado= false or mora_no_predio= false.
e) if cadastrado= true and not(mora_no_predio= true).
AUTOATIVIDADE
1
1
1
3. Os operadores relacionais são usados com a finalidade de comparar determinadas situa-
ções em relação a parâmetros requeridos. Com isso, o programa pode responder de forma 
apropriada; dependendo do cenário encontrado, normalmente são feitos testes e, com o 
resultado, é tomada uma decisão.
Suponha que uma pessoa possui os seguintes parâmetros:
Idade 30 anos
Altura 1,75 m
País Brasil
Grau de instrução Superior
Analise as afirmativas a seguir:
I - A expressão idade >= 18 retorna false.
II - A expressão país == “canadá” retorna false.
III - A expressão altura >= 1.5 retorna true.
IV - As expressões altura >= 1.5 e país == “canadá” retornam true.
É correto o que se afirma em:
a) I e IV, apenas.
b) II e III, apenas.
c) III e IV, apenas.
d) I, II e III, apenas.
e) II, III e IV, apenas.
AUTOATIVIDADE
1
1
1
REFERÊNCIAS
ARAÚJO, S. de. Lógica de programação e algoritmos. Curitiba: Contentus, 2020.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de Programação: a construção de algorit-
mos e estruturas de dados. 2. ed. São Paulo: Prentice Hall, 2005.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos: lógica para desenvolvimento de programa-
ção de computadores. 29. ed. São Paulo: Érica, 2019.
PAIVA, F. et al. Introdução a Python com aplicações de sistemas operacionais. Rio Grande do 
Norte: IFRN, 2020. Disponível em: https://memoria.ifrn.edu.br/bitstream/handle/1044/2090/
EBOOK%20-%20INTRODUÇÃO%20A%20PYTHON%20%28EDITORA%20IFRN%29.pdf?sequen-
ce=1&isAllowed=y. Acesso em: 10 set. 2025.
PYTHON SOFTWARE FOUNDATION. 3.13.7 Documentation: a biblioteca padrão do Python: ti-
pos embutidos. Python Software Foundation, c2025. Disponível em: https://docs.python.org/
pt-br/3.13/library/stdtypes.html. Acesso em: 11 set. 2025.
1
1
1
1. Alternativa B. Analisando as condições, temos a seguinte situação: a pessoa tem que ter 
ingresso e, também, o dinheiro para o transporte, portanto, ela precisa que a condição 
tem_ingresso = TRUE e que tem_transporte = TRUE, ou seja, as duas condições são atendi-
das simultaneamente. Dessa forma, qualquer alternativa na qual, ao menos, uma condição 
seja False estará incorreta. 
Alternativa A: a pessoa não tem nada, ou seja, não tem ingresso nem transporte, portanto, 
a alternativa está errada.
Alternativa C: a pessoa não tem ingresso, mas tem transporte. Essa condição é insuficiente, 
portanto, a alternativa está errada.
Alternativa D: a pessoa não tem ingresso, mas tem transporte, o que é insuficiente; portanto, 
a alternativa está errada.
Alternativa E: a pessoa não tem ingresso nem transporte e, portanto, não satisfaz aos requi-
sitos, o que torna esta alternativa errada.
2. Alternativa B, pois a condição cadastrado = true or mora_no_predio igual a true resulta em 
true, conforme a lógica booleana.
A alternativa A está errada, pois a condição dela resulta em “false” (pois false and true é false, 
conforme a lógica booleana).
A alternativa C está errada, pois tem true and false, o que resulta em false.
A alternativa D está errada, pois a condição dela é “false or false”, o que resulta em false.
A alternativa E está errada, pois é if cadastrado= true and not(mora_no_predio= true), que 
resulta em false na lógica booleana
3. Alternativa B. Apenas as afirmativas II e III estão corretas.
Considerando que idade = 30, altura = 1.75, país = “brasil” e grau de instrução = “superior”, 
temos que:
• a expressão idade >= 18 retorna true;
• a expressão país == “canadá” retorna false;
• a expressão altura >= 1.5 retorna true;
• expressão altura >= 1.5 e país == “canadá” retorna false, já que true e false resulta em false.
Dessa forma, temos: 
• A afirmativa I está errada, uma vez que a idade é 30.
• A afirmativa II retorna false e, portanto, está correta, pois o país está definido como Brasil.
• A afirmativa III retorna true e, portanto, está correta, pois o valor da altura é 1.75.
• A afirmativa IV está errada, já que o país é Brasil, então, a expressão país==“canadá 
resulta em false.
GABARITO
1
1
1
UNIDADE 3
MINHAS METAS
COMANDOS DE CONTROLE
DE FLUXO
Compreender o conceito de controle de fluxo.
Utilizar estruturas condicionais (if, elif, else).
Aplicar corretamente o laço while e estruturas de repetição.
Controlar o fluxo de execução com os comandos break, continue e o uso de else.
Utilizar o laço for com diferentes tipos de iteráveis.
Conhecer as exceções.
Tratar exceções com try, except e else.
T E M A D E A P R E N D I Z A G E M 1
1
1
1
INICIE SUA JORNADA
Olá, estudante! Neste tema de aprendizagem, conheceremos conceitos importan-
tes sobre como controlar o fluxo de execução de um programa de computadores. 
Veremos os desvios de fluxo e de execução, e demonstraremos como esse controle 
de fluxo é fundamental para fazer com que o programa consiga se comportar de 
várias maneiras diferentes, adaptando-se a cada situação. 
A partir desse conhecimento, podemos criar programas altamente eficien-
tes, capazes de implementar soluções digitais para os vários cenários existentes no 
dia a dia. Para isso, primeiramente, faz-se necessário compreender o quanto esses 
comandos de controle de fluxo são importantes nas linguagens de programação. 
Imagine a seguinte situação: uma empresa precisa criar um programa que 
implemente um pequeno site de comércio eletrônico, para vender produtos de 
diversos fornecedores, com várias formas de pagamentos. Diversas são as situa-
ções. Por exemplo, o usuário pode clicar na compra de um item que, naquele 
momento, não tem mais no estoque. O programa deve ser capaz de responder, 
de forma adequada, ao cliente. Da mesma maneira, pode ser que o usuário tente 
pagar com um cartão de crédito, mas o limite seja insuficiente — então, o sistema 
terá que voltar à fase de pagamento e sugerir outra opção. 
Nesse tipo de programa, é necessário implementar, em uma linguagem como 
Python,por exemplo, estruturas de controle de fluxo que tratem cada uma dessas 
situações, afinal de contas, os usuários são diferentes. O sistema tem que atender 
a todos os tipos de cenários possíveis, de forma eficiente, segura e simples, para 
que o usuário possa utilizá-lo da melhor forma possível.
Esse tipo de controle é fundamental em qualquer linguagem de programação, 
e conhecer cada um deles é absolutamente necessário para todos os programa-
dores que desejam construir programas avançados e eficientes.
Conheceremos todos esses conceitos ao longo deste tema de aprendizagem. 
Sigamos aprendendo novos conhecimentos que enriquecerão ainda mais os seus 
estudos em programação. 
Começaremos conhecendo cada um deles de uma forma independente da 
linguagem de programação. Em seguida, veremos exemplos que poderão ser 
desenvolvidos em Python e, com isso, ficará mais fácil compreender em qual tipo 
de problema computacional esses controles poderão ser usados para solucionar 
a situação utilizando recursos de programação de computadores. 
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 7
É mais uma incrível aventura pelo conhecimento que começa agora!
VAMOS RECORDAR?
Compreender o funcionamento das estruturas de 
repetição é fundamental para entender o seu papel no 
controle de fluxo em programas. Que tal recordarmos 
esse assunto assistindo a um vídeo sobre o uso de “For” 
no Python? 
DESENVOLVA SEU POTENCIAL
O desenvolvimento de programas de computador é feito visando criar soluções 
digitais para problemas cotidianos. O uso de sistemas de compra e venda, de 
agendamento de videoconferências, de reserva de ingressos para shows e diver-
sas outras aplicações só se tornou possível graças à introdução, nas linguagens 
de programação, de comportamentos com os quais os programas podem tratar 
as mais diversas situações. Parte desse comportamento envolve tomada de de-
cisões, alteração de padrões de resposta e mudança de resultado, de acordo com 
as condições existentes. 
É muito comum perguntarem o que é necessário para criar um 
sistema com a qualidade necessária. Muitos acham que progra-
mar é uma arte, mas isso está bem longe da realidade. A progra-
mação de computadores demanda vários cuidados para que os 
sistemas sejam construídos de forma satisfatória. Que tal ouvir 
um podcast sobre isso? Aperte o play! 
PLAY N O CONHECIMENTO
1
1
1
Essa flexibilidade comportamental é conseguida com o uso de estruturas de con-
trole de fluxo em programas de computador. Primeiramente, conheceremos os 
conceitos iniciais relacionados a esse controle.
CONTROLE DE FLUXO EM PROGRAMAS DE COMPUTADOR
A vida cotidiana faz com que precisemos tomar diversas decisões que dependem 
de algumas condições. Vejamos um exemplo: se um cliente de um posto de com-
bustível tem um carro flex, que pode funcionar com álcool ou gasolina, ele precisa 
avaliar se vale a pena abastecer com um ou com outro combustível. Dependendo 
do combustível escolhido, o sistema existente na bomba de abastecimento libe-
rará uma quantidade diferente de litros. A bomba possui um sistema, interligado 
com o sistema de pagamento, que envia a informação da cobrança a ser feita de 
acordo com o tipo de pagamento —dinheiro, Pix, cartão de débito ou de crédito. 
Para cada tipo de pagamento, o sistema escolherá a rotina apropriada, ou seja, 
ele desvia o fluxo do programa para aquela rotina que irá realizar a operação. Esse 
desvio é feito através de estruturas de controle de fluxo existentes no programa 
utilizado. Essas estruturas podem acionar determinados comandos, dependendo 
de uma dada condição, ou executar um conjunto de comandos repetidamente. Para 
cada tipo de controle, existem estruturas apropriadas. Com o uso dessas estruturas 
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 7
de controle, após o pagamento ter sido realizado, o sistema emite o comprovante e 
volta ao início do fluxo para realizar a operação com o cliente seguinte.
Então, com as estruturas de fluxo, o programador pode definir como e quan-
do trechos específicos do programa serão executados, ou seja, seus comandos 
serão realizados gerando um resultado. Conforme Forbellone e Eberspächer 
(2005), as estruturas de controle de fluxo existentes são as seguintes:
• Estruturas condicionais: possibilitam a tomada de decisões com base em 
condições.
• Estruturas de repetição: permitem executar blocos de código várias vezes.
Z OOM N O CONHECIMENTO
Em Python, conforme Paiva et al. (2020), temos as estruturas if/elif/else e match/
case para desvio de fluxo baseado em decisões, enquanto for e while são usados 
como estruturas de repetição. Estudaremos cada uma delas a seguir. Observação: 
o match/case está disponível apenas a partir da versão 3.10 do Python.
Começaremos conhecendo as estruturas de decisão, apresentando exemplos 
em Python.
DESVIO DE FLUXO COM ESTRUTURAS DE DECISÃO
A tomada de decisão faz parte da vida. Não seria diferente no caso dos programas 
de computador. Se os programas buscam resolver, de forma digital, os problemas 
existentes, é natural que possuam estruturas que permitam variar a ação confor-
me a decisão. No caso específico do Python, conforme dissemos anteriormente, 
temos: if/else/elif e match/case.
Em muitas situações, o uso deles é equivalente – mas existem casos em que 
um deles é mais apropriado que outro. Dependendo da condição testada, a es-
colha pode ser tanto por if/else/elif quanto pelo match/case. O uso dependerá da 
eficiência, da clareza ou do problema a ser resolvido por aquele programa. Por 
isso, iremos nos aprofundar em cada um deles, começando pelo desvio de fluxo 
condicional implementado pelo bloco if/elif/else.
1
1
1
Utilização da estrutura if/elif/else
Conforme Manzano e Oliveira (2019, p. 121), “a tomada de decisão realizada pelo 
computador estabelece uma ação de desvio na operação do fluxo do programa”. 
O uso de if é disseminado em praticamente todas as linguagens de programação. 
Paiva et al. (2020) ressaltam que, em Python, a estrutura básica é bem simples: 
temos a palavra-chave if, seguida de um teste lógico e do caractere “:” (dois pon-
tos). Vejamos um exemplo do uso dessa estrutura condicional em Python.
A = 10
B = 20
if Aprint (“Você é brasileiro(a)”). Caso contrário, será executado o trecho 
print (“você não é brasileiro(a)”). Como, nesse caso, a variável nacionalidade tem 
o valor “outros”, a condição lógica resulta em falso. Por esse motivo, o trecho do 
else: será executado, e o programa emitirá a mensagem “você não é brasileiro(a)”.
Observação: perceba que, após a condição do if, são colocados “:” (dois pon-
tos) — e a mesma coisa ocorreu em else. Sem isso, o programa não funcionará 
adequadamente. 
1
1
1
Nesse caso, o else foi suficiente, mas existem situações em que é necessário 
tratar mais de uma situação. Nesse caso, o uso de elif surge como uma possível 
solução. Vejamos um exemplo. Considere a seguinte situação: um aluno realizou 
duas provas e foi calculada a média dessas duas notas. Se essa média for maior 
ou igual a 7, ele será aprovado sem precisar fazer a prova final; caso seja menor 
que 7, mas maior ou igual a 5, ele deverá fazer a prova final; e, caso seja menor 
que 5, ele será reprovado e não poderá fazer a prova final. Vejamos como fica 
isso em um programa Python.
if media >= 7:
 print(“Aprovado!”)
elif media >= 5:
 print(“Vai para a final”)
else:
 print(“Reprovado por média.”)
Em vez de termos que tratar apenas de duas possibilidades, agora temos três: 
“aprovado por média”, “vai para a final” ou “reprovado por média”. O uso de elif 
é extremamente útil nesses casos. Você pode utilizar o elif quantas vezes for ne-
cessário, e esse uso dependerá do problema que será informatizado.
Por outro lado, o Python tem, a partir da versão 3.10, uma importante estru-
tura de desvio de fluxo: o match/case, que veremos a seguir.
Utilização de match/case
A programação de computadores existe com a finalidade de trazer soluções 
computacionais para problemas do cotidiano. Os programas automatizam e in-
formatizam processos através de decisões tomadas a partir dos dados que estão 
sendo manipulados. Conforme Manzano e Oliveira (2019), nessas ocasiões, é 
necessário utilizar sucessivas verificações em expressões lógicas, com estruturas 
que permitam tomar a decisão apropriada para cada situação possível.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 7
Em Python, a estrutura match/case permite tratar esse tipo de problema (Paiva 
et al., 2020).
Vejamos um exemplo: um programa recebe o nome do dia e informa se ele 
é dia útil ou não, e qual a sua ordem se for um dia útil. Se estiver entre segunda 
e sexta-feira, é dia útil. Caso seja sábado e domingo, não é dia útil. O programa 
Python, a seguir, implementa uma solução para o problema:
match dia:
case “segunda”:
 print(“ Primeiro dia útil.”)
case “terça”:
 print(“Segundo dia útil.”)
case “quarta”:
 print(“Terceiro dia útil”)
case “quinta”:
 print(“Quarto dia útil!”)
case “sexta”:
 print(“Quinto dia útil!”)
case “sábado” | “domingo”:
 print(“Dia não útil!”)
case _:
 print(“Dia inválido.”)
1
1
8
Se a variável dia tiver o valor “terça”, por exemplo, o programa emitirá a mensa-
gem “segundo dia útil”.
Esse tipo de estrutura é extremamente útil para tratar casos em que uma dada 
variável pode assumir vários valores (um por vez). A estrutura de decisão match/
case, nesses casos, tende a ser mais legível e apropriada que o uso de if, embora 
seja possível utilizar aquela estrutura, com elif e else, para resolver o problema.
Foi possível perceber que essas estruturas permitem o desvio de fluxo em 
determinadas situações, mas sem repetição. Para implementar a solução para a 
necessidade de repetição em um programa de computador, temos comandos ex-
tremamente poderosos, que serão abordados a seguir: as estruturas de repetição.
A estrutura match/case se diferencia do uso do if, que vimos 
anteriormente. Conhecer essas diferenças é importante. Que tal 
se aprofundar no uso de match/case em Python? 
E U I N DI CO
DESVIO DE FLUXO COM ESTRUTURAS DE REPETIÇÃO
Conforme Paiva et al. (2020, p. 82), “há situações do cotidiano que, às vezes, a 
repetição de uma atividade é necessária”. Acontece o mesmo com os programas 
de computador. Ainda conforme Paiva et al. (2020), para casos como esse, são 
usadas estruturas de repetição (também conhecidas como iteração, laço ou loop) 
nas linguagens de programação. Nos sistemas de diversas empresas, os programas 
apresentam um comportamento que permite que sejam utilizados várias vezes, 
realizando as operações repetidamente — e isso é implementado com comandos 
apropriados. Um exemplo é um sistema de compras em um caixa de supermerca-
dos. Supondo que o cliente comprará cinco itens diferentes, o sistema começará 
abrindo a compra, depois o operador apresentará cada item ao leitor de código de 
barras, o pagamento deverá ser realizado e aquela compra será encerrada. Nesse 
momento, o sistema volta para o menu de iniciar compra e realiza a operação 
diversas vezes durante o dia. Para implementar esse comportamento, o Python 
utiliza os comandos for e while. Começaremos tratando do comando for.
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 7
Repetição determinada com o comando for
Podemos usar, como exemplo, uma situação em que o uso do comando for é 
recomendado: em uma contagem de 1 a 5, exibindo cada número. Uma forma 
bastante simples de fazer isso é utilizando cinco comandos print, conforme o 
exemplo a seguir:
print(1)
print(2)
print(3)
print(4)
print(5)
A PR OFUN DANDO
É possível perceber, nesse exemplo, que o programa funciona normalmente, mas 
está longe de ser eficiente e é pouco flexível. Se você precisar modificar para que 
ele mostre de 1 a 20, terá que inserir mais 15 comandos print. Essa abordagem 
não é a mais apropriada. Seria melhor se tivéssemos um comando que permitisse 
fazer isso de forma simples e concisa, ou seja, escrevendo pouco. E ele existe: é o 
comando for. Vejamos como o exemplo anterior ficaria com o uso desse comando.
for i in range(1, 6):
 print(i)
Explicando como funciona esse comando: começando pelo range, que gera uma 
sequência de números inteiros, iniciando em 1 e terminando em 5 (atenção: o 
número 6 não é incluído, pois o range exclui o último número na repetição).
1
8
1
Outro ponto importante é a indentação (ou recuo na digitação, que já vimos 
anteriormente), fundamental para que o Python saiba que o comando print(i) é 
subordinado ao for, ou seja, será repetido 5 vezes.
Quer saber mais sobre o uso de range em Python, de forma 
avançada? Acesse o QR code.
E U I N DI CO
O comando print(i) faz com que seja impresso o valor da variável i, que assumirá 
os valores 1, 2, 3, 4 e 5, um por vez. É possível notar que, com a estrutura de repe-
tição apresentada, é necessário escrever muito menos. Essa é uma das vantagens 
do uso desse tipo de estrutura. No entanto, existem outros bons motivos para 
usar o comando for:
UNIASSELVI
1
8
1
TEMA DE APRENDIZAGEM 7
AUTOMATIZA REPETIÇÕES
Permite executar um mesmo código várias vezes, de forma controlada.
É EXTREMAMENTE ÚTIL PARA PERCORRER SEQUÊNCIAS
Funciona muito bem para percorrer listas e outros objetos.
É FACILMENTE AJUSTÁVEL
Basta mudar os parâmetros do range e o comando pode ser adaptado para novas 
necessidades.
POSSUI CÓDIGO MAIS ENXUTO 
Com o comando for, é necessário escrever menos linhas do que se fosse feito sem 
estruturas de repetição.
FACILITA A OPERAÇÃO COM ÍNDICES
O uso do range facilita a parametrização da repetição.
No caso do comando for, é possível notar que a repetição é determinada, ou seja, 
é definido previamente quantas vezes a repetição acontecerá. O comando for é 
extremamente útil para uso com listas, conjuntos e dicionários, por exemplo. 
Simulando essa aplicação, começaremos com o uso em listas:
Em uma lista de nomes composta por José, João e Maria, queremos exibir esses 
nomes. O programa em Python ficaria assim:
nomes=[“José”, “João”, “Maria”]
for nome in nomes:
 print(nome)
A PR OFUN DANDO
E se esse mesmo exemplo fosse com conjuntos? Mudaria muito pouco:
nomes={“José”, “João”, “Maria”}
for nome in nomes:
 print(nome)
1
8
1
Já no caso dos dicionários, que sãotem sua particularidade 
para a declaração de variáveis (Araújo, 2020).
COMANDO DE ENTRADA
No exemplo, o comando leia (nome) permite que o usuário digite nome no teclado, e o 
computador armazena esse nome na variável nome.
COMANDO DE SAÍDA 
Já o comando escreval é usado para exibir mensagens na tela, como a que pede para o 
usuário informar seu nome ou a que informa o nome digitado. Esses comandos ajudam 
o programa a se comunicar com o usuário.
Agora, analisaremos o programa mais de perto, entendendo como esses passos 
funcionam juntos, adicionando mais uma informação: a idade da pessoa. 
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
Algoritmo “Exemplo”
Var 
 nome: caracter
idade: inteiro
inicio
 escreval(“informe o seu nome”)
 leia(nome)
 escreval(“informe a sua idade”)
 leia(idade)
 escreval(“o nome informado foi”, nome, “que tem”, idade, “anos”)
fimalgoritmo.
É fácil perceber que esse algoritmo, embora semelhante, difere do outro. Nele, 
é introduzida uma variável chamada idade, do tipo inteiro, que recebe valores 
inteiros, ou seja, sem casa decimal. 
Do mesmo jeito que na variável nome, é emitida uma mensagem para o 
usuário informar essa idade e, depois, o programa exibe a idade no comando 
escreval(“o nome informado foi”, nome, “que tem”, idade, “anos”).
Esse algoritmo intercala textos com os conteúdos das variáveis da seguinte 
forma: 
PASSO 1
Primeiro, o texto “o nome informado foi” é exibido na tela. 
PASSO 2
Logo depois, a essa mensagem, é anexado o conteúdo da variável nome e é colocado 
o texto “que tem” e, em seguida, a variável idade. 
1
8
Para programar, de forma eficaz, é fundamental utilizar um ambiente adequado. 
Um desses ambientes é o VisuAlg, uma ferramenta gratuita e fácil de usar, ideal 
para iniciantes. Com o VisuAlg, você pode criar, testar e rodar seus algoritmos 
em Portugol, sem custos.
Agora que já compreendemos a estrutura e as características dos algoritmos, 
que tal conhecermos o VisuAlg e colocar em prática o que aprendemos? ideal, 
para programar, é usar um ambiente apropriado. E esse ambiente existe, é o 
VisuAlg. Ele é gratuito, e você pode baixar, instalar e usar. 
Vamos conhecer o VisuAlg.
O AMBIENTE DE PROGRAMAÇÃO DO VISUALG
O VisuAlg é um ambiente de desenvolvimento simplificado, criado para o en-
sino de programação. Ele permite escrever, interpretar e executar algoritmos 
em português, de forma semelhante a um programa de computador tradicional.
Entre seus recursos, destacam-se a simulação da tela do computador, visuali-
zação de variáveis, uso de breakpoints, ajuda on-line, impressão de códigos-fonte e 
outras funcionalidades que facilitam o aprendizado das técnicas de programação.
O VisuAlg é um software de uso e distribuição gratuitos, amplamente adotado 
por escolas e universidades no Brasil e também em outros países. Atualmente, existem 
duas versões principais: a 2.5 e a 3.0. O programa foi desenvolvido com o objetivo de 
ensinar, de forma acessível, os conceitos básicos de programação a iniciantes.
PASSO 3
Por fim, é anexado o texto “anos”. Vamos simular o seu funcionamento? Supondo que 
o usuário inseriu o nome “ricardo” e a idade “55”, a mensagem emitida seria: “o nome 
informado foi ricardo, que tem 55 anos”.
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 1
Agora que compreendemos um pouco mais sobre VisuAlg, foi possível observar 
como ele é simples. Esse ambiente é dividido em três áreas, sendo uma de progra-
mação, uma de descrição das variáveis e uma área de visualização dos resultados. 
Nesse sentido, a Figura 1 ilustra o ambiente de programação na versão 3.0.
Que tal assistir a um vídeo com os passos iniciais de como utili-
zar o VisuAlg? Acesse e confira!
E U I N DI CO
Figura 1 – Ambiente de programação do VisuAlg / Fonte: o autor.
Descrição da Imagem: ambiente de programação do VisuAlg, que mostra uma tela retangular, dividida em três par-
tes. Na primeira parte, que ocupa pouco mais da metade da tela, do lado esquerdo, é apresentada a área onde o 
programador insere os comandos. Do lado direito, há duas partes, divididas por uma linha horizontal: a parte superior 
mostra a área de declaração das variáveis e a parte inferior exibe a tela de execução do programa, ou seja, mostra o 
que acontece quando o programa é executado. Fim da descrição.
Para baixar o VisuAlg, basta acessar o Google e digitar: “VisuAlg download”. Baixe 
o arquivo e descompacte na sua pasta preferida do computador. Ele é gratuito e pe-
queno, e pode ser usado sem nenhuma restrição — você pode instalar onde quiser, 
1
1
afinal, ele foi concebido para ensinar programação. Depois de descompactar na sua 
pasta preferida, clique duas vezes no ícone representado pela figura 2.
Figura 1 – Ícone do VisuAlg / Fonte: https://computerlanguagesite.wordpress.com/1111/11/11/visualg-ta-
belas-com-array-e-estrutura/. Acesso em: 1 set. 1111.
Descrição da Imagem: ícone de acionamento do VisuAlg, que é semelhante a um conjunto de quatro livros agrupados 
na vertical. O livro mais à esquerda é cor de rosa e está inclinado sobre o segundo, que é branco e cinza. O terceiro livro 
é mais fino, menor e amarelado. O quarto livro tem uma espessura mais larga, é azul e, por estar mais à direita, é o 
mais visível, apresentando detalhes retangulares em azul-claro. Ao lado do primeiro livro (o de cor rosa) e ligeiramente 
atrás dele, há um ponto de interrogação vermelho. A imagem tem um estilo pixelado, característico de ícones digitais 
de baixa resolução. O fundo da imagem é branco. Fim da descrição.
Após a descompactação, clique duas vezes e o VisuAlg abrirá. Após clicar, surgirá 
uma tela semelhante à da Figura 1, na qual é possível distinguir três áreas: a área 
dos algoritmos, que é onde você escreverá o código; a área das variáveis; e a área 
de visualização dos resultados. Aproveite os exemplos, apresentados anterior-
mente, e os insira no VisuAlg. Teste, modifique-os e divirta-se muito, porque a 
melhor forma de aprender programação é praticando.
Na Figura 3, temos o algoritmo computacional que fizemos há pouco, mas, 
dessa vez, diretamente no VisuAlg.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
Teste esse algoritmo da Figura 3 no VisuAlg que você instalou. É importante que 
você copie exatamente o que está nele.
Você vai perceber que o VisuAlg coloca, automaticamente, cores diferentes 
para as palavras que são reservadas pela própria linguagem. Não se preocupe, 
os editores funcionam dessa forma, para facilitar o trabalho do programador.
Figura 1 – Tela do VisuAlg com algoritmo de nome e idade / Fonte: o autor.
Descrição da Imagem: exibe uma captura de tela do programa VisuAlg 3.0.7.0, um ambiente para escrita e execução de 
algoritmos em Portugol. A interface mostra um código simples, cujo propósito é ler o nome e a idade do usuário e, em 
seguida, exibir uma mensagem com essas informações. A área visível do editor tem o título: “Área dos algoritmos (Edição 
do código fonte) -> Nome do arquivo: [semnome]”. O algoritmo é composto por comandos listados em sequência, um 
abaixo do outro, e executa a ordem descrita a seguir. A palavra-chave Algoritmo “Exemplo” define o início do algoritmo 
e dá o nome “Exemplo” a ele. Em seguida, na linha abaixo, a seção var declara duas variáveis: nome, do tipo caractere 
(para texto), idade, do tipo inteiro (para números). Na linha a seguir, o comando inicio marca o início da execução principal 
do algoritmo. Em seguida, o comando escreval (“informe o seu nome”) exibe a mensagem solicitando o nome do usuário. 
Na linha seguinte, o comando leia (nome) recebe o valor digitado e armazena na variável nome. Em seguida, o comando 
escreval (“informe a sua idade”) exibe outra mensagem, dessa vez, solicitando a idade. O comando leia (idade), na 
linha seguinte, recebe o valor digitado e armazena na variável idade. Por fim, o comando escreval (“o nome informado 
foi”, nome, “que tem”, idade, “anos”) exibe a mensagem completa com os dados informados. O algoritmo termina 
com o comando fimalgoritmo, que é a última linha.referenciados usando chave e conteúdo (Paiva 
et al., 2019), o programa é levemente diferente:
pessoa = {“nome”: “João”, “idade”: 30}
for chave in pessoa:
 print(chave)
Nesse caso, será impresso o nome da pessoa. Também pode ser impressa a idade, 
caso o usuário necessite. Em todos os casos, o comando for percorre a estrutura, 
exibindo seus elementos um a um. Mas no dia a dia, nem sempre é possível prever 
quantas vezes uma repetição acontecerá. É aí que surge uma outra estrutura, mais 
apropriada para esses casos: o while — é dele que falaremos agora.
Repetição indeterminada com while
Ao trabalhar com programação de computadores, é possível perceber que exis-
tem situações em que nem sempre temos como saber quantas vezes um bloco de 
código precisa se repetir. No dia a dia, é praticamente impossível saber, de forma 
determinada, quantas pessoas serão atendidas em um caixa de supermercado. 
Por esse motivo, o programa deve ser flexível para atender a essa necessidade. Na 
programação, o laço while provê recursos para que possamos tratar essa situação. 
Conforme Paiva et al. (2020), o comportamento da estrutura de repetição while 
é muito simples: enquanto uma condição (ou um conjunto delas) for verdadeira, 
uma instrução (ou um conjunto de instruções) que está dentro do laço deverá ser 
executada. Vejamos um exemplo desse uso na linguagem Python:
No algoritmo a seguir, a senha correta é “abc123”:
senha_usuario = “abc123”
senha_digitada = “”
while senha_digitada != senha_usuario:
 senha_digitada = input(“Digite a senha para acessar o sistema: “)
print(“Acesso liberado!”)
A PR OFUNDANDO
UNIASSELVI
1
8
1
TEMA DE APRENDIZAGEM 7
Agora, precisamos entender cada um dos comandos apresentados nesse exemplo. No 
começo do programa, as variáveis “senha_usuario” e “senha_digitada” são definidas. 
A primeira tem o valor “abc123”, e a outra é definida como “”, ou seja, um string sem 
nada dentro, vazio. É necessário criar essas variáveis para que o laço while possa 
funcionar de forma adequada, já que são elas que controlam a repetição.
A linha, a seguir, cria um laço que estabelece a repetição:
while senha_digitada != senha_correta:
Nela, é feito o seguinte teste: se a senha digitada for diferente da senha correta, 
então, o sistema pedirá ao usuário que a digite novamente. No começo do progra-
ma, elas são diferentes, então, a repetição inicia pedindo a senha, pela primeira 
vez, ao usuário. Se ele digitar a senha corretamente, o programa sairá do laço e 
emitirá a mensagem “Acesso liberado!”.
Observação: o trecho “!=” testa se um valor é diferente.
Se o usuário digitar uma senha errada, o sistema ficará preso na repetição. 
Não há como prever quando o usuário digitará o valor correto. Não é possível 
adivinhar se ele a digitará logo na primeira vez ou depois de uma, duas ou dez 
vezes seguidas. Nesse caso, o comando while é mais apropriado do que o coman-
do for, já que trata de repetições indeterminadas. 
Agora que já entendemos como usar os comandos for e while, conhecere-
mos um novo aspecto das estruturas de fluxo: situações em que uma repetição 
acontece e surge a necessidade de interrompê-la ou alterar o seu funcionamento, 
mudando a execução. É disso que falaremos a seguir.
1
8
1
CONTROLE DE FLUXO COM BREAK, CONTINUE E ELSE
No Python, existem comandos especiais que, quando usados com estruturas de 
repetição, permitem controlar o fluxo. São eles: break, continue e else. 
Comando break
Segundo Paiva et al. (2020), o papel do comando break é forçar a saída do 
fluxo do programa de dentro do laço, ou seja, interrompê-lo imediatamente. 
Vejamos um exemplo:
Em um conjunto de números, ao encontrar o número procurado (nesse caso, 
procuraremos pelo número 13), a procura é encerrada. Veja como isso ficaria em 
Python:
numeros = [1, 3, 9, 13, 25]
for n in numeros:
 if n == 13:
 print(“Número 13 encontrado!”)
 break
 print(f”Analisando o número {n}”)
A PR OFUNDANDO
Assim, se já encontramos o número, não é necessário continuar no loop for, já 
que a busca obteve sucesso. Então, utilizamos o comando break para encerrar a 
busca e seguir em frente no programa. No caso do while, o break se comporta 
exatamente da mesma forma, ou seja, interrompe o laço e sai daquela repetição 
(Paiva et al., 2020). Existe outra forma de modificar o fluxo de execução de um 
comando for. Esse comando é o continue, que veremos a seguir.
Comando continue
Utilizando o comando break, é possível sair de um laço for — mas e se for o con-
trário e quisermos continuar nesse laço, em alguma situação específica? Vejamos 
UNIASSELVI
1
8
1
TEMA DE APRENDIZAGEM 7
um exemplo: queremos exibir os números de uma lista, exceto o número 5. Veja 
como ficaria esse código em Python:
for numero in [1, 2, 3, 4, 5, 6, 7, 8 , 9, 10 ]:
 if numero == 5:
 continue
 print(numero)
Nesse exemplo, quando o número for igual a 5, o laço voltará para o início 
do for e pulará para o seguinte, sem imprimir. Assim, o print está associado ao 
for, e não ao if. Então, se o número for 5, não será impresso. O comportamento do 
continue é exatamente o mesmo no caso do while, ou seja, pula os comandos res-
tantes e volta para o começo do laço (Paiva et al., 2020). Para finalizar, vejamos o uso 
do else, que tem um comportamento semelhante ao else existente no comando if.
Comando else
O comando else é bastante útil nos laços for e while, principalmente em casos em 
que o laço não foi encerrado de forma forçada, com o break. Vejamos um exemplo 
adaptado da busca anterior por um número, mas, dessa vez, se o número não for 
encontrado, o else exibirá uma mensagem informando que não houve interrupção.
for numero in [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]:
 if numero == 5:
 continue
 print(numero)
 else:
 print(“Laço concluído sem interrupção – número não encontrado.”)
Pelos exemplos apresentados, verifica-se que os programas tratam situações nas 
quais os algoritmos funcionam corretamente. Contudo, nem sempre o cenário 
1
8
1
é perfeito. Problemas como divisão por zero, por exemplo, podem acontecer. 
Nesses casos, os programas precisam tratar as possíveis exceções. É sobre isso 
que estudaremos agora.
TRATAMENTO DE EXCEÇÕES
Vejamos a seguinte situação: um programa deve receber um número que será 
utilizado em um procedimento posterior, mas deve ser um número, e não uma 
letra, por exemplo. Como nem sempre é possível garantir que o usuário digite 
corretamente apenas números, precisaremos tratar essa situação. Observe um 
exemplo dessa situação:
O programa utiliza um bloco “try...except”, que permite tratar eventuais exceções.
try:
 numero = int(input(“Digite um número inteiro: ”))
 print(f”Você digitou: {numero}”)
except ValueError:
 print(“Erro: você não digitou um número válido.”)
else:
 print(f”O número digitado foi: {numero}”)
A PROFUNDANDO
UNIASSELVI
1
8
1
TEMA DE APRENDIZAGEM 7
Agora, tentemos entender esse código: “try” (tentar, em tradução do inglês) 
diz ao Python que tente executar esse código, que é para receber um número, 
e o “except” (em caso de exceção) diz ao Python o que fazer caso haja algum 
problema. Se não houver erro, o else será executado. Portanto, o que é dito ao 
Python é: “tente. Se não der certo, faça os comandos do except. Se der certo, faça 
os comandos do else”.
Araújo (2020) afirma que esse tratamento é fundamental para que os pro-
blemas gerados por erros do usuário possam ser gerenciados da melhor forma 
possível. Vale a pena usar esse tipo de recurso para garantir que os seus programas 
sempre possam funcionar de forma perfeita em qualquer caso.
A estrutura “try... except” é extremamente importante e tem vá-
rias características avançadas. Quer saber mais sobre o uso de 
“try... except” em Python? Acesse o QR code.
E U I N DI CO
Após conhecer todos esses conceitos, é importante vermos, também, aspectos 
éticos de programação. A programação de computadores lida com dados, de-
mandando que seu uso deva ser realizado levando em conta aspectos como pri-
vacidade, por exemplo. 
O GrandeHack 
Para complementar seus conhecimentos, indicamos esse fil-
me fantástico, de 2019, que trata de um escândalo envolvendo 
a empresa Cambridge Analytica, a qual utilizou dados de mi-
lhões de usuários do Facebook sem a devida autorização de-
les. Essas informações foram usadas para influenciar eleições, 
explorando o uso da ciência de dados. Imperdível!
I N DI CAÇÃO DE FILME
1
8
8
Por fim, sugiro a leitura de um livro que trata do mesmo caso envolvendo a falta 
de ética no uso de dados de usuários. 
Manipulados 
O livro, de Brittany Kaiser, trata da questão do uso indevido de 
dados por uma empresa de informática, detalhando o conteú-
do do filme O Grande Hack. O livro também discute o caso da 
empresa Cambridge Analytica, que usou dados de forma an-
tiética. Imperdível! 
I N DI CAÇÃO DE L IVRO
Para finalizar da melhor forma possível, recomendamos uma aula muito especial. 
Agora que você já conhece tantos conceitos importantes, finalizamos revisando 
tudo o que aprendemos e nos preparando para novos desafios.
NOVOS DESAFIOS
Chegamos ao fim deste tema de aprendizagem, no qual vimos importantes con-
ceitos que são utilizados diariamente, seja no mundo da informática ou fora 
dele. Conhecemos o uso dos comandos de controle de fluxo, que modificam a 
ordem em que um programa é executado. Tanto quanto outros comandos, eles 
Estudante, para expandir seus conhecimentos sobre o assunto 
abordado, gostaríamos de lhe indicar a aula que preparamos espe-
cialmente para você. Acreditamos que essa aula irá complementar 
e aprofundar ainda mais o seu entendimento sobre o tema. Apro-
veite! 
E M FOCO
UNIASSELVI
1
8
9
TEMA DE APRENDIZAGEM 7
são fundamentais na programação de computadores. Os sistemas necessitam 
diretamente do seu uso para que possam resolver os problemas cotidianos de 
usuários e empresas. 
É extremamente importante conhecer esses controles, nas mais diversas áreas 
da informática, especialmente como programador, analista de sistemas, testador 
de software ou desenvolvedor de Inteligência Artificial (IA) ou ciência de dados. 
Entender o uso de cada um desses comandos, seja em qual linguagem for, é 
primordial para desenvolver aplicativos móveis, de IA, financeiros ou para uso 
pessoal com qualidade, eficiência e segurança, além de outras aplicações para as 
mais diversas finalidades. O uso desses conhecimentos será necessário durante 
toda a sua vida profissional. Por isso, reforço a necessidade de você seguir estu-
dando e se aprimorando cada vez mais, desenvolvendo o seu conhecimento na 
área e buscando aprender cada vez mais, para progredir, na sua carreira, como 
um excelente profissional de informática.
Siga em frente: estude, aprenda e se dedique. O mundo maravilhoso da in-
formática está em constante mudança, e estamos aqui para o ajudar a desvendar 
essa área maravilhosa!
Um abraço e até a próxima!
1
9
1
1. A implementação de controle de fluxo, nos programas de computador, normalmente é feita 
com estruturas de seleção e estruturas de repetição. O uso dessas estruturas pode ser 
combinado e, normalmente, isso é implementado nas linguagens com uso de comandos 
como if, for, while, else e, também, com comandos de fluxo, como break e continue. 
É bastante comum, no início da programação, confundir o uso de estruturas de seleção e 
estruturas de repetição. Isso acontece porque, em muitos momentos, não há uma com-
preensão imediata do que cada comando pode fazer, nem sua aplicação. Um item que pode 
dificultar essa compreensão é o fato de que existem comandos usados tanto em estruturas 
de repetição quanto de seleção. No caso do Python, esse comando é:
a) String.
b) Get.
c) Else.
d) Input.
e) Print.
2. O desvio de fluxo com estruturas de repetição é utilizado em situações de repetição deter-
minada e, também, naquelas em que há repetição indeterminada. Em qualquer dos casos, 
existe a possibilidade de interromper o fluxo de repetição, de acordo com a necessidade 
do problema, ou por questões que dependem da situação modelada. 
Analise as afirmativas, a seguir:
I - O uso do comando for permite a variação da quantidade de repetições.
II - O comando break permite sair da repetição de forma imediata.
III - O comando continue desvia o fluxo para a próxima iteração.
IV - O comando if não pode ser usado conjuntamente com o comando for.
É correto o que se afirma em:
a) I, apenas.
b) II e IV, apenas.
c) III e IV, apenas.
d) I, II e III, apenas.
e) I, II, III e IV.
AUTOATIVIDADE
1
9
1
3. O uso de controle de fluxo está presente em todas as linguagens de computação. Isso é 
necessário porque os problemas do cotidiano são variados, com situações que demandam 
soluções diferentes, de acordo com cada caso. A criação de sistemas deve prever essas 
situações e, por isso, as estruturas de controle de fluxo são necessárias.
Com base nas informações apresentadas, avalie as asserções, a seguir, e a relação proposta 
entre elas:
I - O controle de fluxo realizado com o comando “for” permite tratar situações em que se 
sabe, a priori, o número de repetições
PORQUE
II - O comando “for” serve para implementar estruturas de repetição determinada.
A respeito dessas asserções, assinale a alternativa correta:
a) As asserções I e II são verdadeiras, e a II é uma justificativa correta da I.
b) As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.
c) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
d) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
e) As asserções I e II são falsas.
AUTOATIVIDADE
1
9
1
REFERÊNCIAS
ARAÚJO, S. de. Lógica de programação e algoritmos. Curitiba: Contentus, 2020.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de Programação: a constru-
ção de algoritmos e estruturas de dados. 2. ed. São Paulo: Prentice Hall, 2005. 
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos: lógica para desenvolvimento de programa-
ção de computadores. 29. ed. São Paulo: Érica, 2019.
PAIVA, F. et al. Introdução a Python com aplicações de sistemas operacionais. Rio Grande do 
Norte: IFRN, 2020. Disponível em: https://memoria.ifrn.edu.br/bitstream/handle/1044/2090/
EBOOK%20-%20INTRODUÇÃO%20A%20PYTHON%20%28EDITORA%20IFRN%29.pdf?sequen-
ce=1&isAllowed=y. Acesso em: 10 set. 2025.
1
9
1
1. Alternativa C, pois else está presente tanto no for quanto no while. 
A alternativa A está errada, pois string é um tipo de dado, e não faz parte da sintaxe das 
estruturas de seleção nem de repetição.
A alternativa B está errada, pois get é um comando Python usado para acessar valores de 
uma chave com segurança.
A alternativa D está errada, pois input é utilizado para entrada de dados.
A alternativa E está errada, pois print é um comando utilizado para saída de dados.
2. Alternativa D, pois estão corretas as afirmativas I, II e III, apenas.
A afirmativa I está correta, pois o Python permite a variação da quantidade de repetições no 
comando for, bastando definir o range.
A afirmativa II está correta, pois o comando break permite sair imediatamente da repetição.
A afirmativa III está correta, pois o comando continue desvia o fluxo para a próxima iteração.
A afirmativa IV está errada, pois é possível usar o comando if com o comando for.
3. Alternativa A. A asserção I está correta, e a asserção II é uma justificativa correta da I. 
GABARITO
1
9
1
MINHAS ANOTAÇÕES
1
9
1
MINHAS METAS
LAÇOS DE REPETIÇÃO
Analisar a aplicação do conceito de loops (laços) em programas.
Diferenciar o uso das estruturas de repetição for e while.
Identificar os contadores em laços de repetição.
Empregar acumuladores em laços de repetição.
Explorar o uso de valor médio em estruturas de repetição.
Reconhecer o uso de estruturas de repetição aninhadas.
Implementar laços de repetição em exemplos do dia a dia.
T E M A D E A P R E N D I Z A G E M 8
1
9
1
INICIE SUA JORNADA
Olá, estudante! Pense na seguinte situação: ao realizar uma compra de uma pas-
sagem de avião na internet ou no aplicativo de celular,um usuário inseriu, na 
parte de pagamento, um número de cartão inválido. Em vez de seguir com a 
operação e realizar a compra, o sistema voltou para a tela de receber dados de 
pagamento. Mais uma vez, o usuário inseriu um número incorreto e o sistema 
novamente voltou ao ponto em que aguarda um número cartão ou outra forma 
de pagamento. Ele ficará nessa repetição, ou laço, até que o usuário insira um 
número válido ou desista. 
VOCÊ SABE RESPONDER?
Esse comportamento é implementado, nas linguagens de programação, por 
estruturas de repetições em programas que modelam, de forma digital, o 
comportamento de atividades do dia a dia de pessoas e empresas. Mas, você sabe 
como o computador faz isso? Quais são essas estruturas? 
Nesse exemplo, notamos que, na compra da passagem, também são cobradas 
taxas extras, resultando em uma soma que é o valor total a pagar. E mais: na 
compra de mais uma passagem, os itens são contados, resultando em um valor 
médio por passagem. Esses são dados importantes para a empresa, além de saber 
qual item vende mais, qual vende menos, o total de uma venda, por exemplo. 
Agora pense em um caixa eletrônico: o sistema só libera o saque depois que 
a senha correta é inserida. Imagine-se programando essa situação e anote, em 
poucas linhas, como você estruturaria o código para que o processo se repita até 
que o cliente digite a senha válida. Ao final deste tema de aprendizagem, retome 
essas anotações iniciais e compare com as soluções apresentadas ao longo deste 
conteúdo, para perceber sua evolução e a aplicação prática das estruturas de re-
petição, pois conhecer essas estruturas é fundamental para qualquer profissional 
que pretenda se especializar no mundo da programação. 
UNIASSELVI
1
9
1
TEMA DE APRENDIZAGEM 8
DESENVOLVA SEU POTENCIAL
Os sistemas de informação são desenvolvidos a partir de programas de compu-
tador que buscam digitalizar as atividades do dia a dia. Sistemas como sites de 
compras, agendamento de consultas, WhatsApp e outros programas de redes 
sociais procuram se comportar de modo a funcionar nas mais diversas condições.
VAMOS RECORDAR?
Compreender o funcionamento das estruturas de 
repetição é fundamental para entender o seu papel no 
controle de fluxo em programas. Que tal recordarmos 
esse assunto assistindo a um vídeo sobre o uso de 
estruturas de repetição no VisuAlg?
No mundo da Internet das Coisas (IoT), mais e mais equipamentos 
têm sido utilizados no dia a dia das pessoas. Dispositivos como 
assistentes virtuais, smartwatches, TVs inteligentes e interfaces 
digitais estão em todo lugar. Que tal ouvir um podcast sobre as 
tendências tecnológicas dos próximos 5 anos? Aperte o play!
PLAY N O CONHECIMENTO
1
9
8
No cotidiano, as pessoas contam itens, somam preços e tiram conclusões a partir 
das informações, por exemplo, calculando o troco em uma compra. É natural que 
os sistemas de informação implementem esses dados que decorrem das necessi-
dades dos usuários, sejam eles pessoas físicas ou empresas. Na maioria das vezes, 
o sistema atende à empresa e às pessoas físicas com as quais se relaciona, reali-
zando contagens, somas e médias de valores. Esse comportamento repetitivo 
é implementado com laços de repetição, ou “loops”, termo técnico mais utilizado. 
A seguir, conheceremos e aprofundaremos esses conhecimentos acerca dos 
laços de repetição. 
LAÇOS DE REPETIÇÃO (LOOPS)
Conforme Forbellone e Eberspächer (2005), os laços de repetição são conhecidos 
por sua versão em inglês: “loops”. Eles servem para repetir um grupo de coman-
dos de um programa. Essa repetição pode ter um número predefinido ou pode 
variar de acordo com a entrada de dados. Um laço é uma 
estrutura que permite repetir instruções várias vezes. Por 
exemplo, uma contagem de 1 a 10, exibindo cada um deles, 
é um exemplo de repetição determinada, ou seja, sabemos 
quando ela começa e termina. Vejamos esse exemplo na 
prática, utilizando a linguagem VisuAlg. 
Um laço é uma 
estrutura que 
permite repetir 
instruções 
várias vezes 
var
 numero: inteiro
inicio
 Para numero de 1 ate 10 faca
 escreval(numero)
fimpara
A PR OFUNDANDO
Vamos entender o exemplo? Esse código faz uma contagem simples de 1 até 10. 
Para isso, é usada a estrutura de repetição “Para...faça”, que repete um conjunto de 
comandos várias vezes. A variável número começa valendo 1 e vai aumentando 
UNIASSELVI
1
9
9
TEMA DE APRENDIZAGEM 8
de um em um até chegar em 10. A cada passo, o comando escreval(número) mos-
tra o valor do número atual na tela. Assim, o resultado será a lista dos números 
de 1 a 10, um embaixo do outro. Dessa forma, o programa gera uma contagem 
crescente de 1 até 10 na tela.
Manzano e Oliveira (2019, p. 248) afirmam que: “a maior parte das lingua-
gens de programação possui três tipos de laços, sendo oferecidos normalmente 
um laço com controle condicional pré-teste, um laço com controle condicional 
pós-teste e um laço incondicional”. Vejamos uma breve descrição cada um deles:
LAÇO COM CONTROLE CONDICIONAL PRÉ-TESTE
Realiza um teste lógico antes de fazer a repetição.
LAÇO COM CONTROLE CONDICIONAL PÓS-TESTE 
Realiza os comandos, pelo menos uma vez, antes de fazer um teste para ver se continua 
ou encerra.
LAÇO DE REPETIÇÃO DETERMINADO
Não realiza teste lógico, executando um número fixo de vezes.
A seguir, conheceremos cada um deles, começando pelo laço de repetição pré-teste. 
Laço de repetição com pré-teste
Conforme Forbellone e Eberspächer (2005), laços de repetição com pré-teste são 
aqueles em que a condição é verificada antes de executar o bloco de comandos. 
O uso desse tipo de laço é apropriado para casos em que o laço só será iniciado 
se uma determinada condição for satisfeita. 
No exemplo a seguir, o programa lerá números até que o usuário digite 0 (zero). 
Entretanto, ele só inicia o laço se o usuário colocar um número diferente de zero. 
Portanto, ele testa antes de entrar no laço e só entra se a condição for satisfeita.
1
1
1
Nesse exemplo, o programa lerá o número que o usuário irá inserir pelo teclado, 
antes do laço começar. Enquanto esse número for diferente de zero (por isso, 
a condição é numero !=0), o programa ficará “preso” dentro do laço, ou seja, 
ficará repetindo todos os comandos seguidamente até que o usuário digite 0 
(zero). No momento que o usuário der entrada nesse valor, a repetição terminará 
com o programa executando o comando da linha seguinte, que tem o comando 
print(“Fim do programa!”). 
numero = int(input(“Digite um número (0 para sair): “))
while numero != 0: # pré-teste
 print(f”Você digitou: {numero}”)
 numero = int(input(“Digite um número (0 para sair): “))
print(“Fim do programa!”)
A PR OFUNDANDO
É exatamente por isso que esse tipo de repetição (ou laço) é denominado de 
“pré-teste”. Antes mesmo de entrar no laço, é feito o teste se o número é diferente 
de zero. Esse tipo de repetição é extremamente útil em situações em que não há a 
certeza de quantas vezes o laço irá se repetir. Se o usuário inserir o valor 0 (zero) 
como o primeiro valor, o laço nem iniciará. Se o valor inserido for diferente de 
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
zero, o laço será executado ao menos uma vez. Quando o usuário digitar zero, o 
laço encerrará. Importante: se o usuário não digitar zero em nenhum momento, 
o programa nunca terminará, ou seja, o laço será infinito (nunca finalizará).
Uma pergunta muito comum é: “e se o usuário nunca digitar zero?”. Nesse caso, o 
laço repetirá indefinidamente, a não ser que o programa tenha sua execução inter-
rompida de outra forma — por exemplo, pela finalização da execução. 
PE N SA N DO JUNTOS
A seguir, conheceremos os laços de repetição com pós-teste. Você perceberá que 
existe uma importante diferença entre o laço com pré-teste e o laço com pós-teste.
Laço de repetição com pós-teste
Conforme Paiva et al. (2020), laços de repetição com pós-teste são utilizados para 
casos em que o laço é iniciado imediatamente e só será finalizado se uma determinada 
condiçãofor satisfeita. Nesse tipo de laço, o bloco de comandos é executado pelo 
menos uma vez, pois a condição de parada só é verificada depois da execução. 
Em Python, não existe o comando “do... while” (usado em outras linguagens). 
Para que possamos construir um programa que tenha esse comportamento em 
Python, usamos “while True” junto ao comando break. Vejamos um exemplo 
desse tipo de repetição (para entender bem o comportamento, vale a pena copiar 
esse código e colocar no Python para executar):
 # Exemplo: ler números até que o usuário digite zero
while True:
 numero = int(input(“Digite um número (0 para sair): “))
 print(f”Você digitou: {numero}”)
 if numero == 0: # pós-teste
 break
print(“Fim do programa!”)
A PR OFUN DANDO
1
1
1
Para explicar melhor esse exemplo, temos um passo a passo do funcionamento dele:
 ■ O programa entra no while True, que, conforme Forbellone e Eberspächer 
(2019), cria um “loop (laço) infinito”, cuja execução se repete 
indefinidamente até que algum comando provoque sua interrupção.
 ■ O usuário digita um número.
 ■ O número digitado é exibido na tela.
 ■ O programa verifica se o número digitado é 0.
 ■ Se for 0, o comando break é executado e o laço é encerrado.
 ■ Se não for 0, o laço continua e o usuário digita outro número.
 ■ Quando o laço termina, o programa exibe a mensagem: “Fim do pro-
grama!”.
Importante: nesse tipo de laço, o código sempre será executado ao menos uma 
vez, mesmo que a condição de saída seja verdadeira logo na primeira execução.
É possível perceber diferenças entre ele e o laço com condição pré-teste. Mas, você 
saberia responder quais seriam essas diferenças e as semelhanças entre esses laços? 
LAÇO COM PRÉ-TESTE
Antes de executar qualquer instrução, o laço verifica se a condição é verdadeira. Se a 
condição for falsa logo no início, o laço nem começa, ou seja, ele pode nem ser iniciado 
se o teste inicial resultar em false.
LAÇO COM PÓS-TESTE
Sempre será realizado, pelo menos uma vez, pois executa os comandos antes de fazer 
um teste para ver se continua ou encerra.
SEMELHANÇAS ENTRE AMBOS OS LAÇOS
Eles podem ser interrompidos por comandos como “break”, por exemplo.
Portanto, mesmo com diferenças significativas, ambos os laços também possuem 
semelhanças. Nesse momento, pode surgir uma dúvida comum: “mas qual dos 
dois é melhor?”.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
Podemos dizer que a resposta é a mesma para qualquer problema relacionado à 
informática: “depende”, pois depende da situação que será modelada. Cada caso 
é um caso. Conhecer os dois tipos é fundamental para decidir qual será o mais 
apropriado em relação ao que se pretende fazer.
Agora que já vimos, com detalhes, os laços de repetição com pré e pós-teste, 
é hora de aprofundarmos o estudo dos laços de repetição incondicionais. 
Utilizar, de forma adequada, as estruturas de repetição é funda-
mental para construir programas altamente eficientes. Que tal 
recordarmos esse assunto assistindo a um vídeo sobre o uso de 
While no Python?
E U I N DI CO
1
1
1
Laço de repetição determinada
Conforme Manzano e Oliveira (2019), laço de repetição determinada é aquele 
que tem seu funcionamento controlado por uma variável, denominada de con-
tador. Essa variável viabiliza o funcionamento da repetição, definindo a quanti-
dade de vezes que a repetição acontecerá. Ela recebe um valor inicial e um valor 
final. No momento que atinge o valor final, a repetição é executada uma última 
vez e é encerrada. Vejamos um exemplo a seguir:
# Exibir os números de 1 a 5
for i in range(1, 6): # começa em 1 e vai até 5
 print(f”Número: {i}”)
print(“Fim do programa!”)
A PR OFUNDANDO
Nesse exemplo, o comando range(1, 6) gera a sequência 1, 2, 3, 4, 5. É importante 
ressaltar que o número 6 não entra nessa repetição. O for executa exatamente 
uma vez para cada número da sequência. Não depende de break para terminar 
— ele para sozinho, quando a sequência acaba. Esse é o tipo de laço mais usado 
quando já sabemos, de antemão, o número de repetições.
Todos os tipos de laço têm uma aplicação mais específica, de acordo com as 
necessidades. É interessante saber qual deles usar, comparando um com o outro. 
O Quadro 1 faz essa comparação e resume todos os tipos de laço.
TIPO DE LAÇO ESTRUTURA QUANDO TERMINA
FOR INCONDICIONAL for i in range(...) Ao percorrer toda a sequência.
WHILE (PRÉ-TESTE) while condição Quando a condição é falsa.
WHILE TRUE
(PÓS-TESTE)
while True + break
Quando encontra o break após 
executar.
Quadro 1 – Comparativo dos comandos de repetição / Fonte: o autor.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
O uso dessas estruturas de repetição depende muito do problema que gerou a 
necessidade de um programa de computador. Não é possível saber, de antemão, 
qual a melhor das opções. A escolha depende muito do problema a ser resolvi-
do pela linguagem de programação. Portanto, conhecer todas essas estruturas é 
fundamental para construir programas eficazes e eficientes para cada caso.
Quer saber mais sobre a estrutura de repetição for em Python? 
Acesse o o QR code.
E U I N DI CO
De acordo com o que foi apresentado até aqui, a repetição determinada usa con-
tadores. Entretanto, é possível utilizar contadores e, também, somas e médias 
com as outras estruturas de repetição, a partir do uso de variáveis de contagem, 
acumuladores e médias. É o que veremos a seguir.
UTILIZAÇÃO DE CONTADORES, SOMAS E MÉDIAS
Vejamos a seguinte situação: em uma compra de supermercado, é relevante saber 
a quantidade de itens comprados, porém saber o valor total da compra é ainda 
mais importante, pois é o valor que iremos pagar. Em muitos casos, também 
vale a pena saber o valor médio de cada item. Essas outras medidas são muito 
comuns nas atividades cotidianas. Saber a quantidade de pessoas em uma sala, 
a média de altura de um grupo de jogadores de basquete e a soma de salários 
dos funcionários de uma empresa, por exemplo, tudo isso é fundamental. Por 
esse motivo, o uso de contadores, acumuladores e cálculos de média é muito 
comum na programação, pois permite organizar e interpretar dados de modo a 
ajudar na tomada de decisão. 
1
1
1
De acordo com Manzano e Oliveira (2019):
 ■ O uso de contadores permite contar quantas vezes um evento ocorreu. 
 ■ Acumuladores permitem somar valores ao longo da execução. 
 ■ Médias oferecem uma importante informação acerca daqueles dados 
processados.
Conforme visto, tais variáveis são fundamentais no dia a dia. Sem elas, os progra-
mas seriam de pouca utilidade. Conheceremos cada uma delas a seguir.
Variáveis contadoras
É muito comum, no dia a dia, contar itens. É assim em uma compra de 
supermercado, por exemplo — a nota fiscal não somente mostra quantos itens 
foram comprados, mas a soma total e o preço médio. Outro exemplo é o da com-
pra de itens para o estoque de uma loja, cujos itens têm preços diferentes e se quer 
calcular a média de um item que pode ter preços diferenciados, de acordo com a 
categoria. Para realizar essas contagens, usamos variáveis contadoras. 
Conforme Manzano e Oliveira (2019), as variáveis contadoras são utilizadas 
nos programas de computador com a finalidade de armazenar valores inteiros 
ao longo da execução do programa, contando quantas vezes algo acontece. São 
comumente inseridas em blocos de estruturas de repetição.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
No exemplo a seguir, contamos quantas pessoas têm idade maior ou igual 
a 18 anos (denominadas de “pessoas de maior”), e as pessoas que têm idades 
menores (“pessoas de menor”). 
# Contadores
qtdmaiores = 0
qtdmenores = 0
# Perguntar a idade de 5 pessoas
for i in range(1, 6):
 idade = int(input(f”Digite a idade da pessoa {i}: ”))
 if idade >= 18:
 qtdmaiores += 1 # soma 1 no contador de maiores
 else:
 qtdmenores += 1 # soma 1 no contador de menores
# Mostrar resultados
print(f”Quantidade de maiores de idade: {qtdmaiores}”)
print(f”Quantidade de menores de idade: {qtdmenores}”)
A PR OFUN DANDO
Vejamos uma explicação de comoesse código funciona:
 ■ Inicialização: nos comandos iniciais, é atribuído valor 0 (zero) às variáveis 
contadoras, que são, respectivamente, “qtdmaiores” e “qtdmenores”.
 ■ A seguir, é aberta uma estrutura de repetição for, que recebe 5 idades.
 ■ Entrada de dados: o programa pede a idade de cada pessoa usando um 
laço for.
 ■ No item seguinte, com o if, é feita uma verificação:
 ■ Se a idade for maior ou igual a 18, soma 1 em maiores, com o comando 
“qtdmaiores += 1”.
 ■ Caso contrário, em “qtdmenores += 1”, soma 1 no contador de menores.
 ■ Ao final, os contadores mostram quantas pessoas estão em cada grupo.
Essa forma de utilizar contadores é extremamente comum e simples. Por outro 
lado, é muito comum calcular a soma e a média de um conjunto de valores. É o 
que veremos a seguir, com as variáveis de soma e média, respectivamente.
1
1
8
Variáveis acumuladoras
No exemplo anterior, poderíamos estar interessados em não somente saber a 
quantidade de pessoas, mas a soma de suas idades. É o que veremos agora, com 
o uso de variáveis acumuladoras, que servem justamente para somar valores 
recebidos, ou seja, a cada valor recebido na entrada do programa, esse valor é 
somado para, ao final, exibir o total. 
# Contadores
qtdmaiores = 0
qtdmenores = 0
soma_idades = 0 # acumulador
# Pergunta a idade de 5 pessoas
for i in range(1, 6):
 idade = int(input(f”Digite a idade da pessoa {i}: “))
 soma_idades += idade # acumula a idade
 if idade >= 18:
 qtdmaiores += 1
 else:
 qtdmenores += 1
# Mostrar resultados
print(f”Quantidade de maiores de idade: {qtdmaiores}”)
print(f”Quantidade de menores de idade: {qtdmenores}”)
print(f”Soma das idades informadas: {soma_idades}”)
Utilizaremos o mesmo exemplo na linguagem VisuAlg: 
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 8
Vejamos uma explicação de como funciona esse código, passo a passo:
 ■ No começo, é feita a inicialização das variáveis. As variáveis “qtdmaiores”, 
“qtdmenores” e “soma_idades” começam com o valor 0 (zero) atribuído 
diretamente a elas.
 ■ Em seguida, é feita a entrada de dados: for repete 5 vezes, pedindo a idade 
de cada pessoa. A cada idade digitada, é somada a “soma_idades”, que é 
a variável acumuladora.
 ■ A cada passagem, são atualizados os contadores da seguinte forma: se a 
idade for maior ou igual a 18, incrementa a variável “qtdmaiores”, adicio-
nando mais 1 unidade ao seu valor. Caso contrário, incrementa a variável 
“qtdmenores”, também acrescentando 1 unidade ao seu valor.
algoritmo “Idades”
var
i, idade, soma_idades, qtdmaiores, qtdmenores: inteiro
inicio
 soma_idades = 18 entao
 qtdmaiores = 18:
 qtdmaiores += 1
 else:
 qtdmenores += 1
# Cálculo da média
media = soma_idades / 5
# Mostrar resultados
print(f“Total de maiores de idade: {qtdmaiores}”)
print(f“Total de menores de idade: {qtdmenores}”)
print(f“Soma das idades informadas: {soma_idades}”)
print(f“Média das idades: {media:.2f}”)
A PR OFUN DANDO
1
1
1
A seguir, descrevemos como funciona o programa apresentado nesse exemplo:
 ■ No começo do programa, é feita a inicialização, cujas variáveis “qtdmaio-
res”, “qtdmenores” e “soma_idades” começam com 0.
 ■ Em seguida, é feita a entrada de dados, com o for repetindo 5 vezes, pe-
dindo a idade de cada pessoa.
 ■ Após receber cada idade, ela é somada a “soma_idades”.
 ■ Em seguida, são atualizados os contadores. Se a idade for maior ou igual 
a 18, incrementa aos maiores. Caso contrário, incrementa aos menores.
 ■ Uma vez que já temos os contadores e os acumuladores, é possível fazer 
cálculo da média, com o comando media = soma_idades / 5. Esse coman-
do divide o total acumulado de idades pelo número de pessoas.
 ■ Por fim, é feita a saída de resultados, que mostra quantas pessoas são 
maiores e menores de idade, assim como a soma e a média das idades, 
com duas casas decimais (:.2f).
Esse uso de contadores, acumuladores e média é um importante recurso para as 
situações do dia a dia e, por isso, conhecê-los é fundamental para que se possa 
construir programas altamente eficientes.
Quer saber mais sobre contadores e acumuladores? Acesse o 
QR code. 
E U I N DI CO
Agora que você já aprendeu a usar contadores, acumuladores e médias, veremos 
conceitos importantes sobre o uso combinado de estruturas de repetição. Quando 
uma estrutura de repetição está dentro da outra, dizemos que ela está “aninhada”. 
Esse tipo de situação é muito comum e o uso dessas estruturas é extremamente 
importante no dia a dia da programação — e é delas que trataremos a seguir.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
ESTRUTURAS DE REPETIÇÃO ANINHADAS
De modo geral, um laço de repetição é uma estrutura que permite executar um 
mesmo conjunto de instruções diversas vezes, até que uma condição seja atendi-
da. Esse recurso evita repetições manuais no código e torna os programas mais 
organizados e eficientes. Segundo Forbellone e Eberspächer (2005), estruturas de 
repetição aninhadas (ou laços aninhados) ocorrem quando um laço de repetição é 
colocado dentro de outro, ou seja, os laços têm, dentro de si, um ou mais laços. Tal 
uso viabiliza a implementação de ciclos internos completos a cada iteração do laço 
externo, sendo recomendado em situações como preenchimento de vetores de mais 
de uma dimensão (conhecidos como matrizes), construção de tabelas de forma 
iterativa e análise de dados em múltiplas dimensões, entre muitas outras aplicações.
É fácil identificar quando existem laços aninhados quando há umfor dentro de 
outro, um while dentro de um for, e um for dentro de um while ou um while 
dentro de outro — ou seja, combina-se “for” e/ou “while” para percorrer coleções, 
listas de listas e outros tipos de estruturas complexas.
Esse tipo de estrutura é bem mais sofisticada do que as que já conhecemos e, 
por isso, é muito importante ter cuidado na construção dela.
Se não houver esse cuidado, é possível que o programa execute repetições 
desnecessárias ou mesmo podendo tomar um tempo de execução excessivo, in-
1
1
1
cluindo entrar em repetição infinita, ou seja, o conhecido “loop infinito”, que não 
terminará a não ser que o programa seja interrompido de forma anormal.
Vejamos um exemplo simples de um comando for dentro de outro comando for.
Em uma matriz 3X3, listamos elementos de 1 a 9:
# declarando a Matriz 3x3
matriz = [
[1, 2, 3],
[4, 5, 6],
[7, 8, 9]
]
# Percorrendo a matriz com laços aninhados
for i in range(len(matriz)): # Externo: percorre as linhas
 for j in range(len(matriz[i])): # Interno, percorre as colunas
 print(f”Linha {i}, Coluna {j} -> {matriz[i][j]}”)
A PR OFUNDANDO
A saída ficará assim:
 ■ Linha 0, Coluna 0 -> 1.
 ■ Linha 0, Coluna 1 -> 2.
 ■ Linha 0, Coluna 2 -> 3.
 ■ Linha 1, Coluna 0 -> 4.
 ■ Linha 1, Coluna 1 -> 5.
 ■ Linha 1, Coluna 2 -> 6.
 ■ Linha 2, Coluna 0 -> 7.
 ■ Linha 2, Coluna 1 -> 8.
 ■ Linha 2, Coluna 2 -> 9.
Observando esse exemplo, é possível notar que a linha fica constante e a coluna 
varia até o final. Depois disso, vem a próxima linha, e assim por diante. Isso acontece 
porque o comando “for” da linha tem, dentro de si, o “for” da coluna. Dessa forma, 
o valor da variável linha não será alterado até que todos os valores da coluna tenham 
sido gerados. É possível criar estruturas aninhadas com várias combinações. 
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 8
Agora que você conheceu todos esses conceitos, veremos indicações de materiais 
extras para consolidar seus conhecimentos de programação.
Ex_Machina: instinto artificial 
Nesse filme fantástico, lançado em 2014, dirigido por Alex 
Garland, temos a história de Caleb, um jovem programador 
que é selecionado para participar de um experimento 
inovador: avaliar a inteligência artificial avançada de uma robô 
chamada Ava, criada por Nathan, um recluso bilionário e gênio 
da tecnologia. O filme é incrível!
I N DI CAÇÃO DE FILME
Quer conhecer mais formas de aninhar comandos de repetição? 
Veja vários exemplos para praticar.
E U I N DI CO
Superinteligência: caminhos, perigos, estratégias 
Esse incrível explora os possíveis futuros da inteligência artifi-
cial, discutindo os desafios éticos, os riscos e os impactos que 
uma superinteligência artificial poderia trazer para a humanida-
de. Imperdível!
I N DI CAÇÃO DE L IVRO
Para finalizar da melhor forma possível, recomendamos uma aula muito especial. 
1
1
1
Agora que você já conhece tantos conceitos importantes, finalizamos revisando 
tudo o que aprendemos e nos preparando para novos desafios.
NOVOS DESAFIOS 
Finalizamos este tema de aprendizagem, no qual vimos importantes conceitos 
sobre o uso de estruturas de repetição em aplicações do dia a dia. Conhecemos 
as estruturas com pré-teste, pós-teste e determinadas, além de vários exemplos 
sobre o uso delas e o quanto é importante entender como cada uma funciona para 
que possamos construir programas de computador altamente eficientes. Esse é 
um assunto extremamente importante, que está ligado a diversas áreas, como 
ciência de dados, inteligência artificial e sistemas computacionais em geral. 
A possibilidade de aplicações é vasta, abrangendo de sistemas contábeis, fi-
nanceiros, mercado de ações até sistemas de controle de pessoal e muitos outros, 
nos quais você, certamente, atuará em sua carreira de programador, analista, 
profissional de inteligência artificial, de infraestrutura ou qualquer área da in-
formática. As estruturas de repetição estão presentes em todos os sistemas, e o uso 
eficiente delas é um grande diferencial para qualquer profissional da área. Portanto, 
o que você aprendeu fará muita diferença em sua carreira profissional na área de 
tecnologia da informação. 
No entanto, o estudo desse assunto não para aqui. Siga em frente: estude, 
aprenda e se dedique. O mundo maravilhoso da informática está em constante 
mudança, e estamos aqui para o ajudar a desvendar essa área maravilhosa!
Um abraço e até a próxima!
Estudante, para expandir seus conhecimentos sobre o assunto 
abordado, gostaríamos de lhe indicar a aula que preparamos espe-
cialmente para você. Acreditamos que essa aula irá complementar 
e aprofundar ainda mais o seu entendimento sobre o tema.
E M FOCO
UNIASSELVI
1
1
1
1. Os laços de repetição são bastante utilizados na programação de computadores. Eles têm 
esses nomes porque lembram uma execução que pode ser finita ou infinita em círculos, que 
depois seguem o seu curso normal. As formas de construção desses laços dependem dos 
problemas a serem resolvidos a partir de sistemas e programas de computador.
O uso das estruturas de repetição é associado aos cenários que serão digitalizados. A escolha 
desses tipos de repetição é baseada na solução a ser implementada. Todas elas permitem 
criar repetições que podem ser parametrizadas por testes de condições predefinidas, ga-
rantindo flexibilidade e eficiência aos problemas modelados. Sobre o tipo de laço que realiza 
um teste lógico antes de ser executado, assinale a alternativa correta:
a) Laço infinito.
b) Laço interrompido.
c) Laço sem controle.
d) Laço com cláusula de repetição determinada.
e) Laço com controle condicional pré-teste.
2. Em programação, contadores são variáveis usadas para contar a ocorrência de eventos, 
repetições ou itens dentro de um processo. Eles são especialmente úteis quando preci-
samos acompanhar quantas vezes um determinado evento acontece, como o número de 
vezes que um usuário acessa um sistema ou a quantidade de elementos processados em 
uma lista.
Analise as afirmativas a seguir:
I - O loop while é utilizado quando sabemos exatamente quantas vezes o bloco de código 
precisa ser repetido.
II - O loop for pode ser usado para percorrer listas, tuplas, strings e outros iteráveis em 
Python.
III - A função range() retorna uma lista contendo todos os números do intervalo especificado.
IV - É possível usar a instrução break para interromper a execução de um loop antes que ele 
percorra todos os elementos ou repetições.
É correto o que se afirma em:
a) I, apenas.
b) II e IV, apenas.
c) III e IV, apenas.
d) I, II e III, apenas.
e) I, II, III e IV.
AUTOATIVIDADE
1
1
8
3. Durante o estudo de estruturas de repetição em Python, é importante conhecer não apenas 
os comandos for e while, mas, também, alguns recursos adicionais que tornam o código 
mais flexível e legível. O uso apropriado desses comandos torna os programas muito mais 
eficientes e eficazes.
Analise as afirmativas a seguir:
I - É possível usar um for diretamente em um dicionário, para percorrer apenas suas chaves.
II - Loops podem conter um bloco else, que será executado apenas se o loop terminar nor-
malmente, sem o uso de break.
III - É possível criar loops aninhados, isto é, um loop dentro de outro, para percorrer estruturas 
bidimensionais como matrizes.
IV - Os loops aninhados podem ser de tipos diferentes
É correto o que se afirma em:
a) I, apenas.
b) II e IV, apenas.
c) III e IV, apenas.
d) I, II e III, apenas.
e) I, II, III e IV.
AUTOATIVIDADE
1
1
9
REFERÊNCIAS
ARAÚJO, S. de. Lógica de programação e algoritmos. Curitiba: Contentus, 2020.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de Programação: a construção de algorit-
mos e estruturas de dados. 2. ed. São Paulo: Prentice Hall, 2005.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos: lógica para desenvolvimento de programa-
ção de computadores. 29. ed. São Paulo: Érica, 2019.
PAIVA, F. et al. Introdução a Python com aplicações de sistemas operacionais. Rio Grande do 
Norte: IFRN, 2020. Disponível em: https://memoria.ifrn.edu.br/bitstream/handle/1044/2090/EBOOK%20-%20INTRODUÇÃO%20A%20PYTHON%20%28EDITORA%20IFRN%29.pdf?sequen-
ce=1&isAllowed=y. Acesso em: 10 set. 2025.
1
1
1
1. Alternativa E. O laço com controle condicional pré-teste realiza um teste lógico antes de 
ser executado.
Alternativa A: está errada, pois o laço infinito pode acontecer tanto com testes lógicos como 
sem testes lógicos. 
Alternativa B: está errada, pois o “laço interrompido” pode ser com pré ou pós-teste, portanto 
não tem a ver se há um teste antes ou depois.
Alternativa C: está errada, pois o “laço sem controle” não existe, do ponto de vista prático.
Alternativa D: está errada, pois o laço com cláusula de repetição determinada não realiza 
teste lógico na sua escrita. 
2. Alternativa B. Apenas as afirmativas II e IV estão corretas. 
Afirmativa I está errada — o while é mais indicado quando não sabemos exatamente o número 
de repetições, usando uma condição lógica.
A afirmativa II está correta — o for, em Python, percorre qualquer objeto iterável.
A afirmativa III está errada — range() retorna um objeto do tipo range, não uma lista (apesar 
de se comportar como uma sequência de números).
A afirmativa IV está correta — break encerra o loop de imediato, independentemente de 
haver mais elementos a percorrer.
3. Alternativa E. Todas as afirmativas estão corretas.
A afirmativa I é verdadeira, pois é possível usar for diretamente em um dicionário para per-
correr apenas suas chaves.
A afirmativa II está correta, pois loops podem conter um bloco else que será executado 
apenas se o loop terminar normalmente, sem o uso de break.
A afirmativa III está correta, pois é possível criar loops aninhados, isto é, um loop dentro de 
outro, para percorrer estruturas bidimensionais como matrizes.
A afirmativa IV está correta, pois os loops aninhados podem ser de tipos diferentes. 
GABARITO
1
1
1
MINHAS METAS
CRIAÇÃO DE SUBPROGRAMAS: 
PROCEDIMENTOS E FUNÇÕES
Compreender o conceito de subprogramas.
Aplicar subprogramas para organizar e modularizar programas.
Criar subprogramas com o uso de procedimentos e funções.
Diferenciar procedimentos e funções.
Utilizar a passagem de parâmetros em funções e procedimentos.
Analisar o escopo de variáveis globais e locais.
Exemplificar o uso de procedimentos e funções em programas.
T E M A D E A P R E N D I Z A G E M 9
1
1
1
INICIE SUA JORNADA
Olá, estudante! No dia a dia da programação, não é raro nos depararmos com 
desafios que parecem maiores do que conseguimos resolver. Por exemplo, à 
primeira vista, pode parecer simples o caso de um restaurante que precisa in-
formatizar o seu atendimento para organizar cadastros de clientes e reservas de 
mesas. No entanto, logo, percebemos que isso envolve muitas etapas, decisões e 
detalhes a serem considerados.
VOCÊ SABE RESPONDER?
Diante disso, surge uma questão importante: como transformar um problema tão 
amplo em algo possível de ser desenvolvido? 
É nesse ponto que a organização do raciocínio e a divisão de tarefas ganham 
significado. Para atuar na área de programação, é fundamental aprender a estru-
turar soluções que sejam claras, funcionais e fáceis de manter, exatamente como 
o mercado de trabalho exige de um bom profissional.
Agora, imagine que você é o responsável por desenvolver esse sistema do 
restaurante, por onde começaria? Quais operações precisariam existir? Talvez, 
cadastrar um novo cliente, atualizar informações, consultar reservas ou excluir 
um registro. Ao pensar nessas pequenas partes, iniciamos o exercício de trans-
formar um grande desafio em etapas menores e mais compreensíveis. Anote 
suas ideias em uma folha e, ao final deste tema, retome-as para comparar com o 
que você aprendeu aqui. Observe quais conceitos se mantiveram e quais novas 
perspectivas surgiram após os conhecimentos obtidos a partir deste material. 
A programação não é apenas escrever códigos longos, mas aprender a or-
ganizar ideias e transformá-las em soluções práticas. Ao longo desta jornada, 
você descobrirá que dividir problemas complexos em partes menores pode fa-
cilitar o seu trabalho e abrir caminhos para você se tornar um profissional cada 
vez mais preparado. Vamos em frente?
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 9
DESENVOLVA SEU POTENCIAL
Se, na etapa anterior, você imaginou como organizar um pequeno sistema, agora 
podemos ampliar essa ideia para sistemas maiores, que exigem ainda mais or-
ganização e planejamento. Observar como grandes aplicações são estruturadas 
ajuda a compreender a lógica por trás dos subprogramas e a importância de 
planejar cada parte do programa de forma eficiente.
Os sistemas de informação, na sua maioria, são complexos, grandes e tra-
zem muitas funcionalidades. Um exemplo é um sistema de plano de saúde, que 
tem clientes, hospitais, prestadores de serviço, internações, pagamentos, cober-
turas, entre outros. Portanto, é necessário desenvolver operações de cadastro, 
alteração, exclusão e relatórios sobre cada um desses itens. É necessário cadastrar 
os clientes, os prestadores, os procedimentos e qualquer item que faça parte do 
universo dos planos de saúde.
VAMOS RECORDAR?
Para utilizar bem as variáveis em subprogramas na 
linguagem Python, é importante relembrar como 
declará-las e quais são os tipos de dados permitidos. 
Que tal assistir a um vídeo sobre isso? 
Após aprender uma linguagem de programação, é comum 
surgir a dúvida sobre o que seria necessário estudar para apro-
fundar os seus conhecimentos. Que tal ouvir um podcast sobre 
isso? Aperte o play!
PLAY N O CONHECIMENTO
1
1
1
A mesma coisa acontece com um sistema bancário. Por exemplo, um sistema 
de controle de conta corrente tem procedimentos como abertura de conta, de-
pósitos, saques, consultas e transferências. Cada uma dessas operações costuma 
demandar a criação de programas específicos para funcionar de forma adequada.
Não faz sentido, nesses casos, construir um único programa que faz tudo de 
uma só vez — ele ficaria grande demais e a manutenção dele seria extremamente 
complexa e difícil. O ideal, então, seria dividir esse programa em partes menores, 
em que cada parte tem uma responsabilidade.
Essa é a proposta dos subprogramas, dos quais falaremos a seguir.
SUBPROGRAMAS
Manzano e Oliveira (2019, p. 482) afirmam que: “Módulo ou subprograma é 
um bloco de programa que pode efetuar operações computacionais de entrada, 
processamento e saída”. Dessa forma, ao dividir um problema complexo em mó-
dulos, usamos a ideia de abstração.
Ainda, conforme os autores, o uso de subprogramas permite pegar um grande 
problema e dividi-lo em pequenas partes. Resolvendo as partes menores de um 
problema, obtém-se a solução do todo. A ideia, nessa abordagem, chamada de 
modularidade, é dividir para conquistar.
A noção de modularidade, segundo Castilho, Silva e Weingaertner (2020), 
está relacionada com a capacidade de escrever programas em pedaços de códi-
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 9
go, que executam operações bem definidas. Essa modularidade é implementada 
com o uso de procedimentos e funções.
Ainda conforme Castilho, Silva e Weingaertner (2020, p. 141), “os procedimentos e 
funções não são nada mais que subprogramas, isto é, pedaços de programas dentro 
de programas”. Em outras palavras, os subprogramas funcionam como blocos que 
podem ser combinados para formar sistemas complexos, mantendo cada parte 
com uma função clara e específica. O uso deles permite a construção de programas 
altamente sofisticados e complexos. 
Conhecer procedimentos e funções é absolutamente fundamental para qualquer 
profissional que trabalhe na área de programação. Por isso, a seguir, veremos, 
primeiramente, as funções.
FUNÇÕES
Funções são subprogramas que retornam um valor, como afirmam Forbellone e 
Eberspächer (2005). Na prática, a função é um “prestador de serviços”, que recebe 
valores e retorna também um valor. Para deixar mais claro, podemos utilizar uma 
situação comum e bem prática: calcular a média de duas notas, de 0 a 10, do tipo 
real. As notas são representadaspelas variáveis N1 e N2. A média, portanto, seria 
calculada da seguinte forma: M = (N1 + N2)/2.
É possível perceber que a média (nesse caso, que tem dois números) é 
calculada a partir de dois valores, representados pelas variáveis N1 e N2. Além 
disso, como as notas são do tipo real, logo, a média também será um número real.
Esse tipo de cálculo é muito comum, e muitos programas usam cálculos de 
média. Seria natural, portanto, construir algum tipo de subprograma que pudesse 
ser acionado por outros programas sempre que necessário.
Portanto, um subprograma que faz esse tipo de cálculo tem a função de re-
ceber dois valores reais e trazer, como resultado, um valor real. Como a própria 
explicação sugere, esse tipo de operação é feito por funções.
E como seria a criação dessa função? Vejamos um exemplo no VisuAlg.
1
1
1
O programa começa com o nome “CalculoMedia”, apenas para identificar. Em 
seguida, declaramos três variáveis chamadas n1, n2 e “resultado”, que servem 
como caixinhas para guardar números com vírgula, já que as notas podem ser, 
por exemplo, 7.5 ou 8.0.
Nesse exemplo, criamos uma função chamada “media”. Você pode imaginar a 
função como uma receita: você dá dois ingredientes, e ela entrega o prato pronto 
— que, aqui, seria a média.
No programa principal, o computador mostra uma mensagem pedindo para 
o usuário digitar a primeira nota e guarda o valor digitado dentro da variável 
“n1”. Em seguida, faz a mesma coisa para a segunda nota, guardando em “n2”.
Com as duas notas em mãos, o programa chama a função “media”, passando 
“n1” e “n2” como valores. A função faz o cálculo e devolve o resultado, que é 
guardado na variável “resultado”. Por fim, o programa mostra, na tela, a frase “A 
média das notas é:”, seguida do valor calculado, exibindo o número sempre com 
duas casas decimais, para ficar mais organizado, como 7.50.
algoritmo “CalculoMedia”
// Programa que recebe duas notas e calcula a média usando função
var
n1, n2, resultado: real
funcao media(a: real, b: real): real
inicio
retorne (a + b) / 2
fimalgoritmo
inicio
escreval(“Digite a primeira nota: “)
leia(n1)
escreval(“Digite a segunda nota: “)
leia(n2)
resultado = 7) entao
retorne “aprovado”
senao
retorne “final”
fimse
fimalgoritmo
inicio
escreval(“Digite a primeira nota: “)
leia(n1)
escreval(“Digite a segunda nota: “)
leia(n2)
resultado = 7:
 return “aprovado”
 else:
 return “final”
# Programa principal
n1 = float(input(“Digite a primeira nota: “))
n2 = float(input(“Digite a segunda nota: “))
resultado = situacao(n1, n2)
print(“O aluno está:”, resultado)
A PR OFUNDANDO
Você acha que usar procedimentos e funções simplifica ou aumenta a comple-
xidade do programa? Seria melhor fazer um programa enorme, de uma vez, ou 
dividir em blocos menores?
PE N SA N DO JUNTOS
UNIASSELVI
1
1
9
TEMA DE APRENDIZAGEM 9
Agora que vimos as funções, é hora de conhecermos os procedimentos. Embora 
eles se pareçam, existe uma diferença importante, que aprenderemos a seguir.
PROCEDIMENTOS
Conforme Paiva et al. (2020), na programação de computadores, é comum usar 
os procedimentos, que são blocos de código criados para executar uma tarefa 
específica, mas que não retornam um valor. Assim como as funções, eles servem 
para organizar melhor o programa. Além disso, ajudam a evitar repetições e 
facilitam a compreensão do código.
Existe uma diferença fundamental entre procedi-
mento e função: a função devolve um resultado, 
enquanto o procedimento apenas realiza ações, ou 
seja, o procedimento não retorna um valor. A seguir, 
temos um exemplo no VisuAlg:
A função devolve um 
resultado, enquanto 
o procedimento 
apenas realiza ações
1
1
1
Vejamos agora uma explicação do funcionamento desse programa:
 ■ O programa em VisuAlg começa pedindo que o usuário digite o nome, 
que é armazenado em uma variável chamada “nome”. 
 ■ Em seguida, o programa chama o procedimento “boasvindas”, que recebe 
essa denominação como parâmetro. 
 ■ Dentro do procedimento, o comando “escreval” é utilizado para exibir, 
na tela, a mensagem: “Seja bem-vindo”, seguida do nome digitado pelo 
usuário. 
 ■ Quando essa tarefa termina, o procedimento é finalizado com o comando 
“fimprocedimento”. 
 ■ Já o “fimalgoritmo” marca o encerramento do programa principal. 
Assim, o procedimento funciona como uma pequena parte do código, que exe-
cuta uma ação específica — nesse caso, mostrar a mensagem de boas-vindas, sem 
retornar nenhum valor. Vejamos esse mesmo exemplo em Python:
#algoritmo “ExemploProcedimento”
var
nome: caractere
procedimento boasvindas(n: caractere)
inicio
escreval(“seja bem-vindo, “, n, “!”)
fimprocedimento
inicio
escreval(“digite seu nome: “)
leia(nome)
boasvindas(nome) // chamada do procedimento
fimalgoritmo
A PR OFUNDANDO
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 9
No exemplo em Python, o programa define primeiro uma função chamada 
“boas_vindas”, que recebe, como parâmetro, o nome da pessoa. Dentro dessa 
função, há um comando “print”, que mostra a mensagem “Seja bem-vindo” e o 
nome digitado. Depois, no programa principal, o comando “input” é usado para 
pedir que o usuário informe o nome. Esse valor é guardado na variável nome 
e, em seguida, a função “boas_vindas” é chamada, passando essa variável como 
argumento. Quando a função é executada, ela exibe a mensagem de boas-vindas 
na tela e termina sua execução. Assim como no VisuAlg, essa função não retorna 
nenhum valor, apenas executa uma ação.
Se compararmos as duas linguagens, perceberemos o seguinte: tanto no VisuAlg 
quanto no Python a ideia é a mesma: criar um bloco de código que execute uma 
ação específica quando for chamado — essa é a função desse procedimento.
No VisuAlg, esse bloco recebe o nome de procedimento, enquanto, no 
Python, é definido como uma função. Em ambos os casos, o usuário digita um 
nome, esse valor é guardado em uma variável e, depois, passado como parâmetro 
para o procedimento ou a função.
O procedimento em VisuAlg utiliza o comando “escreval” para mostrar a 
mensagem de boas-vindas, enquanto,no Python, essa mesma tarefa é feita com 
o comando “print”.
Outra diferença é no fechamento: no VisuAlg, o procedimento é encerrado 
com “fimprocedimento” e o programa principal com “fimalgoritmo”; já no Python, 
o bloco da função é delimitado pela indentação, sem precisar de palavras-chave 
extras para fechar.
#algoritmo “ExemploProcedimento”
def boas_vindas(nome):
print(f”Seja bem-vindo, {nome}!”)
# Programa principal
nome = input(“Digite seu nome: “)
boas_vindas(nome) # chamada do procedimento
A PR OFUN DANDO
1
1
1
Apesar dessas diferenças de sintaxe, o funcionamento é equivalente: ambos 
recebem um dado de entrada, executam uma tarefa e exibem a mensagem, sem 
precisar retornar um valor.
Em ambos os casos, o procedimento recebe, ao ser chamado, uma variável, 
denominada de parâmetro do procedimento, que funciona da mesma forma que 
nas funções. A seguir, conheceremos esse importante conceito.
VARIÁVEIS EM FUNÇÕES E PROCEDIMENTOS
As funções e os procedimentos utilizam variáveis em mais de um local. Conforme 
você pôde perceber nos nossos exemplos, existem variáveis tanto no cabeçalho da 
função e do procedimento quanto no próprio corpo da função, que são chamadas 
informalmente de “variáveis de trabalho” ou parâmetros. 
Da mesma forma, esses parâmetros recebem valores. A própria função ou o pro-
cedimento possuem variáveis no seu corpo. A seguir, temos uma descrição dessas 
variáveis, conforme Forbellone e Eberspächer (2005): 
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 9
Variáveis de parâmetros
Conforme Forbellone e Eberspächer (2005), em funções e procedimentos, as 
variáveis de parâmetros são utilizadas para permitir que esses blocos de código 
recebam valores externos e trabalhem com eles. Em outras palavras, elas funcio-
nam como “portas de entrada” que levam dados até a função ou o procedimento, 
possibilitando que a mesma estrutura de código seja reaproveitada em diferentes 
situações. Por exemplo, em um procedimento de boas-vindas, o parâmetro pode 
ser o nome da pessoa; assim, cada vez que o procedimento for chamado, ele exi-
birá a mensagem personalizada de acordo com o valor recebido. 
Esse mecanismo traz flexibilidade e evita repetição de código, já que não 
é necessário escrever várias versões de uma mesma função ou procedimento 
para tratar valores diferentes. Além disso, os parâmetros ajudam a organizar o 
programa, deixando claras quais informações cada parte do código precisa para 
funcionar corretamente. 
PARÂMETROS
São as variáveis definidas na declaração do procedimento ou da função, que funcionam 
como “espaços reservados” para os dados.
ARGUMENTOS
São os valores que você passa para esses parâmetros no momento que chama o pro-
cedimento ou a função.
VARIÁVEIS LOCAIS
São aquelas usadas na função ou no procedimento.
VARIÁVEIS GLOBAIS
São aquelas que já existem dentro do próprio programa, podendo ser utilizadas tam-
bém dentro das funções ou dos procedimentos.
1
1
1
Dessa forma, o uso de variáveis de parâmetros é fundamental para tornar os 
programas mais modulares, reutilizáveis e fáceis de compreender.
#algoritmo “ExemploProcedimento”
var
nome: caractere
procedimento boasvindas(n: caractere)
inicio
escreval(“seja bem-vindo, “, n, “!”)
fimprocedimento
inicio
escreval(“digite seu nome: “)
leia(nome)
boasvindas(nome) // chamada do procedimento
fimalgoritmo
A PR OFUNDANDO
Observando o código apresentado nesse exemplo, é possível perceber que, no 
cabeçalho (a primeira linha do procedimento), temos o trecho “(n:caractere)”. 
Nesse trecho, o VisuAlg informa que o procedimento “boasvindas” vai receber 
uma variável de nome “n”, cujo conteúdo é caractere, ou seja, texto. Essa variá-
vel fica disponível para uso dentro do próprio procedimento, o que significa 
que ela está disponível apenas para o procedimento. Também temos a variável 
“nome”, que está fora do procedimento. Elas possuem importantes diferenças, 
como abordaremos a seguir.
Variáveis locais e globais
Voltando ao código exibido anteriormente, foi possível ver as variáveis “n” e 
“nome”. Cada uma tem particularidades. Começaremos explorando a variável 
“n”, que está definida no cabeçalho do procedimento.
Ao ser colocada no cabeçalho, ao lado do nome do procedimento, o progra-
ma entende que ela pertence exclusivamente ao procedimento, ou seja, ela só 
pode ser acessada dentro dele.
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 9
Se formos referenciar essa mesma variável fora do procedimento, o progra-
ma dará erro. O motivo disso é que “n” é uma variável local, ou seja, só pode 
ser acessada dentro do procedimento. Isso é bem diferente do caso da variável 
“nome”, definida no próprio algoritmo. Variáveis como “nome” são chamadas de 
globais, estando disponíveis para acesso em todas as partes do código/programa 
(Araújo, 2020).
Essa diferença entre local e global é chamada de “escopo da variável” 
(Forbellone; Eberspächer, 2005).
Portanto, é muito importante definir, com cuidado, as variáveis das funções e 
dos procedimentos existentes nelas. O uso incorreto pode causar vários problemas.
Vejamos um exemplo simples em Python.
# Variável global
mensagem = “Sou uma variável global!”
def exemplo():
 # Variável local (existe só dentro da função)
 mensagem = “Sou uma variável local!”
 print(“Esta impressão está sendo feita dentro da função:”, mensagem)
# Chamando a função
exemplo()
# Fora da função, a variável global continua valendo
# A variável local não tem como ser acessada.
# Portanto, a mensagem tem o valor da variável global
print(“Esta impressão está sendo feita fora da função:”, mensagem)
A PR OFUN DANDO
É importante entendermos esse código e o comportamento das variáveis locais e 
globais. Antes da função, criamos uma variável chamada de mensagem e damos 
o valor “Sou uma variável global!”. Como está fora de qualquer função, ela é glo-
bal, ou seja, pode ser usada em qualquer parte do programa. Dentro da função 
“exemplo()”, criamos outra variável com o mesmo nome (mensagem) e damos 
o valor “Sou uma variável local!” — esta só existe dentro da função e, por isso, é 
1
1
1
chamada de local. Quando chamamos “exemplo()”, o Python usa a variável local 
e, por isso, aparece “Sou uma variável local!”. Contudo, quando usamos um print 
fora da função, o Python volta a usar a variável global e, por isso, aparece “Sou 
uma variável global!”. Em resumo: uma variável só funciona dentro da função ou 
do procedimento, enquanto uma variável global funciona em todo o programa.
Portanto, antes mesmo de construir uma função ou um procedimento, ana-
lise com cuidado quais variáveis serão necessárias e qual será a sua visibilidade. 
Com isso, você poderá construir programas extremamente eficientes, claros e 
com desempenho satisfatório.
Utilizar, de forma adequada, a visibilidade de variáveis é funda-
mental para construir programas altamente eficientes. Que tal 
aprofundarmos esse assunto assistindo a um vídeo sobre variá-
veis locais e globais em Python?
E U I N DI CO
Agora que você conheceu todos esses conceitos, vejamos as indicações de filme 
e livro, para consolidar seus conhecimentos de programação.
Jogos de Guerra – o dia do computador (War Games)
Indicamos um filme fantástico, lançado em 1983, dirigido por 
John Badham. É antigo, mas, ainda assim, muito atual, uma vez 
que a história gira em torno de um jovem programador que, 
acidentalmente, invade um sistema militar dos Estados Unidos 
e, por pouco, não inicia uma guerra mundial. Esse filme mistura 
programação, espionagem, tecnologia em geral e ética, susci-
tando discussões sobre o poder e o perigo da programação. O 
filme é incrível!
I N DI CAÇÃO DE FILME
UNIASSELVI
1
1
1
TEMA DE APRENDIZAGEM 9
Para finalizar da melhor forma possível, recomendamos, ainda, uma aula muito 
especial.
Fortaleza Digital
Ainda sobre os perigos da programação, esse livro, de Dan 
Brown, publicado em 1998, é um thriller de ficção, em que a 
NSA enfrenta uma ameaça de segurança envolvendo um 
algoritmo de criptografia inquebrável, colocando em riscoa 
segurança nacional. A trama mistura espionagem, tecnologia 
e suspense, explorando as implicações de falhas nos sistemas 
de segurança digital. Imperdível!
I N DI CAÇÃO DE L IVRO
NOVOS DESAFIOS
Estudante, finalizamos mais este tema, em que vimos importantes conceitos so-
bre o uso de modularização em programas de computadores, como as funções 
e os procedimentos e como dividir um programa em partes, simplificando o 
funcionamento e a compreensão dele. Conhecemos diversos exemplos de uso e 
o quanto é relevante entender como cada uma funciona, para podermos cons-
Estudante, para expandir seus conhecimentos sobre o assunto 
abordado, gostaríamos de lhe indicar a aula que preparamos espe-
cialmente para você. Acreditamos que essa aula irá complementar 
e aprofundar ainda mais o seu entendimento sobre o tema.
E M FOCO
1
1
8
truir programas altamente eficientes. Esse é um assunto extremamente relevante, 
que está ligado a diversas áreas, como ciência de dados, inteligência artificial e 
sistemas computacionais em geral. 
A possibilidade de aplicações é vasta, como em sistemas comerciais, pessoais, 
financeiros, de produtividade e muitos outros. Em sua carreira como futuro pro-
fissional da área de programação, analista, profissional de inteligência artificial, 
de infraestrutura ou qualquer área da informática, certamente, você encontrará 
muitos sistemas do tipo para desenvolver ou realizar manutenções. 
Nesse sentido, as funções e os procedimentos estarão presentes em todos os 
sistemas, cujo uso eficiente é um grande diferencial para qualquer profissional 
da área. Portanto, o que você aprendeu fará muita diferença em sua carreira 
profissional na área de tecnologia da informação. No entanto, sempre é impor-
tante lembrar: o estudo não para aqui. Continue pesquisando, aprendendo e se 
aperfeiçoando.
Siga em frente: estude, aprenda e se dedique! O mundo maravilhoso da in-
formática espera por você!
Um abraço e sucesso na sua carreira!
UNIASSELVI
1
1
9
1. Com o aumento da complexidade dos sistemas, é natural que estes fiquem cada vez maio-
res. Para contemplar a necessidade de dividir programas em módulos menores, há um 
particionamento do código de acordo com cada funcionalidade que se deseja implementar. 
Essa construção é extremamente importante para construir programas mais eficientes.
A subdivisão de programas em módulos é feita de modo a estruturar melhor o funcionamen-
to dos programas e a construção de sistemas computacionais eficientes e eficazes. Para isso, 
são usados recursos que dividem o programa em partes, que podem, inclusive, ser feitas 
por profissionais diferentes. Essas partes são chamadas, tecnicamente, de:
a) Compiladores.
b) Executáveis.
c) Subprogramas.
d) CSS.
e) HTML.
2. A divisão de programas em partes, com o uso de subprogramas, é uma técnica importante 
que facilita o processo de engenharia de software. Por isso, é largamente usada, uma vez 
que permite várias medidas de melhoria de desempenho e qualidade no desenvolvimento 
de software. Tem uso altamente recomendado no dia a dia da programação.
O uso de subprogramas é implementado a partir de recursos específicos e depende do 
fato de que aquele recurso pode ou não retornar um valor após ser chamado. Do ponto de 
vista prático, existem dois recursos utilizados para implementar os subprogramas. Para cada 
situação, há um recurso apropriado para viabilizar a implementação da subprogramação. 
Esses recursos são:
a) HTML e CSS.
b) Procedimentos e funções.
c) Compiladores e executáveis.
d) Código binário e html.
e) Código fonte e CSS.
AUTOATIVIDADE
1
1
1
3. O uso de modularização tem, por finalidade, dividir os programas em módulos, que servem 
para realizar atividades específicas, de acordo com as necessidades e a complexidade do 
programa. Em muitos casos, essa divisão permite uma construção em paralelo, por equipes, 
dos módulos que serão necessários para o funcionamento.
Entre os tipos de módulos, existem situações em que um módulo pode ou não retornar va-
lores. Isso varia de caso para caso. Às vezes, é necessário retornar um valor, mas, em outras 
situações, não; portanto, o uso depende do problema que se quer resolver. Por exemplo, 
pode-se usar um módulo apenas para mostrar um cabeçalho de sistemas. Nesse caso, o 
recurso mais apropriado é:
a) Compilador.
b) Gerador de bytecode.
c) Código fonte.
d) Função.
e) Procedimento.
AUTOATIVIDADE
1
1
1
REFERÊNCIAS
ARAÚJO, S. de. Lógica de programação e algoritmos. Curitiba: Contentus, 2020.
CASTILHO, M. A.; SILVA, F.; WEINGAERTNER, D. Algoritmos e estruturas de dados 1. Curitiba: 
UFPR, 2020. Disponível em: https://www.inf.ufpr.br/marcos/livro_alg1/livro_alg1.pdf. Acesso 
em: 19 set. 2025. 
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de Programação: a construção de algorit-
mos e estruturas de dados. 2. ed. São Paulo: Prentice Hall, 2005.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos: lógica para desenvolvimento de programa-
ção de computadores. 29. ed. São Paulo: Érica, 2019.
PAIVA, F. et al. Introdução a Python com aplicações de sistemas operacionais. Rio Grande do 
Norte: IFRN, 2020. Disponível em: https://memoria.ifrn.edu.br/bitstream/handle/1044/2090/
EBOOK%20-%20INTRODUÇÃO%20A%20PYTHON%20%28EDITORA%20IFRN%29.pdf?sequen-
ce=1&isAllowed=y. Acesso em: 10 set. 2025.
1
1
1
1. A alternativa C. Subprogramas são partes menores de um programa maior. Podem ser funções 
ou procedimentos que realizam uma tarefa específica.
A alternativa A está incorreta, pois compiladores são programas que traduzem o código 
que você escreve (em linguagens como C, Java etc.) para a “linguagem de máquina”, que o 
computador entende.
A alternativa B está incorreta, pois executáveis são os programas prontos para rodar no 
computador, depois que o compilador traduziu o código. 
A alternativa D está incorreta, pois CSS (Cascading Style Sheets) é uma linguagem usada para 
dar estilo às páginas da web. Com o CSS, você define cores, fontes, tamanhos e até animações. 
A alternativa E está incorreta, pois HTML (HyperText Markup Language) é a linguagem usada 
para estruturar páginas da web. Ele organiza o conteúdo em títulos, parágrafos, imagens, 
links, tabelas etc. 
2. Alternativa B. Procedimentos e funções são usados para implementar subprogramas.
A alternativa A está incorreta, pois HTML e CSS são usadas para construção de sites, e não 
necessariamente relacionados a subprogramas.
A alternativa C está incorreta, pois compiladores e executáveis são programas que traduzem 
o código que você escreve e geram o código compilado em si.
A alternativa D está incorreta, pois código binário e HTML se referem a programas em lin-
guagem com 0 e 1 e linguagem de marcação, não se relacionando necessariamente com 
subprogramas.
A alternativa E está incorreta, pois código-fonte e CSS se referem às linhas de programa e 
folhas de estilo, não necessariamente relacionados a subprogramas.
3. A alternativa E. Procedimento é parecido com a função, mas não devolve um resultado 
direto; ele executa uma ação.
A alternativa A está incorreta, pois compiladores são programas que traduzem o código 
que você escreve (em linguagens como C, Java etc.) para a “linguagem de máquina”, que o 
computador entende. 
A alternativa B está incorreta, pois gerador de bytecode é um tipo especial de compilador 
que não traduz direto para a linguagem de máquina, mas, sim, para um código intermediário 
chamado de bytecode. Esse bytecode depois é interpretado por uma máquina virtual (como 
a JVM no Java). 
A alternativa C está incorreta, pois código-fonte é o programa que você escreve na linguagem 
de programação, antes de ser traduzido.
A alternativa D está incorreta, pois função é um subprograma que realiza uma tarefa específica 
e sempre devolve um resultado. O caso proposto não devolve resultados. 
GABARITO
1
1
1
MINHAS ANOTAÇÕES
1
1
1
	unidade 1
	INTRODUÇÃO E CONCEITOS
DE ALGORITMOS
	LINGUAGEM DE
PROGRAMAÇÃO PYTHON
	CONCEITOS BÁSICOS DE LÓGICA, TABELA VERDADE, DADOS E INSTRUÇÕESAs palavras-chave estão destacadas com cores, o que é comum em 
ambientes de programação, para facilitar a leitura e a identificação dos comandos. Fim da descrição.
Quer saber mais sobre a forma de licenciamento do VisuAlg?
E U I N DI CO
1
1
Agora que você já aprendeu a instalar e a usar o VisuAlg, que tal conhecermos 
os passos necessários para a construção de algoritmos, ou seja, as etapas para a 
construção de um algoritmo computacional? 
ETAPAS DA CONSTRUÇÃO DE 
UM ALGORITMO COMPUTACIONAL
A construção de algoritmos deve seguir uma ordem apropriada, que reflita os 
passos exatamente como devem ser organizados. Para exemplificar, começare-
mos com um problema e, em seguida, construiremos um algoritmo que imple-
menta a solução. 
Supondo que eu tenho duas notas e quero calcular a média. Então, para isso, 
eu preciso:
• receber as duas notas via teclado;
• calcular a média; e
• exibir a média.
Na prática, temos os seguintes passos: entrada, processamento e saída. É neces-
sário identificar a entrada, o processamento e a saída, e construir um algoritmo 
que responda a essa necessidade.
A entrada é o recebimento das notas, o processamento é o cálculo da média, 
e a saída é a exibição da média. Vejamos como isso pode ser implementado no 
VisuAlg (aproveite que já conhece o VisuAlg e teste, também, no seu computador): 
Algoritmo “Média”
Var
 nota1, nota2, media: real
Inicio
 Escreval(“informe a primeira nota”)
leia(nota1)
 Escreval(“informe a segunda nota”)
leia(nota2)
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
media := (nota1 +nota2)/2
Escreval(“A média é ”, media)
fimalgoritmo
Vamos analisar cada comando? Os de entrada (leia) e saída (escreval) você já 
conhece. Contudo, tem algumas coisas diferentes. Uma delas é o comando:
media := (nota1 +nota2)/2 
Esse é um “comando de atribuição”, que calcula a média da primeira com a 
segunda nota, e atribui à variável média. No caso do VisuAlg, o comando de 
atribuição é “:=”, ou seja, dois pontos igual. Em algumas linguagens, basta usar 
o “=”. Ao conhecer as linguagens, é importante saber a forma como escrever os 
comandos, o que chamamos de “sintaxe” da linguagem. 
Podemos notar, pelos exemplos exibidos, que as etapas necessárias para cons-
truir um algoritmo são: 
• identificar as entradas;
• identificar as variáveis;
• identificar o processamento;
• identificar as saídas;
• construir o algoritmo;
• testar o algoritmo;
• realizar os ajustes necessários; e
• verificar se o programa funciona corretamente (se sim, encerrar).
Estudante, coloque esse exemplo no VisuAlg e teste-o. Essa é uma forma bastante 
eficiente de aprender programação.
Você notou que uma das formas de descrever um algoritmo é usando o texto 
simples? Sabia que existem outras formas? É o que falaremos a seguir. 
1
1
REGRAS E FORMAS DE APRESENTAÇÃO DE ALGORITMOS
Basicamente, existem quatro formas de representar os algoritmos: fluxogramas, 
pseudocódigo, descrição narrativa e diagrama de Chapin. Você já conhece duas 
delas: o pseudocódigo e a descrição narrativa. A seguir, veremos os fluxogra-
mas, que possuem diversas aplicações não somente na programação, e o Dia-
grama de Chapin. 
Fluxogramas
Você já ouviu a frase “uma imagem vale mais do que mil palavras”? É assim 
com os fluxogramas, que são diagramas gráficos usados em muitas aplicações 
e muito úteis na programação. Eles são constituídos de alguns elementos visuais, 
que facilitam o entendimento de um fluxo qualquer de ações.
O fluxograma é uma representação gráfica, que utiliza formas geométricas, 
ligadas por setas, para indicar fluxo, ações (instruções) e decisões que deverão 
ser seguidas para resolver um problema (Guedes, 2014).
Existem fluxogramas de programação, de processos, de negócios, de siste-
mas... Você pode usá-los até para uma receita de sanduíche, como a que vimos 
neste tema de aprendizagem — que tal transformá-la em um fluxograma? Para 
efeitos de simplificação, podemos deixá-la assim:
• separar ingredientes;
• montar o sanduíche;
• verificar o micro-ondas:
 o se estiver ligado na tomada elétrica, siga para os passos seguintes;
 o se não estiver ligado na energia elétrica, coloque-o na tomada e siga 
para os passos seguintes;
• coloque o sanduíche dentro do micro-ondas;
• aqueça-o por 1 minuto;
• abra o micro-ondas e pegue o seu sanduíche;
• fim.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
Podemos representar isso em um fluxograma, conforme mostra a Figura 4.
MICRO-ONDAS
NA TOMADA?
MICRO-ONDAS
Figura 1 – Exemplo de fluxograma para a preparação
de um sanduíche / Fonte: o autor.
Descrição da Imagem: o fluxograma começa com um cír-
culo oval, que contém a palavra “início”. Uma seta aponta 
para baixo e se conecta com um retângulo com a instru-
ção: “separar ingredientes”. A próxima seta leva a outro 
retângulo com a instrução: “montar sanduíche”. Em segui-
da, temos um losango com a pergunta: “micro-ondas na 
tomada?”. A partir dela, há duas saídas: se a resposta for 
“sim”, uma seta leva a um retângulo com a frase: “siga para 
o próximo passo”; se a resposta for “não”, a seta leva a um 
retângulo com a instrução: “ligue-o na tomada”. Ambas as 
setas convergem para o mesmo caminho, que leva a um 
retângulo com a ação: “coloque o sanduíche no micro-on-
das”. Em seguida, outro retângulo traz a instrução: “aque-
ça por 1 minuto”. Depois, um novo retângulo com a frase: 
“pegue o sanduíche”. Por fim, o fluxograma termina com 
um círculo oval contendo a palavra “fim”. Fim da descrição.
O fluxograma permite uma visualização bem fácil do algoritmo. Os retângulos são 
os comandos e os losangos são estruturas de decisão. O algoritmo tem início e fim. 
A seguir, conheceremos o Diagrama de Chapin, que é uma alternativa aos 
algoritmos. 
Diagrama de Chapin
O Diagrama de Chapin permite a visualização do fluxo lógico do algoritmo e tem 
como vantagem o fato de ser menor que os fluxogramas. Na Figura 5, podemos 
ver o mesmo exemplo do sanduíche no Diagrama de Chapin.
1
1
Agora que você já é especialista na representação dos algoritmos, que tal conhe-
cermos algumas das linguagens mais utilizadas atualmente?
LINGUAGENS DE PROGRAMAÇÃO MAIS 
UTILIZADAS ATUALMENTE
Uma pergunta muito comum que todos que começam na programação fazem é: 
“por qual linguagem devo começar?”. A resposta é: depende do caso. Atualmente, 
uma linguagem bastante utilizada e fácil é justamente a linguagem Python. No 
entanto, existem várias outras linguagens — e daremos uma olhada nelas, apre-
sentando as características e o uso comum de cada uma. 
MICRO-ONDAS
MICRO-ONDAS
Figura 1 – Diagrama de Chapin para a preparação de um sanduíche / Fonte: o autor.
Descrição da Imagem: Diagrama de Chapin em preto e branco, que representa o passo a passo do processo de prepa-
ração e aquecimento de um sanduíche no micro-ondas. O conteúdo está organizado em caixas horizontais, dispostas 
em sequência vertical, com linhas conectando os passos. No topo da imagem, há uma caixa com a palavra “início”. 
Abaixo, outra caixa com o passo: “separar ingredientes”. Em seguida: “montar sanduíche”. Depois, o fluxo se divide 
em três triângulos: o primeiro apresentando a pergunta “micro-ondas na tomada?”, o segundo com a palavra “sim” (à 
esquerda) e o terceiro com a palavra “não” (à direita). Se a resposta for “sim”, a próxima caixa diz: “siga para o passo 
seguinte”. Se a resposta for “não”, a caixa seguinte diz: “ligue-o na tomada”. Voltando ao fluxo principal, o próximo 
passo, comum para ambos os caminhos, é “coloque o sanduíche no micro-ondas”. Depois, vem o passo “aqueça por 1 
minuto”. Em seguida, o passo “pegue o sanduíche”. A última caixa contém a palavra “fim”. Fim da descrição.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 1
Python
A linguagem Python tem sido a queridinha da web, e não é sem motivos — 
ao mesmo tempo que é fácil de utilizar, ela é gratuita, de alto nível e com uma 
comunidade mundial extremamente ativa. 
Ela é muito versátil, podendo 
ser utilizada em desenvolvimento 
web, ciência de dados, automação 
e InteligênciaPRIMITIVAS
	unidade 2
	Conceitos e Práticas com Variáveis, Constantes e Estruturas de Dados
	Tipos de Variáveis — Arrays e Collections (ArrayList, List, Set e Map)
	Operadores, expressões aritméticas, Relacionais
e lógicas
	unidade 3
	Comandos de Controle
de Fluxo
	LAÇOS DE REPETIÇÃO
	CRIAÇÃO DE SUBPROGRAMAS: PROCEDIMENTOS E FUNÇÕES
	_Hlk208404425
	_Hlk208700501
	_Hlk208700501
	Button 28: 
	Forms - Uniasselvi: 
	Botão 51: 
	Botão 50: 
	Botão 52: 
	Botão 53: 
	Botão 54: 
	Botão 55: 
	Botão 57: 
	Botão 56:Artificial (IA). Tem 
uma biblioteca padrão extrema-
mente rica, sendo muito popular. 
Introdução à Linguagem Python
Indico esse fantástico livro, que apresenta a linguagem Python 
3 de forma básica e introdutória, para leitores e estudantes de 
programação, em especial aqueles que não possuem conhe-
cimentos prévios da linguagem. Ele mostra os comandos de 
entrada, saída, controle de fluxo e de repetição, além das estru-
turas de armazenamento de dados. Vale a pena!
I N DI CAÇÃO DE L IVRO
Outra linguagem popular é Java, que conheceremos a seguir.
Java
A linguagem Java é orientada a objetos e muito utilizada em 
vários tipos de aplicações, com portabilidade e robustez. É 
uma linguagem fortemente tipada e extremamente utilizada. 
Por fim, vamos ver o C#, que é uma linguagem 
da Microsoft. É claro que existem várias outras, que 
demandariam um capítulo à parte para tratar do assunto, 
como PHP, C e C++, mas a nossa proposta, nesse momento, 
é citar apenas algumas delas.
1
8
Piratas do Vale do Silício
É um filme que mostra as histórias de Bill Gates e Steve Jobs, 
criadores da Microsoft e da Apple, na construção dos primeiros 
computadores caseiros programáveis, assim como a evolução 
da computação e dos computadores pessoais construídos 
com foco no usuário comum. Está disponível facilmente em 
serviços de streaming. Imperdível!
I N DI CAÇÃO DE FILME
Chegamos ao final dessa primeira parte dos nossos estudos. Ainda temos muita 
coisa interessante para aprender! Os algoritmos fazem parte da nossa vida, e com-
preender a estrutura e as aplicações deles nos trazem um conhecimento diferen-
ciado, que torna a programação mais compreensível e mais simples de aprender. 
É um longo caminho, que trilharemos, de forma contínua e segura, para adquirir 
esses conhecimentos tão importantes para a área da tecnologia da informação. 
C#
Criada pela Microsoft como uma concorrente para o Java, 
C# é uma linguagem bastante simples e poderosa, com várias 
semelhanças com outras linguagens. É uma linguagem forte, sendo desenvolvida 
no ambiente .NET, que é extremamente presente no mercado. É multiparadigma, 
de tipagem forte, orientada a objetos, cuja sintaxe foi baseada no C++. 
Agora que conhecemos algumas das linguagens e tivemos uma introdução 
aos algoritmos, que tal assistirmos a um filme ? 
Estudante, para expandir seus conhecimentos sobre o assunto 
abordado, gostaríamos de lhe indicar a aula que preparamos espe-
cialmente para você. Acreditamos que essa aula irá complementar 
e aprofundar ainda mais o seu entendimento sobre o tema.
E M FOCO
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 1
NOVOS DESAFIOS
Finalizamos este tema, em que conhecemos os conceitos básicos de algoritmos, a 
linguagem Portugol e os comandos de entrada e saída, além de conceitos iniciais 
de variáveis. São conhecimentos iniciais, a partir dos quais foi possível começar-
mos a conhecer o fascinante mundo da programação. 
Embora básicos, esses conceitos são fundamentais para entendermos como 
funcionam os programas, que são os elementos principais das áreas de análise 
de sistemas e programação de computadores, cujo mercado de trabalho tem 
muitas oportunidades, em uma crescente necessidade de profissionais com co-
nhecimento de programação, para as mais diversas finalidades. É um mercado 
desafiador, mas, ao mesmo tempo, muito promissor, que, atualmente, tem mais 
vagas do que profissionais preparados para atuar. 
Se você gosta do assunto, aproveite essa oportunidade para crescer profissio-
nalmente, pois se trata de um mercado cujos salários são bastante bons, com uma 
larga faixa de oportunidades para todas as idades. Esse cenário não é apenas no 
Brasil, mas em todo o mundo. Que tal seria você atuar para empresas estrangeiras 
diretamente daqui do Brasil, recebendo salário em dólar ou euro? 
Por esse motivo, continue estudando esse tema incrível, que é a programação 
de computadores. Instale o VisuAlg no seu computador, utilize os exemplos deste 
material, teste e procure potencializar o seu aprendizado da melhor forma que 
existe para aprender programação: praticando. Esse é apenas o começo da sua 
jornada na programação de computadores. Há muitos recursos disponíveis que 
podem complementar seus estudos, como vídeos com exemplos práticos em 
VisuAlg. Explorar diferentes fontes de conhecimento pode fortalecer ainda mais 
a sua compreensão. Desejo bons estudos — e vamos em frente!
1
1
1. A construção de algoritmos se baseia em regras específicas, podendo ser representados 
de várias formas, além de escritos em várias linguagens. A representação visual, porém, 
facilita bastante a compreensão deles. 
Analise as afirmativas, a seguir, sobre a representação de algoritmos:
I - O fluxograma permite uma abordagem mais visual dos algoritmos.
II - Tanto o fluxograma quanto o Diagrama de Chapin são modelos visuais.
III - A descrição narrativa é baseada em texto.
IV - O uso de modelos visuais dificulta a compreensão do algoritmo.
É correto o que se afirma em:
a) I e IV, apenas.
b) II e III, apenas.
c) III e IV, apenas.
d) I, II e III, apenas.
e) II, III e IV, apenas.
2. Usar ferramentas visuais pode facilitar bastante a vida do usuário, pois, como diz a frase: 
“uma imagem vale mais do que mil palavras”, um algoritmo representado visualmente pode 
facilitar bastante a compreensão dele. Esse é um dos motivos do uso desse recurso visual. 
Com base nas informações apresentadas, avalie as asserções, a seguir, e a relação proposta 
entre elas:
I - As ferramentas visuais, para um mesmo algoritmo, devem se equivaler na representa-
ção, ou seja, independentemente da ferramenta, ela deve representar corretamente o 
algoritmo
PORQUE
II - Ferramentas visuais são pouco usadas.
A respeito dessas asserções, assinale a alternativa correta:
a) As asserções I e II são verdadeiras, e a II é uma justificativa correta da I.
b) As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.
c) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
d) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
e) As asserções I e II são falsas.
AUTOATIVIDADE
1
1
3. A programação de computadores pode ser feita em várias linguagens. A escolha da lingua-
gem a ser utilizada depende de vários fatores. Existem várias linguagens no mercado e, na 
maioria dos casos, muitas delas podem ser utilizadas para uma mesma solução.
Com base nas informações apresentadas, avalie as asserções, a seguir, e a relação proposta 
entre elas:
I - A construção de programas em linguagens diferentes gera códigos diferentes
PORQUE
II - As linguagens, mesmo parecidas, possuem sintaxes diferentes.
A respeito dessas asserções, assinale a alternativa correta:
a) As asserções I e II são verdadeiras, e a II é uma justificativa correta da I.
b) As asserções I e II são verdadeiras, mas a II não é uma justificativa correta da I.
c) A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.
d) A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.
e) As asserções I e II são falsas.
AUTOATIVIDADE
1
1
REFERÊNCIAS
ARAÚJO, S. de. Lógica de programação e algoritmos. Curitiba: Contentus, 2020.
CASTILHO, M. A. Algoritmos e estruturas de dados 1. Curitiba: UFPR, 2020. 
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação: a construção de algorit-
mos e estruturas de dados. 3. ed. São Paulo: Prentice Hall, 2005.
GUEDES, S. Lógica de programação algorítmica. São Paulo: Pearson, 2014.
1
1
1. Alternativa D.
A afirmativa IV é falsa, pois o uso de modelos visuais facilita a compreensão. 
A afirmativa I, que diz que o fluxograma permite uma abordagem mais visual dos algoritmos, 
está correta.
A afirmativa II, que afirma que tanto o fluxograma quanto o Diagrama de Chapin são modelos 
visuais, está correta.
A afirmativa III, que diz que a descrição narrativa é baseada em texto, está correta. 
Portanto, a única resposta possível é a letra D, que afirma que apenas as afirmativasI, II e 
III estão corretas.
2. Alternativa C.
A asserção I é verdadeira, pois as ferramentas visuais, para um mesmo algoritmo, devem se 
equivaler na representação, ou seja, independentemente da ferramenta, ela deve representar 
corretamente o algoritmo. Já a asserção II é falsa, pois as ferramentas visuais são muito usadas.
Assim, apenas a alternativa C, que afirma que a asserção I é uma proposição verdadeira e a 
II é uma proposição falsa, é a correta.
3. Alternativa A. 
A asserção I é verdadeira, porque as linguagens, mesmo parecidas, possuem sintaxes di-
ferentes. 
A asserção II é verdadeira, pois cada linguagem usa comandos próprios para escrever os 
seus programas. 
Assim, a primeira asserção é verdadeira e a segunda é uma justificativa correta da primeira.
GABARITO
1
1
MINHAS ANOTAÇÕES
1
1
MINHAS METAS
LINGUAGEM DE
PROGRAMAÇÃO PYTHON
Identificar as características do Python.
Executar a instalação da linguagem Python.
Reconhecer o ambiente de desenvolvimento do Python.
Explorar comandos básicos do Python.
Conhecer as etapas da construção de um programa em Python no IDLE.
Utilizar os tipos de dados do Python.
Construir o seu primeiro programa em Python.
T E M A D E A P R E N D I Z A G E M 1
1
1
INICIE SUA JORNADA
Olá, estudante! Neste tema de aprendizagem, compreenderemos o mundo da 
programação de computadores, a partir da incrível jornada no mundo dos al-
goritmos e de suas linguagens.
Iniciaremos com uma situação hipotética: imagine que você é novo em uma 
empresa e que precisa utilizar o VisuAlg, usando a linguagem Portugol. Entretan-
to, logo você percebeu que, para aquela tarefa, não seria possível utilizá-lo, pois, 
embora seja de utilização simples, ele não é indicado para desenvolver programas 
comerciais. O mundo da programação é muito vasto, composto por inúmeras 
linguagens, que você, provavelmente, conhecerá no decorrer da sua carreira.
Considerando que, agora, você quer programar em uma linguagem que 
seja, ao mesmo tempo, fácil de aprender, poderosa e que possa ser utilizada para 
desenvolver sistemas comerciais, é necessário escolher alguma linguagem que 
atenda a esses requisitos para poder começar a atuar na área de programação.
Atualmente, há uma linguagem que tem essas características: o Python. É 
simples, eficiente, fácil de entender, versátil e muito utilizado em diversos tipos 
de aplicação, seja para sistemas móveis ou desktop. As primeiras linguagens não 
tinham essa característica, que surgiu nas mais modernas. Além disso, Python é 
uma das escolhas mais recomendadas para iniciantes. 
Feita essa escolha por Python, a próxima pergunta é: qual seria o software 
mais apropriado para trabalhar com essa linguagem? Um editor simples seria 
suficiente ou seria melhor um ambiente integrado para isso? Considerando as 
funcionalidades e a facilidade de programar, o ideal é usar um ambiente com-
pleto, como o VS Code. 
Neste tema de aprendizagem, conheceremos um editor nativo do Python, que 
facilita o processo de programação. Instalaremos esse editor e, depois, conhece-
remos os comandos básicos do Python. Identificaremos as etapas da construção 
de um programa em Python e, por fim, usaremos algoritmos em Python. Esse é 
o roteiro normal de aprendizagem não só do Python, mas de qualquer linguagem 
de programação — e é exatamente isso que faremos a partir de agora. 
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
DESENVOLVA SEU POTENCIAL
Existem algumas características que tornam a linguagem Python a escolha ideal 
para quem quer começar no mundo da programação — e é por esse motivo que 
ela faz tanto sucesso. 
A partir de agora, aprofundaremos essa linguagem, a fim de conhecer um 
pouco mais sobre suas especificações.
CARACTERÍSTICAS DA LINGUAGEM PYTHON
É importante entendermos as características que fazem com que a linguagem 
Python seja a escolha natural de quem quer começar a programar sistemas co-
merciais. Para quem está dando os primeiros passos na programação de sistemas 
comerciais, frequentemente, o Python se apresenta como a escolha ideal. Essa 
preferência não é por acaso, mas resultado de um conjunto de qualidades que fa-
VAMOS RECORDAR?
Para compreender melhor a estrutura do Python e a sua 
relação com os conceitos básicos da programação, vale 
a pena recordar alguns conceitos referentes à construção 
e à estruturação dos algoritmos.
Você sabia que muitos aplicativos famosos são criados com Py-
thon, incluindo Instagram, YouTube, Spotify, Dropbox, Uber, Pin-
terest, Quora e Reddit? Essa é uma demonstração de quanto Py-
thon é flexível e poderosa. Que tal ouvir um podcast sobre isso?
PLAY N O CONHECIMENTO
1
8
cilitam o aprendizado e impulsionam a produtividade. Inicialmente, destacam-se 
a facilidade de aprendizagem, a flexibilidade em diversas aplicações e um notável 
poder computacional.
A linguagem Python oferece um leque de atributos que a tornam uma ferramenta 
poderosa e versátil. Uma dessas características é a possibilidade de ela ser inter-
pretada, o que significa que o código é executado linha por linha, de forma similar 
ao Portugol no VisuAlg. Essa execução passo a passo facilita enormemente a 
identificação e a correção de erros durante o desenvolvimento.
Além disso, o Python é uma linguagem de alto nível, cuja sintaxe é projetada 
para ser intuitiva, com comandos que se assemelham à linguagem humana, tor-
nando o código mais legível e compreensível. Um aspecto crucial para a pratici-
dade da programação em Python é o gerenciamento simplificado de memória. 
O programador pode focar na lógica do seu código, sem a necessidade de se 
preocupar com a alocação e a liberação de memória, um processo que ocorre de 
forma automática nos bastidores.
A natureza multiparadigma do Python é outro ponto forte. Ao suportar a pro-
gramação orientada a objetos, procedural e funcional, oferece uma flexibilidade 
incomparável, permitindo que o desenvolvedor escolha o estilo de programação 
mais adequado para cada problema. A tipagem dinâmica também contribui para 
a agilidade no desenvolvimento. Diferentemente de linguagens como Java, o tipo 
de uma variável, em Python, é determinado durante a execução do programa, 
simplificando a escrita do código e aumentando a eficiência.
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 2
É por características assim que o Python é uma linguagem que avança cada 
vez mais no mercado, e a flexibilidade no seu uso é um dos seus pontos fortes. 
A sintaxe simples do Python, como já mencionado, é um grande atrativo. 
Seus comandos são diretos e fáceis de entender, o que simplifica a construção de 
programas, mesmo para iniciantes. A capacidade de ser multiplataforma é outra 
vantagem significativa. O Python pode ser executado em diversas versões do 
Unix (incluindo Linux e Mac) e no Windows, oferecendo grande portabilidade 
para as aplicações desenvolvidas.
Uma característica peculiar do Python é a indentação obrigatória. Ao contrá-
rio de outras linguagens em que a indentação é apenas uma questão de estilo, em 
Python, ela define a estrutura do código, indicando a subordinação de comandos 
aos seus respectivos blocos. Embora possa parecer um detalhe, essa exigência 
contribui para a clareza e a organização do código.
Finalmente, o ambiente de desenvolvimento flexível do Python permite que 
os programadores utilizem diversas ferramentas para escrever seus códigos, des-
de editores mais simples, como o IDLE (nativo da linguagem), até IDEs (Ambien-
tes de Desenvolvimento Integrado) mais robustos, como Pycharm e VS Code.
É essa combinação de características que impulsiona o crescimento do Python 
no mercado de tecnologia. A versatilidade e a facilidade de uso o tornam uma 
ferramenta cada vez mais procurada por desenvolvedores e empresas.
A linguagem Python é multiparadigma, e cada um dos paradig-
mas suportados tem características importantes. Que tal apren-
der sobre o que são paradigmas de programação?
E U I N DI CO
Agora que você já conhece as principais características que tornam o Pythonuma linguagem tão atraente, o próximo passo é aprender como instalá-lo em 
seu computador.
1
1
INSTALAÇÃO DA LINGUAGEM PYTHON
Como a grande maioria dos sistemas operacionais instalados no mundo é com-
posta de versões para Windows, veremos como fazer a instalação nesse sistema 
operacional. 
A instalação da linguagem Python deve ser feita apenas no site 
oficial. 
E U I N DI CO
Para instalar o Python no seu sistema operacional Windows, realize o passo a 
passo a seguir:
• Passo 1: acesse o site oficial, que tem as versões mais recentes aplicáveis 
a cada sistema operacional. Em seguida, clique no botão “download”. 
• Passo 2: após fazer o download do instalador executável do Windows (32 
ou 64 bits), clique duas vezes nele, para iniciar o assistente de instalação 
do Python e aguarde até a finalização do processo de instalação.
• Passo 3: clique no botão “Install Now”. Espere o instalador finalizar o 
processo de instalação.
• Passo 4: clique no botão “Close”. 
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
Esta é a tela de conclusão da 
instalação do Python. Para encerrar 
o procedimento, clique no botão 
“Close”. Nesse momento, o Python 
já estará instalado.
Tela inicial do site oficial para fazer 
o download do Python, como 
mencionado no Passo 1.
Esta tela possui opções de 
instalação do Python. Ao visualizá-
la, marque a opção “Add Python to 
PATH”. 
Surgirá o botão “Install Now”. 
Esta tela apresenta o progresso da 
instalação. A barra de progresso 
apresenta o andamento da 
instalação. 
1
1
É importante destacar que, dependendo da data em que este roteiro esteja sendo 
executado, as telas podem ser diferentes das que apresentamos aqui. Entretanto, 
certamente serão bem parecidas. Isso é bastante comum não somente no Python, 
mas em praticamente todos os ambientes de programação. A instalação do Python 
é muito importante para compreender melhor como funciona a linguagem. 
Agora, conheceremos o ambiente de desenvolvimento dessa linguagem.
O AMBIENTE DE DESENVOLVIMENTO DO PYTHON
Ao instalar o Python, automaticamente é instalado o ambiente de desenvolvimento 
IDLE, que se parece com uma versão um pouco melhorada do Bloco de Notas. 
Do ponto de vista estrutural, ele é muito simples – algumas pessoas diriam que ele 
é simples até demais, que poderia ter um pouco mais de recursos. Outros ambien-
tes, como PyCharm ou VS Code, são bem melhores para a programação diária. 
Para o aprendizado em si, no primeiro contato com Python, o IDLE é ideal 
porque não tem grandes auxílios ao programador iniciante – ele é bem “limpo”, 
ou seja, o foco é mesmo na aprendizagem. Existem outros ambientes de desen-
volvimento bem mais poderosos, mas, por enquanto, ficaremos com o IDLE, em 
razão de sua simplicidade. 
Guido Van Rossum, criador da linguagem, colocou o nome Python em homenagem 
ao grupo de comédia britânico Monty Python, enquanto o nome IDLE foi escolhido 
em homenagem a Eric Idle, um dos membros fundadores do Monty Python. O IDLE 
vem com a implementação padrão da linguagem Python desde a versão 01.5.2b1.
Z OOM N O CONHECIMENTO
Após a instalação, o passo seguinte é testar o ambiente, construindo o seu 
primeiro programa em Python. É muito importante que você pratique usando 
essa ferramenta. 
A seguir, construiremos o seu primeiro programa em Python.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
Seu primeiro programa em Python
Em todas as linguagens de programação, sempre ao fazer o primeiro programa, é 
utilizada a frase clássica “hello, world” ou “olá, mundo”. Vamos fazer isso no Python? 
Abra o menu iniciar do Windows e selecione a opção “IDLE”, conforme 
mostra a Figura 1. Pode ser que sua versão já seja mais atual que a mostrada na 
imagem (que é a versão mais atual até o momento), mas não tem problema — de 
vez em quando, o Python libera uma nova versão. 
Figura 1 – Menu iniciar do Windows com a opção “IDLE” disponível / Fonte: o autor.
Figura 1 – Tela do editor IDLE / Fonte: o autor.
Descrição da Imagem: print com uma parte do menu “Iniciar” do Windows, especificamente a seção “Adicionados recen-
temente”, na qual são exibidos os programas recentemente instalados. Os itens listados são relacionados à linguagem de 
programação Python, versão 3.13 (64-bit). Os três itens visíveis são: Python 3.13 Module Docs (64-bit) — abre a documen-
tação dos módulos do Python; IDLE (Python 3.13 64-bit) — o ambiente de desenvolvimento integrado padrão do Python; 
Python 3.13 (64-bit) — inicia o interpretador de linha de comando do Python. Abaixo das opções, há o botão “Expandir”, que 
permite visualizar mais itens dessa seção. O fundo da imagem é desfocado e apresenta um leve tom claro. Fim da descrição.
Descrição da Imagem: print de uma janela do IDLE Shell 3.13.2, que é o ambiente de desenvolvimento integrado (IDE) 
padrão para a linguagem de programação Python. Essa é a interface na qual o usuário pode digitar e executar comandos 
Python interativamente. No topo da janela, há uma barra de menus com as seguintes opções: File, Edit, Shell, Debug, 
Options, Window e Help. Abaixo, aparece o texto padrão de inicialização do shell do Python, informando: Python 3.13.2 
(tags/v3.13.2:4f8bb39, Feb 4 2025, 15:23:48) [MSC v.1942 64 bit (AMD64)] on win32. Type “help”, “copyright”, “credits” 
or “license()” for more information. Logo abaixo, aparece o prompt >>>, onde o usuário pode começar a digitar comandos 
em Python. O visual da janela é simples, com fundo branco e texto em preto. A interface é típica de aplicações clássicas 
do Windows, com botões de minimizar, maximizar e fechar no canto superior direito. Fim da descrição.
Ao clicar no botão citado, aparece a imagem da Figura 2.
1
1
Então, mãos à obra! Na área onde fica o cursor, escreva o texto: print(“hello 
world”). Logo depois, execute o programa teclando “enter”. Surgirá a tela a seguir: 
Figura 1 – Tela do IDLE com o comando print(“hello world”) executado / Fonte: o autor.
Descrição da Imagem: print da janela do IDLE Shell 3.13.2, que é o console interativo do Python. Ela exibe o resultado 
da execução de um comando simples. No topo da janela, há uma barra de menus com as opções: File, Edit, Shell, Debug, 
Options, Window e Help. Abaixo do texto padrão de inicialização do Python, o usuário digitou o seguinte comando: prin-
t(“hello world”). Logo abaixo, aparece a saída correspondente no console: “hello world”. Fim da descrição.
Parabéns, você acaba de fazer o seu primeiro programa em Python!
Você notou que, nesta abordagem, utilizamos, interativamente, o Python, ou 
seja, colocamos um comando e ele responde. Depois, colocamos outro comando 
e ele responde novamente. Contudo, o ideal mesmo é criar programas e depois 
fazer o Python executá-los. É, dessa forma, que trabalharemos daqui em diante. 
Criando programas Python e salvando na sua pasta preferida
Em qualquer linguagem de programação, o ideal é sempre criar o programa e 
armazenar em pastas apropriadas. Aliás, os sistemas costumam ser desenvolvidos 
como conjuntos de programas, então, faz sentido guardar esses programas em 
uma pasta do sistema. Sugiro que você crie uma pasta “Programas em Python” 
no seu HD, SSD ou pendrive e passe a armazenar os arquivos lá. 
Agora que você criou a pasta, utilizaremos a opção de criar um novo progra-
ma em Python. Na Figura 4, é solicitada a opção “New File”, com a qual abrimos 
o editor para criar um novo programa.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
Clicando em “New File”, surge a tela da Figura 5.
Figura 1 – Menu de criação de novo programa em Python /Fonte: o autor.
Figura 1 – Tela do IDLE para construção de programas / Fonte: o autor.
Descrição da Imagem: print de parte da interface do editor de texto do IDLE (Python), utilizada para criar e editar scripts 
Python. No topo da janela, está escrito “untitled”, indicando que um novo arquivo ainda não foi salvo com nome. A barra 
de menus da janela exibe as opções: File, Edit, Format, Run, Options, Window e Help. A opção “File” (arquivo) está aberta, 
exibindo doisitens no menu suspenso: “New File” – com atalho de teclado Ctrl+N –, usado para criar um novo arquivo 
de script Python; e “Open...” – com atalho Ctrl+O –, usado para abrir um arquivo Python existente. O fundo da janela é 
branco e o visual segue o estilo clássico do Windows, com o item “New File” destacado em azul, indicando que o mouse 
ou a seleção está sobre ele. Fim da descrição.
Descrição da Imagem: print da janela do editor de código do IDLE (Python) em branco, pronta para receber comandos 
ou scripts em Python. No topo da janela, o título está como “untitled”, indicando que o arquivo ainda não foi nomeado 
ou salvo. A interface contém uma barra de menus com as seguintes opções: File, Edit, Format, Run, Options, Window 
e Help. A área principal da janela é um espaço em branco, onde o usuário pode digitar seu código. O fundo branco e 
a ausência de conteúdo indicam que ainda não há nenhum código inserido. No canto superior direito, aparecem os 
botões típicos do Windows para minimizar, maximizar/restaurar e fechar a janela. A aparência é simples e funcional, 
voltada para escrita de scripts em Python. Fim da descrição.
Estamos prontos para aprofundar os nossos conhecimentos em Python. Vamos 
em frente!
COMANDOS BÁSICOS DO PYTHON
Vamos agora conhecer comandos básicos do Python, que são os de criação 
de variáveis e os comandos de entrada e saída. Com eles, já é possível fazer pro-
gramas bem interessantes. Antes, vamos ver uma indicação de livro sobre como 
começar a programar com Python.
1
1
Começaremos pelos comandos mais comumente utilizados em linguagens de 
programação: comandos de entrada e comandos de saída.
Comandos de entrada e saída do Python
Segundo Forbellone e Eberspächer (2005), para que os algoritmos realizem ope-
rações e cálculos, é indispensável receber dados vindos do ambiente externo. 
Considerando que dados devem ser recebidos, processados e exibidos, as lin-
guagens sempre implementam esse tipo de comando. 
Conforme afirma Guedes (2019), é preciso definir os dados de entrada e 
de saída, que são recebidos, respectivamente, pelos comandos Input e Print do 
Python, conforme veremos a seguir. Em todo sistema, é importante mostrar 
mensagens para o usuário, seja para que o usuário digite dados a inserir no sis-
tema, seja para as mensagens que mostram os resultados desse processamento. 
No Python, usamos o comando Print, que faz o básico: mostrar uma men-
sagem para o usuário — você já viu esse comando quando fez o seu primeiro 
programa em Python. Agora que você já viu um comando de saída, que tal 
conhecer como o Python pode receber dados via teclado? A seguir, falaremos 
do comando Input.
Comando Input
Toda linguagem de programação precisa de alguma forma para ler dados. No caso 
do Python, temos o comando “Input”, que é bem flexível e funciona muito bem. 
Começando a Programar em Python para Leigos
Para aprender Python, é importante ter mais de uma fonte de es-
tudo. Por esse motivo, indico esse fantástico livro da série Progra-
mação para Leigos, cuja didática é muito boa, pois ensina como 
baixar e instalar o Python, como usar a linha de comando, como 
usar o Jupyter Notebook, como coletar tipos diferentes de dados, 
interações com pacotes, como encontrar e corrigir erros e como 
construir aplicações muito eficientes com o Python. Vale a pena!
I N DI CAÇÃO DE L IVRO
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
Como exemplo, dessa vez, utilizaremos um texto comum, que você irá inserir 
no ambiente IDLE, na mesma tela exibida anteriormente:
aluno = input(“Digite seu nome: ”)
Vamos entender esse comando? O comando Input recebe, via teclado, um texto, 
que seria o equivalente ao “caractere” do VisuAlg. Ele recebe o que foi inserido 
no teclado e armazena na variável Aluno. Além disso, exibe uma mensagem para 
orientar o usuário.
Aliás, antes de terminarmos, é importante conhecermos os tipos de dados 
utilizados no Python.
Tipos de dados no Python
Vejamos, a seguir, os tipos de dados no Python, conforme Cruz (2015): 
• int – armazena valores numéricos inteiros;
• float – armazena valores numéricos com ponto flutuante;
• complex – armazena valores numéricos complexos;
• bool – armazena valores lógicos (True ou False). O valor True pode ser 
representado por 1 e o False por 0 e, por isso, alguns autores consideram 
valores do tipo bool como sendo do tipo inteiro;
• str – armazena cadeias de caracteres;
• list – armazena conjuntos de elementos que podem ser acessados por meio 
de um índice;
• dic – armazena um conjunto de elementos que podem ser acessados por meio 
de uma chave.
Por que é necessário conhecer esses tipos de dados? Toda linguagem de progra-
mação precisa lidar com dados, e com o Python não seria diferente. No entanto, 
existe um porém: a entrada de dados, por sempre ser em string, o equivalente ao 
caractere, ou seja, texto, que, no Python, é chamado de “str”. Enquanto linguagens 
de programação como C, C++ e Java possuem tipagem forte, ou seja, as variáveis 
devem ser declaradas com seus tipos, Python possui tipagem dinâmica. Uma 
1
8
linguagem de programação, que possui tipagem dinâmica como Python, PHP ou 
Perl, não exige que o programador declare, de forma direta e explícita, o tipo de 
dado que será armazenado por cada variável. Isso tem tanto um lado bom como 
outro não tão bom: o lado bom é que a linguagem acaba sendo flexível, mas essa 
flexibilidade pode ser mal usada e tornar o programa confuso. 
Sabemos que as linguagens de programação têm semelhanças 
e diferenças. Que tal comparar as linguagens atualmente utiliza-
das com o Python?
E U I N DI CO
Voltando ao comando Input, que usamos anteriormente, veja o seguinte comando: 
aluno = input(“Digite seu nome: ”)
Araújo (2020) afirma que palavras que fazem parte da linguagem são palavras 
reservadas. O comando (ou função) “Input” é um exemplo disso. 
A função input() sempre retornará o valor recebido no formato de uma string, 
mesmo se a variável for de um tipo de dado diferente, como um número real. O 
que fazer nesse caso, já que você quer receber um valor real? É bem fácil: basta 
usar uma função de conversão. 
Vejamos um exemplo: supondo que queiramos saber a idade de uma pessoa. 
O comando a ser usado é o que vemos a seguir:
idade = int(input(“Qual a sua idade? ”))
Nesse exemplo, tem um porém: se a string não poder ser convertida em inteiro 
(por exemplo, você digitou um nome), o Python vai levantar uma exceção. Por-
tanto, tenha muito cuidado ao usar esse comando. Agora, usaremos um exemplo 
com um número real, como um salário:
UNIASSELVI
1
9
TEMA DE APRENDIZAGEM 2
salario=float(input(“informe o seu salário”))
Veja um detalhe importante: a variável salário não tem acento. É recomendável 
não usar acentos nem caracteres especiais nos nomes das variáveis.
Agora que já vimos os comandos básicos do Python, veremos como construir 
um programa em Python.
Você acha que, após aprender Python, será mais fácil aprender outras linguagens?
PE N SA N DO JUNTOS
Normalmente, após aprender Python, os programadores tendem a buscar novas 
linguagens, e o interessante é que muitos dos ambientes de desenvolvimento 
Python servem para outras linguagens. Que tal conhecermos algumas caracte-
rísticas desses ambientes? 
Quer conhecer mais sobre ambientes de desenvolvimento para 
o Python? 
E U I N DI CO
Analisando as características do Python que conhecemos neste tema de aprendi-
zagem, foi possível percebermos que essa linguagem é muito flexível e poderosa. 
1
1
Chegando ao final dessa parte dos nossos estudos, ainda temos muita coisa inte-
ressante para aprender! Conforme visto anteriormente, existem vários editores 
que trabalham com linguagens diversas, não somente o Python. O VS Code é 
um deles — uma ferramenta simples, gratuita e muito eficiente. 
A Rede Social (The Social Network) 
Que tal ver um filme que mostra esse potencial incrível da lingua-
gem? Esse filme mostra o que é possível fazer com linguagens 
como Python, ao contar a história da criaçãodo Facebook, uma das 
maiores e mais influentes redes sociais do mundo. O longa mos-
tra como tudo começou, os desafios, as conquistas e os conflitos 
envolvidos no processo de transformar uma ideia em um negócio 
bilionário. Atualmente, a empresa mudou de nome para Meta.
I N DI CAÇÃO DE FILME
O que você acha de assistir a um vídeo que trata dos detalhes 
da implantação do VS Code como uma opção ao editor IDLE? 
Assista a um vídeo sobre a implantação desse outro editor de 
Python.
E U I N DI CO
Agora, podemos finalizar revisando tudo o que aprendemos e nos preparando 
para novos desafios.
UNIASSELVI
1
1
TEMA DE APRENDIZAGEM 2
NOVOS DESAFIOS
Estudante, finalizamos este tema de aprendizagem, no qual vimos a instalação do 
Python em ambientes Windows e construímos o seu primeiro programa. Vimos 
a estrutura básica do editor IDLE e conhecemos mais detalhes sobre a constru-
ção de programas nessa e em outras plataformas – inclusive com uma pequena 
introdução ao relacionamento entre Python e outras linguagens. 
São vários os ambientes para programar em Python, e vale a pena conhecer 
e escolher um deles para programar. Esse é um conhecimento fundamental para 
quem pretende seguir carreira na área. Muitos desses ambientes podem ser utili-
zados na programação de outras linguagens, e a programação em Python pode 
abrir muitas portas em sua carreira na área de tecnologia da informação.
Você, como futuro profissional, pode desenvolver aplicações para notebooks, 
dispositivos móveis diversos e até para dispositivos da internet das coisas (IoT). 
Claro que, até lá, você precisará se aprofundar nos seus estudos, aprender muitos 
comandos novos, entender as semelhanças, as diferenças e as aplicações das 
linguagens que, provavelmente, serão integradas aos sistemas em Python. 
É uma jornada longa, mas também muito prazerosa – fora o fato de que você 
vai perceber que aprender a programar é uma forma de mudar o mundo, trazer 
novas tecnologias, impactar a vida das pessoas e colaborar para a transformação 
digital que vivemos diariamente, com novas soluções e ideias que fazem a dife-
rença para os usuários.
Por esse motivo, encorajo-o a seguir estudando esse tema incrível da progra-
mação de computadores, agora especificamente nessa linguagem tão flexível, fácil 
de aprender e poderosa, que é a linguagem Python. 
Desejo bons estudos — e vamos em frente!
Estudante, para expandir seus conhecimentos sobre o assunto 
abordado, gostaríamos de lhe indicar a aula que preparamos espe-
cialmente para você. Acreditamos que essa aula irá complementar 
e aprofundar ainda mais o seu entendimento sobre o tema.
E M FOCO
1
1
1. Na prática, todos os programas vão manipular textos ou números. Por isso, precisamos 
saber trabalhar com esses tipos fundamentais, conforme afirma Cruz (2015). Para trabalhar 
com esses dados, precisamos de comandos de entrada e saída. 
A entrada de dados no Python é feita pelo comando Input. Contudo, sabemos que existem 
outros tipos de dados e que é necessário tratá-los. Qual seria a forma mais adequada de 
receber uma informação acerca de um valor de salário de uma pessoa? 
a) Utilizar o comando Print, sem conversão.
b) Utilizar o comando Input e, em seguida, converter para float.
c) Utilizar o comando Input e, em seguida, converter para string.
d) Utilizar o comando Input e, em seguida, converter para int.
e) Utilizar o comando Print e, em seguida, converter em boolean.
2. Segundo Cruz (2015), Python é uma linguagem de programação interpretada e de alto 
nível, que aceita diferentes paradigmas, como o imperativo, o orientado a objetos e o fun-
cional, possuindo tipagem dinâmica e forte, escopo léxico e gerenciamento automático 
de memória.
Para facilitar a vida do programador, Python tem uma importante característica, que a classi-
fica como uma linguagem interpretada. Essa característica, presente em outras linguagens, 
permite ao usuário realizar atividades bem específicas e que facilitam o seu trabalho. 
Qual alternativa descreve a principal característica de uma linguagem interpretada?
a) Permite ao programador compilar o código do programa.
b) Permite ao programador converter o programa para outra linguagem.
c) Permite ao programador emitir comandos que são executados de forma imediata.
d) Permite ao programador criar bancos de dados não relacionais.
e) Permite ao programador trocar de sistema operacional.
AUTOATIVIDADE
1
1
3. De acordo com Cruz (2015), aprender a operar os números de uma linguagem de progra-
mação é um dos primeiros passos no estudo dessa linguagem. Certos tipos numéricos já 
estão incorporados à sintaxe, enquanto outros podem ser obtidos por meio da importação 
de módulos e manipulados por objetos e APIs. 
A linguagem de programação Python possui comandos de entrada e saída. O comando de 
entrada padrão recebe valores, que são inseridos em variáveis. Essa leitura recebe o con-
teúdo que deve armazenar a variável em um tipo específico. Sobre o tipo de dado padrão 
recebido na leitura com o comando input em Python, assinale a alternativa correta: 
a) São recebidos dados no formato hexadecimal.
b) Os dados recebidos são do tipo real.
c) Os dados lidos são do tipo inteiro.
d) São recebidos dados do tipo lógico.
e) Os dados são recebidos com o tipo string.
AUTOATIVIDADE
1
1
REFERÊNCIAS
ARAÚJO, S. de. Lógica de programação e algoritmos. Curitiba: Contentus, 2020.
CRUZ, F. Python, escreva seus primeiros programas. São Paulo: Casa do Código, 2015.
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação: a construção de algorit-
mos e estruturas de dados. 3. ed. São Paulo: Prentice Hall, 2005.
GUEDES, S. Lógica de Programação Algorítmica. São Paulo: Pearson, 2019.
1
1
1. Alternativa B. O salário de uma pessoa é do tipo real, ou float, e o comando Input recebe 
string, ao converter para float, o valor se adequa.
A alternativa A está errada, porque o comando Print não serve para receber informações, 
apenas para exibir. 
A alternativa C está errada, pois o Input já recebe em string, e não faria sentido converter 
novamente. 
A alternativa D está errada, pois o Input recebe em string, e não faria sentido converter para 
inteiro, já que o valor é real (float). 
A alternativa E está errada, pois o comando Print é de saída, e não de entrada.
2. Alternativa C. A linguagem interpretada permite ao programador emitir comandos que são 
executados de forma imediata.
A alternativa A está errada, porque a compilação de um programa não se relaciona ao fato 
de a linguagem ser ou não interpretada.
A alternativa B está errada, porque a conversão de um programa para outra linguagem não 
se relaciona ao fato de a linguagem ser ou não interpretada.
A alternativa D está errada, porque a criação de bancos de dados não se relaciona ao fato 
de uma linguagem ser interpretada.
A alternativa E está errada, porque o fato de uma linguagem ser interpretada nada tem a ver 
com o sistema operacional onde ela está sendo executada.
3. Alternativa E. O Python recebe dados no tipo string. O comando “input()” sempre retorna 
valores como texto, independentemente do que for digitado pelo usuário.
A alternativa A está errada, porque o Python recebe dados no tipo string. O input() não in-
terpreta automaticamente valores como hexadecimais. Mesmo que o usuário digite 0x10, o 
conteúdo será lido literalmente como a string “0x10”.
A alternativa B está errada, porque o Python recebe dados no tipo string. Mesmo que o usuá-
rio digite um número com vírgula ou ponto, o valor não será interpretado como real (float) 
automaticamente. Para isso, é necessário usar a função “float()” após a entrada.
A alternativa C está errada, porque o Python recebe dados no tipo string. Mesmo que o valor 
digitado seja um número inteiro, ele será tratado como texto até que seja convertido com 
a função “int()”.
A alternativa D está errada, porque o Python recebe dados no tipo string. O que for digitado, 
como True ou False, continuará sendo uma string. O Python não converte automaticamente

Mais conteúdos dessa disciplina