Logo Passei Direto
Buscar

Estruturas de Algoritmos

Ferramentas de estudo

Passei Direto Aniversário

Quer receber 70% de desconto para assinar o PasseIA?

Conteúdos escolhidos para você

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Conteúdos escolhidos para você

Prévia do material em texto

Unidade 2
Elementos de Algoritmos
Aula 1
Estruturas de Algoritmos Fundamentais
Estruturas de algoritmos fundamentais
Estruturas de algoritmos
fundamentais
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Olá, estudante!
Nesta primeira videoaula da Unidade, apresentaremos os
conceitos essenciais de algoritmos, sua definição e
aplicabilidade. Além disso, desenvolveremos os tópicos
introdutórios de funções e modularização. Aproveite esta
aula para agregar informações relevantes ao seu
aprendizado, e assim, expandir sua compreensão e
entendimento da área de algoritmos e lógica de
programação.
Estudante, esta videoaula foi preparada especialmente para
você. Nela, você irá aprender conteúdos importantes para a
sua formação profissional. Vamos assisti-la? 
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Ponto de Partida
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/06e2f84d-bacb-579d-8354-383da85a85bb.pdf
Olá, estudante! Seja bem-vindo à esta aula sobre estruturas
de algoritmos fundamentais. Em primeiro lugar, vamos
entender o que são algoritmos e algumas de suas
aplicabilidades. Posteriormente, abordaremos suas
propriedades e alguns exemplos práticos no que se refere à
sua aplicação. Traremos, também, conteúdos que
introduzirão o tema funções e modularização.
Estudar algoritmos não apenas aprimorará suas habilidades
de resolução de problemas, como também proporcionará
um entendimento mais profundo do funcionamento interno
dos programas e dos sistemas que moldam nosso cotidiano.
Além disso, você será capaz de compreender o quanto as
funções e a modularização desempenham papéis cruciais na
criação de códigos eficientes e organizados. Por meio das
explicações e exemplos dados, ficará claro que as funções
são blocos de construção fundamentais em qualquer
linguagem de programação e que a modularização, ao dividir
o código em partes menores e independentes, facilita a
compreensão e promove a reutilização e manutenção
eficiente de um software.
Diante desses pontos, como exemplo prático imagine que
em um posto de combustível movimentado, os funcionários
enfrentam dificuldades para registrar as vendas de maneira
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
eficiente. Para melhorar esse processo, você foi convidado a
criar um sistema simples que armazene informações
essenciais sobre as transações. Os dados a serem
registrados incluem o tipo de combustível escolhido pelo
cliente, a quantidade abastecida, além do preço por litro
dependendo do tipo de combustível.
Convidamos você a explorar o material da aula e a praticar
os conteúdos aqui trabalhados. Aproveite! 
Vamos Começar!
Vamos Começar!
Definição, conceito e
aplicabilidade dos algoritmos
Os algoritmos, muitas vezes considerados o ponto principal
da ciência da computação, desempenham um papel
determinante na resolução de problemas e na execução
eficiente de tarefas em diversas áreas. No âmbito da
programação, entender a definição e a aplicabilidade dos
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
algoritmos é essencial para qualquer desenvolvedor ou
cientista de dados. Nesta aula, exploraremos o que são
algoritmos, como eles são estruturados e como são
aplicados no mundo real.
Os algoritmos são sequências ordenadas de instruções que
visam realizar uma atividade específica ou solucionar um
problema. Eles são como receitas detalhadas, fornecendo
passos claros para atingir um resultado desejado. A
aplicabilidade dos algoritmos é vasta, abrangendo desde a
ordenação de dados até a resolução de complexos
problemas matemáticos. Por exemplo, o algoritmo Bubble
Sort organiza elementos em uma lista de forma ascendente
ou descendente, enquanto o algoritmo de Dijkstra é utilizado
para encontrar o caminho mais curto em redes. Vale lembrar
que esses exemplos são mais complexos e sua construção
exige uma maior habilidade.
Consideremos, pois, um exemplo mais simples, um
algoritmo em Portugol que utiliza comandos básicos de
entrada e saída. Esse algoritmo solicita ao usuário que insira
dois números, realiza a soma e exibe o resultado, como
podemos observar na Figura 1:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Exemplo de algoritmo com comandos básicos.
Fonte: elaborada pelo autor.
Neste exemplo, o algoritmo utiliza os comandos “escreva”
para exibir mensagens no console e “leia” para capturar a
entrada do usuário. Os números fornecidos são
armazenados nas variáveis “numero1” e “numero2”. Em
seguida, a soma é calculada e armazenada na variável
“resultado”, que é exibida ao usuário. Este é um exemplo
básico que demonstra o uso fundamental de entrada e saída
em algoritmos simples.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Outro exemplo clássico é o cálculo da média de um aluno.
Baseado em informações solicitadas para o usuário, é
possível apresentar o resultado de cálculos como a média
aritmética ou a média ponderada de uma turma de alunos,
ou até mesmo determinar qual aluno ficou com a maior
média da turma. Na Figura 2 a seguir, vemos um exemplo
desse algoritmo:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 2 | Cálculo da média de um aluno. Fonte: elaborada
pelo autor.
Note que a figura apresenta a criação das variáveis na linha
3. Nesse caso, todas as variáveis foram declaradas como
reais, pois existem valores nos cálculos de divisão que
podem retornar resultados fracionários. Em seguida, é
solicitado do usuário as notas e, após essa etapa, é realizado
o cálculo da média. O algoritmo finaliza apresentando o
resultado da média na tela do programa como uma
mensagem textual que acompanha o valor numérico.
Em síntese, compreender a definição e aplicabilidade dos
algoritmos é essencial para qualquer pessoa envolvida no
mundo da programação e da ciência de dados, uma vez que
possibilitam a automação de processos, a solução de
problemas básicos e complexos e a otimização de sistemas.
Portanto, mergulhar no entendimento e na prática dos
algoritmos é não apenas uma escolha sábia, mas uma
necessidade para quem busca excelência na área da
programação e na resolução de desafios computacionais.
Propriedades de um algoritmo
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
O aprendizado das propriedades de um algoritmo é
fundamental no campo da ciência da computação. Imagine
os algoritmos como os mecanismos complexos que
impulsionam a engrenagem por trás do funcionamento
eficiente dos softwares que utilizamos diariamente.
Compreender suas propriedades permite aprimorar, então,
a capacidade de resolução de problemas e criar soluções
mais eficazes para desafios complexos. Ao iniciar os estudos
nesse domínio, os futuros programadores aprimoram suas
habilidades técnicas, além de cultivar uma perspicácia
analítica que é essencial para navegar no cenário em
constante evolução da tecnologia.
Debruçar-se sobre os algoritmos e suas propriedades não se
trata, pois, de uma exploração acadêmica, mas de uma
habilidade indispensável para quem busca a perfeição na
arte da programação e da resolução de problemas
computacionais. Na sequência, apresentaremos alguns
exemplos práticos que englobam as principais propriedades
de um algoritmo:
1. Passo a passo para realizar uma tarefa
A característica de seguir um passo a passo em um algoritmo
é crucial para garantir a execução ordenada e lógica de uma
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
tarefa específica. Isso significa que cada ação é
cuidadosamente planejada e executada em uma sequência
predeterminada. A analogia pode ser feita com uma receita
de cozinha, na qual cada instrução precisa ser acompanhada
na ordem correta para se obter o resultado desejado. No
contexto da programação, a clareza e a precisão nos passos
são essenciais para evitar erros e garantir o desfecho
almejado. Observe, na Figura 3, o exemplo de um passo a
passo na realização de uma tarefa:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 3 | Exemplo em Portugol:média ponderada. Fonte:
elaborada pelo autor.
A propriedade de passo a passo é essencial para guiar a
execução de um algoritmo de maneira sequencial e lógica,
como este que calcula a média ponderada de três notas,
seguindo um processo ordenado de entrada, cálculo e
exibição do resultado.
2. Processamento e instruções lógicas
O processamento e as instruções lógicas são a essência do
funcionamento de um algoritmo. Cada passo do algoritmo
envolve a manipulação de dados através de operações
lógicas, como comparações, cálculos e tomadas de decisão.
Por exemplo, ao verificar se um número é positivo, o
algoritmo utiliza a instrução lógica “se” para comparar o
número com zero. Essas operações são a base que permite
que o algoritmo resolva problemas complexos,
decompondo-os em operações lógicas mais simples, como
vemos na Figura 4:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 4 | Exemplo em Portugol: verificação e divisibilidade
por 3. Fonte: elaborada pelo autor.
A propriedade de processamento e instruções lógicas é
exemplificada em um algoritmo que verifica se um número é
divisível por 3. Em outras palavras, o processamento envolve
a verificação lógica da condição de divisibilidade. Aqui, as
instruções lógicas determinam se o número é ou não
divisível por 3.
Siga em Frente...
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Siga em Frente...
3. Início e fim
A propriedade de ter um início e um fim é essencial para
estruturar e delimitar a execução de um algoritmo. O início é
o ponto de partida, onde são recebidos os dados ou
parâmetros necessários para realizar a tarefa. O fim, por sua
vez, marca o encerramento do processo, resultando na
conclusão da tarefa ou na produção do resultado desejado.
Essa estruturação clara proporciona uma melhor
compreensão do escopo do algoritmo, facilitando o controle
do desenvolvedor sobre o fluxo de execução, como na Figura
5:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 5 | Exemplo em Portugol: conversão de Celsius para
Fahrenheit. Fonte: elaborada pelo autor.
Na Figura 5, a propriedade de ter um início e um fim é
evidente em um algoritmo que converte temperatura de
Celsius para Fahrenheit. O início envolve a entrada da
temperatura em Celsius e o fim marca a exibição da
temperatura convertida.
4. Instruções claras e objetivas
Instruções claras e objetivas são fundamentais para garantir
que o algoritmo seja compreendido e executado
corretamente. A clareza nas instruções significa que cada
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
passo do algoritmo é descrito de maneira direta, sem
ambiguidades, evitando interpretações errôneas. A
objetividade, por seu turno, está relacionada à eficiência na
comunicação das ações a serem realizadas, sem informações
desnecessárias. Essas instruções são como um manual
detalhado que guia a execução do algoritmo de forma
inequívoca. Veja o exemplo a seguir:
Figura 6 | Exemplo em Portugol: verificação de número
primo. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
A clareza e objetividade nas instruções, como vemos na
Figura 6, são primordiais em um algoritmo que verifica se um
número é primo. A estrutura de controle de fluxo é clara,
tornando o algoritmo compreensível.
Em suma, cada uma dessas propriedades desempenha um
papel elementar na criação de algoritmos robustos e
eficientes. A sequencialidade garante uma execução
ordenada, o processamento e as instruções lógicas são a
essência da operação, o início e fim delimitam o escopo, e as
instruções claras e objetivas asseguram uma compreensão e
execução adequadas. Ao entender e aplicar essas
propriedades, os programadores são capazes de
desenvolver algoritmos mais eficazes, precisos e fáceis de
manter.
Introdução a funções e
modularização
As funções possuem grande relevância na construção de
algoritmos. Elas são blocos de código que realizam tarefas
específicas e podem ser chamadas de diferentes partes do
programa. Ao introduzir funções, a programação se torna
mais modular e compreensível. Imagine-as como
ferramentas especializadas no kit de um desenvolvedor,
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
cada qual projetada para executar um trabalho único. No
mercado da Tecnologia da Informação, isso se traduz em
eficiência e reutilização de código. Por exemplo, uma função
que valida senhas pode ser usada em diferentes partes de
um sistema, promovendo consistência e economizando
tempo de desenvolvimento. A seguir, veremos quatro
exemplos básicos e contextualizados de funções no campo
da TI.
1.  Validação de e-mail
Cenário: em um sistema de cadastro online, é necessário
validar se o endereço de e-mail fornecido pelos usuários
está no formato correto.
Função: uma função específica pode ser criada para
validar e-mails, sendo utilizada em várias partes do
sistema, desde o cadastro até a recuperação de senha.
2. Geração de relatórios
Cenário: um sistema de gerenciamento financeiro
precisa gerar relatórios mensais para os usuários.
Função: uma função especializada para gerar relatórios
pode ser desenvolvida, proporcionando uma abordagem
modular para lidar com diferentes tipos de relatórios.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
3.  Ordenação de lista
Cenário: um sistema de gerenciamento de tarefas
precisa exibir as tarefas em uma ordem específica, como
por data de vencimento.
Função: desenvolver uma função de ordenação que
aceite a lista de tarefas como entrada e retorne a lista
ordenada. Essa função pode ser usada sempre que for
necessário exibir as tarefas em uma ordem específica.
4. Conversão de moeda
Cenário: um aplicativo financeiro permite que o usuário
converta valores entre diferentes moedas.
Função: criar uma função de conversão de moeda que
aceite o valor a ser convertido, a moeda de origem e a
moeda de destino como parâmetros. Essa função
encapsula a lógica de conversão e pode ser chamada
sempre que uma conversão for necessária.
Dessa forma, conclui-se que, ao dominar os conceitos de
funções, os programadores podem organizar melhor seus
programas, facilitando a manutenção e a depuração destes.
Além disso, o uso adequado de funções promove a
abstração e a encapsulação, permitindo que partes do
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
código sejam isoladas e modificadas independentemente, o
que contribui para a escalabilidade e a flexibilidade do
software. Portanto, investir tempo no estudo das funções na
programação é fundamental para se tornar um
desenvolvedor mais competente e eficaz.
Quanto à modularização, podemos defini-la como o princípio
de dividir um sistema complexo em módulos ou
componentes independentes e interconectados. Esse
conceito traz inúmeras vantagens para o desenvolvimento
de software no mercado de TI. Em termos de desempenho, a
modularização permite a otimização de cada módulo
individual, melhorando a eficiência geral do sistema. Além
disso, ela também simplifica a manutenção, uma vez que
alterações ou atualizações podem ser feitas em módulos
específicos sem impactar o sistema como um todo. Isso se
traduz em economia de tempo e recursos, que são
essenciais no cenário tecnológico e na vida de um
desenvolvedor. A seguir, discorreremos sobre essas
vantagens com mais detalhes.
1. Manutenibilidade: ao dividir um sistema em módulos,
torna-se mais fácil localizar e corrigir problemas
específicos sem afetar outras partes do código. Isso
simplifica a manutenção e atualização do software.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
2. Reusabilidade de código: módulos bem definidos podem
ser reutilizados em diferentes partes do sistema ou
mesmo em projetos futuros, o que economiza tempo de
desenvolvimento e promove consistência no código.
3. Escalabilidade: sistemas modulares são mais fáceis de
escalar, pois novos módulos podem ser adicionados
conforme necessário, o que ajuda na adaptação do
sistema às mudanças nos requisitos.
4. Colaboração eficiente: a modularização permite o
trabalho colaborativo, pois diferentes equipes podem se
concentrar em módulosespecíficos sem interferir no
trabalho umas das outras.
Como pudemos notar por meio dos exemplos citados, a
modularização tem um papel importante no mercado de
Tecnologia da Informação (TI), pois oferece uma abordagem
organizada e escalável. Ao dividir um sistema complexo em
módulos independentes e interconectados, os
desenvolvedores podem aumentar a eficiência em
desenvolvimento, testes e manutenção de software. Isso
permite que equipes trabalhem de forma colaborativa em
diferentes partes do projeto, facilitando a identificação e
correção de erros, além de promover a reutilização do
código. A modularização também permite a integração de
novos recursos e a adaptação a mudanças nos requisitos do
cliente ou do mercado, tornando o processo de
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
desenvolvimento mais ágil e adaptável. Logo, a
modularização não somente melhora a qualidade e
confiabilidade dos produtos de software, como também
contribui para a entrega oportuna de soluções inovadoras e
eficientes para os clientes.
As funções e a modularização são, portanto, elementos de
grande importância no desenvolvimento de software e no
mundo da programação. Ao utilizar funções, os
desenvolvedores podem criar blocos de código reutilizáveis,
promovendo eficiência e coesão no desenvolvimento. A
modularização, por sua vez, traz vantagens significativas,
desde a melhoria do desempenho até a facilitação da
manutenção e escalabilidade do sistema. Esses princípios
formam uma ótima base para o desenvolvimento de
sistemas de qualidade que sejam flexíveis e fáceis de
manter, qualidades muito valorizadas no ambiente
tecnológico atual.
Vamos Exercitar?
Vamos Exercitar?
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Vamos retomar a situação apresentada no início da aula, na
qual em um posto de combustível movimentado, os
funcionários enfrentam dificuldades para registrar as vendas
de maneira eficiente. Para melhorar esse processo, é
necessário criar um sistema simples que armazene
informações essenciais sobre as transações. Os dados a
serem registrados incluem o tipo de combustível escolhido
pelo cliente, a quantidade abastecida, além do preço por litro
dependendo do tipo de combustível.
Vamos à resolução?
Registro do tipo de combustível
Solicite ao cliente tipo de combustível desejado (gasolina,
etanol, diesel etc.).
Criar uma variável do tipo “Caractere” que armazene o
tipo de combustível.
Registro da quantidade abastecida
Solicite ao cliente a quantidade de litros desejada para o
combustível escolhido.
Armazene a quantidade em uma variável do tipo “Real”,
pois a quantidade pode ser fracionada.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Registro do valor por litro
O valor por litro deve ser consultado na tabela de preços
do posto.
Armazene o valor por litro em uma variável do tipo
“Real”.
Cálculo do valor total
Calcule o valor total da compra multiplicando a
quantidade de litros pelo preço por litro.
Apresente o valor total ao cliente.
Este método simplificado de gerenciamento de transações
ressalta a relevância da utilização de variados tipos de dados
para armazenar informações em um posto de
abastecimento de combustível. A habilidade em lidar com
dados e realizar cálculos é essencial para assegurar um
serviço ágil e preciso aos clientes.
Saiba mais
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Saiba mais
Para saber mais sobre conceitos básicos de algoritmos, entre
os quais estão os tipos de dados e operadores aritméticos,
consulte o Capítulo 2 – Algoritmos e a Lógica de
Programação, do livro Algoritmos – Lógica para
Desenvolvimento de Programação de Computadores, de
Manzano e Oliveira, disponível no repositório da Biblioteca
virtual.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Capítulo 2 –
Algoritmos e a Lógica de Programação. In: Algoritmos –
Lógica para Desenvolvimento de Programação de
Computadores. São Paulo: Editora Saraiva, 2019, p. 29. 
Referências
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de
Janeiro: LTC, 2022.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos - Lógica
para Desenvolvimento de Programação de Computadores.
São Paulo: Editora Saraiva, 2019.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de
algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simplificando algoritmos. São Paulo: LTC,
2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para
computação. 2. ed. São Paulo: Cengage Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em
Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011.
Aula 2
Execução Sequencial e Estruturas de Decisão
Execução sequencial e estruturas de decisão
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Execução sequencial e
estruturas de decisão
Olá, estudante!
Nesta videoaula, temos como objetivo apresentar os
conceitos básicos de algoritmos que abrangem os primeiros
passos no desenvolvimento da tomada de decisão em
códigos. Além disso, abordaremos como deve ser a estrutura
de um código de decisão, que utiliza condicionais, e como ele
funciona.
Não perca a oportunidade de agregar informações valiosas
ao seu aprendizado e, assim, ampliar seu conhecimento e
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
compreensão da área de algoritmos. 
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
 
