Você está na página 1de 24

12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

ELEMENTOS DE ALGORITMOS

0
121 minutos

seõçatona reV
 Aula 1 - Representações de algoritmos
 Aula 2 - Execução sequencial e estruturas de decisão

 Aula 3 - Estruturas de repetição

 Aula 4 - Variáveis indexadas

 Referências

Aula 1

REPRESENTAÇÕES DE ALGORITMOS
Nesta aula você aprenderá a definição de algoritmos, sua aplicabilidade e conceito como peça
fundamental para desenvolvimento de um programa de computador.
33 minutos

INTRODUÇÃO
Olá, estudante!
Nesta aula você aprenderá a definição de algoritmos, sua aplicabilidade e conceito como peça fundamental
para desenvolvimento de um programa de computador. Também irá estudar quais as principais
propriedades de um algoritmo e como fluxogramas podem ser criados para representar algoritmos.
Todo este conhecimento é a base fundamental para a construção de softwares, já que você exercitará a
criação da lógica necessária para o processo de desenvolvimento de novas aplicações ou manutenção em
aplicações já existentes.
Lembre-se que o seu aprendizado só dependerá de você, então, não se limite apenas ao estudado em aula,
mas busque, de forma proativa, ampliar seus conhecimentos.
Bons estudos!

O QUE SÃO ALGORITMOS E QUAIS SUAS APLICABILIDADES


Em seu cotidiano, todas as ações que você executa têm uma sequência lógica de passos para sua conclusão.
Mesmo que, de forma inconsciente, você não precise ficar raciocinando sobre a ordem de execução de cada
passo, em algum momento, alguém te ensinou a sequência que você reproduz. A esta sequência lógica de
passos para executar uma ação denominamos algoritmo.
Os passos necessários para obter um resultado de uma ação, como, por exemplo, preparar uma receita
culinária, devem seguir uma sequência lógica com o objetivo de estabelecer uma ordem no pensamento das
etapas que deverão ser seguidas para que a refeição, ao final do processo, esteja pronta.
Segundo o que apresenta Forbellone (1993), a sequência finita e ordenada de passos necessária para se
atingir um objetivo (como trocar um pneu, preparar uma receita culinária ou sair de casa para ir ao trabalho)
é o que se conhece como um algoritmo.
Um programa de computador (software) é a representação, por meio de uma linguagem de programação,
de uma lógica que irá resultar em um comportamento esperado para o programa, como, por exemplo, o
cadastro de dados de uma pessoa em uma clínica médica, marcação de consultas a partir de uma agenda
disponível de um médico, dentre outros exemplos do nosso cotidiano.
Então, antes da construção de qualquer programa de computador, é necessário entender o processo de
raciocínio lógico e a definição dos passos necessários para a construção de um algoritmo.
Como exemplo de um algoritmo simples para, por exemplo, abrir uma porta trancada, você pode listar os
seguintes passos:
1. selecionar a chave correta para a fechadura que se deseja abrir;

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&ati… 1/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

2. inserir a chave na fechadura;


3. se a chave encaixou corretamente, então:
3.1 gire a chave no sentido anti-horário uma volta;
3.2 tente abrir a porta. Se a porta abriu, então:
3.2.1 porta aberta com sucesso.

0
3.3 Se a porta não abriu, então:
3.3.1 Volte ao passo 3.1

seõçatona reV
Quando os passos, em sua respectiva sequência lógica, são listados, é possível perceber, por exemplo, que
cada tarefa tem um certo nível de complexidade e um determinado padrão de comportamento (uma porta
que possua chaves mecânicas sempre seguirá a mesma lógica para sua abertura).
É importante mencionar que, em muitos casos, será necessário que o usuário forneça algumas informações
de entrada ao algoritmo (como nome, endereço e RG de uma pessoa que será cadastrada como aluna em
uma instituição de ensino, por exemplo), que passará por um processamento (como uma validação, por
exemplo), gerando um resultado (efetuar o cadastro do aluno com sucesso).
Para que a lógica de um algoritmo possa ser representada de modo que fique claro para outras pessoas que
conheçam lógica de programação e algoritmos, você poderá utilizar um fluxograma, ou seja, a
representação gráfica de um fluxo de passos sequenciais, por meio do uso de símbolos com significados
específicos.
Conforme nos apresenta Pressman (1995), a construção de um fluxograma é um método bastante utilizado
para representação da lógica de um algoritmo por ser simples, fazendo uso de losangos para representação
de uma condição de controle e setas para mostrar qual o fluxo a seguir, conforme cada alternativa possível
que parta do fluxo de condição. Uma sequência de passos pode ser representada por meio de retângulos.
Detalharemos a representação utilizando fluxogramas em um momento posterior neste texto.

PRINCIPAIS CARACTERÍSTICAS DE UM ALGORITMO


Toda lógica que se pretende transferir a um programa de computador poderá ter diferenças na forma como
as etapas são ordenadas para se atingir o objetivo desejado, a depender da maneira pela qual quem está
construindo o algoritmo ordene seu pensamento lógico.
Porém, existem alguns pontos fundamentais para garantir que um algoritmo seja compreendido facilmente
e, caso necessário, sofra alterações evolutivas (quando se deseja acrescentar novas funcionalidades a uma
aplicação), adaptativas (quando se deseja ajustar funcionalidades já existentes para o que o usuário
considera mais adequado para resolver seus problemas) ou corretivas (quando é feita correção de erros
detectados durante a utilização do programa). A estes pontos damos o nome de propriedades de um
algoritmo.
Quando a construção de um algoritmo se preocupa em garantir que as principais propriedades serão
respeitadas, o processo de representação deste algoritmo em fluxograma será facilitado, garantindo maior
probabilidade de sucesso ao longo do processo de codificação (implementação) de sua lógica.
Uma das propriedades dos algoritmos é a sequenciação, já que, para que se atinja um objetivo específico
(como cadastrar os dados um usuário, extrair um relatório, etc.), é preciso que os passos necessários para a
concretização da funcionalidade sejam definidos em uma ordem sequencialmente lógica. Por exemplo: caso
o seu algoritmo seja de cadastro de dados de um paciente, é preciso que uma tela contendo os campos que
serão informados pelo usuário possa aparecer, seguindo-se do preenchimento destes campos e do envio
para que possam ser validados (conforme as regras de negócio) e cadastrados. Caso o envio aconteça antes
da etapa de informação dos dados, a sequência lógica será quebrada, não sendo possível alcançar o
propósito final (cadastramento dos dados).
A complexidade é outra propriedade importante para um algoritmo. Quanto mais simples os passos e a
sequência lógica destes passos aconteçam, mais simples será seu algoritmo, sendo mais fácil de ser
construído e mantido posteriormente.
Um fator que aumenta a complexidade, de forma considerável, conforme apresenta Forbellone (1993), é a
relação entre o que deve ser feito e o como deve ser feito, que pode levar a respostas tão complexas que
não cheguem a nenhuma solução.
Quando você perguntar “O quê?”, terá uma resposta direta e objetiva. Por exemplo: na pergunta “O que é
um relógio?”, uma resposta objetiva seria similar a “instrumento que apresenta a passagem do tempo, ao
longo de um dia”. Já a pergunta “Como é um relógio?”, por outro lado, poderá ter diferentes e irrelevantes
respostas, como “objeto esférico com ou sem ponteiros, com tamanhos variados, que pode ser de parede,

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&ati… 2/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

bancada ou de pulso”.
A legibilidade é uma propriedade importante para garantir que outras pessoas irão conseguir ler o seu
algoritmo e ter um mesmo entendimento a respeito de seu objetivo. Quanto maior for a legibilidade de um
algoritmo, mais facilmente ele será entendido e menor será sua complexidade.
Outra propriedade importante de um algoritmo é a portabilidade. Construir um algoritmo que possa ser

0
executado em diferentes sistemas operacionais e diferentes arquiteturas de máquina (hardware) é uma
questão importante para englobar os mais diferentes perfis e tipos de usuários de uma aplicação. Um

