Escolar Documentos
Profissional Documentos
Cultura Documentos
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
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!
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
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.
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).
Elemento Significado
Elemento que indica uma condição (pergunta) que irá alterar o fluxo
da execução, conforme a resposta (Sim ou Não).
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.
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.
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
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!
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
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.
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.
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).
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
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:
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.
2 leia (faixa_etaria);
3
4 escolha(faixa_etaria)
5 caso 1
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
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
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);
9
10 se (resultadoDesconto < 20) então
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
0
9 senão
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.
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!
Elemento Significado
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
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).
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.
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
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>
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”.
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.
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.
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.
1 inteiro : qtdDegraus;
2 inteiro: topoEscada;
4 leia(topoEscada);
5 qtdDegraus = 1;
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
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
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!
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
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
Idade: 20 anos
Altura: 1,70m
CPF: 111.111.111 - 11
Endereço: Rua X, 1.
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.
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.
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).
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
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.
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.
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.
3 inteiro contadorLinhas;
8 leia(matrizPredio[contadorLinhas][contadorColunas]);
9 fim - para;
10 fim - para;
11
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.
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
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