Ponto de Partida
Ponto de Partida
Olá, caro estudante! Seja bem-vindo à esta aula sobre
estrutura sequencial e estrutura de decisão, as quais
constituem a base para a construção lógica de programas.
As estruturas sequenciais são como os blocos de construção
iniciais de um projeto em que as instruções são executadas
em ordem linear, uma após a outra. Essa abordagem é
essencial para organizar o fluxo de execução do programa,
permitindo que a lógica siga de forma ordenada e
compreensível. Seja na simples exibição de mensagens ou
até em cálculos mais complexos, as estruturas de sequência
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/697353ab-bd7d-50f2-9fb7-c3fb606b02d5.pdf
fornecem um ponto de partida para qualquer programador
iniciante.
 À medida que avançamos, entramos no domínio da
estrutura de decisão, um conceito-chave para a tomada de
decisões dinâmicas em um programa. Através de
declarações condicionais, como “se” e “senao”, podemos
introduzir ramificações lógicas no fluxo do código. Essas
estruturas permitem que um programa escolha entre
diferentes caminhos de execução com base em condições
específicas, aumentando, assim, a flexibilidade e
adaptabilidade às aplicações.
Para ilustrar a aprendizagem dos conteúdos desta aula,
imagine que você precisa desenvolver um módulo para um
sistema de comércio eletrônico que oferece descontos aos
clientes com base em suas compras anteriores. O sistema
deve aplicar um percentual de desconto de acordo com o
valor total da compra.
Ao compreender esses princípios básicos, estaremos
prontos para explorar cenários e desafios de programação
mais complexos no futuro. Vale lembrar que esses conceitos
iniciais são a chave para desbloquear o enorme potencial da
programação. 
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Vamos Começar!
Vamos Começar!
No vasto universo da programação, as estruturas que
moldam a execução dos algoritmos são partes que integram
a eficácia do código. Sua compreensão é um pré-requisito
elementar para qualquer programador que busca criar
sistemas coesos e funcionais. Nesse contexto, destacam-se
três aspectos fundamentais: a estrutura de programação,
que define o esqueleto do código; as estruturas sequenciais,
que determinam a execução linear das instruções; e as
estruturas de decisão, que conferem ao programa a
capacidade de se adaptar a diferentes cenários por meio de
lógica condicional.
 Em um nível macro, a estrutura de programação estabelece