seõçatona reV
algoritmo, por ser apenas a representação de uma sequência lógica de passos que irão resolver um
problema do mundo real do usuário, poderá ser escrito (implementado) utilizando diferentes linguagens de
programação e para os mais diferentes ambientes de execução.
Todas estas propriedades são importantes para garantir que, após a definição de quais passos serão
necessários para se atingir um objetivo com um algoritmo, a sua representação em fluxogramas seja feita de
forma fácil, contendo apenas os passos estritamente necessários, sem maiores complexidades e de fácil
manutenibilidade (facilidade de manutenção futura).

UTILIZANDO FLUXOGRAMAS PARA A REPRESENTAÇÃO DE ALGORITMOS


Algoritmos podem ser representados por meio de fluxogramas, como já mencionado, já que esta
ferramenta possui os elementos gráficos necessários para representação de uma sequência de passos, com
representação para tomada de decisões e fluxo de repetição de passos.
Todo fluxograma tem um início e um fim, sendo o início representado pela primeira ação (ou passo) a ser
executada para se atingir o objetivo da lógica estruturada. É importante que você defina um “gatilho” para
que a sua lógica seja iniciada, ou seja, uma ação que deverá ser feita pelo usuário (como o clique em um
botão de menu, a abertura de uma tela contendo um formulário, dentre outras), para que a sequência de
passos possa, então, seguir a partir desta ação inicial.

Tabela 1 | Principais símbolos de um fluxograma

Elemento Significado

Elemento que indica início do fluxo a ser construído.

Elemento que indica um passo a ser executado, em forma


sequencial.

Elemento que indica uma condição (pergunta) que irá alterar o fluxo
da execução, conforme a resposta (Sim ou Não).

Elemento que indica sequência do fluxo.

Elemento que indica término do fluxo.

Fonte: elaborada pela autora.

A Tabela 1 apresenta um resumo dos principais elementos que são utilizados para construção de um
fluxograma. É possível, por exemplo, criar fluxos contendo apenas elementos sequenciais ou, em fluxos
mais elaborados, contendo fluxos alternativos, que irão partir de tomada de decisões.
A Figura 1 apresenta um exemplo de um fluxograma básico, sem estrutura de controle, apenas com um
sequenciamento de passos do início ao fim.
O início de todo fluxograma deve ser representado com um conector, que irá exibir qual será o primeiro
passo para ser executado em busca do resultado esperado.

Figura 1 | Representação de um fluxograma simples

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&ati… 3/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

0
seõçatona reV
Fonte: elaborada pela autora.

A Figura 1 apresenta uma sequência de passos simples para o envio de um e-mail a um ou mais
destinatários. O primeiro elemento do fluxo apresenta um conector, indicando que o processo será iniciado.
Cada caixa retangular irá indicar um passo a ser executado, sendo ligadas por setas, que indicam a
sequência que deverá ser seguida. Ao final do processo, um elemento que representa a conclusão do fluxo,
sendo representado por um elemento ovalado, apresenta o objetivo concluído (que é o e-mail enviado).
Para fluxos mais complexos, que incluem situações de tomadas de decisão ou fluxo de repetição de passos,
elementos que representam os caminhos alternativos a serem seguidos podem ser inseridos no fluxo,
conforme apresentado na Figura 2.

Figura 2 | Fluxograma com tomada de decisão

Fonte: elaborada pela autora.

A Figura 2 apresenta uma sequência de passos para a abertura de uma porta, conforme exemplo
apresentado em momento anterior neste texto. Após o conector que representa o início do processo ter
sido inserido, então o fluxo se inicia com uma pergunta condicional sobre a chave, se é compatível com a
fechadura da porta a ser aberta ou não. Caso seja compatível, o fluxo será alternado para o ramo da
esquerda, seguindo pelas etapas de girar a chave, verificar se a porta se abriu e, caso a porta não abra,
então, o fluxo retornará para a etapa de girar chave no sentido anti-horário, repetindo os passos abaixo
deste. Caso a porta se abra, então o fluxo será finalizado.
Uma pessoa que não tenha elaborado este fluxograma, ao realizar a leitura deste, deverá ter o mesmo
entendimento dos passos e fluxos condicionais, o que caracteriza a propriedade de legibilidade do

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&ati… 4/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

algoritmo.
A partir de um fluxograma, deverá ser possível implementar sua lógica em qualquer linguagem de
programação desejada.

VÍDEO RESUMO

0
Olá, estudante! Neste vídeo você aprenderá os principais conceitos e aplicações de um algoritmo, a

seõçatona reV
importância da sequência lógica de passos para construção de um algoritmo, suas principais propriedades e
a importância de cada propriedade.
Você também irá aprender a importância de um fluxograma para a construção de um algoritmo e como a
construção destes fluxogramas poderá ser utilizada para representar um algoritmo.

 Saiba mais
Com a ferramenta gratuita diagrams.net (draw.io), é possível criar fluxogramas de uma forma
simples, sem a necessidade de criar contas ou realizar login.
A ferramenta gratuita Portugol Webstudio é voltada para o teste da lógica de programação, em
linguagem natural, para iniciantes no aprendizado de algoritmos. Você poderá ver um exemplo
clicando no link “Abrir Exemplo” e, ao clicar em “Novo Arquivo”, poderá criar a sua própria lógica. Inicie
a partir do exemplo Entrada e Saída à Olá, mundo. É o mais simples e o que você poderá reproduzir de
forma mais fácil. A partir daí, vá seguindo com os demais exemplos, sempre tentando aglutinar os
exemplos aprendidos em um mesmo arquivo.

Aula 2

EXECUÇÃO SEQUENCIAL E ESTRUTURAS DE DECISÃO


Nesta aula, você aprenderá a estrutura básica necessária para elaboração de um programa de
computador.
29 minutos

INTRODUÇÃO
Olá, estudante!
Nesta aula, você aprenderá a estrutura básica necessária para elaboração de um programa de computador,
quais são as estruturas sequenciais que podem ser utilizadas e quais elementos podem ser utilizados como
formas de decisão no seu código, que irão permitir que o fluxo principal seja alternado para outro fluxo,
conforme o teste de uma condição específica (que poderá dar verdadeiro ou falso como resultado).
Ao final desta aula, você será capaz de criar um código simples, contendo estruturas sequenciais e de
decisão.
Lembre-se que você é responsável pelo seu aprendizado, então, não se limite apenas ao visto em aula, mas
busque enriquecer seus conhecimentos por meio de outras fontes confiáveis.
Bons estudos!

ESTRUTURAS SEQUENCIAIS E CONDICIONAIS DE UM ALGORITMO


Um algoritmo, para que possa ser legível e interpretado por um computador ou outra pessoa, precisa seguir
uma estrutura básica, mantendo sua organização lógica e seguindo um fluxo principal, que irá culminar no
resultado (objetivo final) desejado.
Então, é preciso que as estruturas sequenciais, como a declaração de variáveis (endereços de memória
que irão receber valores que variam ao longo do tempo) e declaração de constantes (informações que são
definidas uma única vez na lógica, não sofrendo alterações ao longo do tempo) precisam estar organizadas
logo no início do seu algoritmo. É possível definir valores para as variáveis declaradas, por meio do processo
de atribuição, que pode ser proveniente da execução de uma operação matemática ou um número já
definido.

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&ati… 5/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

Uma característica de uma variável é a sua tipificação, ou seja, ela irá armazenar valores de um mesmo tipo
de dados, que pode ser inteiro, real (ponto flutuante), caractere (que armazena texto, podendo ser um ou
mais caracteres) e lógico (também conhecido como booleano, por armazenar os valores verdadeiro ou
falso). Então, se uma variável é declarada como inteiro, ela não poderá armazenar números com pontos
flutuantes ou informações textuais, pois irá contra a sua tipificação.

0
seõçatona reV
Figura 1 | Fluxo para declaração de variáveis

Fonte: adaptada de Forbellone (1995).

A Figura 1 apresenta a forma como uma variável deve ser declarada. Primeiro, você deverá definir qual será
o tipo de dado (ou tipo primitivo) que ela irá armazenar, seguindo-se do caractere “:” e do nome
(identificador) que irá representar a sua variável. Para finalizar a sua declaração, você deverá utilizar o
caractere “;”, indicando a finalização do comando.
Um exemplo simples de declaração de variáveis.

caractere : nomePaciente;
inteiro : idade;
real : valorConsulta;
logico : ehPrimeiraConsulta;

O exemplo mostra algumas variáveis sendo declaradas com seus respectivos tipos primários associados.
Então, temos uma variável que irá armazenar texto, com identificador nomePaciente, uma variável que irá
armazenar números inteiros, com identificador idade, uma variável que irá armazenar números com ponto
flutuante, com identificador valorConsulta e uma variável que irá armazenar um valor lógico (verdadeiro ou
falso), com identificador ehPrimeiraConsulta.
Com estas variáveis declaradas, você poderá solicitar informações (entrada de dados) ao usuário que
executará sua aplicação ou armazenar resultado de operações matemáticas (cálculos utilizando números
simples ou outras variáveis). Estas operações irão seguir uma sequência lógica, que irá representar os
passos do seu algoritmo. A seguir veja um exemplo de um algoritmo contendo uma estrutura sequencial
simples para ler e escrever um número informado pelo usuário.

1 inteiro : numero;
2 leia (numero);
3 escreva "o número digitado foi: " + numero;

Observe que, as operações acontecem de forma sequencial, ou seja, primeiro (linha 1) é declarada a variável
que irá armazenar o valor informado pelo usuário, que será numérico. Em seguida, na linha 2, você irá
solicitar ao usuário que digite um valor e, na linha 3, o valor digitado será concatenado (símbolo de +) ao
texto entre aspas duplas, apresentando qual foi o valor digitado.
É possível, além de realizar operações simples de atribuição, também acrescentar comandos condicionais,
que irão realizar uma avaliação lógica de uma condição e, a depender do resultado verdadeiro ou falso,
alterar o fluxo principal para alternativos. O comando condicional mais simples para testar uma condição
é o se, que pode ser estruturado conforme exemplo a seguir.

Se <condição_a_ser_testada> Então
Lógica, caso verdadeira a condição
Senão
Lógica, caso falsa a condição

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&ati… 6/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

O fluxograma que representa uma condicional simples se deve ser elaborado conforme apresentado na
Figura 2.

Figura 2 | Fluxograma para uma estrutura de decisão simples

0
seõçatona reV
Fonte: elaborada pela autora.

A Figura 2 apresenta o fluxo para uma condicional simples se. A partir do teste de uma condição, caso a
resposta seja verdadeira, então uma sequência específica de comandos deverá ser executada. Caso o
resultado lógico do teste seja falso, então um outro conjunto de comandos poderá ser executado. Após o
término de execução da estrutura condicional, o algoritmo irá retomar seu fluxo principal de passos até a
sua conclusão. Iremos apresentar um exemplo prático em momento posterior nesta aula.
Também é possível fazermos uma condição mais complexa, que envolva diferentes opções de resultado,
conhecida como escolha. Um comando do tipo escolha irá avaliar o valor de uma variável simples
declarada conforme uma lista de diferentes opções. A lógica do seu algoritmo, então, poderá ser alterada
para a opção que o valor for igual ao valor contido na variável. A seguir veja a estrutura condicional
complexa escolha.

Escolha <variável>:
caso <valor_variável1>:
<sua lógica>
caso <valor_variável2>:
<sua lógica>
caso <valor_variável3>:
<sua lógica>
caso contrário:
<sua lógica>

Com a estrutura condicional complexa escolha, cujo formato de declaração está apresentado, você poderá
testar o valor de uma variável dentre um conjunto de valores, construindo uma lógica diferente para cada
possibilidade de valor. Caso nenhuma das possibilidades listadas seja atendida, o fluxo irá seguir a lógica do
caso contrário.
O fluxograma que representa uma condicional complexa escolha segue o modelo apresentado na Figura 3.

Figura 3 | Fluxograma para a estrutura condicional complexa escolha

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&ati… 7/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

0
seõçatona reV
Fonte: elaborada pela autora.

A Figura 3 apresenta como deverá ficar um diagrama de fluxo para uma condicional do tipo escolha. A
escolha se dará a partir do valor que uma variável poderá assumir, sendo executado o bloco de instruções
que irá corresponder ao valor já conhecido e que a variável esteja assumindo no momento do teste. Caso
nenhum dos valores possíveis seja igual ao valor atual da variável testada, então a cláusula caso contrário
terá suas instruções executadas (comportamento padrão).

COMO E QUANDO UTILIZAR CADA TIPO DE ESTRUTURA EM UM ALGORITMO


Vamos iniciar com um exemplo de algoritmo simples, para que você possa entender em qual momento
poderá utilizar cada tipo de estrutura apresentada anteriormente.
Caso você precise construir uma lógica para testar se a idade informada pelo usuário é menor ou maior que
60 anos, você irá utilizar uma estrutura condicional simples da seguinte forma:
• Caso a idade informada seja menor que 60 anos, então você deverá apresentar a mensagem “Idade menor
que 60”;
• Caso a idade informada seja maior ou igual a 60, a mensagem apresentada deverá ser “Idade igual ou
superior a 60”.
Para transcrever a lógica acima apresentada para um algoritmo, você deverá utilizar uma estrutura
condicional se – senão simples, como mostrado a seguir.

1 se (idade < 60) então

2 escreva "Idade menor que 60.";

3 senão
4 escreva "Idade maior ou igual a 60";

Porém, no exemplo apresentado, não é possível saber se a idade informada é igual a 60 ou maior, caso
entre na condição senão. Então, vamos alterar a lógica para apresentar uma mensagem personalizada para
cada faixa etária, da seguinte forma:
• Caso a idade do usuário esteja entre 16 e 18 anos, você irá apresentar a mensagem “Olá, adolescente!”;
• Caso a idade do usuário esteja entre 19 e 59 anos, você irá apresentar a mensagem “Olá, adulto!”;
• Caso a idade do usuário esteja acima de 60 anos, você irá apresentar a mensagem “Olá, idoso!”;
• Caso a idade não do usuário for abaixo de 16 anos, a mensagem deverá ser “Não permitido uso por
pessoas com idade inferior a 16 anos.”.
Existem formas diferentes de construir esta lógica. Caso você tenha listado os passos do algoritmo utilizando
o operador condicional simples se, você deverá realizar um teste para cada condição, ou seja, um para cada
faixa etária que se deseja verificar a idade que o usuário informou. Isso irá encadear vários comandos
condicionais se, para a resolução do algoritmo proposto.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&ati… 8/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

1 se (idade >= 16 e idade <=19) então


2 escreva “Olá, adolescente!”;

3 senão se (idade >=20 e idade <=59) então


4 escreva “Olá, adulto!”;

0
5 senão se (idade >= 60) então
6 escreva “Olá, idoso!”;

seõçatona reV
7 senão
8 escreva “Não permitido uso por pessoas com idade inferior a 16 anos.”;

Perceba, conforme o apresentado, que o teste de cada se irá retornar um valor lógico verdadeiro ou falso.
Além disso, a idade informada pelo usuário, antes que os testes sejam feitos, deverá ser lida pela sua lógica,
caracterizando então a necessidade de armazenamento temporário desta informação em uma variável do
tipo inteiro.
Porém, estamos considerando que o usuário já irá informar a idade dele, não a data de nascimento para
que o cálculo da idade seja feito, a partir do ano atual. Então, seguindo esta linha de raciocínio, você deverá
listar os passos iniciais do seu algoritmo como:

1. Solicitar ao usuário que informe sua idade;


2. Armazenar a idade informada em uma variável para testes;

3. Testar a idade informada para cada faixa etária desejada.