a ordem geral das operações, enquanto as estruturas
sequenciais e de decisão refinam essaordem,
proporcionando ao código a flexibilidade necessária para
enfrentar desafios diversos. Este mergulho no centro dessas
estruturas é essencial para capacitar programadores a criar
códigos mais claros, concisos e eficientes, podendo, assim,
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
solucionar problemas de forma sofisticada no mundo da
programação.
Estrutura de programação
A estrutura de programação refere-se ao esqueleto básico
de um programa, estabelecendo a ordem em que as
instruções são executadas. No contexto do pseudocódigo
Portugol, podemos ilustrar essa qualidade com um exemplo
simples:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Exemplo de estrutura de programação. Fonte:
elaborada pelo autor. 
Na Figura 1, é evidente a estrutura de programação. O
programa começa com a entrada de dados, quando o
usuário fornece dois números. Em seguida, ocorre o
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
processamento, em que os números são subtraídos e o
resultado é armazenado na variável "sub". Por fim, a saída de
dados exibe a subtração ao usuário. Essa sequência lógica de
operações exemplifica a estrutura de programação, na qual
cada passo é crucial para alcançar o resultado desejado.
 Essa abordagem estruturada é essencial para garantir a
clareza e a funcionalidade do código. Em projetos mais
complexos, a organização eficaz das operações por meio de
uma estrutura de programação bem definida torna-se ainda
mais crítica, permitindo que programadores e equipes
colaborem de maneira mais eficiente e mantenham o código
de forma sustentável ao longo do tempo. Assim, a estrutura
de programação não apenas estabelece a ordem de
execução, mas também promove a legibilidade e a
manutenção do código, fatores cruciais no desenvolvimento
de um software de qualidade.
Estruturas sequenciais
As estruturas sequenciais representam a execução de
instruções em ordem linear, uma após a outra. Em
linguagens de programação, isso ocorre de forma natural,
mas é importante compreender como organizá-las de
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
maneira lógica. Para tanto, vamos expandir o exemplo
anterior para incluir uma estrutura sequencial.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 2 | Estruturas sequenciais. Fonte: elaborada pelo
autor. 
Neste exemplo ampliado, após a saída de dados que exibe a
soma, adicionamos instruções sequenciais para calcular e
exibir o dobro do resultado. Essa adição ilustra como as
estruturas sequenciais permitem a execução linear de
operações, uma após a outra. No caso, o dobro da soma é
calculado imediatamente após a exibição da soma, seguindo
o fluxo sequencial do programa.
As estruturas sequenciais são, pois, capitais para a
organização lógica e compreensão do código. Elas
possibilitam que os desenvolvedores expressem a lógica de
execução de maneira clara e direta. Em programas mais
complexos, essa sequencialidade torna-se primordial para
evitar resultados inesperados e garantir que as operações
sejam realizadas na ordem desejada. A clareza
proporcionada por estruturas sequenciais também facilita a
depuração e a manutenção do código, contribuindo para um
desenvolvimento mais eficiente e eficaz.
Siga em Frente...
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Siga em Frente...
Estruturas de decisão
No universo da programação, as estruturas de decisão são
fundamentais para conferir ao código a capacidade de tomar
diferentes caminhos de execução com base em condições
específicas. Na pseudolinguagem Portugol, a estrutura
condicional básica é representada pelo comando "se-então-
senão".
As estruturas de decisão podem ser classificadas em três
tipos principais: desvio condicional simples, desvio
condicional composto e desvio condicional encadeado.
Exploremos cada uma delas com exemplos claros em
Portugol.
Desvio condicional simples
O desvio condicional simples é o tipo mais básico, no qual o
código executa uma instrução se uma condição for
verdadeira; caso contrário, ele simplesmente continua sua
execução normal. Na Figura 3, vemos como o programa
verifica se um número digitado é positivo.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 3 | Positivo?. Fonte: elaborada pelo autor. 
Neste caso, a mensagem "O número é positivo" será exibida
apenas se a condição numero > 0 for verdadeira.
Desvio condicional composto
O desvio condicional composto inclui um bloco de instruções
para cada possível resultado da condição. No exemplo a
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
seguir, além de verificar se o número é positivo, também
apura-se se é negativo ou igual a zero.
Figura 4 | Positivo ou negativo?. Fonte: elaborada pelo autor.
Logo, o código aborda todas as possibilidades, garantindo
que a mensagem correta seja exibida com base no valor do
número inserido.
Desvio condicional encadeado
O desvio condicional encadeado ocorre quando uma série de
decisões está interligada. Cada decisão é tomada com base
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
na condição anterior. Na Figura 5, observamos o programa
classificar um aluno com base em sua nota.
Figura 5 | Aprovado, recuperação ou reprovado?. Fonte:
elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Neste caso, o programa avalia primeiro se a nota é maior ou
igual a 7,0. Se sim, o aluno é aprovado. Caso contrário, se a
nota for maior ou igual a 4,0, ele está em recuperação. Se
não atender a nenhuma dessas condições, o aluno é
considerado reprovado.
Tais exemplos demonstram como as estruturas de decisão
em Portugol podem ser aplicadas de maneiras simples e
compreensíveis, proporcionando ao programador
flexibilidade para lidar com diferentes situações. A escolha
entre essas estruturas dependerá da complexidade do
problema a ser resolvido e da lógica específica que se deseja
implementar.
Conclusão
Em resumo, as estruturas de programação constituem a
espinha dorsal do desenvolvimento de software,
proporcionando a organização lógica necessária para a
criação de algoritmos eficientes. Ao definirem o esqueleto do
código, elas estabelecem as bases sobre as quais as
estruturas sequenciais e de decisão se desdobrarão. As
estruturas sequenciais, por sua vez, asseguram a execução
ordenada das instruções, conferindo clareza e linearidade ao
fluxo do programa. Da mesma forma, as estruturas de
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
decisão emergem como ferramentas cruciais para a
adaptação dinâmica do código, permitindo que ele responda
a condições específicas.
Ao aplicar esses conceitos no ambiente de programação em
Portugol, os desenvolvedores têm a oportunidade de criar
códigos mais legíveis, organizados e eficientes. A clareza
proporcionada pelas estruturas de programação é
fundamental para facilitar a compreensão do código não
apenas pelo criador, mas também por outros membros da
equipe envolvida no projeto. Além disso, a capacidade de
tomar decisões lógicas por meio das estruturas condicionais
permite que os programas lidem de maneira adaptável com
diferentes cenários, contribuindo para a robustez e
versatilidade das soluções desenvolvidas. Em última análise,
o entendimento profundo dessas estruturas é uma
habilidade essencial para programadores que aspiram a
construir soluções de software robustas e funcionalmente
sólidas.
Vamos Exercitar?
Vamos Exercitar?
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Vamos retomar a situação apresentada no início da aula
onde você precisa desenvolver um módulo para um sistema
de comércio eletrônico que oferece descontos aos clientes
com base em suas compras anteriores. O sistema deve
aplicar um desconto de 10% em relação ao valor total da
compra.
Vamos à resolução?
Identificação do cliente
Crie uma estrutura de dados para representar as
informações do cliente: nome, e-mail e total gasto em
compras anteriores.
Solicite ao usuário que insira seu nome, e-mail e o valor
total gasto em compras anteriores.
Aplicação de desconto
Implemente uma estrutura de seleção (condicional)para
verificar o valor total gasto pelo cliente.
Aplique um desconto de 10% se o valor total for superior
a R$ 500.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Exibição do resultado
Mostre ao usuário o valor original da compra, o desconto
aplicado (se houver) e o valor final a ser pago.
Exiba uma mensagem incentivando o cliente a continuar
comprando.
Usando a Linguagem C
Figura 6 | Identificação do cliente. Fonte: elaborada pelo
autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 7 | Aplicação do desconto. Fonte: elaborada pelo
autor.
Figura 8 | Resultado. Fonte: elaborada pelo autor.
Saiba mais
Saiba mais
Para saber mais sobre as estruturas de decisão e formas de
aplicação dos desvios condicionais na linguagem de
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
programação C e quais suas características, consulte o
Capítulo 7. Estruturas condicionais do livro Elementos de
programação em C, de Pinheiro, disponível no repositório da
Biblioteca virtual.
PINHEIRO, F. de A. C. Capítulo 7. Estrutura Condicionais. In:
Elementos de programação em C.  Porto Alegre: Bookman,
2012, p. 148-165. 
Referências
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de
Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de
algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simplificando algoritmos. São Paulo: LTC,
2023.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/165
https://integrada.minhabiblioteca.com.br/reader/books/9788540702035/pageid/165
PINHEIRO, F. de A. C. Elementos de programação em C. Porto
Alegre: Bookman, 2012.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para
computação. 2. ed. São Paulo: Cengage Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em
Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011.
Aula 3
Estruturas de Repetição
Estruturas de repetição
Estruturas de repetição
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Olá, estudante! Esta videoaula será dedicada às estruturas
de repetição, as quais proporcionarão uma imersão
completa nos elementos essenciais para o desenvolvimento
de algoritmos mais complexos. Durante nosso encontro,
exploraremos os conceitos fundamentais dessas estruturas,
discutindo como elas podem ser aplicadas para otimizar e
automatizar processos em programação. A habilidade de
criar loops eficientes é crucial para qualquer programador, e
esta aula visa fornecer uma compreensão sólida do assunto.
Além disso, abordaremos a importância da clareza na
estrutura do código e como essa qualidade contribui para
um desenvolvimento mais eficiente. Entender como
organizar e controlar o fluxo de um programa é primordial
para qualquer aspirante a desenvolvedor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Clique aqui e acesse os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Ponto de Partida
Olá, caro estudante! Seja bem-vindo à esta aula dedicada às
estruturas de repetição em Portugol. Nesta jornada,
apresentaremos essas estruturas essenciais para a criação
de algoritmos dinâmicos e eficientes. Elas são como os fios
que tecem a complexidade dos programas, proporcionando
a flexibilidade necessária para enfrentar desafios variados.
Assim como alicerces firmes sustentam uma construção,
entender o "Enquanto-Faça", "Para-Até-Faça" e "Repita-Até"
permitirá, assim, que você construa códigos mais robustos e
adaptáveis.
Para ilustrar a aprendizagem dos conteúdos desta aula,
imagine que você trabalha em uma loja de pneus que deseja
otimizar o controle de estoque e conta com a sua ajuda para
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/d0416340-1687-5e81-a5d4-1431d211e9a2.pdf
criar um programa que facilite a contagem de produtos.
Cada pneu vendido é registrado, e o estoque precisa ser
atualizado constantemente. Portando, você precisará
desenvolver um algoritmo que permita ao vendedor
informar quantos pneus foram vendidos e, com base nessa
informação, realizar a contagem atualizada do estoque.
Este é apenas o começo; o conhecimento adquirido aqui
será a chave para desbloquear as possibilidades infinitas que
a programação oferece. Abrace cada conceito, participe
ativamente e não hesite em explorar e questionar. Estamos
aqui para apoiar sua aprendizagem e guiá-lo na
compreensão plena dessas estruturas. Boa aula!
Vamos Começar!
Vamos Começar!
A lógica de programação é uma parte fundamental do
desenvolvimento de software, e entre suas muitas nuances,
destacam-se as estruturas de repetição como ferramentas
essenciais para construir algoritmos eficientes e dinâmicos.
Nesta aula, vamos explorar a profundidade dessas
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
estruturas em Portugol, uma linguagem pseudocódigo que
serve como ponte intuitiva para entender os conceitos
básicos da área. À medida que nos aprofundarmos no
universo do "Enquanto-Faça", "Para-Até-Faça" e "Repita-Até",
desvendaremos os segredos por trás dessas construções
que capacitam os programadores a automatizar tarefas, criar
lógicas complexas e dar vida a algoritmos mais eficientes.
Resumidamente, a estrutura "Enquanto-Faça" oferece uma
abordagem dinâmica, permitindo que um bloco de código
seja repetido enquanto uma condição específica permanecer
verdadeira. Essa capacidade de adaptação é crucial, pois
permite a execução de tarefas variáveis, condicionando o
fluxo do programa à avaliação contínua de uma expressão
booleana. No entanto, há também a necessidade de
estruturas que possam lidar com um número fixo de
repetições, e é aqui que o "Para-Até-Faça" assume o palco,
simplificando o controle de iterações. Por fim, para cenários
em que é necessário garantir que um bloco de código seja
executado pelo menos uma vez, independentemente da
condição inicial, a estrutura "Repita-Até" se destaca como um
instrumento valioso, proporcionando robustez e
adaptabilidade aos algoritmos. Ao desbravar esses conceitos,
os programadores estarão equipados não apenas com
conhecimentos práticos, como também com uma
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
compreensão mais profunda da arte de criar algoritmos
eficientes.
Enquanto-Faça
A estrutura de repetição "Enquanto-Faça" destaca-se como
uma ferramenta dinâmica e versátil no contexto da
programação. Sua lógica é centrada na execução de um
bloco de código enquanto uma condição específica
permanece verdadeira. No exemplo prático do contador,
inicializamos uma variável em 1. Enquanto essa variável for
menor ou igual a 5, o bloco de código dentro do "Enquanto-
Faça" será repetido. Cada iteração incrementa o contador,
proporcionando uma contagem sequencial de 1 a 5. Essa
flexibilidade torna o "Enquanto-Faça" ideal para situações
em que a quantidade de repetições não é conhecida
antecipadamente.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Contador. Fonte: elaborada pelo autor. 
Uma das características marcantes do "Enquanto-Faça" é a
sua capacidade de adaptar dinamicamente o fluxo de
execução do programa. A condição que determina a
repetição é avaliada antes de cada iteração, permitindo que
o bloco de código seja executado apenas enquanto a
condição for verdadeira. Isso proporciona um controle
preciso e flexível sobre o número de repetições, adequando-
se a cenários em que a lógica do programa precisa ajustar-se
às condições variáveis, tornando-o uma escolha ideal para
contextos dinâmicos.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/7d9c66ae-eda2-5ebb-a430-f2b96941ce57.png
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/7d9c66ae-eda2-5ebb-a430-f2b96941ce57.png
Além de seu papel em loops, o "Enquanto-Faça" contribui
significativamente para a construção lógica sequencial de um
programa. Sua adaptabilidade ao lidar comconjunturas em
que as condições de repetição podem depender de variáveis
externas ou interações do usuário é valiosa. Ao dominar o
uso dessa estrutura, os programadores adquirem uma
ferramenta capital para criar algoritmos dinâmicos e
ajustáveis, abrindo portas para a resolução eficiente de uma
variedade de problemas.
Para-Até-Faça
A estrutura de repetição "Para-Até-Faça" é um instrumento
poderoso que proporciona um controle preciso sobre o
número de iterações em um bloco de código. Ao contrário
do "Enquanto-Faça", no qual a execução depende de uma
condição booleana, o "Para-Até-Faça" é especialmente útil
quando sabemos previamente quantas repetições são
precisas. Essa estrutura é conduzida por uma variável de
controle, muitas vezes chamada de índice, que é inicializada
com um valor específico e incrementada automaticamente a
cada iteração.
Imagine, a título de ilustração, que estamos desenvolvendo
um programa para calcular a soma dos primeiros cinco
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
números inteiros. Utilizando o "Para-Até-Faça", podemos
criar um código conciso e eficiente:
Figura 2 | Somando 5 números. Fonte: elaborada pelo autor.
Neste exemplo, a variável soma é inicializada em zero, e o
"Para-Até-Faça" é utilizado para iterar de 1 até 5. A cada
iteração, o valor de i é somado à variável soma. Ao final do
loop, obtemos a soma total dos primeiros cinco números
inteiros. Essa abordagem é eficaz quando conhecemos
antecipadamente o número de iterações necessárias,
proporcionando um controle preciso sobre o fluxo do
programa.
Essa estrutura é particularmente eficiente em operações que
envolvem listas, arrays ou qualquer contexto em que a
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/1c67710d-3665-56eb-8085-64747ce8b174.png
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/1c67710d-3665-56eb-8085-64747ce8b174.png
quantidade de elementos seja conhecida. O "Para-Até-Faça"
simplifica a implementação de iterações controladas,
tornando o código mais legível e fácil de compreender.
Aprofundar-se nesse conceito, assim, proporcionará um
entendimento sólido e versátil das estruturas de repetição
em Portugol.
Siga em Frente...
Siga em Frente...
Repita-Até
A estrutura de repetição "Repita-Até" é muito útil quando
desejamos que um bloco de código seja executado pelo
menos uma vez, independentemente da condição inicial. Ao
contrário do "Enquanto-Faça", que verifica a condição antes
da execução, o "Repita-Até" executa o bloco primeiro e, em
seguida, verifica a condição para determinar se deve repetir
o processo.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Considere um exemplo prático: suponha que estamos
desenvolvendo um programa para solicitar ao usuário um
número entre 1 e 10. Utilizando o "Repita-Até", podemos
garantir que o código seja executado pelo menos uma vez,
independentemente da entrada do usuário.
Figura 3 | Verificando número válido. Fonte: elaborada pelo
autor. 
Na Figura 3, o bloco de código dentro de "Repita-Até" solicita
ao usuário que digite um número repetidamente até que a
condição número >= 1 e númeroReferências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de
Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de
algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simplificando algoritmos. São Paulo: LTC,
2023.
PINHEIRO, F. A. C. Elementos de programação em C. Porto
Alegre: Bookman, 2012.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para
computação. 2. ed. São Paulo: Cengage Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em
Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011.
Aula 4
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Variáveis Indexadas
Variáveis indexadas
Variáveis indexadas
Olá, estudante! Esta videoaula tem como objetivo apresentar
os conceitos básicos de algoritmos que abrangem os
primeiros passos no desenvolvimento da tomada de decisão
em códigos. Abordaremos, também, como deve ser a
estrutura de um código e como ele funciona.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Não perca a oportunidade de agregar informações valiosas
ao seu aprendizado e de ampliar seu conhecimento e
compreensão da área de algoritmos. 
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Partida
Ponto de Partida
Olá, caro estudante! Seja bem-vindo à esta aula dedicada à
utilização de vetores, às variáveis indexadas unidimensionais
e variáveis compostas na construção eficiente de algoritmos.
Começaremos entendendo as estruturas sequenciais, que
são como blocos de construção iniciais para projetos. Nelas,
as instruções são executadas em ordem linear, passo a
passo, o que é vital para organizar o fluxo do programa,
desde tarefas simples, como exibir mensagens, até
manipulações mais complexas usando vetores e variáveis
indexadas unidimensionais.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/0bc5d6d3-c1b0-5522-a729-f1cf9d4d3c1d.pdf
Na sequência, mergulharemos no domínio das variáveis
compostas, ferramentas poderosas que permitem agrupar
dados relacionados em uma única estrutura. Nesse contexto,
exploraremos como vetores e variáveis indexadas
unidimensionais são primordiais para construir algoritmos
eficientes e resolver problemas computacionais de forma
organizada.
Portanto, para ilustrar a aprendizagem do conteúdo desta
aula, vamos exercitar com um algoritmo em Portugol que
faça operações utilizando a estrutura de vetores. Será
apresentando um algoritmo que vai solicitar informações ao
usuário que serão armazenadas em 2 vetores. Um terceiro
vetor será necessário para fazer a soma dos elementos dos
dois vetores e apresentar o seu resultado no final do
programa.
A jornada está apenas começando, e esses conceitos iniciais
são a chave para enfrentar cenários e desafios de
programação mais complexos no futuro.
Vamos Começar!
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Vamos Começar!
A programação é uma linguagem que utiliza diversos
conceitos para representar e manipular dados. Entre esses
conceitos, destacam-se a utilização de vetores, variáveis
indexadas unidimensionais e variáveis compostas, essenciais
para organizar e acessar informações de maneira eficiente.
Nesta aula, portanto, exploraremos cada um desses
conteúdos, exemplificando seu uso por meio da linguagem
de programação Portugol.
Utilização de vetores
Os vetores são estruturas fundamentais na programação,
permitindo armazenar e organizar dados de forma
sequencial em memória, o que facilita seu acesso e
manipulação eficaz. Em linguagens como Portugol, a
declaração e manipulação desses vetores são tarefas
comuns, proporcionando uma abordagem estruturada para
lidar com conjuntos de dados relacionados.
A declaração de um vetor em Portugol envolve a
especificação dos elementos e a definição da faixa de
índices. Assim, ao criar um vetor de notas, podemos utilizar a
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
declaração vetor [1.5] de real, indicando que ele terá
elementos do tipo real e índices variando de 1 a 5. O acesso
aos elementos se dará por meio dos índices que
representam uma posição única no vetor. Para atribuir ou
recuperar valores, basta referenciar o vetor e o índice
desejado.
Considere, na Figura 1, o exemplo em Portugol no qual
criamos um vetor “notas” para armazenar as notas dos
alunos, permitindo acessar, por meio do índice, a segunda
nota:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 1 | Exemplo de vetor. Fonte: elaborada pelo autor. 
Vetores são versáteis, podendo armazenar diferentes tipos
de dados, desde números até caracteres. Além disso, são
eficientes para lidar com conjuntos de dados homogêneos,
como uma lista de temperaturas mensais ou um histórico de
vendas diárias. Sua utilização simplifica a manipulação
desses dados, proporcionando uma estrutura organizada e
acessível e contribuindo para o desenvolvimento de
algoritmos mais claros e efetivos.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/bf0055c7-d6b4-5051-be3b-7688361a15d7.png
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/bf0055c7-d6b4-5051-be3b-7688361a15d7.png
Variáveis indexadas
unidimensionais
As variáveis indexadas unidimensionais são extensões do
conceito de vetores, proporcionando uma forma mais
flexível de representar e acessar dados em programação.
Elas permitem organizar informações de maneira
estruturada, associando valores a índices específicos. No
contexto do Portugol, a utilização de variáveis indexadas
unidimensionais oferece uma abordagem eficaz para lidar
com conjuntos de dados que não seguem necessariamente
uma sequência contígua de índices.
Mas, ao contrário dos vetores, elas não requerem uma faixa
de índices fixa durante a declaração. Podemos definir índices
de forma mais dinâmica, tornando-as ideais para situações
em que os dados não seguem uma ordem sequencial
predefinida. No Portugol, a declaração de uma variável
indexada unidimensional é feita como var nome: vetor de
tipo, permitindo a atribuição de índices em tempo de
execução. O acesso aos elementos ocorre da mesma forma,
utilizando índices para referenciar valores específicos.
A seguir, apresentamos um exemplo em Portugol no qual
criamos uma variável indexada “meses” para representar os
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
meses do ano e acessarmos o terceiro mês:
Figura 2 | Variável indexada. Fonte: elaborada pelo autor.   
Variáveis indexadas unidimensionais são especialmente
úteis em situações dinâmicas, como a representação de
dados esparsos ou informações que podem ser atualizadas
ao longo do tempo. Podem ser empregadas em cenários que
envolvam, por exemplo, a categorização de eventos no
decorrer de um ano, sem a necessidade de reservar espaço
para todos os meses. Essa flexibilidade as torna uma
ferramenta poderosa na programação, contribuindo para
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
uma gestão eficiente de dados em contextos menos
estruturados.
Siga em Frente...
Siga em Frente...
Variáveis compostas
Variáveis compostas evoluem além das estruturas simples
de dados, permitindo uma representação mais rica e
abrangente na programação. Como discutimos
anteriormente, o uso de registros em Portugol para criar
variáveis compostas é essencial para explorar duas variantes
avançadas, as multidimensionais e as heterogêneas, as quais
oferecem recursos adicionais para lidar com conjuntos de
dados mais complexos e diversificados.
Variáveis compostas multidimensionais
No contexto das variáveis compostas multidimensionais, a
declaração envolve a criação de estruturas que possuem
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
mais de uma dimensão. Matrizes ou arrays bidimensionais
são exemplos comuns nessa categoria. Ao declarar uma
matriz em Portugol, especificamos o número de linhas e
colunas. O acesso aos elementos ocorre por meio da
referência a índices em ambas as dimensões.Assim, uma
matriz pode representar uma tabela em que as linhas são os
meses do ano e as colunas são os dias, facilitando a
organização e manipulação de dados mais elaborados.
Figura 3 | Variável composta multidimensional. Fonte:
elaborada pelo autor.  
Variáveis compostas heterogêneas
As variáveis compostas heterogêneas introduzem a ideia de
estruturas que contêm campos de diferentes tipos de dados.
Enquanto os registros em Portugol são homogêneos, as
estruturas heterogêneas permitem uma abordagem mais
flexível. Pode-se ter um campo que armazena um número
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
inteiro, enquanto outro armazena um caractere, por
exemplo. Essa versatilidade é muito vantajosa ao modelar
entidades que possuem atributos diversos e não uniformes.
Figura 4 | Variável composta heterogenia. Fonte: elaborada
pelo autor.  
Em resumo, a incorporação de variáveis compostas
multidimensionais e compostas heterogêneas enriquece
significativamente a capacidade de representar dados na
programação. Ao entender e aplicar esses conceitos em
Portugol, os programadores podem desenvolver soluções
adaptáveis, adequadas para lidar com desafios mais
complexos. A linguagem Portugol, integrando essas formas,
proporciona, então, uma base sólida para o desenvolvimento
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
de habilidades programáticas mais avançadas em linguagens
subsequentes, preparando programadores para enfrentar
problemas cada vez mais sofisticados na construção de
softwares.
Conclusão
A integração de vetores, variáveis indexadas unidimensionais
e variáveis compostas emerge como prática essencial na
programação, promovendo uma estrutura organizada e
eficiente para a manipulação de dados. A compreensão
profunda desses temas e sua aplicação criteriosa em
contextos específicos capacitam os programadores a
conceberem sistemas mais transparentes, modulares e de
fácil manutenção. A linguagem Portugol, ao dar suporte para
esses elementos, destaca-se como uma ferramenta
inestimável para aqueles que buscam aprender a programar
de maneira estruturada e eficaz.
Vamos Exercitar?
Vamos Exercitar?
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Retomando a situação apresentada no início da aula, de
exercitar com um algoritmo em Portugol que faça operações
utilizando a estrutura de vetores, criando um algoritmo que
vai solicitar informações ao usuário que serão armazenadas
em 2 vetores. Um terceiro vetor será necessário para fazer a
soma dos elementos dos dois vetores e apresentar o seu
resultado no final do programa.
Vamos à resolução?
Inicialização dos vetores
Crie dois vetores inteiros: vetorA e vetorB, com um
tamanho pré-definido.
Leitura dos elementos
Implemente um loop para solicitar ao usuário que
informe os elementos de cada vetor.
Para cada posição i do vetorA e vetorB, leia um valor
inteiro e armazene no vetor correspondente.
Somatória dos vetores
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Crie um terceiro vetor, vetorSoma, com o mesmo
tamanho dos vetores vetorA e vetorB, para armazenar a
soma dos elementos de cada posição.
Para cada posição i, realize a soma dos elementos das
posições correspondentes dos vetores vetorA e vetorB e
armazene o resultado no vetorSoma.
Apresentação dos vetores
Após a leitura e somatória, exiba ao usuário os
elementos dos vetores vetorA, vetorB e vetorSoma,
mostrando os valores de cada posição.
Fim do programa
Encerre a execução do programa.
Segue o demonstrativo da codificação em Portugol:
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 5 | Soma de vetores. Fonte: elaborada pelo autor. 
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura 6 | Soma de vetores – cont. Fonte: elaborada pelo
autor. 
Nesta atividade, você aprendeu como utilizar vetores em
Portugol para armazenar e manipular conjuntos de dados.
Você criou um algoritmo que permite ao usuário inserir
elementos em dois vetores, somá-los e depois apresentar os
vetores originais e o vetor resultante da soma. Esta prática é
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
essencial para entender o conceito de vetores e como aplicá-
los na resolução de problemas computacionais.
Saiba mais
Saiba mais
Para saber mais sobre estruturas de dados homogêneas e
heterogêneas, vetores e matrizes, consulte o Capítulo 6 –
Estruturas de Dados Homogêneas de Uma Dimensão, do
livro Algoritmos – Lógica para Desenvolvimento de
Programação de Computadores, de Manzano e Oliveira,
disponível no repositório da Biblioteca virtual.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Capítulo 6 -
Estruturas de Dados Homogêneas de Uma Dimensão. In:
Algoritmos – Lógica para Desenvolvimento de Programação
de Computadores. São Paulo: Saraiva, 2019, p. 145-158.
Referências
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
https://integrada.minhabiblioteca.com.br/reader/books/9788536531472/pageid/146
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de
Janeiro: LTC, 2022.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Algoritmos - Lógica
para Desenvolvimento de Programação de Computadores.
São Paulo: Editora Saraiva, 2019.
MANZANO, J. A. N. G.; OLIVEIRA, J. F. de. Estudo dirigido de
algoritmos. São Paulo: Érica, 2000.
MENÉNDEZ, A. Simplificando algoritmos. São Paulo: LTC,
2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para
computação. 2. ed. São Paulo: Cengage Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em
Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011.
Aula 5
Encerramento da Unidade
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Videoaula de Encerramento
Videoaula de Encerramento
Olá, estudante! Seja bem-vindo à videoaula de encerramento
desta Unidade, na qual destacaremos as estruturas de
seleção, também conhecidas como condicionais. Essa
estrutura é uma das mais presentes nos algoritmos
desenvolvidos em todas as aplicações do mercado de
software, portanto muito relevante para quem já atua ou
está planejando entrar para a área da computação.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Preparado para finalizar essa jornada?
Clique aqui para acessar os slides da sua videoaula.
Bons estudos!
Ponto de Chegada
Ponto de Chegada
Olá, estudante! Para desenvolver a competência desta
Unidade, a saber, desenvolver algoritmos com a utilização
das estruturas de decisão e repetição por meio de
pseudocódigos na programação, tivemos, primeiramente,
que conhecer os conceitos fundamentais de algoritmos,
entender a sua importância e, ainda, compreender por que
eles são tão utilizados no desenvolvimento de sistemas.
Embarcar no universo da programação é abrir as portas para
a resposta a desafios complexos e a criação de soluções
inovadoras. É preciso se inteirar a respeito das estruturas
existentes para construir soluções inteligentes e essenciais
na atualidade. Isso não apenas torna o código mais eficiente,
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/c76e401a-0167-5a43-ac7b-a22140a842f5.pdf
como também proporciona uma abordagem flexível para a
resolução de problemas.
As empresas buscam profissionais capazes de criar códigos
robustos, que respondam dinamicamente a variáveis e
situações diversas. A capacidade de implementar
condicionais de forma inteligente, assim, otimiza processos e
demonstra uma compreensão sólida da lógica de
programação.
Especialistas que dominam as estruturas de seleção são
capazes de criar algoritmos mais desenvolvidos, adaptáveis e
eficazes. Essa habilidade facilita a resolução de problemas
complexos e destacaos programadores como ativos valiosos
em um mercado cada vez mais competitivo e dinâmico. Ela
enriquece o repertório técnico, além de ser um diferencial
estratégico. Portanto, ao compreender as estruturas
condicionais, os programadores se capacitam para criar
soluções arrojadas, contribuindo para o progresso contínuo
no mundo da programação. 
É Hora de Praticar!
É
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
É Hora de Praticar!
Chegou o momento, caro estudante, de colocar em prática o
conhecimento adquirido nesta unidade de ensino. Para
tanto, vamos abordar um estudo de caso sobre Processo de
conserto de motocicleta com o cenário descrito a seguir.
Suponha que você trabalhe em uma oficina de motocicletas
e receba um cliente com um veículo apresentando
problemas de funcionamento. O cliente relata que a moto
está falhando e deseja uma análise mecânica para identificar
o problema.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
O desafio é criar um algoritmo que ajude o mecânico a
diagnosticar o mau funcionamento com eficiência em todo o
processo. O passo a passo seria o seguinte:
1. Coleta de informações: o algoritmo deve solicitar o input
das informações do cliente colhidas pelo mecânico ou
atendente.
2. Inspeção da motocicleta: o veículo segue para
diagnóstico dos possíveis problemas.
3. Proposta de solução: já com o diagnóstico provisório, o
cliente recebe uma proposta de solução do(s)
problema(s) apresentado(s).
Agora é a sua vez! Utilize seus conhecimentos em algoritmos
para criar soluções para o estudo de caso apresentado. Siga
os passos sugeridos no gabarito e demonstre suas
habilidades para a resolução desse desafio.
Reflita
No contexto do aprendizado de programação, é essencial
compreender não apenas as técnicas específicas, como
também a importância de estruturas, como as estruturas
condicionais dentro da lógica de programação e o uso de
pseudocódigos.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
A seguir, apresentamos duas questões de reflexão para
aprofundar nossa compreensão sobre esses temas:
1. Estruturas de seleção
Após ter explorado as estruturas de seleção, pense quais
habilidades específicas são necessárias para criar
condicionais claros e eficazes?
Como o domínio dessas estruturas pode impactar
diretamente na qualidade e adaptabilidade do código?
Ao colocar essas questões, procure compreender a
importância de aprimorar suas competências no campo
e como isso pode influenciar positivamente a resolução
de problemas complexos no mundo da programação.
2. Estruturas de repetição
Ao refletir sobre as estruturas de repetição, analise como
a habilidade de criar loops eficientes pode otimizar a
execução de algoritmos.
Considere as situações em que a repetição controlada é
necessária e como diferentes estruturas, como o
enquanto-faça e o repita até, podem ser aplicadas de
maneira inteligente.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Quais são os benefícios de criar algoritmos que podem
lidar dinamicamente com tarefas repetitivas?
Como o domínio das estruturas de repetição pode
influenciar a eficiência e a escalabilidade do código?
Ao fazer essas reflexões, busque compreender a importância
de desenvolver conhecimentos sólidos na área para
enfrentar desafios variados e criar soluções mais robustas
em programação.
Dê o Play!
Clique aqui para acessar os slides do Dê o play!
Resolução do Estudo de Caso
Processo de conserto de
motocicleta
Passo 1: Coleta de informações 
O mecânico inicia o processo coletando informações do
cliente sobre os sintomas da motocicleta, o que inclui
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
https://content.cogna.com.br/content/dam/cogna/cms2/80473229-4cc2-45cc-9848-7ddaa0047132/45cc/66567b16-7412-5fed-a6fe-1f96314c2f9e.pdf
questioná-lo sobre quando os problemas começaram, se
há algum padrão nas falhas, entre outras perguntas
relevantes.
Passo 2: Inspeção física 
O próximo passo envolve uma inspeção física da
motocicleta. O mecânico verifica o sistema de ignição, o
filtro de ar, as velas de ignição e outros componentes
essenciais. Ele realiza testes visuais e, se necessário,
testes práticos para observar o comportamento da moto.
Passo 3: Análise de dados
 Com as informações coletadas, o mecânico analisa os