O comando condicional complexo escolha serve para que você possa simplificar a sua lógica, em caso de
muitas condicionais simples se aninhadas. Trocando o tipo de estrutura por uma escolha, você poderá
testar, em uma única condição, todas as opções que desejar como possiblidades, possibilitando, ainda, a
definição de uma mensagem padrão, caso nenhuma das opções sejam atendidas.
Uma diferença, porém, entre os comandos condicionais simples se e complexo escolha, é o tipo de teste
que deve ser feito para que o fluxo principal possa ser alternado. Enquanto o se poderá ter mais de uma
condição em seu teste, como o exemplo se (idade > 18) e (nome = ‘João’ ou nome = ‘Maria’) então, o
condicional escolha irá selecionar, dentre uma lista de valores, os que podem ser assumidos por uma
determinada variável, sem, efetivamente, testar uma ou mais condições.
Um exemplo de uso da estrutura condicional escolha pode ser visto a partir da alteração do algoritmo
apresentado a seguir.

1 escreva "Digite sua faixa etária: 1 - Adolescente; 2 - Adulto; 3 - Idoso";

2 leia (faixa_etaria);
3

4 escolha(faixa_etaria)
5 caso 1

6 escreva “Olá, adolescente!”;

7 caso 2
8 escreva “Olá, adulto!”;

9 caso 3
10 escreva “Olá, idoso!”;

11 caso contrario:
12 escreva “Não é uma opção válida.”;

No exemplo, fizemos um pequeno ajuste solicitando que o usuário informe números em uma faixa já
esperada (1, 2 ou 3), indicando sua faixa etária. Qualquer outro número informado será considerado opção
inválida.

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&ati… 9/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

UTILIZANDO ESTRUTURAS SEQUENCIAIS NA CRIAÇÃO DE UM ALGORITMO


Para que você ponha em prática todo o conteúdo estudado nesta aula, iremos iniciar com um exemplo de
um algoritmo básico, contendo uma estrutura condicional simples se.
O exemplo inicial consiste na criação de um algoritmo para o cálculo de um desconto de 10% em cima de

0
um valor inteiro positivo informado pelo usuário, apresentando, como resultado, o valor descontando (que
irá representar os 10%). Se o valor descontado for igual ou superior a 20, então apresente a mensagem

seõçatona reV
“Valor inicial acima de 200”. Caso o valor descontado seja inferior a 20, então apresente a mensagem “Valor
inicial entre 0 e 199”.

1 Ler valor
2 Calcular desconto de 10% em cima do valor lido

3 Escrever valor do desconto de 10% calculado


4 Se valor do desconto for igual ou superior a 20

5 Apresentar mensagem “Valor inicial acima de 200”


6 Se valor do desconto for inferior a 20

7 Apresentar mensagem “Valor inicial entre 0 e 199”

Conforme os passos apresentados para o algoritmo proposto, teremos, como primeira ação, que solicitar
um valor de entrada ao usuário. Este valor, no entanto, deverá ser armazenado de forma temporária, até
que uma nova solicitação seja feita. Também deverá armazenar o resultado do valor do desconto de 10%
calculado, para que possa ser apresentada a mensagem coerente com o resultado, após a execução do teste
condicional.

1 inteiro : valor;
2 inteiro : resultadoDesconto;

3
4 leia(valor);

5 resultadoDesconto = valor * 0,10;


6

7 se (resultadoDesconto >= 20) então


8 escreva(“Valor inicial acima de 200”);

9
10 se (resultadoDesconto < 20) então

11 escreva(“Valor inicial entre 0 e 199”);

Vimos um algoritmo em pseudocódigo. Note que, nas linhas 1 e 2, as variáveis que serão utilizadas no
código estão sendo declaradas, sendo elas a variável valor, que será informada pelo usuário, e a variável
resultadoDesconto, que armazenará o valor do desconto de 10% sobre o valor informado. A linha 5 realiza
uma operação de atribuição do cálculo dos 10% sobre a variável valor à variável resultadoDesconto. As
linhas 7 e 10 apresentam o operador condicional simples se sendo utilizado para testar o valor do resultado
obtido com o cálculo dos 10%. O teste deverá sempre retornar um verdadeiro ou falso, sendo que, no
exemplo apresentado, apenas o resultado verdadeiro irá apresentar a mensagem contida na ação escreva
em cada teste.
Note que, neste exemplo, podemos aperfeiçoar nossa lógica fazendo uma pequena modificação nas linhas 7
e 10. Você poderá utilizar a condição senão para o condicional se da linha 7, não sendo necessário fazer um
novo teste se, como apresentado na linha 10. Então, veja o exemplo de alteração da lógica para uso do
condicional senão.

1 inteiro : valor;
2 inteiro : resultadoDesconto;

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 10/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

4 leia(valor);
5 resultadoDesconto = valor * 0,10;

6
7 se (resultadoDesconto >= 20) então

8 escreva(“Valor inicial acima de 200”);

0
9 senão

10 escreva(“Valor inicial entre 0 e 199”);

seõçatona reV
A troca do condicional se, apresentado pelo condicional senão, apresentado na linha 9 só é possível pois
não existem outras opções, para o algoritmo apresentado, de valores que a variável resultadoDesconto
poderá assumir. Para cada condicional se, você poderá utilizar um senão, que irá ser executado caso o teste
no se dê negativo.
Quando se utiliza o senão, qualquer outro valor que a variável resultadoDesconto assuma, inclusive menor
que zero, irá apresentar a mensagem “Valor inicial entre 0 e 199”, o que não está de acordo com o nosso
requisito inicial. Então, é possível que um teste, ao dar negativo, possa efetuar um novo teste, em sua
cláusula senão, conforme o exemplo de alteração do algoritmo para inclusão de se aninhado.

7 se (resultadoDesconto >= 20) então


8 escreva(“Valor inicial acima de 200”);

9 senão se (resultadoDesconto > 0) então


10 escreva(“Valor inicial entre 0 e 199”);

11 senão
12 escreva(“Valor inicial menor que 0”);

Na linha 9 do novo exemplo, em comparação com a linha 9 do exemplo anterior, foi alterada para realizar
um novo teste condicional se, em cima da variável resultadoDesconto, para saber se seu valor é maior que
zero (atendendo, portanto, ao requisito de número inteiro positivo). Caso não seja um inteiro positivo, o
fluxo alternará para a linha 11, apresentando a mensagem de “Valor inicial menor que 0”.

VÍDEO RESUMO
Olá, estudante! Neste vídeo, você irá aprender como um algoritmo deve ser estruturado, sendo composto
por elementos sequenciais e condicionais. Irá aprender, também, um exemplo prático da estrutura
condicional complexa escolha. Seu código, ao final do vídeo, poderá ser elaborado de modo a realizar
tomada de decisões simples e complexa e alterar o fluxo principal para fluxos alternativos, dependendo da
resposta a cada decisão.

 Saiba mais
Por meio do projeto Portugol, escolhendo a opção “Abrir Exemplo” à Algoritmos sequenciais, você irá
encontrar exemplos práticos para a definição de variáveis (exemplo “Troca Variáveis”), além da
utilização de condicionais simples (exemplo “Maioridade penal”). Ao escolher o menu “Desvios
condicionais”, ainda nos exemplos disponíveis, é possível ver um exemplo de uso do condicional
complexo escolha em “Escolha – Caso”, além dos demais exemplos, que apresentam variações do uso
do condicional se.

Aula 3

ESTRUTURAS DE REPETIÇÃO
Nesta aula, você aprenderá os conceitos e a utilização das principais estruturas de repetição
de trechos de código em um algoritmo.
31 minutos

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 11/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

INTRODUÇÃO
Olá, estudante!
Nesta aula, você aprenderá os conceitos e a utilização das principais estruturas de repetição de trechos de
código em um algoritmo. Irá aprender em quais situações deverá aplicar cada uma das estruturas

0
apresentadas, o que são condições de parada e como elaborá-las para cada tipo de laço de repetição.
Também serão apresentados os principais símbolos para representação dos laços de repetição em

seõçatona reV
fluxogramas. Desta forma, os diagramas de fluxo que você irá criar serão mais completos, podendo
representar lógicas mais complexas.
Lembre-se que você é responsável pelo seu aprendizado, então, não se limite apenas ao visto em aula, mas
busque enriquecer seus conhecimentos por meio de outras fontes confiáveis.
Bons estudos!

O QUE SÃO ESTRUTURAS DE REPETIÇÃO E COMO UTILIZÁ-LAS


Em sua lógica para a resolução de uma determinada tarefa do dia a dia, você poderá precisar que um trecho
desta tarefa se repita por uma quantidade limitada de vezes (até que uma condição de parada seja
satisfeita). Um bom exemplo é quando implementamos um algoritmo para subir uma escada. Como você
não sabe, logo no começo do processo, quantos degraus serão necessários subir para que se chegue ao
topo da escada, seu algoritmo deverá fazer uma sequência de passos, subindo cada degrau
individualmente, até que não existam mais degraus a subir e, consequentemente, se tenha chegado ao topo
da escada (objetivo final).
A ação de subir um degrau e realizar um teste (se chegou ou não ao topo) é listada uma única vez na
sequência de passos lógica do seu algoritmo, porém, esta ação se repetirá até que uma condição de parada
seja satisfeita (que é chegar ao topo da escada).
Existem diferentes formas de implementar uma estrutura de repetição, como apresentado por Forbellone
(1993), sendo que cada uma será utilizada conforme a lógica que se deseja construir e os dados disponíveis
sobre o trecho que deverá ser repetido (que denominamos iteração).
O primeiro laço de repetição que você aprenderá é o enquanto – faça. Neste caso, a lógica deve ser
entendida como enquanto uma condição for verdadeira, então faça <sequência de comandos>. A partir
do momento que o teste desta condição especificada tiver resultado lógico falso, então o laço não mais se
repetirá, permitindo que as demais instruções declaradas após este laço sejam executadas.
Um outro tipo de estrutura de repetição é o para – até – faça, no qual um número de repetições já
conhecido é informado para que o trecho da lógica seja repetido. Então, voltando ao exemplo do algoritmo
para subir uma escada, caso seja conhecida a quantidade de degraus que serão percorridos por quem
desejar subir a escada, esse número exato poderá ser utilizado para que a iteração do trecho da lógica seja
feita.
Porém, nem sempre é possível conhecer, em um momento prévio, a quantidade de vezes que um
determinado trecho da lógica será executado, mas sabe-se que ele deve ser executado ao menos uma vez,
antes que uma condição de parada possa ser testada e, caso a condição seja dada como falsa, então o
trecho será executado novamente e o teste será repetido até que dê verdadeiro, finalizando a sequência de
repetições. A esta estrutura, damos o nome de repita até.
Quando construirmos um fluxograma, além de comandos sequenciais e estruturas condicionais, você
poderá representar as estruturas de repetição apresentadas, utilizando uma combinação de símbolos de
decisão, controle de fluxo e leitura de dados (caso necessário), além do símbolo de preparação, conforme
apresentado na Tabela 1.

Tabela 1 | Símbolos utilizados em fluxogramas com laços de repetição

Elemento Significado

Preparação para início de um fluxo para – até – faça, indicando


qual variável irá controlar o fluxo, seu valor inicial e final.

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 12/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

Elemento Significado

Indica leitura de dados já armazenados, fornecidos pelo usuário.

0
Indica entrada de dados de forma manual pelo usuário.

seõçatona reV
Indica uma estrutura condicional (pergunta) que poderá levar a
fluxos diferentes, conforme a resposta (sim ou não).

Indica um conector, que poderá representar o início de um fluxo


ou, para laços de repetição, o início do laço.

Indica um bloco de comandos a ser executado, como fluxo


alternativo a uma condição.

Indica a finalização de um fluxograma.

Fonte: elaborada pela autora.

A Tabela 1 apresenta símbolos que podem ser utilizados na elaboração de fluxogramas que utilizam laços de
repetição. Muitas vezes, é necessário que o usuário forneça dados para que o algoritmo possa realizar um
processamento ou fazer algum cálculo matemático para se obter um resultado. Desta forma, a leitura de
dados deverá preceder laços que irão se repetir até que um objetivo seja alcançado.
Quando se deseja subir uma escada, por exemplo, é possível que seja necessário percorrer vários degraus,
sendo que cada escada terá um número finito, porém diferente da quantidade de degraus de outras
escadas existentes. Iremos utilizar este exemplo para apresentar as mais variadas formas de utilização dos
laços de repetição, ainda nesta aula.

COMPREENDENDO AS SITUAÇÕES-PROBLEMA MAIS ADEQUADAS PARA CADA


TIPO DE ESTRUTURA DE REPETIÇÃO
Para que você possa compreender a sintaxe de cada laço de repetição e em quais situações aplicar cada
uma, vamos utilizar o exemplo já apresentado de algoritmo para subir uma escada.
Para que sejam percorridos degrau a degrau, é necessário que um laço de repetição aconteça, já que não se
sabe, ao certo, quantos degraus serão percorridos até que a escada chegue ao seu fim. Cada laço terá, por
sua vez, uma condição de parada diferente, ou seja, um teste que deverá ser executado para saber se
haverá ou não necessidade de subir mais um degrau.
A seguir veja o exemplo da condição para se utilizar o laço enquanto – faça.

1 enquanto <condição de parada> então faça

2 <lógica a ser executada caso condição de parada for verdadeira>


3 fim enquanto

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 13/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

A linha 1 indica o início do laço de repetição. Caso a condição seja verdadeira, então, os comandos da linha
2 serão executados, caso seja falsa, o fluxo terá sua execução interrompida.
A Figura 1 apresenta uma comparação entre a estrutura de um fluxograma para o laço enquanto – faça e
um exemplo de lógica real. Considerando o algoritmo da escada, a condição de parada é a pergunta “a
quantidade de degraus já percorridos é menor ou igual à quantidade total de degraus?”. Caso a resposta

0
seja sim, então mais um degrau será percorrido, repetindo o teste até que todos os degraus tenham sido
percorridos.

seõçatona reV
Figura 1 | Fluxograma para um laço enquanto – faça

Fonte: elaborada pela autora.

Em outro laço de repetição, o repita – até, todo o ciclo é executado ao menos uma vez para que, após cada
execução, a condição de parada possa ser testada e, caso falso, então uma nova iteração será feita, porém,
caso verdadeiro, então a execução será interrompida. Veja a seguir a sintaxe do laço de repetição repita –
até.

1 repita
2 <lógica a ser executada caso condição de parada for falsa>

3 até <condição de parada>

Na linha 1, o início do laço de repetição com a palavra reservada repita. A linha 2 deverá englobar todas as
instruções que serão executadas, pelo menos uma vez, até que o teste da condição de parada seja
verdadeiro.
Fazendo uma analogia com o exemplo da escada, a condição de parada deve ser “até que a quantidade de
degraus percorrida seja igual à quantidade total de degraus informada”.

Figura 2 | Fluxograma para o laço repita – até

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 14/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

0
seõçatona reV
Fonte: elaborada pela autora.

A Figura 2 apresenta o fluxograma para o laço de repetição repita – até, fazendo uma comparação com o
fluxograma para a lógica da escada. A condição de parada deverá ser testada apenas após ao menos uma
iteração do ciclo. Perceba que, em comparação com a lógica utilizada para o laço enquanto – faça, a
condição de parada é alterada para até que a quantidade de degraus percorridos seja igual ao máximo
de degraus da escada. Além disso, como o laço deverá acontecer ao menos uma vez, a variável
qtdDegraus irá iniciar em zero, não mais em um (como no enquanto – faça), sendo incrementada em uma
unidade antes de cada teste.
Utilizando o exemplo da escada, temos que uma escada é composta por um ou mais degraus, justificando a
execução do laço ao menos uma vez.
Um outro laço, conhecido como para – até – faça, irá fazer uma iteração crescente ou decrescente de uma
variável, partindo de um valor inicial, até se atingir um valor final. Ao se chegar ao valor final, que é a
condição de parada deste laço, o ciclo será interrompido. Veja a seguir a sintaxe do laço para – até – faça.