dados para identificar a causa raiz do problema. Ele
verifica os resultados dos testes, os códigos de falha e as
observações para formar um diagnóstico preciso.
Passo 4: Proposta de solução 
Com o diagnóstico em mãos, o mecânico propõe uma
solução ao cliente. Isso pode incluir a substituição de
peças, ajustes específicos ou reparos necessários. O
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
cliente é informado sobre o custo estimado e a extensão
do trabalho a ser feito.
Conclusão
Esse estudo de caso destaca a importância de uma
abordagem sistemática para resolver problemas em um
contexto de reparo mecânico de motocicletas. A coleta
cuidadosa de informações, a inspeção física, o uso de
ferramentas de diagnóstico e a análise de dados são,
portanto, passos para uma resolução eficiente. Esse
processo exemplifica, assim, como a lógica de programação
pode ser aplicada de forma prática na resolução de desafios
do mundo real.
Assimile
Neste infográfico, apresentamos, resumidamente, os
principais conceitos relacionados aos elementos de
algoritmos.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Figura | Elementos algoritmos. Fonte: elaborada pelo autor.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO
Referências
CORMEN, T. et al. Algoritmos: teoria e prática. 3. ed. Rio de
Janeiro: LTC, 2022.
MENÉNDEZ, A. Simplificando algoritmos. São Paulo: LTC,
2023.
SILVA, F. S. C. da; FINGER, M.; MELO, A. C. V. Lógica para
computação. 2. ed. São Paulo: Cengage Learning, 2017.
ZIVIANI, N. Projeto de algoritmos com implementações em
Pascal e C. 3. ed. São Paulo: Cengage Learning, 2011.
Disciplina
ALGORITMOS E LÓGICA DE
PROGRAMAÇÃO

Mais conteúdos dessa disciplina