1 para <variável> de <início> até <final> faça


2 <lógica a ser executada caso o valor da variável seja diferente
do valor final>

3 fim para

A Figura 3 apresenta o fluxograma para um laço de repetição do tipo para – até – faça. Este fluxo utiliza o
símbolo de preparação, que contém a configuração inicial do fluxo, sendo uma variável e seus valores
inicial e final. É possível definir, também, um incremento, ou seja, um valor que será somado ao inicial
para se chegar ao final (também conhecido como passo), sendo necessário apenas caso o incremento não
seja sequencial.

Figura 3 | Fluxograma para o laço para – até – faça

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 15/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

0
seõçatona reV
Fonte: elaborada pela autora.

Considerando ainda o exemplo da escada, a lógica do para – até – faça pode ser aplicada quando se pensa
“para quantidade degraus percorridos de 1 até quantidade máxima degraus, incrementando em uma
unidade, faça”. Perceba que, neste laço, não é necessário que você faça o incremento manual da variável
qtdDegraus, que é feita de forma automática pelo laço. Além disso, não é necessário inicializar a variável
qtdDegraus, já que ela irá receber um valor inicial no momento da declaração do laço.

APLICANDO ESTRUTURAS DE REPETIÇÃO EM ALGORITMOS


A aplicação de cada tipo de laço de repetição será determinada pela necessidade de execução da lógica e
pela posição do teste de parada. Caso o teste de parada necessite ser executado primeiro, é preciso utilizar
o laço enquanto faça. Nesta situação, você não sabe quantas iterações serão executadas ao certo, mas
deverá realizar o teste antes de cada nova execução.
O laço enquanto faça irá repetir uma sequência lógica de passos até que uma determinada condição se
torne verdadeira, percorrendo, por exemplo, uma coleção de dados em busca de um dado que satisfaça a
condição de parada. Um exemplo poderá ser apresentado fazendo alusão ao nosso algoritmo para subir os
degraus de uma escada. Como não se sabe, ao certo, quantos degraus a escada tem e você deseja utilizar o
mesmo algoritmo (mesma lógica) para percorrer diferentes escadas (com mais ou menos degraus), então
você poderá pensar conforme o algoritmo para subir uma escada com enquanto – faça, apresentado a
seguir.

1 inteiro : qtdDegraus;

2 inteiro: topoEscada;

4 leia(topoEscada);
5 qtdDegraus = 1;

7 enquanto (qtdDegraus <= topoEscada) faça

8 qtdDegraus = qtdDegraus + 1; //sobe para o próximo degrau


9 escreva ("Subindo para o degrau " + qtdDegraus);

10 fim enquanto

No exemplo, será solicitado ao usuário que entre com a informação de quando se chegará ao topo da
escada (linha 7), com a quantidade total de degraus para se subir. O algoritmo, então, irá testar se o degrau
atual que o usuário está já é o topo e, caso ainda não se tenha chegado ao final da escada, irá subir para o
próximo degrau, por meio do incremento de uma unidade ao total de degraus já percorridos (linha 8). Após
se atingir o topo, ou seja, a quantidade de degraus já percorridos ser maior que o topo da escada
informado, então o laço deixará de se repetir. Note que, na linha 5, atribuímos um valor inicial para a
variável qtdDegraus, para que o laço se inicie a partir do primeiro degrau da escada.
A seguir, veja um exemplo de utilização do laço repita – até. Neste exemplo, a quantidade de degraus a ser
percorrida (variável qtdDegraus) será inicializada com valor zero, sendo incrementada em uma unidade até

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 16/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

que se torne igual à quantidade total do topo, informada pelo usuário. Uma diferença para o laço enquanto
faça é a forma de elaboração da condição de parada. Enquanto, no repita – até a condição de parada
deverá ser verdadeira para que as repetições sejam interrompidas, no laço enquanto faça a condição de
parada deverá ser falsa para que o fluxo seja interrompido.

0
1 inteiro : qtdDegraus;

seõçatona reV
2 inteiro: topoEscada;
3

4 leia(topoEscada);

5 qtdDegraus = 0;

6
7 repita

8 qtdDegraus = qtdDegraus + 1; //sobe para o próximo degrau

9 escreva ("Subindo para o degrau " + qtdDegraus);

10 até (qtdDegraus = topoEscada);

Quando se tem um número máximo de repetições para fazer a iteração de uma lógica, o laço de repetição
para – até – faça pode ser utilizado. Enquanto os laços enquanto – faça e repita – até são utilizados
quando não se sabe, exatamente, a quantidade de iterações que precisarão ser feitas, com o laço para esta
quantidade é bem definido, já que será o trecho da lógica será percorrido uma quantidade N de vezes, de
forma crescente ou decrescente, a partir de um contador inicial. A seguir veja um exemplo de aplicação da
estrutura de repetição para – até – faça.

1 inteiro : qtdDegraus;

2 inteiro: topoEscada;

4 leia(topoEscada);
5

6 para qtdDegraus de 1 até topoEscada faça

7 escreva ("Subindo para o degrau " + qtdDegraus);

8 fim_para;

A estrutura inicia na linha 6, o laço para – até – faça, de modo que a variável qtdDegraus terá seu início
com o valor 1, sendo incrementada de uma unidade até que seu valor seja maior que a variável
topoEscada, que é seu limite máximo, fazendo o ciclo interromper. Note que, na linha 7, o comando
escreva irá apresentar qual o degrau atual que está sendo percorrido.

VÍDEO RESUMO
Olá, estudante! Neste vídeo você aprenderá como aplicar cada laço de iteração na construção de seus
algoritmos, de modo a saber identificar as principais situações que necessitam de laços de repetição e quais
laços mais se adequam a quais situações. Também irá compreender a sintaxe correta de construção de cada
tipo de laço e como construir as condições de parada para cada estrutura de repetição .

 Saiba mais
Por meio do projeto Portugol, escolhendo a opção “Abrir Exemplo” à Laços de repetição, você irá
encontrar exemplos práticos para cada tipo de estrutura de repetição apresentada. Se atente à forma
de construção das condições de parada em cada tipo de laço.

Aula 4

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 17/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

VARIÁVEIS INDEXADAS
Nesta aula, você aprenderá o conceito e a aplicação de estruturas de armazenamento de
dados mais complexas, como vetores, matrizes e registros.

0
27 minutos

seõçatona reV
INTRODUÇÃO
Olá, estudante!
Nesta aula, você aprenderá o conceito e a aplicação de estruturas de armazenamento de dados mais
complexas, como vetores, matrizes e registros. Você deverá, ao final desta aula, compreender o
funcionamento de cada estrutura e a melhor situação para aplicar cada uma no processo de elaboração de
seus algoritmos, tornando-os mais completos e com suporte a lógicas mais complexas. Com o aprendizado
destas estruturas, você terá concluído o estudo das principais estruturas disponíveis para armazenamento e
manipulação de dados em algoritmos.
Lembre-se que você é responsável pelo seu aprendizado, então, não se limite apenas ao visto em aula, mas
busque enriquecer seus conhecimentos por meio de outras fontes confiáveis.
Bons estudos!

O QUE SÃO VETORES, MATRIZES E REGISTROS


Ao elaborar uma lógica para um algoritmo, muitas vezes, você poderá ter a necessidade de armazenar ou
manipular um conjunto de dados do mesmo tipo ou até de tipos diferentes. Pense, por exemplo, como você
faria para armazenar uma faixa de valores inteiros, como a idade de todas as pessoas de uma sala de aula,
ou o nome de todas estas pessoas. Ao declarar uma variável de um tipo primitivo, como inteiro ou caractere,
você estaria armazenando apenas um único valor por vez, o que não iria satisfazer a sua atual necessidade
(de armazenar um conjunto de valores).
Para que exista a possibilidade de armazenamento de um conjunto de valores de um mesmo tipo, temos o
que se conhece como vetor ou variáveis compostas homogêneas, conforme nos explica Forbellone
(1993).
Um vetor unidimensional é uma estrutura que tem uma quantidade delimitada de posições, como caixas
de correio que podem estar armazenando diferentes valores do mesmo tipo. Sendo assim, em analogia ao
exemplo das pessoas, o vetor seria do tipo caractere e armazenaria uma quantidade de valores que
corresponda ao total de pessoas da sala de aula, o que se define como posições do vetor. Cada posição,
então, irá armazenar um nome (ex.: posição 1 armazena o nome “Maria”, posição 2 armazena o nome “João”
e assim sucessivamente).
A denominação unidimensional é proveniente do conceito de existir uma única dimensão, ou seja, seguir
uma única direção (como uma fila indiana).

Figura 1 | Exemplo de vetor unidimensional

Fonte: elaborada pela autora.

A Figura 1 ilustra um exemplo de representação de um vetor unidimensional, no qual as informações são


armazenadas em sequência, sendo todas do mesmo tipo (caractere).
Existem outras situações, no entanto, que necessitam de uma estrutura de armazenamento mais complexa
que um vetor unidimensional, tendo mais de uma dimensão, ou seja, se comportando como uma tabela
(com linhas e colunas). Neste caso, podemos fazer uma analogia com o endereço de uma casa, no qual o
nome da rua deve ser procurado primeiro, seguindo-se do número da casa, encontrando, assim, o endereço
desejado. Trazendo este conceito para a elaboração de algoritmos, temos o que se denomina variáveis
compostas multidimensionais ou matrizes.
Uma matriz é composta por mais de uma dimensão, o que implica que, caso uma informação seja
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 18/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

adicionada ou pesquisada, será necessário percorrer todas as dimensões do vetor para que o objetivo (de
armazenamento ou pesquisa) seja atingido.
Um conceito em comum entre matrizes e os vetores unidimensionais, porém, é o armazenamento de um
único tipo de dados, ou seja, todas as informações armazenadas deverão, obrigatoriamente, ser do mesmo
tipo (inteiro, real, caractere, lógico).

0
seõçatona reV
Figura 2 | Exemplo de uma matriz ou vetor multidimensional

Fonte: elaborada pela autora.

A Figura 2 ilustra um exemplo de um vetor multidimensional, também conhecido como matriz. Neste caso,
para que uma informação seja armazenada ou consultada, é preciso que todas as dimensões sejam
percorridas, ou seja, caso você esteja interessado em acessar o nome “Nilo”, deverá ir até a linha 3, coluna 3
para que o objetivo seja alcançado.
O tipo mais complexo de armazenamento de dados são os registros, nos quais você poderá armazenar
diferentes tipos de dados que estejam correlacionados com um mesmo conceito, como o nome, a idade, o
endereço, CPF e altura de uma pessoa, por exemplo. Cada um destes dados está atrelado a um tipo
diferente de informação (inteiro, real e caractere), mas todos os dados estão correlacionados com a mesma
pessoa.
Cada informação armazenada por um registro é denominada campo deste registro. Então, pense no
registro como uma ficha de cadastramento, na qual cada campo da ficha corresponderá a um campo do
registro, conforme apresentado na Tabela 1.

Tabela 1 | Exemplo de uma ficha com diferentes tipos de informação sobre uma pessoa

Cadastro de pessoa

Nome: Fulano de Tal

Idade: 20 anos

Altura: 1,70m

CPF: 111.111.111 - 11

Endereço: Rua X, 1.

Fonte: elaborada pelo autor.

COMO APLICAR VARIÁVEIS INDEXADAS EM ALGORITMOS


Ao pensar na lógica para construção do seu algoritmo, você deve se deparar, em algum momento, com
situações nas quais é necessário armazenar uma coleção de dados, como uma faixa de valores. Nestes
casos, o tipo de estrutura que você vai utilizar dependerá de qual tipo de dados você deverá coletar.
Caso sejam vários valores, porém todos de um mesmo tipo, o ideal é a utilização de um vetor linear, ou
seja, uma estrutura homogênea unidirecional. Como exemplo, podemos citar o armazenamento de valores
de uma determinada quantidade de mercadorias (como os produtos de uma lista de compras), todas as
matrículas dos funcionários de um setor e assim por diante.
https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 19/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

Uma matriz, por outro lado, é composta por mais de uma dimensão, ou seja, mais de um vetor linear. Desta
forma, você poderá utilizar esta estrutura em situações nas quais necessite encontrar uma informação
dentro de uma determinada posição. Como exemplo, podemos citar os apartamentos de um prédio.
Digamos que cada andar tenha três apartamentos. Então, para que você acesse o terceiro apartamento do
quinto andar, por exemplo, você deverá se dirigir à quinta posição do vetor de andares (primeira dimensão)

0
e terceira posição do vetor de apartamentos (segunda dimensão). Considerando que a matriz prédio seria
representada como a junção de duas dimensões (vetor de andares e vetor de apartamentos) lineares, sua

seõçatona reV
representação visual seria como apresentada na Figura 3.

Figura 3 | Exemplo de uma matriz com duas dimensões

Fonte: elaborada pela autora.

Os andares, na Figura 3, representam a primeira dimensão, já que deverá ser a primeira informação a ser
percorrida para que você consiga chegar ao apartamento desejado. Em seguida, a numeração do
apartamento, a qual representa a segunda dimensão da matriz, deverá ser procurada.
Observe que, tanto em vetores lineares quanto em matrizes homogêneas, o tipo de dado que será
armazenado deve ser do mesmo tipo em todas as posições. Sendo assim, a matriz prédio irá armazenar,
para a posição três do quinto andar, o número 503 (que representa o número do apartamento), a posição
dois do quinto andar irá armazenar o número 502 e assim sucessivamente.
Já para situações heterogêneas, você deverá armazenar diferentes tipos de dados (como uma coleção de
dados) que se referirão a uma determinada entidade (um objeto ou algo concreto do mundo real).
Retornando ao exemplo do prédio, imagine que você queira armazenar os dados do proprietário de cada
unidade (nome completo, CPF, telefone de contato, data de nascimento). Neste caso, você deverá utilizar
uma matriz heterogênea, ou seja, que irá armazenar diferentes tipos de informações em suas posições.
Para tanto, deverá utilizar um registro, que irá conter todos os dados necessários para serem armazenados,
que poderá ser nomeado como proprietário. Então, você terá a representação apresentada na Figura 4.

Figura 4 | Conjunto de dados heterogêneos em um registro

Fonte: elaborada pela autora.

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 20/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

A Figura 4 apresenta o registro proprietário sendo armazenado em cada posição da matriz prédio. Desta
forma, para cada posição de apartamento do prédio, um conjunto de dados referentes ao proprietário será
armazenado, sendo estas informações de tipos primitivos diferentes (numérico, real, caractere ou lógico).

EXEMPLOS DE UTILIZAÇÃO DAS ESTRUTURAS INDEXADAS

0
Para utilizar uma estrutura indexada em sua lógica, você deverá, após escolher qual o tipo de estrutura que

seõçatona reV
fará uso, declará-la como uma variável, definindo o valor de cada dimensão, ou seja, quantas posições seu
vetor linear terá ou, caso seja uma matriz, qual a quantidade de linhas e colunas que ela terá. Já para o caso
dos registros, será necessário declará-los e definir seus campos (com os respectivos tipos).
Denominamos de índice a posição de uma informação em um vetor ou matriz. Então, caso você queira
armazenar ou recuperar uma informação em uma estrutura unidimensional ou multidimensional, será
necessário informar o(s) respectivo(s) índices para cada dimensão da estrutura, analogamente a um
endereço. Veja a seguir, um exemplo de declaração de um vetor linear

1 inteiro vetorMatriculas [10];

2 caractere vetorNomes[] = {"Maria", "João", "José"};

O exemplo apresenta duas formas de declaração de um vetor linear. Na linha 1, um vetor linear de 10
posições, que irá armazenar informações do tipo inteiro, é declarado. Já na linha 2, você encontra um vetor
de caracteres que está, ao mesmo tempo, sendo declarado e inicializado, ou seja, tendo seus valores iniciais
definidos. Ainda nesta linha 2, perceba que não é definida a quantidade de posições que o vetor irá
armazenar dentro dos colchetes. Isso acontece devido à quantidade de posições que deverão ser
armazenadas estar sendo definida pela quantidade de informações passadas na sua inicialização, ou seja,
três posições.
Após a declaração de um vetor, a sua utilização se dará por meio do acesso à posição que se deseja
armazenar ou ler. Veja a seguir operações básicas de leitura e atribuição em vetores.

1 inteiro vetorMatriculas [10];

2 caractere vetorNomes[] = {"Maria", "João", "José"};


3

4 vetorMatriculas[1] = 123;

5 vetorMatriculas[2] = 456;

6
7 escreva(vetorMatriculas[1]);

As linhas 4 e 5 apresentam como uma informação pode ser armazenada em uma posição de um vetor. É
preciso definir qual a posição válida do vetor que irá receber a informação, ou seja, qual o índice do vetor
que receberá a informação, sendo que esta precisa ser do mesmo tipo definido para o vetor. A linha 7, por
sua vez, apresenta como a informação previamente armazenada poderá ser lida (recuperada) e apresentada
ao usuário. Note que apenas o índice 1 do vetor (posição 1) está sendo acessado e terá sua informação
escrita na tela, enquanto as demais posições do vetor não terão suas respectivas informações exibidas ao
usuário. Veja a seguir, um exemplo de utilização de um laço de repetição para preenchimento de um vetor.

1 inteiro vetorMatriculas [10];

2 caractere vetorNomes[] = {"Maria", "João", "José"};


3 inteiro contador ;

5 para (inteiro = 1) até (inteiro = 10) faça

6 leia(vetorMatriculas[inteiro]);
7 fim - para;

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 21/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

O exemplo apresenta uma combinação de um laço de repetição para – até – faça com vetores. A linha 5
define um laço de repetição de uma variável do tipo inteiro que irá iterar pedindo que o usuário informe
valores (por meio da operação de leitura da linha 6), que serão atribuídos a cada respectiva posição do
vetor. Desta mesma forma, é possível realizar operações de escrita percorrendo cada posição de um vetor.
Veja o exemplo de declaração de uma matriz.

0
seõçatona reV
1 inteiro matrizPredio [5][3];

2
3 matrizPredio[1][1] = 101;

4 matrizPredio[1][2] = 102;

5 matrizPredio[1][3] = 103;

6 matrizPredio[2][1] = 201;
7 matrizPredio[2][2] = 202;

8 matrizPredio[2][3] = 203;

A linha 1 apresenta a declaração de uma matriz, que deve conter o tipo do dado que será armazenado, o
nome da variável e as dimensões, com suas respectivas quantidades de posições. Então, teremos cinco
linhas e três colunas para a variável matrizPredio. As linhas 3 a 8 apresentam como as posições da matriz
poderão ser acessadas, sendo necessário informar um valor para todas as dimensões definidas, ou seja,
indicar os índices que serão acessados para cada dimensão. Veja a seguir o exemplo de leitura e
preenchimento de uma matriz com laço de repetição para – até – faça.

1 inteiro matrizPredio [5][3];


2 inteiro contadorColunas;

3 inteiro contadorLinhas;

5 //Bloco para preenchimento da matriz


6 para (contadorLinhas = 1) até (contadorLinhas = 5) faça

7 para (contadorColunas = 1) até (contadorColunas = 3) faça

8 leia(matrizPredio[contadorLinhas][contadorColunas]);

9 fim - para;
10 fim - para;

11

12 //Bloco para escrita da matriz

13 para (contadorLinhas = 1) até (contadorLinhas = 5) faça


14 para (contadorColunas = 1) até (contadorColunas = 3) faça

15 escreva(matrizPredio[contadorLinhas]

[contadorColunas]);

16 fim - para;

17 fim - para;

O exemplo apresenta um exemplo de como deve ser feito o preenchimento e a leitura de uma matriz. O
bloco para – até – faça, definido na linha 6, deverá percorrer as linhas, sendo o mais externo, enquanto o
bloco para – até – faça definido na linha 7, irá percorrer as colunas, executando até o final de sua
quantidade de iterações. Desta forma, para cada linha (laço da linha 6), o laço da linha 7 irá executar três
vezes consecutivas.
Veja agora um exemplo de definição e utilização de um registro.

1 tipo proprietario = registro

2 | inteiro : cpf, dataNascimento;

3 | caractere : nomeCompleto, telefone;

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 22/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

5 leia (proprietario.cpf);

6 leia (proprietario.dataNascimento);

7 leia (proprietario.nomeCompleto);
8 leia (proprietario.telefone);

0
9

10 proprietario matrizPredioProprietario [5][3];

seõçatona reV
11
12 matrizPredioProprietario [1][1] = proprietario;

No exemplo, em sua linha 1, define o tipo de dados registro, que terá os campos CPF e dataNascimento
como do tipo inteiro, enquanto os campos nomeCompleto e telefone como do tipo caractere. Para acessar
cada campo, você deverá seguir os exemplos apresentados nas linhas 5 a 8. A linha 10 define uma matriz, do
tipo do registro proprietário definido, que irá armazenar, para cada posição, um registro com todas as
informações do proprietário daquela unidade.

VÍDEO RESUMO
Olá, estudante! Neste vídeo, você aprenderá as estruturas de armazenamento de dados homogêneas, como
os vetores unidimensionais e as matrizes, além da estrutura de armazenamento de dados heterogênea (os
registros). Irá aprender em quais situações deverá utilizar cada tipo de estrutura e verá exemplos práticos
de como aplicar estes conceitos ao elaborar seus algoritmos.

 Saiba mais
A manipulação de caracteres e inteiros pode ocasionar dificuldades na legibilidade do código,
principalmente pelas conversões implícitas que a linguagem C permite na execução dos programas.
Para essas construções específicas, Luís Damas organizou uma subseção em sua obra, com alguns
exemplos detalhadamente descritos.
O livro Linguagem C está na nossa biblioteca virtual, e o capítulo que aborda esse assunto está na
subseção Situações em que inteiros e caracteres não se devem misturar, na página 43.

REFERÊNCIAS
1 minutos

Aula 1
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação – A construção de algoritmos e estrutura
de dados. São Paulo: Makron Books, 1993.
PRESSMAN, R. S. Engenharia de software. São Paulo: Makron Books, 1995.

Aula 2
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação – A construção de algoritmos e estrutura
de dados. São Paulo: Makron Books, 1993.

Aula 3
FORBELLONE, A. L. V.; EBERSPÄCHER, H. F. Lógica de programação – A construção de algoritmos e estrutura
de dados. São Paulo: Makron Books, 1993.

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 23/24
12/10/2023, 00:34 wlldd_231_u2_alg_log_pro

Aula 4
FORBELLONE, A. Luiz Villar; EBERSPÄCHER, Henri Frederico. Lógica de Programação – A construção de
algoritmos e estrutura de dados. São Paulo:Makron Books, 1993.
Imagem de capa: Storyset e ShutterStock.

0
seõçatona reV

https://www.colaboraread.com.br/integracaoAlgetec/index?usuarioEmail=natalia.gois.santos%40gmail.com&usuarioNome=NATALIA+GOIS+DOS+SANTOS+LOPES&disciplinaDescricao=&atividadeId=3662476&a… 24/24

Você também pode gostar